diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..de6d5c49a72 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ + +root = true + +[{src,scripts}/**.{ts,json,js}] +end_of_line = crlf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..74f5f4a6409 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.js linguist-language=TypeScript \ No newline at end of file diff --git a/.gitignore b/.gitignore index c54c8018ea8..658c4d0d8ea 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ tests/services/baselines/local/* tests/baselines/prototyping/local/* tests/baselines/rwc/* tests/baselines/test262/* +tests/baselines/local/projectOutput/* tests/services/baselines/prototyping/local/* tests/services/browser/typescriptServices.js scripts/processDiagnosticMessages.d.ts diff --git a/.travis.yml b/.travis.yml index 305fad1e4a7..572ac835cd4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,13 +3,4 @@ language: node_js node_js: - '0.10' -sudo: false - -before_script: npm install -g codeclimate-test-reporter - -after_script: - - cat coverage/lcov.info | codeclimate - -addons: - code_climate: - repo_token: 9852ac5362c8cc38c07ca5adc0f94c20c6c79bd78e17933dc284598a65338656 +sudo: false \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a30b2154133..92eb646f480 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ Design changes will not be accepted at this time. If you have a design change pr ## Legal You will need to complete a Contributor License Agreement (CLA). Briefly, this agreement testifies that you are granting us permission to use the submitted change according to the terms of the project's license, and that the work being submitted is under appropriate copyright. -Please submit a Contributor License Agreement (CLA) before submitting a pull request. Download the agreement ([Microsoft Contribution License Agreement.docx](https://www.codeplex.com/Download?ProjectName=typescript&DownloadId=822190) or [Microsoft Contribution License Agreement.pdf](https://www.codeplex.com/Download?ProjectName=typescript&DownloadId=921298)), sign, scan, and email it back to . Be sure to include your github user name along with the agreement. Once we have received the signed CLA, we'll review the request. Please note that we're currently only accepting pull requests of bug fixes rather than new features. +Please submit a Contributor License Agreement (CLA) before submitting a pull request. You may visit https://cla.microsoft.com to sign digitally. Alternatively, download the agreement ([Microsoft Contribution License Agreement.docx](https://www.codeplex.com/Download?ProjectName=typescript&DownloadId=822190) or [Microsoft Contribution License Agreement.pdf](https://www.codeplex.com/Download?ProjectName=typescript&DownloadId=921298)), sign, scan, and email it back to . Be sure to include your github user name along with the agreement. Once we have received the signed CLA, we'll review the request. Please note that we're currently only accepting pull requests of bug fixes rather than new features. ## Housekeeping Your pull request should: diff --git a/Jakefile b/Jakefile index ca1ee20a3ce..2efd973a021 100644 --- a/Jakefile +++ b/Jakefile @@ -39,6 +39,7 @@ var compilerSources = [ "utilities.ts", "binder.ts", "checker.ts", + "declarationEmitter.ts", "emitter.ts", "program.ts", "commandLineParser.ts", @@ -57,6 +58,7 @@ var servicesSources = [ "utilities.ts", "binder.ts", "checker.ts", + "declarationEmitter.ts", "emitter.ts", "program.ts", "commandLineParser.ts", @@ -65,7 +67,7 @@ var servicesSources = [ return path.join(compilerDirectory, f); }).concat([ "breakpoints.ts", - "navigateTo.ts", + "navigateTo.ts", "navigationBar.ts", "outliningElementsCollector.ts", "patternMatcher.ts", @@ -109,6 +111,7 @@ var definitionsRoots = [ "compiler/parser.d.ts", "compiler/checker.d.ts", "compiler/program.d.ts", + "compiler/commandLineParser.d.ts", "services/services.d.ts", ]; @@ -141,7 +144,8 @@ var harnessSources = [ "services/colorization.ts", "services/documentRegistry.ts", "services/preProcessFile.ts", - "services/patternMatcher.ts" + "services/patternMatcher.ts", + "versionCache.ts" ].map(function (f) { return path.join(unittestsDirectory, f); })).concat([ @@ -220,15 +224,17 @@ function compileFile(outFile, sources, prereqs, prefixes, useBuiltCompiler, noOu var dir = useBuiltCompiler ? builtLocalDirectory : LKGDirectory; var options = "--module commonjs -noImplicitAny"; - if (!keepComments) { - options += " -removeComments"; + // Keep comments when specifically requested + // or when in debug mode. + if (!(keepComments || useDebugMode)) { + options += " --removeComments"; } if (generateDeclarations) { options += " --declaration"; } - if (useDebugMode || preserveConstEnums) { + if (preserveConstEnums || useDebugMode) { options += " --preserveConstEnums"; } @@ -463,7 +469,7 @@ task("generate-spec", [specMd]) // Makes a new LKG. This target does not build anything, but errors if not all the outputs are present in the built/local directory desc("Makes a new LKG out of the built js files"); task("LKG", ["clean", "release", "local"].concat(libraryTargets), function() { - var expectedFiles = [tscFile, servicesFile, nodePackageFile, nodeDefinitionsFile, standaloneDefinitionsFile, internalNodeDefinitionsFile, internalStandaloneDefinitionsFile].concat(libraryTargets); + var expectedFiles = [tscFile, servicesFile, serverFile, nodePackageFile, nodeDefinitionsFile, standaloneDefinitionsFile, internalNodeDefinitionsFile, internalStandaloneDefinitionsFile].concat(libraryTargets); var missingFiles = expectedFiles.filter(function (f) { return !fs.existsSync(f); }); @@ -537,7 +543,7 @@ function cleanTestDirs() { } jake.mkdirP(localRwcBaseline); - jake.mkdirP(localTest262Baseline); + jake.mkdirP(localTest262Baseline); jake.mkdirP(localBaseline); } @@ -574,7 +580,7 @@ task("runtests", ["tests", builtLocalDirectory], function() { } colors = process.env.colors || process.env.color - colors = colors ? ' --no-colors ' : '' + colors = colors ? ' --no-colors ' : ' --colors '; tests = tests ? ' -g ' + tests : ''; reporter = process.env.reporter || process.env.r || 'dot'; // timeout normally isn't necessary but Travis-CI has been timing out on compiler baselines occasionally @@ -716,7 +722,7 @@ file(loggedIOJsPath, [builtLocalDirectory, loggedIOpath], function() { var instrumenterPath = harnessDirectory + 'instrumenter.ts'; var instrumenterJsPath = builtLocalDirectory + 'instrumenter.js'; -compileFile(instrumenterJsPath, [instrumenterPath], [tscFile, instrumenterPath], [], /*useBuiltCompiler*/ true); +compileFile(instrumenterJsPath, [instrumenterPath], [tscFile, instrumenterPath].concat(libraryTargets), [], /*useBuiltCompiler*/ true); desc("Builds an instrumented tsc.js"); task('tsc-instrumented', [loggedIOJsPath, instrumenterJsPath, tscFile], function() { diff --git a/README.md b/README.md index f7e55d2dffe..ac00ef085bc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ [![Build Status](https://travis-ci.org/Microsoft/TypeScript.svg?branch=master)](https://travis-ci.org/Microsoft/TypeScript) [![Issue Stats](http://issuestats.com/github/Microsoft/TypeScript/badge/pr)](http://issuestats.com/github/microsoft/typescript) [![Issue Stats](http://issuestats.com/github/Microsoft/TypeScript/badge/issue)](http://issuestats.com/github/microsoft/typescript) +[![npm version](https://badge.fury.io/js/typescript.svg)](http://badge.fury.io/js/typescript) +[![Downloads](http://img.shields.io/npm/dm/TypeScript.svg)](https://npmjs.org/package/typescript) # TypeScript diff --git a/bin/lib.core.d.ts b/bin/lib.core.d.ts index a8b5fdbcf7c..bc4225b0d82 100644 --- a/bin/lib.core.d.ts +++ b/bin/lib.core.d.ts @@ -179,19 +179,19 @@ interface ObjectConstructor { * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - seal(o: any): any; + seal(o: T): T; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: any): any; + freeze(o: T): T; /** * Prevents the addition of new properties to an object. * @param o Object to make non-extensible. */ - preventExtensions(o: any): any; + preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. @@ -425,6 +425,9 @@ interface String { */ substr(from: number, length?: number): string; + /** Returns the primitive value of the specified object. */ + valueOf(): string; + [index: number]: string; } @@ -477,6 +480,9 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): number; } interface NumberConstructor { @@ -1164,3 +1170,17 @@ interface ArrayConstructor { } declare var Array: ArrayConstructor; + +interface TypedPropertyDescriptor { + enumerable?: boolean; + configurable?: boolean; + writable?: boolean; + value?: T; + get?: () => T; + set?: (value: T) => void; +} + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void; diff --git a/bin/lib.core.es6.d.ts b/bin/lib.core.es6.d.ts index 13326cb1380..97c1c7d1b40 100644 --- a/bin/lib.core.es6.d.ts +++ b/bin/lib.core.es6.d.ts @@ -179,19 +179,19 @@ interface ObjectConstructor { * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - seal(o: any): any; + seal(o: T): T; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: any): any; + freeze(o: T): T; /** * Prevents the addition of new properties to an object. * @param o Object to make non-extensible. */ - preventExtensions(o: any): any; + preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. @@ -425,6 +425,9 @@ interface String { */ substr(from: number, length?: number): string; + /** Returns the primitive value of the specified object. */ + valueOf(): string; + [index: number]: string; } @@ -477,6 +480,9 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): number; } interface NumberConstructor { @@ -1164,6 +1170,20 @@ interface ArrayConstructor { } declare var Array: ArrayConstructor; + +interface TypedPropertyDescriptor { + enumerable?: boolean; + configurable?: boolean; + writable?: boolean; + value?: T; + get?: () => T; + set?: (value: T) => void; +} + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void; declare type PropertyKey = string | number | symbol; interface Symbol { @@ -1396,22 +1416,22 @@ interface ArrayLike { interface Array { /** Iterator */ - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, T]>; + entries(): IterableIterator<[number, T]>; /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -1495,7 +1515,7 @@ interface ArrayConstructor { interface String { /** Iterator */ - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; /** * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point @@ -1613,14 +1633,19 @@ interface IteratorResult { } interface Iterator { - [Symbol.iterator](): Iterator; next(): IteratorResult; + return?(value?: any): IteratorResult; + throw?(e?: any): IteratorResult; } interface Iterable { [Symbol.iterator](): Iterator; } +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; +} + interface GeneratorFunction extends Function { } @@ -1636,10 +1661,11 @@ interface GeneratorFunctionConstructor { } declare var GeneratorFunction: GeneratorFunctionConstructor; -interface Generator extends Iterator { +interface Generator extends IterableIterator { next(value?: any): IteratorResult; - throw (exception: any): IteratorResult; - return (value: T): IteratorResult; + throw(exception: any): IteratorResult; + return(value: T): IteratorResult; + [Symbol.iterator](): Generator; [Symbol.toStringTag]: string; } @@ -1807,15 +1833,15 @@ interface RegExp { interface Map { clear(): void; delete(key: K): boolean; - entries(): Iterator<[K, V]>; + entries(): IterableIterator<[K, V]>; forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; get(key: K): V; has(key: K): boolean; - keys(): Iterator; + keys(): IterableIterator; set(key: K, value?: V): Map; size: number; - values(): Iterator; - [Symbol.iterator]():Iterator<[K,V]>; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator<[K,V]>; [Symbol.toStringTag]: string; } @@ -1846,13 +1872,13 @@ interface Set { add(value: T): Set; clear(): void; delete(value: T): boolean; - entries(): Iterator<[T, T]>; + entries(): IterableIterator<[T, T]>; forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; has(value: T): boolean; - keys(): Iterator; + keys(): IterableIterator; size: number; - values(): Iterator; - [Symbol.iterator]():Iterator; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator; [Symbol.toStringTag]: string; } @@ -2083,7 +2109,7 @@ interface Int8Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2163,7 +2189,7 @@ interface Int8Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2300,10 +2326,10 @@ interface Int8Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int8ArrayConstructor { @@ -2373,7 +2399,7 @@ interface Uint8Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2453,7 +2479,7 @@ interface Uint8Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2590,10 +2616,10 @@ interface Uint8Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint8ArrayConstructor { @@ -2663,7 +2689,7 @@ interface Uint8ClampedArray { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2743,7 +2769,7 @@ interface Uint8ClampedArray { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2880,10 +2906,10 @@ interface Uint8ClampedArray { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint8ClampedArrayConstructor { @@ -2953,7 +2979,7 @@ interface Int16Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3033,7 +3059,7 @@ interface Int16Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3170,10 +3196,10 @@ interface Int16Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int16ArrayConstructor { @@ -3243,7 +3269,7 @@ interface Uint16Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3323,7 +3349,7 @@ interface Uint16Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3460,10 +3486,10 @@ interface Uint16Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint16ArrayConstructor { @@ -3533,7 +3559,7 @@ interface Int32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3613,7 +3639,7 @@ interface Int32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3750,10 +3776,10 @@ interface Int32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int32ArrayConstructor { @@ -3823,7 +3849,7 @@ interface Uint32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3903,7 +3929,7 @@ interface Uint32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4040,10 +4066,10 @@ interface Uint32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint32ArrayConstructor { @@ -4113,7 +4139,7 @@ interface Float32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -4193,7 +4219,7 @@ interface Float32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4330,10 +4356,10 @@ interface Float32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Float32ArrayConstructor { @@ -4403,7 +4429,7 @@ interface Float64Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -4483,7 +4509,7 @@ interface Float64Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4620,10 +4646,10 @@ interface Float64Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Float64ArrayConstructor { @@ -4682,7 +4708,7 @@ declare var Reflect: { construct(target: Function, argumentsList: ArrayLike): any; defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; deleteProperty(target: any, propertyKey: PropertyKey): boolean; - enumerate(target: any): Iterator; + enumerate(target: any): IterableIterator; get(target: any, propertyKey: PropertyKey, receiver?: any): any; getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; getPrototypeOf(target: any): any; diff --git a/bin/lib.d.ts b/bin/lib.d.ts index 02c45824aa8..e0fdf442967 100644 --- a/bin/lib.d.ts +++ b/bin/lib.d.ts @@ -179,19 +179,19 @@ interface ObjectConstructor { * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - seal(o: any): any; + seal(o: T): T; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: any): any; + freeze(o: T): T; /** * Prevents the addition of new properties to an object. * @param o Object to make non-extensible. */ - preventExtensions(o: any): any; + preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. @@ -425,6 +425,9 @@ interface String { */ substr(from: number, length?: number): string; + /** Returns the primitive value of the specified object. */ + valueOf(): string; + [index: number]: string; } @@ -477,6 +480,9 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): number; } interface NumberConstructor { @@ -1165,6 +1171,20 @@ interface ArrayConstructor { declare var Array: ArrayConstructor; +interface TypedPropertyDescriptor { + enumerable?: boolean; + configurable?: boolean; + writable?: boolean; + value?: T; + get?: () => T; + set?: (value: T) => void; +} + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void; + ///////////////////////////// /// IE10 ECMAScript Extensions ///////////////////////////// @@ -14203,7 +14223,11 @@ declare function importScripts(...urls: string[]): void; /// Windows Script Host APIS ///////////////////////////// -declare var ActiveXObject: { new (s: string): any; }; + +interface ActiveXObject { + new (s: string): any; +} +declare var ActiveXObject: ActiveXObject; interface ITextWriter { Write(s: string): void; @@ -14211,11 +14235,157 @@ interface ITextWriter { Close(): void; } -declare var WScript: { - Echo(s: any): void; - StdErr: ITextWriter; - StdOut: ITextWriter; - Arguments: { length: number; Item(n: number): string; }; - ScriptFullName: string; - Quit(exitCode?: number): number; +interface TextStreamBase { + /** + * The column number of the current character position in an input stream. + */ + Column: number; + /** + * The current line number in an input stream. + */ + Line: number; + /** + * Closes a text stream. + * It is not necessary to close standard streams; they close automatically when the process ends. If you close a standard stream, be aware that any other pointers to that standard stream become invalid. + */ + Close(): void; } + +interface TextStreamWriter extends TextStreamBase { + /** + * Sends a string to an output stream. + */ + Write(s: string): void; + /** + * Sends a specified number of blank lines (newline characters) to an output stream. + */ + WriteBlankLines(intLines: number): void; + /** + * Sends a string followed by a newline character to an output stream. + */ + WriteLine(s: string): void; +} + +interface TextStreamReader extends TextStreamBase { + /** + * Returns a specified number of characters from an input stream, beginning at the current pointer position. + * Does not return until the ENTER key is pressed. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + Read(characters: number): string; + /** + * Returns all characters from an input stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadAll(): string; + /** + * Returns an entire line from an input stream. + * Although this method extracts the newline character, it does not add it to the returned string. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadLine(): string; + /** + * Skips a specified number of characters when reading from an input text stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) + */ + Skip(characters: number): void; + /** + * Skips the next line when reading from an input text stream. + * Can only be used on a stream in reading mode, not writing or appending mode. + */ + SkipLine(): void; + /** + * Indicates whether the stream pointer position is at the end of a line. + */ + AtEndOfLine: boolean; + /** + * Indicates whether the stream pointer position is at the end of a stream. + */ + AtEndOfStream: boolean; +} + +declare var WScript: { + /** + * Outputs text to either a message box (under WScript.exe) or the command console window followed by a newline (under CScript.ext). + */ + Echo(s: any): void; + /** + * Exposes the write-only error output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdErr: TextStreamWriter; + /** + * Exposes the write-only output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdOut: TextStreamWriter; + Arguments: { length: number; Item(n: number): string; }; + /** + * The full path of the currently running script. + */ + ScriptFullName: string; + /** + * Forces the script to stop immediately, with an optional exit code. + */ + Quit(exitCode?: number): number; + /** + * The Windows Script Host build version number. + */ + BuildVersion: number; + /** + * Fully qualified path of the host executable. + */ + FullName: string; + /** + * Gets/sets the script mode - interactive(true) or batch(false). + */ + Interactive: boolean; + /** + * The name of the host executable (WScript.exe or CScript.exe). + */ + Name: string; + /** + * Path of the directory containing the host executable. + */ + Path: string; + /** + * The filename of the currently running script. + */ + ScriptName: string; + /** + * Exposes the read-only input stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdIn: TextStreamReader; + /** + * Windows Script Host version + */ + Version: string; + /** + * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. + */ + ConnectObject(objEventSource: any, strPrefix: string): void; + /** + * Creates a COM object. + * @param strProgiID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + CreateObject(strProgID: string, strPrefix?: string): any; + /** + * Disconnects a COM object from its event sources. + */ + DisconnectObject(obj: any): void; + /** + * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. + * @param strPathname Fully qualified path to the file containing the object persisted to disk. For objects in memory, pass a zero-length string. + * @param strProgID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; + /** + * Suspends script execution for a specified length of time, then continues execution. + * @param intTime Interval (in milliseconds) to suspend script execution. + */ + Sleep(intTime: number): void; +}; diff --git a/bin/lib.es6.d.ts b/bin/lib.es6.d.ts index dfb025a0c36..edc51cad7cc 100644 --- a/bin/lib.es6.d.ts +++ b/bin/lib.es6.d.ts @@ -179,19 +179,19 @@ interface ObjectConstructor { * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - seal(o: any): any; + seal(o: T): T; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: any): any; + freeze(o: T): T; /** * Prevents the addition of new properties to an object. * @param o Object to make non-extensible. */ - preventExtensions(o: any): any; + preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. @@ -425,6 +425,9 @@ interface String { */ substr(from: number, length?: number): string; + /** Returns the primitive value of the specified object. */ + valueOf(): string; + [index: number]: string; } @@ -477,6 +480,9 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): number; } interface NumberConstructor { @@ -1164,6 +1170,20 @@ interface ArrayConstructor { } declare var Array: ArrayConstructor; + +interface TypedPropertyDescriptor { + enumerable?: boolean; + configurable?: boolean; + writable?: boolean; + value?: T; + get?: () => T; + set?: (value: T) => void; +} + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void; declare type PropertyKey = string | number | symbol; interface Symbol { @@ -1396,22 +1416,22 @@ interface ArrayLike { interface Array { /** Iterator */ - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, T]>; + entries(): IterableIterator<[number, T]>; /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; /** * Returns the value of the first element in the array where predicate is true, and undefined @@ -1495,7 +1515,7 @@ interface ArrayConstructor { interface String { /** Iterator */ - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; /** * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point @@ -1613,14 +1633,19 @@ interface IteratorResult { } interface Iterator { - [Symbol.iterator](): Iterator; next(): IteratorResult; + return?(value?: any): IteratorResult; + throw?(e?: any): IteratorResult; } interface Iterable { [Symbol.iterator](): Iterator; } +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; +} + interface GeneratorFunction extends Function { } @@ -1636,10 +1661,11 @@ interface GeneratorFunctionConstructor { } declare var GeneratorFunction: GeneratorFunctionConstructor; -interface Generator extends Iterator { +interface Generator extends IterableIterator { next(value?: any): IteratorResult; - throw (exception: any): IteratorResult; - return (value: T): IteratorResult; + throw(exception: any): IteratorResult; + return(value: T): IteratorResult; + [Symbol.iterator](): Generator; [Symbol.toStringTag]: string; } @@ -1807,15 +1833,15 @@ interface RegExp { interface Map { clear(): void; delete(key: K): boolean; - entries(): Iterator<[K, V]>; + entries(): IterableIterator<[K, V]>; forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; get(key: K): V; has(key: K): boolean; - keys(): Iterator; + keys(): IterableIterator; set(key: K, value?: V): Map; size: number; - values(): Iterator; - [Symbol.iterator]():Iterator<[K,V]>; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator<[K,V]>; [Symbol.toStringTag]: string; } @@ -1846,13 +1872,13 @@ interface Set { add(value: T): Set; clear(): void; delete(value: T): boolean; - entries(): Iterator<[T, T]>; + entries(): IterableIterator<[T, T]>; forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; has(value: T): boolean; - keys(): Iterator; + keys(): IterableIterator; size: number; - values(): Iterator; - [Symbol.iterator]():Iterator; + values(): IterableIterator; + [Symbol.iterator]():IterableIterator; [Symbol.toStringTag]: string; } @@ -2083,7 +2109,7 @@ interface Int8Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2163,7 +2189,7 @@ interface Int8Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2300,10 +2326,10 @@ interface Int8Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int8ArrayConstructor { @@ -2373,7 +2399,7 @@ interface Uint8Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2453,7 +2479,7 @@ interface Uint8Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2590,10 +2616,10 @@ interface Uint8Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint8ArrayConstructor { @@ -2663,7 +2689,7 @@ interface Uint8ClampedArray { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -2743,7 +2769,7 @@ interface Uint8ClampedArray { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -2880,10 +2906,10 @@ interface Uint8ClampedArray { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint8ClampedArrayConstructor { @@ -2953,7 +2979,7 @@ interface Int16Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3033,7 +3059,7 @@ interface Int16Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3170,10 +3196,10 @@ interface Int16Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int16ArrayConstructor { @@ -3243,7 +3269,7 @@ interface Uint16Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3323,7 +3349,7 @@ interface Uint16Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3460,10 +3486,10 @@ interface Uint16Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint16ArrayConstructor { @@ -3533,7 +3559,7 @@ interface Int32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3613,7 +3639,7 @@ interface Int32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -3750,10 +3776,10 @@ interface Int32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Int32ArrayConstructor { @@ -3823,7 +3849,7 @@ interface Uint32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -3903,7 +3929,7 @@ interface Uint32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4040,10 +4066,10 @@ interface Uint32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Uint32ArrayConstructor { @@ -4113,7 +4139,7 @@ interface Float32Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -4193,7 +4219,7 @@ interface Float32Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4330,10 +4356,10 @@ interface Float32Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Float32ArrayConstructor { @@ -4403,7 +4429,7 @@ interface Float64Array { /** * Returns an array of key, value pairs for every entry in the array */ - entries(): Iterator<[number, number]>; + entries(): IterableIterator<[number, number]>; /** * Determines whether all the members of an array satisfy the specified test. @@ -4483,7 +4509,7 @@ interface Float64Array { /** * Returns an list of keys in the array */ - keys(): Iterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -4620,10 +4646,10 @@ interface Float64Array { /** * Returns an list of values in the array */ - values(): Iterator; + values(): IterableIterator; [index: number]: number; - [Symbol.iterator] (): Iterator; + [Symbol.iterator](): IterableIterator; } interface Float64ArrayConstructor { @@ -4682,7 +4708,7 @@ declare var Reflect: { construct(target: Function, argumentsList: ArrayLike): any; defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; deleteProperty(target: any, propertyKey: PropertyKey): boolean; - enumerate(target: any): Iterator; + enumerate(target: any): IterableIterator; get(target: any, propertyKey: PropertyKey, receiver?: any): any; getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; getPrototypeOf(target: any): any; @@ -17179,7 +17205,11 @@ declare function importScripts(...urls: string[]): void; /// Windows Script Host APIS ///////////////////////////// -declare var ActiveXObject: { new (s: string): any; }; + +interface ActiveXObject { + new (s: string): any; +} +declare var ActiveXObject: ActiveXObject; interface ITextWriter { Write(s: string): void; @@ -17187,11 +17217,157 @@ interface ITextWriter { Close(): void; } -declare var WScript: { - Echo(s: any): void; - StdErr: ITextWriter; - StdOut: ITextWriter; - Arguments: { length: number; Item(n: number): string; }; - ScriptFullName: string; - Quit(exitCode?: number): number; +interface TextStreamBase { + /** + * The column number of the current character position in an input stream. + */ + Column: number; + /** + * The current line number in an input stream. + */ + Line: number; + /** + * Closes a text stream. + * It is not necessary to close standard streams; they close automatically when the process ends. If you close a standard stream, be aware that any other pointers to that standard stream become invalid. + */ + Close(): void; } + +interface TextStreamWriter extends TextStreamBase { + /** + * Sends a string to an output stream. + */ + Write(s: string): void; + /** + * Sends a specified number of blank lines (newline characters) to an output stream. + */ + WriteBlankLines(intLines: number): void; + /** + * Sends a string followed by a newline character to an output stream. + */ + WriteLine(s: string): void; +} + +interface TextStreamReader extends TextStreamBase { + /** + * Returns a specified number of characters from an input stream, beginning at the current pointer position. + * Does not return until the ENTER key is pressed. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + Read(characters: number): string; + /** + * Returns all characters from an input stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadAll(): string; + /** + * Returns an entire line from an input stream. + * Although this method extracts the newline character, it does not add it to the returned string. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadLine(): string; + /** + * Skips a specified number of characters when reading from an input text stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) + */ + Skip(characters: number): void; + /** + * Skips the next line when reading from an input text stream. + * Can only be used on a stream in reading mode, not writing or appending mode. + */ + SkipLine(): void; + /** + * Indicates whether the stream pointer position is at the end of a line. + */ + AtEndOfLine: boolean; + /** + * Indicates whether the stream pointer position is at the end of a stream. + */ + AtEndOfStream: boolean; +} + +declare var WScript: { + /** + * Outputs text to either a message box (under WScript.exe) or the command console window followed by a newline (under CScript.ext). + */ + Echo(s: any): void; + /** + * Exposes the write-only error output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdErr: TextStreamWriter; + /** + * Exposes the write-only output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdOut: TextStreamWriter; + Arguments: { length: number; Item(n: number): string; }; + /** + * The full path of the currently running script. + */ + ScriptFullName: string; + /** + * Forces the script to stop immediately, with an optional exit code. + */ + Quit(exitCode?: number): number; + /** + * The Windows Script Host build version number. + */ + BuildVersion: number; + /** + * Fully qualified path of the host executable. + */ + FullName: string; + /** + * Gets/sets the script mode - interactive(true) or batch(false). + */ + Interactive: boolean; + /** + * The name of the host executable (WScript.exe or CScript.exe). + */ + Name: string; + /** + * Path of the directory containing the host executable. + */ + Path: string; + /** + * The filename of the currently running script. + */ + ScriptName: string; + /** + * Exposes the read-only input stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdIn: TextStreamReader; + /** + * Windows Script Host version + */ + Version: string; + /** + * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. + */ + ConnectObject(objEventSource: any, strPrefix: string): void; + /** + * Creates a COM object. + * @param strProgiID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + CreateObject(strProgID: string, strPrefix?: string): any; + /** + * Disconnects a COM object from its event sources. + */ + DisconnectObject(obj: any): void; + /** + * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. + * @param strPathname Fully qualified path to the file containing the object persisted to disk. For objects in memory, pass a zero-length string. + * @param strProgID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; + /** + * Suspends script execution for a specified length of time, then continues execution. + * @param intTime Interval (in milliseconds) to suspend script execution. + */ + Sleep(intTime: number): void; +}; diff --git a/bin/lib.scriptHost.d.ts b/bin/lib.scriptHost.d.ts index 1498aeea63a..17b1fe956a2 100644 --- a/bin/lib.scriptHost.d.ts +++ b/bin/lib.scriptHost.d.ts @@ -20,7 +20,11 @@ and limitations under the License. /// Windows Script Host APIS ///////////////////////////// -declare var ActiveXObject: { new (s: string): any; }; + +interface ActiveXObject { + new (s: string): any; +} +declare var ActiveXObject: ActiveXObject; interface ITextWriter { Write(s: string): void; @@ -28,11 +32,157 @@ interface ITextWriter { Close(): void; } -declare var WScript: { - Echo(s: any): void; - StdErr: ITextWriter; - StdOut: ITextWriter; - Arguments: { length: number; Item(n: number): string; }; - ScriptFullName: string; - Quit(exitCode?: number): number; +interface TextStreamBase { + /** + * The column number of the current character position in an input stream. + */ + Column: number; + /** + * The current line number in an input stream. + */ + Line: number; + /** + * Closes a text stream. + * It is not necessary to close standard streams; they close automatically when the process ends. If you close a standard stream, be aware that any other pointers to that standard stream become invalid. + */ + Close(): void; } + +interface TextStreamWriter extends TextStreamBase { + /** + * Sends a string to an output stream. + */ + Write(s: string): void; + /** + * Sends a specified number of blank lines (newline characters) to an output stream. + */ + WriteBlankLines(intLines: number): void; + /** + * Sends a string followed by a newline character to an output stream. + */ + WriteLine(s: string): void; +} + +interface TextStreamReader extends TextStreamBase { + /** + * Returns a specified number of characters from an input stream, beginning at the current pointer position. + * Does not return until the ENTER key is pressed. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + Read(characters: number): string; + /** + * Returns all characters from an input stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadAll(): string; + /** + * Returns an entire line from an input stream. + * Although this method extracts the newline character, it does not add it to the returned string. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadLine(): string; + /** + * Skips a specified number of characters when reading from an input text stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) + */ + Skip(characters: number): void; + /** + * Skips the next line when reading from an input text stream. + * Can only be used on a stream in reading mode, not writing or appending mode. + */ + SkipLine(): void; + /** + * Indicates whether the stream pointer position is at the end of a line. + */ + AtEndOfLine: boolean; + /** + * Indicates whether the stream pointer position is at the end of a stream. + */ + AtEndOfStream: boolean; +} + +declare var WScript: { + /** + * Outputs text to either a message box (under WScript.exe) or the command console window followed by a newline (under CScript.ext). + */ + Echo(s: any): void; + /** + * Exposes the write-only error output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdErr: TextStreamWriter; + /** + * Exposes the write-only output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdOut: TextStreamWriter; + Arguments: { length: number; Item(n: number): string; }; + /** + * The full path of the currently running script. + */ + ScriptFullName: string; + /** + * Forces the script to stop immediately, with an optional exit code. + */ + Quit(exitCode?: number): number; + /** + * The Windows Script Host build version number. + */ + BuildVersion: number; + /** + * Fully qualified path of the host executable. + */ + FullName: string; + /** + * Gets/sets the script mode - interactive(true) or batch(false). + */ + Interactive: boolean; + /** + * The name of the host executable (WScript.exe or CScript.exe). + */ + Name: string; + /** + * Path of the directory containing the host executable. + */ + Path: string; + /** + * The filename of the currently running script. + */ + ScriptName: string; + /** + * Exposes the read-only input stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdIn: TextStreamReader; + /** + * Windows Script Host version + */ + Version: string; + /** + * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. + */ + ConnectObject(objEventSource: any, strPrefix: string): void; + /** + * Creates a COM object. + * @param strProgiID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + CreateObject(strProgID: string, strPrefix?: string): any; + /** + * Disconnects a COM object from its event sources. + */ + DisconnectObject(obj: any): void; + /** + * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. + * @param strPathname Fully qualified path to the file containing the object persisted to disk. For objects in memory, pass a zero-length string. + * @param strProgID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; + /** + * Suspends script execution for a specified length of time, then continues execution. + * @param intTime Interval (in milliseconds) to suspend script execution. + */ + Sleep(intTime: number): void; +}; diff --git a/bin/tsc.js b/bin/tsc.js index 945a2115041..2acb2dd3a12 100644 --- a/bin/tsc.js +++ b/bin/tsc.js @@ -28,6 +28,7 @@ var ts; })(ts.DiagnosticCategory || (ts.DiagnosticCategory = {})); var DiagnosticCategory = ts.DiagnosticCategory; })(ts || (ts = {})); +/// var ts; (function (ts) { function forEach(array, callback) { @@ -44,8 +45,9 @@ var ts; ts.forEach = forEach; function contains(array, value) { if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (v === value) { return true; } } @@ -67,8 +69,9 @@ var ts; function countWhere(array, predicate) { var count = 0; if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (predicate(array[i])) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (predicate(v)) { count++; } } @@ -77,12 +80,13 @@ var ts; } ts.countWhere = countWhere; function filter(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (f(item)) { - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_1 = array[_i]; + if (f(item_1)) { + result.push(item_1); } } } @@ -90,10 +94,12 @@ var ts; } ts.filter = filter; function map(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - result.push(f(array[i])); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result.push(f(v)); } } return result; @@ -108,12 +114,14 @@ var ts; } ts.concatenate = concatenate; function deduplicate(array) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (!contains(result, item)) - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_2 = array[_i]; + if (!contains(result, item_2)) { + result.push(item_2); + } } } return result; @@ -121,15 +129,19 @@ var ts; ts.deduplicate = deduplicate; function sum(array, prop) { var result = 0; - for (var i = 0; i < array.length; i++) { - result += array[i][prop]; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result += v[prop]; } return result; } ts.sum = sum; function addRange(to, from) { - for (var i = 0, n = from.length; i < n; i++) { - to.push(from[i]); + if (to && from) { + for (var _i = 0; _i < from.length; _i++) { + var v = from[_i]; + to.push(v); + } } } ts.addRange = addRange; @@ -159,6 +171,35 @@ var ts; return ~low; } ts.binarySearch = binarySearch; + function reduceLeft(array, f, initial) { + if (array) { + var count = array.length; + if (count > 0) { + var pos = 0; + var result = arguments.length <= 2 ? array[pos++] : initial; + while (pos < count) { + result = f(result, array[pos++]); + } + return result; + } + } + return initial; + } + ts.reduceLeft = reduceLeft; + function reduceRight(array, f, initial) { + if (array) { + var pos = array.length - 1; + if (pos >= 0) { + var result = arguments.length <= 2 ? array[pos--] : initial; + while (pos >= 0) { + result = f(result, array[pos--]); + } + return result; + } + } + return initial; + } + ts.reduceRight = reduceRight; var hasOwnProperty = Object.prototype.hasOwnProperty; function hasProperty(map, key) { return hasOwnProperty.call(map, key); @@ -220,14 +261,6 @@ var ts; return hasProperty(map, key) ? map[key] : undefined; } ts.lookUp = lookUp; - function mapToArray(map) { - var result = []; - for (var id in map) { - result.push(map[id]); - } - return result; - } - ts.mapToArray = mapToArray; function copyMap(source, target) { for (var p in source) { target[p] = source[p]; @@ -244,7 +277,9 @@ var ts; ts.arrayToMap = arrayToMap; function formatStringFromArgs(text, args, baseIndex) { baseIndex = baseIndex || 0; - return text.replace(/{(\d+)}/g, function (match, index) { return args[+index + baseIndex]; }); + return text.replace(/{(\d+)}/g, function (match, index) { + return args[+index + baseIndex]; + }); } ts.localizedDiagnosticMessages = undefined; function getLocaleSpecificMessage(message) { @@ -252,8 +287,11 @@ var ts; } ts.getLocaleSpecificMessage = getLocaleSpecificMessage; function createFileDiagnostic(file, start, length, message) { + var end = start + length; Debug.assert(start >= 0, "start must be non-negative, is " + start); Debug.assert(length >= 0, "length must be non-negative, is " + length); + Debug.assert(start <= file.text.length, "start must be within the bounds of the file. " + start + " > " + file.text.length); + Debug.assert(end <= file.text.length, "end must be the bounds of the file. " + end + " > " + file.text.length); var text = getLocaleSpecificMessage(message.key); if (arguments.length > 4) { text = formatStringFromArgs(text, arguments, 4); @@ -316,12 +354,7 @@ var ts; return diagnostic.file ? diagnostic.file.fileName : undefined; } function compareDiagnostics(d1, d2) { - return compareValues(getDiagnosticFileName(d1), getDiagnosticFileName(d2)) || - compareValues(d1.start, d2.start) || - compareValues(d1.length, d2.length) || - compareValues(d1.code, d2.code) || - compareMessageText(d1.messageText, d2.messageText) || - 0; + return compareValues(getDiagnosticFileName(d1), getDiagnosticFileName(d2)) || compareValues(d1.start, d2.start) || compareValues(d1.length, d2.length) || compareValues(d1.code, d2.code) || compareMessageText(d1.messageText, d2.messageText) || 0; } ts.compareDiagnostics = compareDiagnostics; function compareMessageText(text1, text2) { @@ -348,7 +381,9 @@ var ts; if (diagnostics.length < 2) { return diagnostics; } - var newDiagnostics = [diagnostics[0]]; + var newDiagnostics = [ + diagnostics[0] + ]; var previousDiagnostic = diagnostics[0]; for (var i = 1; i < diagnostics.length; i++) { var currentDiagnostic = diagnostics[i]; @@ -389,21 +424,23 @@ var ts; function getNormalizedParts(normalizedSlashedPath, rootLength) { var parts = normalizedSlashedPath.substr(rootLength).split(ts.directorySeparator); var normalized = []; - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; + for (var _i = 0; _i < parts.length; _i++) { + var part = parts[_i]; if (part !== ".") { if (part === ".." && normalized.length > 0 && normalized[normalized.length - 1] !== "..") { normalized.pop(); } else { - normalized.push(part); + if (part) { + normalized.push(part); + } } } } return normalized; } function normalizePath(path) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); var normalized = getNormalizedParts(path, rootLength); return path.substr(0, rootLength) + normalized.join(ts.directorySeparator); @@ -423,10 +460,12 @@ var ts; ts.isRootedDiskPath = isRootedDiskPath; function normalizedPathComponents(path, rootLength) { var normalizedParts = getNormalizedParts(path, rootLength); - return [path.substr(0, rootLength)].concat(normalizedParts); + return [ + path.substr(0, rootLength) + ].concat(normalizedParts); } function getNormalizedPathComponents(path, currentDirectory) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); if (rootLength == 0) { path = combinePaths(normalizeSlashes(currentDirectory), path); @@ -446,6 +485,9 @@ var ts; } ts.getNormalizedPathFromPathComponents = getNormalizedPathFromPathComponents; function getNormalizedPathComponentsOfUrl(url) { + // Get root length of http://www.website.com/folder1/foler2/ + // In this example the root is: http://www.website.com/ + // normalized path components should be ["http://www.website.com/", "folder1", "folder2"] var urlLength = url.length; var rootLength = url.indexOf("://") + "://".length; while (rootLength < urlLength) { @@ -457,7 +499,9 @@ var ts; } } if (rootLength === urlLength) { - return [url]; + return [ + url + ]; } var indexOfNextSlash = url.indexOf(ts.directorySeparator, rootLength); if (indexOfNextSlash !== -1) { @@ -465,7 +509,9 @@ var ts; return normalizedPathComponents(url, rootLength); } else { - return [url + ts.directorySeparator]; + return [ + url + ts.directorySeparator + ]; } } function getNormalizedPathOrUrlComponents(pathOrUrl, currentDirectory) { @@ -527,10 +573,14 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; - var supportedExtensions = [".d.ts", ".ts", ".js"]; + var supportedExtensions = [ + ".d.ts", + ".ts", + ".js" + ]; function removeFileExtension(path) { - for (var i = 0; i < supportedExtensions.length; i++) { - var ext = supportedExtensions[i]; + for (var _i = 0; _i < supportedExtensions.length; _i++) { + var ext = supportedExtensions[_i]; if (fileExtensionIs(path, ext)) { return path.substr(0, path.length - ext.length); } @@ -539,7 +589,7 @@ var ts; } ts.removeFileExtension = removeFileExtension; var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\0-\19\t\v\f\b\0\r\n\u2028\u2029\u0085]/g; + var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; var escapedCharsMap = { "\0": "\\0", "\t": "\\t", @@ -554,20 +604,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" }; - function escapeString(s) { - s = backslashOrDoubleQuote.test(s) ? s.replace(backslashOrDoubleQuote, getReplacement) : s; - s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; - return s; - function getReplacement(c) { - return escapedCharsMap[c] || unicodeEscape(c); - } - function unicodeEscape(c) { - var hexCharCode = c.charCodeAt(0).toString(16); - var paddedHexCode = ("0000" + hexCharCode).slice(-4); - return "\\u" + paddedHexCode; - } - } - ts.escapeString = escapeString; function getDefaultLibFileName(options) { return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; } @@ -595,9 +631,15 @@ var ts; }; return Node; }, - getSymbolConstructor: function () { return Symbol; }, - getTypeConstructor: function () { return Type; }, - getSignatureConstructor: function () { return Signature; } + getSymbolConstructor: function () { + return Symbol; + }, + getTypeConstructor: function () { + return Type; + }, + getSignatureConstructor: function () { + return Signature; + } }; var Debug; (function (Debug) { @@ -622,6 +664,7 @@ var ts; Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.sys = (function () { @@ -695,15 +738,16 @@ var ts; function visitDirectory(path) { var folder = fso.GetFolder(path || "."); var files = getNames(folder.files); - for (var i = 0; i < files.length; i++) { - var name = files[i]; - if (!extension || ts.fileExtensionIs(name, extension)) { - result.push(ts.combinePaths(path, name)); + for (var _i = 0; _i < files.length; _i++) { + var name_1 = files[_i]; + if (!extension || ts.fileExtensionIs(name_1, extension)) { + result.push(ts.combinePaths(path, name_1)); } } var subfolders = getNames(folder.subfolders); - for (var i = 0; i < subfolders.length; i++) { - visitDirectory(ts.combinePaths(path, subfolders[i])); + for (var _a = 0; _a < subfolders.length; _a++) { + var current = subfolders[_a]; + visitDirectory(ts.combinePaths(path, current)); } } } @@ -788,8 +832,9 @@ var ts; function visitDirectory(path) { var files = _fs.readdirSync(path || ".").sort(); var directories = []; - for (var i = 0; i < files.length; i++) { - var name = ts.combinePaths(path, files[i]); + for (var _i = 0; _i < files.length; _i++) { + var current = files[_i]; + var name = ts.combinePaths(path, current); var stat = _fs.lstatSync(name); if (stat.isFile()) { if (!extension || ts.fileExtensionIs(name, extension)) { @@ -800,8 +845,9 @@ var ts; directories.push(name); } } - for (var i = 0; i < directories.length; i++) { - visitDirectory(directories[i]); + for (var _a = 0; _a < directories.length; _a++) { + var current = directories[_a]; + visitDirectory(current); } } } @@ -815,9 +861,14 @@ var ts; readFile: readFile, writeFile: writeFile, watchFile: function (fileName, callback) { - _fs.watchFile(fileName, { persistent: true, interval: 250 }, fileChanged); + _fs.watchFile(fileName, { + persistent: true, + interval: 250 + }, fileChanged); return { - close: function () { _fs.unwatchFile(fileName, fileChanged); } + close: function () { + _fs.unwatchFile(fileName, fileChanged); + } }; function fileChanged(curr, prev) { if (+curr.mtime <= +prev.mtime) { @@ -870,538 +921,2617 @@ var ts; } })(); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.Diagnostics = { - Unterminated_string_literal: { code: 1002, category: 1, key: "Unterminated string literal." }, - Identifier_expected: { code: 1003, category: 1, key: "Identifier expected." }, - _0_expected: { code: 1005, category: 1, key: "'{0}' expected." }, - A_file_cannot_have_a_reference_to_itself: { code: 1006, category: 1, key: "A file cannot have a reference to itself." }, - Trailing_comma_not_allowed: { code: 1009, category: 1, key: "Trailing comma not allowed." }, - Asterisk_Slash_expected: { code: 1010, category: 1, key: "'*/' expected." }, - Unexpected_token: { code: 1012, category: 1, key: "Unexpected token." }, - Catch_clause_parameter_cannot_have_a_type_annotation: { code: 1013, category: 1, key: "Catch clause parameter cannot have a type annotation." }, - A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: 1, key: "A rest parameter must be last in a parameter list." }, - Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: 1, key: "Parameter cannot have question mark and initializer." }, - A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: 1, key: "A required parameter cannot follow an optional parameter." }, - An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: 1, key: "An index signature cannot have a rest parameter." }, - An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: 1, key: "An index signature parameter cannot have an accessibility modifier." }, - An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: 1, key: "An index signature parameter cannot have a question mark." }, - An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: 1, key: "An index signature parameter cannot have an initializer." }, - An_index_signature_must_have_a_type_annotation: { code: 1021, category: 1, key: "An index signature must have a type annotation." }, - An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: 1, key: "An index signature parameter must have a type annotation." }, - An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: 1, key: "An index signature parameter type must be 'string' or 'number'." }, - A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: 1, key: "A class or interface declaration can only have one 'extends' clause." }, - An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: 1, key: "An 'extends' clause must precede an 'implements' clause." }, - A_class_can_only_extend_a_single_class: { code: 1026, category: 1, key: "A class can only extend a single class." }, - A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: 1, key: "A class declaration can only have one 'implements' clause." }, - Accessibility_modifier_already_seen: { code: 1028, category: 1, key: "Accessibility modifier already seen." }, - _0_modifier_must_precede_1_modifier: { code: 1029, category: 1, key: "'{0}' modifier must precede '{1}' modifier." }, - _0_modifier_already_seen: { code: 1030, category: 1, key: "'{0}' modifier already seen." }, - _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: 1, key: "'{0}' modifier cannot appear on a class element." }, - An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: 1, key: "An interface declaration cannot have an 'implements' clause." }, - super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: 1, key: "'super' must be followed by an argument list or member access." }, - Only_ambient_modules_can_use_quoted_names: { code: 1035, category: 1, key: "Only ambient modules can use quoted names." }, - Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: 1, key: "Statements are not allowed in ambient contexts." }, - A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: 1, key: "A 'declare' modifier cannot be used in an already ambient context." }, - Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: 1, key: "Initializers are not allowed in ambient contexts." }, - _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: 1, key: "'{0}' modifier cannot appear on a module element." }, - A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: 1, key: "A 'declare' modifier cannot be used with an interface declaration." }, - A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: 1, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, - A_rest_parameter_cannot_be_optional: { code: 1047, category: 1, key: "A rest parameter cannot be optional." }, - A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: 1, key: "A rest parameter cannot have an initializer." }, - A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: 1, key: "A 'set' accessor must have exactly one parameter." }, - A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: 1, key: "A 'set' accessor cannot have an optional parameter." }, - A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: 1, key: "A 'set' accessor parameter cannot have an initializer." }, - A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: 1, key: "A 'set' accessor cannot have rest parameter." }, - A_get_accessor_cannot_have_parameters: { code: 1054, category: 1, key: "A 'get' accessor cannot have parameters." }, - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: 1, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, - Enum_member_must_have_initializer: { code: 1061, category: 1, key: "Enum member must have initializer." }, - An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: 1, key: "An export assignment cannot be used in an internal module." }, - Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: 1, key: "Ambient enum elements can only have integer literal initializers." }, - Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: 1, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, - A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: 1, key: "A 'declare' modifier cannot be used with an import declaration." }, - Invalid_reference_directive_syntax: { code: 1084, category: 1, key: "Invalid 'reference' directive syntax." }, - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: 1, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, - An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: 1, key: "An accessor cannot be declared in an ambient context." }, - _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: 1, key: "'{0}' modifier cannot appear on a constructor declaration." }, - _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: 1, key: "'{0}' modifier cannot appear on a parameter." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: 1, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, - Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: 1, key: "Type parameters cannot appear on a constructor declaration." }, - Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: 1, key: "Type annotation cannot appear on a constructor declaration." }, - An_accessor_cannot_have_type_parameters: { code: 1094, category: 1, key: "An accessor cannot have type parameters." }, - A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: 1, key: "A 'set' accessor cannot have a return type annotation." }, - An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: 1, key: "An index signature must have exactly one parameter." }, - _0_list_cannot_be_empty: { code: 1097, category: 1, key: "'{0}' list cannot be empty." }, - Type_parameter_list_cannot_be_empty: { code: 1098, category: 1, key: "Type parameter list cannot be empty." }, - Type_argument_list_cannot_be_empty: { code: 1099, category: 1, key: "Type argument list cannot be empty." }, - Invalid_use_of_0_in_strict_mode: { code: 1100, category: 1, key: "Invalid use of '{0}' in strict mode." }, - with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: 1, key: "'with' statements are not allowed in strict mode." }, - delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: 1, key: "'delete' cannot be called on an identifier in strict mode." }, - A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: 1, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, - A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: 1, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, - Jump_target_cannot_cross_function_boundary: { code: 1107, category: 1, key: "Jump target cannot cross function boundary." }, - A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: 1, key: "A 'return' statement can only be used within a function body." }, - Expression_expected: { code: 1109, category: 1, key: "Expression expected." }, - Type_expected: { code: 1110, category: 1, key: "Type expected." }, - A_class_member_cannot_be_declared_optional: { code: 1112, category: 1, key: "A class member cannot be declared optional." }, - A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: 1, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, - Duplicate_label_0: { code: 1114, category: 1, key: "Duplicate label '{0}'" }, - A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: 1, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, - A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: 1, key: "A 'break' statement can only jump to a label of an enclosing statement." }, - An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: 1, key: "An object literal cannot have multiple properties with the same name in strict mode." }, - An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: 1, key: "An object literal cannot have multiple get/set accessors with the same name." }, - An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: 1, key: "An object literal cannot have property and accessor with the same name." }, - An_export_assignment_cannot_have_modifiers: { code: 1120, category: 1, key: "An export assignment cannot have modifiers." }, - Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: 1, key: "Octal literals are not allowed in strict mode." }, - A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: 1, key: "A tuple type element list cannot be empty." }, - Variable_declaration_list_cannot_be_empty: { code: 1123, category: 1, key: "Variable declaration list cannot be empty." }, - Digit_expected: { code: 1124, category: 1, key: "Digit expected." }, - Hexadecimal_digit_expected: { code: 1125, category: 1, key: "Hexadecimal digit expected." }, - Unexpected_end_of_text: { code: 1126, category: 1, key: "Unexpected end of text." }, - Invalid_character: { code: 1127, category: 1, key: "Invalid character." }, - Declaration_or_statement_expected: { code: 1128, category: 1, key: "Declaration or statement expected." }, - Statement_expected: { code: 1129, category: 1, key: "Statement expected." }, - case_or_default_expected: { code: 1130, category: 1, key: "'case' or 'default' expected." }, - Property_or_signature_expected: { code: 1131, category: 1, key: "Property or signature expected." }, - Enum_member_expected: { code: 1132, category: 1, key: "Enum member expected." }, - Type_reference_expected: { code: 1133, category: 1, key: "Type reference expected." }, - Variable_declaration_expected: { code: 1134, category: 1, key: "Variable declaration expected." }, - Argument_expression_expected: { code: 1135, category: 1, key: "Argument expression expected." }, - Property_assignment_expected: { code: 1136, category: 1, key: "Property assignment expected." }, - Expression_or_comma_expected: { code: 1137, category: 1, key: "Expression or comma expected." }, - Parameter_declaration_expected: { code: 1138, category: 1, key: "Parameter declaration expected." }, - Type_parameter_declaration_expected: { code: 1139, category: 1, key: "Type parameter declaration expected." }, - Type_argument_expected: { code: 1140, category: 1, key: "Type argument expected." }, - String_literal_expected: { code: 1141, category: 1, key: "String literal expected." }, - Line_break_not_permitted_here: { code: 1142, category: 1, key: "Line break not permitted here." }, - or_expected: { code: 1144, category: 1, key: "'{' or ';' expected." }, - Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: 1, key: "Modifiers not permitted on index signature members." }, - Declaration_expected: { code: 1146, category: 1, key: "Declaration expected." }, - Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: 1, key: "Import declarations in an internal module cannot reference an external module." }, - Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: 1, key: "Cannot compile external modules unless the '--module' flag is provided." }, - File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: 1, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, - new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: 1, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, - var_let_or_const_expected: { code: 1152, category: 1, key: "'var', 'let' or 'const' expected." }, - let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: 1, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: 1, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_must_be_initialized: { code: 1155, category: 1, key: "'const' declarations must be initialized" }, - const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: 1, key: "'const' declarations can only be declared inside a block." }, - let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: 1, key: "'let' declarations can only be declared inside a block." }, - Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1159, category: 1, key: "Tagged templates are only available when targeting ECMAScript 6 and higher." }, - Unterminated_template_literal: { code: 1160, category: 1, key: "Unterminated template literal." }, - Unterminated_regular_expression_literal: { code: 1161, category: 1, key: "Unterminated regular expression literal." }, - An_object_member_cannot_be_declared_optional: { code: 1162, category: 1, key: "An object member cannot be declared optional." }, - yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: 1, key: "'yield' expression must be contained_within a generator declaration." }, - Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: 1, key: "Computed property names are not allowed in enums." }, - A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: 1, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: 1, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, - Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: 1, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, - A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: 1, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, - A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: 1, key: "A computed property name in an interface must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: 1, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, - A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: 1, key: "A comma expression is not allowed in a computed property name." }, - extends_clause_already_seen: { code: 1172, category: 1, key: "'extends' clause already seen." }, - extends_clause_must_precede_implements_clause: { code: 1173, category: 1, key: "'extends' clause must precede 'implements' clause." }, - Classes_can_only_extend_a_single_class: { code: 1174, category: 1, key: "Classes can only extend a single class." }, - implements_clause_already_seen: { code: 1175, category: 1, key: "'implements' clause already seen." }, - Interface_declaration_cannot_have_implements_clause: { code: 1176, category: 1, key: "Interface declaration cannot have 'implements' clause." }, - Binary_digit_expected: { code: 1177, category: 1, key: "Binary digit expected." }, - Octal_digit_expected: { code: 1178, category: 1, key: "Octal digit expected." }, - Unexpected_token_expected: { code: 1179, category: 1, key: "Unexpected token. '{' expected." }, - Property_destructuring_pattern_expected: { code: 1180, category: 1, key: "Property destructuring pattern expected." }, - Array_element_destructuring_pattern_expected: { code: 1181, category: 1, key: "Array element destructuring pattern expected." }, - A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: 1, key: "A destructuring declaration must have an initializer." }, - Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: 1, key: "Destructuring declarations are not allowed in ambient contexts." }, - An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: 1, key: "An implementation cannot be declared in ambient contexts." }, - Modifiers_cannot_appear_here: { code: 1184, category: 1, key: "Modifiers cannot appear here." }, - Merge_conflict_marker_encountered: { code: 1185, category: 1, key: "Merge conflict marker encountered." }, - A_rest_element_cannot_have_an_initializer: { code: 1186, category: 1, key: "A rest element cannot have an initializer." }, - A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: 1, key: "A parameter property may not be a binding pattern." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: 1, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, - The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: 1, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, - The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: 1, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, - Duplicate_identifier_0: { code: 2300, category: 1, key: "Duplicate identifier '{0}'." }, - Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: 1, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, - Static_members_cannot_reference_class_type_parameters: { code: 2302, category: 1, key: "Static members cannot reference class type parameters." }, - Circular_definition_of_import_alias_0: { code: 2303, category: 1, key: "Circular definition of import alias '{0}'." }, - Cannot_find_name_0: { code: 2304, category: 1, key: "Cannot find name '{0}'." }, - Module_0_has_no_exported_member_1: { code: 2305, category: 1, key: "Module '{0}' has no exported member '{1}'." }, - File_0_is_not_an_external_module: { code: 2306, category: 1, key: "File '{0}' is not an external module." }, - Cannot_find_external_module_0: { code: 2307, category: 1, key: "Cannot find external module '{0}'." }, - A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: 1, key: "A module cannot have more than one export assignment." }, - An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: 1, key: "An export assignment cannot be used in a module with other exported elements." }, - Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: 1, key: "Type '{0}' recursively references itself as a base type." }, - A_class_may_only_extend_another_class: { code: 2311, category: 1, key: "A class may only extend another class." }, - An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: 1, key: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: 1, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, - Generic_type_0_requires_1_type_argument_s: { code: 2314, category: 1, key: "Generic type '{0}' requires {1} type argument(s)." }, - Type_0_is_not_generic: { code: 2315, category: 1, key: "Type '{0}' is not generic." }, - Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: 1, key: "Global type '{0}' must be a class or interface type." }, - Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: 1, key: "Global type '{0}' must have {1} type parameter(s)." }, - Cannot_find_global_type_0: { code: 2318, category: 1, key: "Cannot find global type '{0}'." }, - Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: 1, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, - Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: 1, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, - Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: 1, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, - Type_0_is_not_assignable_to_type_1: { code: 2322, category: 1, key: "Type '{0}' is not assignable to type '{1}'." }, - Property_0_is_missing_in_type_1: { code: 2324, category: 1, key: "Property '{0}' is missing in type '{1}'." }, - Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: 1, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, - Types_of_property_0_are_incompatible: { code: 2326, category: 1, key: "Types of property '{0}' are incompatible." }, - Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: 1, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, - Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: 1, key: "Types of parameters '{0}' and '{1}' are incompatible." }, - Index_signature_is_missing_in_type_0: { code: 2329, category: 1, key: "Index signature is missing in type '{0}'." }, - Index_signatures_are_incompatible: { code: 2330, category: 1, key: "Index signatures are incompatible." }, - this_cannot_be_referenced_in_a_module_body: { code: 2331, category: 1, key: "'this' cannot be referenced in a module body." }, - this_cannot_be_referenced_in_current_location: { code: 2332, category: 1, key: "'this' cannot be referenced in current location." }, - this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: 1, key: "'this' cannot be referenced in constructor arguments." }, - this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: 1, key: "'this' cannot be referenced in a static property initializer." }, - super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: 1, key: "'super' can only be referenced in a derived class." }, - super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: 1, key: "'super' cannot be referenced in constructor arguments." }, - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: 1, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, - super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: 1, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, - Property_0_does_not_exist_on_type_1: { code: 2339, category: 1, key: "Property '{0}' does not exist on type '{1}'." }, - Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: 1, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, - Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: 1, key: "Property '{0}' is private and only accessible within class '{1}'." }, - An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: 1, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, - Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: 1, key: "Type '{0}' does not satisfy the constraint '{1}'." }, - Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: 1, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, - Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: 1, key: "Supplied parameters do not match any signature of call target." }, - Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: 1, key: "Untyped function calls may not accept type arguments." }, - Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: 1, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: 1, key: "Cannot invoke an expression whose type lacks a call signature." }, - Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: 1, key: "Only a void function can be called with the 'new' keyword." }, - Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: 1, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: 1, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, - No_best_common_type_exists_among_return_expressions: { code: 2354, category: 1, key: "No best common type exists among return expressions." }, - A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: 1, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, - An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: 1, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: 1, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, - The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: 1, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, - The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: 1, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, - The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: 1, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, - The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: 1, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, - The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: 1, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: 1, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: 1, key: "Invalid left-hand side of assignment expression." }, - Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: 1, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, - Type_parameter_name_cannot_be_0: { code: 2368, category: 1, key: "Type parameter name cannot be '{0}'" }, - A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: 1, key: "A parameter property is only allowed in a constructor implementation." }, - A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: 1, key: "A rest parameter must be of an array type." }, - A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: 1, key: "A parameter initializer is only allowed in a function or constructor implementation." }, - Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: 1, key: "Parameter '{0}' cannot be referenced in its initializer." }, - Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: 1, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, - Duplicate_string_index_signature: { code: 2374, category: 1, key: "Duplicate string index signature." }, - Duplicate_number_index_signature: { code: 2375, category: 1, key: "Duplicate number index signature." }, - A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: 1, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, - Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: 1, key: "Constructors for derived classes must contain a 'super' call." }, - A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: 1, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, - Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: 1, key: "Getter and setter accessors do not agree in visibility." }, - get_and_set_accessor_must_have_the_same_type: { code: 2380, category: 1, key: "'get' and 'set' accessor must have the same type." }, - A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: 1, key: "A signature with an implementation cannot use a string literal type." }, - Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: 1, key: "Specialized overload signature is not assignable to any non-specialized signature." }, - Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: 1, key: "Overload signatures must all be exported or not exported." }, - Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: 1, key: "Overload signatures must all be ambient or non-ambient." }, - Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: 1, key: "Overload signatures must all be public, private or protected." }, - Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: 1, key: "Overload signatures must all be optional or required." }, - Function_overload_must_be_static: { code: 2387, category: 1, key: "Function overload must be static." }, - Function_overload_must_not_be_static: { code: 2388, category: 1, key: "Function overload must not be static." }, - Function_implementation_name_must_be_0: { code: 2389, category: 1, key: "Function implementation name must be '{0}'." }, - Constructor_implementation_is_missing: { code: 2390, category: 1, key: "Constructor implementation is missing." }, - Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: 1, key: "Function implementation is missing or not immediately following the declaration." }, - Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: 1, key: "Multiple constructor implementations are not allowed." }, - Duplicate_function_implementation: { code: 2393, category: 1, key: "Duplicate function implementation." }, - Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: 1, key: "Overload signature is not compatible with function implementation." }, - Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: 1, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, - Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: 1, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, - Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: 1, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, - Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: 1, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, - Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: 1, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, - Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: 1, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, - Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: 1, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, - The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: 1, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, - The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: 1, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, - Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: 1, key: "Invalid left-hand side in 'for...in' statement." }, - The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: 1, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, - Setters_cannot_return_a_value: { code: 2408, category: 1, key: "Setters cannot return a value." }, - Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: 1, key: "Return type of constructor signature must be assignable to the instance type of the class" }, - All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: 1, key: "All symbols within a 'with' block will be resolved to 'any'." }, - Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: 1, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, - Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: 1, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, - Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: 1, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, - Class_name_cannot_be_0: { code: 2414, category: 1, key: "Class name cannot be '{0}'" }, - Class_0_incorrectly_extends_base_class_1: { code: 2415, category: 1, key: "Class '{0}' incorrectly extends base class '{1}'." }, - Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: 1, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, - Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: 1, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, - Class_0_incorrectly_implements_interface_1: { code: 2420, category: 1, key: "Class '{0}' incorrectly implements interface '{1}'." }, - A_class_may_only_implement_another_class_or_interface: { code: 2422, category: 1, key: "A class may only implement another class or interface." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, - Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: 1, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, - Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: 1, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, - Interface_name_cannot_be_0: { code: 2427, category: 1, key: "Interface name cannot be '{0}'" }, - All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: 1, key: "All declarations of an interface must have identical type parameters." }, - Interface_0_incorrectly_extends_interface_1: { code: 2430, category: 1, key: "Interface '{0}' incorrectly extends interface '{1}'." }, - Enum_name_cannot_be_0: { code: 2431, category: 1, key: "Enum name cannot be '{0}'" }, - In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: 1, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, - A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: 1, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, - A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: 1, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, - Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: 1, key: "Ambient external modules cannot be nested in other modules." }, - Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: 1, key: "Ambient external module declaration cannot specify relative module name." }, - Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: 1, key: "Module '{0}' is hidden by a local declaration with the same name" }, - Import_name_cannot_be_0: { code: 2438, category: 1, key: "Import name cannot be '{0}'" }, - Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: 1, key: "Import declaration in an ambient external module declaration cannot reference external module through relative external module name." }, - Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: 1, key: "Import declaration conflicts with local declaration of '{0}'" }, - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: 1, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, - Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: 1, key: "Types have separate declarations of a private property '{0}'." }, - Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: 1, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, - Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: 1, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, - Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: 1, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, - Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: 1, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, - The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: 1, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, - Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: 1, key: "Block-scoped variable '{0}' used before its declaration." }, - The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: 1, key: "The operand of an increment or decrement operator cannot be a constant." }, - Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: 1, key: "Left-hand side of assignment expression cannot be a constant." }, - Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: 1, key: "Cannot redeclare block-scoped variable '{0}'." }, - An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: 1, key: "An enum member cannot have a numeric name." }, - The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: 1, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, - Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: 1, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, - Type_alias_0_circularly_references_itself: { code: 2456, category: 1, key: "Type alias '{0}' circularly references itself." }, - Type_alias_name_cannot_be_0: { code: 2457, category: 1, key: "Type alias name cannot be '{0}'" }, - An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: 1, key: "An AMD module cannot have multiple name assignments." }, - Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: 1, key: "Type '{0}' has no property '{1}' and no string index signature." }, - Type_0_has_no_property_1: { code: 2460, category: 1, key: "Type '{0}' has no property '{1}'." }, - Type_0_is_not_an_array_type: { code: 2461, category: 1, key: "Type '{0}' is not an array type." }, - A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: 1, key: "A rest element must be last in an array destructuring pattern" }, - A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: 1, key: "A binding pattern parameter cannot be optional in an implementation signature." }, - A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: 1, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, - this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: 1, key: "'this' cannot be referenced in a computed property name." }, - super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: 1, key: "'super' cannot be referenced in a computed property name." }, - A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: 1, key: "A computed property name cannot reference a type parameter from its containing type." }, - Cannot_find_global_value_0: { code: 2468, category: 1, key: "Cannot find global value '{0}'." }, - The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: 1, key: "The '{0}' operator cannot be applied to type 'symbol'." }, - Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: 1, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, - A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: 1, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, - Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: 1, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, - Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: 1, key: "Enum declarations must all be const or non-const." }, - In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: 1, key: "In 'const' enum declarations member initializer must be constant expression." }, - const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: 1, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, - A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: 1, key: "A const enum member can only be accessed using a string literal." }, - const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: 1, key: "'const' enum member initializer was evaluated to a non-finite value." }, - const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: 1, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, - Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: 1, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, - let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: 1, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, - Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: 1, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, - for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher: { code: 2482, category: 1, key: "'for...of' statements are only available when targeting ECMAScript 6 or higher." }, - The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: 1, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, - Import_declaration_0_is_using_private_name_1: { code: 4000, category: 1, key: "Import declaration '{0}' is using private name '{1}'." }, - Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: 1, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, - Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: 1, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: 1, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: 1, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: 1, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: 1, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: 1, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: 1, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, - Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: 1, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: 1, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: 1, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, - Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, - Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, - Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: 1, key: "Exported variable '{0}' has or is using private name '{1}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: 1, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: 1, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, - Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: 1, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, - Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: 1, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: 1, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: 1, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: 1, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: 1, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: 1, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: 1, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: 1, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: 1, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: 1, key: "Return type of public static method from exported class has or is using private name '{0}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: 1, key: "Return type of public method from exported class has or is using private name '{0}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: 1, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: 1, key: "Return type of method from exported interface has or is using private name '{0}'." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: 1, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: 1, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, - Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: 1, key: "Return type of exported function has or is using private name '{0}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: 1, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: 1, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: 1, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: 1, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, - Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: 1, key: "Exported type alias '{0}' has or is using private name '{1}'." }, - The_current_host_does_not_support_the_0_option: { code: 5001, category: 1, key: "The current host does not support the '{0}' option." }, - Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: 1, key: "Cannot find the common subdirectory path for the input files." }, - Cannot_read_file_0_Colon_1: { code: 5012, category: 1, key: "Cannot read file '{0}': {1}" }, - Unsupported_file_encoding: { code: 5013, category: 1, key: "Unsupported file encoding." }, - Unknown_compiler_option_0: { code: 5023, category: 1, key: "Unknown compiler option '{0}'." }, - Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: 1, key: "Compiler option '{0}' requires a value of type {1}." }, - Could_not_write_file_0_Colon_1: { code: 5033, category: 1, key: "Could not write file '{0}': {1}" }, - Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: 1, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: 1, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: 1, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, - Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: 1, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, - Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: 1, key: "Option 'project' cannot be mixed with source files on a command line." }, - Concatenate_and_emit_output_to_single_file: { code: 6001, category: 2, key: "Concatenate and emit output to single file." }, - Generates_corresponding_d_ts_file: { code: 6002, category: 2, key: "Generates corresponding '.d.ts' file." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: 2, key: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: 2, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, - Watch_input_files: { code: 6005, category: 2, key: "Watch input files." }, - Redirect_output_structure_to_the_directory: { code: 6006, category: 2, key: "Redirect output structure to the directory." }, - Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: 2, key: "Do not erase const enum declarations in generated code." }, - Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: 2, key: "Do not emit outputs if any type checking errors were reported." }, - Do_not_emit_comments_to_output: { code: 6009, category: 2, key: "Do not emit comments to output." }, - Do_not_emit_outputs: { code: 6010, category: 2, key: "Do not emit outputs." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: 2, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, - Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: 2, key: "Specify module code generation: 'commonjs' or 'amd'" }, - Print_this_message: { code: 6017, category: 2, key: "Print this message." }, - Print_the_compiler_s_version: { code: 6019, category: 2, key: "Print the compiler's version." }, - Compile_the_project_in_the_given_directory: { code: 6020, category: 2, key: "Compile the project in the given directory." }, - Syntax_Colon_0: { code: 6023, category: 2, key: "Syntax: {0}" }, - options: { code: 6024, category: 2, key: "options" }, - file: { code: 6025, category: 2, key: "file" }, - Examples_Colon_0: { code: 6026, category: 2, key: "Examples: {0}" }, - Options_Colon: { code: 6027, category: 2, key: "Options:" }, - Version_0: { code: 6029, category: 2, key: "Version {0}" }, - Insert_command_line_options_and_files_from_a_file: { code: 6030, category: 2, key: "Insert command line options and files from a file." }, - File_change_detected_Starting_incremental_compilation: { code: 6032, category: 2, key: "File change detected. Starting incremental compilation..." }, - KIND: { code: 6034, category: 2, key: "KIND" }, - FILE: { code: 6035, category: 2, key: "FILE" }, - VERSION: { code: 6036, category: 2, key: "VERSION" }, - LOCATION: { code: 6037, category: 2, key: "LOCATION" }, - DIRECTORY: { code: 6038, category: 2, key: "DIRECTORY" }, - Compilation_complete_Watching_for_file_changes: { code: 6042, category: 2, key: "Compilation complete. Watching for file changes." }, - Generates_corresponding_map_file: { code: 6043, category: 2, key: "Generates corresponding '.map' file." }, - Compiler_option_0_expects_an_argument: { code: 6044, category: 1, key: "Compiler option '{0}' expects an argument." }, - Unterminated_quoted_string_in_response_file_0: { code: 6045, category: 1, key: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: 1, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, - Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: 1, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, - Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: 1, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, - Unsupported_locale_0: { code: 6049, category: 1, key: "Unsupported locale '{0}'." }, - Unable_to_open_file_0: { code: 6050, category: 1, key: "Unable to open file '{0}'." }, - Corrupted_locale_file_0: { code: 6051, category: 1, key: "Corrupted locale file {0}." }, - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: 2, key: "Raise error on expressions and declarations with an implied 'any' type." }, - File_0_not_found: { code: 6053, category: 1, key: "File '{0}' not found." }, - File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: 1, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, - Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: 2, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, - Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: 2, key: "Do not emit declarations for code that has an '@internal' annotation." }, - Variable_0_implicitly_has_an_1_type: { code: 7005, category: 1, key: "Variable '{0}' implicitly has an '{1}' type." }, - Parameter_0_implicitly_has_an_1_type: { code: 7006, category: 1, key: "Parameter '{0}' implicitly has an '{1}' type." }, - Member_0_implicitly_has_an_1_type: { code: 7008, category: 1, key: "Member '{0}' implicitly has an '{1}' type." }, - new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: 1, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, - _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: 1, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, - Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: 1, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, - Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: 1, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: 1, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, - Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: 1, key: "Index signature of object type implicitly has an 'any' type." }, - Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: 1, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, - Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: 1, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, - Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: 1, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: 1, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, - _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: 1, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, - _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: 1, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: 1, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - You_cannot_rename_this_element: { code: 8000, category: 1, key: "You cannot rename this element." }, - You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: 1, key: "You cannot rename elements that are defined in the standard TypeScript library." }, - yield_expressions_are_not_currently_supported: { code: 9000, category: 1, key: "'yield' expressions are not currently supported." }, - Generators_are_not_currently_supported: { code: 9001, category: 1, key: "Generators are not currently supported." }, - The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 9002, category: 1, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, - for_of_statements_are_not_currently_supported: { code: 9003, category: 1, key: "'for...of' statements are not currently supported." } + Unterminated_string_literal: { + code: 1002, + category: ts.DiagnosticCategory.Error, + key: "Unterminated string literal." + }, + Identifier_expected: { + code: 1003, + category: ts.DiagnosticCategory.Error, + key: "Identifier expected." + }, + _0_expected: { + code: 1005, + category: ts.DiagnosticCategory.Error, + key: "'{0}' expected." + }, + A_file_cannot_have_a_reference_to_itself: { + code: 1006, + category: ts.DiagnosticCategory.Error, + key: "A file cannot have a reference to itself." + }, + Trailing_comma_not_allowed: { + code: 1009, + category: ts.DiagnosticCategory.Error, + key: "Trailing comma not allowed." + }, + Asterisk_Slash_expected: { + code: 1010, + category: ts.DiagnosticCategory.Error, + key: "'*/' expected." + }, + Unexpected_token: { + code: 1012, + category: ts.DiagnosticCategory.Error, + key: "Unexpected token." + }, + A_rest_parameter_must_be_last_in_a_parameter_list: { + code: 1014, + category: ts.DiagnosticCategory.Error, + key: "A rest parameter must be last in a parameter list." + }, + Parameter_cannot_have_question_mark_and_initializer: { + code: 1015, + category: ts.DiagnosticCategory.Error, + key: "Parameter cannot have question mark and initializer." + }, + A_required_parameter_cannot_follow_an_optional_parameter: { + code: 1016, + category: ts.DiagnosticCategory.Error, + key: "A required parameter cannot follow an optional parameter." + }, + An_index_signature_cannot_have_a_rest_parameter: { + code: 1017, + category: ts.DiagnosticCategory.Error, + key: "An index signature cannot have a rest parameter." + }, + An_index_signature_parameter_cannot_have_an_accessibility_modifier: { + code: 1018, + category: ts.DiagnosticCategory.Error, + key: "An index signature parameter cannot have an accessibility modifier." + }, + An_index_signature_parameter_cannot_have_a_question_mark: { + code: 1019, + category: ts.DiagnosticCategory.Error, + key: "An index signature parameter cannot have a question mark." + }, + An_index_signature_parameter_cannot_have_an_initializer: { + code: 1020, + category: ts.DiagnosticCategory.Error, + key: "An index signature parameter cannot have an initializer." + }, + An_index_signature_must_have_a_type_annotation: { + code: 1021, + category: ts.DiagnosticCategory.Error, + key: "An index signature must have a type annotation." + }, + An_index_signature_parameter_must_have_a_type_annotation: { + code: 1022, + category: ts.DiagnosticCategory.Error, + key: "An index signature parameter must have a type annotation." + }, + An_index_signature_parameter_type_must_be_string_or_number: { + code: 1023, + category: ts.DiagnosticCategory.Error, + key: "An index signature parameter type must be 'string' or 'number'." + }, + A_class_or_interface_declaration_can_only_have_one_extends_clause: { + code: 1024, + category: ts.DiagnosticCategory.Error, + key: "A class or interface declaration can only have one 'extends' clause." + }, + An_extends_clause_must_precede_an_implements_clause: { + code: 1025, + category: ts.DiagnosticCategory.Error, + key: "An 'extends' clause must precede an 'implements' clause." + }, + A_class_can_only_extend_a_single_class: { + code: 1026, + category: ts.DiagnosticCategory.Error, + key: "A class can only extend a single class." + }, + A_class_declaration_can_only_have_one_implements_clause: { + code: 1027, + category: ts.DiagnosticCategory.Error, + key: "A class declaration can only have one 'implements' clause." + }, + Accessibility_modifier_already_seen: { + code: 1028, + category: ts.DiagnosticCategory.Error, + key: "Accessibility modifier already seen." + }, + _0_modifier_must_precede_1_modifier: { + code: 1029, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier must precede '{1}' modifier." + }, + _0_modifier_already_seen: { + code: 1030, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier already seen." + }, + _0_modifier_cannot_appear_on_a_class_element: { + code: 1031, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier cannot appear on a class element." + }, + An_interface_declaration_cannot_have_an_implements_clause: { + code: 1032, + category: ts.DiagnosticCategory.Error, + key: "An interface declaration cannot have an 'implements' clause." + }, + super_must_be_followed_by_an_argument_list_or_member_access: { + code: 1034, + category: ts.DiagnosticCategory.Error, + key: "'super' must be followed by an argument list or member access." + }, + Only_ambient_modules_can_use_quoted_names: { + code: 1035, + category: ts.DiagnosticCategory.Error, + key: "Only ambient modules can use quoted names." + }, + Statements_are_not_allowed_in_ambient_contexts: { + code: 1036, + category: ts.DiagnosticCategory.Error, + key: "Statements are not allowed in ambient contexts." + }, + A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { + code: 1038, + category: ts.DiagnosticCategory.Error, + key: "A 'declare' modifier cannot be used in an already ambient context." + }, + Initializers_are_not_allowed_in_ambient_contexts: { + code: 1039, + category: ts.DiagnosticCategory.Error, + key: "Initializers are not allowed in ambient contexts." + }, + _0_modifier_cannot_appear_on_a_module_element: { + code: 1044, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier cannot appear on a module element." + }, + A_declare_modifier_cannot_be_used_with_an_interface_declaration: { + code: 1045, + category: ts.DiagnosticCategory.Error, + key: "A 'declare' modifier cannot be used with an interface declaration." + }, + A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { + code: 1046, + category: ts.DiagnosticCategory.Error, + key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." + }, + A_rest_parameter_cannot_be_optional: { + code: 1047, + category: ts.DiagnosticCategory.Error, + key: "A rest parameter cannot be optional." + }, + A_rest_parameter_cannot_have_an_initializer: { + code: 1048, + category: ts.DiagnosticCategory.Error, + key: "A rest parameter cannot have an initializer." + }, + A_set_accessor_must_have_exactly_one_parameter: { + code: 1049, + category: ts.DiagnosticCategory.Error, + key: "A 'set' accessor must have exactly one parameter." + }, + A_set_accessor_cannot_have_an_optional_parameter: { + code: 1051, + category: ts.DiagnosticCategory.Error, + key: "A 'set' accessor cannot have an optional parameter." + }, + A_set_accessor_parameter_cannot_have_an_initializer: { + code: 1052, + category: ts.DiagnosticCategory.Error, + key: "A 'set' accessor parameter cannot have an initializer." + }, + A_set_accessor_cannot_have_rest_parameter: { + code: 1053, + category: ts.DiagnosticCategory.Error, + key: "A 'set' accessor cannot have rest parameter." + }, + A_get_accessor_cannot_have_parameters: { + code: 1054, + category: ts.DiagnosticCategory.Error, + key: "A 'get' accessor cannot have parameters." + }, + Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { + code: 1056, + category: ts.DiagnosticCategory.Error, + key: "Accessors are only available when targeting ECMAScript 5 and higher." + }, + Enum_member_must_have_initializer: { + code: 1061, + category: ts.DiagnosticCategory.Error, + key: "Enum member must have initializer." + }, + An_export_assignment_cannot_be_used_in_an_internal_module: { + code: 1063, + category: ts.DiagnosticCategory.Error, + key: "An export assignment cannot be used in an internal module." + }, + Ambient_enum_elements_can_only_have_integer_literal_initializers: { + code: 1066, + category: ts.DiagnosticCategory.Error, + key: "Ambient enum elements can only have integer literal initializers." + }, + Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { + code: 1068, + category: ts.DiagnosticCategory.Error, + key: "Unexpected token. A constructor, method, accessor, or property was expected." + }, + A_declare_modifier_cannot_be_used_with_an_import_declaration: { + code: 1079, + category: ts.DiagnosticCategory.Error, + key: "A 'declare' modifier cannot be used with an import declaration." + }, + Invalid_reference_directive_syntax: { + code: 1084, + category: ts.DiagnosticCategory.Error, + key: "Invalid 'reference' directive syntax." + }, + Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { + code: 1085, + category: ts.DiagnosticCategory.Error, + key: "Octal literals are not available when targeting ECMAScript 5 and higher." + }, + An_accessor_cannot_be_declared_in_an_ambient_context: { + code: 1086, + category: ts.DiagnosticCategory.Error, + key: "An accessor cannot be declared in an ambient context." + }, + _0_modifier_cannot_appear_on_a_constructor_declaration: { + code: 1089, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier cannot appear on a constructor declaration." + }, + _0_modifier_cannot_appear_on_a_parameter: { + code: 1090, + category: ts.DiagnosticCategory.Error, + key: "'{0}' modifier cannot appear on a parameter." + }, + Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { + code: 1091, + category: ts.DiagnosticCategory.Error, + key: "Only a single variable declaration is allowed in a 'for...in' statement." + }, + Type_parameters_cannot_appear_on_a_constructor_declaration: { + code: 1092, + category: ts.DiagnosticCategory.Error, + key: "Type parameters cannot appear on a constructor declaration." + }, + Type_annotation_cannot_appear_on_a_constructor_declaration: { + code: 1093, + category: ts.DiagnosticCategory.Error, + key: "Type annotation cannot appear on a constructor declaration." + }, + An_accessor_cannot_have_type_parameters: { + code: 1094, + category: ts.DiagnosticCategory.Error, + key: "An accessor cannot have type parameters." + }, + A_set_accessor_cannot_have_a_return_type_annotation: { + code: 1095, + category: ts.DiagnosticCategory.Error, + key: "A 'set' accessor cannot have a return type annotation." + }, + An_index_signature_must_have_exactly_one_parameter: { + code: 1096, + category: ts.DiagnosticCategory.Error, + key: "An index signature must have exactly one parameter." + }, + _0_list_cannot_be_empty: { + code: 1097, + category: ts.DiagnosticCategory.Error, + key: "'{0}' list cannot be empty." + }, + Type_parameter_list_cannot_be_empty: { + code: 1098, + category: ts.DiagnosticCategory.Error, + key: "Type parameter list cannot be empty." + }, + Type_argument_list_cannot_be_empty: { + code: 1099, + category: ts.DiagnosticCategory.Error, + key: "Type argument list cannot be empty." + }, + Invalid_use_of_0_in_strict_mode: { + code: 1100, + category: ts.DiagnosticCategory.Error, + key: "Invalid use of '{0}' in strict mode." + }, + with_statements_are_not_allowed_in_strict_mode: { + code: 1101, + category: ts.DiagnosticCategory.Error, + key: "'with' statements are not allowed in strict mode." + }, + delete_cannot_be_called_on_an_identifier_in_strict_mode: { + code: 1102, + category: ts.DiagnosticCategory.Error, + key: "'delete' cannot be called on an identifier in strict mode." + }, + A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { + code: 1104, + category: ts.DiagnosticCategory.Error, + key: "A 'continue' statement can only be used within an enclosing iteration statement." + }, + A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { + code: 1105, + category: ts.DiagnosticCategory.Error, + key: "A 'break' statement can only be used within an enclosing iteration or switch statement." + }, + Jump_target_cannot_cross_function_boundary: { + code: 1107, + category: ts.DiagnosticCategory.Error, + key: "Jump target cannot cross function boundary." + }, + A_return_statement_can_only_be_used_within_a_function_body: { + code: 1108, + category: ts.DiagnosticCategory.Error, + key: "A 'return' statement can only be used within a function body." + }, + Expression_expected: { + code: 1109, + category: ts.DiagnosticCategory.Error, + key: "Expression expected." + }, + Type_expected: { + code: 1110, + category: ts.DiagnosticCategory.Error, + key: "Type expected." + }, + A_class_member_cannot_be_declared_optional: { + code: 1112, + category: ts.DiagnosticCategory.Error, + key: "A class member cannot be declared optional." + }, + A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { + code: 1113, + category: ts.DiagnosticCategory.Error, + key: "A 'default' clause cannot appear more than once in a 'switch' statement." + }, + Duplicate_label_0: { + code: 1114, + category: ts.DiagnosticCategory.Error, + key: "Duplicate label '{0}'" + }, + A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { + code: 1115, + category: ts.DiagnosticCategory.Error, + key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." + }, + A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { + code: 1116, + category: ts.DiagnosticCategory.Error, + key: "A 'break' statement can only jump to a label of an enclosing statement." + }, + An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { + code: 1117, + category: ts.DiagnosticCategory.Error, + key: "An object literal cannot have multiple properties with the same name in strict mode." + }, + An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { + code: 1118, + category: ts.DiagnosticCategory.Error, + key: "An object literal cannot have multiple get/set accessors with the same name." + }, + An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { + code: 1119, + category: ts.DiagnosticCategory.Error, + key: "An object literal cannot have property and accessor with the same name." + }, + An_export_assignment_cannot_have_modifiers: { + code: 1120, + category: ts.DiagnosticCategory.Error, + key: "An export assignment cannot have modifiers." + }, + Octal_literals_are_not_allowed_in_strict_mode: { + code: 1121, + category: ts.DiagnosticCategory.Error, + key: "Octal literals are not allowed in strict mode." + }, + A_tuple_type_element_list_cannot_be_empty: { + code: 1122, + category: ts.DiagnosticCategory.Error, + key: "A tuple type element list cannot be empty." + }, + Variable_declaration_list_cannot_be_empty: { + code: 1123, + category: ts.DiagnosticCategory.Error, + key: "Variable declaration list cannot be empty." + }, + Digit_expected: { + code: 1124, + category: ts.DiagnosticCategory.Error, + key: "Digit expected." + }, + Hexadecimal_digit_expected: { + code: 1125, + category: ts.DiagnosticCategory.Error, + key: "Hexadecimal digit expected." + }, + Unexpected_end_of_text: { + code: 1126, + category: ts.DiagnosticCategory.Error, + key: "Unexpected end of text." + }, + Invalid_character: { + code: 1127, + category: ts.DiagnosticCategory.Error, + key: "Invalid character." + }, + Declaration_or_statement_expected: { + code: 1128, + category: ts.DiagnosticCategory.Error, + key: "Declaration or statement expected." + }, + Statement_expected: { + code: 1129, + category: ts.DiagnosticCategory.Error, + key: "Statement expected." + }, + case_or_default_expected: { + code: 1130, + category: ts.DiagnosticCategory.Error, + key: "'case' or 'default' expected." + }, + Property_or_signature_expected: { + code: 1131, + category: ts.DiagnosticCategory.Error, + key: "Property or signature expected." + }, + Enum_member_expected: { + code: 1132, + category: ts.DiagnosticCategory.Error, + key: "Enum member expected." + }, + Type_reference_expected: { + code: 1133, + category: ts.DiagnosticCategory.Error, + key: "Type reference expected." + }, + Variable_declaration_expected: { + code: 1134, + category: ts.DiagnosticCategory.Error, + key: "Variable declaration expected." + }, + Argument_expression_expected: { + code: 1135, + category: ts.DiagnosticCategory.Error, + key: "Argument expression expected." + }, + Property_assignment_expected: { + code: 1136, + category: ts.DiagnosticCategory.Error, + key: "Property assignment expected." + }, + Expression_or_comma_expected: { + code: 1137, + category: ts.DiagnosticCategory.Error, + key: "Expression or comma expected." + }, + Parameter_declaration_expected: { + code: 1138, + category: ts.DiagnosticCategory.Error, + key: "Parameter declaration expected." + }, + Type_parameter_declaration_expected: { + code: 1139, + category: ts.DiagnosticCategory.Error, + key: "Type parameter declaration expected." + }, + Type_argument_expected: { + code: 1140, + category: ts.DiagnosticCategory.Error, + key: "Type argument expected." + }, + String_literal_expected: { + code: 1141, + category: ts.DiagnosticCategory.Error, + key: "String literal expected." + }, + Line_break_not_permitted_here: { + code: 1142, + category: ts.DiagnosticCategory.Error, + key: "Line break not permitted here." + }, + or_expected: { + code: 1144, + category: ts.DiagnosticCategory.Error, + key: "'{' or ';' expected." + }, + Modifiers_not_permitted_on_index_signature_members: { + code: 1145, + category: ts.DiagnosticCategory.Error, + key: "Modifiers not permitted on index signature members." + }, + Declaration_expected: { + code: 1146, + category: ts.DiagnosticCategory.Error, + key: "Declaration expected." + }, + Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { + code: 1147, + category: ts.DiagnosticCategory.Error, + key: "Import declarations in an internal module cannot reference an external module." + }, + Cannot_compile_external_modules_unless_the_module_flag_is_provided: { + code: 1148, + category: ts.DiagnosticCategory.Error, + key: "Cannot compile external modules unless the '--module' flag is provided." + }, + File_name_0_differs_from_already_included_file_name_1_only_in_casing: { + code: 1149, + category: ts.DiagnosticCategory.Error, + key: "File name '{0}' differs from already included file name '{1}' only in casing" + }, + new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { + code: 1150, + category: ts.DiagnosticCategory.Error, + key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." + }, + var_let_or_const_expected: { + code: 1152, + category: ts.DiagnosticCategory.Error, + key: "'var', 'let' or 'const' expected." + }, + let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { + code: 1153, + category: ts.DiagnosticCategory.Error, + key: "'let' declarations are only available when targeting ECMAScript 6 and higher." + }, + const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { + code: 1154, + category: ts.DiagnosticCategory.Error, + key: "'const' declarations are only available when targeting ECMAScript 6 and higher." + }, + const_declarations_must_be_initialized: { + code: 1155, + category: ts.DiagnosticCategory.Error, + key: "'const' declarations must be initialized" + }, + const_declarations_can_only_be_declared_inside_a_block: { + code: 1156, + category: ts.DiagnosticCategory.Error, + key: "'const' declarations can only be declared inside a block." + }, + let_declarations_can_only_be_declared_inside_a_block: { + code: 1157, + category: ts.DiagnosticCategory.Error, + key: "'let' declarations can only be declared inside a block." + }, + Unterminated_template_literal: { + code: 1160, + category: ts.DiagnosticCategory.Error, + key: "Unterminated template literal." + }, + Unterminated_regular_expression_literal: { + code: 1161, + category: ts.DiagnosticCategory.Error, + key: "Unterminated regular expression literal." + }, + An_object_member_cannot_be_declared_optional: { + code: 1162, + category: ts.DiagnosticCategory.Error, + key: "An object member cannot be declared optional." + }, + yield_expression_must_be_contained_within_a_generator_declaration: { + code: 1163, + category: ts.DiagnosticCategory.Error, + key: "'yield' expression must be contained_within a generator declaration." + }, + Computed_property_names_are_not_allowed_in_enums: { + code: 1164, + category: ts.DiagnosticCategory.Error, + key: "Computed property names are not allowed in enums." + }, + A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { + code: 1165, + category: ts.DiagnosticCategory.Error, + key: "A computed property name in an ambient context must directly refer to a built-in symbol." + }, + A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { + code: 1166, + category: ts.DiagnosticCategory.Error, + key: "A computed property name in a class property declaration must directly refer to a built-in symbol." + }, + Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { + code: 1167, + category: ts.DiagnosticCategory.Error, + key: "Computed property names are only available when targeting ECMAScript 6 and higher." + }, + A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { + code: 1168, + category: ts.DiagnosticCategory.Error, + key: "A computed property name in a method overload must directly refer to a built-in symbol." + }, + A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { + code: 1169, + category: ts.DiagnosticCategory.Error, + key: "A computed property name in an interface must directly refer to a built-in symbol." + }, + A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { + code: 1170, + category: ts.DiagnosticCategory.Error, + key: "A computed property name in a type literal must directly refer to a built-in symbol." + }, + A_comma_expression_is_not_allowed_in_a_computed_property_name: { + code: 1171, + category: ts.DiagnosticCategory.Error, + key: "A comma expression is not allowed in a computed property name." + }, + extends_clause_already_seen: { + code: 1172, + category: ts.DiagnosticCategory.Error, + key: "'extends' clause already seen." + }, + extends_clause_must_precede_implements_clause: { + code: 1173, + category: ts.DiagnosticCategory.Error, + key: "'extends' clause must precede 'implements' clause." + }, + Classes_can_only_extend_a_single_class: { + code: 1174, + category: ts.DiagnosticCategory.Error, + key: "Classes can only extend a single class." + }, + implements_clause_already_seen: { + code: 1175, + category: ts.DiagnosticCategory.Error, + key: "'implements' clause already seen." + }, + Interface_declaration_cannot_have_implements_clause: { + code: 1176, + category: ts.DiagnosticCategory.Error, + key: "Interface declaration cannot have 'implements' clause." + }, + Binary_digit_expected: { + code: 1177, + category: ts.DiagnosticCategory.Error, + key: "Binary digit expected." + }, + Octal_digit_expected: { + code: 1178, + category: ts.DiagnosticCategory.Error, + key: "Octal digit expected." + }, + Unexpected_token_expected: { + code: 1179, + category: ts.DiagnosticCategory.Error, + key: "Unexpected token. '{' expected." + }, + Property_destructuring_pattern_expected: { + code: 1180, + category: ts.DiagnosticCategory.Error, + key: "Property destructuring pattern expected." + }, + Array_element_destructuring_pattern_expected: { + code: 1181, + category: ts.DiagnosticCategory.Error, + key: "Array element destructuring pattern expected." + }, + A_destructuring_declaration_must_have_an_initializer: { + code: 1182, + category: ts.DiagnosticCategory.Error, + key: "A destructuring declaration must have an initializer." + }, + Destructuring_declarations_are_not_allowed_in_ambient_contexts: { + code: 1183, + category: ts.DiagnosticCategory.Error, + key: "Destructuring declarations are not allowed in ambient contexts." + }, + An_implementation_cannot_be_declared_in_ambient_contexts: { + code: 1184, + category: ts.DiagnosticCategory.Error, + key: "An implementation cannot be declared in ambient contexts." + }, + Modifiers_cannot_appear_here: { + code: 1184, + category: ts.DiagnosticCategory.Error, + key: "Modifiers cannot appear here." + }, + Merge_conflict_marker_encountered: { + code: 1185, + category: ts.DiagnosticCategory.Error, + key: "Merge conflict marker encountered." + }, + A_rest_element_cannot_have_an_initializer: { + code: 1186, + category: ts.DiagnosticCategory.Error, + key: "A rest element cannot have an initializer." + }, + A_parameter_property_may_not_be_a_binding_pattern: { + code: 1187, + category: ts.DiagnosticCategory.Error, + key: "A parameter property may not be a binding pattern." + }, + Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { + code: 1188, + category: ts.DiagnosticCategory.Error, + key: "Only a single variable declaration is allowed in a 'for...of' statement." + }, + The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { + code: 1189, + category: ts.DiagnosticCategory.Error, + key: "The variable declaration of a 'for...in' statement cannot have an initializer." + }, + The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { + code: 1190, + category: ts.DiagnosticCategory.Error, + key: "The variable declaration of a 'for...of' statement cannot have an initializer." + }, + An_import_declaration_cannot_have_modifiers: { + code: 1191, + category: ts.DiagnosticCategory.Error, + key: "An import declaration cannot have modifiers." + }, + External_module_0_has_no_default_export: { + code: 1192, + category: ts.DiagnosticCategory.Error, + key: "External module '{0}' has no default export." + }, + An_export_declaration_cannot_have_modifiers: { + code: 1193, + category: ts.DiagnosticCategory.Error, + key: "An export declaration cannot have modifiers." + }, + Export_declarations_are_not_permitted_in_an_internal_module: { + code: 1194, + category: ts.DiagnosticCategory.Error, + key: "Export declarations are not permitted in an internal module." + }, + Catch_clause_variable_name_must_be_an_identifier: { + code: 1195, + category: ts.DiagnosticCategory.Error, + key: "Catch clause variable name must be an identifier." + }, + Catch_clause_variable_cannot_have_a_type_annotation: { + code: 1196, + category: ts.DiagnosticCategory.Error, + key: "Catch clause variable cannot have a type annotation." + }, + Catch_clause_variable_cannot_have_an_initializer: { + code: 1197, + category: ts.DiagnosticCategory.Error, + key: "Catch clause variable cannot have an initializer." + }, + An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: { + code: 1198, + category: ts.DiagnosticCategory.Error, + key: "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive." + }, + Unterminated_Unicode_escape_sequence: { + code: 1199, + category: ts.DiagnosticCategory.Error, + key: "Unterminated Unicode escape sequence." + }, + Line_terminator_not_permitted_before_arrow: { + code: 1200, + category: ts.DiagnosticCategory.Error, + key: "Line terminator not permitted before arrow." + }, + A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration: { + code: 1201, + category: ts.DiagnosticCategory.Error, + key: "A type annotation on an export statement is only allowed in an ambient external module declaration." + }, + Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { + code: 1202, + category: ts.DiagnosticCategory.Error, + key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." + }, + Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { + code: 1203, + category: ts.DiagnosticCategory.Error, + key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." + }, + Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { + code: 1204, + category: ts.DiagnosticCategory.Error, + key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." + }, + Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { + code: 1205, + category: ts.DiagnosticCategory.Error, + key: "Decorators are only available when targeting ECMAScript 5 and higher." + }, + Decorators_are_not_valid_here: { + code: 1206, + category: ts.DiagnosticCategory.Error, + key: "Decorators are not valid here." + }, + Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { + code: 1207, + category: ts.DiagnosticCategory.Error, + key: "Decorators cannot be applied to multiple get/set accessors of the same name." + }, + Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided: { + code: 1208, + category: ts.DiagnosticCategory.Error, + key: "Cannot compile non-external modules when the '--separateCompilation' flag is provided." + }, + Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { + code: 1209, + category: ts.DiagnosticCategory.Error, + key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." + }, + Duplicate_identifier_0: { + code: 2300, + category: ts.DiagnosticCategory.Error, + key: "Duplicate identifier '{0}'." + }, + Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { + code: 2301, + category: ts.DiagnosticCategory.Error, + key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." + }, + Static_members_cannot_reference_class_type_parameters: { + code: 2302, + category: ts.DiagnosticCategory.Error, + key: "Static members cannot reference class type parameters." + }, + Circular_definition_of_import_alias_0: { + code: 2303, + category: ts.DiagnosticCategory.Error, + key: "Circular definition of import alias '{0}'." + }, + Cannot_find_name_0: { + code: 2304, + category: ts.DiagnosticCategory.Error, + key: "Cannot find name '{0}'." + }, + Module_0_has_no_exported_member_1: { + code: 2305, + category: ts.DiagnosticCategory.Error, + key: "Module '{0}' has no exported member '{1}'." + }, + File_0_is_not_an_external_module: { + code: 2306, + category: ts.DiagnosticCategory.Error, + key: "File '{0}' is not an external module." + }, + Cannot_find_external_module_0: { + code: 2307, + category: ts.DiagnosticCategory.Error, + key: "Cannot find external module '{0}'." + }, + A_module_cannot_have_more_than_one_export_assignment: { + code: 2308, + category: ts.DiagnosticCategory.Error, + key: "A module cannot have more than one export assignment." + }, + An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { + code: 2309, + category: ts.DiagnosticCategory.Error, + key: "An export assignment cannot be used in a module with other exported elements." + }, + Type_0_recursively_references_itself_as_a_base_type: { + code: 2310, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' recursively references itself as a base type." + }, + A_class_may_only_extend_another_class: { + code: 2311, + category: ts.DiagnosticCategory.Error, + key: "A class may only extend another class." + }, + An_interface_may_only_extend_a_class_or_another_interface: { + code: 2312, + category: ts.DiagnosticCategory.Error, + key: "An interface may only extend a class or another interface." + }, + Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { + code: 2313, + category: ts.DiagnosticCategory.Error, + key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." + }, + Generic_type_0_requires_1_type_argument_s: { + code: 2314, + category: ts.DiagnosticCategory.Error, + key: "Generic type '{0}' requires {1} type argument(s)." + }, + Type_0_is_not_generic: { + code: 2315, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' is not generic." + }, + Global_type_0_must_be_a_class_or_interface_type: { + code: 2316, + category: ts.DiagnosticCategory.Error, + key: "Global type '{0}' must be a class or interface type." + }, + Global_type_0_must_have_1_type_parameter_s: { + code: 2317, + category: ts.DiagnosticCategory.Error, + key: "Global type '{0}' must have {1} type parameter(s)." + }, + Cannot_find_global_type_0: { + code: 2318, + category: ts.DiagnosticCategory.Error, + key: "Cannot find global type '{0}'." + }, + Named_property_0_of_types_1_and_2_are_not_identical: { + code: 2319, + category: ts.DiagnosticCategory.Error, + key: "Named property '{0}' of types '{1}' and '{2}' are not identical." + }, + Interface_0_cannot_simultaneously_extend_types_1_and_2: { + code: 2320, + category: ts.DiagnosticCategory.Error, + key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." + }, + Excessive_stack_depth_comparing_types_0_and_1: { + code: 2321, + category: ts.DiagnosticCategory.Error, + key: "Excessive stack depth comparing types '{0}' and '{1}'." + }, + Type_0_is_not_assignable_to_type_1: { + code: 2322, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' is not assignable to type '{1}'." + }, + Property_0_is_missing_in_type_1: { + code: 2324, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is missing in type '{1}'." + }, + Property_0_is_private_in_type_1_but_not_in_type_2: { + code: 2325, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is private in type '{1}' but not in type '{2}'." + }, + Types_of_property_0_are_incompatible: { + code: 2326, + category: ts.DiagnosticCategory.Error, + key: "Types of property '{0}' are incompatible." + }, + Property_0_is_optional_in_type_1_but_required_in_type_2: { + code: 2327, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." + }, + Types_of_parameters_0_and_1_are_incompatible: { + code: 2328, + category: ts.DiagnosticCategory.Error, + key: "Types of parameters '{0}' and '{1}' are incompatible." + }, + Index_signature_is_missing_in_type_0: { + code: 2329, + category: ts.DiagnosticCategory.Error, + key: "Index signature is missing in type '{0}'." + }, + Index_signatures_are_incompatible: { + code: 2330, + category: ts.DiagnosticCategory.Error, + key: "Index signatures are incompatible." + }, + this_cannot_be_referenced_in_a_module_body: { + code: 2331, + category: ts.DiagnosticCategory.Error, + key: "'this' cannot be referenced in a module body." + }, + this_cannot_be_referenced_in_current_location: { + code: 2332, + category: ts.DiagnosticCategory.Error, + key: "'this' cannot be referenced in current location." + }, + this_cannot_be_referenced_in_constructor_arguments: { + code: 2333, + category: ts.DiagnosticCategory.Error, + key: "'this' cannot be referenced in constructor arguments." + }, + this_cannot_be_referenced_in_a_static_property_initializer: { + code: 2334, + category: ts.DiagnosticCategory.Error, + key: "'this' cannot be referenced in a static property initializer." + }, + super_can_only_be_referenced_in_a_derived_class: { + code: 2335, + category: ts.DiagnosticCategory.Error, + key: "'super' can only be referenced in a derived class." + }, + super_cannot_be_referenced_in_constructor_arguments: { + code: 2336, + category: ts.DiagnosticCategory.Error, + key: "'super' cannot be referenced in constructor arguments." + }, + Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { + code: 2337, + category: ts.DiagnosticCategory.Error, + key: "Super calls are not permitted outside constructors or in nested functions inside constructors" + }, + super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { + code: 2338, + category: ts.DiagnosticCategory.Error, + key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" + }, + Property_0_does_not_exist_on_type_1: { + code: 2339, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' does not exist on type '{1}'." + }, + Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { + code: 2340, + category: ts.DiagnosticCategory.Error, + key: "Only public and protected methods of the base class are accessible via the 'super' keyword" + }, + Property_0_is_private_and_only_accessible_within_class_1: { + code: 2341, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is private and only accessible within class '{1}'." + }, + An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { + code: 2342, + category: ts.DiagnosticCategory.Error, + key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." + }, + Type_0_does_not_satisfy_the_constraint_1: { + code: 2344, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' does not satisfy the constraint '{1}'." + }, + Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { + code: 2345, + category: ts.DiagnosticCategory.Error, + key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." + }, + Supplied_parameters_do_not_match_any_signature_of_call_target: { + code: 2346, + category: ts.DiagnosticCategory.Error, + key: "Supplied parameters do not match any signature of call target." + }, + Untyped_function_calls_may_not_accept_type_arguments: { + code: 2347, + category: ts.DiagnosticCategory.Error, + key: "Untyped function calls may not accept type arguments." + }, + Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { + code: 2348, + category: ts.DiagnosticCategory.Error, + key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" + }, + Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { + code: 2349, + category: ts.DiagnosticCategory.Error, + key: "Cannot invoke an expression whose type lacks a call signature." + }, + Only_a_void_function_can_be_called_with_the_new_keyword: { + code: 2350, + category: ts.DiagnosticCategory.Error, + key: "Only a void function can be called with the 'new' keyword." + }, + Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { + code: 2351, + category: ts.DiagnosticCategory.Error, + key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." + }, + Neither_type_0_nor_type_1_is_assignable_to_the_other: { + code: 2352, + category: ts.DiagnosticCategory.Error, + key: "Neither type '{0}' nor type '{1}' is assignable to the other." + }, + No_best_common_type_exists_among_return_expressions: { + code: 2354, + category: ts.DiagnosticCategory.Error, + key: "No best common type exists among return expressions." + }, + A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { + code: 2355, + category: ts.DiagnosticCategory.Error, + key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." + }, + An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { + code: 2356, + category: ts.DiagnosticCategory.Error, + key: "An arithmetic operand must be of type 'any', 'number' or an enum type." + }, + The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { + code: 2357, + category: ts.DiagnosticCategory.Error, + key: "The operand of an increment or decrement operator must be a variable, property or indexer." + }, + The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { + code: 2358, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." + }, + The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { + code: 2359, + category: ts.DiagnosticCategory.Error, + key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." + }, + The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { + code: 2360, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." + }, + The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { + code: 2361, + category: ts.DiagnosticCategory.Error, + key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" + }, + The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { + code: 2362, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." + }, + The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { + code: 2363, + category: ts.DiagnosticCategory.Error, + key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." + }, + Invalid_left_hand_side_of_assignment_expression: { + code: 2364, + category: ts.DiagnosticCategory.Error, + key: "Invalid left-hand side of assignment expression." + }, + Operator_0_cannot_be_applied_to_types_1_and_2: { + code: 2365, + category: ts.DiagnosticCategory.Error, + key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." + }, + Type_parameter_name_cannot_be_0: { + code: 2368, + category: ts.DiagnosticCategory.Error, + key: "Type parameter name cannot be '{0}'" + }, + A_parameter_property_is_only_allowed_in_a_constructor_implementation: { + code: 2369, + category: ts.DiagnosticCategory.Error, + key: "A parameter property is only allowed in a constructor implementation." + }, + A_rest_parameter_must_be_of_an_array_type: { + code: 2370, + category: ts.DiagnosticCategory.Error, + key: "A rest parameter must be of an array type." + }, + A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { + code: 2371, + category: ts.DiagnosticCategory.Error, + key: "A parameter initializer is only allowed in a function or constructor implementation." + }, + Parameter_0_cannot_be_referenced_in_its_initializer: { + code: 2372, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' cannot be referenced in its initializer." + }, + Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { + code: 2373, + category: ts.DiagnosticCategory.Error, + key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." + }, + Duplicate_string_index_signature: { + code: 2374, + category: ts.DiagnosticCategory.Error, + key: "Duplicate string index signature." + }, + Duplicate_number_index_signature: { + code: 2375, + category: ts.DiagnosticCategory.Error, + key: "Duplicate number index signature." + }, + A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { + code: 2376, + category: ts.DiagnosticCategory.Error, + key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." + }, + Constructors_for_derived_classes_must_contain_a_super_call: { + code: 2377, + category: ts.DiagnosticCategory.Error, + key: "Constructors for derived classes must contain a 'super' call." + }, + A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { + code: 2378, + category: ts.DiagnosticCategory.Error, + key: "A 'get' accessor must return a value or consist of a single 'throw' statement." + }, + Getter_and_setter_accessors_do_not_agree_in_visibility: { + code: 2379, + category: ts.DiagnosticCategory.Error, + key: "Getter and setter accessors do not agree in visibility." + }, + get_and_set_accessor_must_have_the_same_type: { + code: 2380, + category: ts.DiagnosticCategory.Error, + key: "'get' and 'set' accessor must have the same type." + }, + A_signature_with_an_implementation_cannot_use_a_string_literal_type: { + code: 2381, + category: ts.DiagnosticCategory.Error, + key: "A signature with an implementation cannot use a string literal type." + }, + Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { + code: 2382, + category: ts.DiagnosticCategory.Error, + key: "Specialized overload signature is not assignable to any non-specialized signature." + }, + Overload_signatures_must_all_be_exported_or_not_exported: { + code: 2383, + category: ts.DiagnosticCategory.Error, + key: "Overload signatures must all be exported or not exported." + }, + Overload_signatures_must_all_be_ambient_or_non_ambient: { + code: 2384, + category: ts.DiagnosticCategory.Error, + key: "Overload signatures must all be ambient or non-ambient." + }, + Overload_signatures_must_all_be_public_private_or_protected: { + code: 2385, + category: ts.DiagnosticCategory.Error, + key: "Overload signatures must all be public, private or protected." + }, + Overload_signatures_must_all_be_optional_or_required: { + code: 2386, + category: ts.DiagnosticCategory.Error, + key: "Overload signatures must all be optional or required." + }, + Function_overload_must_be_static: { + code: 2387, + category: ts.DiagnosticCategory.Error, + key: "Function overload must be static." + }, + Function_overload_must_not_be_static: { + code: 2388, + category: ts.DiagnosticCategory.Error, + key: "Function overload must not be static." + }, + Function_implementation_name_must_be_0: { + code: 2389, + category: ts.DiagnosticCategory.Error, + key: "Function implementation name must be '{0}'." + }, + Constructor_implementation_is_missing: { + code: 2390, + category: ts.DiagnosticCategory.Error, + key: "Constructor implementation is missing." + }, + Function_implementation_is_missing_or_not_immediately_following_the_declaration: { + code: 2391, + category: ts.DiagnosticCategory.Error, + key: "Function implementation is missing or not immediately following the declaration." + }, + Multiple_constructor_implementations_are_not_allowed: { + code: 2392, + category: ts.DiagnosticCategory.Error, + key: "Multiple constructor implementations are not allowed." + }, + Duplicate_function_implementation: { + code: 2393, + category: ts.DiagnosticCategory.Error, + key: "Duplicate function implementation." + }, + Overload_signature_is_not_compatible_with_function_implementation: { + code: 2394, + category: ts.DiagnosticCategory.Error, + key: "Overload signature is not compatible with function implementation." + }, + Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { + code: 2395, + category: ts.DiagnosticCategory.Error, + key: "Individual declarations in merged declaration {0} must be all exported or all local." + }, + Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { + code: 2396, + category: ts.DiagnosticCategory.Error, + key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." + }, + Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { + code: 2399, + category: ts.DiagnosticCategory.Error, + key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." + }, + Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { + code: 2400, + category: ts.DiagnosticCategory.Error, + key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." + }, + Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { + code: 2401, + category: ts.DiagnosticCategory.Error, + key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." + }, + Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { + code: 2402, + category: ts.DiagnosticCategory.Error, + key: "Expression resolves to '_super' that compiler uses to capture base class reference." + }, + Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { + code: 2403, + category: ts.DiagnosticCategory.Error, + key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." + }, + The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { + code: 2404, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...in' statement cannot use a type annotation." + }, + The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { + code: 2405, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." + }, + Invalid_left_hand_side_in_for_in_statement: { + code: 2406, + category: ts.DiagnosticCategory.Error, + key: "Invalid left-hand side in 'for...in' statement." + }, + The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { + code: 2407, + category: ts.DiagnosticCategory.Error, + key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." + }, + Setters_cannot_return_a_value: { + code: 2408, + category: ts.DiagnosticCategory.Error, + key: "Setters cannot return a value." + }, + Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { + code: 2409, + category: ts.DiagnosticCategory.Error, + key: "Return type of constructor signature must be assignable to the instance type of the class" + }, + All_symbols_within_a_with_block_will_be_resolved_to_any: { + code: 2410, + category: ts.DiagnosticCategory.Error, + key: "All symbols within a 'with' block will be resolved to 'any'." + }, + Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { + code: 2411, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." + }, + Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { + code: 2412, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." + }, + Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { + code: 2413, + category: ts.DiagnosticCategory.Error, + key: "Numeric index type '{0}' is not assignable to string index type '{1}'." + }, + Class_name_cannot_be_0: { + code: 2414, + category: ts.DiagnosticCategory.Error, + key: "Class name cannot be '{0}'" + }, + Class_0_incorrectly_extends_base_class_1: { + code: 2415, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' incorrectly extends base class '{1}'." + }, + Class_static_side_0_incorrectly_extends_base_class_static_side_1: { + code: 2417, + category: ts.DiagnosticCategory.Error, + key: "Class static side '{0}' incorrectly extends base class static side '{1}'." + }, + Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { + code: 2419, + category: ts.DiagnosticCategory.Error, + key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." + }, + Class_0_incorrectly_implements_interface_1: { + code: 2420, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' incorrectly implements interface '{1}'." + }, + A_class_may_only_implement_another_class_or_interface: { + code: 2422, + category: ts.DiagnosticCategory.Error, + key: "A class may only implement another class or interface." + }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { + code: 2423, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." + }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { + code: 2424, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." + }, + Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { + code: 2425, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." + }, + Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { + code: 2426, + category: ts.DiagnosticCategory.Error, + key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." + }, + Interface_name_cannot_be_0: { + code: 2427, + category: ts.DiagnosticCategory.Error, + key: "Interface name cannot be '{0}'" + }, + All_declarations_of_an_interface_must_have_identical_type_parameters: { + code: 2428, + category: ts.DiagnosticCategory.Error, + key: "All declarations of an interface must have identical type parameters." + }, + Interface_0_incorrectly_extends_interface_1: { + code: 2430, + category: ts.DiagnosticCategory.Error, + key: "Interface '{0}' incorrectly extends interface '{1}'." + }, + Enum_name_cannot_be_0: { + code: 2431, + category: ts.DiagnosticCategory.Error, + key: "Enum name cannot be '{0}'" + }, + In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { + code: 2432, + category: ts.DiagnosticCategory.Error, + key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." + }, + A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { + code: 2433, + category: ts.DiagnosticCategory.Error, + key: "A module declaration cannot be in a different file from a class or function with which it is merged" + }, + A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { + code: 2434, + category: ts.DiagnosticCategory.Error, + key: "A module declaration cannot be located prior to a class or function with which it is merged" + }, + Ambient_external_modules_cannot_be_nested_in_other_modules: { + code: 2435, + category: ts.DiagnosticCategory.Error, + key: "Ambient external modules cannot be nested in other modules." + }, + Ambient_external_module_declaration_cannot_specify_relative_module_name: { + code: 2436, + category: ts.DiagnosticCategory.Error, + key: "Ambient external module declaration cannot specify relative module name." + }, + Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { + code: 2437, + category: ts.DiagnosticCategory.Error, + key: "Module '{0}' is hidden by a local declaration with the same name" + }, + Import_name_cannot_be_0: { + code: 2438, + category: ts.DiagnosticCategory.Error, + key: "Import name cannot be '{0}'" + }, + Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { + code: 2439, + category: ts.DiagnosticCategory.Error, + key: "Import or export declaration in an ambient external module declaration cannot reference external module through relative external module name." + }, + Import_declaration_conflicts_with_local_declaration_of_0: { + code: 2440, + category: ts.DiagnosticCategory.Error, + key: "Import declaration conflicts with local declaration of '{0}'" + }, + Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { + code: 2441, + category: ts.DiagnosticCategory.Error, + key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." + }, + Types_have_separate_declarations_of_a_private_property_0: { + code: 2442, + category: ts.DiagnosticCategory.Error, + key: "Types have separate declarations of a private property '{0}'." + }, + Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { + code: 2443, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." + }, + Property_0_is_protected_in_type_1_but_public_in_type_2: { + code: 2444, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." + }, + Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { + code: 2445, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." + }, + Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { + code: 2446, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." + }, + The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { + code: 2447, + category: ts.DiagnosticCategory.Error, + key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." + }, + Block_scoped_variable_0_used_before_its_declaration: { + code: 2448, + category: ts.DiagnosticCategory.Error, + key: "Block-scoped variable '{0}' used before its declaration." + }, + The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { + code: 2449, + category: ts.DiagnosticCategory.Error, + key: "The operand of an increment or decrement operator cannot be a constant." + }, + Left_hand_side_of_assignment_expression_cannot_be_a_constant: { + code: 2450, + category: ts.DiagnosticCategory.Error, + key: "Left-hand side of assignment expression cannot be a constant." + }, + Cannot_redeclare_block_scoped_variable_0: { + code: 2451, + category: ts.DiagnosticCategory.Error, + key: "Cannot redeclare block-scoped variable '{0}'." + }, + An_enum_member_cannot_have_a_numeric_name: { + code: 2452, + category: ts.DiagnosticCategory.Error, + key: "An enum member cannot have a numeric name." + }, + The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { + code: 2453, + category: ts.DiagnosticCategory.Error, + key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." + }, + Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { + code: 2455, + category: ts.DiagnosticCategory.Error, + key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." + }, + Type_alias_0_circularly_references_itself: { + code: 2456, + category: ts.DiagnosticCategory.Error, + key: "Type alias '{0}' circularly references itself." + }, + Type_alias_name_cannot_be_0: { + code: 2457, + category: ts.DiagnosticCategory.Error, + key: "Type alias name cannot be '{0}'" + }, + An_AMD_module_cannot_have_multiple_name_assignments: { + code: 2458, + category: ts.DiagnosticCategory.Error, + key: "An AMD module cannot have multiple name assignments." + }, + Type_0_has_no_property_1_and_no_string_index_signature: { + code: 2459, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' has no property '{1}' and no string index signature." + }, + Type_0_has_no_property_1: { + code: 2460, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' has no property '{1}'." + }, + Type_0_is_not_an_array_type: { + code: 2461, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' is not an array type." + }, + A_rest_element_must_be_last_in_an_array_destructuring_pattern: { + code: 2462, + category: ts.DiagnosticCategory.Error, + key: "A rest element must be last in an array destructuring pattern" + }, + A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { + code: 2463, + category: ts.DiagnosticCategory.Error, + key: "A binding pattern parameter cannot be optional in an implementation signature." + }, + A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { + code: 2464, + category: ts.DiagnosticCategory.Error, + key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." + }, + this_cannot_be_referenced_in_a_computed_property_name: { + code: 2465, + category: ts.DiagnosticCategory.Error, + key: "'this' cannot be referenced in a computed property name." + }, + super_cannot_be_referenced_in_a_computed_property_name: { + code: 2466, + category: ts.DiagnosticCategory.Error, + key: "'super' cannot be referenced in a computed property name." + }, + A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { + code: 2467, + category: ts.DiagnosticCategory.Error, + key: "A computed property name cannot reference a type parameter from its containing type." + }, + Cannot_find_global_value_0: { + code: 2468, + category: ts.DiagnosticCategory.Error, + key: "Cannot find global value '{0}'." + }, + The_0_operator_cannot_be_applied_to_type_symbol: { + code: 2469, + category: ts.DiagnosticCategory.Error, + key: "The '{0}' operator cannot be applied to type 'symbol'." + }, + Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { + code: 2470, + category: ts.DiagnosticCategory.Error, + key: "'Symbol' reference does not refer to the global Symbol constructor object." + }, + A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { + code: 2471, + category: ts.DiagnosticCategory.Error, + key: "A computed property name of the form '{0}' must be of type 'symbol'." + }, + Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { + code: 2472, + category: ts.DiagnosticCategory.Error, + key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." + }, + Enum_declarations_must_all_be_const_or_non_const: { + code: 2473, + category: ts.DiagnosticCategory.Error, + key: "Enum declarations must all be const or non-const." + }, + In_const_enum_declarations_member_initializer_must_be_constant_expression: { + code: 2474, + category: ts.DiagnosticCategory.Error, + key: "In 'const' enum declarations member initializer must be constant expression." + }, + const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { + code: 2475, + category: ts.DiagnosticCategory.Error, + key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." + }, + A_const_enum_member_can_only_be_accessed_using_a_string_literal: { + code: 2476, + category: ts.DiagnosticCategory.Error, + key: "A const enum member can only be accessed using a string literal." + }, + const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { + code: 2477, + category: ts.DiagnosticCategory.Error, + key: "'const' enum member initializer was evaluated to a non-finite value." + }, + const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { + code: 2478, + category: ts.DiagnosticCategory.Error, + key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." + }, + Property_0_does_not_exist_on_const_enum_1: { + code: 2479, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' does not exist on 'const' enum '{1}'." + }, + let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { + code: 2480, + category: ts.DiagnosticCategory.Error, + key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." + }, + Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { + code: 2481, + category: ts.DiagnosticCategory.Error, + key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." + }, + The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { + code: 2483, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...of' statement cannot use a type annotation." + }, + Export_declaration_conflicts_with_exported_declaration_of_0: { + code: 2484, + category: ts.DiagnosticCategory.Error, + key: "Export declaration conflicts with exported declaration of '{0}'" + }, + The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant: { + code: 2485, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...of' statement cannot be a previously defined constant." + }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant: { + code: 2486, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...in' statement cannot be a previously defined constant." + }, + Invalid_left_hand_side_in_for_of_statement: { + code: 2487, + category: ts.DiagnosticCategory.Error, + key: "Invalid left-hand side in 'for...of' statement." + }, + The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { + code: 2488, + category: ts.DiagnosticCategory.Error, + key: "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator." + }, + The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method: { + code: 2489, + category: ts.DiagnosticCategory.Error, + key: "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method." + }, + The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property: { + code: 2490, + category: ts.DiagnosticCategory.Error, + key: "The type returned by the 'next()' method of an iterator must have a 'value' property." + }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: { + code: 2491, + category: ts.DiagnosticCategory.Error, + key: "The left-hand side of a 'for...in' statement cannot be a destructuring pattern." + }, + Cannot_redeclare_identifier_0_in_catch_clause: { + code: 2492, + category: ts.DiagnosticCategory.Error, + key: "Cannot redeclare identifier '{0}' in catch clause" + }, + Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2: { + code: 2493, + category: ts.DiagnosticCategory.Error, + key: "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'." + }, + Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: { + code: 2494, + category: ts.DiagnosticCategory.Error, + key: "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher." + }, + Type_0_is_not_an_array_type_or_a_string_type: { + code: 2495, + category: ts.DiagnosticCategory.Error, + key: "Type '{0}' is not an array type or a string type." + }, + The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { + code: 2496, + category: ts.DiagnosticCategory.Error, + key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." + }, + External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { + code: 2497, + category: ts.DiagnosticCategory.Error, + key: "External module '{0}' resolves to a non-module entity and cannot be imported using this construct." + }, + External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { + code: 2498, + category: ts.DiagnosticCategory.Error, + key: "External module '{0}' uses 'export =' and cannot be used with 'export *'." + }, + An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: { + code: 2499, + category: ts.DiagnosticCategory.Error, + key: "An interface can only extend an identifier/qualified-name with optional type arguments." + }, + A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: { + code: 2500, + category: ts.DiagnosticCategory.Error, + key: "A class can only implement an identifier/qualified-name with optional type arguments." + }, + Import_declaration_0_is_using_private_name_1: { + code: 4000, + category: ts.DiagnosticCategory.Error, + key: "Import declaration '{0}' is using private name '{1}'." + }, + Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { + code: 4002, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of exported class has or is using private name '{1}'." + }, + Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { + code: 4004, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." + }, + Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { + code: 4006, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." + }, + Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { + code: 4008, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." + }, + Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { + code: 4010, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." + }, + Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { + code: 4012, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." + }, + Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { + code: 4014, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." + }, + Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { + code: 4016, + category: ts.DiagnosticCategory.Error, + key: "Type parameter '{0}' of exported function has or is using private name '{1}'." + }, + Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { + code: 4019, + category: ts.DiagnosticCategory.Error, + key: "Implements clause of exported class '{0}' has or is using private name '{1}'." + }, + Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { + code: 4020, + category: ts.DiagnosticCategory.Error, + key: "Extends clause of exported class '{0}' has or is using private name '{1}'." + }, + Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { + code: 4022, + category: ts.DiagnosticCategory.Error, + key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." + }, + Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4023, + category: ts.DiagnosticCategory.Error, + key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." + }, + Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { + code: 4024, + category: ts.DiagnosticCategory.Error, + key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." + }, + Exported_variable_0_has_or_is_using_private_name_1: { + code: 4025, + category: ts.DiagnosticCategory.Error, + key: "Exported variable '{0}' has or is using private name '{1}'." + }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4026, + category: ts.DiagnosticCategory.Error, + key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." + }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4027, + category: ts.DiagnosticCategory.Error, + key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." + }, + Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { + code: 4028, + category: ts.DiagnosticCategory.Error, + key: "Public static property '{0}' of exported class has or is using private name '{1}'." + }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4029, + category: ts.DiagnosticCategory.Error, + key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." + }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4030, + category: ts.DiagnosticCategory.Error, + key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." + }, + Public_property_0_of_exported_class_has_or_is_using_private_name_1: { + code: 4031, + category: ts.DiagnosticCategory.Error, + key: "Public property '{0}' of exported class has or is using private name '{1}'." + }, + Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { + code: 4032, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." + }, + Property_0_of_exported_interface_has_or_is_using_private_name_1: { + code: 4033, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' of exported interface has or is using private name '{1}'." + }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4034, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { + code: 4035, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." + }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4036, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { + code: 4037, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." + }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { + code: 4038, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." + }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { + code: 4039, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { + code: 4040, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static property getter from exported class has or is using private name '{0}'." + }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { + code: 4041, + category: ts.DiagnosticCategory.Error, + key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." + }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { + code: 4042, + category: ts.DiagnosticCategory.Error, + key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { + code: 4043, + category: ts.DiagnosticCategory.Error, + key: "Return type of public property getter from exported class has or is using private name '{0}'." + }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { + code: 4044, + category: ts.DiagnosticCategory.Error, + key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { + code: 4045, + category: ts.DiagnosticCategory.Error, + key: "Return type of constructor signature from exported interface has or is using private name '{0}'." + }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { + code: 4046, + category: ts.DiagnosticCategory.Error, + key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { + code: 4047, + category: ts.DiagnosticCategory.Error, + key: "Return type of call signature from exported interface has or is using private name '{0}'." + }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { + code: 4048, + category: ts.DiagnosticCategory.Error, + key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { + code: 4049, + category: ts.DiagnosticCategory.Error, + key: "Return type of index signature from exported interface has or is using private name '{0}'." + }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { + code: 4050, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." + }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { + code: 4051, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { + code: 4052, + category: ts.DiagnosticCategory.Error, + key: "Return type of public static method from exported class has or is using private name '{0}'." + }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { + code: 4053, + category: ts.DiagnosticCategory.Error, + key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." + }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { + code: 4054, + category: ts.DiagnosticCategory.Error, + key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { + code: 4055, + category: ts.DiagnosticCategory.Error, + key: "Return type of public method from exported class has or is using private name '{0}'." + }, + Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { + code: 4056, + category: ts.DiagnosticCategory.Error, + key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { + code: 4057, + category: ts.DiagnosticCategory.Error, + key: "Return type of method from exported interface has or is using private name '{0}'." + }, + Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { + code: 4058, + category: ts.DiagnosticCategory.Error, + key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." + }, + Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { + code: 4059, + category: ts.DiagnosticCategory.Error, + key: "Return type of exported function has or is using name '{0}' from private module '{1}'." + }, + Return_type_of_exported_function_has_or_is_using_private_name_0: { + code: 4060, + category: ts.DiagnosticCategory.Error, + key: "Return type of exported function has or is using private name '{0}'." + }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4061, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." + }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4062, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { + code: 4063, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." + }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { + code: 4064, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { + code: 4065, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." + }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { + code: 4066, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { + code: 4067, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." + }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4068, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." + }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4069, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { + code: 4070, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." + }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4071, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." + }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { + code: 4072, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { + code: 4073, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." + }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { + code: 4074, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { + code: 4075, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." + }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { + code: 4076, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." + }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { + code: 4077, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." + }, + Parameter_0_of_exported_function_has_or_is_using_private_name_1: { + code: 4078, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' of exported function has or is using private name '{1}'." + }, + Exported_type_alias_0_has_or_is_using_private_name_1: { + code: 4081, + category: ts.DiagnosticCategory.Error, + key: "Exported type alias '{0}' has or is using private name '{1}'." + }, + Default_export_of_the_module_has_or_is_using_private_name_0: { + code: 4082, + category: ts.DiagnosticCategory.Error, + key: "Default export of the module has or is using private name '{0}'." + }, + Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher: { + code: 4091, + category: ts.DiagnosticCategory.Error, + key: "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher." + }, + The_current_host_does_not_support_the_0_option: { + code: 5001, + category: ts.DiagnosticCategory.Error, + key: "The current host does not support the '{0}' option." + }, + Cannot_find_the_common_subdirectory_path_for_the_input_files: { + code: 5009, + category: ts.DiagnosticCategory.Error, + key: "Cannot find the common subdirectory path for the input files." + }, + Cannot_read_file_0_Colon_1: { + code: 5012, + category: ts.DiagnosticCategory.Error, + key: "Cannot read file '{0}': {1}" + }, + Unsupported_file_encoding: { + code: 5013, + category: ts.DiagnosticCategory.Error, + key: "Unsupported file encoding." + }, + Unknown_compiler_option_0: { + code: 5023, + category: ts.DiagnosticCategory.Error, + key: "Unknown compiler option '{0}'." + }, + Compiler_option_0_requires_a_value_of_type_1: { + code: 5024, + category: ts.DiagnosticCategory.Error, + key: "Compiler option '{0}' requires a value of type {1}." + }, + Could_not_write_file_0_Colon_1: { + code: 5033, + category: ts.DiagnosticCategory.Error, + key: "Could not write file '{0}': {1}" + }, + Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { + code: 5038, + category: ts.DiagnosticCategory.Error, + key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." + }, + Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { + code: 5039, + category: ts.DiagnosticCategory.Error, + key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." + }, + Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { + code: 5040, + category: ts.DiagnosticCategory.Error, + key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." + }, + Option_noEmit_cannot_be_specified_with_option_declaration: { + code: 5041, + category: ts.DiagnosticCategory.Error, + key: "Option 'noEmit' cannot be specified with option 'declaration'." + }, + Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { + code: 5042, + category: ts.DiagnosticCategory.Error, + key: "Option 'project' cannot be mixed with source files on a command line." + }, + Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { + code: 5043, + category: ts.DiagnosticCategory.Error, + key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." + }, + Option_declaration_cannot_be_specified_with_option_separateCompilation: { + code: 5044, + category: ts.DiagnosticCategory.Error, + key: "Option 'declaration' cannot be specified with option 'separateCompilation'." + }, + Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { + code: 5045, + category: ts.DiagnosticCategory.Error, + key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." + }, + Option_out_cannot_be_specified_with_option_separateCompilation: { + code: 5046, + category: ts.DiagnosticCategory.Error, + key: "Option 'out' cannot be specified with option 'separateCompilation'." + }, + Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { + code: 5047, + category: ts.DiagnosticCategory.Error, + key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." + }, + Concatenate_and_emit_output_to_single_file: { + code: 6001, + category: ts.DiagnosticCategory.Message, + key: "Concatenate and emit output to single file." + }, + Generates_corresponding_d_ts_file: { + code: 6002, + category: ts.DiagnosticCategory.Message, + key: "Generates corresponding '.d.ts' file." + }, + Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { + code: 6003, + category: ts.DiagnosticCategory.Message, + key: "Specifies the location where debugger should locate map files instead of generated locations." + }, + Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { + code: 6004, + category: ts.DiagnosticCategory.Message, + key: "Specifies the location where debugger should locate TypeScript files instead of source locations." + }, + Watch_input_files: { + code: 6005, + category: ts.DiagnosticCategory.Message, + key: "Watch input files." + }, + Redirect_output_structure_to_the_directory: { + code: 6006, + category: ts.DiagnosticCategory.Message, + key: "Redirect output structure to the directory." + }, + Do_not_erase_const_enum_declarations_in_generated_code: { + code: 6007, + category: ts.DiagnosticCategory.Message, + key: "Do not erase const enum declarations in generated code." + }, + Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { + code: 6008, + category: ts.DiagnosticCategory.Message, + key: "Do not emit outputs if any type checking errors were reported." + }, + Do_not_emit_comments_to_output: { + code: 6009, + category: ts.DiagnosticCategory.Message, + key: "Do not emit comments to output." + }, + Do_not_emit_outputs: { + code: 6010, + category: ts.DiagnosticCategory.Message, + key: "Do not emit outputs." + }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { + code: 6015, + category: ts.DiagnosticCategory.Message, + key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" + }, + Specify_module_code_generation_Colon_commonjs_or_amd: { + code: 6016, + category: ts.DiagnosticCategory.Message, + key: "Specify module code generation: 'commonjs' or 'amd'" + }, + Print_this_message: { + code: 6017, + category: ts.DiagnosticCategory.Message, + key: "Print this message." + }, + Print_the_compiler_s_version: { + code: 6019, + category: ts.DiagnosticCategory.Message, + key: "Print the compiler's version." + }, + Compile_the_project_in_the_given_directory: { + code: 6020, + category: ts.DiagnosticCategory.Message, + key: "Compile the project in the given directory." + }, + Syntax_Colon_0: { + code: 6023, + category: ts.DiagnosticCategory.Message, + key: "Syntax: {0}" + }, + options: { + code: 6024, + category: ts.DiagnosticCategory.Message, + key: "options" + }, + file: { + code: 6025, + category: ts.DiagnosticCategory.Message, + key: "file" + }, + Examples_Colon_0: { + code: 6026, + category: ts.DiagnosticCategory.Message, + key: "Examples: {0}" + }, + Options_Colon: { + code: 6027, + category: ts.DiagnosticCategory.Message, + key: "Options:" + }, + Version_0: { + code: 6029, + category: ts.DiagnosticCategory.Message, + key: "Version {0}" + }, + Insert_command_line_options_and_files_from_a_file: { + code: 6030, + category: ts.DiagnosticCategory.Message, + key: "Insert command line options and files from a file." + }, + File_change_detected_Starting_incremental_compilation: { + code: 6032, + category: ts.DiagnosticCategory.Message, + key: "File change detected. Starting incremental compilation..." + }, + KIND: { + code: 6034, + category: ts.DiagnosticCategory.Message, + key: "KIND" + }, + FILE: { + code: 6035, + category: ts.DiagnosticCategory.Message, + key: "FILE" + }, + VERSION: { + code: 6036, + category: ts.DiagnosticCategory.Message, + key: "VERSION" + }, + LOCATION: { + code: 6037, + category: ts.DiagnosticCategory.Message, + key: "LOCATION" + }, + DIRECTORY: { + code: 6038, + category: ts.DiagnosticCategory.Message, + key: "DIRECTORY" + }, + Compilation_complete_Watching_for_file_changes: { + code: 6042, + category: ts.DiagnosticCategory.Message, + key: "Compilation complete. Watching for file changes." + }, + Generates_corresponding_map_file: { + code: 6043, + category: ts.DiagnosticCategory.Message, + key: "Generates corresponding '.map' file." + }, + Compiler_option_0_expects_an_argument: { + code: 6044, + category: ts.DiagnosticCategory.Error, + key: "Compiler option '{0}' expects an argument." + }, + Unterminated_quoted_string_in_response_file_0: { + code: 6045, + category: ts.DiagnosticCategory.Error, + key: "Unterminated quoted string in response file '{0}'." + }, + Argument_for_module_option_must_be_commonjs_or_amd: { + code: 6046, + category: ts.DiagnosticCategory.Error, + key: "Argument for '--module' option must be 'commonjs' or 'amd'." + }, + Argument_for_target_option_must_be_es3_es5_or_es6: { + code: 6047, + category: ts.DiagnosticCategory.Error, + key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." + }, + Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { + code: 6048, + category: ts.DiagnosticCategory.Error, + key: "Locale must be of the form or -. For example '{0}' or '{1}'." + }, + Unsupported_locale_0: { + code: 6049, + category: ts.DiagnosticCategory.Error, + key: "Unsupported locale '{0}'." + }, + Unable_to_open_file_0: { + code: 6050, + category: ts.DiagnosticCategory.Error, + key: "Unable to open file '{0}'." + }, + Corrupted_locale_file_0: { + code: 6051, + category: ts.DiagnosticCategory.Error, + key: "Corrupted locale file {0}." + }, + Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { + code: 6052, + category: ts.DiagnosticCategory.Message, + key: "Raise error on expressions and declarations with an implied 'any' type." + }, + File_0_not_found: { + code: 6053, + category: ts.DiagnosticCategory.Error, + key: "File '{0}' not found." + }, + File_0_must_have_extension_ts_or_d_ts: { + code: 6054, + category: ts.DiagnosticCategory.Error, + key: "File '{0}' must have extension '.ts' or '.d.ts'." + }, + Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { + code: 6055, + category: ts.DiagnosticCategory.Message, + key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." + }, + Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { + code: 6056, + category: ts.DiagnosticCategory.Message, + key: "Do not emit declarations for code that has an '@internal' annotation." + }, + Preserve_new_lines_when_emitting_code: { + code: 6057, + category: ts.DiagnosticCategory.Message, + key: "Preserve new-lines when emitting code." + }, + Variable_0_implicitly_has_an_1_type: { + code: 7005, + category: ts.DiagnosticCategory.Error, + key: "Variable '{0}' implicitly has an '{1}' type." + }, + Parameter_0_implicitly_has_an_1_type: { + code: 7006, + category: ts.DiagnosticCategory.Error, + key: "Parameter '{0}' implicitly has an '{1}' type." + }, + Member_0_implicitly_has_an_1_type: { + code: 7008, + category: ts.DiagnosticCategory.Error, + key: "Member '{0}' implicitly has an '{1}' type." + }, + new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { + code: 7009, + category: ts.DiagnosticCategory.Error, + key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." + }, + _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { + code: 7010, + category: ts.DiagnosticCategory.Error, + key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." + }, + Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { + code: 7011, + category: ts.DiagnosticCategory.Error, + key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." + }, + Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { + code: 7013, + category: ts.DiagnosticCategory.Error, + key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." + }, + Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { + code: 7016, + category: ts.DiagnosticCategory.Error, + key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." + }, + Index_signature_of_object_type_implicitly_has_an_any_type: { + code: 7017, + category: ts.DiagnosticCategory.Error, + key: "Index signature of object type implicitly has an 'any' type." + }, + Object_literal_s_property_0_implicitly_has_an_1_type: { + code: 7018, + category: ts.DiagnosticCategory.Error, + key: "Object literal's property '{0}' implicitly has an '{1}' type." + }, + Rest_parameter_0_implicitly_has_an_any_type: { + code: 7019, + category: ts.DiagnosticCategory.Error, + key: "Rest parameter '{0}' implicitly has an 'any[]' type." + }, + Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { + code: 7020, + category: ts.DiagnosticCategory.Error, + key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." + }, + _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { + code: 7021, + category: ts.DiagnosticCategory.Error, + key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." + }, + _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { + code: 7022, + category: ts.DiagnosticCategory.Error, + key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." + }, + _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { + code: 7023, + category: ts.DiagnosticCategory.Error, + key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." + }, + Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { + code: 7024, + category: ts.DiagnosticCategory.Error, + key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." + }, + You_cannot_rename_this_element: { + code: 8000, + category: ts.DiagnosticCategory.Error, + key: "You cannot rename this element." + }, + You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { + code: 8001, + category: ts.DiagnosticCategory.Error, + key: "You cannot rename elements that are defined in the standard TypeScript library." + }, + yield_expressions_are_not_currently_supported: { + code: 9000, + category: ts.DiagnosticCategory.Error, + key: "'yield' expressions are not currently supported." + }, + Generators_are_not_currently_supported: { + code: 9001, + category: ts.DiagnosticCategory.Error, + key: "Generators are not currently supported." + }, + Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { + code: 9002, + category: ts.DiagnosticCategory.Error, + key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." + }, + class_expressions_are_not_currently_supported: { + code: 9003, + category: ts.DiagnosticCategory.Error, + key: "'class' expressions are not currently supported." + }, + class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration: { + code: 9004, + category: ts.DiagnosticCategory.Error, + key: "'class' declarations are only supported directly inside a module or as a top level declaration." + } }; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { var textToToken = { - "any": 110, - "boolean": 111, - "break": 65, - "case": 66, - "catch": 67, - "class": 68, - "continue": 70, - "const": 69, - "constructor": 112, - "debugger": 71, - "declare": 113, - "default": 72, - "delete": 73, - "do": 74, - "else": 75, - "enum": 76, - "export": 77, - "extends": 78, - "false": 79, - "finally": 80, - "for": 81, - "function": 82, - "get": 114, - "if": 83, - "implements": 101, - "import": 84, - "in": 85, - "instanceof": 86, - "interface": 102, - "let": 103, - "module": 115, - "new": 87, - "null": 88, - "number": 117, - "package": 104, - "private": 105, - "protected": 106, - "public": 107, - "require": 116, - "return": 89, - "set": 118, - "static": 108, - "string": 119, - "super": 90, - "switch": 91, - "symbol": 120, - "this": 92, - "throw": 93, - "true": 94, - "try": 95, - "type": 121, - "typeof": 96, - "var": 97, - "void": 98, - "while": 99, - "with": 100, - "yield": 109, - "of": 122, + "any": 112, + "as": 102, + "boolean": 113, + "break": 66, + "case": 67, + "catch": 68, + "class": 69, + "continue": 71, + "const": 70, + "constructor": 114, + "debugger": 72, + "declare": 115, + "default": 73, + "delete": 74, + "do": 75, + "else": 76, + "enum": 77, + "export": 78, + "extends": 79, + "false": 80, + "finally": 81, + "for": 82, + "from": 124, + "function": 83, + "get": 116, + "if": 84, + "implements": 103, + "import": 85, + "in": 86, + "instanceof": 87, + "interface": 104, + "let": 105, + "module": 117, + "new": 88, + "null": 89, + "number": 119, + "package": 106, + "private": 107, + "protected": 108, + "public": 109, + "require": 118, + "return": 90, + "set": 120, + "static": 110, + "string": 121, + "super": 91, + "switch": 92, + "symbol": 122, + "this": 93, + "throw": 94, + "true": 95, + "try": 96, + "type": 123, + "typeof": 97, + "var": 98, + "void": 99, + "while": 100, + "with": 101, + "yield": 111, + "of": 125, "{": 14, "}": 15, "(": 16, @@ -1440,23 +3570,2820 @@ var ts; "||": 49, "?": 50, ":": 51, - "=": 52, - "+=": 53, - "-=": 54, - "*=": 55, - "/=": 56, - "%=": 57, - "<<=": 58, - ">>=": 59, - ">>>=": 60, - "&=": 61, - "|=": 62, - "^=": 63 + "=": 53, + "+=": 54, + "-=": 55, + "*=": 56, + "/=": 57, + "%=": 58, + "<<=": 59, + ">>=": 60, + ">>>=": 61, + "&=": 62, + "|=": 63, + "^=": 64, + "@": 52 }; - var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; - var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; - var unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; - var unicodeES5IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; + var unicodeES3IdentifierStart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 543, + 546, + 563, + 592, + 685, + 688, + 696, + 699, + 705, + 720, + 721, + 736, + 740, + 750, + 750, + 890, + 890, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 974, + 976, + 983, + 986, + 1011, + 1024, + 1153, + 1164, + 1220, + 1223, + 1224, + 1227, + 1228, + 1232, + 1269, + 1272, + 1273, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1488, + 1514, + 1520, + 1522, + 1569, + 1594, + 1600, + 1610, + 1649, + 1747, + 1749, + 1749, + 1765, + 1766, + 1786, + 1788, + 1808, + 1808, + 1810, + 1836, + 1920, + 1957, + 2309, + 2361, + 2365, + 2365, + 2384, + 2384, + 2392, + 2401, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2524, + 2525, + 2527, + 2529, + 2544, + 2545, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2649, + 2652, + 2654, + 2654, + 2674, + 2676, + 2693, + 2699, + 2701, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2749, + 2749, + 2768, + 2768, + 2784, + 2784, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2870, + 2873, + 2877, + 2877, + 2908, + 2909, + 2911, + 2913, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 2997, + 2999, + 3001, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3168, + 3169, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3294, + 3294, + 3296, + 3297, + 3333, + 3340, + 3342, + 3344, + 3346, + 3368, + 3370, + 3385, + 3424, + 3425, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3585, + 3632, + 3634, + 3635, + 3648, + 3654, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3760, + 3762, + 3763, + 3773, + 3773, + 3776, + 3780, + 3782, + 3782, + 3804, + 3805, + 3840, + 3840, + 3904, + 3911, + 3913, + 3946, + 3976, + 3979, + 4096, + 4129, + 4131, + 4135, + 4137, + 4138, + 4176, + 4181, + 4256, + 4293, + 4304, + 4342, + 4352, + 4441, + 4447, + 4514, + 4520, + 4601, + 4608, + 4614, + 4616, + 4678, + 4680, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4742, + 4744, + 4744, + 4746, + 4749, + 4752, + 4782, + 4784, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4814, + 4816, + 4822, + 4824, + 4846, + 4848, + 4878, + 4880, + 4880, + 4882, + 4885, + 4888, + 4894, + 4896, + 4934, + 4936, + 4954, + 5024, + 5108, + 5121, + 5740, + 5743, + 5750, + 5761, + 5786, + 5792, + 5866, + 6016, + 6067, + 6176, + 6263, + 6272, + 6312, + 7680, + 7835, + 7840, + 7929, + 7936, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8319, + 8319, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8497, + 8499, + 8505, + 8544, + 8579, + 12293, + 12295, + 12321, + 12329, + 12337, + 12341, + 12344, + 12346, + 12353, + 12436, + 12445, + 12446, + 12449, + 12538, + 12540, + 12542, + 12549, + 12588, + 12593, + 12686, + 12704, + 12727, + 13312, + 19893, + 19968, + 40869, + 40960, + 42124, + 44032, + 55203, + 63744, + 64045, + 64256, + 64262, + 64275, + 64279, + 64285, + 64285, + 64287, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65136, + 65138, + 65140, + 65140, + 65142, + 65276, + 65313, + 65338, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500, + ]; + var unicodeES3IdentifierPart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 543, + 546, + 563, + 592, + 685, + 688, + 696, + 699, + 705, + 720, + 721, + 736, + 740, + 750, + 750, + 768, + 846, + 864, + 866, + 890, + 890, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 974, + 976, + 983, + 986, + 1011, + 1024, + 1153, + 1155, + 1158, + 1164, + 1220, + 1223, + 1224, + 1227, + 1228, + 1232, + 1269, + 1272, + 1273, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1425, + 1441, + 1443, + 1465, + 1467, + 1469, + 1471, + 1471, + 1473, + 1474, + 1476, + 1476, + 1488, + 1514, + 1520, + 1522, + 1569, + 1594, + 1600, + 1621, + 1632, + 1641, + 1648, + 1747, + 1749, + 1756, + 1759, + 1768, + 1770, + 1773, + 1776, + 1788, + 1808, + 1836, + 1840, + 1866, + 1920, + 1968, + 2305, + 2307, + 2309, + 2361, + 2364, + 2381, + 2384, + 2388, + 2392, + 2403, + 2406, + 2415, + 2433, + 2435, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2492, + 2492, + 2494, + 2500, + 2503, + 2504, + 2507, + 2509, + 2519, + 2519, + 2524, + 2525, + 2527, + 2531, + 2534, + 2545, + 2562, + 2562, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2620, + 2620, + 2622, + 2626, + 2631, + 2632, + 2635, + 2637, + 2649, + 2652, + 2654, + 2654, + 2662, + 2676, + 2689, + 2691, + 2693, + 2699, + 2701, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2748, + 2757, + 2759, + 2761, + 2763, + 2765, + 2768, + 2768, + 2784, + 2784, + 2790, + 2799, + 2817, + 2819, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2870, + 2873, + 2876, + 2883, + 2887, + 2888, + 2891, + 2893, + 2902, + 2903, + 2908, + 2909, + 2911, + 2913, + 2918, + 2927, + 2946, + 2947, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 2997, + 2999, + 3001, + 3006, + 3010, + 3014, + 3016, + 3018, + 3021, + 3031, + 3031, + 3047, + 3055, + 3073, + 3075, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3134, + 3140, + 3142, + 3144, + 3146, + 3149, + 3157, + 3158, + 3168, + 3169, + 3174, + 3183, + 3202, + 3203, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3262, + 3268, + 3270, + 3272, + 3274, + 3277, + 3285, + 3286, + 3294, + 3294, + 3296, + 3297, + 3302, + 3311, + 3330, + 3331, + 3333, + 3340, + 3342, + 3344, + 3346, + 3368, + 3370, + 3385, + 3390, + 3395, + 3398, + 3400, + 3402, + 3405, + 3415, + 3415, + 3424, + 3425, + 3430, + 3439, + 3458, + 3459, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3530, + 3530, + 3535, + 3540, + 3542, + 3542, + 3544, + 3551, + 3570, + 3571, + 3585, + 3642, + 3648, + 3662, + 3664, + 3673, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3769, + 3771, + 3773, + 3776, + 3780, + 3782, + 3782, + 3784, + 3789, + 3792, + 3801, + 3804, + 3805, + 3840, + 3840, + 3864, + 3865, + 3872, + 3881, + 3893, + 3893, + 3895, + 3895, + 3897, + 3897, + 3902, + 3911, + 3913, + 3946, + 3953, + 3972, + 3974, + 3979, + 3984, + 3991, + 3993, + 4028, + 4038, + 4038, + 4096, + 4129, + 4131, + 4135, + 4137, + 4138, + 4140, + 4146, + 4150, + 4153, + 4160, + 4169, + 4176, + 4185, + 4256, + 4293, + 4304, + 4342, + 4352, + 4441, + 4447, + 4514, + 4520, + 4601, + 4608, + 4614, + 4616, + 4678, + 4680, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4742, + 4744, + 4744, + 4746, + 4749, + 4752, + 4782, + 4784, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4814, + 4816, + 4822, + 4824, + 4846, + 4848, + 4878, + 4880, + 4880, + 4882, + 4885, + 4888, + 4894, + 4896, + 4934, + 4936, + 4954, + 4969, + 4977, + 5024, + 5108, + 5121, + 5740, + 5743, + 5750, + 5761, + 5786, + 5792, + 5866, + 6016, + 6099, + 6112, + 6121, + 6160, + 6169, + 6176, + 6263, + 6272, + 6313, + 7680, + 7835, + 7840, + 7929, + 7936, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8255, + 8256, + 8319, + 8319, + 8400, + 8412, + 8417, + 8417, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8497, + 8499, + 8505, + 8544, + 8579, + 12293, + 12295, + 12321, + 12335, + 12337, + 12341, + 12344, + 12346, + 12353, + 12436, + 12441, + 12442, + 12445, + 12446, + 12449, + 12542, + 12549, + 12588, + 12593, + 12686, + 12704, + 12727, + 13312, + 19893, + 19968, + 40869, + 40960, + 42124, + 44032, + 55203, + 63744, + 64045, + 64256, + 64262, + 64275, + 64279, + 64285, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65056, + 65059, + 65075, + 65076, + 65101, + 65103, + 65136, + 65138, + 65140, + 65140, + 65142, + 65276, + 65296, + 65305, + 65313, + 65338, + 65343, + 65343, + 65345, + 65370, + 65381, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500, + ]; + var unicodeES5IdentifierStart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 705, + 710, + 721, + 736, + 740, + 748, + 748, + 750, + 750, + 880, + 884, + 886, + 887, + 890, + 893, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 1013, + 1015, + 1153, + 1162, + 1319, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1488, + 1514, + 1520, + 1522, + 1568, + 1610, + 1646, + 1647, + 1649, + 1747, + 1749, + 1749, + 1765, + 1766, + 1774, + 1775, + 1786, + 1788, + 1791, + 1791, + 1808, + 1808, + 1810, + 1839, + 1869, + 1957, + 1969, + 1969, + 1994, + 2026, + 2036, + 2037, + 2042, + 2042, + 2048, + 2069, + 2074, + 2074, + 2084, + 2084, + 2088, + 2088, + 2112, + 2136, + 2208, + 2208, + 2210, + 2220, + 2308, + 2361, + 2365, + 2365, + 2384, + 2384, + 2392, + 2401, + 2417, + 2423, + 2425, + 2431, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2493, + 2493, + 2510, + 2510, + 2524, + 2525, + 2527, + 2529, + 2544, + 2545, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2649, + 2652, + 2654, + 2654, + 2674, + 2676, + 2693, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2749, + 2749, + 2768, + 2768, + 2784, + 2785, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2869, + 2873, + 2877, + 2877, + 2908, + 2909, + 2911, + 2913, + 2929, + 2929, + 2947, + 2947, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 3001, + 3024, + 3024, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3133, + 3133, + 3160, + 3161, + 3168, + 3169, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3261, + 3261, + 3294, + 3294, + 3296, + 3297, + 3313, + 3314, + 3333, + 3340, + 3342, + 3344, + 3346, + 3386, + 3389, + 3389, + 3406, + 3406, + 3424, + 3425, + 3450, + 3455, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3585, + 3632, + 3634, + 3635, + 3648, + 3654, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3760, + 3762, + 3763, + 3773, + 3773, + 3776, + 3780, + 3782, + 3782, + 3804, + 3807, + 3840, + 3840, + 3904, + 3911, + 3913, + 3948, + 3976, + 3980, + 4096, + 4138, + 4159, + 4159, + 4176, + 4181, + 4186, + 4189, + 4193, + 4193, + 4197, + 4198, + 4206, + 4208, + 4213, + 4225, + 4238, + 4238, + 4256, + 4293, + 4295, + 4295, + 4301, + 4301, + 4304, + 4346, + 4348, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4744, + 4746, + 4749, + 4752, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4822, + 4824, + 4880, + 4882, + 4885, + 4888, + 4954, + 4992, + 5007, + 5024, + 5108, + 5121, + 5740, + 5743, + 5759, + 5761, + 5786, + 5792, + 5866, + 5870, + 5872, + 5888, + 5900, + 5902, + 5905, + 5920, + 5937, + 5952, + 5969, + 5984, + 5996, + 5998, + 6000, + 6016, + 6067, + 6103, + 6103, + 6108, + 6108, + 6176, + 6263, + 6272, + 6312, + 6314, + 6314, + 6320, + 6389, + 6400, + 6428, + 6480, + 6509, + 6512, + 6516, + 6528, + 6571, + 6593, + 6599, + 6656, + 6678, + 6688, + 6740, + 6823, + 6823, + 6917, + 6963, + 6981, + 6987, + 7043, + 7072, + 7086, + 7087, + 7098, + 7141, + 7168, + 7203, + 7245, + 7247, + 7258, + 7293, + 7401, + 7404, + 7406, + 7409, + 7413, + 7414, + 7424, + 7615, + 7680, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8305, + 8305, + 8319, + 8319, + 8336, + 8348, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8505, + 8508, + 8511, + 8517, + 8521, + 8526, + 8526, + 8544, + 8584, + 11264, + 11310, + 11312, + 11358, + 11360, + 11492, + 11499, + 11502, + 11506, + 11507, + 11520, + 11557, + 11559, + 11559, + 11565, + 11565, + 11568, + 11623, + 11631, + 11631, + 11648, + 11670, + 11680, + 11686, + 11688, + 11694, + 11696, + 11702, + 11704, + 11710, + 11712, + 11718, + 11720, + 11726, + 11728, + 11734, + 11736, + 11742, + 11823, + 11823, + 12293, + 12295, + 12321, + 12329, + 12337, + 12341, + 12344, + 12348, + 12353, + 12438, + 12445, + 12447, + 12449, + 12538, + 12540, + 12543, + 12549, + 12589, + 12593, + 12686, + 12704, + 12730, + 12784, + 12799, + 13312, + 19893, + 19968, + 40908, + 40960, + 42124, + 42192, + 42237, + 42240, + 42508, + 42512, + 42527, + 42538, + 42539, + 42560, + 42606, + 42623, + 42647, + 42656, + 42735, + 42775, + 42783, + 42786, + 42888, + 42891, + 42894, + 42896, + 42899, + 42912, + 42922, + 43000, + 43009, + 43011, + 43013, + 43015, + 43018, + 43020, + 43042, + 43072, + 43123, + 43138, + 43187, + 43250, + 43255, + 43259, + 43259, + 43274, + 43301, + 43312, + 43334, + 43360, + 43388, + 43396, + 43442, + 43471, + 43471, + 43520, + 43560, + 43584, + 43586, + 43588, + 43595, + 43616, + 43638, + 43642, + 43642, + 43648, + 43695, + 43697, + 43697, + 43701, + 43702, + 43705, + 43709, + 43712, + 43712, + 43714, + 43714, + 43739, + 43741, + 43744, + 43754, + 43762, + 43764, + 43777, + 43782, + 43785, + 43790, + 43793, + 43798, + 43808, + 43814, + 43816, + 43822, + 43968, + 44002, + 44032, + 55203, + 55216, + 55238, + 55243, + 55291, + 63744, + 64109, + 64112, + 64217, + 64256, + 64262, + 64275, + 64279, + 64285, + 64285, + 64287, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65136, + 65140, + 65142, + 65276, + 65313, + 65338, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500, + ]; + var unicodeES5IdentifierPart = [ + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 705, + 710, + 721, + 736, + 740, + 748, + 748, + 750, + 750, + 768, + 884, + 886, + 887, + 890, + 893, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 1013, + 1015, + 1153, + 1155, + 1159, + 1162, + 1319, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1425, + 1469, + 1471, + 1471, + 1473, + 1474, + 1476, + 1477, + 1479, + 1479, + 1488, + 1514, + 1520, + 1522, + 1552, + 1562, + 1568, + 1641, + 1646, + 1747, + 1749, + 1756, + 1759, + 1768, + 1770, + 1788, + 1791, + 1791, + 1808, + 1866, + 1869, + 1969, + 1984, + 2037, + 2042, + 2042, + 2048, + 2093, + 2112, + 2139, + 2208, + 2208, + 2210, + 2220, + 2276, + 2302, + 2304, + 2403, + 2406, + 2415, + 2417, + 2423, + 2425, + 2431, + 2433, + 2435, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2492, + 2500, + 2503, + 2504, + 2507, + 2510, + 2519, + 2519, + 2524, + 2525, + 2527, + 2531, + 2534, + 2545, + 2561, + 2563, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2620, + 2620, + 2622, + 2626, + 2631, + 2632, + 2635, + 2637, + 2641, + 2641, + 2649, + 2652, + 2654, + 2654, + 2662, + 2677, + 2689, + 2691, + 2693, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2748, + 2757, + 2759, + 2761, + 2763, + 2765, + 2768, + 2768, + 2784, + 2787, + 2790, + 2799, + 2817, + 2819, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2869, + 2873, + 2876, + 2884, + 2887, + 2888, + 2891, + 2893, + 2902, + 2903, + 2908, + 2909, + 2911, + 2915, + 2918, + 2927, + 2929, + 2929, + 2946, + 2947, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 3001, + 3006, + 3010, + 3014, + 3016, + 3018, + 3021, + 3024, + 3024, + 3031, + 3031, + 3046, + 3055, + 3073, + 3075, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3133, + 3140, + 3142, + 3144, + 3146, + 3149, + 3157, + 3158, + 3160, + 3161, + 3168, + 3171, + 3174, + 3183, + 3202, + 3203, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3260, + 3268, + 3270, + 3272, + 3274, + 3277, + 3285, + 3286, + 3294, + 3294, + 3296, + 3299, + 3302, + 3311, + 3313, + 3314, + 3330, + 3331, + 3333, + 3340, + 3342, + 3344, + 3346, + 3386, + 3389, + 3396, + 3398, + 3400, + 3402, + 3406, + 3415, + 3415, + 3424, + 3427, + 3430, + 3439, + 3450, + 3455, + 3458, + 3459, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3530, + 3530, + 3535, + 3540, + 3542, + 3542, + 3544, + 3551, + 3570, + 3571, + 3585, + 3642, + 3648, + 3662, + 3664, + 3673, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3769, + 3771, + 3773, + 3776, + 3780, + 3782, + 3782, + 3784, + 3789, + 3792, + 3801, + 3804, + 3807, + 3840, + 3840, + 3864, + 3865, + 3872, + 3881, + 3893, + 3893, + 3895, + 3895, + 3897, + 3897, + 3902, + 3911, + 3913, + 3948, + 3953, + 3972, + 3974, + 3991, + 3993, + 4028, + 4038, + 4038, + 4096, + 4169, + 4176, + 4253, + 4256, + 4293, + 4295, + 4295, + 4301, + 4301, + 4304, + 4346, + 4348, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4744, + 4746, + 4749, + 4752, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4822, + 4824, + 4880, + 4882, + 4885, + 4888, + 4954, + 4957, + 4959, + 4992, + 5007, + 5024, + 5108, + 5121, + 5740, + 5743, + 5759, + 5761, + 5786, + 5792, + 5866, + 5870, + 5872, + 5888, + 5900, + 5902, + 5908, + 5920, + 5940, + 5952, + 5971, + 5984, + 5996, + 5998, + 6000, + 6002, + 6003, + 6016, + 6099, + 6103, + 6103, + 6108, + 6109, + 6112, + 6121, + 6155, + 6157, + 6160, + 6169, + 6176, + 6263, + 6272, + 6314, + 6320, + 6389, + 6400, + 6428, + 6432, + 6443, + 6448, + 6459, + 6470, + 6509, + 6512, + 6516, + 6528, + 6571, + 6576, + 6601, + 6608, + 6617, + 6656, + 6683, + 6688, + 6750, + 6752, + 6780, + 6783, + 6793, + 6800, + 6809, + 6823, + 6823, + 6912, + 6987, + 6992, + 7001, + 7019, + 7027, + 7040, + 7155, + 7168, + 7223, + 7232, + 7241, + 7245, + 7293, + 7376, + 7378, + 7380, + 7414, + 7424, + 7654, + 7676, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8204, + 8205, + 8255, + 8256, + 8276, + 8276, + 8305, + 8305, + 8319, + 8319, + 8336, + 8348, + 8400, + 8412, + 8417, + 8417, + 8421, + 8432, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8473, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8493, + 8495, + 8505, + 8508, + 8511, + 8517, + 8521, + 8526, + 8526, + 8544, + 8584, + 11264, + 11310, + 11312, + 11358, + 11360, + 11492, + 11499, + 11507, + 11520, + 11557, + 11559, + 11559, + 11565, + 11565, + 11568, + 11623, + 11631, + 11631, + 11647, + 11670, + 11680, + 11686, + 11688, + 11694, + 11696, + 11702, + 11704, + 11710, + 11712, + 11718, + 11720, + 11726, + 11728, + 11734, + 11736, + 11742, + 11744, + 11775, + 11823, + 11823, + 12293, + 12295, + 12321, + 12335, + 12337, + 12341, + 12344, + 12348, + 12353, + 12438, + 12441, + 12442, + 12445, + 12447, + 12449, + 12538, + 12540, + 12543, + 12549, + 12589, + 12593, + 12686, + 12704, + 12730, + 12784, + 12799, + 13312, + 19893, + 19968, + 40908, + 40960, + 42124, + 42192, + 42237, + 42240, + 42508, + 42512, + 42539, + 42560, + 42607, + 42612, + 42621, + 42623, + 42647, + 42655, + 42737, + 42775, + 42783, + 42786, + 42888, + 42891, + 42894, + 42896, + 42899, + 42912, + 42922, + 43000, + 43047, + 43072, + 43123, + 43136, + 43204, + 43216, + 43225, + 43232, + 43255, + 43259, + 43259, + 43264, + 43309, + 43312, + 43347, + 43360, + 43388, + 43392, + 43456, + 43471, + 43481, + 43520, + 43574, + 43584, + 43597, + 43600, + 43609, + 43616, + 43638, + 43642, + 43643, + 43648, + 43714, + 43739, + 43741, + 43744, + 43759, + 43762, + 43766, + 43777, + 43782, + 43785, + 43790, + 43793, + 43798, + 43808, + 43814, + 43816, + 43822, + 43968, + 44010, + 44012, + 44013, + 44016, + 44025, + 44032, + 55203, + 55216, + 55238, + 55243, + 55291, + 63744, + 64109, + 64112, + 64217, + 64256, + 64262, + 64275, + 64279, + 64285, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65024, + 65039, + 65056, + 65062, + 65075, + 65076, + 65101, + 65103, + 65136, + 65140, + 65142, + 65276, + 65296, + 65305, + 65313, + 65338, + 65343, + 65343, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500, + ]; function lookupInUnicodeMap(code, map) { if (code < map[0]) { return false; @@ -1488,9 +6415,9 @@ var ts; } function makeReverseMap(source) { var result = []; - for (var name in source) { - if (source.hasOwnProperty(name)) { - result[source[name]] = name; + for (var name_2 in source) { + if (source.hasOwnProperty(name_2)) { + result[source[name_2]] = name_2; } } return result; @@ -1500,6 +6427,10 @@ var ts; return tokenStrings[t]; } ts.tokenToString = tokenToString; + function stringToToken(s) { + return textToToken[s]; + } + ts.stringToToken = stringToToken; function computeLineStarts(text) { var result = new Array(); var pos = 0; @@ -1557,13 +6488,21 @@ var ts; ts.getLineAndCharacterOfPosition = getLineAndCharacterOfPosition; var hasOwnProperty = Object.prototype.hasOwnProperty; function isWhiteSpace(ch) { - return ch === 32 || ch === 9 || ch === 11 || ch === 12 || - ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || - ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279; + return ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 133 || ch === 5760 || ch >= 8192 && ch <= 8203 || ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279; } ts.isWhiteSpace = isWhiteSpace; function isLineBreak(ch) { - return ch === 10 || ch === 13 || ch === 8232 || ch === 8233 || ch === 133; + // ES5 7.3: + // The ECMAScript line terminator characters are listed in Table 3. + // Table 3 � Line Terminator Characters + // Code Unit Value Name Formal Name + // \u000A Line Feed + // \u000D Carriage Return + // \u2028 Line separator + // \u2029 Paragraph separator + // Only the characters in Table 3 are treated as line terminators. Other new line or line + // breaking characters are treated as white space but not as line terminators. + return ch === 10 || ch === 13 || ch === 8232 || ch === 8233; } ts.isLineBreak = isLineBreak; function isDigit(ch) { @@ -1646,8 +6585,7 @@ var ts; return false; } } - return ch === 61 || - text.charCodeAt(pos + mergeConflictMarkerLength) === 32; + return ch === 61 || text.charCodeAt(pos + mergeConflictMarkerLength) === 32; } } return false; @@ -1666,8 +6604,8 @@ var ts; else { ts.Debug.assert(ch === 61); while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 62 && isConflictMarkerTrivia(text, pos)) { + var ch_1 = text.charCodeAt(pos); + if (ch_1 === 62 && isConflictMarkerTrivia(text, pos)) { break; } pos++; @@ -1682,8 +6620,9 @@ var ts; var ch = text.charCodeAt(pos); switch (ch) { case 13: - if (text.charCodeAt(pos + 1) === 10) + if (text.charCodeAt(pos + 1) === 10) { pos++; + } case 10: pos++; if (trailing) { @@ -1725,9 +6664,14 @@ var ts; } } if (collecting) { - if (!result) + if (!result) { result = []; - result.push({ pos: startPos, end: pos, hasTrailingNewLine: hasTrailingNewLine }); + } + result.push({ + pos: startPos, + end: pos, + hasTrailingNewLine: hasTrailingNewLine + }); } continue; } @@ -1754,15 +6698,11 @@ var ts; } ts.getTrailingCommentRanges = getTrailingCommentRanges; function isIdentifierStart(ch, languageVersion) { - return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || - ch === 36 || ch === 95 || - ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch === 36 || ch === 95 || ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); } ts.isIdentifierStart = isIdentifierStart; function isIdentifierPart(ch, languageVersion) { - return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || - ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || - ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); } ts.isIdentifierPart = isIdentifierPart; function createScanner(languageVersion, skipTrivia, text, onError) { @@ -1773,6 +6713,7 @@ var ts; var token; var tokenValue; var precedingLineBreak; + var hasExtendedUnicodeEscape; var tokenIsUnterminated; function error(message, length) { if (onError) { @@ -1780,14 +6721,10 @@ var ts; } } function isIdentifierStart(ch) { - return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || - ch === 36 || ch === 95 || - ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch === 36 || ch === 95 || ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); } function isIdentifierPart(ch) { - return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || - ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || - ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); } function scanNumber() { var start = pos; @@ -1822,10 +6759,16 @@ var ts; } return +(text.substring(start, pos)); } - function scanHexDigits(count, mustMatchCount) { + function scanExactNumberOfHexDigits(count) { + return scanHexDigits(count, false); + } + function scanMinimumNumberOfHexDigits(count) { + return scanHexDigits(count, true); + } + function scanHexDigits(minCount, scanAsManyAsPossible) { var digits = 0; var value = 0; - while (digits < count || !mustMatchCount) { + while (digits < minCount || scanAsManyAsPossible) { var ch = text.charCodeAt(pos); if (ch >= 48 && ch <= 57) { value = value * 16 + ch - 48; @@ -1842,7 +6785,7 @@ var ts; pos++; digits++; } - if (digits < count) { + if (digits < minCount) { value = -1; } return value; @@ -1955,16 +6898,15 @@ var ts; return "\'"; case 34: return "\""; - case 120: case 117: - var ch = scanHexDigits(ch === 120 ? 2 : 4, true); - if (ch >= 0) { - return String.fromCharCode(ch); - } - else { - error(ts.Diagnostics.Hexadecimal_digit_expected); - return ""; + if (pos < len && text.charCodeAt(pos) === 123) { + hasExtendedUnicodeEscape = true; + pos++; + return scanExtendedUnicodeEscape(); } + return scanHexadecimalEscape(4); + case 120: + return scanHexadecimalEscape(2); case 13: if (pos < len && text.charCodeAt(pos) === 10) { pos++; @@ -1977,11 +6919,57 @@ var ts; return String.fromCharCode(ch); } } + function scanHexadecimalEscape(numDigits) { + var escapedValue = scanExactNumberOfHexDigits(numDigits); + if (escapedValue >= 0) { + return String.fromCharCode(escapedValue); + } + else { + error(ts.Diagnostics.Hexadecimal_digit_expected); + return ""; + } + } + function scanExtendedUnicodeEscape() { + var escapedValue = scanMinimumNumberOfHexDigits(1); + var isInvalidExtendedEscape = false; + if (escapedValue < 0) { + error(ts.Diagnostics.Hexadecimal_digit_expected); + isInvalidExtendedEscape = true; + } + else if (escapedValue > 0x10FFFF) { + error(ts.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive); + isInvalidExtendedEscape = true; + } + if (pos >= len) { + error(ts.Diagnostics.Unexpected_end_of_text); + isInvalidExtendedEscape = true; + } + else if (text.charCodeAt(pos) == 125) { + pos++; + } + else { + error(ts.Diagnostics.Unterminated_Unicode_escape_sequence); + isInvalidExtendedEscape = true; + } + if (isInvalidExtendedEscape) { + return ""; + } + return utf16EncodeAsString(escapedValue); + } + function utf16EncodeAsString(codePoint) { + ts.Debug.assert(0x0 <= codePoint && codePoint <= 0x10FFFF); + if (codePoint <= 65535) { + return String.fromCharCode(codePoint); + } + var codeUnit1 = Math.floor((codePoint - 65536) / 1024) + 0xD800; + var codeUnit2 = ((codePoint - 65536) % 1024) + 0xDC00; + return String.fromCharCode(codeUnit1, codeUnit2); + } function peekUnicodeEscape() { if (pos + 5 < len && text.charCodeAt(pos + 1) === 117) { var start = pos; pos += 2; - var value = scanHexDigits(4, true); + var value = scanExactNumberOfHexDigits(4); pos = start; return value; } @@ -2020,7 +7008,7 @@ var ts; return token = textToToken[tokenValue]; } } - return token = 64; + return token = 65; } function scanBinaryOrOctalDigits(base) { ts.Debug.assert(base !== 2 || base !== 8, "Expected either base 2 or base 8"); @@ -2043,6 +7031,7 @@ var ts; } function scan() { startPos = pos; + hasExtendedUnicodeEscape = false; precedingLineBreak = false; tokenIsUnterminated = false; while (true) { @@ -2098,7 +7087,7 @@ var ts; return token = scanTemplateAndSetTokenValue(); case 37: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 57; + return pos += 2, token = 58; } return pos++, token = 37; case 38: @@ -2106,7 +7095,7 @@ var ts; return pos += 2, token = 48; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 61; + return pos += 2, token = 62; } return pos++, token = 43; case 40: @@ -2115,7 +7104,7 @@ var ts; return pos++, token = 17; case 42: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 55; + return pos += 2, token = 56; } return pos++, token = 35; case 43: @@ -2123,7 +7112,7 @@ var ts; return pos += 2, token = 38; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 53; + return pos += 2, token = 54; } return pos++, token = 33; case 44: @@ -2133,7 +7122,7 @@ var ts; return pos += 2, token = 39; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 54; + return pos += 2, token = 55; } return pos++, token = 34; case 46: @@ -2165,13 +7154,13 @@ var ts; pos += 2; var commentClosed = false; while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 42 && text.charCodeAt(pos + 1) === 47) { + var ch_2 = text.charCodeAt(pos); + if (ch_2 === 42 && text.charCodeAt(pos + 1) === 47) { pos += 2; commentClosed = true; break; } - if (isLineBreak(ch)) { + if (isLineBreak(ch_2)) { precedingLineBreak = true; } pos++; @@ -2188,13 +7177,13 @@ var ts; } } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 56; + return pos += 2, token = 57; } return pos++, token = 36; case 48: if (pos + 2 < len && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { pos += 2; - var value = scanHexDigits(1, false); + var value = scanMinimumNumberOfHexDigits(1); if (value < 0) { error(ts.Diagnostics.Hexadecimal_digit_expected); value = 0; @@ -2253,7 +7242,7 @@ var ts; } if (text.charCodeAt(pos + 1) === 60) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 58; + return pos += 3, token = 59; } return pos += 2, token = 40; } @@ -2280,7 +7269,7 @@ var ts; if (text.charCodeAt(pos + 1) === 62) { return pos += 2, token = 32; } - return pos++, token = 52; + return pos++, token = 53; case 62: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2300,7 +7289,7 @@ var ts; return pos++, token = 19; case 94: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 63; + return pos += 2, token = 64; } return pos++, token = 45; case 123: @@ -2310,18 +7299,20 @@ var ts; return pos += 2, token = 49; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 62; + return pos += 2, token = 63; } return pos++, token = 44; case 125: return pos++, token = 15; case 126: return pos++, token = 47; + case 64: + return pos++, token = 52; case 92: - var ch = peekUnicodeEscape(); - if (ch >= 0 && isIdentifierStart(ch)) { + var cookedChar = peekUnicodeEscape(); + if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { pos += 6; - tokenValue = String.fromCharCode(ch) + scanIdentifierParts(); + tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); @@ -2356,12 +7347,12 @@ var ts; if (text.charCodeAt(pos) === 62) { if (text.charCodeAt(pos + 1) === 62) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 60; + return pos += 3, token = 61; } return pos += 2, token = 42; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 59; + return pos += 2, token = 60; } return pos++, token = 41; } @@ -2372,7 +7363,7 @@ var ts; return token; } function reScanSlashToken() { - if (token === 36 || token === 56) { + if (token === 36 || token === 57) { var p = tokenPos + 1; var inEscape = false; var inCharacterClass = false; @@ -2458,16 +7449,39 @@ var ts; } setText(text); return { - getStartPos: function () { return startPos; }, - getTextPos: function () { return pos; }, - getToken: function () { return token; }, - getTokenPos: function () { return tokenPos; }, - getTokenText: function () { return text.substring(tokenPos, pos); }, - getTokenValue: function () { return tokenValue; }, - hasPrecedingLineBreak: function () { return precedingLineBreak; }, - isIdentifier: function () { return token === 64 || token > 100; }, - isReservedWord: function () { return token >= 65 && token <= 100; }, - isUnterminated: function () { return tokenIsUnterminated; }, + getStartPos: function () { + return startPos; + }, + getTextPos: function () { + return pos; + }, + getToken: function () { + return token; + }, + getTokenPos: function () { + return tokenPos; + }, + getTokenText: function () { + return text.substring(tokenPos, pos); + }, + getTokenValue: function () { + return tokenValue; + }, + hasExtendedUnicodeEscape: function () { + return hasExtendedUnicodeEscape; + }, + hasPrecedingLineBreak: function () { + return precedingLineBreak; + }, + isIdentifier: function () { + return token === 65 || token > 101; + }, + isReservedWord: function () { + return token >= 66 && token <= 101; + }, + isUnterminated: function () { + return tokenIsUnterminated; + }, reScanGreaterToken: reScanGreaterToken, reScanSlashToken: reScanSlashToken, reScanTemplateToken: reScanTemplateToken, @@ -2480,12 +7494,513 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.bindTime = 0; + function getModuleInstanceState(node) { + if (node.kind === 202 || node.kind === 203) { + return 0; + } + else if (ts.isConstEnumDeclaration(node)) { + return 2; + } + else if ((node.kind === 209 || node.kind === 208) && !(node.flags & 1)) { + return 0; + } + else if (node.kind === 206) { + var state = 0; + ts.forEachChild(node, function (n) { + switch (getModuleInstanceState(n)) { + case 0: + return false; + case 2: + state = 2; + return false; + case 1: + state = 1; + return true; + } + }); + return state; + } + else if (node.kind === 205) { + return getModuleInstanceState(node.body); + } + else { + return 1; + } + } + ts.getModuleInstanceState = getModuleInstanceState; + function bindSourceFile(file) { + var start = new Date().getTime(); + bindSourceFileWorker(file); + ts.bindTime += new Date().getTime() - start; + } + ts.bindSourceFile = bindSourceFile; + function bindSourceFileWorker(file) { + var parent; + var container; + var blockScopeContainer; + var lastContainer; + var symbolCount = 0; + var Symbol = ts.objectAllocator.getSymbolConstructor(); + if (!file.locals) { + file.locals = {}; + container = file; + setBlockScopeContainer(file, false); + bind(file); + file.symbolCount = symbolCount; + } + function createSymbol(flags, name) { + symbolCount++; + return new Symbol(flags, name); + } + function setBlockScopeContainer(node, cleanLocals) { + blockScopeContainer = node; + if (cleanLocals) { + blockScopeContainer.locals = undefined; + } + } + function addDeclarationToSymbol(symbol, node, symbolKind) { + symbol.flags |= symbolKind; + if (!symbol.declarations) + symbol.declarations = []; + symbol.declarations.push(node); + if (symbolKind & 1952 && !symbol.exports) + symbol.exports = {}; + if (symbolKind & 6240 && !symbol.members) + symbol.members = {}; + node.symbol = symbol; + if (symbolKind & 107455 && !symbol.valueDeclaration) + symbol.valueDeclaration = node; + } + function getDeclarationName(node) { + if (node.name) { + if (node.kind === 205 && node.name.kind === 8) { + return '"' + node.name.text + '"'; + } + if (node.name.kind === 127) { + var nameExpression = node.name.expression; + ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); + return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); + } + return node.name.text; + } + switch (node.kind) { + case 143: + case 135: + return "__constructor"; + case 142: + case 138: + return "__call"; + case 139: + return "__new"; + case 140: + return "__index"; + case 215: + return "__export"; + case 214: + return node.isExportEquals ? "export=" : "default"; + case 200: + case 201: + return node.flags & 256 ? "default" : undefined; + } + } + function getDisplayName(node) { + return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); + } + function declareSymbol(symbols, parent, node, includes, excludes) { + ts.Debug.assert(!ts.hasDynamicName(node)); + var name = node.flags & 256 && parent ? "default" : getDeclarationName(node); + var symbol; + if (name !== undefined) { + symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); + if (symbol.flags & excludes) { + if (node.name) { + node.name.parent = node; + } + var message = symbol.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; + ts.forEach(symbol.declarations, function (declaration) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); + }); + file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message, getDisplayName(node))); + symbol = createSymbol(0, name); + } + } + else { + symbol = createSymbol(0, "__missing"); + } + addDeclarationToSymbol(symbol, node, includes); + symbol.parent = parent; + if ((node.kind === 201 || node.kind === 174) && symbol.exports) { + var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); + if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { + if (node.name) { + node.name.parent = node; + } + file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); + } + symbol.exports[prototypeSymbol.name] = prototypeSymbol; + prototypeSymbol.parent = symbol; + } + return symbol; + } + function declareModuleMember(node, symbolKind, symbolExcludes) { + var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; + if (symbolKind & 8388608) { + if (node.kind === 217 || (node.kind === 208 && hasExportModifier)) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + else { + if (hasExportModifier || container.flags & 32768) { + var exportKind = (symbolKind & 107455 ? 1048576 : 0) | (symbolKind & 793056 ? 2097152 : 0) | (symbolKind & 1536 ? 4194304 : 0); + var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); + local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + node.localSymbol = local; + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + } + function bindChildren(node, symbolKind, isBlockScopeContainer) { + if (symbolKind & 255504) { + node.locals = {}; + } + var saveParent = parent; + var saveContainer = container; + var savedBlockScopeContainer = blockScopeContainer; + parent = node; + if (symbolKind & 262128) { + container = node; + if (lastContainer) { + lastContainer.nextContainer = container; + } + lastContainer = container; + } + if (isBlockScopeContainer) { + setBlockScopeContainer(node, (symbolKind & 255504) === 0 && node.kind !== 227); + } + ts.forEachChild(node, bind); + container = saveContainer; + parent = saveParent; + blockScopeContainer = savedBlockScopeContainer; + } + function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + switch (container.kind) { + case 205: + declareModuleMember(node, symbolKind, symbolExcludes); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, symbolKind, symbolExcludes); + break; + } + case 142: + case 143: + case 138: + case 139: + case 140: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + break; + case 174: + case 201: + if (node.flags & 128) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + case 145: + case 154: + case 202: + declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); + break; + case 204: + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function isAmbientContext(node) { + while (node) { + if (node.flags & 2) + return true; + node = node.parent; + } + return false; + } + function hasExportDeclarations(node) { + var body = node.kind === 227 ? node : node.body; + if (body.kind === 227 || body.kind === 206) { + for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { + var stat = _a[_i]; + if (stat.kind === 215 || stat.kind === 214) { + return true; + } + } + } + return false; + } + function setExportContextFlag(node) { + if (isAmbientContext(node) && !hasExportDeclarations(node)) { + node.flags |= 32768; + } + else { + node.flags &= ~32768; + } + } + function bindModuleDeclaration(node) { + setExportContextFlag(node); + if (node.name.kind === 8) { + bindDeclaration(node, 512, 106639, true); + } + else { + var state = getModuleInstanceState(node); + if (state === 0) { + bindDeclaration(node, 1024, 0, true); + } + else { + bindDeclaration(node, 512, 106639, true); + var currentModuleIsConstEnumOnly = state === 2; + if (node.symbol.constEnumOnlyModule === undefined) { + node.symbol.constEnumOnlyModule = currentModuleIsConstEnumOnly; + } + else { + node.symbol.constEnumOnlyModule = node.symbol.constEnumOnlyModule && currentModuleIsConstEnumOnly; + } + } + } + } + function bindFunctionOrConstructorType(node) { + // For a given function symbol "<...>(...) => T" we want to generate a symbol identical + // to the one we would get for: { <...>(...): T } + // + // We do that by making an anonymous type literal symbol, and then setting the function + // symbol as its sole member. To the rest of the system, this symbol will be indistinguishable + // from an actual type literal symbol you would have gotten had you used the long form. + var symbol = createSymbol(131072, getDeclarationName(node)); + addDeclarationToSymbol(symbol, node, 131072); + bindChildren(node, 131072, false); + var typeLiteralSymbol = createSymbol(2048, "__type"); + addDeclarationToSymbol(typeLiteralSymbol, node, 2048); + typeLiteralSymbol.members = {}; + typeLiteralSymbol.members[node.kind === 142 ? "__call" : "__new"] = symbol; + } + function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { + var symbol = createSymbol(symbolKind, name); + addDeclarationToSymbol(symbol, node, symbolKind); + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function bindCatchVariableDeclaration(node) { + bindChildren(node, 0, true); + } + function bindBlockScopedVariableDeclaration(node) { + switch (blockScopeContainer.kind) { + case 205: + declareModuleMember(node, 2, 107455); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, 2, 107455); + break; + } + default: + if (!blockScopeContainer.locals) { + blockScopeContainer.locals = {}; + } + declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); + } + bindChildren(node, 2, false); + } + function getDestructuringParameterName(node) { + return "__" + ts.indexOf(node.parent.parameters, node); + } + function bind(node) { + node.parent = parent; + switch (node.kind) { + case 128: + bindDeclaration(node, 262144, 530912, false); + break; + case 129: + bindParameter(node); + break; + case 198: + case 152: + if (ts.isBindingPattern(node.name)) { + bindChildren(node, 0, false); + } + else if (ts.isBlockOrCatchScoped(node)) { + bindBlockScopedVariableDeclaration(node); + } + else { + bindDeclaration(node, 1, 107454, false); + } + break; + case 132: + case 131: + bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); + break; + case 224: + case 225: + bindPropertyOrMethodOrAccessor(node, 4, 107455, false); + break; + case 226: + bindPropertyOrMethodOrAccessor(node, 8, 107455, false); + break; + case 138: + case 139: + case 140: + bindDeclaration(node, 131072, 0, false); + break; + case 134: + case 133: + bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); + break; + case 200: + bindDeclaration(node, 16, 106927, true); + break; + case 135: + bindDeclaration(node, 16384, 0, true); + break; + case 136: + bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); + break; + case 137: + bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); + break; + case 142: + case 143: + bindFunctionOrConstructorType(node); + break; + case 145: + bindAnonymousDeclaration(node, 2048, "__type", false); + break; + case 154: + bindAnonymousDeclaration(node, 4096, "__object", false); + break; + case 162: + case 163: + bindAnonymousDeclaration(node, 16, "__function", true); + break; + case 174: + bindAnonymousDeclaration(node, 32, "__class", false); + break; + case 223: + bindCatchVariableDeclaration(node); + break; + case 201: + bindDeclaration(node, 32, 899583, false); + break; + case 202: + bindDeclaration(node, 64, 792992, false); + break; + case 203: + bindDeclaration(node, 524288, 793056, false); + break; + case 204: + if (ts.isConst(node)) { + bindDeclaration(node, 128, 899967, false); + } + else { + bindDeclaration(node, 256, 899327, false); + } + break; + case 205: + bindModuleDeclaration(node); + break; + case 208: + case 211: + case 213: + case 217: + bindDeclaration(node, 8388608, 8388608, false); + break; + case 210: + if (node.name) { + bindDeclaration(node, 8388608, 8388608, false); + } + else { + bindChildren(node, 0, false); + } + break; + case 215: + if (!node.exportClause) { + declareSymbol(container.symbol.exports, container.symbol, node, 1073741824, 0); + } + bindChildren(node, 0, false); + break; + case 214: + if (node.expression && node.expression.kind === 65) { + declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); + } + else { + declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); + } + bindChildren(node, 0, false); + break; + case 227: + setExportContextFlag(node); + if (ts.isExternalModule(node)) { + bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); + break; + } + case 179: + bindChildren(node, 0, !ts.isFunctionLike(node.parent)); + break; + case 223: + case 186: + case 187: + case 188: + case 207: + bindChildren(node, 0, true); + break; + default: + var saveParent = parent; + parent = node; + ts.forEachChild(node, bind); + parent = saveParent; + } + } + function bindParameter(node) { + if (ts.isBindingPattern(node.name)) { + bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); + } + else { + bindDeclaration(node, 1, 107455, false); + } + if (node.flags & 112 && node.parent.kind === 135 && (node.parent.parent.kind === 201 || node.parent.parent.kind === 174)) { + var classDeclaration = node.parent.parent; + declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); + } + } + function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + if (ts.hasDynamicName(node)) { + bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); + } + else { + bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); + } + } + } +})(ts || (ts = {})); +/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; if (declaration.kind === kind) { return declaration; } @@ -2497,9 +8012,13 @@ var ts; function getSingleLineStringWriter() { if (stringWriters.length == 0) { var str = ""; - var writeText = function (text) { return str += text; }; + var writeText = function (text) { + return str += text; + }; return { - string: function () { return str; }, + string: function () { + return str; + }, writeKeyword: writeText, writeOperator: writeText, writePunctuation: writeText, @@ -2507,11 +8026,18 @@ var ts; writeStringLiteral: writeText, writeParameter: writeText, writeSymbol: writeText, - writeLine: function () { return str += " "; }, - increaseIndent: function () { }, - decreaseIndent: function () { }, - clear: function () { return str = ""; }, - trackSymbol: function () { } + writeLine: function () { + return str += " "; + }, + increaseIndent: function () { + }, + decreaseIndent: function () { + }, + clear: function () { + return str = ""; + }, + trackSymbol: function () { + } }; } return stringWriters.pop(); @@ -2528,21 +8054,20 @@ var ts; ts.getFullWidth = getFullWidth; function containsParseError(node) { aggregateChildData(node); - return (node.parserContextFlags & 32) !== 0; + return (node.parserContextFlags & 64) !== 0; } ts.containsParseError = containsParseError; function aggregateChildData(node) { - if (!(node.parserContextFlags & 64)) { - var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 16) !== 0) || - ts.forEachChild(node, containsParseError); + if (!(node.parserContextFlags & 128)) { + var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 32) !== 0) || ts.forEachChild(node, containsParseError); if (thisNodeOrAnySubNodesHasError) { - node.parserContextFlags |= 32; + node.parserContextFlags |= 64; } - node.parserContextFlags |= 64; + node.parserContextFlags |= 128; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 210) { + while (node && node.kind !== 227) { node = node.parent; } return node; @@ -2608,47 +8133,100 @@ var ts; return identifier.length >= 3 && identifier.charCodeAt(0) === 95 && identifier.charCodeAt(1) === 95 && identifier.charCodeAt(2) === 95 ? identifier.substr(1) : identifier; } ts.unescapeIdentifier = unescapeIdentifier; + function makeIdentifierFromModuleName(moduleName) { + return ts.getBaseFileName(moduleName).replace(/\W/g, "_"); + } + ts.makeIdentifierFromModuleName = makeIdentifierFromModuleName; + function isBlockOrCatchScoped(declaration) { + return (getCombinedNodeFlags(declaration) & 12288) !== 0 || isCatchClauseVariableDeclaration(declaration); + } + ts.isBlockOrCatchScoped = isBlockOrCatchScoped; + function getEnclosingBlockScopeContainer(node) { + var current = node; + while (current) { + if (isFunctionLike(current)) { + return current; + } + switch (current.kind) { + case 227: + case 207: + case 223: + case 205: + case 186: + case 187: + case 188: + return current; + case 179: + if (!isFunctionLike(current.parent)) { + return current; + } + } + current = current.parent; + } + } + ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; + function isCatchClauseVariableDeclaration(declaration) { + return declaration && declaration.kind === 198 && declaration.parent && declaration.parent.kind === 223; + } + ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name); } ts.declarationNameToString = declarationNameToString; function createDiagnosticForNode(node, message, arg0, arg1, arg2) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = getTokenPosOfNode(node, file); - var length = node.end - start; - return ts.createFileDiagnostic(file, start, length, message, arg0, arg1, arg2); + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); + return ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2); } ts.createDiagnosticForNode = createDiagnosticForNode; function createDiagnosticForNodeFromMessageChain(node, messageChain) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = ts.skipTrivia(file.text, node.pos); - var length = node.end - start; + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); return { - file: file, - start: start, - length: length, + file: sourceFile, + start: span.start, + length: span.length, code: messageChain.code, category: messageChain.category, messageText: messageChain.next ? messageChain : messageChain.messageText }; } ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; - function getErrorSpanForNode(node) { - var errorSpan; + function getSpanOfTokenAtPosition(sourceFile, pos) { + var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); + scanner.setTextPos(pos); + scanner.scan(); + var start = scanner.getTokenPos(); + return createTextSpanFromBounds(start, scanner.getTextPos()); + } + ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForNode(sourceFile, node) { + var errorNode = node; switch (node.kind) { - case 191: - case 148: - case 194: - case 195: + case 227: + var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); + if (pos_1 === sourceFile.text.length) { + return createTextSpan(0, 0); + } + return getSpanOfTokenAtPosition(sourceFile, pos_1); case 198: - case 197: - case 209: - errorSpan = node.name; + case 152: + case 201: + case 174: + case 202: + case 205: + case 204: + case 226: + case 200: + case 162: + errorNode = node.name; break; } - return errorSpan && errorSpan.pos < errorSpan.end ? errorSpan : node; + if (errorNode === undefined) { + return getSpanOfTokenAtPosition(sourceFile, node.pos); + } + var pos = nodeIsMissing(errorNode) ? errorNode.pos : ts.skipTrivia(sourceFile.text, errorNode.pos); + return createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -2656,15 +8234,15 @@ var ts; } ts.isExternalModule = isExternalModule; function isDeclarationFile(file) { - return (file.flags & 1024) !== 0; + return (file.flags & 2048) !== 0; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 197 && isConst(node); + return node.kind === 204 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 148 || isBindingPattern(node))) { + while (node && (node.kind === 152 || isBindingPattern(node))) { node = node.parent; } return node; @@ -2672,34 +8250,33 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 191) { + if (node.kind === 198) { node = node.parent; } - if (node && node.kind === 192) { + if (node && node.kind === 199) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 173) { + if (node && node.kind === 180) { flags |= node.flags; } return flags; } ts.getCombinedNodeFlags = getCombinedNodeFlags; function isConst(node) { - return !!(getCombinedNodeFlags(node) & 4096); + return !!(getCombinedNodeFlags(node) & 8192); } ts.isConst = isConst; function isLet(node) { - return !!(getCombinedNodeFlags(node) & 2048); + return !!(getCombinedNodeFlags(node) & 4096); } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 175 && node.expression.kind === 8; + return node.kind === 182 && node.expression.kind === 8; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { - sourceFileOfNode = sourceFileOfNode || getSourceFileOfNode(node); - if (node.kind === 126 || node.kind === 125) { + if (node.kind === 129 || node.kind === 128) { return ts.concatenate(ts.getTrailingCommentRanges(sourceFileOfNode.text, node.pos), ts.getLeadingCommentRanges(sourceFileOfNode.text, node.pos)); } else { @@ -2710,9 +8287,7 @@ var ts; function getJsDocComments(node, sourceFileOfNode) { return ts.filter(getLeadingCommentRangesOfNode(node, sourceFileOfNode), isJsDocComment); function isJsDocComment(comment) { - return sourceFileOfNode.text.charCodeAt(comment.pos + 1) === 42 && - sourceFileOfNode.text.charCodeAt(comment.pos + 2) === 42 && - sourceFileOfNode.text.charCodeAt(comment.pos + 3) !== 47; + return sourceFileOfNode.text.charCodeAt(comment.pos + 1) === 42 && sourceFileOfNode.text.charCodeAt(comment.pos + 2) === 42 && sourceFileOfNode.text.charCodeAt(comment.pos + 3) !== 47; } } ts.getJsDocComments = getJsDocComments; @@ -2721,64 +8296,82 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184: + case 191: return visitor(node); - case 172: - case 176: - case 177: - case 178: + case 207: case 179: - case 180: - case 181: + case 183: + case 184: case 185: case 186: - case 203: - case 204: case 187: - case 189: - case 206: + case 188: + case 192: + case 193: + case 220: + case 221: + case 194: + case 196: + case 223: return ts.forEachChild(node, traverse); } } } ts.forEachReturnStatement = forEachReturnStatement; - function isAnyFunction(node) { + function isVariableLike(node) { if (node) { switch (node.kind) { - case 131: - case 158: - case 193: - case 159: - case 130: + case 152: + case 226: case 129: + case 224: case 132: - case 133: - case 134: - case 135: - case 136: - case 138: - case 139: - case 158: - case 159: - case 193: + case 131: + case 225: + case 198: return true; } } return false; } - ts.isAnyFunction = isAnyFunction; + ts.isVariableLike = isVariableLike; + function isFunctionLike(node) { + if (node) { + switch (node.kind) { + case 135: + case 162: + case 200: + case 163: + case 134: + case 133: + case 136: + case 137: + case 138: + case 139: + case 140: + case 142: + case 143: + case 162: + case 163: + case 200: + return true; + } + } + return false; + } + ts.isFunctionLike = isFunctionLike; function isFunctionBlock(node) { - return node && node.kind === 172 && isAnyFunction(node.parent); + return node && node.kind === 179 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 130 && node.parent.kind === 150; + return node && node.kind === 134 && node.parent.kind === 154; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function getContainingFunction(node) { while (true) { node = node.parent; - if (!node || isAnyFunction(node)) { + if (!node || isFunctionLike(node)) { return node; } } @@ -2791,28 +8384,28 @@ var ts; return undefined; } switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 159: + case 163: if (!includeArrowFunctions) { continue; } - case 193: - case 158: - case 198: - case 128: - case 127: - case 130: - case 129: - case 131: + case 200: + case 162: + case 205: case 132: + case 131: + case 134: case 133: - case 197: - case 210: + case 135: + case 136: + case 137: + case 204: + case 227: return node; } } @@ -2824,49 +8417,104 @@ var ts; if (!node) return node; switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 193: - case 158: - case 159: + case 200: + case 162: + case 163: if (!includeFunctions) { continue; } - case 128: - case 127: - case 130: - case 129: - case 131: case 132: + case 131: + case 134: case 133: + case 135: + case 136: + case 137: return node; } } } ts.getSuperContainer = getSuperContainer; function getInvokedExpression(node) { - if (node.kind === 155) { + if (node.kind === 159) { return node.tag; } return node.expression; } ts.getInvokedExpression = getInvokedExpression; + function nodeCanBeDecorated(node) { + switch (node.kind) { + case 201: + return true; + case 132: + return node.parent.kind === 201; + case 129: + return node.parent.body && node.parent.parent.kind === 201; + case 136: + case 137: + case 134: + return node.body && node.parent.kind === 201; + } + return false; + } + ts.nodeCanBeDecorated = nodeCanBeDecorated; + function nodeIsDecorated(node) { + switch (node.kind) { + case 201: + if (node.decorators) { + return true; + } + return false; + case 132: + case 129: + if (node.decorators) { + return true; + } + return false; + case 136: + if (node.body && node.decorators) { + return true; + } + return false; + case 134: + case 137: + if (node.body && node.decorators) { + return true; + } + return false; + } + return false; + } + ts.nodeIsDecorated = nodeIsDecorated; + function childIsDecorated(node) { + switch (node.kind) { + case 201: + return ts.forEach(node.members, nodeOrChildIsDecorated); + case 134: + case 137: + return ts.forEach(node.parameters, nodeIsDecorated); + } + return false; + } + ts.childIsDecorated = childIsDecorated; + function nodeOrChildIsDecorated(node) { + return nodeIsDecorated(node) || childIsDecorated(node); + } + ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isExpression(node) { switch (node.kind) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 9: - case 149: - case 150: - case 151: - case 152: case 153: case 154: case 155: @@ -2874,68 +8522,70 @@ var ts; case 157: case 158: case 159: - case 162: case 160: case 161: + case 162: + case 174: case 163: + case 166: case 164: case 165: - case 166: - case 169: case 167: - case 10: + case 168: + case 169: case 170: + case 173: + case 171: + case 10: + case 175: return true; - case 123: - while (node.parent.kind === 123) { + case 126: + while (node.parent.kind === 126) { node = node.parent; } - return node.parent.kind === 140; - case 64: - if (node.parent.kind === 140) { + return node.parent.kind === 144; + case 65: + if (node.parent.kind === 144) { return true; } case 7: case 8: - var parent = node.parent; - switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 209: - case 207: - case 148: - return parent.initializer === node; - case 175: - case 176: - case 177: - case 178: + var parent_1 = node.parent; + switch (parent_1.kind) { + case 198: + case 129: + case 132: + case 131: + case 226: + case 224: + case 152: + return parent_1.initializer === node; + case 182: + case 183: case 184: case 185: + case 191: + case 192: + case 193: + case 220: + case 195: + case 193: + return parent_1.expression === node; case 186: - case 203: + var forStatement = parent_1; + return (forStatement.initializer === node && forStatement.initializer.kind !== 199) || forStatement.condition === node || forStatement.iterator === node; + case 187: case 188: - case 186: - return parent.expression === node; - case 179: - var forStatement = parent; - return (forStatement.initializer === node && forStatement.initializer.kind !== 192) || - forStatement.condition === node || - forStatement.iterator === node; - case 180: - case 181: - var forInStatement = parent; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 192) || - forInStatement.expression === node; - case 156: - return node === parent.expression; - case 171: - return node === parent.expression; - case 124: - return node === parent.expression; + var forInStatement = parent_1; + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 199) || forInStatement.expression === node; + case 160: + return node === parent_1.expression; + case 176: + return node === parent_1.expression; + case 127: + return node === parent_1.expression; default: - if (isExpression(parent)) { + if (isExpression(parent_1)) { return true; } } @@ -2945,39 +8595,53 @@ var ts; ts.isExpression = isExpression; function isInstantiatedModule(node, preserveConstEnums) { var moduleState = ts.getModuleInstanceState(node); - return moduleState === 1 || - (preserveConstEnums && moduleState === 2); + return moduleState === 1 || (preserveConstEnums && moduleState === 2); } ts.isInstantiatedModule = isInstantiatedModule; - function isExternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind === 202; + function isExternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind === 219; } - ts.isExternalModuleImportDeclaration = isExternalModuleImportDeclaration; - function getExternalModuleImportDeclarationExpression(node) { - ts.Debug.assert(isExternalModuleImportDeclaration(node)); + ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; + function getExternalModuleImportEqualsDeclarationExpression(node) { + ts.Debug.assert(isExternalModuleImportEqualsDeclaration(node)); return node.moduleReference.expression; } - ts.getExternalModuleImportDeclarationExpression = getExternalModuleImportDeclarationExpression; - function isInternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind !== 202; + ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; + function isInternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind !== 219; } - ts.isInternalModuleImportDeclaration = isInternalModuleImportDeclaration; + ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; + function getExternalModuleName(node) { + if (node.kind === 209) { + return node.moduleSpecifier; + } + if (node.kind === 208) { + var reference = node.moduleReference; + if (reference.kind === 219) { + return reference.expression; + } + } + if (node.kind === 215) { + return node.moduleSpecifier; + } + } + ts.getExternalModuleName = getExternalModuleName; function hasDotDotDotToken(node) { - return node && node.kind === 126 && node.dotDotDotToken !== undefined; + return node && node.kind === 129 && node.dotDotDotToken !== undefined; } ts.hasDotDotDotToken = hasDotDotDotToken; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 126: - return node.questionToken !== undefined; - case 130: case 129: return node.questionToken !== undefined; - case 208: - case 207: - case 128: - case 127: + case 134: + case 133: + return node.questionToken !== undefined; + case 225: + case 224: + case 132: + case 131: return node.questionToken !== undefined; } } @@ -3001,12 +8665,12 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return node.kind === 147 || node.kind === 146; + return !!node && (node.kind === 151 || node.kind === 150); } ts.isBindingPattern = isBindingPattern; function isInAmbientContext(node) { while (node) { - if (node.flags & (2 | 1024)) { + if (node.flags & (2 | 2048)) { return true; } node = node.parent; @@ -3016,27 +8680,33 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 125: - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: - case 129: - case 193: - case 132: - case 133: - case 131: - case 194: - case 195: - case 196: - case 197: - case 198: + case 163: + case 152: + case 201: + case 135: + case 204: + case 226: + case 217: case 200: + case 162: + case 136: + case 210: + case 208: + case 213: + case 202: + case 134: + case 133: + case 205: + case 211: + case 129: + case 224: + case 132: + case 131: + case 137: + case 225: + case 203: + case 128: + case 198: return true; } return false; @@ -3044,65 +8714,86 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 183: - case 182: case 190: - case 177: - case 175: - case 174: - case 180: - case 181: - case 179: - case 176: - case 187: - case 184: - case 186: - case 93: case 189: - case 173: - case 178: + case 197: + case 184: + case 182: + case 181: + case 187: + case 188: + case 186: + case 183: + case 194: + case 191: + case 193: + case 94: + case 196: + case 180: case 185: - case 201: + case 192: + case 214: return true; default: return false; } } ts.isStatement = isStatement; - function isDeclarationOrFunctionExpressionOrCatchVariableName(name) { - if (name.kind !== 64 && name.kind !== 8 && name.kind !== 7) { + function isClassElement(n) { + switch (n.kind) { + case 135: + case 132: + case 134: + case 136: + case 137: + case 140: + return true; + default: + return false; + } + } + ts.isClassElement = isClassElement; + function isDeclarationName(name) { + if (name.kind !== 65 && name.kind !== 8 && name.kind !== 7) { return false; } var parent = name.parent; - if (isDeclaration(parent) || parent.kind === 158) { - return parent.name === name; + if (parent.kind === 213 || parent.kind === 217) { + if (parent.propertyName) { + return true; + } } - if (parent.kind === 206) { + if (isDeclaration(parent)) { return parent.name === name; } return false; } - ts.isDeclarationOrFunctionExpressionOrCatchVariableName = isDeclarationOrFunctionExpressionOrCatchVariableName; - function getClassBaseTypeNode(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + ts.isDeclarationName = isDeclarationName; + function isAliasSymbolDeclaration(node) { + return node.kind === 208 || node.kind === 210 && !!node.name || node.kind === 211 || node.kind === 213 || node.kind === 217 || node.kind === 214 && node.expression.kind === 65; + } + ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; + function getClassExtendsHeritageClauseElement(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause && heritageClause.types.length > 0 ? heritageClause.types[0] : undefined; } - ts.getClassBaseTypeNode = getClassBaseTypeNode; - function getClassImplementedTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 101); + ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement; + function getClassImplementsHeritageClauseElements(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 103); return heritageClause ? heritageClause.types : undefined; } - ts.getClassImplementedTypeNodes = getClassImplementedTypeNodes; + ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements; function getInterfaceBaseTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause ? heritageClause.types : undefined; } ts.getInterfaceBaseTypeNodes = getInterfaceBaseTypeNodes; function getHeritageClause(clauses, kind) { if (clauses) { - for (var i = 0, n = clauses.length; i < n; i++) { - if (clauses[i].token === kind) { - return clauses[i]; + for (var _i = 0; _i < clauses.length; _i++) { + var clause = clauses[_i]; + if (clause.token === kind) { + return clause; } } } @@ -3118,32 +8809,11 @@ var ts; } ts.tryResolveScriptReference = tryResolveScriptReference; function getAncestor(node, kind) { - switch (kind) { - case 194: - while (node) { - switch (node.kind) { - case 194: - return node; - case 197: - case 195: - case 196: - case 198: - case 200: - return undefined; - default: - node = node.parent; - continue; - } - } - break; - default: - while (node) { - if (node.kind === kind) { - return node; - } - node = node.parent; - } - break; + while (node) { + if (node.kind === kind) { + return node; + } + node = node.parent; } return undefined; } @@ -3183,7 +8853,7 @@ var ts; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 65 <= token && token <= 122; + return 66 <= token && token <= 125; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -3191,20 +8861,18 @@ var ts; } ts.isTrivia = isTrivia; function hasDynamicName(declaration) { - return declaration.name && - declaration.name.kind === 124 && - !isWellKnownSymbolSyntactically(declaration.name.expression); + return declaration.name && declaration.name.kind === 127 && !isWellKnownSymbolSyntactically(declaration.name.expression); } ts.hasDynamicName = hasDynamicName; function isWellKnownSymbolSyntactically(node) { - return node.kind === 151 && isESSymbolIdentifier(node.expression); + return node.kind === 155 && isESSymbolIdentifier(node.expression); } ts.isWellKnownSymbolSyntactically = isWellKnownSymbolSyntactically; function getPropertyNameForPropertyNameNode(name) { - if (name.kind === 64 || name.kind === 8 || name.kind === 7) { + if (name.kind === 65 || name.kind === 8 || name.kind === 7) { return name.text; } - if (name.kind === 124) { + if (name.kind === 127) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -3219,18 +8887,19 @@ var ts; } ts.getPropertyNameForKnownSymbolName = getPropertyNameForKnownSymbolName; function isESSymbolIdentifier(node) { - return node.kind === 64 && node.text === "Symbol"; + return node.kind === 65 && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; function isModifier(token) { switch (token) { + case 109: case 107: - case 105: - case 106: case 108: - case 77: - case 113: - case 69: + case 110: + case 78: + case 115: + case 70: + case 73: return true; } return false; @@ -3296,7 +8965,10 @@ var ts; if (length < 0) { throw new Error("length < 0"); } - return { start: start, length: length }; + return { + start: start, + length: length + }; } ts.createTextSpan = createTextSpan; function createTextSpanFromBounds(start, end) { @@ -3315,7 +8987,10 @@ var ts; if (newLength < 0) { throw new Error("newLength < 0"); } - return { span: span, newLength: newLength }; + return { + span: span, + newLength: newLength + }; } ts.createTextChangeRange = createTextChangeRange; ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); @@ -3345,6 +9020,22 @@ var ts; return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; + function nodeStartsNewLexicalEnvironment(n) { + return isFunctionLike(n) || n.kind === 205 || n.kind === 227; + } + ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; + function nodeIsSynthesized(node) { + return node.pos === -1; + } + ts.nodeIsSynthesized = nodeIsSynthesized; + function createSynthesizedNode(kind, startsOnNewLine) { + var node = ts.createNode(kind); + node.pos = -1; + node.end = -1; + node.startsOnNewLine = startsOnNewLine; + return node; + } + ts.createSynthesizedNode = createSynthesizedNode; function createDiagnosticCollection() { var nonFileDiagnostics = []; var fileDiagnostics = {}; @@ -3410,10 +9101,338 @@ var ts; } } ts.createDiagnosticCollection = createDiagnosticCollection; + var escapedCharsRegExp = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + var escapedCharsMap = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", + "\u2029": "\\u2029", + "\u0085": "\\u0085" + }; + function escapeString(s) { + s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; + return s; + function getReplacement(c) { + return escapedCharsMap[c] || get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + } + } + ts.escapeString = escapeString; + function get16BitUnicodeEscapeSequence(charCode) { + var hexCharCode = charCode.toString(16).toUpperCase(); + var paddedHexCode = ("0000" + hexCharCode).slice(-4); + return "\\u" + paddedHexCode; + } + var nonAsciiCharacters = /[^\u0000-\u007F]/g; + function escapeNonAsciiCharacters(s) { + return nonAsciiCharacters.test(s) ? s.replace(nonAsciiCharacters, function (c) { + return get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + }) : s; + } + ts.escapeNonAsciiCharacters = escapeNonAsciiCharacters; + var indentStrings = [ + "", + " " + ]; + function getIndentString(level) { + if (indentStrings[level] === undefined) { + indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; + } + return indentStrings[level]; + } + ts.getIndentString = getIndentString; + function getIndentSize() { + return indentStrings[1].length; + } + ts.getIndentSize = getIndentSize; + function createTextWriter(newLine) { + var output = ""; + var indent = 0; + var lineStart = true; + var lineCount = 0; + var linePos = 0; + function write(s) { + if (s && s.length) { + if (lineStart) { + output += getIndentString(indent); + lineStart = false; + } + output += s; + } + } + function rawWrite(s) { + if (s !== undefined) { + if (lineStart) { + lineStart = false; + } + output += s; + } + } + function writeLiteral(s) { + if (s && s.length) { + write(s); + var lineStartsOfS = ts.computeLineStarts(s); + if (lineStartsOfS.length > 1) { + lineCount = lineCount + lineStartsOfS.length - 1; + linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; + } + } + } + function writeLine() { + if (!lineStart) { + output += newLine; + lineCount++; + linePos = output.length; + lineStart = true; + } + } + function writeTextOfNode(sourceFile, node) { + write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); + } + return { + write: write, + rawWrite: rawWrite, + writeTextOfNode: writeTextOfNode, + writeLiteral: writeLiteral, + writeLine: writeLine, + increaseIndent: function () { + return indent++; + }, + decreaseIndent: function () { + return indent--; + }, + getIndent: function () { + return indent; + }, + getTextPos: function () { + return output.length; + }, + getLine: function () { + return lineCount + 1; + }, + getColumn: function () { + return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; + }, + getText: function () { + return output; + } + }; + } + ts.createTextWriter = createTextWriter; + function getOwnEmitOutputFilePath(sourceFile, host, extension) { + var compilerOptions = host.getCompilerOptions(); + var emitOutputFilePathWithoutExtension; + if (compilerOptions.outDir) { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); + } + else { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); + } + return emitOutputFilePathWithoutExtension + extension; + } + ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { + var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); + sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); + return ts.combinePaths(newDirPath, sourceFilePath); + } + ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { + diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + }); + } + ts.writeFile = writeFile; + function getLineOfLocalPosition(currentSourceFile, pos) { + return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; + } + ts.getLineOfLocalPosition = getLineOfLocalPosition; + function getFirstConstructorWithBody(node) { + return ts.forEach(node.members, function (member) { + if (member.kind === 135 && nodeIsPresent(member.body)) { + return member; + } + }); + } + ts.getFirstConstructorWithBody = getFirstConstructorWithBody; + function shouldEmitToOwnFile(sourceFile, compilerOptions) { + if (!isDeclarationFile(sourceFile)) { + if ((isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + return true; + } + return false; + } + return false; + } + ts.shouldEmitToOwnFile = shouldEmitToOwnFile; + function getAllAccessorDeclarations(declarations, accessor) { + var firstAccessor; + var secondAccessor; + var getAccessor; + var setAccessor; + if (hasDynamicName(accessor)) { + firstAccessor = accessor; + if (accessor.kind === 136) { + getAccessor = accessor; + } + else if (accessor.kind === 137) { + setAccessor = accessor; + } + else { + ts.Debug.fail("Accessor has wrong kind"); + } + } + else { + ts.forEach(declarations, function (member) { + if ((member.kind === 136 || member.kind === 137) && (member.flags & 128) === (accessor.flags & 128)) { + var memberName = getPropertyNameForPropertyNameNode(member.name); + var accessorName = getPropertyNameForPropertyNameNode(accessor.name); + if (memberName === accessorName) { + if (!firstAccessor) { + firstAccessor = member; + } + else if (!secondAccessor) { + secondAccessor = member; + } + if (member.kind === 136 && !getAccessor) { + getAccessor = member; + } + if (member.kind === 137 && !setAccessor) { + setAccessor = member; + } + } + } + }); + } + return { + firstAccessor: firstAccessor, + secondAccessor: secondAccessor, + getAccessor: getAccessor, + setAccessor: setAccessor + }; + } + ts.getAllAccessorDeclarations = getAllAccessorDeclarations; + function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { + if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { + writer.writeLine(); + } + } + ts.emitNewLineBeforeLeadingComments = emitNewLineBeforeLeadingComments; + function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { + var emitLeadingSpace = !trailingSeparator; + ts.forEach(comments, function (comment) { + if (emitLeadingSpace) { + writer.write(" "); + emitLeadingSpace = false; + } + writeComment(currentSourceFile, writer, comment, newLine); + if (comment.hasTrailingNewLine) { + writer.writeLine(); + } + else if (trailingSeparator) { + writer.write(" "); + } + else { + emitLeadingSpace = true; + } + }); + } + ts.emitComments = emitComments; + function writeCommentRange(currentSourceFile, writer, comment, newLine) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); + var lineCount = ts.getLineStarts(currentSourceFile).length; + var firstCommentLineIndent; + for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { + var nextLineStart = (currentLine + 1) === lineCount ? currentSourceFile.text.length + 1 : getStartPositionOfLine(currentLine + 1, currentSourceFile); + if (pos !== comment.pos) { + if (firstCommentLineIndent === undefined) { + firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); + } + var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); + var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); + if (spacesToEmit > 0) { + var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); + var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); + writer.rawWrite(indentSizeSpaceString); + while (numberOfSingleSpacesToEmit) { + writer.rawWrite(" "); + numberOfSingleSpacesToEmit--; + } + } + else { + writer.rawWrite(""); + } + } + writeTrimmedCurrentLine(pos, nextLineStart); + pos = nextLineStart; + } + } + else { + writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); + } + function writeTrimmedCurrentLine(pos, nextLineStart) { + var end = Math.min(comment.end, nextLineStart - 1); + var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); + if (currentLineText) { + writer.write(currentLineText); + if (end !== comment.end) { + writer.writeLine(); + } + } + else { + writer.writeLiteral(newLine); + } + } + function calculateIndent(pos, end) { + var currentLineIndent = 0; + for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { + if (currentSourceFile.text.charCodeAt(pos) === 9) { + currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); + } + else { + currentLineIndent++; + } + } + return currentLineIndent; + } + } + ts.writeCommentRange = writeCommentRange; + function isSupportedHeritageClauseElement(node) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + ts.isSupportedHeritageClauseElement = isSupportedHeritageClauseElement; + function isSupportedHeritageClauseElementExpression(node) { + if (node.kind === 65) { + return true; + } + else if (node.kind === 155) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + else { + return false; + } + } + function isRightSideOfQualifiedNameOrPropertyAccess(node) { + return (node.parent.kind === 126 && node.parent.right === node) || (node.parent.kind === 155 && node.parent.name === node); + } + ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; + function getLocalSymbolForExportDefault(symbol) { + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & 256) ? symbol.valueDeclaration.localSymbol : undefined; + } + ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { - var nodeConstructors = new Array(212); + var nodeConstructors = new Array(229); ts.parseTime = 0; function getNodeConstructor(kind) { return nodeConstructors[kind] || (nodeConstructors[kind] = ts.objectAllocator.getNodeConstructor(kind)); @@ -3435,8 +9454,9 @@ var ts; } function visitEachNode(cbNode, nodes) { if (nodes) { - for (var i = 0, len = nodes.length; i < len; i++) { - var result = cbNode(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + var result = cbNode(node); if (result) { return result; } @@ -3450,267 +9470,255 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 123: - return visitNode(cbNode, node.left) || - visitNode(cbNode, node.right); - case 125: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.constraint) || - visitNode(cbNode, node.expression); case 126: + return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); case 128: - case 127: - case 207: - case 208: - case 191: - case 148: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.propertyName) || - visitNode(cbNode, node.dotDotDotToken) || - visitNode(cbNode, node.name) || - visitNode(cbNode, node.questionToken) || - visitNode(cbNode, node.type) || - visitNode(cbNode, node.initializer); + return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); + case 129: + case 132: + case 131: + case 224: + case 225: + case 198: + case 152: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.dotDotDotToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); + case 142: + case 143: case 138: case 139: + case 140: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); case 134: + case 133: case 135: case 136: - return visitNodes(cbNodes, node.modifiers) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type); - case 130: - case 129: - case 131: - case 132: - case 133: - case 158: - case 193: - case 159: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.name) || - visitNode(cbNode, node.questionToken) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type) || - visitNode(cbNode, node.body); case 137: - return visitNode(cbNode, node.typeName) || - visitNodes(cbNodes, node.typeArguments); - case 140: - return visitNode(cbNode, node.exprName); + case 162: + case 200: + case 163: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type) || visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); case 141: - return visitNodes(cbNodes, node.members); - case 142: - return visitNode(cbNode, node.elementType); - case 143: - return visitNodes(cbNodes, node.elementTypes); + return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); case 144: - return visitNodes(cbNodes, node.types); + return visitNode(cbNode, node.exprName); case 145: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.members); case 146: + return visitNode(cbNode, node.elementType); case 147: - return visitNodes(cbNodes, node.elements); + return visitNodes(cbNodes, node.elementTypes); + case 148: + return visitNodes(cbNodes, node.types); case 149: - return visitNodes(cbNodes, node.elements); + return visitNode(cbNode, node.type); case 150: - return visitNodes(cbNodes, node.properties); case 151: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.name); - case 152: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.argumentExpression); + return visitNodes(cbNodes, node.elements); case 153: + return visitNodes(cbNodes, node.elements); case 154: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.typeArguments) || - visitNodes(cbNodes, node.arguments); + return visitNodes(cbNodes, node.properties); case 155: - return visitNode(cbNode, node.tag) || - visitNode(cbNode, node.template); + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); case 156: - return visitNode(cbNode, node.type) || - visitNode(cbNode, node.expression); + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); case 157: - return visitNode(cbNode, node.expression); + case 158: + return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); + case 159: + return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); case 160: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); case 161: return visitNode(cbNode, node.expression); - case 162: - return visitNode(cbNode, node.expression); - case 163: - return visitNode(cbNode, node.operand); - case 168: - return visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.expression); case 164: - return visitNode(cbNode, node.operand); + return visitNode(cbNode, node.expression); case 165: - return visitNode(cbNode, node.left) || - visitNode(cbNode, node.operatorToken) || - visitNode(cbNode, node.right); + return visitNode(cbNode, node.expression); case 166: - return visitNode(cbNode, node.condition) || - visitNode(cbNode, node.whenTrue) || - visitNode(cbNode, node.whenFalse); - case 169: return visitNode(cbNode, node.expression); - case 172: - case 199: - return visitNodes(cbNodes, node.statements); - case 210: - return visitNodes(cbNodes, node.statements) || - visitNode(cbNode, node.endOfFileToken); - case 173: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.declarationList); - case 192: - return visitNodes(cbNodes, node.declarations); - case 175: - return visitNode(cbNode, node.expression); - case 176: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.thenStatement) || - visitNode(cbNode, node.elseStatement); - case 177: - return visitNode(cbNode, node.statement) || - visitNode(cbNode, node.expression); - case 178: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 179: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.condition) || - visitNode(cbNode, node.iterator) || - visitNode(cbNode, node.statement); - case 180: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 181: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 182: - case 183: - return visitNode(cbNode, node.label); - case 184: - return visitNode(cbNode, node.expression); - case 185: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 186: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.clauses); - case 203: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 204: - return visitNodes(cbNodes, node.statements); - case 187: - return visitNode(cbNode, node.label) || - visitNode(cbNode, node.statement); - case 188: - return visitNode(cbNode, node.expression); - case 189: - return visitNode(cbNode, node.tryBlock) || - visitNode(cbNode, node.catchClause) || - visitNode(cbNode, node.finallyBlock); - case 206: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.type) || - visitNode(cbNode, node.block); - case 194: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 195: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 196: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNode(cbNode, node.type); - case 197: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.members); - case 209: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.initializer); - case 198: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNode(cbNode, node.body); - case 200: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNode(cbNode, node.moduleReference); - case 201: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.exportName); case 167: - return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 171: - return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 124: + return visitNode(cbNode, node.operand); + case 172: + return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); + case 168: + return visitNode(cbNode, node.operand); + case 169: + return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); + case 170: + return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); + case 173: return visitNode(cbNode, node.expression); - case 205: - return visitNodes(cbNodes, node.types); + case 179: + case 206: + return visitNodes(cbNodes, node.statements); + case 227: + return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); + case 180: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); + case 199: + return visitNodes(cbNodes, node.declarations); + case 182: + return visitNode(cbNode, node.expression); + case 183: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); + case 184: + return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); + case 185: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 186: + return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.iterator) || visitNode(cbNode, node.statement); + case 187: + return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 188: + return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 189: + case 190: + return visitNode(cbNode, node.label); + case 191: + return visitNode(cbNode, node.expression); + case 192: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 193: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.caseBlock); + case 207: + return visitNodes(cbNodes, node.clauses); + case 220: + return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.statements); + case 221: + return visitNodes(cbNodes, node.statements); + case 194: + return visitNode(cbNode, node.label) || visitNode(cbNode, node.statement); + case 195: + return visitNode(cbNode, node.expression); + case 196: + return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); + case 223: + return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); + case 130: + return visitNode(cbNode, node.expression); + case 201: + case 174: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); case 202: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); + case 203: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.type); + case 204: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); + case 226: + return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); + case 205: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); + case 208: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); + case 209: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); + case 210: + return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); + case 211: + return visitNode(cbNode, node.name); + case 212: + case 216: + return visitNodes(cbNodes, node.elements); + case 215: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); + case 213: + case 217: + return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); + case 214: + return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); + case 171: + return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 176: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); + case 127: return visitNode(cbNode, node.expression); + case 222: + return visitNodes(cbNodes, node.types); + case 177: + return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); + case 219: + return visitNode(cbNode, node.expression); + case 218: + return visitNodes(cbNodes, node.decorators); } } ts.forEachChild = forEachChild; function parsingContextErrors(context) { switch (context) { - case 0: return ts.Diagnostics.Declaration_or_statement_expected; - case 1: return ts.Diagnostics.Declaration_or_statement_expected; - case 2: return ts.Diagnostics.Statement_expected; - case 3: return ts.Diagnostics.case_or_default_expected; - case 4: return ts.Diagnostics.Statement_expected; - case 5: return ts.Diagnostics.Property_or_signature_expected; - case 6: return ts.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; - case 7: return ts.Diagnostics.Enum_member_expected; - case 8: return ts.Diagnostics.Type_reference_expected; - case 9: return ts.Diagnostics.Variable_declaration_expected; - case 10: return ts.Diagnostics.Property_destructuring_pattern_expected; - case 11: return ts.Diagnostics.Array_element_destructuring_pattern_expected; - case 12: return ts.Diagnostics.Argument_expression_expected; - case 13: return ts.Diagnostics.Property_assignment_expected; - case 14: return ts.Diagnostics.Expression_or_comma_expected; - case 15: return ts.Diagnostics.Parameter_declaration_expected; - case 16: return ts.Diagnostics.Type_parameter_declaration_expected; - case 17: return ts.Diagnostics.Type_argument_expected; - case 18: return ts.Diagnostics.Type_expected; - case 19: return ts.Diagnostics.Unexpected_token_expected; + case 0: + return ts.Diagnostics.Declaration_or_statement_expected; + case 1: + return ts.Diagnostics.Declaration_or_statement_expected; + case 2: + return ts.Diagnostics.Statement_expected; + case 3: + return ts.Diagnostics.case_or_default_expected; + case 4: + return ts.Diagnostics.Statement_expected; + case 5: + return ts.Diagnostics.Property_or_signature_expected; + case 6: + return ts.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; + case 7: + return ts.Diagnostics.Enum_member_expected; + case 8: + return ts.Diagnostics.Expression_expected; + case 9: + return ts.Diagnostics.Variable_declaration_expected; + case 10: + return ts.Diagnostics.Property_destructuring_pattern_expected; + case 11: + return ts.Diagnostics.Array_element_destructuring_pattern_expected; + case 12: + return ts.Diagnostics.Argument_expression_expected; + case 13: + return ts.Diagnostics.Property_assignment_expected; + case 14: + return ts.Diagnostics.Expression_or_comma_expected; + case 15: + return ts.Diagnostics.Parameter_declaration_expected; + case 16: + return ts.Diagnostics.Type_parameter_declaration_expected; + case 17: + return ts.Diagnostics.Type_argument_expected; + case 18: + return ts.Diagnostics.Type_expected; + case 19: + return ts.Diagnostics.Unexpected_token_expected; + case 20: + return ts.Diagnostics.Identifier_expected; } } ; function modifierToFlag(token) { switch (token) { - case 108: return 128; - case 107: return 16; - case 106: return 64; - case 105: return 32; - case 77: return 1; - case 113: return 2; - case 69: return 4096; + case 110: + return 128; + case 109: + return 16; + case 108: + return 64; + case 107: + return 32; + case 78: + return 1; + case 115: + return 2; + case 70: + return 8192; + case 73: + return 256; } return 0; } ts.modifierToFlag = modifierToFlag; function fixupParentReferences(sourceFile) { + // normally parent references are set during binding. However, for clients that only need + // a syntax tree, and no semantic features, then the binding process is an unnecessary + // overhead. This functions allows us to set all the parents, without all the expense of + // binding. var parent = sourceFile; forEachChild(sourceFile, visitNode); return; @@ -3728,7 +9736,7 @@ var ts; switch (node.kind) { case 8: case 7: - case 64: + case 65: return true; } return false; @@ -3758,8 +9766,9 @@ var ts; array._children = undefined; array.pos += delta; array.end += delta; - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } } } @@ -3821,8 +9830,9 @@ var ts; array.intersectsChange = true; array._children = undefined; adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } return; } @@ -3936,8 +9946,7 @@ var ts; } ts.updateSourceFile = updateSourceFile; function isEvalOrArgumentsIdentifier(node) { - return node.kind === 64 && - (node.text === "eval" || node.text === "arguments"); + return node.kind === 65 && (node.text === "eval" || node.text === "arguments"); } ts.isEvalOrArgumentsIdentifier = isEvalOrArgumentsIdentifier; function isUseStrictPrologueDirective(sourceFile, node) { @@ -4014,12 +10023,13 @@ var ts; ts.createSourceFile = createSourceFile; function parseSourceFile(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes) { if (setParentNodes === void 0) { setParentNodes = false; } + var disallowInAndDecoratorContext = 2 | 16; var parsingContext = 0; var identifiers = {}; var identifierCount = 0; var nodeCount = 0; var token; - var sourceFile = createNode(210, 0); + var sourceFile = createNode(227, 0); sourceFile.pos = 0; sourceFile.end = sourceText.length; sourceFile.text = sourceText; @@ -4027,7 +10037,7 @@ var ts; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); - sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 1024 : 0; + sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 2048 : 0; var contextFlags = 0; var parseErrorBeforeNextFinishedNode = false; var scanner = ts.createScanner(languageVersion, true, sourceText, scanError); @@ -4065,6 +10075,19 @@ var ts; function setGeneratorParameterContext(val) { setContextFlag(val, 8); } + function setDecoratorContext(val) { + setContextFlag(val, 16); + } + function doOutsideOfContext(flags, func) { + var currentContextFlags = contextFlags & flags; + if (currentContextFlags) { + setContextFlag(false, currentContextFlags); + var result = func(); + setContextFlag(true, currentContextFlags); + return result; + } + return func(); + } function allowInAnd(func) { if (contextFlags & 2) { setDisallowInContext(false); @@ -4101,6 +10124,15 @@ var ts; } return func(); } + function doInDecoratorContext(func) { + if (contextFlags & 16) { + return func(); + } + setDecoratorContext(true); + var result = func(); + setDecoratorContext(false); + return result; + } function inYieldContext() { return (contextFlags & 4) !== 0; } @@ -4113,6 +10145,9 @@ var ts; function inDisallowInContext() { return (contextFlags & 2) !== 0; } + function inDecoratorContext() { + return (contextFlags & 16) !== 0; + } function parseErrorAtCurrentToken(message, arg0) { var start = scanner.getTokenPos(); var length = scanner.getTextPos() - start; @@ -4171,13 +10206,13 @@ var ts; return speculationHelper(callback, false); } function isIdentifier() { - if (token === 64) { + if (token === 65) { return true; } - if (token === 109 && inYieldContext()) { + if (token === 111 && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 109 : token > 100; + return inStrictModeContext() ? token > 111 : token > 101; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -4201,12 +10236,13 @@ var ts; } function parseOptionalToken(t) { if (token === t) { - var node = createNode(t); - nextToken(); - return finishNode(node); + return parseTokenNode(); } return undefined; } + function parseExpectedToken(t, reportAtCurrentPosition, diagnosticMessage, arg0) { + return parseOptionalToken(t) || createMissingNode(t, reportAtCurrentPosition, diagnosticMessage, arg0); + } function parseTokenNode() { var node = createNode(token); nextToken(); @@ -4246,7 +10282,7 @@ var ts; } if (parseErrorBeforeNextFinishedNode) { parseErrorBeforeNextFinishedNode = false; - node.parserContextFlags |= 16; + node.parserContextFlags |= 32; } return node; } @@ -4268,12 +10304,12 @@ var ts; function createIdentifier(isIdentifier, diagnosticMessage) { identifierCount++; if (isIdentifier) { - var node = createNode(64); + var node = createNode(65); node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); } - return createMissingNode(64, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); + return createMissingNode(65, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); } function parseIdentifier(diagnosticMessage) { return createIdentifier(isIdentifier(), diagnosticMessage); @@ -4282,9 +10318,7 @@ var ts; return createIdentifier(isIdentifierOrKeyword()); } function isLiteralPropertyName() { - return isIdentifierOrKeyword() || - token === 8 || - token === 7; + return isIdentifierOrKeyword() || token === 8 || token === 7; } function parsePropertyName() { if (token === 8 || token === 7) { @@ -4296,7 +10330,7 @@ var ts; return parseIdentifierName(); } function parseComputedPropertyName() { - var node = createNode(124); + var node = createNode(127); parseExpected(18); var yieldContext = inYieldContext(); if (inGeneratorParameterContext()) { @@ -4320,8 +10354,18 @@ var ts; return ts.isModifier(token) && tryParse(nextTokenCanFollowContextualModifier); } function nextTokenCanFollowContextualModifier() { - if (token === 69) { - return nextToken() === 76; + if (token === 70) { + return nextToken() === 77; + } + if (token === 78) { + nextToken(); + if (token === 73) { + return lookAhead(nextTokenIsClassOrFunction); + } + return token !== 35 && token !== 14 && canFollowModifier(); + } + if (token === 73) { + return nextTokenIsClassOrFunction(); } nextToken(); return canFollowModifier(); @@ -4329,6 +10373,10 @@ var ts; function canFollowModifier() { return token === 18 || token === 14 || token === 35 || isLiteralPropertyName(); } + function nextTokenIsClassOrFunction() { + nextToken(); + return token === 69 || token === 83; + } function isListElement(parsingContext, inErrorRecovery) { var node = currentNode(parsingContext); if (node) { @@ -4342,11 +10390,11 @@ var ts; case 4: return isStartOfStatement(inErrorRecovery); case 3: - return token === 66 || token === 72; + return token === 67 || token === 73; case 5: return isStartOfTypeMember(); case 6: - return lookAhead(isClassMemberStart); + return lookAhead(isClassMemberStart) || (token === 22 && !inErrorRecovery); case 7: return token === 18 || isLiteralPropertyName(); case 13: @@ -4354,7 +10402,15 @@ var ts; case 10: return isLiteralPropertyName(); case 8: - return isIdentifier() && !isNotHeritageClauseTypeName(); + if (token === 14) { + return lookAhead(isValidHeritageClauseObjectLiteral); + } + if (!inErrorRecovery) { + return isStartOfLeftHandSideExpression() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + else { + return isIdentifier() && !isHeritageClauseExtendsOrImplementsKeyword(); + } case 9: return isIdentifierOrPattern(); case 11: @@ -4371,20 +10427,33 @@ var ts; return token === 23 || isStartOfType(); case 19: return isHeritageClause(); + case 20: + return isIdentifierOrKeyword(); } ts.Debug.fail("Non-exhaustive case in 'isListElement'."); } + function isValidHeritageClauseObjectLiteral() { + ts.Debug.assert(token === 14); + if (nextToken() === 15) { + var next = nextToken(); + return next === 23 || next === 14 || next === 79 || next === 103; + } + return true; + } function nextTokenIsIdentifier() { nextToken(); return isIdentifier(); } - function isNotHeritageClauseTypeName() { - if (token === 101 || - token === 78) { - return lookAhead(nextTokenIsIdentifier); + function isHeritageClauseExtendsOrImplementsKeyword() { + if (token === 103 || token === 79) { + return lookAhead(nextTokenIsStartOfExpression); } return false; } + function nextTokenIsStartOfExpression() { + nextToken(); + return isStartOfExpression(); + } function isListTerminator(kind) { if (token === 1) { return true; @@ -4398,15 +10467,16 @@ var ts; case 7: case 13: case 10: + case 20: return token === 15; case 4: - return token === 15 || token === 66 || token === 72; + return token === 15 || token === 67 || token === 73; case 8: - return token === 14 || token === 78 || token === 101; + return token === 14 || token === 79 || token === 103; case 9: return isVariableDeclaratorListTerminator(); case 16: - return token === 25 || token === 16 || token === 14 || token === 78 || token === 101; + return token === 25 || token === 16 || token === 14 || token === 79 || token === 103; case 12: return token === 17 || token === 22; case 14: @@ -4434,7 +10504,7 @@ var ts; return false; } function isInSomeParsingContext() { - for (var kind = 0; kind < 20; kind++) { + for (var kind = 0; kind < 21; kind++) { if (parsingContext & (1 << kind)) { if (isListElement(kind, true) || isListTerminator(kind)) { return true; @@ -4499,7 +10569,7 @@ var ts; if (ts.containsParseError(node)) { return undefined; } - var nodeContextFlags = node.parserContextFlags & 31; + var nodeContextFlags = node.parserContextFlags & 63; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -4533,24 +10603,26 @@ var ts; case 15: return isReusableParameter(node); case 19: - case 8: case 16: case 18: case 17: case 12: case 13: + case 8: } return false; } function isReusableModuleElement(node) { if (node) { switch (node.kind) { - case 200: + case 209: + case 208: + case 215: + case 214: case 201: - case 194: - case 195: - case 198: - case 197: + case 202: + case 205: + case 204: return true; } return isReusableStatement(node); @@ -4560,12 +10632,13 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 131: + case 135: + case 140: + case 134: case 136: - case 130: + case 137: case 132: - case 133: - case 128: + case 178: return true; } } @@ -4574,8 +10647,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 203: - case 204: + case 220: + case 221: return true; } } @@ -4584,56 +10657,56 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 193: - case 173: - case 172: - case 176: - case 175: - case 188: - case 184: - case 186: + case 200: + case 180: + case 179: case 183: case 182: - case 180: - case 181: - case 179: - case 178: - case 185: - case 174: + case 195: + case 191: + case 193: + case 190: case 189: case 187: - case 177: - case 190: + case 188: + case 186: + case 185: + case 192: + case 181: + case 196: + case 194: + case 184: + case 197: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 209; + return node.kind === 226; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 135: - case 129: - case 136: - case 127: - case 134: + case 139: + case 133: + case 140: + case 131: + case 138: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 191) { + if (node.kind !== 198) { return false; } var variableDeclarator = node; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 126) { + if (node.kind !== 129) { return false; } var parameter = node; @@ -4702,7 +10775,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(20)) { - var node = createNode(123, entity.pos); + var node = createNode(126, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -4713,13 +10786,13 @@ var ts; if (scanner.hasPrecedingLineBreak() && scanner.isReservedWord()) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { - return createMissingNode(64, true, ts.Diagnostics.Identifier_expected); + return createMissingNode(65, true, ts.Diagnostics.Identifier_expected); } } return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(167); + var template = createNode(171); template.head = parseLiteralNode(); ts.Debug.assert(template.head.kind === 11, "Template head has wrong token kind"); var templateSpans = []; @@ -4732,7 +10805,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(171); + var span = createNode(176); span.expression = allowInAnd(parseExpression); var literal; if (token === 15) { @@ -4740,7 +10813,7 @@ var ts; literal = parseLiteralNode(); } else { - literal = createMissingNode(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); + literal = parseExpectedToken(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); } span.literal = literal; return finishNode(span); @@ -4749,6 +10822,9 @@ var ts; var node = createNode(token); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; + if (scanner.hasExtendedUnicodeEscape()) { + node.hasExtendedUnicodeEscape = true; + } if (scanner.isUnterminated()) { node.isUnterminated = true; } @@ -4756,12 +10832,12 @@ var ts; nextToken(); finishNode(node); if (node.kind === 7 && sourceText.charCodeAt(tokenPos) === 48 && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { - node.flags |= 8192; + node.flags |= 16384; } return node; } function parseTypeReference() { - var node = createNode(137); + var node = createNode(141); node.typeName = parseEntityName(false, ts.Diagnostics.Type_expected); if (!scanner.hasPrecedingLineBreak() && token === 24) { node.typeArguments = parseBracketedList(17, parseType, 24, 25); @@ -4769,15 +10845,15 @@ var ts; return finishNode(node); } function parseTypeQuery() { - var node = createNode(140); - parseExpected(96); + var node = createNode(144); + parseExpected(97); node.exprName = parseEntityName(true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(125); + var node = createNode(128); node.name = parseIdentifier(); - if (parseOptional(78)) { + if (parseOptional(79)) { if (isStartOfType() || !isStartOfExpression()) { node.constraint = parseType(); } @@ -4799,7 +10875,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 21 || isIdentifierOrPattern() || ts.isModifier(token); + return token === 21 || isIdentifierOrPattern() || ts.isModifier(token) || token === 52; } function setModifiers(node, modifiers) { if (modifiers) { @@ -4808,7 +10884,8 @@ var ts; } } function parseParameter() { - var node = createNode(126); + var node = createNode(129); + node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(21); node.name = inGeneratorParameterContext() ? doInYieldContext(parseIdentifierOrPattern) : parseIdentifierOrPattern(); @@ -4852,15 +10929,15 @@ var ts; return requireCompleteParameterList ? undefined : createMissingList(); } function parseTypeMemberSemicolon() { - if (parseSemicolon()) { + if (parseOptional(23)) { return; } - parseOptional(23); + parseSemicolon(); } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 135) { - parseExpected(87); + if (kind === 139) { + parseExpected(88); } fillSignature(51, false, false, node); parseTypeMemberSemicolon(); @@ -4898,9 +10975,9 @@ var ts; nextToken(); return token === 51 || token === 23 || token === 19; } - function parseIndexSignatureDeclaration(modifiers) { - var fullStart = modifiers ? modifiers.pos : scanner.getStartPos(); - var node = createNode(136, fullStart); + function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { + var node = createNode(140, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(15, parseParameter, 18, 19); node.type = parseTypeAnnotation(); @@ -4912,7 +10989,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (token === 16 || token === 24) { - var method = createNode(129, fullStart); + var method = createNode(133, fullStart); method.name = name; method.questionToken = questionToken; fillSignature(51, false, false, method); @@ -4920,7 +10997,7 @@ var ts; return finishNode(method); } else { - var property = createNode(127, fullStart); + var property = createNode(131, fullStart); property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); @@ -4952,22 +11029,18 @@ var ts; } function isTypeMemberWithLiteralPropertyName() { nextToken(); - return token === 16 || - token === 24 || - token === 50 || - token === 51 || - canParseSemicolon(); + return token === 16 || token === 24 || token === 50 || token === 51 || canParseSemicolon(); } function parseTypeMember() { switch (token) { case 16: case 24: - return parseSignatureMember(134); + return parseSignatureMember(138); case 18: - return isIndexSignature() ? parseIndexSignatureDeclaration(undefined) : parsePropertyOrMethodSignature(); - case 87: + return isIndexSignature() ? parseIndexSignatureDeclaration(scanner.getStartPos(), undefined, undefined) : parsePropertyOrMethodSignature(); + case 88: if (lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(135); + return parseSignatureMember(139); } case 8: case 7: @@ -4985,15 +11058,17 @@ var ts; } } function parseIndexSignatureWithModifiers() { + var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - return isIndexSignature() ? parseIndexSignatureDeclaration(modifiers) : undefined; + return isIndexSignature() ? parseIndexSignatureDeclaration(fullStart, decorators, modifiers) : undefined; } function isStartOfConstructSignature() { nextToken(); return token === 16 || token === 24; } function parseTypeLiteral() { - var node = createNode(141); + var node = createNode(145); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -5009,12 +11084,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(143); + var node = createNode(147); node.elementTypes = parseBracketedList(18, parseType, 18, 19); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(145); + var node = createNode(149); parseExpected(16); node.type = parseType(); parseExpected(17); @@ -5022,8 +11097,8 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 139) { - parseExpected(87); + if (kind === 143) { + parseExpected(88); } fillSignature(32, false, false, node); return finishNode(node); @@ -5034,16 +11109,16 @@ var ts; } function parseNonArrayType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: + case 113: + case 122: var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); - case 98: + case 99: return parseTokenNode(); - case 96: + case 97: return parseTypeQuery(); case 14: return parseTypeLiteral(); @@ -5057,17 +11132,17 @@ var ts; } function isStartOfType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: - case 96: + case 113: + case 122: + case 99: + case 97: case 14: case 18: case 24: - case 87: + case 88: return true; case 16: return lookAhead(isStartOfParenthesizedOrFunctionType); @@ -5083,7 +11158,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(18)) { parseExpected(19); - var node = createNode(142, type.pos); + var node = createNode(146, type.pos); node.elementType = type; type = finishNode(node); } @@ -5092,13 +11167,15 @@ var ts; function parseUnionTypeOrHigher() { var type = parseArrayTypeOrHigher(); if (token === 44) { - var types = [type]; + var types = [ + type + ]; types.pos = type.pos; while (parseOptional(44)) { types.push(parseArrayTypeOrHigher()); } types.end = getNodeEnd(); - var node = createNode(144, type.pos); + var node = createNode(148, type.pos); node.types = types; type = finishNode(node); } @@ -5117,9 +11194,7 @@ var ts; } if (isIdentifier() || ts.isModifier(token)) { nextToken(); - if (token === 51 || token === 23 || - token === 50 || token === 52 || - isIdentifier() || ts.isModifier(token)) { + if (token === 51 || token === 23 || token === 50 || token === 53 || isIdentifier() || ts.isModifier(token)) { return true; } if (token === 17) { @@ -5143,23 +11218,23 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(138); + return parseFunctionOrConstructorType(142); } - if (token === 87) { - return parseFunctionOrConstructorType(139); + if (token === 88) { + return parseFunctionOrConstructorType(143); } return parseUnionTypeOrHigher(); } function parseTypeAnnotation() { return parseOptional(51) ? parseType() : undefined; } - function isStartOfExpression() { + function isStartOfLeftHandSideExpression() { switch (token) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 7: case 8: case 10: @@ -5167,22 +11242,33 @@ var ts; case 16: case 18: case 14: - case 82: - case 87: + case 83: + case 69: + case 88: case 36: - case 56: + case 57: + case 65: + return true; + default: + return isIdentifier(); + } + } + function isStartOfExpression() { + if (isStartOfLeftHandSideExpression()) { + return true; + } + switch (token) { case 33: case 34: case 47: case 46: - case 73: - case 96: - case 98: + case 74: + case 97: + case 99: case 38: case 39: case 24: - case 64: - case 109: + case 111: return true; default: if (isBinaryOperator()) { @@ -5192,26 +11278,45 @@ var ts; } } function isStartOfExpressionStatement() { - return token !== 14 && token !== 82 && isStartOfExpression(); + return token !== 14 && token !== 83 && token !== 69 && token !== 52 && isStartOfExpression(); } function parseExpression() { + // Expression[in]: + // AssignmentExpression[in] + // Expression[in] , AssignmentExpression[in] + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var expr = parseAssignmentExpressionOrHigher(); var operatorToken; while ((operatorToken = parseOptionalToken(23))) { expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } + if (saveDecoratorContext) { + setDecoratorContext(true); + } return expr; } function parseInitializer(inParameter) { - if (token !== 52) { + if (token !== 53) { if (scanner.hasPrecedingLineBreak() || (inParameter && token === 14) || !isStartOfExpression()) { return undefined; } } - parseExpected(52); + parseExpected(53); return parseAssignmentExpressionOrHigher(); } function parseAssignmentExpressionOrHigher() { + // AssignmentExpression[in,yield]: + // 1) ConditionalExpression[?in,?yield] + // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield] + // 3) LeftHandSideExpression AssignmentOperator AssignmentExpression[?in,?yield] + // 4) ArrowFunctionExpression[?in,?yield] + // 5) [+Yield] YieldExpression[?In] + // + // Note: for ease of implementation we treat productions '2' and '3' as the same thing. + // (i.e. they're both BinaryExpressions with an assignment operator in it). if (isYieldExpression()) { return parseYieldExpression(); } @@ -5220,7 +11325,7 @@ var ts; return arrowExpression; } var expr = parseBinaryExpressionOrHigher(0); - if (expr.kind === 64 && token === 32) { + if (expr.kind === 65 && token === 32) { return parseSimpleArrowFunctionExpression(expr); } if (isLeftHandSideExpression(expr) && isAssignmentOperator(reScanGreaterToken())) { @@ -5229,7 +11334,7 @@ var ts; return parseConditionalExpressionRest(expr); } function isYieldExpression() { - if (token === 109) { + if (token === 111) { if (inYieldContext()) { return true; } @@ -5244,11 +11349,14 @@ var ts; nextToken(); return !scanner.hasPrecedingLineBreak() && isIdentifier(); } - function parseYieldExpression() { - var node = createNode(168); + function nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine() { nextToken(); - if (!scanner.hasPrecedingLineBreak() && - (token === 35 || isStartOfExpression())) { + return !scanner.hasPrecedingLineBreak() && (isIdentifier() || token === 14 || token === 18); + } + function parseYieldExpression() { + var node = createNode(172); + nextToken(); + if (!scanner.hasPrecedingLineBreak() && (token === 35 || isStartOfExpression())) { node.asteriskToken = parseOptionalToken(35); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); @@ -5259,14 +11367,16 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 32, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(159, identifier.pos); - var parameter = createNode(126, identifier.pos); + var node = createNode(163, identifier.pos); + var parameter = createNode(129, identifier.pos); parameter.name = identifier; finishNode(parameter); - node.parameters = [parameter]; + node.parameters = [ + parameter + ]; node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - parseExpected(32); + node.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(); return finishNode(node); } @@ -5279,12 +11389,9 @@ var ts; if (!arrowFunction) { return undefined; } - if (parseExpected(32) || token === 14) { - arrowFunction.body = parseArrowFunctionExpressionBody(); - } - else { - arrowFunction.body = parseIdentifier(); - } + var lastToken = token; + arrowFunction.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); + arrowFunction.body = (lastToken === 32 || lastToken === 14) ? parseArrowFunctionExpressionBody() : parseIdentifier(); return finishNode(arrowFunction); } function isParenthesizedArrowFunctionExpression() { @@ -5334,7 +11441,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(159); + var node = createNode(163); fillSignature(51, false, !allowAmbiguity, node); if (!node.parameters) { return undefined; @@ -5348,19 +11455,21 @@ var ts; if (token === 14) { return parseFunctionBlock(false, false); } - if (isStartOfStatement(true) && !isStartOfExpressionStatement() && token !== 82) { + if (isStartOfStatement(true) && !isStartOfExpressionStatement() && token !== 83 && token !== 69) { return parseFunctionBlock(false, true); } return parseAssignmentExpressionOrHigher(); } function parseConditionalExpressionRest(leftOperand) { - if (!parseOptional(50)) { + var questionToken = parseOptionalToken(50); + if (!questionToken) { return leftOperand; } - var node = createNode(166, leftOperand.pos); + var node = createNode(170, leftOperand.pos); node.condition = leftOperand; - node.whenTrue = allowInAnd(parseAssignmentExpressionOrHigher); - parseExpected(51); + node.questionToken = questionToken; + node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); + node.colonToken = parseExpectedToken(51, false, ts.Diagnostics._0_expected, ts.tokenToString(51)); node.whenFalse = parseAssignmentExpressionOrHigher(); return finishNode(node); } @@ -5369,7 +11478,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 85 || t === 122; + return t === 86 || t === 125; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -5378,7 +11487,7 @@ var ts; if (newPrecedence <= precedence) { break; } - if (token === 85 && inDisallowInContext()) { + if (token === 86 && inDisallowInContext()) { break; } leftOperand = makeBinaryExpression(leftOperand, parseTokenNode(), parseBinaryExpressionOrHigher(newPrecedence)); @@ -5386,7 +11495,7 @@ var ts; return leftOperand; } function isBinaryOperator() { - if (inDisallowInContext() && token === 85) { + if (inDisallowInContext() && token === 86) { return false; } return getBinaryOperatorPrecedence() > 0; @@ -5412,8 +11521,8 @@ var ts; case 25: case 26: case 27: + case 87: case 86: - case 85: return 7; case 40: case 41: @@ -5430,33 +11539,33 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(165, left.pos); + var node = createNode(169, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(163); + var node = createNode(167); node.operator = token; nextToken(); node.operand = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(160); + var node = createNode(164); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(161); + var node = createNode(165); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(162); + var node = createNode(166); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); @@ -5470,11 +11579,11 @@ var ts; case 38: case 39: return parsePrefixUnaryExpression(); - case 73: + case 74: return parseDeleteExpression(); - case 96: + case 97: return parseTypeOfExpression(); - case 98: + case 99: return parseVoidExpression(); case 24: return parseTypeAssertion(); @@ -5486,7 +11595,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(isLeftHandSideExpression(expression)); if ((token === 38 || token === 39) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(164, expression.pos); + var node = createNode(168, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -5495,7 +11604,7 @@ var ts; return expression; } function parseLeftHandSideExpressionOrHigher() { - var expression = token === 90 ? parseSuperExpression() : parseMemberExpressionOrHigher(); + var expression = token === 91 ? parseSuperExpression() : parseMemberExpressionOrHigher(); return parseCallExpressionRest(expression); } function parseMemberExpressionOrHigher() { @@ -5507,14 +11616,14 @@ var ts; if (token === 16 || token === 20) { return expression; } - var node = createNode(151, expression.pos); + var node = createNode(155, expression.pos); node.expression = expression; - parseExpected(20, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); + node.dotToken = parseExpectedToken(20, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); return finishNode(node); } function parseTypeAssertion() { - var node = createNode(156); + var node = createNode(160); parseExpected(24); node.type = parseType(); parseExpected(25); @@ -5523,16 +11632,17 @@ var ts; } function parseMemberExpressionRest(expression) { while (true) { - var dotOrBracketStart = scanner.getTokenPos(); - if (parseOptional(20)) { - var propertyAccess = createNode(151, expression.pos); + var dotToken = parseOptionalToken(20); + if (dotToken) { + var propertyAccess = createNode(155, expression.pos); propertyAccess.expression = expression; + propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); expression = finishNode(propertyAccess); continue; } - if (parseOptional(18)) { - var indexedAccess = createNode(152, expression.pos); + if (!inDecoratorContext() && parseOptional(18)) { + var indexedAccess = createNode(156, expression.pos); indexedAccess.expression = expression; if (token !== 19) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -5546,7 +11656,7 @@ var ts; continue; } if (token === 10 || token === 11) { - var tagExpression = createNode(155, expression.pos); + var tagExpression = createNode(159, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 10 ? parseLiteralNode() : parseTemplateExpression(); expression = finishNode(tagExpression); @@ -5563,7 +11673,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -5571,7 +11681,7 @@ var ts; continue; } else if (token === 16) { - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -5604,7 +11714,6 @@ var ts; case 19: case 51: case 22: - case 23: case 50: case 28: case 30: @@ -5618,6 +11727,8 @@ var ts; case 15: case 1: return true; + case 23: + case 14: default: return false; } @@ -5628,11 +11739,11 @@ var ts; case 8: case 10: return parseLiteralNode(); - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: return parseTokenNode(); case 16: return parseParenthesizedExpression(); @@ -5640,12 +11751,14 @@ var ts; return parseArrayLiteralExpression(); case 14: return parseObjectLiteralExpression(); - case 82: + case 69: + return parseClassExpression(); + case 83: return parseFunctionExpression(); - case 87: + case 88: return parseNewExpression(); case 36: - case 56: + case 57: if (reScanSlashToken() === 9) { return parseLiteralNode(); } @@ -5656,46 +11769,47 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(157); + var node = createNode(161); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); return finishNode(node); } function parseSpreadElement() { - var node = createNode(169); + var node = createNode(173); parseExpected(21); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { - return token === 21 ? parseSpreadElement() : token === 23 ? createNode(170) : parseAssignmentExpressionOrHigher(); + return token === 21 ? parseSpreadElement() : token === 23 ? createNode(175) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { - return allowInAnd(parseArgumentOrArrayLiteralElement); + return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(149); + var node = createNode(153); parseExpected(18); if (scanner.hasPrecedingLineBreak()) - node.flags |= 256; + node.flags |= 512; node.elements = parseDelimitedList(14, parseArgumentOrArrayLiteralElement); parseExpected(19); return finishNode(node); } - function tryParseAccessorDeclaration(fullStart, modifiers) { - if (parseContextualModifier(114)) { - return parseAccessorDeclaration(132, fullStart, modifiers); + function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { + if (parseContextualModifier(116)) { + return parseAccessorDeclaration(136, fullStart, decorators, modifiers); } - else if (parseContextualModifier(118)) { - return parseAccessorDeclaration(133, fullStart, modifiers); + else if (parseContextualModifier(120)) { + return parseAccessorDeclaration(137, fullStart, decorators, modifiers); } return undefined; } function parseObjectLiteralElement() { var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } @@ -5705,16 +11819,16 @@ var ts; var propertyName = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, propertyName, questionToken); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, propertyName, questionToken); } if ((token === 23 || token === 15) && tokenIsIdentifier) { - var shorthandDeclaration = createNode(208, fullStart); + var shorthandDeclaration = createNode(225, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(207, fullStart); + var propertyAssignment = createNode(224, fullStart); propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(51); @@ -5723,30 +11837,37 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(150); + var node = createNode(154); parseExpected(14); if (scanner.hasPrecedingLineBreak()) { - node.flags |= 256; + node.flags |= 512; } node.properties = parseDelimitedList(13, parseObjectLiteralElement, true); parseExpected(15); return finishNode(node); } function parseFunctionExpression() { - var node = createNode(158); - parseExpected(82); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var node = createNode(162); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); node.name = node.asteriskToken ? doInYieldContext(parseOptionalIdentifier) : parseOptionalIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlock(!!node.asteriskToken, false); + if (saveDecoratorContext) { + setDecoratorContext(true); + } return finishNode(node); } function parseOptionalIdentifier() { return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(154); - parseExpected(87); + var node = createNode(158); + parseExpected(88); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); if (node.typeArguments || token === 16) { @@ -5755,7 +11876,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, checkForStrictMode, diagnosticMessage) { - var node = createNode(172); + var node = createNode(179); if (parseExpected(14, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(2, checkForStrictMode, parseStatement); parseExpected(15); @@ -5768,30 +11889,37 @@ var ts; function parseFunctionBlock(allowYield, ignoreMissingOpenBrace, diagnosticMessage) { var savedYieldContext = inYieldContext(); setYieldContext(allowYield); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var block = parseBlock(ignoreMissingOpenBrace, true, diagnosticMessage); + if (saveDecoratorContext) { + setDecoratorContext(true); + } setYieldContext(savedYieldContext); return block; } function parseEmptyStatement() { - var node = createNode(174); + var node = createNode(181); parseExpected(22); return finishNode(node); } function parseIfStatement() { - var node = createNode(176); - parseExpected(83); + var node = createNode(183); + parseExpected(84); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); node.thenStatement = parseStatement(); - node.elseStatement = parseOptional(75) ? parseStatement() : undefined; + node.elseStatement = parseOptional(76) ? parseStatement() : undefined; return finishNode(node); } function parseDoStatement() { - var node = createNode(177); - parseExpected(74); + var node = createNode(184); + parseExpected(75); node.statement = parseStatement(); - parseExpected(99); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -5799,8 +11927,8 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(178); - parseExpected(99); + var node = createNode(185); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -5809,11 +11937,11 @@ var ts; } function parseForOrForInOrForOfStatement() { var pos = getNodePos(); - parseExpected(81); + parseExpected(82); parseExpected(16); var initializer = undefined; if (token !== 22) { - if (token === 97 || token === 103 || token === 69) { + if (token === 98 || token === 105 || token === 70) { initializer = parseVariableDeclarationList(true); } else { @@ -5821,22 +11949,22 @@ var ts; } } var forOrForInOrForOfStatement; - if (parseOptional(85)) { - var forInStatement = createNode(180, pos); + if (parseOptional(86)) { + var forInStatement = createNode(187, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(17); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(122)) { - var forOfStatement = createNode(181, pos); + else if (parseOptional(125)) { + var forOfStatement = createNode(188, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(17); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(179, pos); + var forStatement = createNode(186, pos); forStatement.initializer = initializer; parseExpected(22); if (token !== 22 && token !== 17) { @@ -5854,7 +11982,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 183 ? 65 : 70); + parseExpected(kind === 190 ? 66 : 71); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -5862,8 +11990,8 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(184); - parseExpected(89); + var node = createNode(191); + parseExpected(90); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); } @@ -5871,8 +11999,8 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(185); - parseExpected(100); + var node = createNode(192); + parseExpected(101); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -5880,79 +12008,83 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(203); - parseExpected(66); + var node = createNode(220); + parseExpected(67); node.expression = allowInAnd(parseExpression); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseDefaultClause() { - var node = createNode(204); - parseExpected(72); + var node = createNode(221); + parseExpected(73); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseCaseOrDefaultClause() { - return token === 66 ? parseCaseClause() : parseDefaultClause(); + return token === 67 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(186); - parseExpected(91); + var node = createNode(193); + parseExpected(92); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); + var caseBlock = createNode(207, scanner.getStartPos()); parseExpected(14); - node.clauses = parseList(3, false, parseCaseOrDefaultClause); + caseBlock.clauses = parseList(3, false, parseCaseOrDefaultClause); parseExpected(15); + node.caseBlock = finishNode(caseBlock); return finishNode(node); } function parseThrowStatement() { - var node = createNode(188); - parseExpected(93); + // ThrowStatement[Yield] : + // throw [no LineTerminator here]Expression[In, ?Yield]; + var node = createNode(195); + parseExpected(94); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(189); - parseExpected(95); + var node = createNode(196); + parseExpected(96); node.tryBlock = parseBlock(false, false); - node.catchClause = token === 67 ? parseCatchClause() : undefined; - if (!node.catchClause || token === 80) { - parseExpected(80); + node.catchClause = token === 68 ? parseCatchClause() : undefined; + if (!node.catchClause || token === 81) { + parseExpected(81); node.finallyBlock = parseBlock(false, false); } return finishNode(node); } function parseCatchClause() { - var result = createNode(206); - parseExpected(67); - parseExpected(16); - result.name = parseIdentifier(); - result.type = parseTypeAnnotation(); + var result = createNode(223); + parseExpected(68); + if (parseExpected(16)) { + result.variableDeclaration = parseVariableDeclaration(); + } parseExpected(17); result.block = parseBlock(false, false); return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(190); - parseExpected(71); + var node = createNode(197); + parseExpected(72); parseSemicolon(); return finishNode(node); } function parseExpressionOrLabeledStatement() { var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); - if (expression.kind === 64 && parseOptional(51)) { - var labeledStatement = createNode(187, fullStart); + if (expression.kind === 65 && parseOptional(51)) { + var labeledStatement = createNode(194, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(175, fullStart); + var expressionStatement = createNode(182, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -5960,7 +12092,7 @@ var ts; } function isStartOfStatement(inErrorRecovery) { if (ts.isModifier(token)) { - var result = lookAhead(parseVariableStatementOrFunctionDeclarationWithModifiers); + var result = lookAhead(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return true; } @@ -5969,39 +12101,39 @@ var ts; case 22: return !inErrorRecovery; case 14: - case 97: - case 103: - case 82: + case 98: + case 105: case 83: - case 74: - case 99: - case 81: - case 70: - case 65: - case 89: - case 100: - case 91: - case 93: - case 95: - case 71: - case 67: - case 80: - return true; case 69: + case 84: + case 75: + case 100: + case 82: + case 71: + case 66: + case 90: + case 101: + case 92: + case 94: + case 96: + case 72: + case 68: + case 81: + return true; + case 70: var isConstEnum = lookAhead(nextTokenIsEnumKeyword); return !isConstEnum; - case 102: - case 68: - case 115: - case 76: - case 121: + case 104: + case 117: + case 77: + case 123: if (isDeclarationStart()) { return false; } + case 109: case 107: - case 105: - case 106: case 108: + case 110: if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) { return false; } @@ -6011,7 +12143,7 @@ var ts; } function nextTokenIsEnumKeyword() { nextToken(); - return token === 76; + return token === 77; } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); @@ -6021,46 +12153,48 @@ var ts; switch (token) { case 14: return parseBlock(false, false); - case 97: + case 98: + case 70: + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); + case 83: + return parseFunctionDeclaration(scanner.getStartPos(), undefined, undefined); case 69: - return parseVariableStatement(scanner.getStartPos(), undefined); - case 82: - return parseFunctionDeclaration(scanner.getStartPos(), undefined); + return parseClassDeclaration(scanner.getStartPos(), undefined, undefined); case 22: return parseEmptyStatement(); - case 83: + case 84: return parseIfStatement(); - case 74: + case 75: return parseDoStatement(); - case 99: - return parseWhileStatement(); - case 81: - return parseForOrForInOrForOfStatement(); - case 70: - return parseBreakOrContinueStatement(182); - case 65: - return parseBreakOrContinueStatement(183); - case 89: - return parseReturnStatement(); case 100: - return parseWithStatement(); - case 91: - return parseSwitchStatement(); - case 93: - return parseThrowStatement(); - case 95: - case 67: - case 80: - return parseTryStatement(); + return parseWhileStatement(); + case 82: + return parseForOrForInOrForOfStatement(); case 71: + return parseBreakOrContinueStatement(189); + case 66: + return parseBreakOrContinueStatement(190); + case 90: + return parseReturnStatement(); + case 101: + return parseWithStatement(); + case 92: + return parseSwitchStatement(); + case 94: + return parseThrowStatement(); + case 96: + case 68: + case 81: + return parseTryStatement(); + case 72: return parseDebuggerStatement(); - case 103: + case 105: if (isLetDeclaration()) { - return parseVariableStatement(scanner.getStartPos(), undefined); + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); } default: - if (ts.isModifier(token)) { - var result = tryParse(parseVariableStatementOrFunctionDeclarationWithModifiers); + if (ts.isModifier(token) || token === 52) { + var result = tryParse(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return result; } @@ -6068,25 +12202,28 @@ var ts; return parseExpressionOrLabeledStatement(); } } - function parseVariableStatementOrFunctionDeclarationWithModifiers() { + function parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers() { var start = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); switch (token) { - case 69: + case 70: var nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword); if (nextTokenIsEnum) { return undefined; } - return parseVariableStatement(start, modifiers); - case 103: + return parseVariableStatement(start, decorators, modifiers); + case 105: if (!isLetDeclaration()) { return undefined; } - return parseVariableStatement(start, modifiers); - case 97: - return parseVariableStatement(start, modifiers); - case 82: - return parseFunctionDeclaration(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); + case 98: + return parseVariableStatement(start, decorators, modifiers); + case 83: + return parseFunctionDeclaration(start, decorators, modifiers); + case 69: + return parseClassDeclaration(start, decorators, modifiers); } return undefined; } @@ -6099,18 +12236,18 @@ var ts; } function parseArrayBindingElement() { if (token === 23) { - return createNode(170); + return createNode(175); } - var node = createNode(148); + var node = createNode(152); node.dotDotDotToken = parseOptionalToken(21); node.name = parseIdentifierOrPattern(); node.initializer = parseInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(148); + var node = createNode(152); var id = parsePropertyName(); - if (id.kind === 64 && token !== 51) { + if (id.kind === 65 && token !== 51) { node.name = id; } else { @@ -6122,14 +12259,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(146); + var node = createNode(150); parseExpected(14); node.elements = parseDelimitedList(10, parseObjectBindingElement); parseExpected(15); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(147); + var node = createNode(151); parseExpected(18); node.elements = parseDelimitedList(11, parseArrayBindingElement); parseExpected(19); @@ -6148,7 +12285,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(191); + var node = createNode(198); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -6157,21 +12294,21 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(192); + var node = createNode(199); switch (token) { - case 97: + case 98: break; - case 103: - node.flags |= 2048; - break; - case 69: + case 105: node.flags |= 4096; break; + case 70: + node.flags |= 8192; + break; default: ts.Debug.fail(); } nextToken(); - if (token === 122 && lookAhead(canFollowContextualOfKeyword)) { + if (token === 125 && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -6185,33 +12322,37 @@ var ts; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 17; } - function parseVariableStatement(fullStart, modifiers) { - var node = createNode(173, fullStart); + function parseVariableStatement(fullStart, decorators, modifiers) { + var node = createNode(180, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); parseSemicolon(); return finishNode(node); } - function parseFunctionDeclaration(fullStart, modifiers) { - var node = createNode(193, fullStart); + function parseFunctionDeclaration(fullStart, decorators, modifiers) { + var node = createNode(200, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(82); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); - node.name = parseIdentifier(); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlockOrSemicolon(!!node.asteriskToken, ts.Diagnostics.or_expected); return finishNode(node); } - function parseConstructorDeclaration(pos, modifiers) { - var node = createNode(131, pos); + function parseConstructorDeclaration(pos, decorators, modifiers) { + var node = createNode(135, pos); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(112); + parseExpected(114); fillSignature(51, false, false, node); node.body = parseFunctionBlockOrSemicolon(false, ts.Diagnostics.or_expected); return finishNode(node); } - function parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(130, fullStart); + function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { + var method = createNode(134, fullStart); + method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; method.name = name; @@ -6220,29 +12361,34 @@ var ts; method.body = parseFunctionBlockOrSemicolon(!!asteriskToken, diagnosticMessage); return finishNode(method); } - function parsePropertyOrMethodDeclaration(fullStart, modifiers) { + function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { + var property = createNode(132, fullStart); + property.decorators = decorators; + setModifiers(property, modifiers); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + property.initializer = allowInAnd(parseNonParameterInitializer); + parseSemicolon(); + return finishNode(property); + } + function parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers) { var asteriskToken = parseOptionalToken(35); var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); } else { - var property = createNode(128, fullStart); - setModifiers(property, modifiers); - property.name = name; - property.questionToken = questionToken; - property.type = parseTypeAnnotation(); - property.initializer = allowInAnd(parseNonParameterInitializer); - parseSemicolon(); - return finishNode(property); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken); } } function parseNonParameterInitializer() { return parseInitializer(false); } - function parseAccessorDeclaration(kind, fullStart, modifiers) { + function parseAccessorDeclaration(kind, fullStart, decorators, modifiers) { var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parsePropertyName(); fillSignature(51, false, false, node); @@ -6251,6 +12397,9 @@ var ts; } function isClassMemberStart() { var idToken; + if (token === 52) { + return true; + } while (ts.isModifier(token)) { idToken = token; nextToken(); @@ -6266,14 +12415,14 @@ var ts; return true; } if (idToken !== undefined) { - if (!ts.isKeyword(idToken) || idToken === 118 || idToken === 114) { + if (!ts.isKeyword(idToken) || idToken === 120 || idToken === 116) { return true; } switch (token) { case 16: case 24: case 51: - case 52: + case 53: case 50: return true; default: @@ -6282,6 +12431,26 @@ var ts; } return false; } + function parseDecorators() { + var decorators; + while (true) { + var decoratorStart = getNodePos(); + if (!parseOptional(52)) { + break; + } + if (!decorators) { + decorators = []; + decorators.pos = scanner.getStartPos(); + } + var decorator = createNode(130, decoratorStart); + decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); + decorators.push(finishNode(decorator)); + } + if (decorators) { + decorators.end = getNodeEnd(); + } + return decorators; + } function parseModifiers() { var flags = 0; var modifiers; @@ -6305,32 +12474,49 @@ var ts; return modifiers; } function parseClassElement() { + if (token === 22) { + var result = createNode(178); + nextToken(); + return finishNode(result); + } var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } - if (token === 112) { - return parseConstructorDeclaration(fullStart, modifiers); + if (token === 114) { + return parseConstructorDeclaration(fullStart, decorators, modifiers); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(modifiers); + return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } - if (isIdentifierOrKeyword() || - token === 8 || - token === 7 || - token === 35 || - token === 18) { - return parsePropertyOrMethodDeclaration(fullStart, modifiers); + if (isIdentifierOrKeyword() || token === 8 || token === 7 || token === 35 || token === 18) { + return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); + } + if (decorators) { + var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined); } ts.Debug.fail("Should not have attempted to parse class member declaration."); } - function parseClassDeclaration(fullStart, modifiers) { - var node = createNode(194, fullStart); + function parseClassExpression() { + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 174); + } + function parseClassDeclaration(fullStart, decorators, modifiers) { + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 201); + } + function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { + var savedStrictModeContext = inStrictModeContext(); + if (languageVersion >= 2) { + setStrictModeContext(true); + } + var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(68); - node.name = parseIdentifier(); + parseExpected(69); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(true); if (parseExpected(14)) { @@ -6340,9 +12526,14 @@ var ts; else { node.members = createMissingList(); } - return finishNode(node); + var finishedNode = finishNode(node); + setStrictModeContext(savedStrictModeContext); + return finishedNode; } function parseHeritageClauses(isClassHeritageClause) { + // ClassTail[Yield,GeneratorParameter] : See 14.5 + // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } + // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } if (isHeritageClause()) { return isClassHeritageClause && inGeneratorParameterContext() ? doOutsideOfYieldContext(parseHeritageClausesWorker) : parseHeritageClausesWorker(); } @@ -6352,51 +12543,62 @@ var ts; return parseList(19, false, parseHeritageClause); } function parseHeritageClause() { - if (token === 78 || token === 101) { - var node = createNode(205); + if (token === 79 || token === 103) { + var node = createNode(222); node.token = token; nextToken(); - node.types = parseDelimitedList(8, parseTypeReference); + node.types = parseDelimitedList(8, parseHeritageClauseElement); return finishNode(node); } return undefined; } + function parseHeritageClauseElement() { + var node = createNode(177); + node.expression = parseLeftHandSideExpressionOrHigher(); + if (token === 24) { + node.typeArguments = parseBracketedList(17, parseType, 24, 25); + } + return finishNode(node); + } function isHeritageClause() { - return token === 78 || token === 101; + return token === 79 || token === 103; } function parseClassMembers() { return parseList(6, false, parseClassElement); } - function parseInterfaceDeclaration(fullStart, modifiers) { - var node = createNode(195, fullStart); + function parseInterfaceDeclaration(fullStart, decorators, modifiers) { + var node = createNode(202, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(102); + parseExpected(104); node.name = parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(false); node.members = parseObjectTypeMembers(); return finishNode(node); } - function parseTypeAliasDeclaration(fullStart, modifiers) { - var node = createNode(196, fullStart); + function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { + var node = createNode(203, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(121); + parseExpected(123); node.name = parseIdentifier(); - parseExpected(52); + parseExpected(53); node.type = parseType(); parseSemicolon(); return finishNode(node); } function parseEnumMember() { - var node = createNode(209, scanner.getStartPos()); + var node = createNode(226, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } - function parseEnumDeclaration(fullStart, modifiers) { - var node = createNode(197, fullStart); + function parseEnumDeclaration(fullStart, decorators, modifiers) { + var node = createNode(204, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(76); + parseExpected(77); node.name = parseIdentifier(); if (parseExpected(14)) { node.members = parseDelimitedList(7, parseEnumMember); @@ -6408,7 +12610,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(199, scanner.getStartPos()); + var node = createNode(206, scanner.getStartPos()); if (parseExpected(14)) { node.statements = parseList(1, false, parseModuleElement); parseExpected(15); @@ -6418,94 +12620,210 @@ var ts; } return finishNode(node); } - function parseInternalModuleTail(fullStart, modifiers, flags) { - var node = createNode(198, fullStart); + function parseInternalModuleTail(fullStart, decorators, modifiers, flags) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); - node.body = parseOptional(20) ? parseInternalModuleTail(getNodePos(), undefined, 1) : parseModuleBlock(); + node.body = parseOptional(20) ? parseInternalModuleTail(getNodePos(), undefined, undefined, 1) : parseModuleBlock(); return finishNode(node); } - function parseAmbientExternalModuleDeclaration(fullStart, modifiers) { - var node = createNode(198, fullStart); + function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(true); node.body = parseModuleBlock(); return finishNode(node); } - function parseModuleDeclaration(fullStart, modifiers) { - parseExpected(115); - return token === 8 ? parseAmbientExternalModuleDeclaration(fullStart, modifiers) : parseInternalModuleTail(fullStart, modifiers, modifiers ? modifiers.flags : 0); + function parseModuleDeclaration(fullStart, decorators, modifiers) { + parseExpected(117); + return token === 8 ? parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) : parseInternalModuleTail(fullStart, decorators, modifiers, modifiers ? modifiers.flags : 0); } function isExternalModuleReference() { - return token === 116 && - lookAhead(nextTokenIsOpenParen); + return token === 118 && lookAhead(nextTokenIsOpenParen); } function nextTokenIsOpenParen() { return nextToken() === 16; } - function parseImportDeclaration(fullStart, modifiers) { - var node = createNode(200, fullStart); - setModifiers(node, modifiers); - parseExpected(84); - node.name = parseIdentifier(); - parseExpected(52); - node.moduleReference = parseModuleReference(); + function nextTokenIsCommaOrFromKeyword() { + nextToken(); + return token === 23 || token === 124; + } + function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { + parseExpected(85); + var afterImportPos = scanner.getStartPos(); + var identifier; + if (isIdentifier()) { + identifier = parseIdentifier(); + if (token !== 23 && token !== 124) { + var importEqualsDeclaration = createNode(208, fullStart); + importEqualsDeclaration.decorators = decorators; + setModifiers(importEqualsDeclaration, modifiers); + importEqualsDeclaration.name = identifier; + parseExpected(53); + importEqualsDeclaration.moduleReference = parseModuleReference(); + parseSemicolon(); + return finishNode(importEqualsDeclaration); + } + } + var importDeclaration = createNode(209, fullStart); + importDeclaration.decorators = decorators; + setModifiers(importDeclaration, modifiers); + if (identifier || token === 35 || token === 14) { + importDeclaration.importClause = parseImportClause(identifier, afterImportPos); + parseExpected(124); + } + importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); - return finishNode(node); + return finishNode(importDeclaration); + } + function parseImportClause(identifier, fullStart) { + //ImportClause: + // ImportedDefaultBinding + // NameSpaceImport + // NamedImports + // ImportedDefaultBinding, NameSpaceImport + // ImportedDefaultBinding, NamedImports + var importClause = createNode(210, fullStart); + if (identifier) { + importClause.name = identifier; + } + if (!importClause.name || parseOptional(23)) { + importClause.namedBindings = token === 35 ? parseNamespaceImport() : parseNamedImportsOrExports(212); + } + return finishNode(importClause); } function parseModuleReference() { return isExternalModuleReference() ? parseExternalModuleReference() : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(202); - parseExpected(116); + var node = createNode(219); + parseExpected(118); parseExpected(16); - node.expression = parseExpression(); - if (node.expression.kind === 8) { - internIdentifier(node.expression.text); - } + node.expression = parseModuleSpecifier(); parseExpected(17); return finishNode(node); } - function parseExportAssignmentTail(fullStart, modifiers) { - var node = createNode(201, fullStart); + function parseModuleSpecifier() { + var result = parseExpression(); + if (result.kind === 8) { + internIdentifier(result.text); + } + return result; + } + function parseNamespaceImport() { + var namespaceImport = createNode(211); + parseExpected(35); + parseExpected(102); + namespaceImport.name = parseIdentifier(); + return finishNode(namespaceImport); + } + function parseNamedImportsOrExports(kind) { + var node = createNode(kind); + node.elements = parseBracketedList(20, kind === 212 ? parseImportSpecifier : parseExportSpecifier, 14, 15); + return finishNode(node); + } + function parseExportSpecifier() { + return parseImportOrExportSpecifier(217); + } + function parseImportSpecifier() { + return parseImportOrExportSpecifier(213); + } + function parseImportOrExportSpecifier(kind) { + var node = createNode(kind); + var checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + var checkIdentifierStart = scanner.getTokenPos(); + var checkIdentifierEnd = scanner.getTextPos(); + var identifierName = parseIdentifierName(); + if (token === 102) { + node.propertyName = identifierName; + parseExpected(102); + checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + checkIdentifierStart = scanner.getTokenPos(); + checkIdentifierEnd = scanner.getTextPos(); + node.name = parseIdentifierName(); + } + else { + node.name = identifierName; + } + if (kind === 213 && checkIdentifierIsKeyword) { + parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); + } + return finishNode(node); + } + function parseExportDeclaration(fullStart, decorators, modifiers) { + var node = createNode(215, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - node.exportName = parseIdentifier(); + if (parseOptional(35)) { + parseExpected(124); + node.moduleSpecifier = parseModuleSpecifier(); + } + else { + node.exportClause = parseNamedImportsOrExports(216); + if (parseOptional(124)) { + node.moduleSpecifier = parseModuleSpecifier(); + } + } + parseSemicolon(); + return finishNode(node); + } + function parseExportAssignment(fullStart, decorators, modifiers) { + var node = createNode(214, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + if (parseOptional(53)) { + node.isExportEquals = true; + node.expression = parseAssignmentExpressionOrHigher(); + } + else { + parseExpected(73); + if (parseOptional(51)) { + node.type = parseType(); + } + else { + node.expression = parseAssignmentExpressionOrHigher(); + } + } parseSemicolon(); return finishNode(node); } function isLetDeclaration() { - return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOnSameLine); + return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine); } - function isDeclarationStart() { + function isDeclarationStart(followsModifier) { switch (token) { - case 97: - case 69: - case 82: + case 98: + case 70: + case 83: return true; - case 103: - return isLetDeclaration(); - case 68: - case 102: - case 76: - case 84: - case 121: - return lookAhead(nextTokenIsIdentifierOrKeyword); - case 115: - return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); - case 77: - return lookAhead(nextTokenIsEqualsTokenOrDeclarationStart); - case 113: - case 107: case 105: - case 106: + return isLetDeclaration(); + case 69: + case 104: + case 77: + case 123: + return lookAhead(nextTokenIsIdentifierOrKeyword); + case 85: + return lookAhead(nextTokenCanFollowImportKeyword); + case 117: + return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); + case 78: + return lookAhead(nextTokenCanFollowExportKeyword); + case 115: + case 109: + case 107: case 108: + case 110: return lookAhead(nextTokenIsDeclarationStart); + case 52: + return !followsModifier; } } function isIdentifierOrKeyword() { - return token >= 64; + return token >= 65; } function nextTokenIsIdentifierOrKeyword() { nextToken(); @@ -6515,43 +12833,61 @@ var ts; nextToken(); return isIdentifierOrKeyword() || token === 8; } - function nextTokenIsEqualsTokenOrDeclarationStart() { + function nextTokenCanFollowImportKeyword() { nextToken(); - return token === 52 || isDeclarationStart(); + return isIdentifierOrKeyword() || token === 8 || token === 35 || token === 14; + } + function nextTokenCanFollowExportKeyword() { + nextToken(); + return token === 53 || token === 35 || token === 14 || token === 73 || isDeclarationStart(true); } function nextTokenIsDeclarationStart() { nextToken(); - return isDeclarationStart(); + return isDeclarationStart(true); + } + function nextTokenIsAsKeyword() { + return nextToken() === 102; } function parseDeclaration() { var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - if (token === 77) { + if (token === 78) { nextToken(); - if (parseOptional(52)) { - return parseExportAssignmentTail(fullStart, modifiers); + if (token === 73 || token === 53) { + return parseExportAssignment(fullStart, decorators, modifiers); + } + if (token === 35 || token === 14) { + return parseExportDeclaration(fullStart, decorators, modifiers); } } switch (token) { - case 97: - case 103: + case 98: + case 105: + case 70: + return parseVariableStatement(fullStart, decorators, modifiers); + case 83: + return parseFunctionDeclaration(fullStart, decorators, modifiers); case 69: - return parseVariableStatement(fullStart, modifiers); - case 82: - return parseFunctionDeclaration(fullStart, modifiers); - case 68: - return parseClassDeclaration(fullStart, modifiers); - case 102: - return parseInterfaceDeclaration(fullStart, modifiers); - case 121: - return parseTypeAliasDeclaration(fullStart, modifiers); - case 76: - return parseEnumDeclaration(fullStart, modifiers); - case 115: - return parseModuleDeclaration(fullStart, modifiers); - case 84: - return parseImportDeclaration(fullStart, modifiers); + return parseClassDeclaration(fullStart, decorators, modifiers); + case 104: + return parseInterfaceDeclaration(fullStart, decorators, modifiers); + case 123: + return parseTypeAliasDeclaration(fullStart, decorators, modifiers); + case 77: + return parseEnumDeclaration(fullStart, decorators, modifiers); + case 117: + return parseModuleDeclaration(fullStart, decorators, modifiers); + case 85: + return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); default: + if (decorators) { + var node = createMissingNode(218, true, ts.Diagnostics.Declaration_expected); + node.pos = fullStart; + node.decorators = decorators; + setModifiers(node, modifiers); + return finishNode(node); + } ts.Debug.fail("Mismatch between isDeclarationStart and parseDeclaration"); } } @@ -6580,7 +12916,10 @@ var ts; if (kind !== 2) { break; } - var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos() }; + var range = { + pos: triviaScanner.getTokenPos(), + end: triviaScanner.getTextPos() + }; var comment = sourceText.substring(range.pos, range.end); var referencePathMatchResult = ts.getFileReferenceFromReferencePath(comment, range); if (referencePathMatchResult) { @@ -6611,7 +12950,10 @@ var ts; var pathMatchResult = pathRegex.exec(comment); var nameMatchResult = nameRegex.exec(comment); if (pathMatchResult) { - var amdDependency = { path: pathMatchResult[2], name: nameMatchResult ? nameMatchResult[2] : undefined }; + var amdDependency = { + path: pathMatchResult[2], + name: nameMatchResult ? nameMatchResult[2] : undefined + }; amdDependencies.push(amdDependency); } } @@ -6623,33 +12965,34 @@ var ts; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { - return node.flags & 1 || node.kind === 200 && node.moduleReference.kind === 202 || node.kind === 201 ? node : undefined; + return node.flags & 1 || node.kind === 208 && node.moduleReference.kind === 219 || node.kind === 209 || node.kind === 214 || node.kind === 215 ? node : undefined; }); } } function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 151: - case 152: - case 154: - case 153: case 155: - case 149: - case 157: - case 150: + case 156: case 158: - case 64: + case 157: + case 159: + case 153: + case 161: + case 154: + case 174: + case 162: + case 65: case 9: case 7: case 8: case 10: - case 167: - case 79: - case 88: - case 92: - case 94: - case 90: + case 171: + case 80: + case 89: + case 93: + case 95: + case 91: return true; } } @@ -6657,453 +13000,30 @@ var ts; } ts.isLeftHandSideExpression = isLeftHandSideExpression; function isAssignmentOperator(token) { - return token >= 52 && token <= 63; + return token >= 53 && token <= 64; } ts.isAssignmentOperator = isAssignmentOperator; })(ts || (ts = {})); -var ts; -(function (ts) { - ts.bindTime = 0; - function getModuleInstanceState(node) { - if (node.kind === 195 || node.kind === 196) { - return 0; - } - else if (ts.isConstEnumDeclaration(node)) { - return 2; - } - else if (node.kind === 200 && !(node.flags & 1)) { - return 0; - } - else if (node.kind === 199) { - var state = 0; - ts.forEachChild(node, function (n) { - switch (getModuleInstanceState(n)) { - case 0: - return false; - case 2: - state = 2; - return false; - case 1: - state = 1; - return true; - } - }); - return state; - } - else if (node.kind === 198) { - return getModuleInstanceState(node.body); - } - else { - return 1; - } - } - ts.getModuleInstanceState = getModuleInstanceState; - function bindSourceFile(file) { - var start = new Date().getTime(); - bindSourceFileWorker(file); - ts.bindTime += new Date().getTime() - start; - } - ts.bindSourceFile = bindSourceFile; - function bindSourceFileWorker(file) { - var parent; - var container; - var blockScopeContainer; - var lastContainer; - var symbolCount = 0; - var Symbol = ts.objectAllocator.getSymbolConstructor(); - if (!file.locals) { - file.locals = {}; - container = blockScopeContainer = file; - bind(file); - file.symbolCount = symbolCount; - } - function createSymbol(flags, name) { - symbolCount++; - return new Symbol(flags, name); - } - function addDeclarationToSymbol(symbol, node, symbolKind) { - symbol.flags |= symbolKind; - if (!symbol.declarations) - symbol.declarations = []; - symbol.declarations.push(node); - if (symbolKind & 1952 && !symbol.exports) - symbol.exports = {}; - if (symbolKind & 6240 && !symbol.members) - symbol.members = {}; - node.symbol = symbol; - if (symbolKind & 107455 && !symbol.valueDeclaration) - symbol.valueDeclaration = node; - } - function getDeclarationName(node) { - if (node.name) { - if (node.kind === 198 && node.name.kind === 8) { - return '"' + node.name.text + '"'; - } - if (node.name.kind === 124) { - var nameExpression = node.name.expression; - ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); - return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); - } - return node.name.text; - } - switch (node.kind) { - case 139: - case 131: - return "__constructor"; - case 138: - case 134: - return "__call"; - case 135: - return "__new"; - case 136: - return "__index"; - } - } - function getDisplayName(node) { - return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); - } - function declareSymbol(symbols, parent, node, includes, excludes) { - ts.Debug.assert(!ts.hasDynamicName(node)); - var name = getDeclarationName(node); - if (name !== undefined) { - var symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); - if (symbol.flags & excludes) { - if (node.name) { - node.name.parent = node; - } - var message = symbol.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; - ts.forEach(symbol.declarations, function (declaration) { - file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name, message, getDisplayName(declaration))); - }); - file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name, message, getDisplayName(node))); - symbol = createSymbol(0, name); - } - } - else { - symbol = createSymbol(0, "__missing"); - } - addDeclarationToSymbol(symbol, node, includes); - symbol.parent = parent; - if (node.kind === 194 && symbol.exports) { - var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); - if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { - if (node.name) { - node.name.parent = node; - } - file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); - } - symbol.exports[prototypeSymbol.name] = prototypeSymbol; - prototypeSymbol.parent = symbol; - } - return symbol; - } - function isAmbientContext(node) { - while (node) { - if (node.flags & 2) - return true; - node = node.parent; - } - return false; - } - function declareModuleMember(node, symbolKind, symbolExcludes) { - var exportKind = 0; - if (symbolKind & 107455) { - exportKind |= 1048576; - } - if (symbolKind & 793056) { - exportKind |= 2097152; - } - if (symbolKind & 1536) { - exportKind |= 4194304; - } - if (ts.getCombinedNodeFlags(node) & 1 || (node.kind !== 200 && isAmbientContext(container))) { - if (exportKind) { - var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); - local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - node.localSymbol = local; - } - else { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - } - } - else { - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - } - } - function bindChildren(node, symbolKind, isBlockScopeContainer) { - if (symbolKind & 255504) { - node.locals = {}; - } - var saveParent = parent; - var saveContainer = container; - var savedBlockScopeContainer = blockScopeContainer; - parent = node; - if (symbolKind & 262128) { - container = node; - if (lastContainer) { - lastContainer.nextContainer = container; - } - lastContainer = container; - } - if (isBlockScopeContainer) { - blockScopeContainer = node; - } - ts.forEachChild(node, bind); - container = saveContainer; - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - switch (container.kind) { - case 198: - declareModuleMember(node, symbolKind, symbolExcludes); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, symbolKind, symbolExcludes); - break; - } - case 138: - case 139: - case 134: - case 135: - case 136: - case 130: - case 129: - case 131: - case 132: - case 133: - case 193: - case 158: - case 159: - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - break; - case 194: - if (node.flags & 128) { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - case 141: - case 150: - case 195: - declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); - break; - case 197: - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindModuleDeclaration(node) { - if (node.name.kind === 8) { - bindDeclaration(node, 512, 106639, true); - } - else { - var state = getModuleInstanceState(node); - if (state === 0) { - bindDeclaration(node, 1024, 0, true); - } - else { - bindDeclaration(node, 512, 106639, true); - if (state === 2) { - node.symbol.constEnumOnlyModule = true; - } - else if (node.symbol.constEnumOnlyModule) { - node.symbol.constEnumOnlyModule = false; - } - } - } - } - function bindFunctionOrConstructorType(node) { - var symbol = createSymbol(131072, getDeclarationName(node)); - addDeclarationToSymbol(symbol, node, 131072); - bindChildren(node, 131072, false); - var typeLiteralSymbol = createSymbol(2048, "__type"); - addDeclarationToSymbol(typeLiteralSymbol, node, 2048); - typeLiteralSymbol.members = {}; - typeLiteralSymbol.members[node.kind === 138 ? "__call" : "__new"] = symbol; - } - function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { - var symbol = createSymbol(symbolKind, name); - addDeclarationToSymbol(symbol, node, symbolKind); - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindCatchVariableDeclaration(node) { - var symbol = createSymbol(1, node.name.text || "__missing"); - addDeclarationToSymbol(symbol, node, 1); - var saveParent = parent; - var savedBlockScopeContainer = blockScopeContainer; - parent = blockScopeContainer = node; - ts.forEachChild(node, bind); - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindBlockScopedVariableDeclaration(node) { - switch (blockScopeContainer.kind) { - case 198: - declareModuleMember(node, 2, 107455); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, 2, 107455); - break; - } - default: - if (!blockScopeContainer.locals) { - blockScopeContainer.locals = {}; - } - declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); - } - bindChildren(node, 2, false); - } - function getDestructuringParameterName(node) { - return "__" + ts.indexOf(node.parent.parameters, node); - } - function bind(node) { - node.parent = parent; - switch (node.kind) { - case 125: - bindDeclaration(node, 262144, 530912, false); - break; - case 126: - bindParameter(node); - break; - case 191: - case 148: - if (ts.isBindingPattern(node.name)) { - bindChildren(node, 0, false); - } - else if (ts.getCombinedNodeFlags(node) & 6144) { - bindBlockScopedVariableDeclaration(node); - } - else { - bindDeclaration(node, 1, 107454, false); - } - break; - case 128: - case 127: - bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); - break; - case 207: - case 208: - bindPropertyOrMethodOrAccessor(node, 4, 107455, false); - break; - case 209: - bindPropertyOrMethodOrAccessor(node, 8, 107455, false); - break; - case 134: - case 135: - case 136: - bindDeclaration(node, 131072, 0, false); - break; - case 130: - case 129: - bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); - break; - case 193: - bindDeclaration(node, 16, 106927, true); - break; - case 131: - bindDeclaration(node, 16384, 0, true); - break; - case 132: - bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); - break; - case 133: - bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); - break; - case 138: - case 139: - bindFunctionOrConstructorType(node); - break; - case 141: - bindAnonymousDeclaration(node, 2048, "__type", false); - break; - case 150: - bindAnonymousDeclaration(node, 4096, "__object", false); - break; - case 158: - case 159: - bindAnonymousDeclaration(node, 16, "__function", true); - break; - case 206: - bindCatchVariableDeclaration(node); - break; - case 194: - bindDeclaration(node, 32, 899583, false); - break; - case 195: - bindDeclaration(node, 64, 792992, false); - break; - case 196: - bindDeclaration(node, 524288, 793056, false); - break; - case 197: - if (ts.isConst(node)) { - bindDeclaration(node, 128, 899967, false); - } - else { - bindDeclaration(node, 256, 899327, false); - } - break; - case 198: - bindModuleDeclaration(node); - break; - case 200: - bindDeclaration(node, 8388608, 8388608, false); - break; - case 210: - if (ts.isExternalModule(node)) { - bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); - break; - } - case 172: - bindChildren(node, 0, !ts.isAnyFunction(node.parent)); - break; - case 206: - case 179: - case 180: - case 181: - case 186: - bindChildren(node, 0, true); - break; - default: - var saveParent = parent; - parent = node; - ts.forEachChild(node, bind); - parent = saveParent; - } - } - function bindParameter(node) { - if (ts.isBindingPattern(node.name)) { - bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); - } - else { - bindDeclaration(node, 1, 107455, false); - } - if (node.flags & 112 && - node.parent.kind === 131 && - node.parent.parent.kind === 194) { - var classDeclaration = node.parent.parent; - declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); - } - } - function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - if (ts.hasDynamicName(node)) { - bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); - } - else { - bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); - } - } - } -})(ts || (ts = {})); +/// var ts; (function (ts) { var nextSymbolId = 1; var nextNodeId = 1; var nextMergeId = 1; + function getNodeId(node) { + if (!node.id) + node.id = nextNodeId++; + return node.id; + } + ts.getNodeId = getNodeId; ts.checkTime = 0; + function getSymbolId(symbol) { + if (!symbol.id) { + symbol.id = nextSymbolId++; + } + return symbol.id; + } + ts.getSymbolId = getSymbolId; function createTypeChecker(host, produceDiagnostics) { var Symbol = ts.objectAllocator.getSymbolConstructor(); var Type = ts.objectAllocator.getTypeConstructor(); @@ -7114,13 +13034,27 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; var emitResolver = createResolver(); + var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var checker = { - getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, - getIdentifierCount: function () { return ts.sum(host.getSourceFiles(), "identifierCount"); }, - getSymbolCount: function () { return ts.sum(host.getSourceFiles(), "symbolCount"); }, - getTypeCount: function () { return typeCount; }, - isUndefinedSymbol: function (symbol) { return symbol === undefinedSymbol; }, - isArgumentsSymbol: function (symbol) { return symbol === argumentsSymbol; }, + getNodeCount: function () { + return ts.sum(host.getSourceFiles(), "nodeCount"); + }, + getIdentifierCount: function () { + return ts.sum(host.getSourceFiles(), "identifierCount"); + }, + getSymbolCount: function () { + return ts.sum(host.getSourceFiles(), "symbolCount"); + }, + getTypeCount: function () { + return typeCount; + }, + isUndefinedSymbol: function (symbol) { + return symbol === undefinedSymbol; + }, + isArgumentsSymbol: function (symbol) { + return symbol === argumentsSymbol; + }, getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, @@ -7146,11 +13080,10 @@ var ts; isValidPropertyAccess: isValidPropertyAccess, getSignatureFromDeclaration: getSignatureFromDeclaration, isImplementationOfOverload: isImplementationOfOverload, - getAliasedSymbol: resolveImport, - getEmitResolver: getEmitResolver + getAliasedSymbol: resolveAlias, + getEmitResolver: getEmitResolver, + getExportsOfExternalModule: getExportsOfExternalModule }; - var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); - var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var unknownSymbol = createSymbol(4 | 67108864, "unknown"); var resolvingSymbol = createSymbol(67108864, "__resolving__"); var anyType = createIntrinsicType(1, "any"); @@ -7166,7 +13099,6 @@ var ts; var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var inferenceFailureType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); var globals = {}; @@ -7181,11 +13113,18 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; + var globalIterableType; var anyArrayType; + var globalTypedPropertyDescriptorType; + var globalClassDecoratorType; + var globalParameterDecoratorType; + var globalPropertyDecoratorType; + var globalMethodDecoratorType; var tupleTypes = {}; var unionTypes = {}; var stringLiteralTypes = {}; var emitExtends = false; + var emitDecorate = false; var mergedSymbols = []; var symbolLinks = []; var nodeLinks = []; @@ -7276,7 +13215,7 @@ var ts; recordMergedSymbol(result, symbol); return result; } - function extendSymbol(target, source) { + function mergeSymbol(target, source) { if (!(target.flags & getExcludedSymbolFlags(source.flags))) { if (source.flags & 512 && target.flags & 512 && target.constEnumOnlyModule && !source.constEnumOnlyModule) { target.constEnumOnlyModule = false; @@ -7290,12 +13229,12 @@ var ts; if (source.members) { if (!target.members) target.members = {}; - extendSymbolTable(target.members, source.members); + mergeSymbolTable(target.members, source.members); } if (source.exports) { if (!target.exports) target.exports = {}; - extendSymbolTable(target.exports, source.exports); + mergeSymbolTable(target.exports, source.exports); } recordMergedSymbol(target, source); } @@ -7318,7 +13257,7 @@ var ts; } return result; } - function extendSymbolTable(target, source) { + function mergeSymbolTable(target, source) { for (var id in source) { if (ts.hasProperty(source, id)) { if (!ts.hasProperty(target, id)) { @@ -7329,7 +13268,7 @@ var ts; if (!(symbol.flags & 33554432)) { target[id] = symbol = cloneSymbol(symbol); } - extendSymbol(symbol, source[id]); + mergeSymbol(symbol, source[id]); } } } @@ -7337,20 +13276,18 @@ var ts; function getSymbolLinks(symbol) { if (symbol.flags & 67108864) return symbol; - if (!symbol.id) - symbol.id = nextSymbolId++; - return symbolLinks[symbol.id] || (symbolLinks[symbol.id] = {}); + var id = getSymbolId(symbol); + return symbolLinks[id] || (symbolLinks[id] = {}); } function getNodeLinks(node) { - if (!node.id) - node.id = nextNodeId++; - return nodeLinks[node.id] || (nodeLinks[node.id] = {}); + var nodeId = getNodeId(node); + return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 210); + return ts.getAncestor(node, 227); } function isGlobalSourceFile(node) { - return node.kind === 210 && !ts.isExternalModule(node); + return node.kind === 227 && !ts.isExternalModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -7360,7 +13297,7 @@ var ts; return symbol; } if (symbol.flags & 8388608) { - var target = resolveImport(symbol); + var target = resolveAlias(symbol); if (target === unknownSymbol || target.flags & meaning) { return symbol; } @@ -7384,6 +13321,7 @@ var ts; var lastLocation; var propertyWithInvalidInitializer; var errorLocation = location; + var grandparent; loop: while (location) { if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { @@ -7391,22 +13329,33 @@ var ts; } } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) { - break loop; + if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 217)) { + break loop; + } + result = undefined; + } + else if (location.kind === 227) { + result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & 8914931); + var localSymbol = ts.getLocalSymbolForExportDefault(result); + if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { + break loop; + } + result = undefined; } break; - case 197: + case 204: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } break; - case 128: - case 127: - if (location.parent.kind === 194 && !(location.flags & 128)) { + case 132: + case 131: + if (location.parent.kind === 201 && !(location.flags & 128)) { var ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { if (getSymbol(ctor.locals, name, meaning & 107455)) { @@ -7415,8 +13364,8 @@ var ts; } } break; - case 194: - case 195: + case 201: + case 202: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 128) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -7425,45 +13374,53 @@ var ts; break loop; } break; - case 124: - var grandparent = location.parent.parent; - if (grandparent.kind === 194 || grandparent.kind === 195) { + case 127: + grandparent = location.parent.parent; + if (grandparent.kind === 201 || grandparent.kind === 202) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; } } break; - case 130: - case 129: - case 131: - case 132: + case 134: case 133: - case 193: - case 159: + case 135: + case 136: + case 137: + case 200: + case 163: if (name === "arguments") { result = argumentsSymbol; break loop; } break; - case 158: + case 162: if (name === "arguments") { result = argumentsSymbol; break loop; } - var id = location.name; - if (id && name === id.text) { + var functionName = location.name; + if (functionName && name === functionName.text) { result = location.symbol; break loop; } break; - case 206: - var id = location.name; - if (name === id.text) { + case 174: + var className = location.name; + if (className && name === className.text) { result = location.symbol; break loop; } break; + case 130: + if (location.parent && location.parent.kind === 129) { + location = location.parent; + } + if (location.parent && ts.isClassElement(location.parent)) { + location = location.parent; + } + break; } lastLocation = location; location = location.parent; @@ -7484,27 +13441,170 @@ var ts; return undefined; } if (result.flags & 2) { - var declaration = ts.forEach(result.declarations, function (d) { return ts.getCombinedNodeFlags(d) & 6144 ? d : undefined; }); - ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isDefinedBefore(declaration, errorLocation)) { - error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); - } + checkResolvedBlockScopedVariable(result, errorLocation); } } return result; } - function resolveImport(symbol) { - ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Imports here."); + function checkResolvedBlockScopedVariable(result, errorLocation) { + ts.Debug.assert((result.flags & 2) !== 0); + var declaration = ts.forEach(result.declarations, function (d) { + return ts.isBlockOrCatchScoped(d) ? d : undefined; + }); + ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); + var isUsedBeforeDeclaration = !isDefinedBefore(declaration, errorLocation); + if (!isUsedBeforeDeclaration) { + var variableDeclaration = ts.getAncestor(declaration, 198); + var container = ts.getEnclosingBlockScopeContainer(variableDeclaration); + if (variableDeclaration.parent.parent.kind === 180 || variableDeclaration.parent.parent.kind === 186) { + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, variableDeclaration, container); + } + else if (variableDeclaration.parent.parent.kind === 188 || variableDeclaration.parent.parent.kind === 187) { + var expression = variableDeclaration.parent.parent.expression; + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, expression, container); + } + } + if (isUsedBeforeDeclaration) { + error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); + } + } + function isSameScopeDescendentOf(initial, parent, stopAt) { + if (!parent) { + return false; + } + for (var current = initial; current && current !== stopAt && !ts.isFunctionLike(current); current = current.parent) { + if (current === parent) { + return true; + } + } + return false; + } + function getAnyImportSyntax(node) { + if (ts.isAliasSymbolDeclaration(node)) { + if (node.kind === 208) { + return node; + } + while (node && node.kind !== 209) { + node = node.parent; + } + return node; + } + } + function getDeclarationOfAliasSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { + return ts.isAliasSymbolDeclaration(d) ? d : undefined; + }); + } + function getTargetOfImportEqualsDeclaration(node) { + if (node.moduleReference.kind === 219) { + return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); + } + return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); + } + function getTargetOfImportClause(node) { + var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); + if (moduleSymbol) { + var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol) { + error(node.name, ts.Diagnostics.External_module_0_has_no_default_export, symbolToString(moduleSymbol)); + } + return exportDefaultSymbol; + } + } + function getTargetOfNamespaceImport(node) { + var moduleSpecifier = node.parent.parent.moduleSpecifier; + return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); + } + function getMemberOfModuleVariable(moduleSymbol, name) { + if (moduleSymbol.flags & 3) { + var typeAnnotation = moduleSymbol.valueDeclaration.type; + if (typeAnnotation) { + return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name); + } + } + } + function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { + if (valueSymbol.flags & (793056 | 1536)) { + return valueSymbol; + } + var result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.name); + result.declarations = ts.concatenate(valueSymbol.declarations, typeSymbol.declarations); + result.parent = valueSymbol.parent || typeSymbol.parent; + if (valueSymbol.valueDeclaration) + result.valueDeclaration = valueSymbol.valueDeclaration; + if (typeSymbol.members) + result.members = typeSymbol.members; + if (valueSymbol.exports) + result.exports = valueSymbol.exports; + return result; + } + function getExportOfModule(symbol, name) { + if (symbol.flags & 1536) { + var exports = getExportsOfSymbol(symbol); + if (ts.hasProperty(exports, name)) { + return resolveSymbol(exports[name]); + } + } + } + function getPropertyOfVariable(symbol, name) { + if (symbol.flags & 3) { + var typeAnnotation = symbol.valueDeclaration.type; + if (typeAnnotation) { + return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name)); + } + } + } + function getExternalModuleMember(node, specifier) { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + var targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); + if (targetSymbol) { + var name_4 = specifier.propertyName || specifier.name; + if (name_4.text) { + var symbolFromModule = getExportOfModule(targetSymbol, name_4.text); + var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_4.text); + var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; + if (!symbol) { + error(name_4, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_4)); + } + return symbol; + } + } + } + function getTargetOfImportSpecifier(node) { + return getExternalModuleMember(node.parent.parent.parent, node); + } + function getTargetOfExportSpecifier(node) { + return node.parent.parent.moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : resolveEntityName(node.propertyName || node.name, 107455 | 793056 | 1536); + } + function getTargetOfExportAssignment(node) { + return node.expression && resolveEntityName(node.expression, 107455 | 793056 | 1536); + } + function getTargetOfAliasDeclaration(node) { + switch (node.kind) { + case 208: + return getTargetOfImportEqualsDeclaration(node); + case 210: + return getTargetOfImportClause(node); + case 211: + return getTargetOfNamespaceImport(node); + case 213: + return getTargetOfImportSpecifier(node); + case 217: + return getTargetOfExportSpecifier(node); + case 214: + return getTargetOfExportAssignment(node); + } + } + function resolveSymbol(symbol) { + return symbol && symbol.flags & 8388608 && !(symbol.flags & (107455 | 793056 | 1536)) ? resolveAlias(symbol) : symbol; + } + function resolveAlias(symbol) { + ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Alias here."); var links = getSymbolLinks(symbol); if (!links.target) { links.target = resolvingSymbol; - var node = ts.getDeclarationOfKind(symbol, 200); - if (node.moduleReference.kind === 202) { - if (node.moduleReference.expression.kind !== 8) { - grammarErrorOnNode(node.moduleReference.expression, ts.Diagnostics.String_literal_expected); - } - } - var target = node.moduleReference.kind === 202 ? resolveExternalModuleName(node, ts.getExternalModuleImportDeclarationExpression(node)) : getSymbolOfPartOfRightHandSideOfImport(node.moduleReference, node); + var node = getDeclarationOfAliasSymbol(symbol); + var target = getTargetOfAliasDeclaration(node); if (links.target === resolvingSymbol) { links.target = target || unknownSymbol; } @@ -7517,47 +13617,80 @@ var ts; } return links.target; } - function getSymbolOfPartOfRightHandSideOfImport(entityName, importDeclaration) { + function markExportAsReferenced(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target) { + var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) || (target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target)); + if (markAlias) { + markAliasSymbolAsReferenced(symbol); + } + } + } + function markAliasSymbolAsReferenced(symbol) { + var links = getSymbolLinks(symbol); + if (!links.referenced) { + links.referenced = true; + var node = getDeclarationOfAliasSymbol(symbol); + if (node.kind === 214 && node.expression) { + checkExpressionCached(node.expression); + } + else if (node.kind === 217) { + checkExpressionCached(node.propertyName || node.name); + } + else if (ts.isInternalModuleImportEqualsDeclaration(node)) { + checkExpressionCached(node.moduleReference); + } + } + } + function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 200); + importDeclaration = ts.getAncestor(entityName, 208); ts.Debug.assert(importDeclaration !== undefined); } - if (entityName.kind === 64 && isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (entityName.kind === 65 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (entityName.kind === 64 || entityName.parent.kind === 123) { - return resolveEntityName(importDeclaration, entityName, 1536); + if (entityName.kind === 65 || entityName.parent.kind === 126) { + return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 200); - return resolveEntityName(importDeclaration, entityName, 107455 | 793056 | 1536); + ts.Debug.assert(entityName.parent.kind === 208); + return resolveEntityName(entityName, 107455 | 793056 | 1536); } } function getFullyQualifiedName(symbol) { return symbol.parent ? getFullyQualifiedName(symbol.parent) + "." + symbolToString(symbol) : symbolToString(symbol); } - function resolveEntityName(location, name, meaning) { - if (ts.getFullWidth(name) === 0) { + function resolveEntityName(name, meaning) { + if (ts.nodeIsMissing(name)) { return undefined; } - if (name.kind === 64) { - var symbol = resolveName(location, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); + var symbol; + if (name.kind === 65) { + symbol = resolveName(name, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); if (!symbol) { - return; + return undefined; } } - else if (name.kind === 123) { - var namespace = resolveEntityName(location, name.left, 1536); - if (!namespace || namespace === unknownSymbol || ts.getFullWidth(name.right) === 0) - return; - var symbol = getSymbol(namespace.exports, name.right.text, meaning); - if (!symbol) { - error(location, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(name.right)); - return; + else if (name.kind === 126 || name.kind === 155) { + var left = name.kind === 126 ? name.left : name.expression; + var right = name.kind === 126 ? name.right : name.name; + var namespace = resolveEntityName(left, 1536); + if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { + return undefined; } + symbol = getSymbol(getExportsOfSymbol(namespace), right.text, meaning); + if (!symbol) { + error(right, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(right)); + return undefined; + } + } + else { + ts.Debug.fail("Unknown entity name kind."); } ts.Debug.assert((symbol.flags & 16777216) === 0, "Should never get an instantiated symbol here."); - return symbol.flags & meaning ? symbol : resolveImport(symbol); + return symbol.flags & meaning ? symbol : resolveAlias(symbol); } function isExternalModuleNameRelative(moduleName) { return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; @@ -7575,84 +13708,83 @@ var ts; if (!isRelative) { var symbol = getSymbol(globals, '"' + moduleName + '"', 512); if (symbol) { - return getResolvedExportSymbol(symbol); + return symbol; } } + var sourceFile; while (true) { var fileName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - var sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); - if (sourceFile || isRelative) + sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); + if (sourceFile || isRelative) { break; + } var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) + if (parentPath === searchPath) { break; + } searchPath = parentPath; } if (sourceFile) { if (sourceFile.symbol) { - return getResolvedExportSymbol(sourceFile.symbol); + return sourceFile.symbol; } error(moduleReferenceLiteral, ts.Diagnostics.File_0_is_not_an_external_module, sourceFile.fileName); return; } error(moduleReferenceLiteral, ts.Diagnostics.Cannot_find_external_module_0, moduleName); } - function getResolvedExportSymbol(moduleSymbol) { - var symbol = getExportAssignmentSymbol(moduleSymbol); - if (symbol) { - if (symbol.flags & (107455 | 793056 | 1536)) { - return symbol; - } - if (symbol.flags & 8388608) { - return resolveImport(symbol); + function resolveExternalModuleSymbol(moduleSymbol) { + return moduleSymbol && resolveSymbol(moduleSymbol.exports["export="]) || moduleSymbol; + } + function resolveESModuleSymbol(moduleSymbol, moduleReferenceExpression) { + var symbol = resolveExternalModuleSymbol(moduleSymbol); + if (symbol && !(symbol.flags & (1536 | 3))) { + error(moduleReferenceExpression, ts.Diagnostics.External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); + symbol = undefined; + } + return symbol; + } + function getExportAssignmentSymbol(moduleSymbol) { + return moduleSymbol.exports["export="]; + } + function getExportsOfSymbol(symbol) { + return symbol.flags & 1536 ? getExportsOfModule(symbol) : symbol.exports || emptySymbols; + } + function getExportsOfModule(moduleSymbol) { + var links = getSymbolLinks(moduleSymbol); + return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); + } + function extendExportSymbols(target, source) { + for (var id in source) { + if (id !== "default" && !ts.hasProperty(target, id)) { + target[id] = source[id]; } } - return moduleSymbol; } - function getExportAssignmentSymbol(symbol) { - checkTypeOfExportAssignmentSymbol(symbol); - var symbolLinks = getSymbolLinks(symbol); - return symbolLinks.exportAssignSymbol === unknownSymbol ? undefined : symbolLinks.exportAssignSymbol; - } - function checkTypeOfExportAssignmentSymbol(containerSymbol) { - var symbolLinks = getSymbolLinks(containerSymbol); - if (!symbolLinks.exportAssignSymbol) { - var exportInformation = collectExportInformationForSourceFileOrModule(containerSymbol); - if (exportInformation.exportAssignments.length) { - if (exportInformation.exportAssignments.length > 1) { - ts.forEach(exportInformation.exportAssignments, function (node) { return error(node, ts.Diagnostics.A_module_cannot_have_more_than_one_export_assignment); }); + function getExportsForModule(moduleSymbol) { + var result; + var visitedSymbols = []; + visit(moduleSymbol); + return result || moduleSymbol.exports; + function visit(symbol) { + if (symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { + visitedSymbols.push(symbol); + if (symbol !== moduleSymbol) { + if (!result) { + result = cloneSymbolTable(moduleSymbol.exports); + } + extendExportSymbols(result, symbol.exports); } - var node = exportInformation.exportAssignments[0]; - if (exportInformation.hasExportedMember) { - error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); - } - if (node.exportName.text) { - var meaning = 107455 | 793056 | 1536; - var exportSymbol = resolveName(node, node.exportName.text, meaning, ts.Diagnostics.Cannot_find_name_0, node.exportName); + var exportStars = symbol.exports["__export"]; + if (exportStars) { + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + visit(resolveExternalModuleName(node, node.moduleSpecifier)); + } } } - symbolLinks.exportAssignSymbol = exportSymbol || unknownSymbol; } } - function collectExportInformationForSourceFileOrModule(symbol) { - var seenExportedMember = false; - var result = []; - ts.forEach(symbol.declarations, function (declaration) { - var block = (declaration.kind === 210 ? declaration : declaration.body); - ts.forEach(block.statements, function (node) { - if (node.kind === 201) { - result.push(node); - } - else { - seenExportedMember = seenExportedMember || (node.flags & 1) !== 0; - } - }); - }); - return { - hasExportedMember: seenExportedMember, - exportAssignments: result - }; - } function getMergedSymbol(symbol) { var merged; return symbol && symbol.mergeId && (merged = mergedSymbols[symbol.mergeId]) ? merged : symbol; @@ -7674,15 +13806,15 @@ var ts; return true; } if (symbol.flags & 8388608) { - return (resolveImport(symbol).flags & 107455) !== 0; + return (resolveAlias(symbol).flags & 107455) !== 0; } return false; } function findConstructorDeclaration(node) { var members = node.members; - for (var i = 0; i < members.length; i++) { - var member = members[i]; - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { + for (var _i = 0; _i < members.length; _i++) { + var member = members[_i]; + if (member.kind === 135 && ts.nodeIsPresent(member.body)) { return member; } } @@ -7703,10 +13835,7 @@ var ts; return type; } function isReservedMemberName(name) { - return name.charCodeAt(0) === 95 && - name.charCodeAt(1) === 95 && - name.charCodeAt(2) !== 95 && - name.charCodeAt(2) !== 64; + return name.charCodeAt(0) === 95 && name.charCodeAt(1) === 95 && name.charCodeAt(2) !== 95 && name.charCodeAt(2) !== 64; } function getNamedMembers(members) { var result; @@ -7740,25 +13869,25 @@ var ts; } function forEachSymbolTableInScope(enclosingDeclaration, callback) { var result; - for (var location = enclosingDeclaration; location; location = location.parent) { - if (location.locals && !isGlobalSourceFile(location)) { - if (result = callback(location.locals)) { + for (var location_1 = enclosingDeclaration; location_1; location_1 = location_1.parent) { + if (location_1.locals && !isGlobalSourceFile(location_1)) { + if (result = callback(location_1.locals)) { return result; } } - switch (location.kind) { - case 210: - if (!ts.isExternalModule(location)) { + switch (location_1.kind) { + case 227: + if (!ts.isExternalModule(location_1)) { break; } - case 198: - if (result = callback(getSymbolOfNode(location).exports)) { + case 205: + if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 194: - case 195: - if (result = callback(getSymbolOfNode(location).members)) { + case 201: + case 202: + if (result = callback(getSymbolOfNode(location_1).members)) { return result; } break; @@ -7780,24 +13909,28 @@ var ts; } function isAccessible(symbolFromSymbolTable, resolvedAliasSymbol) { if (symbol === (resolvedAliasSymbol || symbolFromSymbolTable)) { - return !ts.forEach(symbolFromSymbolTable.declarations, hasExternalModuleSymbol) && - canQualifySymbol(symbolFromSymbolTable, meaning); + return !ts.forEach(symbolFromSymbolTable.declarations, hasExternalModuleSymbol) && canQualifySymbol(symbolFromSymbolTable, meaning); } } if (isAccessible(ts.lookUp(symbols, symbol.name))) { - return [symbol]; + return [ + symbol + ]; } return ts.forEachValue(symbols, function (symbolFromSymbolTable) { - if (symbolFromSymbolTable.flags & 8388608) { - if (!useOnlyExternalAliasing || - ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportDeclaration)) { - var resolvedImportedSymbol = resolveImport(symbolFromSymbolTable); - if (isAccessible(symbolFromSymbolTable, resolveImport(symbolFromSymbolTable))) { - return [symbolFromSymbolTable]; + if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=") { + if (!useOnlyExternalAliasing || ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { + var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); + if (isAccessible(symbolFromSymbolTable, resolveAlias(symbolFromSymbolTable))) { + return [ + symbolFromSymbolTable + ]; } var accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; if (accessibleSymbolsFromExports && canQualifySymbol(symbolFromSymbolTable, getQualifiedLeftMeaning(meaning))) { - return [symbolFromSymbolTable].concat(accessibleSymbolsFromExports); + return [ + symbolFromSymbolTable + ].concat(accessibleSymbolsFromExports); } } } @@ -7817,7 +13950,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveImport(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -7862,7 +13995,9 @@ var ts; errorSymbolName: symbolToString(initialSymbol, enclosingDeclaration, meaning) }; } - return { accessibility: 0 }; + return { + accessibility: 0 + }; function getExternalModuleContainer(declaration) { for (; declaration; declaration = declaration.parent) { if (hasExternalModuleSymbol(declaration)) { @@ -7872,28 +14007,33 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 198 && declaration.name.kind === 8) || - (declaration.kind === 210 && ts.isExternalModule(declaration)); + return (declaration.kind === 205 && declaration.name.kind === 8) || (declaration.kind === 227 && ts.isExternalModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; - if (ts.forEach(symbol.declarations, function (declaration) { return !getIsDeclarationVisible(declaration); })) { + if (ts.forEach(symbol.declarations, function (declaration) { + return !getIsDeclarationVisible(declaration); + })) { return undefined; } - return { accessibility: 0, aliasesToMakeVisible: aliasesToMakeVisible }; + return { + accessibility: 0, + aliasesToMakeVisible: aliasesToMakeVisible + }; function getIsDeclarationVisible(declaration) { if (!isDeclarationVisible(declaration)) { - if (declaration.kind === 200 && - !(declaration.flags & 1) && - isDeclarationVisible(declaration.parent)) { + var anyImportSyntax = getAnyImportSyntax(declaration); + if (anyImportSyntax && !(anyImportSyntax.flags & 1) && isDeclarationVisible(anyImportSyntax.parent)) { getNodeLinks(declaration).isVisible = true; if (aliasesToMakeVisible) { - if (!ts.contains(aliasesToMakeVisible, declaration)) { - aliasesToMakeVisible.push(declaration); + if (!ts.contains(aliasesToMakeVisible, anyImportSyntax)) { + aliasesToMakeVisible.push(anyImportSyntax); } } else { - aliasesToMakeVisible = [declaration]; + aliasesToMakeVisible = [ + anyImportSyntax + ]; } return true; } @@ -7904,11 +14044,10 @@ var ts; } function isEntityNameVisible(entityName, enclosingDeclaration) { var meaning; - if (entityName.parent.kind === 140) { + if (entityName.parent.kind === 144) { meaning = 107455 | 1048576; } - else if (entityName.kind === 123 || - entityName.parent.kind === 200) { + else if (entityName.kind === 126 || entityName.kind === 155 || entityName.parent.kind === 208) { meaning = 1536; } else { @@ -7952,10 +14091,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048) { var node = type.symbol.declarations[0].parent; - while (node.kind === 145) { + while (node.kind === 149) { node = node.parent; } - if (node.kind === 196) { + if (node.kind === 203) { return getSymbolOfNode(node); } } @@ -7994,13 +14133,13 @@ var ts; function walkSymbol(symbol, meaning) { if (symbol) { var accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, !!(flags & 2)); - if (!accessibleSymbolChain || - needsQualification(accessibleSymbolChain[0], enclosingDeclaration, accessibleSymbolChain.length === 1 ? meaning : getQualifiedLeftMeaning(meaning))) { + if (!accessibleSymbolChain || needsQualification(accessibleSymbolChain[0], enclosingDeclaration, accessibleSymbolChain.length === 1 ? meaning : getQualifiedLeftMeaning(meaning))) { walkSymbol(getParentOfSymbol(accessibleSymbolChain ? accessibleSymbolChain[0] : symbol), getQualifiedLeftMeaning(meaning)); } if (accessibleSymbolChain) { - for (var i = 0, n = accessibleSymbolChain.length; i < n; i++) { - appendParentTypeArgumentsAndSymbolName(accessibleSymbolChain[i]); + for (var _i = 0; _i < accessibleSymbolChain.length; _i++) { + var accessibleSymbol = accessibleSymbolChain[_i]; + appendParentTypeArgumentsAndSymbolName(accessibleSymbol); } } else { @@ -8027,8 +14166,7 @@ var ts; return writeType(type, globalFlags); function writeType(type, flags) { if (type.flags & 1048703) { - writer.writeKeyword(!(globalFlags & 16) && - (type.flags & 1) ? "any" : type.intrinsicName); + writer.writeKeyword(!(globalFlags & 16) && (type.flags & 1) ? "any" : type.intrinsicName); } else if (type.flags & 4096) { writeTypeReference(type, flags); @@ -8108,7 +14246,7 @@ var ts; buildSymbolDisplay(typeAlias, writer, enclosingDeclaration, 793056, 0, flags); } else { - writeKeyword(writer, 110); + writeKeyword(writer, 112); } } else { @@ -8121,22 +14259,20 @@ var ts; } function shouldWriteTypeOfFunctionSymbol() { if (type.symbol) { - var isStaticMethodSymbol = !!(type.symbol.flags & 8192 && - ts.forEach(type.symbol.declarations, function (declaration) { return declaration.flags & 128; })); - var isNonLocalFunctionSymbol = !!(type.symbol.flags & 16) && - (type.symbol.parent || - ts.forEach(type.symbol.declarations, function (declaration) { - return declaration.parent.kind === 210 || declaration.parent.kind === 199; - })); + var isStaticMethodSymbol = !!(type.symbol.flags & 8192 && ts.forEach(type.symbol.declarations, function (declaration) { + return declaration.flags & 128; + })); + var isNonLocalFunctionSymbol = !!(type.symbol.flags & 16) && (type.symbol.parent || ts.forEach(type.symbol.declarations, function (declaration) { + return declaration.parent.kind === 227 || declaration.parent.kind === 206; + })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { - return !!(flags & 2) || - (typeStack && ts.contains(typeStack, type)); + return !!(flags & 2) || (typeStack && ts.contains(typeStack, type)); } } } } function writeTypeofSymbol(type, typeFormatFlags) { - writeKeyword(writer, 96); + writeKeyword(writer, 97); writeSpace(writer); buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, 107455, 0, typeFormatFlags); } @@ -8170,7 +14306,7 @@ var ts; if (flags & 64) { writePunctuation(writer, 16); } - writeKeyword(writer, 87); + writeKeyword(writer, 88); writeSpace(writer); buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, typeStack); if (flags & 64) { @@ -8182,15 +14318,17 @@ var ts; writePunctuation(writer, 14); writer.writeLine(); writer.increaseIndent(); - for (var i = 0; i < resolved.callSignatures.length; i++) { - buildSignatureDisplay(resolved.callSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { + var signature = _a[_i]; + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.constructSignatures.length; i++) { - writeKeyword(writer, 87); + for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { + var signature = _c[_b]; + writeKeyword(writer, 88); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8199,7 +14337,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 0, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 119); + writeKeyword(writer, 121); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8212,7 +14350,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 1, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 117); + writeKeyword(writer, 119); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8220,17 +14358,18 @@ var ts; writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.properties.length; i++) { - var p = resolved.properties[i]; + for (var _d = 0, _e = resolved.properties; _d < _e.length; _d++) { + var p = _e[_d]; var t = getTypeOfSymbol(p); if (p.flags & (16 | 8192) && !getPropertiesOfObjectType(t).length) { var signatures = getSignaturesOfType(t, 0); - for (var j = 0; j < signatures.length; j++) { + for (var _f = 0; _f < signatures.length; _f++) { + var signature = signatures[_f]; buildSymbolDisplay(p, writer); if (p.flags & 536870912) { writePunctuation(writer, 50); } - buildSignatureDisplay(signatures[j], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8262,7 +14401,7 @@ var ts; var constraint = getConstraintOfTypeParameter(tp); if (constraint) { writeSpace(writer); - writeKeyword(writer, 78); + writeKeyword(writer, 79); writeSpace(writer); buildTypeDisplay(constraint, writer, enclosingDeclaration, flags, typeStack); } @@ -8355,12 +14494,12 @@ var ts; function isDeclarationVisible(node) { function getContainingExternalModule(node) { for (; node; node = node.parent) { - if (node.kind === 198) { + if (node.kind === 205) { if (node.name.kind === 8) { return node; } } - else if (node.kind === 210) { + else if (node.kind === 227) { return ts.isExternalModule(node) ? node : undefined; } } @@ -8368,16 +14507,17 @@ var ts; } function isUsedInExportAssignment(node) { var externalModule = getContainingExternalModule(node); + var exportAssignmentSymbol; + var resolvedExportSymbol; if (externalModule) { var externalModuleSymbol = getSymbolOfNode(externalModule); - var exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var resolvedExportSymbol; + exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); var symbolOfNode = getSymbolOfNode(node); if (isSymbolUsedInExportAssignment(symbolOfNode)) { return true; } if (symbolOfNode.flags & 8388608) { - return isSymbolUsedInExportAssignment(resolveImport(symbolOfNode)); + return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); } } function isSymbolUsedInExportAssignment(symbol) { @@ -8385,7 +14525,7 @@ var ts; return true; } if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { - resolvedExportSymbol = resolvedExportSymbol || resolveImport(exportAssignmentSymbol); + resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); if (resolvedExportSymbol === symbol) { return true; } @@ -8402,48 +14542,57 @@ var ts; } function determineIfDeclarationIsVisible() { switch (node.kind) { - case 191: - case 148: + case 152: + return isDeclarationVisible(node.parent.parent); case 198: - case 194: - case 195: - case 196: - case 193: - case 197: - case 200: - var parent = getDeclarationContainer(node); - if (!(ts.getCombinedNodeFlags(node) & 1) && - !(node.kind !== 200 && parent.kind !== 210 && ts.isInAmbientContext(parent))) { - return isGlobalSourceFile(parent) || isUsedInExportAssignment(node); + if (ts.isBindingPattern(node.name) && !node.name.elements.length) { + return false; } - return isDeclarationVisible(parent); - case 128: - case 127: + case 205: + case 201: + case 202: + case 203: + case 200: + case 204: + case 208: + var parent_2 = getDeclarationContainer(node); + if (!(ts.getCombinedNodeFlags(node) & 1) && !(node.kind !== 208 && parent_2.kind !== 227 && ts.isInAmbientContext(parent_2))) { + return isGlobalSourceFile(parent_2); + } + return isDeclarationVisible(parent_2); case 132: + case 131: + case 136: + case 137: + case 134: case 133: - case 130: - case 129: if (node.flags & (32 | 64)) { return false; } - case 131: case 135: - case 134: - case 136: - case 126: - case 199: - case 138: case 139: - case 141: - case 137: + case 138: + case 140: + case 129: + case 206: case 142: case 143: - case 144: case 145: + case 141: + case 146: + case 147: + case 148: + case 149: return isDeclarationVisible(node.parent); - case 125: case 210: + case 211: + case 213: + return false; + case 128: + case 227: return true; + case 214: + return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } @@ -8456,19 +14605,50 @@ var ts; return links.isVisible; } } + function collectLinkedAliases(node) { + var exportSymbol; + if (node.parent && node.parent.kind === 214) { + exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, node); + } + else if (node.parent.kind === 217) { + exportSymbol = getTargetOfExportSpecifier(node.parent); + } + var result = []; + if (exportSymbol) { + buildVisibleNodeList(exportSymbol.declarations); + } + return result; + function buildVisibleNodeList(declarations) { + ts.forEach(declarations, function (declaration) { + getNodeLinks(declaration).isVisible = true; + var resultNode = getAnyImportSyntax(declaration) || declaration; + if (!ts.contains(result, resultNode)) { + result.push(resultNode); + } + if (ts.isInternalModuleImportEqualsDeclaration(declaration)) { + var internalModuleReference = declaration.moduleReference; + var firstIdentifier = getFirstIdentifier(internalModuleReference); + var importSymbol = resolveName(declaration, firstIdentifier.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, firstIdentifier); + buildVisibleNodeList(importSymbol.declarations); + } + }); + } + } function getRootDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } return node; } function getDeclarationContainer(node) { node = getRootDeclaration(node); - return node.kind === 191 ? node.parent.parent.parent : node.parent; + return node.kind === 198 ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { var classType = getDeclaredTypeOfSymbol(prototype.parent); - return classType.typeParameters ? createTypeReference(classType, ts.map(classType.typeParameters, function (_) { return anyType; })) : classType; + return classType.typeParameters ? createTypeReference(classType, ts.map(classType.typeParameters, function (_) { + return anyType; + })) : classType; } function getTypeOfPropertyOfType(type, name) { var prop = getPropertyOfType(type, name); @@ -8486,13 +14666,12 @@ var ts; } return parentType; } - if (pattern.kind === 146) { - var name = declaration.propertyName || declaration.name; - var type = getTypeOfPropertyOfType(parentType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, 1) || - getIndexTypeOfType(parentType, 0); + var type; + if (pattern.kind === 150) { + var name_5 = declaration.propertyName || declaration.name; + type = getTypeOfPropertyOfType(parentType, name_5.text) || isNumericLiteralName(name_5.text) && getIndexTypeOfType(parentType, 1) || getIndexTypeOfType(parentType, 0); if (!type) { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name)); + error(name_5, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_5)); return unknownType; } } @@ -8503,32 +14682,40 @@ var ts; } if (!declaration.dotDotDotToken) { var propName = "" + ts.indexOf(pattern.elements, declaration); - var type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); + type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); if (!type) { - error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + if (isTupleType(parentType)) { + error(declaration, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(parentType), parentType.elementTypes.length, pattern.elements.length); + } + else { + error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + } return unknownType; } } else { - var type = createArrayType(getIndexTypeOfType(parentType, 1)); + type = createArrayType(getIndexTypeOfType(parentType, 1)); } } return type; } function getTypeForVariableLikeDeclaration(declaration) { - if (declaration.parent.parent.kind === 180) { + if (declaration.parent.parent.kind === 187) { return anyType; } + if (declaration.parent.parent.kind === 188) { + return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; + } if (ts.isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var func = declaration.parent; - if (func.kind === 133 && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 132); + if (func.kind === 137 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 136); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } @@ -8541,7 +14728,7 @@ var ts; if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 208) { + if (declaration.kind === 225) { return checkIdentifier(declaration.name); } return undefined; @@ -8570,7 +14757,7 @@ var ts; var hasSpreadElement = false; var elementTypes = []; ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 170 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); + elementTypes.push(e.kind === 175 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); if (e.dotDotDotToken) { hasSpreadElement = true; } @@ -8578,7 +14765,7 @@ var ts; return !elementTypes.length ? anyArrayType : hasSpreadElement ? createArrayType(getUnionType(elementTypes)) : createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern) { - return pattern.kind === 146 ? getTypeFromObjectBindingPattern(pattern) : getTypeFromArrayBindingPattern(pattern); + return pattern.kind === 150 ? getTypeFromObjectBindingPattern(pattern) : getTypeFromArrayBindingPattern(pattern); } function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { var type = getTypeForVariableLikeDeclaration(declaration); @@ -8586,7 +14773,7 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - return declaration.kind !== 207 ? getWidenedType(type) : type; + return declaration.kind !== 224 ? getWidenedType(type) : type; } if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name); @@ -8594,7 +14781,7 @@ var ts; type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { var root = getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 126 && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 129 && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -8607,9 +14794,21 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.kind === 206) { + if (declaration.parent.kind === 223) { return links.type = anyType; } + if (declaration.kind === 214) { + var exportAssignment = declaration; + if (exportAssignment.expression) { + return links.type = checkExpression(exportAssignment.expression); + } + else if (exportAssignment.type) { + return links.type = getTypeFromTypeNodeOrHeritageClauseElement(exportAssignment.type); + } + else { + return links.type = anyType; + } + } links.type = resolvingType; var type = getWidenedTypeForVariableLikeDeclaration(declaration, true); if (links.type === resolvingType) { @@ -8630,12 +14829,12 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 132) { - return accessor.type && getTypeFromTypeNode(accessor.type); + if (accessor.kind === 136) { + return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement(accessor.type); } else { var setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement(setterTypeAnnotation); } } return undefined; @@ -8649,8 +14848,8 @@ var ts; links = links || getSymbolLinks(symbol); if (!links.type) { links.type = resolvingType; - var getter = ts.getDeclarationOfKind(symbol, 132); - var setter = ts.getDeclarationOfKind(symbol, 133); + var getter = ts.getDeclarationOfKind(symbol, 136); + var setter = ts.getDeclarationOfKind(symbol, 137); var type; var getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { @@ -8680,7 +14879,7 @@ var ts; else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var getter = ts.getDeclarationOfKind(symbol, 132); + var getter = ts.getDeclarationOfKind(symbol, 136); error(getter, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -8699,10 +14898,10 @@ var ts; } return links.type; } - function getTypeOfImport(symbol) { + function getTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { - links.type = getTypeOfSymbol(resolveImport(symbol)); + links.type = getTypeOfSymbol(resolveAlias(symbol)); } return links.type; } @@ -8730,7 +14929,7 @@ var ts; return getTypeOfAccessors(symbol); } if (symbol.flags & 8388608) { - return getTypeOfImport(symbol); + return getTypeOfAlias(symbol); } return unknownType; } @@ -8747,13 +14946,15 @@ var ts; function getTypeParametersOfClassOrInterface(symbol) { var result; ts.forEach(symbol.declarations, function (node) { - if (node.kind === 195 || node.kind === 194) { + if (node.kind === 202 || node.kind === 201) { var declaration = node; if (declaration.typeParameters && declaration.typeParameters.length) { ts.forEach(declaration.typeParameters, function (node) { var tp = getDeclaredTypeOfTypeParameter(getSymbolOfNode(node)); if (!result) { - result = [tp]; + result = [ + tp + ]; } else if (!ts.contains(result, tp)) { result.push(tp); @@ -8778,10 +14979,10 @@ var ts; type.typeArguments = type.typeParameters; } type.baseTypes = []; - var declaration = ts.getDeclarationOfKind(symbol, 194); - var baseTypeNode = ts.getClassBaseTypeNode(declaration); + var declaration = ts.getDeclarationOfKind(symbol, 201); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(declaration); if (baseTypeNode) { - var baseType = getTypeFromTypeReferenceNode(baseTypeNode); + var baseType = getTypeFromHeritageClauseElement(baseTypeNode); if (baseType !== unknownType) { if (getTargetType(baseType).flags & 1024) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -8819,9 +15020,9 @@ var ts; } type.baseTypes = []; ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 195 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 202 && ts.getInterfaceBaseTypeNodes(declaration)) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), function (node) { - var baseType = getTypeFromTypeReferenceNode(node); + var baseType = getTypeFromHeritageClauseElement(node); if (baseType !== unknownType) { if (getTargetType(baseType).flags & (1024 | 2048)) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -8850,15 +15051,15 @@ var ts; var links = getSymbolLinks(symbol); if (!links.declaredType) { links.declaredType = resolvingType; - var declaration = ts.getDeclarationOfKind(symbol, 196); - var type = getTypeFromTypeNode(declaration.type); + var declaration = ts.getDeclarationOfKind(symbol, 203); + var type = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); if (links.declaredType === resolvingType) { links.declaredType = type; } } else if (links.declaredType === resolvingType) { links.declaredType = unknownType; - var declaration = ts.getDeclarationOfKind(symbol, 196); + var declaration = ts.getDeclarationOfKind(symbol, 203); error(declaration.name, ts.Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); } return links.declaredType; @@ -8877,17 +15078,17 @@ var ts; if (!links.declaredType) { var type = createType(512); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 125).constraint) { + if (!ts.getDeclarationOfKind(symbol, 128).constraint) { type.constraint = noConstraintType; } links.declaredType = type; } return links.declaredType; } - function getDeclaredTypeOfImport(symbol) { + function getDeclaredTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.declaredType) { - links.declaredType = getDeclaredTypeOfSymbol(resolveImport(symbol)); + links.declaredType = getDeclaredTypeOfSymbol(resolveAlias(symbol)); } return links.declaredType; } @@ -8909,29 +15110,29 @@ var ts; return getDeclaredTypeOfTypeParameter(symbol); } if (symbol.flags & 8388608) { - return getDeclaredTypeOfImport(symbol); + return getDeclaredTypeOfAlias(symbol); } return unknownType; } function createSymbolTable(symbols) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = symbol; } return result; } function createInstantiatedSymbolTable(symbols, mapper) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = instantiateSymbol(symbol, mapper); } return result; } function addInheritedMembers(symbols, baseSymbols) { - for (var i = 0; i < baseSymbols.length; i++) { - var s = baseSymbols[i]; + for (var _i = 0; _i < baseSymbols.length; _i++) { + var s = baseSymbols[_i]; if (!ts.hasProperty(symbols, s.name)) { symbols[s.name] = s; } @@ -8939,8 +15140,9 @@ var ts; } function addInheritedSignatures(signatures, baseSignatures) { if (baseSignatures) { - for (var i = 0; i < baseSignatures.length; i++) { - signatures.push(baseSignatures[i]); + for (var _i = 0; _i < baseSignatures.length; _i++) { + var signature = baseSignatures[_i]; + signatures.push(signature); } } } @@ -9005,7 +15207,9 @@ var ts; return signature; }); } - return [createSignature(undefined, classType.typeParameters, emptyArray, classType, 0, false, false)]; + return [ + createSignature(undefined, classType.typeParameters, emptyArray, classType, 0, false, false) + ]; } function createTupleTypeMemberSymbols(memberTypes) { var members = {}; @@ -9034,15 +15238,18 @@ var ts; return true; } function getUnionSignatures(types, kind) { - var signatureLists = ts.map(types, function (t) { return getSignaturesOfType(t, kind); }); + var signatureLists = ts.map(types, function (t) { + return getSignaturesOfType(t, kind); + }); var signatures = signatureLists[0]; - for (var i = 0; i < signatures.length; i++) { - if (signatures[i].typeParameters) { + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; + if (signature.typeParameters) { return emptyArray; } } - for (var i = 1; i < signatureLists.length; i++) { - if (!signatureListsIdentical(signatures, signatureLists[i])) { + for (var i_1 = 1; i_1 < signatureLists.length; i_1++) { + if (!signatureListsIdentical(signatures, signatureLists[i_1])) { return emptyArray; } } @@ -9050,14 +15257,17 @@ var ts; for (var i = 0; i < result.length; i++) { var s = result[i]; s.resolvedReturnType = undefined; - s.unionSignatures = ts.map(signatureLists, function (signatures) { return signatures[i]; }); + s.unionSignatures = ts.map(signatureLists, function (signatures) { + return signatures[i]; + }); } return result; } function getUnionIndexType(types, kind) { var indexTypes = []; - for (var i = 0; i < types.length; i++) { - var indexType = getIndexTypeOfType(types[i], kind); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + var indexType = getIndexTypeOfType(type, kind); if (!indexType) { return undefined; } @@ -9074,19 +15284,24 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; + var members; + var callSignatures; + var constructSignatures; + var stringIndexType; + var numberIndexType; if (symbol.flags & 2048) { - var members = symbol.members; - var callSignatures = getSignaturesOfSymbol(members["__call"]); - var constructSignatures = getSignaturesOfSymbol(members["__new"]); - var stringIndexType = getIndexTypeOfSymbol(symbol, 0); - var numberIndexType = getIndexTypeOfSymbol(symbol, 1); + members = symbol.members; + callSignatures = getSignaturesOfSymbol(members["__call"]); + constructSignatures = getSignaturesOfSymbol(members["__new"]); + stringIndexType = getIndexTypeOfSymbol(symbol, 0); + numberIndexType = getIndexTypeOfSymbol(symbol, 1); } else { - var members = emptySymbols; - var callSignatures = emptyArray; - var constructSignatures = emptyArray; + members = emptySymbols; + callSignatures = emptyArray; + constructSignatures = emptyArray; if (symbol.flags & 1952) { - members = symbol.exports; + members = getExportsOfSymbol(symbol); } if (symbol.flags & (16 | 8192)) { callSignatures = getSignaturesOfSymbol(symbol); @@ -9102,8 +15317,8 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(classType.baseTypes[0].symbol))); } } - var stringIndexType = undefined; - var numberIndexType = (symbol.flags & 384) ? stringType : undefined; + stringIndexType = undefined; + numberIndexType = (symbol.flags & 384) ? stringType : undefined; } setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } @@ -9186,15 +15401,18 @@ var ts; function createUnionProperty(unionType, name) { var types = unionType.types; var props; - for (var i = 0; i < types.length; i++) { - var type = getApparentType(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (!prop) { return undefined; } if (!props) { - props = [prop]; + props = [ + prop + ]; } else { props.push(prop); @@ -9203,8 +15421,8 @@ var ts; } var propTypes = []; var declarations = []; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; + for (var _a = 0; _a < props.length; _a++) { + var prop = props[_a]; if (prop.declarations) { declarations.push.apply(declarations, prop.declarations); } @@ -9280,10 +15498,29 @@ var ts; }); return result; } + function symbolsToArray(symbols) { + var result = []; + for (var id in symbols) { + if (!isReservedMemberName(id)) { + result.push(symbols[id]); + } + } + return result; + } + function getExportsOfExternalModule(node) { + if (!node.moduleSpecifier) { + return emptyArray; + } + var module = resolveExternalModuleName(node, node.moduleSpecifier); + if (!module) { + return emptyArray; + } + return symbolsToArray(getExportsOfModule(module)); + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 131 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; + var classType = declaration.kind === 135 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; var typeParameters = classType ? classType.typeParameters : declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; var parameters = []; var hasStringLiterals = false; @@ -9308,11 +15545,11 @@ var ts; returnType = classType; } else if (declaration.type) { - returnType = getTypeFromTypeNode(declaration.type); + returnType = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } else { - if (declaration.kind === 132 && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 133); + if (declaration.kind === 136 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 137); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { @@ -9330,19 +15567,19 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { + case 142: + case 143: + case 200: + case 134: + case 133: + case 135: case 138: case 139: - case 193: - case 130: - case 129: - case 131: - case 134: - case 135: + case 140: case 136: - case 132: - case 133: - case 158: - case 159: + case 137: + case 162: + case 163: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -9357,14 +15594,15 @@ var ts; function getReturnTypeOfSignature(signature) { if (!signature.resolvedReturnType) { signature.resolvedReturnType = resolvingType; + var type; if (signature.target) { - var type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); + type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } else if (signature.unionSignatures) { - var type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); + type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); } else { - var type = getReturnTypeFromBody(signature.declaration); + type = getReturnTypeFromBody(signature.declaration); } if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = type; @@ -9411,12 +15649,16 @@ var ts; } function getOrCreateTypeFromSignature(signature) { if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 131 || signature.declaration.kind === 135; + var isConstructor = signature.declaration.kind === 135 || signature.declaration.kind === 139; var type = createObjectType(32768 | 65536); type.members = emptySymbols; type.properties = emptyArray; - type.callSignatures = !isConstructor ? [signature] : emptyArray; - type.constructSignatures = isConstructor ? [signature] : emptyArray; + type.callSignatures = !isConstructor ? [ + signature + ] : emptyArray; + type.constructSignatures = isConstructor ? [ + signature + ] : emptyArray; signature.isolatedSignatureType = type; } return signature.isolatedSignatureType; @@ -9425,12 +15667,13 @@ var ts; return symbol.members["__index"]; } function getIndexDeclarationOfSymbol(symbol, kind) { - var syntaxKind = kind === 1 ? 117 : 119; + var syntaxKind = kind === 1 ? 119 : 121; var indexSymbol = getIndexSymbol(symbol); if (indexSymbol) { var len = indexSymbol.declarations.length; - for (var i = 0; i < len; i++) { - var node = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var node = decl; if (node.parameters.length === 1) { var parameter = node.parameters[0]; if (parameter && parameter.type && parameter.type.kind === syntaxKind) { @@ -9443,7 +15686,7 @@ var ts; } function getIndexTypeOfSymbol(symbol, kind) { var declaration = getIndexDeclarationOfSymbol(symbol, kind); - return declaration ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; + return declaration ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement(declaration.type) : anyType : undefined; } function getConstraintOfTypeParameter(type) { if (!type.constraint) { @@ -9452,7 +15695,7 @@ var ts; type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 125).constraint); + type.constraint = getTypeFromTypeNodeOrHeritageClauseElement(ts.getDeclarationOfKind(type.symbol, 128).constraint); } } return type.constraint === noConstraintType ? undefined : type.constraint; @@ -9466,8 +15709,9 @@ var ts; default: var result = ""; for (var i = 0; i < types.length; i++) { - if (i > 0) + if (i > 0) { result += ","; + } result += types[i].id; } return result; @@ -9475,8 +15719,9 @@ var ts; } function getWideningFlagsOfTypes(types) { var result = 0; - for (var i = 0; i < types.length; i++) { - result |= types[i].flags; + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + result |= type.flags; } return result & 786432; } @@ -9497,21 +15742,25 @@ var ts; return links.isIllegalTypeReferenceInConstraint; } var currentNode = typeReferenceNode; - while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { + while (!ts.forEach(typeParameterSymbol.declarations, function (d) { + return d.parent === currentNode.parent; + })) { currentNode = currentNode.parent; } - links.isIllegalTypeReferenceInConstraint = currentNode.kind === 125; + links.isIllegalTypeReferenceInConstraint = currentNode.kind === 128; return links.isIllegalTypeReferenceInConstraint; } function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { var typeParameterSymbol; function check(n) { - if (n.kind === 137 && n.typeName.kind === 64) { + if (n.kind === 141 && n.typeName.kind === 65) { var links = getNodeLinks(n); if (links.isIllegalTypeReferenceInConstraint === undefined) { var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); if (symbol && (symbol.flags & 262144)) { - links.isIllegalTypeReferenceInConstraint = ts.forEach(symbol.declarations, function (d) { return d.parent == typeParameter.parent; }); + links.isIllegalTypeReferenceInConstraint = ts.forEach(symbol.declarations, function (d) { + return d.parent == typeParameter.parent; + }); } } if (links.isIllegalTypeReferenceInConstraint) { @@ -9525,31 +15774,40 @@ var ts; check(typeParameter.constraint); } } - function getTypeFromTypeReferenceNode(node) { + function getTypeFromTypeReference(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromHeritageClauseElement(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromTypeReferenceOrHeritageClauseElement(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - var symbol = resolveEntityName(node, node.typeName, 793056); - if (symbol) { - var type; - if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - type = unknownType; - } - else { - type = getDeclaredTypeOfSymbol(symbol); - if (type.flags & (1024 | 2048) && type.flags & 4096) { - var typeParameters = type.typeParameters; - if (node.typeArguments && node.typeArguments.length === typeParameters.length) { - type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNode)); - } - else { - error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); - type = undefined; - } + var type; + if (node.kind !== 177 || ts.isSupportedHeritageClauseElement(node)) { + var typeNameOrExpression = node.kind === 141 ? node.typeName : node.expression; + var symbol = resolveEntityName(typeNameOrExpression, 793056); + if (symbol) { + if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { + type = unknownType; } else { - if (node.typeArguments) { - error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); - type = undefined; + type = getDeclaredTypeOfSymbol(symbol); + if (type.flags & (1024 | 2048) && type.flags & 4096) { + var typeParameters = type.typeParameters; + if (node.typeArguments && node.typeArguments.length === typeParameters.length) { + type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement)); + } + else { + error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); + type = undefined; + } + } + else { + if (node.typeArguments) { + error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); + type = undefined; + } } } } @@ -9568,12 +15826,12 @@ var ts; function getTypeOfGlobalSymbol(symbol, arity) { function getTypeDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; switch (declaration.kind) { - case 194: - case 195: - case 197: + case 201: + case 202: + case 204: return declaration; } } @@ -9601,20 +15859,23 @@ var ts; function getGlobalSymbol(name, meaning, diagnostic) { return resolveName(undefined, name, meaning, diagnostic, name); } - function getGlobalType(name) { - return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), 0); + function getGlobalType(name, arity) { + if (arity === void 0) { arity = 0; } + return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } function getGlobalESSymbolConstructorSymbol() { return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); } function createArrayType(elementType) { var arrayType = globalArrayType || getDeclaredTypeOfSymbol(globalArraySymbol); - return arrayType !== emptyObjectType ? createTypeReference(arrayType, [elementType]) : emptyObjectType; + return arrayType !== emptyObjectType ? createTypeReference(arrayType, [ + elementType + ]) : emptyObjectType; } function getTypeFromArrayTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createArrayType(getTypeFromTypeNode(node.elementType)); + links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement(node.elementType)); } return links.resolvedType; } @@ -9630,7 +15891,7 @@ var ts; function getTypeFromTupleTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNode)); + links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement)); } return links.resolvedType; } @@ -9650,13 +15911,15 @@ var ts; } } function addTypesToSortedSet(sortedTypes, types) { - for (var i = 0, len = types.length; i < len; i++) { - addTypeToSortedSet(sortedTypes, types[i]); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + addTypeToSortedSet(sortedTypes, type); } } function isSubtypeOfAny(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && isTypeSubtypeOf(candidate, types[i])) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && isTypeSubtypeOf(candidate, type)) { return true; } } @@ -9672,8 +15935,9 @@ var ts; } } function containsAnyType(types) { - for (var i = 0; i < types.length; i++) { - if (types[i].flags & 1) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (type.flags & 1) { return true; } } @@ -9718,7 +15982,7 @@ var ts; function getTypeFromUnionTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNode), true); + links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNodeOrHeritageClauseElement), true); } return links.resolvedType; } @@ -9744,40 +16008,42 @@ var ts; } return links.resolvedType; } - function getTypeFromTypeNode(node) { + function getTypeFromTypeNodeOrHeritageClauseElement(node) { switch (node.kind) { - case 110: + case 112: return anyType; - case 119: + case 121: return stringType; - case 117: + case 119: return numberType; - case 111: + case 113: return booleanType; - case 120: + case 122: return esSymbolType; - case 98: + case 99: return voidType; case 8: return getTypeFromStringLiteral(node); - case 137: - return getTypeFromTypeReferenceNode(node); - case 140: - return getTypeFromTypeQueryNode(node); - case 142: - return getTypeFromArrayTypeNode(node); - case 143: - return getTypeFromTupleTypeNode(node); - case 144: - return getTypeFromUnionTypeNode(node); - case 145: - return getTypeFromTypeNode(node.type); - case 138: - case 139: case 141: + return getTypeFromTypeReference(node); + case 177: + return getTypeFromHeritageClauseElement(node); + case 144: + return getTypeFromTypeQueryNode(node); + case 146: + return getTypeFromArrayTypeNode(node); + case 147: + return getTypeFromTupleTypeNode(node); + case 148: + return getTypeFromUnionTypeNode(node); + case 149: + return getTypeFromTypeNodeOrHeritageClauseElement(node.type); + case 142: + case 143: + case 145: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); - case 64: - case 123: + case 65: + case 126: var symbol = getSymbolInfo(node); return symbol && getDeclaredTypeOfSymbol(symbol); default: @@ -9787,47 +16053,63 @@ var ts; function instantiateList(items, mapper, instantiator) { if (items && items.length) { var result = []; - for (var i = 0; i < items.length; i++) { - result.push(instantiator(items[i], mapper)); + for (var _i = 0; _i < items.length; _i++) { + var v = items[_i]; + result.push(instantiator(v, mapper)); } return result; } return items; } function createUnaryTypeMapper(source, target) { - return function (t) { return t === source ? target : t; }; + return function (t) { + return t === source ? target : t; + }; } function createBinaryTypeMapper(source1, target1, source2, target2) { - return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; + return function (t) { + return t === source1 ? target1 : t === source2 ? target2 : t; + }; } function createTypeMapper(sources, targets) { switch (sources.length) { - case 1: return createUnaryTypeMapper(sources[0], targets[0]); - case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); + case 1: + return createUnaryTypeMapper(sources[0], targets[0]); + case 2: + return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); } return function (t) { for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + if (t === sources[i]) { return targets[i]; + } } return t; }; } function createUnaryTypeEraser(source) { - return function (t) { return t === source ? anyType : t; }; + return function (t) { + return t === source ? anyType : t; + }; } function createBinaryTypeEraser(source1, source2) { - return function (t) { return t === source1 || t === source2 ? anyType : t; }; + return function (t) { + return t === source1 || t === source2 ? anyType : t; + }; } function createTypeEraser(sources) { switch (sources.length) { - case 1: return createUnaryTypeEraser(sources[0]); - case 2: return createBinaryTypeEraser(sources[0], sources[1]); + case 1: + return createUnaryTypeEraser(sources[0]); + case 2: + return createBinaryTypeEraser(sources[0], sources[1]); } return function (t) { - for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + for (var _i = 0; _i < sources.length; _i++) { + var source = sources[_i]; + if (t === source) { return anyType; + } } return t; }; @@ -9836,6 +16118,7 @@ var ts; return function (t) { for (var i = 0; i < context.typeParameters.length; i++) { if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; return getInferredType(context, i); } } @@ -9846,7 +16129,9 @@ var ts; return type; } function combineTypeMappers(mapper1, mapper2) { - return function (t) { return mapper2(mapper1(t)); }; + return function (t) { + return mapper2(mapper1(t)); + }; } function instantiateTypeParameter(typeParameter, mapper) { var result = createType(512); @@ -9861,8 +16146,9 @@ var ts; return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { + var freshTypeParameters; if (signature.typeParameters && !eraseTypeParameters) { - var freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); } var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), signature.resolvedReturnType ? instantiateType(signature.resolvedReturnType, mapper) : undefined, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); @@ -9921,33 +16207,33 @@ var ts; return type; } function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 158: - case 159: + case 162: + case 163: return isContextSensitiveFunctionLikeDeclaration(node); - case 150: + case 154: return ts.forEach(node.properties, isContextSensitive); - case 149: + case 153: return ts.forEach(node.elements, isContextSensitive); - case 166: - return isContextSensitive(node.whenTrue) || - isContextSensitive(node.whenFalse); - case 165: - return node.operatorToken.kind === 49 && - (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 207: + case 170: + return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); + case 169: + return node.operatorToken.kind === 49 && (isContextSensitive(node.left) || isContextSensitive(node.right)); + case 224: return isContextSensitive(node.initializer); - case 130: - case 129: + case 134: + case 133: return isContextSensitiveFunctionLikeDeclaration(node); - case 157: + case 161: return isContextSensitive(node.expression); } return false; } function isContextSensitiveFunctionLikeDeclaration(node) { - return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { + return p.type; + }); } function getTypeWithoutConstructors(type) { if (type.flags & 48128) { @@ -9997,6 +16283,7 @@ var ts; var expandingFlags; var depth = 0; var overflow = false; + var elaborateErrors = false; ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking"); var result = isRelatedTo(source, target, errorNode !== undefined, headMessage); if (overflow) { @@ -10005,7 +16292,8 @@ var ts; else if (errorInfo) { if (errorInfo.next === undefined) { errorInfo = undefined; - isRelatedTo(source, target, errorNode !== undefined, headMessage, true); + elaborateErrors = true; + isRelatedTo(source, target, errorNode !== undefined, headMessage); } if (containingMessageChain) { errorInfo = ts.concatenateDiagnosticMessageChains(containingMessageChain, errorInfo); @@ -10016,8 +16304,7 @@ var ts; function reportError(message, arg0, arg1, arg2) { errorInfo = ts.chainDiagnosticMessages(errorInfo, message, arg0, arg1, arg2); } - function isRelatedTo(source, target, reportErrors, headMessage, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function isRelatedTo(source, target, reportErrors, headMessage) { var result; if (source === target) return -1; @@ -10086,8 +16373,7 @@ var ts; } var reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; var sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); - if (sourceOrApparentType.flags & 48128 && target.flags & 48128 && - (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors, elaborateErrors))) { + if (sourceOrApparentType.flags & 48128 && target.flags & 48128 && (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors))) { errorInfo = saveErrorInfo; return result; } @@ -10107,8 +16393,9 @@ var ts; function unionTypeRelatedToUnionType(source, target) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = typeRelatedToUnionType(sourceTypes[i], target, false); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = typeRelatedToUnionType(sourceType, target, false); if (!related) { return 0; } @@ -10129,8 +16416,9 @@ var ts; function unionTypeRelatedToType(source, target, reportErrors) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = isRelatedTo(sourceTypes[i], target, reportErrors); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = isRelatedTo(sourceType, target, reportErrors); if (!related) { return 0; } @@ -10174,8 +16462,7 @@ var ts; return 0; } } - function objectTypeRelatedTo(source, target, reportErrors, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function objectTypeRelatedTo(source, target, reportErrors) { if (overflow) { return 0; } @@ -10213,11 +16500,12 @@ var ts; expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack)) expandingFlags |= 2; + var result; if (expandingFlags === 3) { - var result = 1; + result = 1; } else { - var result = propertiesRelatedTo(source, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { result &= signaturesRelatedTo(source, target, 0, reportErrors); if (result) { @@ -10245,11 +16533,11 @@ var ts; } function isDeeplyNestedGeneric(type, stack) { if (type.flags & 4096 && depth >= 10) { - var target = type.target; + var target_1 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) { + if (t.flags & 4096 && t.target === target_1) { count++; if (count >= 10) return true; @@ -10265,8 +16553,8 @@ var ts; var result = -1; var properties = getPropertiesOfObjectType(target); var requireOptionalProperties = relation === subtypeRelation && !(source.flags & 131072); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfType(source, targetProp.name); if (sourceProp !== targetProp) { if (!sourceProp) { @@ -10336,8 +16624,8 @@ var ts; return 0; } var result = -1; - for (var i = 0, len = sourceProperties.length; i < len; ++i) { - var sourceProp = sourceProperties[i]; + for (var _i = 0; _i < sourceProperties.length; _i++) { + var sourceProp = sourceProperties[_i]; var targetProp = getPropertyOfObjectType(target, sourceProp.name); if (!targetProp) { return 0; @@ -10361,12 +16649,12 @@ var ts; var targetSignatures = getSignaturesOfType(target, kind); var result = -1; var saveErrorInfo = errorInfo; - outer: for (var i = 0; i < targetSignatures.length; i++) { - var t = targetSignatures[i]; + outer: for (var _i = 0; _i < targetSignatures.length; _i++) { + var t = targetSignatures[_i]; if (!t.hasStringLiterals || target.flags & 65536) { var localErrors = reportErrors; - for (var j = 0; j < sourceSignatures.length; j++) { - var s = sourceSignatures[j]; + for (var _a = 0; _a < sourceSignatures.length; _a++) { + var s = sourceSignatures[_a]; if (!s.hasStringLiterals || source.flags & 65536) { var related = signatureRelatedTo(s, t, localErrors); if (related) { @@ -10412,12 +16700,12 @@ var ts; target = getErasedSignature(target); var result = -1; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var s_1 = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t_1 = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); var saveErrorInfo = errorInfo; - var related = isRelatedTo(s, t, reportErrors); + var related = isRelatedTo(s_1, t_1, reportErrors); if (!related) { - related = isRelatedTo(t, s, false); + related = isRelatedTo(t_1, s_1, false); if (!related) { if (reportErrors) { reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); @@ -10488,11 +16776,12 @@ var ts; } return 0; } + var related; if (sourceStringType && sourceNumberType) { - var related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { - var related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); } if (!related) { if (reportErrors) { @@ -10544,9 +16833,7 @@ var ts; if (source === target) { return -1; } - if (source.parameters.length !== target.parameters.length || - source.minArgumentCount !== target.minArgumentCount || - source.hasRestParameter !== target.hasRestParameter) { + if (source.parameters.length !== target.parameters.length || source.minArgumentCount !== target.minArgumentCount || source.hasRestParameter !== target.hasRestParameter) { return 0; } var result = -1; @@ -10582,14 +16869,17 @@ var ts; return result; } function isSupertypeOfEach(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && !isTypeSubtypeOf(types[i], candidate)) + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && !isTypeSubtypeOf(type, candidate)) return false; } return true; } function getCommonSupertype(types) { - return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + return ts.forEach(types, function (t) { + return isSupertypeOfEach(t, types) ? t : undefined; + }); } function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { var bestSupertype; @@ -10606,6 +16896,7 @@ var ts; downfallType = types[j]; } } + ts.Debug.assert(!!downfallType, "If there is no common supertype, each type should have a downfallType"); if (score > bestSupertypeScore) { bestSupertype = types[i]; bestSupertypeDownfallType = downfallType; @@ -10626,6 +16917,9 @@ var ts; function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); } + function isTupleType(type) { + return (type.flags & 8192) && !!type.elementTypes; + } function getWidenedTypeOfObjectLiteral(type) { var properties = getPropertiesOfObjectType(type); var members = {}; @@ -10699,29 +16993,30 @@ var ts; } function reportImplicitAnyError(declaration, type) { var typeAsString = typeToString(getWidenedType(type)); + var diagnostic; switch (declaration.kind) { - case 128: - case 127: - var diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; - break; - case 126: - var diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; - break; - case 193: - case 130: - case 129: case 132: + case 131: + diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; + break; + case 129: + diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; + break; + case 200: + case 134: case 133: - case 158: - case 159: + case 136: + case 137: + case 162: + case 163: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; } - var diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; + diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; break; default: - var diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; + diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; } error(declaration, diagnostic, ts.declarationNameToString(declaration.name), typeAsString); } @@ -10760,13 +17055,17 @@ var ts; } function createInferenceContext(typeParameters, inferUnionTypes) { var inferences = []; - for (var i = 0; i < typeParameters.length; i++) { - inferences.push({ primary: undefined, secondary: undefined }); + for (var _i = 0; _i < typeParameters.length; _i++) { + var unused = typeParameters[_i]; + inferences.push({ + primary: undefined, + secondary: undefined, + isFixed: false + }); } return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, - inferenceCount: 0, inferences: inferences, inferredTypes: new Array(typeParameters.length) }; @@ -10779,19 +17078,21 @@ var ts; inferFromTypes(source, target); function isInProcess(source, target) { for (var i = 0; i < depth; i++) { - if (source === sourceStack[i] && target === targetStack[i]) + if (source === sourceStack[i] && target === targetStack[i]) { return true; + } } return false; } function isWithinDepthLimit(type, stack) { if (depth >= 5) { - var target = type.target; + var target_2 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) + if (t.flags & 4096 && t.target === target_2) { count++; + } } return count < 5; } @@ -10806,10 +17107,13 @@ var ts; for (var i = 0; i < typeParameters.length; i++) { if (target === typeParameters[i]) { var inferences = context.inferences[i]; - var candidates = inferiority ? inferences.secondary || (inferences.secondary = []) : inferences.primary || (inferences.primary = []); - if (!ts.contains(candidates, source)) - candidates.push(source); - break; + if (!inferences.isFixed) { + var candidates = inferiority ? inferences.secondary || (inferences.secondary = []) : inferences.primary || (inferences.primary = []); + if (!ts.contains(candidates, source)) { + candidates.push(source); + } + } + return; } } } @@ -10824,8 +17128,8 @@ var ts; var targetTypes = target.types; var typeParameterCount = 0; var typeParameter; - for (var i = 0; i < targetTypes.length; i++) { - var t = targetTypes[i]; + for (var _i = 0; _i < targetTypes.length; _i++) { + var t = targetTypes[_i]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -10842,12 +17146,12 @@ var ts; } else if (source.flags & 16384) { var sourceTypes = source.types; - for (var i = 0; i < sourceTypes.length; i++) { - inferFromTypes(sourceTypes[i], target); + for (var _a = 0; _a < sourceTypes.length; _a++) { + var sourceType = sourceTypes[_a]; + inferFromTypes(sourceType, target); } } - else if (source.flags & 48128 && (target.flags & (4096 | 8192) || - (target.flags & 32768) && target.symbol && target.symbol.flags & (8192 | 2048))) { + else if (source.flags & 48128 && (target.flags & (4096 | 8192) || (target.flags & 32768) && target.symbol && target.symbol.flags & (8192 | 2048))) { if (!isInProcess(source, target) && isWithinDepthLimit(source, sourceStack) && isWithinDepthLimit(target, targetStack)) { if (depth === 0) { sourceStack = []; @@ -10868,8 +17172,8 @@ var ts; } function inferFromProperties(source, target) { var properties = getPropertiesOfObjectType(target); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfObjectType(source, targetProp.name); if (sourceProp) { inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); @@ -10906,19 +17210,25 @@ var ts; } function getInferredType(context, index) { var inferredType = context.inferredTypes[index]; + var inferenceSucceeded; if (!inferredType) { var inferences = getInferenceCandidates(context, index); if (inferences.length) { var unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); - inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : inferenceFailureType; + inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : unknownType; + inferenceSucceeded = !!unionOrSuperType; } else { inferredType = emptyObjectType; + inferenceSucceeded = true; } - if (inferredType !== inferenceFailureType) { + if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; } + else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { + context.failedTypeParameterIndex = index; + } context.inferredTypes[index] = inferredType; } return inferredType; @@ -10935,17 +17245,17 @@ var ts; function getResolvedSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (ts.getFullWidth(node) > 0 && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; } return links.resolvedSymbol; } function isInTypeQuery(node) { while (node) { switch (node.kind) { - case 140: + case 144: return true; - case 64: - case 123: + case 65: + case 126: node = node.parent; continue; default: @@ -10954,16 +17264,23 @@ var ts; } ts.Debug.fail("should not get here"); } - function removeTypesFromUnionType(type, typeKind, isOfTypeKind) { + function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { if (type.flags & 16384) { var types = type.types; - if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { - var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (narrowedType !== emptyObjectType) { + if (ts.forEach(types, function (t) { + return !!(t.flags & typeKind) === isOfTypeKind; + })) { + var narrowedType = getUnionType(ts.filter(types, function (t) { + return !(t.flags & typeKind) === isOfTypeKind; + })); + if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { return narrowedType; } } } + else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { + return getUnionType(emptyArray); + } return type; } function hasInitializer(node) { @@ -10982,12 +17299,12 @@ var ts; } return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 52 && node.operatorToken.kind <= 63) { + if (node.operatorToken.kind >= 53 && node.operatorToken.kind <= 64) { var n = node.left; - while (n.kind === 157) { + while (n.kind === 161) { n = n.expression; } - if (n.kind === 64 && getResolvedSymbol(n) === symbol) { + if (n.kind === 65 && getResolvedSymbol(n) === symbol) { return true; } } @@ -11001,46 +17318,46 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 165: + case 169: return isAssignedInBinaryExpression(node); - case 191: - case 148: + case 198: + case 152: return isAssignedInVariableDeclaration(node); - case 146: - case 147: - case 149: case 150: case 151: - case 152: case 153: case 154: + case 155: case 156: case 157: - case 163: + case 158: case 160: case 161: - case 162: + case 167: case 164: + case 165: case 166: - case 169: - case 172: + case 168: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: case 180: - case 181: + case 182: + case 183: case 184: case 185: case 186: - case 203: - case 204: case 187: case 188: - case 189: - case 206: + case 191: + case 192: + case 193: + case 220: + case 221: + case 194: + case 195: + case 196: + case 223: return ts.forEachChild(node, isAssignedIn); } return false; @@ -11048,13 +17365,14 @@ var ts; } function resolveLocation(node) { var containerNodes = []; - for (var parent = node.parent; parent; parent = parent.parent) { - if ((ts.isExpression(parent) || ts.isObjectLiteralMethod(node)) && - isContextSensitive(parent)) { - containerNodes.unshift(parent); + for (var parent_3 = node.parent; parent_3; parent_3 = parent_3.parent) { + if ((ts.isExpression(parent_3) || ts.isObjectLiteralMethod(node)) && isContextSensitive(parent_3)) { + containerNodes.unshift(parent_3); } } - ts.forEach(containerNodes, function (node) { getTypeOfNode(node); }); + ts.forEach(containerNodes, function (node) { + getTypeOfNode(node); + }); } function getSymbolAtLocation(node) { resolveLocation(node); @@ -11076,17 +17394,17 @@ var ts; node = node.parent; var narrowedType = type; switch (node.kind) { - case 176: + case 183: if (child !== node.expression) { narrowedType = narrowType(type, node.expression, child === node.thenStatement); } break; - case 166: + case 170: if (child !== node.condition) { narrowedType = narrowType(type, node.condition, child === node.whenTrue); } break; - case 165: + case 169: if (child === node.right) { if (node.operatorToken.kind === 48) { narrowedType = narrowType(type, node.left, true); @@ -11096,14 +17414,14 @@ var ts; } } break; - case 210: - case 198: - case 193: - case 130: - case 129: - case 132: + case 227: + case 205: + case 200: + case 134: case 133: - case 131: + case 136: + case 137: + case 135: break loop; } if (narrowedType !== type) { @@ -11116,12 +17434,12 @@ var ts; } return type; function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 161 || expr.right.kind !== 8) { + if (expr.left.kind !== 165 || expr.right.kind !== 8) { return type; } var left = expr.left; var right = expr.right; - if (left.expression.kind !== 64 || getResolvedSymbol(left.expression) !== symbol) { + if (left.expression.kind !== 65 || getResolvedSymbol(left.expression) !== symbol) { return type; } var typeInfo = primitiveTypeInfo[right.text]; @@ -11130,16 +17448,16 @@ var ts; } if (assumeTrue) { if (!typeInfo) { - return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true); + return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true, false); } if (isTypeSubtypeOf(typeInfo.type, type)) { return typeInfo.type; } - return removeTypesFromUnionType(type, typeInfo.flags, false); + return removeTypesFromUnionType(type, typeInfo.flags, false, false); } else { if (typeInfo) { - return removeTypesFromUnionType(type, typeInfo.flags, true); + return removeTypesFromUnionType(type, typeInfo.flags, true, false); } return type; } @@ -11167,7 +17485,7 @@ var ts; } } function narrowTypeByInstanceof(type, expr, assumeTrue) { - if (type.flags & 1 || !assumeTrue || expr.left.kind !== 64 || getResolvedSymbol(expr.left) !== symbol) { + if (type.flags & 1 || !assumeTrue || expr.left.kind !== 65 || getResolvedSymbol(expr.left) !== symbol) { return type; } var rightType = checkExpression(expr.right); @@ -11183,15 +17501,17 @@ var ts; return targetType; } if (type.flags & 16384) { - return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); })); + return getUnionType(ts.filter(type.types, function (t) { + return isTypeSubtypeOf(t, targetType); + })); } return type; } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 157: + case 161: return narrowType(type, expr.expression, assumeTrue); - case 165: + case 169: var operator = expr.operatorToken.kind; if (operator === 30 || operator === 31) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -11202,11 +17522,11 @@ var ts; else if (operator === 49) { return narrowTypeByOr(type, expr, assumeTrue); } - else if (operator === 86) { + else if (operator === 87) { return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 163: + case 167: if (expr.operator === 46) { return narrowType(type, expr.operand, !assumeTrue); } @@ -11215,48 +17535,58 @@ var ts; return type; } } - function markLinkedImportsAsReferenced(node) { - var nodeLinks = getNodeLinks(node); - while (nodeLinks.importOnRightSide) { - var rightSide = nodeLinks.importOnRightSide; - nodeLinks.importOnRightSide = undefined; - getSymbolLinks(rightSide).referenced = true; - ts.Debug.assert((rightSide.flags & 8388608) !== 0); - nodeLinks = getNodeLinks(ts.getDeclarationOfKind(rightSide, 200)); - } - } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); - if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 159) { + if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 163) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression); } - if (symbol.flags & 8388608) { - var symbolLinks = getSymbolLinks(symbol); - if (!symbolLinks.referenced) { - var importOrExportAssignment = getLeftSideOfImportOrExportAssignment(node); - if (!importOrExportAssignment || - (importOrExportAssignment.flags & 1) || - (importOrExportAssignment.kind === 201)) { - symbolLinks.referenced = !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol)); - } - else { - var nodeLinks = getNodeLinks(importOrExportAssignment); - ts.Debug.assert(!nodeLinks.importOnRightSide); - nodeLinks.importOnRightSide = symbol; - } - } - if (symbolLinks.referenced) { - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + if (symbol.flags & 8388608 && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); } checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); + checkBlockScopedBindingCapturedInLoop(node, symbol); return getNarrowedTypeOfSymbol(getExportSymbolOfValueSymbolIfExported(symbol), node); } + function isInsideFunction(node, threshold) { + var current = node; + while (current && current !== threshold) { + if (ts.isFunctionLike(current)) { + return true; + } + current = current.parent; + } + return false; + } + function checkBlockScopedBindingCapturedInLoop(node, symbol) { + if (languageVersion >= 2 || (symbol.flags & 2) === 0 || symbol.valueDeclaration.parent.kind === 223) { + return; + } + var container = symbol.valueDeclaration; + while (container.kind !== 199) { + container = container.parent; + } + container = container.parent; + if (container.kind === 180) { + container = container.parent; + } + var inFunction = isInsideFunction(node.parent, container); + var current = container; + while (current && !ts.nodeStartsNewLexicalEnvironment(current)) { + if (isIterationStatement(current, false)) { + if (inFunction) { + grammarErrorOnFirstToken(current, ts.Diagnostics.Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher, ts.declarationNameToString(node)); + } + getNodeLinks(symbol.valueDeclaration).flags |= 256; + break; + } + current = current.parent; + } + } function captureLexicalThis(node, container) { - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; getNodeLinks(node).flags |= 2; - if (container.kind === 128 || container.kind === 131) { + if (container.kind === 132 || container.kind === 135) { getNodeLinks(classNode).flags |= 4; } else { @@ -11266,36 +17596,36 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 159) { + if (container.kind === 163) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 198: + case 205: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_body); break; - case 197: + case 204: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; - case 131: + case 135: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; - case 128: - case 127: + case 132: + case 131: if (container.flags & 128) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 124: + case 127: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; if (classNode) { var symbol = getSymbolOfNode(classNode); return container.flags & 128 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); @@ -11304,17 +17634,17 @@ var ts; } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 126) { + if (n.kind === 129) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 153 && node.parent.expression === node; - var enclosingClass = ts.getAncestor(node, 194); + var isCallExpression = node.parent.kind === 157 && node.parent.expression === node; + var enclosingClass = ts.getAncestor(node, 201); var baseClass; - if (enclosingClass && ts.getClassBaseTypeNode(enclosingClass)) { + if (enclosingClass && ts.getClassExtendsHeritageClauseElement(enclosingClass)) { var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); baseClass = classType.baseTypes.length && classType.baseTypes[0]; } @@ -11325,32 +17655,22 @@ var ts; var container = ts.getSuperContainer(node, true); if (container) { var canUseSuperExpression = false; + var needToCaptureLexicalThis; if (isCallExpression) { - canUseSuperExpression = container.kind === 131; + canUseSuperExpression = container.kind === 135; } else { - var needToCaptureLexicalThis = false; - while (container && container.kind === 159) { + needToCaptureLexicalThis = false; + while (container && container.kind === 163) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = true; } - if (container && container.parent && container.parent.kind === 194) { + if (container && container.parent && container.parent.kind === 201) { if (container.flags & 128) { - canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133; + canUseSuperExpression = container.kind === 134 || container.kind === 133 || container.kind === 136 || container.kind === 137; } else { - canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133 || - container.kind === 128 || - container.kind === 127 || - container.kind === 131; + canUseSuperExpression = container.kind === 134 || container.kind === 133 || container.kind === 136 || container.kind === 137 || container.kind === 132 || container.kind === 131 || container.kind === 135; } } } @@ -11364,7 +17684,7 @@ var ts; getNodeLinks(node).flags |= 16; returnType = baseClass; } - if (container.kind === 131 && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 135 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); returnType = unknownType; } @@ -11374,7 +17694,7 @@ var ts; return returnType; } } - if (container.kind === 124) { + if (container.kind === 127) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { @@ -11397,8 +17717,7 @@ var ts; if (indexOfParameter < len) { return getTypeAtPosition(contextualSignature, indexOfParameter); } - if (indexOfParameter === (func.parameters.length - 1) && - funcHasRestParameters && contextualSignature.hasRestParameter && func.parameters.length >= contextualSignature.parameters.length) { + if (indexOfParameter === (func.parameters.length - 1) && funcHasRestParameters && contextualSignature.hasRestParameter && func.parameters.length >= contextualSignature.parameters.length) { return getTypeOfSymbol(contextualSignature.parameters[contextualSignature.parameters.length - 1]); } } @@ -11410,9 +17729,9 @@ var ts; var declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -11427,7 +17746,7 @@ var ts; function getContextualTypeForReturnExpression(node) { var func = ts.getContainingFunction(node); if (func) { - if (func.type || func.kind === 131 || func.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 133))) { + if (func.type || func.kind === 135 || func.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 137))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(func)); } var signature = getContextualSignatureForFunctionLikeDeclaration(func); @@ -11447,7 +17766,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 155) { + if (template.parent.kind === 159) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -11455,7 +17774,7 @@ var ts; function getContextualTypeForBinaryOperand(node) { var binaryExpression = node.parent; var operator = binaryExpression.operatorToken.kind; - if (operator >= 52 && operator <= 63) { + if (operator >= 53 && operator <= 64) { if (node === binaryExpression.right) { return checkExpression(binaryExpression.left); } @@ -11476,14 +17795,18 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var i = 0; i < types.length; i++) { - var t = mapper(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var t = mapper(current); if (t) { if (!mappedType) { mappedType = t; } else if (!mappedTypes) { - mappedTypes = [mappedType, t]; + mappedTypes = [ + mappedType, + t + ]; } else { mappedTypes.push(t); @@ -11499,13 +17822,17 @@ var ts; }); } function getIndexTypeOfContextualType(type, kind) { - return applyToContextualType(type, function (t) { return getIndexTypeOfObjectOrUnionType(t, kind); }); + return applyToContextualType(type, function (t) { + return getIndexTypeOfObjectOrUnionType(t, kind); + }); } function contextualTypeIsTupleLikeType(type) { return !!(type.flags & 16384 ? ts.forEach(type.types, isTupleLikeType) : isTupleLikeType(type)); } function contextualTypeHasIndexSignature(type, kind) { - return !!(type.flags & 16384 ? ts.forEach(type.types, function (t) { return getIndexTypeOfObjectOrUnionType(t, kind); }) : getIndexTypeOfObjectOrUnionType(type, kind)); + return !!(type.flags & 16384 ? ts.forEach(type.types, function (t) { + return getIndexTypeOfObjectOrUnionType(t, kind); + }) : getIndexTypeOfObjectOrUnionType(type, kind)); } function getContextualTypeForObjectLiteralMethod(node) { ts.Debug.assert(ts.isObjectLiteralMethod(node)); @@ -11525,8 +17852,7 @@ var ts; return propertyType; } } - return isNumericName(element.name) && getIndexTypeOfContextualType(type, 1) || - getIndexTypeOfContextualType(type, 0); + return isNumericName(element.name) && getIndexTypeOfContextualType(type, 1) || getIndexTypeOfContextualType(type, 0); } return undefined; } @@ -11535,7 +17861,7 @@ var ts; var type = getContextualType(arrayLiteral); if (type) { var index = ts.indexOf(arrayLiteral.elements, node); - return getTypeOfPropertyOfContextualType(type, "" + index) || getIndexTypeOfContextualType(type, 1); + return getTypeOfPropertyOfContextualType(type, "" + index) || getIndexTypeOfContextualType(type, 1) || (languageVersion >= 2 ? checkIteratedType(type, undefined) : undefined); } return undefined; } @@ -11552,32 +17878,32 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 148: + case 198: + case 129: + case 132: + case 131: + case 152: return getContextualTypeForInitializerExpression(node); - case 159: - case 184: + case 163: + case 191: return getContextualTypeForReturnExpression(node); - case 153: - case 154: - return getContextualTypeForArgument(parent, node); - case 156: - return getTypeFromTypeNode(parent.type); - case 165: - return getContextualTypeForBinaryOperand(node); - case 207: - return getContextualTypeForObjectLiteralElement(parent); - case 149: - return getContextualTypeForElementExpression(node); - case 166: - return getContextualTypeForConditionalOperand(node); - case 171: - ts.Debug.assert(parent.parent.kind === 167); - return getContextualTypeForSubstitutionExpression(parent.parent, node); case 157: + case 158: + return getContextualTypeForArgument(parent, node); + case 160: + return getTypeFromTypeNodeOrHeritageClauseElement(parent.type); + case 169: + return getContextualTypeForBinaryOperand(node); + case 224: + return getContextualTypeForObjectLiteralElement(parent); + case 153: + return getContextualTypeForElementExpression(node); + case 170: + return getContextualTypeForConditionalOperand(node); + case 176: + ts.Debug.assert(parent.parent.kind === 171); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 161: return getContextualType(parent); } return undefined; @@ -11592,13 +17918,13 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 158 || node.kind === 159; + return node.kind === 162 || node.kind === 163; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) ? getContextualSignature(node) : undefined; } function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getContextualType(node); if (!type) { return undefined; @@ -11608,15 +17934,17 @@ var ts; } var signatureList; var types = type.types; - for (var i = 0; i < types.length; i++) { - if (signatureList && - getSignaturesOfObjectOrUnionType(types[i], 0).length > 1) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (signatureList && getSignaturesOfObjectOrUnionType(current, 0).length > 1) { return undefined; } - var signature = getNonGenericSignature(types[i]); + var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { - signatureList = [signature]; + signatureList = [ + signature + ]; } else if (!compareSignatures(signatureList[0], signature, false, compareTypes)) { return undefined; @@ -11639,13 +17967,13 @@ var ts; } function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 165 && parent.operatorToken.kind === 52 && parent.left === node) { + if (parent.kind === 169 && parent.operatorToken.kind === 53 && parent.left === node) { return true; } - if (parent.kind === 207) { + if (parent.kind === 224) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 149) { + if (parent.kind === 153) { return isAssignmentTarget(parent); } return false; @@ -11667,7 +17995,7 @@ var ts; var elementTypes = []; ts.forEach(elements, function (e) { var type = checkExpression(e, contextualMapper); - if (e.kind === 169) { + if (e.kind === 173) { elementTypes.push(getIndexTypeOfType(type, 1) || anyType); hasSpreadElement = true; } @@ -11684,7 +18012,7 @@ var ts; return createArrayType(getUnionType(elementTypes)); } function isNumericName(name) { - return name.kind === 124 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 127 ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { return allConstituentTypesHaveKind(checkComputedPropertyName(name), 1 | 132); @@ -11711,21 +18039,20 @@ var ts; var propertiesArray = []; var contextualType = getContextualType(node); var typeFlags; - for (var i = 0; i < node.properties.length; i++) { - var memberDecl = node.properties[i]; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 207 || - memberDecl.kind === 208 || - ts.isObjectLiteralMethod(memberDecl)) { - if (memberDecl.kind === 207) { - var type = checkPropertyAssignment(memberDecl, contextualMapper); + if (memberDecl.kind === 224 || memberDecl.kind === 225 || ts.isObjectLiteralMethod(memberDecl)) { + var type = void 0; + if (memberDecl.kind === 224) { + type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 130) { - var type = checkObjectLiteralMethod(memberDecl, contextualMapper); + else if (memberDecl.kind === 134) { + type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 208); - var type = memberDecl.name.kind === 124 ? unknownType : checkExpression(memberDecl.name, contextualMapper); + ts.Debug.assert(memberDecl.kind === 225); + type = memberDecl.name.kind === 127 ? unknownType : checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); @@ -11739,7 +18066,7 @@ var ts; member = prop; } else { - ts.Debug.assert(memberDecl.kind === 132 || memberDecl.kind === 133); + ts.Debug.assert(memberDecl.kind === 136 || memberDecl.kind === 137); checkAccessorDeclaration(memberDecl); } if (!ts.hasDynamicName(memberDecl)) { @@ -11764,15 +18091,15 @@ var ts; } } } - var result = propTypes.length ? getUnionType(propTypes) : undefinedType; - typeFlags |= result.flags; - return result; + var result_1 = propTypes.length ? getUnionType(propTypes) : undefinedType; + typeFlags |= result_1.flags; + return result_1; } return undefined; } } function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 128; + return s.valueDeclaration ? s.valueDeclaration.kind : 132; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 16 | 128 : 0; @@ -11782,7 +18109,7 @@ var ts; if (!(flags & (32 | 64))) { return; } - var enclosingClassDeclaration = ts.getAncestor(node, 194); + var enclosingClassDeclaration = ts.getAncestor(node, 201); var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (flags & 32) { @@ -11791,7 +18118,7 @@ var ts; } return; } - if (left.kind === 90) { + if (left.kind === 91) { return; } if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { @@ -11829,7 +18156,7 @@ var ts; } getNodeLinks(node).resolvedSymbol = prop; if (prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { error(right, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); } else { @@ -11841,12 +18168,12 @@ var ts; return anyType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 151 ? node.expression : node.left; + var left = node.kind === 155 ? node.expression : node.left; var type = checkExpressionOrQualifiedName(left); if (type !== unknownType && type !== anyType) { var prop = getPropertyOfType(getWidenedType(type), propertyName); if (prop && prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { return false; } else { @@ -11861,7 +18188,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 154 && node.parent.expression === node) { + if (node.parent.kind === 158 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -11878,21 +18205,20 @@ var ts; return unknownType; } var isConstEnum = isConstEnumObjectType(objectType); - if (isConstEnum && - (!node.argumentExpression || node.argumentExpression.kind !== 8)) { + if (isConstEnum && (!node.argumentExpression || node.argumentExpression.kind !== 8)) { error(node.argumentExpression, ts.Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal); return unknownType; } if (node.argumentExpression) { - var name = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name !== undefined) { - var prop = getPropertyOfType(objectType, name); + var name_6 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_6 !== undefined) { + var prop = getPropertyOfType(objectType, name_6); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_6, symbolToString(objectType.symbol)); return unknownType; } } @@ -11957,7 +18283,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 155) { + if (node.kind === 159) { checkExpression(node.template); } else { @@ -11979,22 +18305,22 @@ var ts; var specializedIndex = -1; var spliceIndex; ts.Debug.assert(!result.length); - for (var i = 0; i < signatures.length; i++) { - var signature = signatures[i]; + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent = signature.declaration && signature.declaration.parent; + var parent_4 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent === lastParent) { + if (lastParent && parent_4 === lastParent) { index++; } else { - lastParent = parent; + lastParent = parent_4; index = cutoffIndex; } } else { index = cutoffIndex = result.length; - lastParent = parent; + lastParent = parent_4; } lastSymbol = symbol; if (signature.hasStringLiterals) { @@ -12010,7 +18336,7 @@ var ts; } function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { - if (args[i].kind === 169) { + if (args[i].kind === 173) { return i; } } @@ -12020,15 +18346,15 @@ var ts; var adjustedArgCount; var typeArguments; var callIsIncomplete; - if (node.kind === 155) { + if (node.kind === 159) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 167) { + if (tagExpression.template.kind === 171) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); - callIsIncomplete = ts.getFullWidth(lastSpan.literal) === 0 || !!lastSpan.literal.isUnterminated; + callIsIncomplete = ts.nodeIsMissing(lastSpan.literal) || !!lastSpan.literal.isUnterminated; } else { var templateLiteral = tagExpression.template; @@ -12039,15 +18365,14 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 154); + ts.Debug.assert(callExpression.kind === 158); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; callIsIncomplete = callExpression.arguments.end === callExpression.end; typeArguments = callExpression.typeArguments; } - var hasRightNumberOfTypeArgs = !typeArguments || - (signature.typeParameters && typeArguments.length === signature.typeParameters.length); + var hasRightNumberOfTypeArgs = !typeArguments || (signature.typeParameters && typeArguments.length === signature.typeParameters.length); if (!hasRightNumberOfTypeArgs) { return false; } @@ -12064,8 +18389,7 @@ var ts; function getSingleCallSignature(type) { if (type.flags & 48128) { var resolved = resolveObjectOrUnionTypeMembers(type); - if (resolved.callSignatures.length === 1 && resolved.constructSignatures.length === 0 && - resolved.properties.length === 0 && !resolved.stringIndexType && !resolved.numberIndexType) { + if (resolved.callSignatures.length === 1 && resolved.constructSignatures.length === 0 && resolved.properties.length === 0 && !resolved.stringIndexType && !resolved.numberIndexType) { return resolved.callSignatures[0]; } } @@ -12078,20 +18402,28 @@ var ts; }); return getSignatureInstantiation(signature, getInferredTypes(context)); } - function inferTypeArguments(signature, args, excludeArgument) { + function inferTypeArguments(signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var context = createInferenceContext(typeParameters, false); var inferenceMapper = createInferenceMapper(context); + for (var i = 0; i < typeParameters.length; i++) { + if (!context.inferences[i].isFixed) { + context.inferredTypes[i] = undefined; + } + } + if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { + context.failedTypeParameterIndex = undefined; + } for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - if (i === 0 && args[i].parent.kind === 155) { - var argType = globalTemplateStringsArrayType; + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = void 0; + if (i === 0 && args[i].parent.kind === 159) { + argType = globalTemplateStringsArrayType; } else { var mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; - var argType = checkExpressionWithContextualType(arg, paramType, mapper); + argType = checkExpressionWithContextualType(arg, paramType, mapper); } inferTypes(context, argType, paramType); } @@ -12100,26 +18432,19 @@ var ts; for (var i = 0; i < args.length; i++) { if (excludeArgument[i] === false) { var arg = args[i]; - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); inferTypes(context, checkExpressionWithContextualType(arg, paramType, inferenceMapper), paramType); } } } - var inferredTypes = getInferredTypes(context); - context.failedTypeParameterIndex = ts.indexOf(inferredTypes, inferenceFailureType); - for (var i = 0; i < inferredTypes.length; i++) { - if (inferredTypes[i] === inferenceFailureType) { - inferredTypes[i] = unknownType; - } - } - return context; + getInferredTypes(context); } function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; for (var i = 0; i < typeParameters.length; i++) { var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); + var typeArgument = getTypeFromTypeNodeOrHeritageClauseElement(typeArgNode); typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); @@ -12133,9 +18458,9 @@ var ts; function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - var argType = i === 0 && node.kind === 155 ? globalTemplateStringsArrayType : arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = i === 0 && node.kind === 159 ? globalTemplateStringsArrayType : arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined, ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) { return false; } @@ -12145,10 +18470,12 @@ var ts; } function getEffectiveCallArguments(node) { var args; - if (node.kind === 155) { + if (node.kind === 159) { var template = node.template; - args = [template]; - if (template.kind === 167) { + args = [ + template + ]; + if (template.kind === 171) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -12160,9 +18487,9 @@ var ts; return args; } function getEffectiveTypeArguments(callExpression) { - if (callExpression.expression.kind === 90) { - var containingClass = ts.getAncestor(callExpression, 194); - var baseClassTypeNode = containingClass && ts.getClassBaseTypeNode(containingClass); + if (callExpression.expression.kind === 91) { + var containingClass = ts.getAncestor(callExpression, 201); + var baseClassTypeNode = containingClass && ts.getClassExtendsHeritageClauseElement(containingClass); return baseClassTypeNode && baseClassTypeNode.typeArguments; } else { @@ -12170,11 +18497,11 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray) { - var isTaggedTemplate = node.kind === 155; + var isTaggedTemplate = node.kind === 159; var typeArguments; if (!isTaggedTemplate) { typeArguments = getEffectiveTypeArguments(node); - if (node.expression.kind !== 90) { + if (node.expression.kind !== 91) { ts.forEach(typeArguments, checkSourceElement); } } @@ -12229,33 +18556,35 @@ var ts; error(node, ts.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target); } if (!produceDiagnostics) { - for (var i = 0, n = candidates.length; i < n; i++) { - if (hasCorrectArity(node, args, candidates[i])) { - return candidates[i]; + for (var _i = 0; _i < candidates.length; _i++) { + var candidate = candidates[_i]; + if (hasCorrectArity(node, args, candidate)) { + return candidate; } } } return resolveErrorCall(node); function chooseOverload(candidates, relation) { - for (var i = 0; i < candidates.length; i++) { - if (!hasCorrectArity(node, args, candidates[i])) { + for (var _i = 0; _i < candidates.length; _i++) { + var originalCandidate = candidates[_i]; + if (!hasCorrectArity(node, args, originalCandidate)) { continue; } - var originalCandidate = candidates[i]; - var inferenceResult; + var candidate = void 0; + var typeArgumentsAreValid = void 0; + var inferenceContext = originalCandidate.typeParameters ? createInferenceContext(originalCandidate.typeParameters, false) : undefined; while (true) { - var candidate = originalCandidate; + candidate = originalCandidate; if (candidate.typeParameters) { - var typeArgumentTypes; - var typeArgumentsAreValid; + var typeArgumentTypes = void 0; if (typeArguments) { typeArgumentTypes = new Array(candidate.typeParameters.length); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); } else { - inferenceResult = inferTypeArguments(candidate, args, excludeArgument); - typeArgumentsAreValid = inferenceResult.failedTypeParameterIndex < 0; - typeArgumentTypes = inferenceResult.inferredTypes; + inferTypeArguments(candidate, args, excludeArgument, inferenceContext); + typeArgumentsAreValid = inferenceContext.failedTypeParameterIndex === undefined; + typeArgumentTypes = inferenceContext.inferredTypes; } if (!typeArgumentsAreValid) { break; @@ -12279,7 +18608,7 @@ var ts; else { candidateForTypeArgumentError = originalCandidate; if (!typeArguments) { - resultOfFailedInference = inferenceResult; + resultOfFailedInference = inferenceContext; } } } @@ -12292,7 +18621,7 @@ var ts; } } function resolveCallExpression(node, candidatesOutArray) { - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { var superType = checkSuperExpression(node.expression); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, 1), candidatesOutArray); @@ -12376,13 +18705,13 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 153) { + if (node.kind === 157) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 154) { + else if (node.kind === 158) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 155) { + else if (node.kind === 159) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else { @@ -12394,15 +18723,12 @@ var ts; function checkCallExpression(node) { checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); var signature = getResolvedSignature(node); - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { return voidType; } - if (node.kind === 154) { + if (node.kind === 158) { var declaration = signature.declaration; - if (declaration && - declaration.kind !== 131 && - declaration.kind !== 135 && - declaration.kind !== 139) { + if (declaration && declaration.kind !== 135 && declaration.kind !== 139 && declaration.kind !== 143) { if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } @@ -12412,14 +18738,11 @@ var ts; return getReturnTypeOfSignature(signature); } function checkTaggedTemplateExpression(node) { - if (languageVersion < 2) { - grammarErrorOnFirstToken(node.template, ts.Diagnostics.Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher); - } return getReturnTypeOfSignature(getResolvedSignature(node)); } function checkTypeAssertion(node) { var exprType = checkExpression(node.expression); - var targetType = getTypeFromTypeNode(node.type); + var targetType = getTypeFromTypeNodeOrHeritageClauseElement(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); if (!(isTypeAssignableTo(targetType, widenedType))) { @@ -12452,15 +18775,16 @@ var ts; if (!func.body) { return unknownType; } - if (func.body.kind !== 172) { - var type = checkExpressionCached(func.body, contextualMapper); + var type; + if (func.body.kind !== 179) { + type = checkExpressionCached(func.body, contextualMapper); } else { var types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); if (types.length === 0) { return voidType; } - var type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); + type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); if (!type) { error(func, ts.Diagnostics.No_best_common_type_exists_among_return_expressions); return unknownType; @@ -12490,7 +18814,7 @@ var ts; }); } function bodyContainsSingleThrowStatement(body) { - return (body.statements.length === 1) && (body.statements[0].kind === 188); + return (body.statements.length === 1) && (body.statements[0].kind === 195); } function checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(func, returnType) { if (!produceDiagnostics) { @@ -12499,7 +18823,7 @@ var ts; if (returnType === voidType || returnType === anyType) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 172) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 179) { return; } var bodyBlock = func.body; @@ -12512,9 +18836,9 @@ var ts; error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement); } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 158) { + if (!hasGrammarError && node.kind === 162) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { @@ -12542,25 +18866,25 @@ var ts; checkSignatureDeclaration(node); } } - if (produceDiagnostics && node.kind !== 130 && node.kind !== 129) { + if (produceDiagnostics && node.kind !== 134 && node.kind !== 133) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); if (node.type) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { - if (node.body.kind === 172) { + if (node.body.kind === 179) { checkSourceElement(node.body); } else { var exprType = checkExpression(node.body); if (node.type) { - checkTypeAssignableTo(exprType, getTypeFromTypeNode(node.type), node.body, undefined); + checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement(node.type), node.body, undefined); } checkFunctionExpressionBodies(node.body); } @@ -12573,22 +18897,26 @@ var ts; } return true; } - function checkReferenceExpression(n, invalidReferenceMessage, constantVarianleMessage) { + function checkReferenceExpression(n, invalidReferenceMessage, constantVariableMessage) { function findSymbol(n) { var symbol = getNodeLinks(n).resolvedSymbol; return symbol && getExportSymbolOfValueSymbolIfExported(symbol); } function isReferenceOrErrorExpression(n) { switch (n.kind) { - case 64: - var symbol = findSymbol(n); - return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; - case 151: - var symbol = findSymbol(n); - return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; - case 152: + case 65: + { + var symbol = findSymbol(n); + return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; + } + case 155: + { + var symbol = findSymbol(n); + return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; + } + case 156: return true; - case 157: + case 161: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -12596,20 +18924,24 @@ var ts; } function isConstVariableReference(n) { switch (n.kind) { - case 64: - case 151: - var symbol = findSymbol(n); - return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 4096) !== 0; - case 152: - var index = n.argumentExpression; - var symbol = findSymbol(n.expression); - if (symbol && index && index.kind === 8) { - var name = index.text; - var prop = getPropertyOfType(getTypeOfSymbol(symbol), name); - return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 4096) !== 0; + case 65: + case 155: + { + var symbol = findSymbol(n); + return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 8192) !== 0; } - return false; - case 157: + case 156: + { + var index = n.argumentExpression; + var symbol = findSymbol(n.expression); + if (symbol && index && index.kind === 8) { + var name_7 = index.text; + var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_7); + return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 8192) !== 0; + } + return false; + } + case 161: return isConstVariableReference(n.expression); default: return false; @@ -12620,13 +18952,13 @@ var ts; return false; } if (isConstVariableReference(n)) { - error(n, constantVarianleMessage); + error(n, constantVariableMessage); return false; } return true; } function checkDeleteExpression(node) { - if (node.parserContextFlags & 1 && node.expression.kind === 64) { + if (node.parserContextFlags & 1 && node.expression.kind === 65) { grammarErrorOnNode(node.expression, ts.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode); } var operandType = checkExpression(node.expression); @@ -12680,8 +19012,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (types[i].flags & kind) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (current.flags & kind) { return true; } } @@ -12695,8 +19028,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (!(types[i].flags & kind)) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (!(current.flags & kind)) { return false; } } @@ -12730,18 +19064,16 @@ var ts; } function checkObjectLiteralAssignment(node, sourceType, contextualMapper) { var properties = node.properties; - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { - var name = p.name; - var type = sourceType.flags & 1 ? sourceType : getTypeOfPropertyOfType(sourceType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(sourceType, 1) || - getIndexTypeOfType(sourceType, 0); + for (var _i = 0; _i < properties.length; _i++) { + var p = properties[_i]; + if (p.kind === 224 || p.kind === 225) { + var name_8 = p.name; + var type = sourceType.flags & 1 ? sourceType : getTypeOfPropertyOfType(sourceType, name_8.text) || isNumericLiteralName(name_8.text) && getIndexTypeOfType(sourceType, 1) || getIndexTypeOfType(sourceType, 0); if (type) { - checkDestructuringAssignment(p.initializer || name, type); + checkDestructuringAssignment(p.initializer || name_8, type); } else { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name)); + error(name_8, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_8)); } } else { @@ -12758,15 +19090,20 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { var propName = "" + i; var type = sourceType.flags & 1 ? sourceType : isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : getIndexTypeOfType(sourceType, 1); if (type) { checkDestructuringAssignment(e, type, contextualMapper); } else { - error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + if (isTupleType(sourceType)) { + error(e, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), sourceType.elementTypes.length, elements.length); + } + else { + error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } } } else { @@ -12782,14 +19119,14 @@ var ts; return sourceType; } function checkDestructuringAssignment(target, sourceType, contextualMapper) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 149) { + if (target.kind === 153) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -12806,40 +19143,38 @@ var ts; checkGrammarEvalOrArgumentsInStrictMode(node, node.left); } var operator = node.operatorToken.kind; - if (operator === 52 && (node.left.kind === 150 || node.left.kind === 149)) { + if (operator === 53 && (node.left.kind === 154 || node.left.kind === 153)) { return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper); } var leftType = checkExpression(node.left, contextualMapper); var rightType = checkExpression(node.right, contextualMapper); switch (operator) { case 35: - case 55: - case 36: case 56: - case 37: + case 36: case 57: - case 34: - case 54: - case 40: + case 37: case 58: - case 41: + case 34: + case 55: + case 40: case 59: - case 42: + case 41: case 60: - case 44: - case 62: - case 45: - case 63: - case 43: + case 42: case 61: + case 44: + case 63: + case 45: + case 64: + case 43: + case 62: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) rightType = leftType; var suggestedOperator; - if ((leftType.flags & 8) && - (rightType.flags & 8) && - (suggestedOperator = getSuggestedBooleanOperator(node.operatorToken.kind)) !== undefined) { + if ((leftType.flags & 8) && (rightType.flags & 8) && (suggestedOperator = getSuggestedBooleanOperator(node.operatorToken.kind)) !== undefined) { error(node, ts.Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, ts.tokenToString(node.operatorToken.kind), ts.tokenToString(suggestedOperator)); } else { @@ -12851,7 +19186,7 @@ var ts; } return numberType; case 33: - case 53: + case 54: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) @@ -12875,7 +19210,7 @@ var ts; reportOperatorError(); return anyType; } - if (operator === 53) { + if (operator === 54) { checkAssignmentOperator(resultType); } return resultType; @@ -12894,15 +19229,18 @@ var ts; reportOperatorError(); } return booleanType; - case 86: + case 87: return checkInstanceOfExpression(node, leftType, rightType); - case 85: + case 86: return checkInExpression(node, leftType, rightType); case 48: return rightType; case 49: - return getUnionType([leftType, rightType]); - case 52: + return getUnionType([ + leftType, + rightType + ]); + case 53: checkAssignmentOperator(rightType); return rightType; case 23: @@ -12919,20 +19257,20 @@ var ts; function getSuggestedBooleanOperator(operator) { switch (operator) { case 44: - case 62: + case 63: return 49; case 45: - case 63: + case 64: return 31; case 43: - case 61: + case 62: return 48; default: return undefined; } } function checkAssignmentOperator(valueType) { - if (produceDiagnostics && operator >= 52 && operator <= 63) { + if (produceDiagnostics && operator >= 53 && operator <= 64) { var ok = checkReferenceExpression(node.left, ts.Diagnostics.Invalid_left_hand_side_of_assignment_expression, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); if (ok) { checkTypeAssignableTo(valueType, leftType, node.left, undefined); @@ -12955,7 +19293,10 @@ var ts; checkExpression(node.condition); var type1 = checkExpression(node.whenTrue, contextualMapper); var type2 = checkExpression(node.whenFalse, contextualMapper); - return getUnionType([type1, type2]); + return getUnionType([ + type1, + type2 + ]); } function checkTemplateExpression(node) { ts.forEach(node.templateSpans, function (templateSpan) { @@ -12978,14 +19319,14 @@ var ts; return links.resolvedType; } function checkPropertyAssignment(node, contextualMapper) { - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); } function checkObjectLiteralMethod(node, contextualMapper) { checkGrammarMethod(node); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -13011,7 +19352,7 @@ var ts; } function checkExpressionOrQualifiedName(node, contextualMapper) { var type; - if (node.kind == 123) { + if (node.kind == 126) { type = checkQualifiedName(node); } else { @@ -13019,9 +19360,7 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 151 && node.parent.expression === node) || - (node.parent.kind === 152 && node.parent.expression === node) || - ((node.kind === 64 || node.kind === 123) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 155 && node.parent.expression === node) || (node.parent.kind === 156 && node.parent.expression === node) || ((node.kind === 65 || node.kind === 126) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -13034,65 +19373,67 @@ var ts; } function checkExpressionWorker(node, contextualMapper) { switch (node.kind) { - case 64: + case 65: return checkIdentifier(node); - case 92: + case 93: return checkThisExpression(node); - case 90: + case 91: return checkSuperExpression(node); - case 88: + case 89: return nullType; - case 94: - case 79: + case 95: + case 80: return booleanType; case 7: return checkNumericLiteral(node); - case 167: + case 171: return checkTemplateExpression(node); case 8: case 10: return stringType; case 9: return globalRegExpType; - case 149: - return checkArrayLiteral(node, contextualMapper); - case 150: - return checkObjectLiteral(node, contextualMapper); - case 151: - return checkPropertyAccessExpression(node); - case 152: - return checkIndexedAccess(node); case 153: + return checkArrayLiteral(node, contextualMapper); case 154: - return checkCallExpression(node); + return checkObjectLiteral(node, contextualMapper); case 155: - return checkTaggedTemplateExpression(node); + return checkPropertyAccessExpression(node); case 156: - return checkTypeAssertion(node); + return checkIndexedAccess(node); case 157: - return checkExpression(node.expression, contextualMapper); case 158: + return checkCallExpression(node); case 159: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 161: - return checkTypeOfExpression(node); + return checkTaggedTemplateExpression(node); case 160: - return checkDeleteExpression(node); + return checkTypeAssertion(node); + case 161: + return checkExpression(node.expression, contextualMapper); + case 174: + return checkClassExpression(node); case 162: - return checkVoidExpression(node); case 163: - return checkPrefixUnaryExpression(node); - case 164: - return checkPostfixUnaryExpression(node); + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); case 165: - return checkBinaryExpression(node, contextualMapper); + return checkTypeOfExpression(node); + case 164: + return checkDeleteExpression(node); case 166: - return checkConditionalExpression(node, contextualMapper); - case 169: - return checkSpreadElementExpression(node, contextualMapper); - case 170: - return undefinedType; + return checkVoidExpression(node); + case 167: + return checkPrefixUnaryExpression(node); case 168: + return checkPostfixUnaryExpression(node); + case 169: + return checkBinaryExpression(node, contextualMapper); + case 170: + return checkConditionalExpression(node, contextualMapper); + case 173: + return checkSpreadElementExpression(node, contextualMapper); + case 175: + return undefinedType; + case 172: checkYieldExpression(node); return unknownType; } @@ -13109,12 +19450,18 @@ var ts; } } function checkParameter(node) { - checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + // Grammar checking + // It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs as the + // Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code + // or if its FunctionBody is strict code(11.1.5). + // It is a SyntaxError if the identifier eval or arguments appears within a FormalParameterList of a + // strict mode FunctionLikeDeclaration or FunctionExpression(13.1) + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); checkVariableLikeDeclaration(node); var func = ts.getContainingFunction(node); if (node.flags & 112) { func = ts.getContainingFunction(node); - if (!(func.kind === 131 && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 135 && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } @@ -13128,12 +19475,10 @@ var ts; } } function checkSignatureDeclaration(node) { - if (node.kind === 136) { + if (node.kind === 140) { checkGrammarIndexSignature(node); } - else if (node.kind === 138 || node.kind === 193 || node.kind === 139 || - node.kind === 134 || node.kind === 131 || - node.kind === 135) { + else if (node.kind === 142 || node.kind === 200 || node.kind === 143 || node.kind === 138 || node.kind === 135 || node.kind === 139) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -13145,10 +19490,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 135: + case 139: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 134: + case 138: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -13157,7 +19502,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 195) { + if (node.kind === 202) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -13167,11 +19512,12 @@ var ts; if (indexSymbol) { var seenNumericIndexer = false; var seenStringIndexer = false; - for (var i = 0, len = indexSymbol.declarations.length; i < len; ++i) { - var declaration = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var declaration = decl; if (declaration.parameters.length === 1 && declaration.parameters[0].type) { switch (declaration.parameters[0].type.kind) { - case 119: + case 121: if (!seenStringIndexer) { seenStringIndexer = true; } @@ -13179,7 +19525,7 @@ var ts; error(declaration, ts.Diagnostics.Duplicate_string_index_signature); } break; - case 117: + case 119: if (!seenNumericIndexer) { seenNumericIndexer = true; } @@ -13193,7 +19539,7 @@ var ts; } } function checkPropertyDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); } function checkMethodDeclaration(node) { @@ -13216,40 +19562,41 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 153 && n.expression.kind === 90; + return n.kind === 157 && n.expression.kind === 91; } function containsSuperCall(n) { if (isSuperCallExpression(n)) { return true; } switch (n.kind) { - case 158: - case 193: - case 159: - case 150: return false; - default: return ts.forEachChild(n, containsSuperCall); + case 162: + case 200: + case 163: + case 154: + return false; + default: + return ts.forEachChild(n, containsSuperCall); } } function markThisReferencesAsErrors(n) { - if (n.kind === 92) { + if (n.kind === 93) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 158 && n.kind !== 193) { + else if (n.kind !== 162 && n.kind !== 200) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 128 && - !(n.flags & 128) && - !!n.initializer; + return n.kind === 132 && !(n.flags & 128) && !!n.initializer; } - if (ts.getClassBaseTypeNode(node.parent)) { + if (ts.getClassExtendsHeritageClauseElement(node.parent)) { if (containsSuperCall(node.body)) { - var superCallShouldBeFirst = ts.forEach(node.parent.members, isInstancePropertyWithInitializer) || - ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); + var superCallShouldBeFirst = ts.forEach(node.parent.members, isInstancePropertyWithInitializer) || ts.forEach(node.parameters, function (p) { + return p.flags & (16 | 32 | 64); + }); if (superCallShouldBeFirst) { var statements = node.body.statements; - if (!statements.length || statements[0].kind !== 175 || !isSuperCallExpression(statements[0].expression)) { + if (!statements.length || statements[0].kind !== 182 || !isSuperCallExpression(statements[0].expression)) { error(node, ts.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); } else { @@ -13265,13 +19612,13 @@ var ts; function checkAccessorDeclaration(node) { if (produceDiagnostics) { checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); - if (node.kind === 132) { + if (node.kind === 136) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && !(bodyContainsAReturnStatement(node.body) || bodyContainsSingleThrowStatement(node.body))) { error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement); } } if (!ts.hasDynamicName(node)) { - var otherKind = node.kind === 132 ? 133 : 132; + var otherKind = node.kind === 136 ? 137 : 136; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 112) !== (otherAccessor.flags & 112))) { @@ -13290,9 +19637,18 @@ var ts; } checkFunctionLikeDeclaration(node); } - function checkTypeReference(node) { + function checkMissingDeclaration(node) { + checkDecorators(node); + } + function checkTypeReferenceNode(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkHeritageClauseElement(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkTypeReferenceOrHeritageClauseElement(node) { checkGrammarTypeArguments(node, node.typeArguments); - var type = getTypeFromTypeReferenceNode(node); + var type = getTypeFromTypeReferenceOrHeritageClauseElement(node); if (type !== unknownType && node.typeArguments) { var len = node.typeArguments.length; for (var i = 0; i < len; i++) { @@ -13345,9 +19701,9 @@ var ts; return; } var signaturesToCheck; - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 195) { - ts.Debug.assert(signatureDeclarationNode.kind === 134 || signatureDeclarationNode.kind === 135); - var signatureKind = signatureDeclarationNode.kind === 134 ? 0 : 1; + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 202) { + ts.Debug.assert(signatureDeclarationNode.kind === 138 || signatureDeclarationNode.kind === 139); + var signatureKind = signatureDeclarationNode.kind === 138 ? 0 : 1; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); var containingType = getDeclaredTypeOfSymbol(containingSymbol); signaturesToCheck = getSignaturesOfType(containingType, signatureKind); @@ -13355,8 +19711,8 @@ var ts; else { signaturesToCheck = getSignaturesOfSymbol(getSymbolOfNode(signatureDeclarationNode)); } - for (var i = 0; i < signaturesToCheck.length; i++) { - var otherSignature = signaturesToCheck[i]; + for (var _i = 0; _i < signaturesToCheck.length; _i++) { + var otherSignature = signaturesToCheck[_i]; if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { return; } @@ -13365,7 +19721,7 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 195 && ts.isInAmbientContext(n)) { + if (n.parent.kind !== 202 && ts.isInAmbientContext(n)) { if (!(flags & 2)) { flags |= 1; } @@ -13422,7 +19778,7 @@ var ts; var declarations = symbol.declarations; var isConstructor = (symbol.flags & 16384) !== 0; function reportImplementationExpectedError(node) { - if (node.name && ts.getFullWidth(node.name) === 0) { + if (node.name && ts.nodeIsMissing(node.name)) { return; } var seen = false; @@ -13436,16 +19792,16 @@ var ts; }); if (subsequentNode) { if (subsequentNode.kind === node.kind) { - var errorNode = subsequentNode.name || subsequentNode; + var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - ts.Debug.assert(node.kind === 130 || node.kind === 129); + ts.Debug.assert(node.kind === 134 || node.kind === 133); ts.Debug.assert((node.flags & 128) !== (subsequentNode.flags & 128)); var diagnostic = node.flags & 128 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode, diagnostic); + error(errorNode_1, diagnostic); return; } else if (ts.nodeIsPresent(subsequentNode.body)) { - error(errorNode, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); + error(errorNode_1, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); return; } } @@ -13461,14 +19817,15 @@ var ts; var isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & 1536; var duplicateFunctionDeclaration = false; var multipleConstructorImplementation = false; - for (var i = 0; i < declarations.length; i++) { - var node = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 195 || node.parent.kind === 141 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 202 || node.parent.kind === 145 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 193 || node.kind === 130 || node.kind === 129 || node.kind === 131) { + if (node.kind === 200 || node.kind === 134 || node.kind === 133 || node.kind === 135) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -13519,9 +19876,10 @@ var ts; var signatures = getSignaturesOfSymbol(symbol); var bodySignature = getSignatureFromDeclaration(bodyDeclaration); if (!bodySignature.hasStringLiterals) { - for (var i = 0, len = signatures.length; i < len; ++i) { - if (!signatures[i].hasStringLiterals && !isSignatureAssignableTo(bodySignature, signatures[i])) { - error(signatures[i].declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); + for (var _a = 0; _a < signatures.length; _a++) { + var signature = signatures[_a]; + if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } } @@ -13533,7 +19891,6 @@ var ts; if (!produceDiagnostics) { return; } - var symbol; var symbol = node.localSymbol; if (!symbol) { symbol = getSymbolOfNode(node); @@ -13565,37 +19922,84 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 195: + case 202: return 2097152; - case 198: + case 205: return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 194: - case 197: + case 201: + case 204: return 2097152 | 1048576; - case 200: + case 208: var result = 0; - var target = resolveImport(getSymbolOfNode(d)); - ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); + var target = resolveAlias(getSymbolOfNode(d)); + ts.forEach(target.declarations, function (d) { + result |= getDeclarationSpaces(d); + }); return result; default: return 1048576; } } } + function checkDecorator(node) { + var expression = node.expression; + var exprType = checkExpression(expression); + switch (node.parent.kind) { + case 201: + var classSymbol = getSymbolOfNode(node.parent); + var classConstructorType = getTypeOfSymbol(classSymbol); + var classDecoratorType = instantiateSingleCallFunctionType(globalClassDecoratorType, [ + classConstructorType + ]); + checkTypeAssignableTo(exprType, classDecoratorType, node); + break; + case 132: + checkTypeAssignableTo(exprType, globalPropertyDecoratorType, node); + break; + case 134: + case 136: + case 137: + var methodType = getTypeOfNode(node.parent); + var methodDecoratorType = instantiateSingleCallFunctionType(globalMethodDecoratorType, [ + methodType + ]); + checkTypeAssignableTo(exprType, methodDecoratorType, node); + break; + case 129: + checkTypeAssignableTo(exprType, globalParameterDecoratorType, node); + break; + } + } + function checkDecorators(node) { + if (!node.decorators) { + return; + } + switch (node.kind) { + case 201: + case 134: + case 136: + case 137: + case 132: + case 129: + emitDecorate = true; + break; + default: + return; + } + ts.forEach(node.decorators, checkDecorator); + } function checkFunctionDeclaration(node) { if (produceDiagnostics) { - checkFunctionLikeDeclaration(node) || - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || - checkGrammarFunctionName(node.name) || - checkGrammarForGenerator(node); + checkFunctionLikeDeclaration(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); } } function checkFunctionLikeDeclaration(node) { + checkDecorators(node); checkSignatureDeclaration(node); - if (node.name.kind === 124) { + if (node.name && node.name.kind === 127) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { @@ -13613,18 +20017,18 @@ var ts; } checkSourceElement(node.body); if (node.type && !isAccessor(node.kind)) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { reportImplicitAnyError(node, anyType); } } function checkBlock(node) { - if (node.kind === 172) { + if (node.kind === 179) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 199) { + if (ts.isFunctionBlock(node) || node.kind === 206) { checkFunctionExpressionBodies(node); } } @@ -13642,19 +20046,14 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 128 || - node.kind === 127 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || - node.kind === 133) { + if (node.kind === 132 || node.kind === 131 || node.kind === 134 || node.kind === 133 || node.kind === 136 || node.kind === 137) { return false; } if (ts.isInAmbientContext(node)) { return false; } var root = getRootDeclaration(node); - if (root.kind === 126 && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 129 && ts.nodeIsMissing(root.parent.body)) { return false; } return true; @@ -13668,8 +20067,8 @@ var ts; var current = node; while (current) { if (getNodeCheckFlags(current) & 4) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + var isDeclaration_1 = node.kind !== 65; + if (isDeclaration_1) { error(node.name, ts.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference); } else { @@ -13684,13 +20083,13 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "_super")) { return; } - var enclosingClass = ts.getAncestor(node, 194); + var enclosingClass = ts.getAncestor(node, 201); if (!enclosingClass || ts.isInAmbientContext(enclosingClass)) { return; } - if (ts.getClassBaseTypeNode(enclosingClass)) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + if (ts.getClassExtendsHeritageClauseElement(enclosingClass)) { + var isDeclaration_2 = node.kind !== 65; + if (isDeclaration_2) { error(node, ts.Diagnostics.Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference); } else { @@ -13702,55 +20101,57 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 198 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 205 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 210 && ts.isExternalModule(parent)) { + if (parent.kind === 227 && ts.isExternalModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } function checkVarDeclaredNamesNotShadowed(node) { - if (node.initializer && (ts.getCombinedNodeFlags(node) & 6144) === 0) { - var symbol = getSymbolOfNode(node); - if (symbol.flags & 1) { - var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); - if (localDeclarationSymbol && - localDeclarationSymbol !== symbol && - localDeclarationSymbol.flags & 2) { - if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 6144) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 192); - var container = varDeclList.parent.kind === 173 && - varDeclList.parent.parent; - var namesShareScope = container && - (container.kind === 172 && ts.isAnyFunction(container.parent) || - (container.kind === 199 && container.kind === 198) || - container.kind === 210); - if (!namesShareScope) { - var name = symbolToString(localDeclarationSymbol); - error(ts.getErrorSpanForNode(node), ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name, name); - } + // - ScriptBody : StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // also occurs in the VarDeclaredNames of StatementList. + if ((ts.getCombinedNodeFlags(node) & 12288) !== 0 || isParameterDeclaration(node)) { + return; + } + if (node.kind === 198 && !node.initializer) { + return; + } + var symbol = getSymbolOfNode(node); + if (symbol.flags & 1) { + var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); + if (localDeclarationSymbol && localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2) { + if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 12288) { + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 199); + var container = varDeclList.parent.kind === 180 && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; + var namesShareScope = container && (container.kind === 179 && ts.isFunctionLike(container.parent) || container.kind === 206 || container.kind === 205 || container.kind === 227); + if (!namesShareScope) { + var name_9 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_9, name_9); } } } } } function isParameterDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } - return node.kind === 126; + return node.kind === 129; } function checkParameterInitializer(node) { - if (getRootDeclaration(node).kind === 126) { - var func = ts.getContainingFunction(node); - visit(node.initializer); + if (getRootDeclaration(node).kind !== 129) { + return; } + var func = ts.getContainingFunction(node); + visit(node.initializer); function visit(n) { - if (n.kind === 64) { + if (n.kind === 65) { var referencedSymbol = getNodeLinks(n).resolvedSymbol; if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 126) { + if (referencedSymbol.valueDeclaration.kind === 129) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -13768,8 +20169,9 @@ var ts; } } function checkVariableLikeDeclaration(node) { + checkDecorators(node); checkSourceElement(node.type); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); @@ -13778,7 +20180,7 @@ var ts; if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } - if (node.initializer && getRootDeclaration(node).kind === 126 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && getRootDeclaration(node).kind === 129 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } @@ -13806,9 +20208,9 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); } } - if (node.kind !== 128 && node.kind !== 127) { + if (node.kind !== 132 && node.kind !== 131) { checkExportsOnMergedDeclarations(node); - if (node.kind === 191 || node.kind === 148) { + if (node.kind === 198 || node.kind === 152) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -13825,7 +20227,7 @@ var ts; return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); + checkGrammarDecorators(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) { @@ -13837,7 +20239,7 @@ var ts; } function inBlockOrObjectLiteralExpression(node) { while (node) { - if (node.kind === 172 || node.kind === 150) { + if (node.kind === 179 || node.kind === 154) { return true; } node = node.parent; @@ -13865,12 +20267,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind == 192) { + if (node.initializer && node.initializer.kind == 199) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -13884,38 +20286,182 @@ var ts; checkSourceElement(node.statement); } function checkForOfStatement(node) { - checkGrammarForOfStatement(node); - } - function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 192) { - var variableDeclarationList = node.initializer; - if (variableDeclarationList.declarations.length >= 1) { - var decl = variableDeclarationList.declarations[0]; - checkVariableDeclaration(decl); - } + if (node.initializer.kind === 199) { + checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; - var exprType = checkExpression(varExpr); - if (!allConstituentTypesHaveKind(exprType, 1 | 258)) { + var iteratedType = checkRightHandSideOfForOf(node.expression); + if (varExpr.kind === 153 || varExpr.kind === 154) { + checkDestructuringAssignment(varExpr, iteratedType || unknownType); + } + else { + var leftType = checkExpression(varExpr); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_of_statement, ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant); + if (iteratedType) { + checkTypeAssignableTo(iteratedType, leftType, varExpr, undefined); + } + } + } + checkSourceElement(node.statement); + } + function checkForInStatement(node) { + checkGrammarForInOrForOfStatement(node); + if (node.initializer.kind === 199) { + var variable = node.initializer.declarations[0]; + if (variable && ts.isBindingPattern(variable.name)) { + error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + checkForInOrForOfVariableDeclaration(node); + } + else { + var varExpr = node.initializer; + var leftType = checkExpression(varExpr); + if (varExpr.kind === 153 || varExpr.kind === 154) { + error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + else if (!allConstituentTypesHaveKind(leftType, 1 | 258)) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); } else { - checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant); } } - var exprType = checkExpression(node.expression); - if (!allConstituentTypesHaveKind(exprType, 1 | 48128 | 512)) { + var rightType = checkExpression(node.expression); + if (!allConstituentTypesHaveKind(rightType, 1 | 48128 | 512)) { error(node.expression, ts.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter); } checkSourceElement(node.statement); } + function checkForInOrForOfVariableDeclaration(iterationStatement) { + var variableDeclarationList = iterationStatement.initializer; + if (variableDeclarationList.declarations.length >= 1) { + var decl = variableDeclarationList.declarations[0]; + checkVariableDeclaration(decl); + } + } + function checkRightHandSideOfForOf(rhsExpression) { + var expressionType = getTypeOfExpression(rhsExpression); + return languageVersion >= 2 ? checkIteratedType(expressionType, rhsExpression) : checkElementTypeOfArrayOrString(expressionType, rhsExpression); + } + function checkIteratedType(iterable, expressionForError) { + ts.Debug.assert(languageVersion >= 2); + var iteratedType = getIteratedType(iterable, expressionForError); + if (expressionForError && iteratedType) { + var completeIterableType = globalIterableType !== emptyObjectType ? createTypeReference(globalIterableType, [ + iteratedType + ]) : emptyObjectType; + checkTypeAssignableTo(iterable, completeIterableType, expressionForError); + } + return iteratedType; + function getIteratedType(iterable, expressionForError) { + // We want to treat type as an iterable, and get the type it is an iterable of. The iterable + // must have the following structure (annotated with the names of the variables below): + // + // { // iterable + // [Symbol.iterator]: { // iteratorFunction + // (): { // iterator + // next: { // iteratorNextFunction + // (): { // iteratorNextResult + // value: T // iteratorNextValue + // } + // } + // } + // } + // } + // + // T is the type we are after. At every level that involves analyzing return types + // of signatures, we union the return types of all the signatures. + // + // Another thing to note is that at any step of this process, we could run into a dead end, + // meaning either the property is missing, or we run into the anyType. If either of these things + // happens, we return undefined to signal that we could not find the iterated type. If a property + // is missing, and the previous step did not result in 'any', then we also give an error if the + // caller requested it. Then the caller can decide what to do in the case where there is no iterated + // type. This is different from returning anyType, because that would signify that we have matched the + // whole pattern and that T (above) is 'any'. + if (allConstituentTypesHaveKind(iterable, 1)) { + return undefined; + } + var iteratorFunction = getTypeOfPropertyOfType(iterable, ts.getPropertyNameForKnownSymbolName("iterator")); + if (iteratorFunction && allConstituentTypesHaveKind(iteratorFunction, 1)) { + return undefined; + } + var iteratorFunctionSignatures = iteratorFunction ? getSignaturesOfType(iteratorFunction, 0) : emptyArray; + if (iteratorFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator); + } + return undefined; + } + var iterator = getUnionType(ts.map(iteratorFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iterator, 1)) { + return undefined; + } + var iteratorNextFunction = getTypeOfPropertyOfType(iterator, "next"); + if (iteratorNextFunction && allConstituentTypesHaveKind(iteratorNextFunction, 1)) { + return undefined; + } + var iteratorNextFunctionSignatures = iteratorNextFunction ? getSignaturesOfType(iteratorNextFunction, 0) : emptyArray; + if (iteratorNextFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method); + } + return undefined; + } + var iteratorNextResult = getUnionType(ts.map(iteratorNextFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iteratorNextResult, 1)) { + return undefined; + } + var iteratorNextValue = getTypeOfPropertyOfType(iteratorNextResult, "value"); + if (!iteratorNextValue) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property); + } + return undefined; + } + return iteratorNextValue; + } + } + function checkElementTypeOfArrayOrString(arrayOrStringType, expressionForError) { + ts.Debug.assert(languageVersion < 2); + var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var hasStringConstituent = arrayOrStringType !== arrayType; + var reportedError = false; + if (hasStringConstituent) { + if (languageVersion < 1) { + error(expressionForError, ts.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher); + reportedError = true; + } + if (arrayType === emptyObjectType) { + return stringType; + } + } + if (!isArrayLikeType(arrayType)) { + if (!reportedError) { + var diagnostic = hasStringConstituent ? ts.Diagnostics.Type_0_is_not_an_array_type : ts.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type; + error(expressionForError, diagnostic, typeToString(arrayType)); + } + return hasStringConstituent ? stringType : unknownType; + } + var arrayElementType = getIndexTypeOfType(arrayType, 1) || unknownType; + if (hasStringConstituent) { + if (arrayElementType.flags & 258) { + return stringType; + } + return getUnionType([ + arrayElementType, + stringType + ]); + } + return arrayElementType; + } function checkBreakOrContinueStatement(node) { checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); } function isGetAccessorWithAnnotatatedSetAccessor(node) { - return !!(node.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 133))); + return !!(node.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 137))); } function checkReturnStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { @@ -13929,11 +20475,11 @@ var ts; if (func) { var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); var exprType = checkExpressionCached(node.expression); - if (func.kind === 133) { + if (func.kind === 137) { error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); } else { - if (func.kind === 131) { + if (func.kind === 135) { if (!isTypeAssignableTo(exprType, returnType)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } @@ -13959,8 +20505,8 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - ts.forEach(node.clauses, function (clause) { - if (clause.kind === 204 && !hasDuplicateDefaultClause) { + ts.forEach(node.caseBlock.clauses, function (clause) { + if (clause.kind === 221 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -13972,7 +20518,7 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 203) { + if (produceDiagnostics && clause.kind === 220) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); if (!isTypeAssignableTo(expressionType, caseType)) { @@ -13986,10 +20532,10 @@ var ts; if (!checkGrammarStatementInAmbientContext(node)) { var current = node.parent; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { break; } - if (current.kind === 187 && current.label.text === node.label.text) { + if (current.kind === 194 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -14014,16 +20560,33 @@ var ts; checkBlock(node.tryBlock); var catchClause = node.catchClause; if (catchClause) { - if (catchClause.type) { - var sourceFile = ts.getSourceFileOfNode(node); - var colonStart = ts.skipTrivia(sourceFile.text, catchClause.name.end); - grammarErrorAtPos(sourceFile, colonStart, ":".length, ts.Diagnostics.Catch_clause_parameter_cannot_have_a_type_annotation); + if (catchClause.variableDeclaration) { + if (catchClause.variableDeclaration.name.kind !== 65) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.name, ts.Diagnostics.Catch_clause_variable_name_must_be_an_identifier); + } + else if (catchClause.variableDeclaration.type) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.type, ts.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation); + } + else if (catchClause.variableDeclaration.initializer) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.initializer, ts.Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + } + else { + var identifierName = catchClause.variableDeclaration.name.text; + var locals = catchClause.block.locals; + if (locals && ts.hasProperty(locals, identifierName)) { + var localSymbol = locals[identifierName]; + if (localSymbol && (localSymbol.flags & 2) !== 0) { + grammarErrorOnNode(localSymbol.valueDeclaration, ts.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, identifierName); + } + } + checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.variableDeclaration.name); + } } - checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.name); checkBlock(catchClause.block); } - if (node.finallyBlock) + if (node.finallyBlock) { checkBlock(node.finallyBlock); + } } function checkIndexConstraints(type) { var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1); @@ -14036,10 +20599,10 @@ var ts; checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0); checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1); }); - if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 194) { + if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 201) { var classDeclaration = type.symbol.valueDeclaration; - for (var i = 0; i < classDeclaration.members.length; i++) { - var member = classDeclaration.members[i]; + for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) { + var member = _a[_i]; if (!(member.flags & 128) && ts.hasDynamicName(member)) { var propType = getTypeOfSymbol(member.symbol); checkIndexConstraintForProperty(member.symbol, propType, type, declaredStringIndexer, stringIndexType, 0); @@ -14052,7 +20615,9 @@ var ts; if (stringIndexType && numberIndexType) { errorNode = declaredNumberIndexer || declaredStringIndexer; if (!errorNode && (type.flags & 2048)) { - var someBaseTypeHasBothIndexers = ts.forEach(type.baseTypes, function (base) { return getIndexTypeOfType(base, 0) && getIndexTypeOfType(base, 1); }); + var someBaseTypeHasBothIndexers = ts.forEach(type.baseTypes, function (base) { + return getIndexTypeOfType(base, 0) && getIndexTypeOfType(base, 1); + }); errorNode = someBaseTypeHasBothIndexers ? undefined : type.symbol.declarations[0]; } } @@ -14067,14 +20632,16 @@ var ts; return; } var errorNode; - if (prop.valueDeclaration.name.kind === 124 || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 127 || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { errorNode = indexDeclaration; } else if (containingType.flags & 2048) { - var someBaseClassHasBothPropertyAndIndexer = ts.forEach(containingType.baseTypes, function (base) { return getPropertyOfObjectType(base, prop.name) && getIndexTypeOfType(base, indexKind); }); + var someBaseClassHasBothPropertyAndIndexer = ts.forEach(containingType.baseTypes, function (base) { + return getPropertyOfObjectType(base, prop.name) && getIndexTypeOfType(base, indexKind); + }); errorNode = someBaseClassHasBothPropertyAndIndexer ? undefined : containingType.symbol.declarations[0]; } if (errorNode && !isTypeAssignableTo(propertyType, indexType)) { @@ -14096,7 +20663,7 @@ var ts; } function checkTypeParameters(typeParameterDeclarations) { if (typeParameterDeclarations) { - for (var i = 0; i < typeParameterDeclarations.length; i++) { + for (var i = 0, n = typeParameterDeclarations.length; i < n; i++) { var node = typeParameterDeclarations[i]; checkTypeParameter(node); if (produceDiagnostics) { @@ -14109,44 +20676,63 @@ var ts; } } } + function checkClassExpression(node) { + grammarErrorOnNode(node, ts.Diagnostics.class_expressions_are_not_currently_supported); + ts.forEach(node.members, checkSourceElement); + return unknownType; + } function checkClassDeclaration(node) { + if (node.parent.kind !== 206 && node.parent.kind !== 227) { + grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + } checkGrammarClassDeclarationHeritageClauses(node); - checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkDecorators(node); + if (node.name) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } checkTypeParameters(node.typeParameters); - checkCollisionWithCapturedThisVariable(node, node.name); - checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); var type = getDeclaredTypeOfSymbol(symbol); var staticType = getTypeOfSymbol(symbol); - var baseTypeNode = ts.getClassBaseTypeNode(node); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { + if (!ts.isSupportedHeritageClauseElement(baseTypeNode)) { + error(baseTypeNode.expression, ts.Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); + } emitExtends = emitExtends || !ts.isInAmbientContext(node); - checkTypeReference(baseTypeNode); + checkHeritageClauseElement(baseTypeNode); } if (type.baseTypes.length) { if (produceDiagnostics) { var baseType = type.baseTypes[0]; - checkTypeAssignableTo(type, baseType, node.name, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); + checkTypeAssignableTo(type, baseType, node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); var staticBaseType = getTypeOfSymbol(baseType.symbol); - checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); - if (baseType.symbol !== resolveEntityName(node, baseTypeNode.typeName, 107455)) { + checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); + if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, 107455)) { error(baseTypeNode, ts.Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); } checkKindsOfPropertyMemberOverrides(type, baseType); } - checkExpressionOrQualifiedName(baseTypeNode.typeName); } - var implementedTypeNodes = ts.getClassImplementedTypeNodes(node); + if (type.baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) { + checkExpressionOrQualifiedName(baseTypeNode.expression); + } + var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { ts.forEach(implementedTypeNodes, function (typeRefNode) { - checkTypeReference(typeRefNode); + if (!ts.isSupportedHeritageClauseElement(typeRefNode)) { + error(typeRefNode.expression, ts.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(typeRefNode); if (produceDiagnostics) { - var t = getTypeFromTypeReferenceNode(typeRefNode); + var t = getTypeFromHeritageClauseElement(typeRefNode); if (t !== unknownType) { var declaredType = (t.flags & 4096) ? t.target : t; if (declaredType.flags & (1024 | 2048)) { - checkTypeAssignableTo(type, t, node.name, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(type, t, node.name || node, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, ts.Diagnostics.A_class_may_only_implement_another_class_or_interface); @@ -14165,9 +20751,23 @@ var ts; return s.flags & 16777216 ? getSymbolLinks(s).target : s; } function checkKindsOfPropertyMemberOverrides(type, baseType) { + // TypeScript 1.0 spec (April 2014): 8.2.3 + // A derived class inherits all members from its base class it doesn't override. + // Inheritance means that a derived class implicitly contains all non - overridden members of the base class. + // Both public and private property members are inherited, but only public property members can be overridden. + // A property member in a derived class is said to override a property member in a base class + // when the derived class property member has the same name and kind(instance or static) + // as the base class property member. + // The type of an overriding property member must be assignable(section 3.8.4) + // to the type of the overridden property member, or otherwise a compile - time error occurs. + // Base class instance member functions can be overridden by derived class instance member functions, + // but not by other kinds of members. + // Base class instance member variables and accessors can be overridden by + // derived class instance member variables and accessors, but not by other kinds of members. var baseProperties = getPropertiesOfObjectType(baseType); - for (var i = 0, len = baseProperties.length; i < len; ++i) { - var base = getTargetSymbol(baseProperties[i]); + for (var _i = 0; _i < baseProperties.length; _i++) { + var baseProperty = baseProperties[_i]; + var base = getTargetSymbol(baseProperty); if (base.flags & 134217728) { continue; } @@ -14184,7 +20784,7 @@ var ts; if ((base.flags & derived.flags & 8192) || ((base.flags & 98308) && (derived.flags & 98308))) { continue; } - var errorMessage; + var errorMessage = void 0; if (base.flags & 8192) { if (derived.flags & 98304) { errorMessage = ts.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; @@ -14208,7 +20808,7 @@ var ts; } } function isAccessor(kind) { - return kind === 132 || kind === 133; + return kind === 136 || kind === 137; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -14229,7 +20829,7 @@ var ts; if (!tp1.constraint || !tp2.constraint) { return false; } - if (!isTypeIdenticalTo(getTypeFromTypeNode(tp1.constraint), getTypeFromTypeNode(tp2.constraint))) { + if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement(tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement(tp2.constraint))) { return false; } } @@ -14240,15 +20840,23 @@ var ts; return true; } var seen = {}; - ts.forEach(type.declaredProperties, function (p) { seen[p.name] = { prop: p, containingType: type }; }); + ts.forEach(type.declaredProperties, function (p) { + seen[p.name] = { + prop: p, + containingType: type + }; + }); var ok = true; - for (var i = 0, len = type.baseTypes.length; i < len; ++i) { - var base = type.baseTypes[i]; + for (var _i = 0, _a = type.baseTypes; _i < _a.length; _i++) { + var base = _a[_i]; var properties = getPropertiesOfObjectType(base); - for (var j = 0, proplen = properties.length; j < proplen; ++j) { - var prop = properties[j]; + for (var _b = 0; _b < properties.length; _b++) { + var prop = properties[_b]; if (!ts.hasProperty(seen, prop.name)) { - seen[prop.name] = { prop: prop, containingType: base }; + seen[prop.name] = { + prop: prop, + containingType: base + }; } else { var existing = seen[prop.name]; @@ -14267,13 +20875,13 @@ var ts; return ok; } function checkInterfaceDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 195); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 202); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -14289,14 +20897,19 @@ var ts; } } } - ts.forEach(ts.getInterfaceBaseTypeNodes(node), checkTypeReference); + ts.forEach(ts.getInterfaceBaseTypeNodes(node), function (heritageElement) { + if (!ts.isSupportedHeritageClauseElement(heritageElement)) { + error(heritageElement.expression, ts.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(heritageElement); + }); ts.forEach(node.members, checkSourceElement); if (produceDiagnostics) { checkTypeForDuplicateIndexSignatures(node); } } function checkTypeAliasDeclaration(node) { - checkGrammarModifiers(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_alias_name_cannot_be_0); checkSourceElement(node.type); } @@ -14309,12 +20922,12 @@ var ts; var ambient = ts.isInAmbientContext(node); var enumIsConst = ts.isConst(node); ts.forEach(node.members, function (member) { - if (member.name.kind !== 124 && isNumericLiteralName(member.name.text)) { + if (member.name.kind !== 127 && isNumericLiteralName(member.name.text)) { error(member.name, ts.Diagnostics.An_enum_member_cannot_have_a_numeric_name); } var initializer = member.initializer; if (initializer) { - autoValue = getConstantValueForEnumMemberInitializer(initializer, enumIsConst); + autoValue = getConstantValueForEnumMemberInitializer(initializer); if (autoValue === undefined) { if (enumIsConst) { error(initializer, ts.Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); @@ -14341,25 +20954,25 @@ var ts; }); nodeLinks.flags |= 128; } - function getConstantValueForEnumMemberInitializer(initializer, enumIsConst) { + function getConstantValueForEnumMemberInitializer(initializer) { return evalConstant(initializer); function evalConstant(e) { switch (e.kind) { - case 163: + case 167: var value = evalConstant(e.operand); if (value === undefined) { return undefined; } switch (e.operator) { - case 33: return value; - case 34: return -value; - case 47: return enumIsConst ? ~value : undefined; + case 33: + return value; + case 34: + return -value; + case 47: + return ~value; } return undefined; - case 165: - if (!enumIsConst) { - return undefined; - } + case 169: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -14369,51 +20982,72 @@ var ts; return undefined; } switch (e.operatorToken.kind) { - case 44: return left | right; - case 43: return left & right; - case 41: return left >> right; - case 42: return left >>> right; - case 40: return left << right; - case 45: return left ^ right; - case 35: return left * right; - case 36: return left / right; - case 33: return left + right; - case 34: return left - right; - case 37: return left % right; + case 44: + return left | right; + case 43: + return left & right; + case 41: + return left >> right; + case 42: + return left >>> right; + case 40: + return left << right; + case 45: + return left ^ right; + case 35: + return left * right; + case 36: + return left / right; + case 33: + return left + right; + case 34: + return left - right; + case 37: + return left % right; } return undefined; case 7: return +e.text; - case 157: - return enumIsConst ? evalConstant(e.expression) : undefined; - case 64: - case 152: - case 151: - if (!enumIsConst) { - return undefined; - } + case 161: + return evalConstant(e.expression); + case 65: + case 156: + case 155: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType; var propertyName; - if (e.kind === 64) { + if (e.kind === 65) { enumType = currentType; propertyName = e.text; } else { - if (e.kind === 152) { - if (e.argumentExpression === undefined || - e.argumentExpression.kind !== 8) { + var expression; + if (e.kind === 156) { + if (e.argumentExpression === undefined || e.argumentExpression.kind !== 8) { return undefined; } - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.argumentExpression.text; } else { - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.name.text; } - if (enumType !== currentType) { + var current = expression; + while (current) { + if (current.kind === 65) { + break; + } + else if (current.kind === 155) { + current = current.expression; + } + else { + return undefined; + } + } + enumType = checkExpression(expression); + if (!(enumType.symbol && (enumType.symbol.flags & 384))) { return undefined; } } @@ -14440,17 +21074,20 @@ var ts; if (!produceDiagnostics) { return; } - checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); computeEnumMemberValues(node); + var enumIsConst = ts.isConst(node); + if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) { + error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided); + } var enumSymbol = getSymbolOfNode(node); var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind); if (node === firstDeclaration) { if (enumSymbol.declarations.length > 1) { - var enumIsConst = ts.isConst(node); ts.forEach(enumSymbol.declarations, function (decl) { if (ts.isConstEnumDeclaration(decl) !== enumIsConst) { error(decl.name, ts.Diagnostics.Enum_declarations_must_all_be_const_or_non_const); @@ -14459,7 +21096,7 @@ var ts; } var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 197) { + if (declaration.kind !== 204) { return false; } var enumDeclaration = declaration; @@ -14480,9 +21117,9 @@ var ts; } function getFirstNonAmbientClassOrFunctionDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; - if ((declaration.kind === 194 || (declaration.kind === 193 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + if ((declaration.kind === 201 || (declaration.kind === 200 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } } @@ -14490,28 +21127,16 @@ var ts; } function checkModuleDeclaration(node) { if (produceDiagnostics) { - if (!checkGrammarModifiers(node)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } - else if (node.name.kind === 64 && node.body.kind === 199) { - var statements = node.body.statements; - for (var i = 0, n = statements.length; i < n; i++) { - var statement = statements[i]; - if (statement.kind === 201) { - grammarErrorOnNode(statement, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); - } - else if (ts.isExternalModuleImportDeclaration(statement)) { - grammarErrorOnNode(ts.getExternalModuleImportDeclarationExpression(statement), ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); - } - } - } } checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - if (symbol.flags & 512 && symbol.declarations.length > 1 && !ts.isInAmbientContext(node) && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums)) { + if (symbol.flags & 512 && symbol.declarations.length > 1 && !ts.isInAmbientContext(node) && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) { var classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); if (classOrFunc) { if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(classOrFunc)) { @@ -14534,252 +21159,370 @@ var ts; checkSourceElement(node.body); } function getFirstIdentifier(node) { - while (node.kind === 123) { - node = node.left; + while (true) { + if (node.kind === 126) { + node = node.left; + } + else if (node.kind === 155) { + node = node.expression; + } + else { + break; + } } + ts.Debug.assert(node.kind === 65); return node; } - function checkImportDeclaration(node) { - checkGrammarModifiers(node); + function checkExternalImportOrExportDeclaration(node) { + var moduleName = ts.getExternalModuleName(node); + if (!ts.nodeIsMissing(moduleName) && moduleName.kind !== 8) { + error(moduleName, ts.Diagnostics.String_literal_expected); + return false; + } + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(moduleName, node.kind === 215 ? ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module : ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); + return false; + } + if (inAmbientExternalModule && isExternalModuleNameRelative(moduleName.text)) { + error(node, ts.Diagnostics.Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); + return false; + } + return true; + } + function checkAliasSymbol(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target !== unknownSymbol) { + var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | (symbol.flags & 793056 ? 793056 : 0) | (symbol.flags & 1536 ? 1536 : 0); + if (target.flags & excludedMeanings) { + var message = node.kind === 217 ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; + error(node, message, symbolToString(symbol)); + } + } + } + function checkImportBinding(node) { checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); - var symbol = getSymbolOfNode(node); - var target; - if (ts.isInternalModuleImportDeclaration(node)) { - target = resolveImport(symbol); - if (target !== unknownSymbol) { - if (target.flags & 107455) { - var moduleName = getFirstIdentifier(node.moduleReference); - if (resolveEntityName(node, moduleName, 107455 | 1536).flags & 1536) { - checkExpressionOrQualifiedName(node.moduleReference); + checkAliasSymbol(node); + } + function checkImportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); + } + if (checkExternalImportOrExportDeclaration(node)) { + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + checkImportBinding(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + checkImportBinding(importClause.namedBindings); } else { - error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + ts.forEach(importClause.namedBindings.elements, checkImportBinding); } } - if (target.flags & 793056) { - checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); - } } } - else { - if (node.parent.kind === 210) { - target = resolveImport(symbol); + } + function checkImportEqualsDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { + checkImportBinding(node); + if (node.flags & 1) { + markExportAsReferenced(node); } - else if (node.parent.kind === 199 && node.parent.parent.name.kind === 8) { - if (ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - if (isExternalModuleNameRelative(ts.getExternalModuleImportDeclarationExpression(node).text)) { - error(node, ts.Diagnostics.Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); - target = unknownSymbol; + if (ts.isInternalModuleImportEqualsDeclaration(node)) { + var target = resolveAlias(getSymbolOfNode(node)); + if (target !== unknownSymbol) { + if (target.flags & 107455) { + var moduleName = getFirstIdentifier(node.moduleReference); + if (!(resolveEntityName(moduleName, 107455 | 1536).flags & 1536)) { + error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + } } - else { - target = resolveImport(symbol); + if (target.flags & 793056) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); } } - else { - target = unknownSymbol; - } } else { - target = unknownSymbol; - } - } - if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | - (symbol.flags & 793056 ? 793056 : 0) | - (symbol.flags & 1536 ? 1536 : 0); - if (target.flags & excludedMeanings) { - error(node, ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0, symbolToString(symbol)); + if (languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead); + } } } } + function checkExportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_declaration_cannot_have_modifiers); + } + if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { + if (node.exportClause) { + ts.forEach(node.exportClause.elements, checkExportSpecifier); + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module); + } + } + else { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + if (moduleSymbol && moduleSymbol.exports["export="]) { + error(node.moduleSpecifier, ts.Diagnostics.External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk, symbolToString(moduleSymbol)); + } + } + } + } + function checkExportSpecifier(node) { + checkAliasSymbol(node); + if (!node.parent.parent.moduleSpecifier) { + markExportAsReferenced(node); + } + } function checkExportAssignment(node) { - if (!checkGrammarModifiers(node) && (node.flags & 243)) { + var container = node.parent.kind === 227 ? node.parent : node.parent.parent; + if (container.kind === 205 && container.name.kind === 65) { + error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); + return; + } + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_assignment_cannot_have_modifiers); } - var container = node.parent; - if (container.kind !== 210) { - container = container.parent; + if (node.expression) { + if (node.expression.kind === 65) { + markExportAsReferenced(node); + } + else { + checkExpressionCached(node.expression); + } + } + if (node.type) { + checkSourceElement(node.type); + if (!ts.isInAmbientContext(node)) { + grammarErrorOnFirstToken(node.type, ts.Diagnostics.A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration); + } + } + checkExternalModuleExports(container); + if (node.isExportEquals && languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead); + } + } + function getModuleStatements(node) { + if (node.kind === 227) { + return node.statements; + } + if (node.kind === 205 && node.body.kind === 206) { + return node.body.statements; + } + return emptyArray; + } + function hasExportedMembers(moduleSymbol) { + for (var id in moduleSymbol.exports) { + if (id !== "export=") { + return true; + } + } + return false; + } + function checkExternalModuleExports(node) { + var moduleSymbol = getSymbolOfNode(node); + var links = getSymbolLinks(moduleSymbol); + if (!links.exportsChecked) { + var exportEqualsSymbol = moduleSymbol.exports["export="]; + if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { + var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; + error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + links.exportsChecked = true; } - checkTypeOfExportAssignmentSymbol(getSymbolOfNode(container)); } function checkSourceElement(node) { if (!node) return; switch (node.kind) { - case 125: - return checkTypeParameter(node); - case 126: - return checkParameter(node); case 128: - case 127: + return checkTypeParameter(node); + case 129: + return checkParameter(node); + case 132: + case 131: return checkPropertyDeclaration(node); + case 142: + case 143: case 138: case 139: - case 134: - case 135: return checkSignatureDeclaration(node); - case 136: - return checkSignatureDeclaration(node); - case 130: - case 129: - return checkMethodDeclaration(node); - case 131: - return checkConstructorDeclaration(node); - case 132: - case 133: - return checkAccessorDeclaration(node); - case 137: - return checkTypeReference(node); case 140: - return checkTypeQuery(node); + return checkSignatureDeclaration(node); + case 134: + case 133: + return checkMethodDeclaration(node); + case 135: + return checkConstructorDeclaration(node); + case 136: + case 137: + return checkAccessorDeclaration(node); case 141: - return checkTypeLiteral(node); - case 142: - return checkArrayType(node); - case 143: - return checkTupleType(node); + return checkTypeReferenceNode(node); case 144: - return checkUnionType(node); + return checkTypeQuery(node); case 145: - return checkSourceElement(node.type); - case 193: - return checkFunctionDeclaration(node); - case 172: - case 199: - return checkBlock(node); - case 173: - return checkVariableStatement(node); - case 175: - return checkExpressionStatement(node); - case 176: - return checkIfStatement(node); - case 177: - return checkDoStatement(node); - case 178: - return checkWhileStatement(node); - case 179: - return checkForStatement(node); - case 180: - return checkForInStatement(node); - case 181: - return checkForOfStatement(node); - case 182: - case 183: - return checkBreakOrContinueStatement(node); - case 184: - return checkReturnStatement(node); - case 185: - return checkWithStatement(node); - case 186: - return checkSwitchStatement(node); - case 187: - return checkLabeledStatement(node); - case 188: - return checkThrowStatement(node); - case 189: - return checkTryStatement(node); - case 191: - return checkVariableDeclaration(node); + return checkTypeLiteral(node); + case 146: + return checkArrayType(node); + case 147: + return checkTupleType(node); case 148: - return checkBindingElement(node); - case 194: - return checkClassDeclaration(node); - case 195: - return checkInterfaceDeclaration(node); - case 196: - return checkTypeAliasDeclaration(node); - case 197: - return checkEnumDeclaration(node); - case 198: - return checkModuleDeclaration(node); + return checkUnionType(node); + case 149: + return checkSourceElement(node.type); case 200: - return checkImportDeclaration(node); - case 201: - return checkExportAssignment(node); - case 174: - checkGrammarStatementInAmbientContext(node); - return; + return checkFunctionDeclaration(node); + case 179: + case 206: + return checkBlock(node); + case 180: + return checkVariableStatement(node); + case 182: + return checkExpressionStatement(node); + case 183: + return checkIfStatement(node); + case 184: + return checkDoStatement(node); + case 185: + return checkWhileStatement(node); + case 186: + return checkForStatement(node); + case 187: + return checkForInStatement(node); + case 188: + return checkForOfStatement(node); + case 189: case 190: + return checkBreakOrContinueStatement(node); + case 191: + return checkReturnStatement(node); + case 192: + return checkWithStatement(node); + case 193: + return checkSwitchStatement(node); + case 194: + return checkLabeledStatement(node); + case 195: + return checkThrowStatement(node); + case 196: + return checkTryStatement(node); + case 198: + return checkVariableDeclaration(node); + case 152: + return checkBindingElement(node); + case 201: + return checkClassDeclaration(node); + case 202: + return checkInterfaceDeclaration(node); + case 203: + return checkTypeAliasDeclaration(node); + case 204: + return checkEnumDeclaration(node); + case 205: + return checkModuleDeclaration(node); + case 209: + return checkImportDeclaration(node); + case 208: + return checkImportEqualsDeclaration(node); + case 215: + return checkExportDeclaration(node); + case 214: + return checkExportAssignment(node); + case 181: checkGrammarStatementInAmbientContext(node); return; + case 197: + checkGrammarStatementInAmbientContext(node); + return; + case 218: + return checkMissingDeclaration(node); } } function checkFunctionExpressionBodies(node) { switch (node.kind) { - case 158: - case 159: + case 162: + case 163: ts.forEach(node.parameters, checkFunctionExpressionBodies); checkFunctionExpressionOrObjectLiteralMethodBody(node); break; - case 130: - case 129: + case 134: + case 133: ts.forEach(node.parameters, checkFunctionExpressionBodies); if (ts.isObjectLiteralMethod(node)) { checkFunctionExpressionOrObjectLiteralMethodBody(node); } break; - case 131: - case 132: - case 133: - case 193: + case 135: + case 136: + case 137: + case 200: ts.forEach(node.parameters, checkFunctionExpressionBodies); break; - case 185: + case 192: checkFunctionExpressionBodies(node.expression); break; - case 126: - case 128: - case 127: - case 146: - case 147: - case 148: - case 149: + case 129: + case 132: + case 131: case 150: - case 207: case 151: case 152: case 153: case 154: + case 224: case 155: - case 167: - case 171: case 156: case 157: - case 161: - case 162: + case 158: + case 159: + case 171: + case 176: case 160: - case 163: - case 164: + case 161: case 165: case 166: + case 164: + case 167: + case 168: case 169: - case 172: - case 199: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: + case 206: case 180: - case 181: case 182: case 183: case 184: + case 185: case 186: - case 203: - case 204: case 187: case 188: case 189: - case 206: + case 190: case 191: - case 192: + case 193: + case 207: + case 220: + case 221: case 194: - case 197: - case 209: - case 210: + case 195: + case 196: + case 223: + case 198: + case 199: + case 201: + case 204: + case 226: + case 214: + case 227: ts.forEachChild(node, checkFunctionExpressionBodies); break; } @@ -14798,11 +21541,7 @@ var ts; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); if (ts.isExternalModule(node)) { - var symbol = getExportAssignmentSymbol(node.symbol); - if (symbol && symbol.flags & 8388608) { - getSymbolLinks(symbol).referenced = true; - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + checkExternalModuleExports(node); } if (potentialThisCollisions.length) { ts.forEach(potentialThisCollisions, checkIfThisIsCapturedInEnclosingScope); @@ -14811,6 +21550,9 @@ var ts; if (emitExtends) { links.flags |= 8; } + if (emitDecorate) { + links.flags |= 512; + } links.flags |= 1; } } @@ -14835,7 +21577,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 185 && node.parent.statement === node) { + if (node.parent.kind === 192 && node.parent.statement === node) { return true; } node = node.parent; @@ -14846,6 +21588,44 @@ var ts; function getSymbolsInScope(location, meaning) { var symbols = {}; var memberFlags = 0; + if (isInsideWithStatementBody(location)) { + return []; + } + populateSymbols(); + return symbolsToArray(symbols); + function populateSymbols() { + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) { + break; + } + case 205: + copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); + break; + case 204: + copySymbols(getSymbolOfNode(location).exports, meaning & 8); + break; + case 201: + case 202: + if (!(memberFlags & 128)) { + copySymbols(getSymbolOfNode(location).members, meaning & 793056); + } + break; + case 162: + if (location.name) { + copySymbol(location.symbol, meaning); + } + break; + } + memberFlags = location.flags; + location = location.parent; + } + copySymbols(globals, meaning); + } function copySymbol(symbol, meaning) { if (symbol.flags & meaning) { var id = symbol.name; @@ -14871,169 +21651,179 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 197: + case 204: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 194: - case 195: + case 201: + case 202: if (!(memberFlags & 128)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 158: + case 162: if (location.name) { copySymbol(location.symbol, meaning); } break; - case 206: - if (location.name.text) { - copySymbol(location.symbol, meaning); - } - break; } memberFlags = location.flags; location = location.parent; } copySymbols(globals, meaning); - return ts.mapToArray(symbols); + return symbolsToArray(symbols); } function isTypeDeclarationName(name) { - return name.kind == 64 && - isTypeDeclaration(name.parent) && - name.parent.name === name; + return name.kind == 65 && isTypeDeclaration(name.parent) && name.parent.name === name; } function isTypeDeclaration(node) { switch (node.kind) { - case 125: - case 194: - case 195: - case 196: - case 197: + case 128: + case 201: + case 202: + case 203: + case 204: return true; } } function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 123) + while (node.parent && node.parent.kind === 126) { node = node.parent; - return node.parent && node.parent.kind === 137; + } + return node.parent && node.parent.kind === 141; } - function isTypeNode(node) { - if (137 <= node.kind && node.kind <= 145) { + function isHeritageClauseElementIdentifier(entityName) { + var node = entityName; + while (node.parent && node.parent.kind === 155) { + node = node.parent; + } + return node.parent && node.parent.kind === 177; + } + function isTypeNodeOrHeritageClauseElement(node) { + if (141 <= node.kind && node.kind <= 149) { return true; } switch (node.kind) { - case 110: - case 117: + case 112: case 119: - case 111: - case 120: + case 121: + case 113: + case 122: return true; - case 98: - return node.parent.kind !== 162; + case 99: + return node.parent.kind !== 166; case 8: - return node.parent.kind === 126; - case 64: - if (node.parent.kind === 123 && node.parent.right === node) { + return node.parent.kind === 129; + case 177: + return true; + case 65: + if (node.parent.kind === 126 && node.parent.right === node) { node = node.parent; } - case 123: - ts.Debug.assert(node.kind === 64 || node.kind === 123, "'node' was expected to be a qualified name or identifier in 'isTypeNode'."); - var parent = node.parent; - if (parent.kind === 140) { + else if (node.parent.kind === 155 && node.parent.name === node) { + node = node.parent; + } + case 126: + case 155: + ts.Debug.assert(node.kind === 65 || node.kind === 126 || node.kind === 155, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + var parent_5 = node.parent; + if (parent_5.kind === 144) { return false; } - if (137 <= parent.kind && parent.kind <= 145) { + if (141 <= parent_5.kind && parent_5.kind <= 149) { return true; } - switch (parent.kind) { - case 125: - return node === parent.constraint; + switch (parent_5.kind) { + case 177: + return true; case 128: - case 127: - case 126: - case 191: - return node === parent.type; - case 193: - case 158: - case 159: - case 131: - case 130: - case 129: + return node === parent_5.constraint; case 132: - case 133: - return node === parent.type; - case 134: + case 131: + case 129: + case 198: + return node === parent_5.type; + case 200: + case 162: + case 163: case 135: + case 134: + case 133: case 136: - return node === parent.type; - case 156: - return node === parent.type; - case 153: - case 154: - return parent.typeArguments && ts.indexOf(parent.typeArguments, node) >= 0; - case 155: + case 137: + return node === parent_5.type; + case 138: + case 139: + case 140: + return node === parent_5.type; + case 160: + return node === parent_5.type; + case 157: + case 158: + return parent_5.typeArguments && ts.indexOf(parent_5.typeArguments, node) >= 0; + case 159: return false; } } return false; } - function getLeftSideOfImportOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 123) { + function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { + while (nodeOnRightSide.parent.kind === 126) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 200) { + if (nodeOnRightSide.parent.kind === 208) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 201) { - return nodeOnRightSide.parent.exportName === nodeOnRightSide && nodeOnRightSide.parent; + if (nodeOnRightSide.parent.kind === 214) { + return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; } function isInRightSideOfImportOrExportAssignment(node) { - return getLeftSideOfImportOrExportAssignment(node) !== undefined; - } - function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 123 && node.parent.right === node) || - (node.parent.kind === 151 && node.parent.name === node); + return getLeftSideOfImportEqualsOrExportAssignment(node) !== undefined; } function getSymbolOfEntityNameOrPropertyAccessExpression(entityName) { - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(entityName)) { + if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 201) { - return resolveEntityName(entityName.parent.parent, entityName, 107455 | 793056 | 1536 | 8388608); + if (entityName.parent.kind === 214) { + return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 151) { + if (entityName.kind !== 155) { if (isInRightSideOfImportOrExportAssignment(entityName)) { - return getSymbolOfPartOfRightHandSideOfImport(entityName); + return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } } - if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (ts.isExpression(entityName)) { - if (ts.getFullWidth(entityName) === 0) { + if (isHeritageClauseElementIdentifier(entityName)) { + var meaning = entityName.parent.kind === 177 ? 793056 : 1536; + meaning |= 8388608; + return resolveEntityName(entityName, meaning); + } + else if (ts.isExpression(entityName)) { + if (ts.nodeIsMissing(entityName)) { return undefined; } - if (entityName.kind === 64) { + if (entityName.kind === 65) { var meaning = 107455 | 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 151) { + else if (entityName.kind === 155) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 123) { + else if (entityName.kind === 126) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -15042,9 +21832,9 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 137 ? 793056 : 1536; + var meaning = entityName.parent.kind === 141 ? 793056 : 1536; meaning |= 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } return undefined; } @@ -15052,36 +21842,34 @@ var ts; if (isInsideWithStatementBody(node)) { return undefined; } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { return getSymbolOfNode(node.parent); } - if (node.kind === 64 && isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 201 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImport(node); + if (node.kind === 65 && isInRightSideOfImportOrExportAssignment(node)) { + return node.parent.kind === 214 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } switch (node.kind) { - case 64: - case 151: - case 123: + case 65: + case 155: + case 126: return getSymbolOfEntityNameOrPropertyAccessExpression(node); - case 92: - case 90: + case 93: + case 91: var type = checkExpression(node); return type.symbol; - case 112: + case 114: var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 131) { + if (constructorDeclaration && constructorDeclaration.kind === 135) { return constructorDeclaration.parent.symbol; } return undefined; case 8: - if (ts.isExternalModuleImportDeclaration(node.parent.parent) && - ts.getExternalModuleImportDeclarationExpression(node.parent.parent) === node) { - var importSymbol = getSymbolOfNode(node.parent.parent); - var moduleType = getTypeOfSymbol(importSymbol); - return moduleType ? moduleType.symbol : undefined; + var moduleName; + if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || ((node.parent.kind === 209 || node.parent.kind === 215) && node.parent.moduleSpecifier === node)) { + return resolveExternalModuleName(node, node); } case 7: - if (node.parent.kind == 152 && node.parent.argumentExpression === node) { + if (node.parent.kind == 156 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -15095,8 +21883,8 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 208) { - return resolveEntityName(location, location.name, 107455); + if (location && location.kind === 225) { + return resolveEntityName(location.name, 107455); } return undefined; } @@ -15104,12 +21892,12 @@ var ts; if (isInsideWithStatementBody(node)) { return unknownType; } + if (isTypeNodeOrHeritageClauseElement(node)) { + return getTypeFromTypeNodeOrHeritageClauseElement(node); + } if (ts.isExpression(node)) { return getTypeOfExpression(node); } - if (isTypeNode(node)) { - return getTypeFromTypeNode(node); - } if (isTypeDeclaration(node)) { var symbol = getSymbolOfNode(node); return getDeclaredTypeOfSymbol(symbol); @@ -15122,7 +21910,7 @@ var ts; var symbol = getSymbolOfNode(node); return getTypeOfSymbol(symbol); } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { var symbol = getSymbolInfo(node); return symbol && getTypeOfSymbol(symbol); } @@ -15134,13 +21922,13 @@ var ts; return unknownType; } function getTypeOfExpression(expr) { - if (isRightSideOfQualifiedNameOrPropertyAccess(expr)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(expr)) { expr = expr.parent; } return checkExpression(expr); } function getAugmentedPropertiesOfType(type) { - var type = getApparentType(type); + type = getApparentType(type); var propsByName = createSymbolTable(getPropertiesOfType(type)); if (getSignaturesOfType(type, 0).length || getSignaturesOfType(type, 1).length) { ts.forEach(getPropertiesOfType(globalFunctionType), function (p) { @@ -15154,106 +21942,118 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456) { var symbols = []; - var name = symbol.name; + var name_10 = symbol.name; ts.forEach(getSymbolLinks(symbol).unionType.types, function (t) { - symbols.push(getPropertyOfType(t, name)); + symbols.push(getPropertyOfType(t, name_10)); }); return symbols; } else if (symbol.flags & 67108864) { var target = getSymbolLinks(symbol).target; if (target) { - return [target]; + return [ + target + ]; } } - return [symbol]; + return [ + symbol + ]; } function isExternalModuleSymbol(symbol) { - return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 210; + return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 227; } - function isNodeDescendentOf(node, ancestor) { + function getAliasNameSubstitution(symbol, getGeneratedNameForNode) { + if (languageVersion >= 2) { + return undefined; + } + var node = getDeclarationOfAliasSymbol(symbol); + if (node) { + if (node.kind === 210) { + return getGeneratedNameForNode(node.parent) + ".default"; + } + if (node.kind === 213) { + var moduleName = getGeneratedNameForNode(node.parent.parent.parent); + var propertyName = node.propertyName || node.name; + return moduleName + "." + ts.unescapeIdentifier(propertyName.text); + } + } + } + function getExportNameSubstitution(symbol, location, getGeneratedNameForNode) { + if (isExternalModuleSymbol(symbol.parent)) { + if (languageVersion >= 2) { + return undefined; + } + return "exports." + ts.unescapeIdentifier(symbol.name); + } + var node = location; + var containerSymbol = getParentOfSymbol(symbol); while (node) { - if (node === ancestor) - return true; + if ((node.kind === 205 || node.kind === 204) && getSymbolOfNode(node) === containerSymbol) { + return getGeneratedNameForNode(node) + "." + ts.unescapeIdentifier(symbol.name); + } node = node.parent; } + } + function getExpressionNameSubstitution(node, getGeneratedNameForNode) { + var symbol = getNodeLinks(node).resolvedSymbol || (ts.isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined); + if (symbol) { + if (symbol.parent) { + return getExportNameSubstitution(symbol, node.parent, getGeneratedNameForNode); + } + var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); + if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { + return getExportNameSubstitution(exportSymbol, node.parent, getGeneratedNameForNode); + } + if (symbol.flags & 8388608) { + return getAliasNameSubstitution(symbol, getGeneratedNameForNode); + } + } + } + function isValueAliasDeclaration(node) { + switch (node.kind) { + case 208: + case 210: + case 211: + case 213: + case 217: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 215: + var exportClause = node.exportClause; + return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); + case 214: + return node.expression && node.expression.kind === 65 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; + } return false; } - function isUniqueLocalName(name, container) { - for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { - if (node.locals && ts.hasProperty(node.locals, name)) { - var symbolWithRelevantName = node.locals[name]; - if (symbolWithRelevantName.flags & (107455 | 1048576)) { - return false; - } - if (symbolWithRelevantName.flags & 8388608) { - var importDeclarationWithRelevantName = ts.getDeclarationOfKind(symbolWithRelevantName, 200); - if (isReferencedImportDeclaration(importDeclarationWithRelevantName)) { - return false; - } - } - } - } - return true; - } - function getLocalNameOfContainer(container) { - var links = getNodeLinks(container); - if (!links.localModuleName) { - var prefix = ""; - var name = ts.unescapeIdentifier(container.name.text); - while (!isUniqueLocalName(ts.escapeIdentifier(prefix + name), container)) { - prefix += "_"; - } - links.localModuleName = prefix + ts.getTextOfNode(container.name); - } - return links.localModuleName; - } - function getLocalNameForSymbol(symbol, location) { - var node = location; - while (node) { - if ((node.kind === 198 || node.kind === 197) && getSymbolOfNode(node) === symbol) { - return getLocalNameOfContainer(node); - } - node = node.parent; - } - ts.Debug.fail("getLocalNameForSymbol failed"); - } - function getExpressionNamePrefix(node) { - var symbol = getNodeLinks(node).resolvedSymbol; - if (symbol) { - var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); - if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { - symbol = exportSymbol; - } - if (symbol.parent) { - return isExternalModuleSymbol(symbol.parent) ? "exports" : getLocalNameForSymbol(getParentOfSymbol(symbol), node.parent); - } - } - } - function getExportAssignmentName(node) { - var symbol = getExportAssignmentSymbol(getSymbolOfNode(node)); - return symbol && symbolIsValue(symbol) && !isConstEnumSymbol(symbol) ? symbolToString(symbol) : undefined; - } - function isTopLevelValueImportWithEntityName(node) { - if (node.parent.kind !== 210 || !ts.isInternalModuleImportDeclaration(node)) { + function isTopLevelValueImportEqualsWithEntityName(node) { + if (node.parent.kind !== 227 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } - return isImportResolvedToValue(getSymbolOfNode(node)); + var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); + return isValue && node.moduleReference && !ts.nodeIsMissing(node.moduleReference); } - function isImportResolvedToValue(symbol) { - var target = resolveImport(symbol); - return target !== unknownSymbol && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); + function isAliasResolvedToValue(symbol) { + var target = resolveAlias(symbol); + if (target === unknownSymbol && compilerOptions.separateCompilation) { + return true; + } + return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); } function isConstEnumOrConstEnumOnlyModule(s) { return isConstEnumSymbol(s) || s.constEnumOnlyModule; } - function isReferencedImportDeclaration(node) { - var symbol = getSymbolOfNode(node); - if (getSymbolLinks(symbol).referenced) { - return true; + function isReferencedAliasDeclaration(node, checkChildren) { + if (ts.isAliasSymbolDeclaration(node)) { + var symbol = getSymbolOfNode(node); + if (getSymbolLinks(symbol).referenced) { + return true; + } } - if (node.flags & 1) { - return isImportResolvedToValue(symbol); + if (checkChildren) { + return ts.forEachChild(node, function (node) { + return isReferencedAliasDeclaration(node, checkChildren); + }); } return false; } @@ -15261,8 +22061,7 @@ var ts; if (ts.nodeIsPresent(node.body)) { var symbol = getSymbolOfNode(node); var signaturesOfSymbol = getSignaturesOfSymbol(symbol); - return signaturesOfSymbol.length > 1 || - (signaturesOfSymbol.length === 1 && signaturesOfSymbol[0].declaration !== node); + return signaturesOfSymbol.length > 1 || (signaturesOfSymbol.length === 1 && signaturesOfSymbol[0].declaration !== node); } return false; } @@ -15274,15 +22073,13 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 209) { + if (node.kind === 226) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; if (symbol && (symbol.flags & 8)) { - var declaration = symbol.valueDeclaration; - var constantValue; - if (declaration.kind === 209) { - return getEnumMemberValue(declaration); + if (ts.isConstEnumDeclaration(symbol.valueDeclaration.parent)) { + return getEnumMemberValue(symbol.valueDeclaration); } } return undefined; @@ -15296,25 +22093,58 @@ var ts; var signature = getSignatureFromDeclaration(signatureDeclaration); getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } - function isUnknownIdentifier(location, name) { - return !resolveName(location, name, 107455, undefined, undefined); + function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { + var type = getTypeOfExpression(expr); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + function hasGlobalName(name) { + return ts.hasProperty(globals, name); + } + function resolvesToSomeValue(location, name) { + ts.Debug.assert(!ts.nodeIsSynthesized(location), "resolvesToSomeValue called with a synthesized location"); + return !!resolveName(location, name, 107455, undefined, undefined); + } + function getBlockScopedVariableId(n) { + ts.Debug.assert(!ts.nodeIsSynthesized(n)); + var isVariableDeclarationOrBindingElement = n.parent.kind === 152 || (n.parent.kind === 198 && n.parent.name === n); + var symbol = (isVariableDeclarationOrBindingElement ? getSymbolOfNode(n.parent) : undefined) || getNodeLinks(n).resolvedSymbol || resolveName(n, n.text, 107455 | 8388608, undefined, undefined); + var isLetOrConst = symbol && (symbol.flags & 2) && symbol.valueDeclaration.parent.kind !== 223; + if (isLetOrConst) { + getSymbolLinks(symbol); + return symbol.id; + } + return undefined; + } + function instantiateSingleCallFunctionType(functionType, typeArguments) { + if (functionType === unknownType) { + return unknownType; + } + var signature = getSingleCallSignature(functionType); + if (!signature) { + return unknownType; + } + var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); + return getOrCreateTypeFromSignature(instantiatedSignature); } function createResolver() { return { - getLocalNameOfContainer: getLocalNameOfContainer, - getExpressionNamePrefix: getExpressionNamePrefix, - getExportAssignmentName: getExportAssignmentName, - isReferencedImportDeclaration: isReferencedImportDeclaration, + getExpressionNameSubstitution: getExpressionNameSubstitution, + isValueAliasDeclaration: isValueAliasDeclaration, + hasGlobalName: hasGlobalName, + isReferencedAliasDeclaration: isReferencedAliasDeclaration, getNodeCheckFlags: getNodeCheckFlags, - isTopLevelValueImportWithEntityName: isTopLevelValueImportWithEntityName, + isTopLevelValueImportEqualsWithEntityName: isTopLevelValueImportEqualsWithEntityName, isDeclarationVisible: isDeclarationVisible, isImplementationOfOverload: isImplementationOfOverload, writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, + writeTypeOfExpression: writeTypeOfExpression, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, - isUnknownIdentifier: isUnknownIdentifier + resolvesToSomeValue: resolvesToSomeValue, + collectLinkedAliases: collectLinkedAliases, + getBlockScopedVariableId: getBlockScopedVariableId }; } function initializeTypeChecker() { @@ -15323,7 +22153,7 @@ var ts; }); ts.forEach(host.getSourceFiles(), function (file) { if (!ts.isExternalModule(file)) { - extendSymbolTable(globals, file.locals); + mergeSymbolTable(globals, file.locals); } }); getSymbolLinks(undefinedSymbol).type = undefinedType; @@ -15338,10 +22168,16 @@ var ts; globalNumberType = getGlobalType("Number"); globalBooleanType = getGlobalType("Boolean"); globalRegExpType = getGlobalType("RegExp"); + globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); + globalClassDecoratorType = getGlobalType("ClassDecorator"); + globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); + globalMethodDecoratorType = getGlobalType("MethodDecorator"); + globalParameterDecoratorType = getGlobalType("ParameterDecorator"); if (languageVersion >= 2) { globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); globalESSymbolType = getGlobalType("Symbol"); globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); + globalIterableType = getGlobalType("Iterable", 1); } else { globalTemplateStringsArrayType = unknownType; @@ -15350,26 +22186,46 @@ var ts; } anyArrayType = createArrayType(anyType); } + function checkGrammarDecorators(node) { + if (!node.decorators) { + return false; + } + if (!ts.nodeCanBeDecorated(node)) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_not_valid_here); + } + else if (languageVersion < 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (node.kind === 136 || node.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } + return false; + } function checkGrammarModifiers(node) { switch (node.kind) { - case 132: - case 133: - case 131: - case 128: - case 127: - case 130: - case 129: case 136: - case 194: - case 195: - case 198: - case 197: + case 137: + case 135: + case 132: + case 131: + case 134: + case 133: + case 140: case 201: - case 173: - case 193: - case 196: + case 202: + case 205: + case 204: + case 180: case 200: - case 126: + case 203: + case 209: + case 208: + case 215: + case 214: + case 129: break; default: return false; @@ -15379,17 +22235,17 @@ var ts; } var lastStatic, lastPrivate, lastProtected, lastDeclare; var flags = 0; - for (var i = 0, n = node.modifiers.length; i < n; i++) { - var modifier = node.modifiers[i]; + for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { + var modifier = _a[_i]; switch (modifier.kind) { + case 109: + case 108: case 107: - case 106: - case 105: - var text; - if (modifier.kind === 107) { + var text = void 0; + if (modifier.kind === 109) { text = "public"; } - else if (modifier.kind === 106) { + else if (modifier.kind === 108) { text = "protected"; lastProtected = modifier; } @@ -15403,50 +22259,50 @@ var ts; else if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } flags |= ts.modifierToFlag(modifier.kind); break; - case 108: + case 110: if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } flags |= 128; lastStatic = modifier; break; - case 77: + case 78: if (flags & 1) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "export"); } else if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1; break; - case 113: + case 115: if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 199) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 206) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2; @@ -15454,7 +22310,7 @@ var ts; break; } } - if (node.kind === 131) { + if (node.kind === 135) { if (flags & 128) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -15465,13 +22321,13 @@ var ts; return grammarErrorOnNode(lastPrivate, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "private"); } } - else if (node.kind === 200 && flags & 2) { + else if ((node.kind === 209 || node.kind === 208) && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 195 && flags & 2) { + else if (node.kind === 202 && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_interface_declaration, "declare"); } - else if (node.kind === 126 && (flags & 112) && ts.isBindingPattern(node.name)) { + else if (node.kind === 129 && (flags & 112) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } } @@ -15483,15 +22339,14 @@ var ts; return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Trailing_comma_not_allowed); } } - function checkGrammarTypeParameterList(node, typeParameters) { + function checkGrammarTypeParameterList(node, typeParameters, file) { if (checkGrammarForDisallowedTrailingComma(typeParameters)) { return true; } if (typeParameters && typeParameters.length === 0) { var start = typeParameters.pos - "<".length; - var sourceFile = ts.getSourceFileOfNode(node); - var end = ts.skipTrivia(sourceFile.text, typeParameters.end) + ">".length; - return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); + var end = ts.skipTrivia(file.text, typeParameters.end) + ">".length; + return grammarErrorAtPos(file, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); } } function checkGrammarParameterList(parameters) { @@ -15527,7 +22382,19 @@ var ts; } } function checkGrammarFunctionLikeDeclaration(node) { - return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters) || checkGrammarParameterList(node.parameters); + var file = ts.getSourceFileOfNode(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); + } + function checkGrammarArrowFunction(node, file) { + if (node.kind === 163) { + var arrowFunction = node; + var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; + if (startLine !== endLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, ts.Diagnostics.Line_terminator_not_permitted_before_arrow); + } + } + return false; } function checkGrammarIndexSignatureParameters(node) { var parameter = node.parameters[0]; @@ -15542,7 +22409,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.An_index_signature_cannot_have_a_rest_parameter); } - if (parameter.flags & 243) { + if (parameter.flags & 499) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier); } if (parameter.questionToken) { @@ -15554,7 +22421,7 @@ var ts; if (!parameter.type) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation); } - if (parameter.type.kind !== 119 && parameter.type.kind !== 117) { + if (parameter.type.kind !== 121 && parameter.type.kind !== 119) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_type_must_be_string_or_number); } if (!node.type) { @@ -15562,12 +22429,12 @@ var ts; } } function checkGrammarForIndexSignatureModifier(node) { - if (node.flags & 243) { + if (node.flags & 499) { grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_not_permitted_on_index_signature_members); } } function checkGrammarIndexSignature(node) { - checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -15578,23 +22445,21 @@ var ts; } } function checkGrammarTypeArguments(node, typeArguments) { - return checkGrammarForDisallowedTrailingComma(typeArguments) || - checkGrammarForAtLeastOneTypeArgument(node, typeArguments); + return checkGrammarForDisallowedTrailingComma(typeArguments) || checkGrammarForAtLeastOneTypeArgument(node, typeArguments); } function checkGrammarForOmittedArgument(node, arguments) { if (arguments) { var sourceFile = ts.getSourceFileOfNode(node); - for (var i = 0, n = arguments.length; i < n; i++) { - var arg = arguments[i]; - if (arg.kind === 170) { + for (var _i = 0; _i < arguments.length; _i++) { + var arg = arguments[_i]; + if (arg.kind === 175) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } } } function checkGrammarArguments(node, arguments) { - return checkGrammarForDisallowedTrailingComma(arguments) || - checkGrammarForOmittedArgument(node, arguments); + return checkGrammarForDisallowedTrailingComma(arguments) || checkGrammarForOmittedArgument(node, arguments); } function checkGrammarHeritageClause(node) { var types = node.types; @@ -15610,11 +22475,10 @@ var ts; function checkGrammarClassDeclarationHeritageClauses(node) { var seenExtendsClause = false; var seenImplementsClause = false; - if (!checkGrammarModifiers(node) && node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 2); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && node.heritageClauses) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } @@ -15627,7 +22491,7 @@ var ts; seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); if (seenImplementsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen); } @@ -15640,17 +22504,16 @@ var ts; function checkGrammarInterfaceDeclaration(node) { var seenExtendsClause = false; if (node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 1); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause); } checkGrammarHeritageClause(heritageClause); @@ -15659,11 +22522,11 @@ var ts; return false; } function checkGrammarComputedPropertyName(node) { - if (node.kind !== 124) { + if (node.kind !== 127) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 165 && computedPropertyName.expression.operatorToken.kind === 23) { + if (computedPropertyName.expression.kind === 169 && computedPropertyName.expression.operatorToken.kind === 23) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } @@ -15687,54 +22550,53 @@ var ts; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; var inStrictMode = (node.parserContextFlags & 1) !== 0; - for (var i = 0, n = node.properties.length; i < n; i++) { - var prop = node.properties[i]; - var name = prop.name; - if (prop.kind === 170 || - name.kind === 124) { - checkGrammarComputedPropertyName(name); + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var name_11 = prop.name; + if (prop.kind === 175 || name_11.kind === 127) { + checkGrammarComputedPropertyName(name_11); continue; } - var currentKind; - if (prop.kind === 207 || prop.kind === 208) { + var currentKind = void 0; + if (prop.kind === 224 || prop.kind === 225) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name.kind === 7) { - checkGrammarNumbericLiteral(name); + if (name_11.kind === 7) { + checkGrammarNumbericLiteral(name_11); } currentKind = Property; } - else if (prop.kind === 130) { + else if (prop.kind === 134) { currentKind = Property; } - else if (prop.kind === 132) { + else if (prop.kind === 136) { currentKind = GetAccessor; } - else if (prop.kind === 133) { + else if (prop.kind === 137) { currentKind = SetAccesor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name.text)) { - seen[name.text] = currentKind; + if (!ts.hasProperty(seen, name_11.text)) { + seen[name_11.text] = currentKind; } else { - var existingKind = seen[name.text]; + var existingKind = seen[name_11.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name.text] = currentKind | existingKind; + seen[name_11.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -15743,33 +22605,26 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 192) { + if (forInOrOfStatement.initializer.kind === 199) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; + var diagnostic = forInOrOfStatement.kind === 187 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = variableList.declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + var diagnostic = forInOrOfStatement.kind === 187 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + var diagnostic = forInOrOfStatement.kind === 187 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); } } } return false; } - function checkGrammarForOfStatement(forOfStatement) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_not_currently_supported); - if (languageVersion < 2) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher); - } - return checkGrammarForInOrForOfStatement(forOfStatement); - } function checkGrammarAccessor(accessor) { var kind = accessor.kind; if (languageVersion < 1) { @@ -15784,10 +22639,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 132 && accessor.parameters.length) { + else if (kind === 136 && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 133) { + else if (kind === 137) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -15799,7 +22654,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_set_accessor_cannot_have_rest_parameter); } - else if (parameter.flags & 243) { + else if (parameter.flags & 499) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } else if (parameter.questionToken) { @@ -15812,17 +22667,15 @@ var ts; } } function checkGrammarForNonSymbolComputedProperty(node, message) { - if (node.kind === 124 && !ts.isWellKnownSymbolSyntactically(node.expression)) { + if (node.kind === 127 && !ts.isWellKnownSymbolSyntactically(node.expression)) { return grammarErrorOnNode(node, message); } } function checkGrammarMethod(node) { - if (checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || - checkGrammarFunctionLikeDeclaration(node) || - checkGrammarForGenerator(node)) { + if (checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarFunctionLikeDeclaration(node) || checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 150) { + if (node.parent.kind === 154) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -15830,7 +22683,7 @@ var ts; return grammarErrorAtPos(getSourceFile(node), node.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); } } - if (node.parent.kind === 194) { + if (node.parent.kind === 201) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -15841,22 +22694,22 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 179: - case 180: - case 181: - case 177: - case 178: - return true; + case 186: case 187: + case 188: + case 184: + case 185: + return true; + case 194: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; @@ -15864,21 +22717,21 @@ var ts; function checkGrammarBreakOrContinueStatement(node) { var current = node; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 187: + case 194: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 182 && !isIterationStatement(current.statement, true); + var isMisplacedContinueLabel = node.kind === 189 && !isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); } return false; } break; - case 186: - if (node.kind === 183 && !node.label) { + case 193: + if (node.kind === 190 && !node.label) { return false; } break; @@ -15891,11 +22744,11 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; + var message = node.kind === 190 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; + var message = node.kind === 190 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } } @@ -15912,16 +22765,14 @@ var ts; return checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarVariableDeclaration(node) { - if (ts.isInAmbientContext(node)) { - if (ts.isBindingPattern(node.name)) { - return grammarErrorOnNode(node, ts.Diagnostics.Destructuring_declarations_are_not_allowed_in_ambient_contexts); + if (node.parent.parent.kind !== 187 && node.parent.parent.kind !== 188) { + if (ts.isInAmbientContext(node)) { + if (node.initializer) { + var equalsTokenLength = "=".length; + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - equalsTokenLength, equalsTokenLength, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } } - if (node.initializer) { - return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - 1, 1, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); - } - } - else { - if (!node.initializer) { + else if (!node.initializer) { if (ts.isBindingPattern(node.name) && !ts.isBindingPattern(node.parent)) { return grammarErrorOnNode(node, ts.Diagnostics.A_destructuring_declaration_must_have_an_initializer); } @@ -15931,19 +22782,19 @@ var ts; } } var checkLetConstNames = languageVersion >= 2 && (ts.isLet(node) || ts.isConst(node)); - return (checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name)) || - checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + return (checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name)) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarNameInLetOrConstDeclarations(name) { - if (name.kind === 64) { + if (name.kind === 65) { if (name.text === "let") { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { var elements = name.elements; - for (var i = 0; i < elements.length; ++i) { - checkGrammarNameInLetOrConstDeclarations(elements[i].name); + for (var _i = 0; _i < elements.length; _i++) { + var element = elements[_i]; + checkGrammarNameInLetOrConstDeclarations(element.name); } } } @@ -15955,26 +22806,18 @@ var ts; if (!declarationList.declarations.length) { return grammarErrorAtPos(ts.getSourceFileOfNode(declarationList), declarations.pos, declarations.end - declarations.pos, ts.Diagnostics.Variable_declaration_list_cannot_be_empty); } - if (languageVersion < 2) { - if (ts.isLet(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - else if (ts.isConst(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - } } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 176: - case 177: - case 178: + case 183: + case 184: case 185: - case 179: - case 180: - case 181: - return false; + case 192: + case 186: case 187: + case 188: + return false; + case 194: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -15990,7 +22833,7 @@ var ts; } } function isIntegerLiteral(expression) { - if (expression.kind === 163) { + if (expression.kind === 167) { var unaryExpression = expression; if (unaryExpression.operator === 33 || unaryExpression.operator === 34) { expression = unaryExpression.operand; @@ -16002,14 +22845,14 @@ var ts; return false; } function checkGrammarEnumDeclaration(enumDecl) { - var enumIsConst = (enumDecl.flags & 4096) !== 0; + var enumIsConst = (enumDecl.flags & 8192) !== 0; var hasError = false; if (!enumIsConst) { var inConstantEnumMemberSection = true; var inAmbientContext = ts.isInAmbientContext(enumDecl); - for (var i = 0, n = enumDecl.members.length; i < n; i++) { - var node = enumDecl.members[i]; - if (node.name.kind === 124) { + for (var _i = 0, _a = enumDecl.members; _i < _a.length; _i++) { + var node = _a[_i]; + if (node.name.kind === 127) { hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Computed_property_names_are_not_allowed_in_enums); } else if (inAmbientContext) { @@ -16030,18 +22873,11 @@ var ts; function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } - function scanToken(scanner, pos) { - scanner.setTextPos(pos); - scanner.scan(); - var start = scanner.getTokenPos(); - return start; - } function grammarErrorOnFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - var start = scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, scanner.getTextPos() - start, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2)); return true; } } @@ -16054,16 +22890,17 @@ var ts; function grammarErrorOnNode(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var span = ts.getErrorSpanForNode(node); - var start = span.end > span.pos ? ts.skipTrivia(sourceFile.text, span.pos) : span.pos; - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, span.end - start, message, arg0, arg1, arg2)); + diagnostics.add(ts.createDiagnosticForNode(node, message, arg0, arg1, arg2)); return true; } } - function checkGrammarEvalOrArgumentsInStrictMode(contextNode, identifier) { - if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { - var name = ts.declarationNameToString(identifier); - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, name); + function checkGrammarEvalOrArgumentsInStrictMode(contextNode, name) { + if (name && name.kind === 65) { + var identifier = name; + if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { + var nameText = ts.declarationNameToString(identifier); + return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); + } } } function checkGrammarConstructorTypeParameters(node) { @@ -16077,18 +22914,17 @@ var ts; } } function checkGrammarProperty(node) { - if (node.parent.kind === 194) { - if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional) || - checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol)) { + if (node.parent.kind === 201) { + if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional) || checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -16098,18 +22934,15 @@ var ts; } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 195 || - node.kind === 200 || - node.kind === 201 || - (node.flags & 2)) { + if (node.kind === 202 || node.kind === 209 || node.kind === 208 || node.kind === 215 || node.kind === 214 || (node.flags & 2) || (node.flags & (1 | 256))) { return false; } return grammarErrorOnFirstToken(node, ts.Diagnostics.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file); } function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { - for (var i = 0, n = file.statements.length; i < n; i++) { - var decl = file.statements[i]; - if (ts.isDeclaration(decl) || decl.kind === 173) { + for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { + var decl = _a[_i]; + if (ts.isDeclaration(decl) || decl.kind === 180) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -16125,13 +22958,13 @@ var ts; return getNodeLinks(node).hasReportedStatementInAmbientContext = true; } var links = getNodeLinks(node); - if (!links.hasReportedStatementInAmbientContext && ts.isAnyFunction(node.parent)) { + if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 172 || node.parent.kind === 199 || node.parent.kind === 210) { - var links = getNodeLinks(node.parent); - if (!links.hasReportedStatementInAmbientContext) { - return links.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); + if (node.parent.kind === 179 || node.parent.kind === 206 || node.parent.kind === 227) { + var links_1 = getNodeLinks(node.parent); + if (!links_1.hasReportedStatementInAmbientContext) { + return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); } } else { @@ -16139,7 +22972,7 @@ var ts; } } function checkGrammarNumbericLiteral(node) { - if (node.flags & 8192) { + if (node.flags & 16384) { if (node.parserContextFlags & 1) { return grammarErrorOnNode(node, ts.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode); } @@ -16151,9 +22984,8 @@ var ts; function grammarErrorAfterFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, scanner.getTextPos(), 0, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, ts.textSpanEnd(span), 0, message, arg0, arg1, arg2)); return true; } } @@ -16162,247 +22994,16 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); +/// var ts; (function (ts) { - var indentStrings = ["", " "]; - function getIndentString(level) { - if (indentStrings[level] === undefined) { - indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; - } - return indentStrings[level]; - } - ts.getIndentString = getIndentString; - function getIndentSize() { - return indentStrings[1].length; - } - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!ts.isDeclarationFile(sourceFile)) { - if ((ts.isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { - return true; - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; - function createTextWriter(newLine) { - var output = ""; - var indent = 0; - var lineStart = true; - var lineCount = 0; - var linePos = 0; - function write(s) { - if (s && s.length) { - if (lineStart) { - output += getIndentString(indent); - lineStart = false; - } - output += s; - } - } - function rawWrite(s) { - if (s !== undefined) { - if (lineStart) { - lineStart = false; - } - output += s; - } - } - function writeLiteral(s) { - if (s && s.length) { - write(s); - var lineStartsOfS = ts.computeLineStarts(s); - if (lineStartsOfS.length > 1) { - lineCount = lineCount + lineStartsOfS.length - 1; - linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; - } - } - } - function writeLine() { - if (!lineStart) { - output += newLine; - lineCount++; - linePos = output.length; - lineStart = true; - } - } - function writeTextOfNode(sourceFile, node) { - write(ts.getSourceTextOfNodeFromSourceFile(sourceFile, node)); - } - return { - write: write, - rawWrite: rawWrite, - writeTextOfNode: writeTextOfNode, - writeLiteral: writeLiteral, - writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, - getIndent: function () { return indent; }, - getTextPos: function () { return output.length; }, - getLine: function () { return lineCount + 1; }, - getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, - getText: function () { return output; } - }; - } - function getLineOfLocalPosition(currentSourceFile, pos) { - return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; - } - function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { - if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && - getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { - writer.writeLine(); - } - } - function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { - var emitLeadingSpace = !trailingSeparator; - ts.forEach(comments, function (comment) { - if (emitLeadingSpace) { - writer.write(" "); - emitLeadingSpace = false; - } - writeComment(currentSourceFile, writer, comment, newLine); - if (comment.hasTrailingNewLine) { - writer.writeLine(); - } - else if (trailingSeparator) { - writer.write(" "); - } - else { - emitLeadingSpace = true; - } - }); - } - function writeCommentRange(currentSourceFile, writer, comment, newLine) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); - var lineCount = ts.getLineStarts(currentSourceFile).length; - var firstCommentLineIndent; - for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { - var nextLineStart = (currentLine + 1) === lineCount ? currentSourceFile.text.length + 1 : ts.getStartPositionOfLine(currentLine + 1, currentSourceFile); - if (pos !== comment.pos) { - if (firstCommentLineIndent === undefined) { - firstCommentLineIndent = calculateIndent(ts.getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); - } - var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); - var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); - if (spacesToEmit > 0) { - var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); - var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); - writer.rawWrite(indentSizeSpaceString); - while (numberOfSingleSpacesToEmit) { - writer.rawWrite(" "); - numberOfSingleSpacesToEmit--; - } - } - else { - writer.rawWrite(""); - } - } - writeTrimmedCurrentLine(pos, nextLineStart); - pos = nextLineStart; - } - } - else { - writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); - } - function writeTrimmedCurrentLine(pos, nextLineStart) { - var end = Math.min(comment.end, nextLineStart - 1); - var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); - if (currentLineText) { - writer.write(currentLineText); - if (end !== comment.end) { - writer.writeLine(); - } - } - else { - writer.writeLiteral(newLine); - } - } - function calculateIndent(pos, end) { - var currentLineIndent = 0; - for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { - if (currentSourceFile.text.charCodeAt(pos) === 9) { - currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); - } - else { - currentLineIndent++; - } - } - return currentLineIndent; - } - } - function getFirstConstructorWithBody(node) { - return ts.forEach(node.members, function (member) { - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { - return member; - } - }); - } - function getAllAccessorDeclarations(declarations, accessor) { - var firstAccessor; - var getAccessor; - var setAccessor; - if (ts.hasDynamicName(accessor)) { - firstAccessor = accessor; - if (accessor.kind === 132) { - getAccessor = accessor; - } - else if (accessor.kind === 133) { - setAccessor = accessor; - } - else { - ts.Debug.fail("Accessor has wrong kind"); - } - } - else { - ts.forEach(declarations, function (member) { - if ((member.kind === 132 || member.kind === 133) && (member.flags & 128) === (accessor.flags & 128)) { - var memberName = ts.getPropertyNameForPropertyNameNode(member.name); - var accessorName = ts.getPropertyNameForPropertyNameNode(accessor.name); - if (memberName === accessorName) { - if (!firstAccessor) { - firstAccessor = member; - } - if (member.kind === 132 && !getAccessor) { - getAccessor = member; - } - if (member.kind === 133 && !setAccessor) { - setAccessor = member; - } - } - } - }); - } - return { - firstAccessor: firstAccessor, - getAccessor: getAccessor, - setAccessor: setAccessor - }; - } - function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { - var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); - sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); - return ts.combinePaths(newDirPath, sourceFilePath); - } - function getOwnEmitOutputFilePath(sourceFile, host, extension) { - var compilerOptions = host.getCompilerOptions(); - if (compilerOptions.outDir) { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); - } - else { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); - } - return emitOutputFilePathWithoutExtension + extension; - } - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { - host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + function getDeclarationDiagnostics(host, resolver, targetSourceFile) { + var diagnostics = []; + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); + return diagnostics; } + ts.getDeclarationDiagnostics = getDeclarationDiagnostics; function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); @@ -16416,36 +23017,48 @@ var ts; var enclosingDeclaration; var currentSourceFile; var reportedDeclarationError = false; - var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; + var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { + } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var aliasDeclarationEmitInfo = []; + var moduleElementDeclarationEmitInfo = []; + var asynchronousSubModuleDeclarationEmitInfo; var referencePathsOutput = ""; if (root) { if (!compilerOptions.noResolve) { var addedGlobalFileReference = false; ts.forEach(root.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - if (referencedFile && ((referencedFile.flags & 1024) || - shouldEmitToOwnFile(referencedFile, compilerOptions) || - !addedGlobalFileReference)) { + if (referencedFile && ((referencedFile.flags & 2048) || ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || !addedGlobalFileReference)) { writeReferencePath(referencedFile); - if (!isExternalModuleOrDeclarationFile(referencedFile)) { + if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { addedGlobalFileReference = true; } } }); } emitSourceFile(root); + if (moduleElementDeclarationEmitInfo.length) { + var oldWriter = writer; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.isVisible) { + ts.Debug.assert(aliasEmitInfo.node.kind === 209); + createAndSetNewTextWriterWithSymbolWriter(); + ts.Debug.assert(aliasEmitInfo.indent === 0); + writeImportDeclaration(aliasEmitInfo.node); + aliasEmitInfo.asynchronousOutput = writer.getText(); + } + }); + setWriter(oldWriter); + } } else { var emittedReferencedFiles = []; ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!isExternalModuleOrDeclarationFile(sourceFile)) { + if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { if (!compilerOptions.noResolve) { ts.forEach(sourceFile.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) && - !ts.contains(emittedReferencedFiles, referencedFile))) { + if (referencedFile && (ts.isExternalModuleOrDeclarationFile(referencedFile) && !ts.contains(emittedReferencedFiles, referencedFile))) { writeReferencePath(referencedFile); emittedReferencedFiles.push(referencedFile); } @@ -16457,7 +23070,7 @@ var ts; } return { reportedDeclarationError: reportedDeclarationError, - aliasDeclarationEmitInfo: aliasDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -16476,7 +23089,7 @@ var ts; } } function createAndSetNewTextWriterWithSymbolWriter() { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); writer.trackSymbol = trackSymbol; writer.writeKeyword = writer.write; writer.writeOperator = writer.write; @@ -16496,17 +23109,47 @@ var ts; increaseIndent = newWriter.increaseIndent; decreaseIndent = newWriter.decreaseIndent; } - function writeAsychronousImportDeclarations(importDeclarations) { + function writeAsynchronousModuleElements(nodes) { var oldWriter = writer; - ts.forEach(importDeclarations, function (aliasToWrite) { - var aliasEmitInfo = ts.forEach(aliasDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.declaration === aliasToWrite ? declEmitInfo : undefined; }); - if (aliasEmitInfo) { - createAndSetNewTextWriterWithSymbolWriter(); - for (var declarationIndent = aliasEmitInfo.indent; declarationIndent; declarationIndent--) { - increaseIndent(); + ts.forEach(nodes, function (declaration) { + var nodeToCheck; + if (declaration.kind === 198) { + nodeToCheck = declaration.parent.parent; + } + else if (declaration.kind === 212 || declaration.kind === 213 || declaration.kind === 210) { + ts.Debug.fail("We should be getting ImportDeclaration instead to write"); + } + else { + nodeToCheck = declaration; + } + var moduleElementEmitInfo = ts.forEach(moduleElementDeclarationEmitInfo, function (declEmitInfo) { + return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; + }); + if (!moduleElementEmitInfo && asynchronousSubModuleDeclarationEmitInfo) { + moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { + return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; + }); + } + if (moduleElementEmitInfo) { + if (moduleElementEmitInfo.node.kind === 209) { + moduleElementEmitInfo.isVisible = true; + } + else { + createAndSetNewTextWriterWithSymbolWriter(); + for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { + increaseIndent(); + } + if (nodeToCheck.kind === 205) { + ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); + asynchronousSubModuleDeclarationEmitInfo = []; + } + writeModuleElement(nodeToCheck); + if (nodeToCheck.kind === 205) { + moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; + asynchronousSubModuleDeclarationEmitInfo = undefined; + } + moduleElementEmitInfo.asynchronousOutput = writer.getText(); } - writeImportDeclaration(aliasToWrite); - aliasEmitInfo.asynchronousOutput = writer.getText(); } }); setWriter(oldWriter); @@ -16514,7 +23157,7 @@ var ts; function handleSymbolAccessibilityError(symbolAccesibilityResult) { if (symbolAccesibilityResult.accessibility === 0) { if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { - writeAsychronousImportDeclarations(symbolAccesibilityResult.aliasesToMakeVisible); + writeAsynchronousModuleElements(symbolAccesibilityResult.aliasesToMakeVisible); } } else { @@ -16554,28 +23197,32 @@ var ts; } } function emitLines(nodes) { - for (var i = 0, n = nodes.length; i < n; i++) { - emit(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + emit(node); } } - function emitSeparatedList(nodes, separator, eachNodeEmitFn) { + function emitSeparatedList(nodes, separator, eachNodeEmitFn, canEmitFn) { var currentWriterPos = writer.getTextPos(); - for (var i = 0, n = nodes.length; i < n; i++) { - if (currentWriterPos !== writer.getTextPos()) { - write(separator); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + if (!canEmitFn || canEmitFn(node)) { + if (currentWriterPos !== writer.getTextPos()) { + write(separator); + } + currentWriterPos = writer.getTextPos(); + eachNodeEmitFn(node); } - currentWriterPos = writer.getTextPos(); - eachNodeEmitFn(nodes[i]); } } - function emitCommaList(nodes, eachNodeEmitFn) { - emitSeparatedList(nodes, ", ", eachNodeEmitFn); + function emitCommaList(nodes, eachNodeEmitFn, canEmitFn) { + emitSeparatedList(nodes, ", ", eachNodeEmitFn, canEmitFn); } function writeJsDocComments(declaration) { if (declaration) { var jsDocComments = ts.getJsDocComments(declaration, currentSourceFile); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); - emitComments(currentSourceFile, writer, jsDocComments, true, newLine, writeCommentRange); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); + ts.emitComments(currentSourceFile, writer, jsDocComments, true, newLine, ts.writeCommentRange); } } function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type, getSymbolAccessibilityDiagnostic) { @@ -16584,51 +23231,63 @@ var ts; } function emitType(type) { switch (type.kind) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: + case 113: + case 122: + case 99: case 8: return writeTextOfNode(currentSourceFile, type); - case 137: - return emitTypeReference(type); - case 140: - return emitTypeQuery(type); - case 142: - return emitArrayType(type); - case 143: - return emitTupleType(type); - case 144: - return emitUnionType(type); - case 145: - return emitParenType(type); - case 138: - case 139: - return emitSignatureDeclarationWithJsDocComments(type); + case 177: + return emitHeritageClauseElement(type); case 141: + return emitTypeReference(type); + case 144: + return emitTypeQuery(type); + case 146: + return emitArrayType(type); + case 147: + return emitTupleType(type); + case 148: + return emitUnionType(type); + case 149: + return emitParenType(type); + case 142: + case 143: + return emitSignatureDeclarationWithJsDocComments(type); + case 145: return emitTypeLiteral(type); - case 64: + case 65: return emitEntityName(type); - case 123: + case 126: return emitEntityName(type); - default: - ts.Debug.fail("Unknown type annotation: " + type.kind); } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 200 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 208 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); function writeEntityName(entityName) { - if (entityName.kind === 64) { + if (entityName.kind === 65) { writeTextOfNode(currentSourceFile, entityName); } else { - var qualifiedName = entityName; - writeEntityName(qualifiedName.left); + var left = entityName.kind === 126 ? entityName.left : entityName.expression; + var right = entityName.kind === 126 ? entityName.right : entityName.name; + writeEntityName(left); write("."); - writeTextOfNode(currentSourceFile, qualifiedName.right); + writeTextOfNode(currentSourceFile, right); + } + } + } + function emitHeritageClauseElement(node) { + if (ts.isSupportedHeritageClauseElement(node)) { + ts.Debug.assert(node.expression.kind === 65 || node.expression.kind === 155); + emitEntityName(node.expression); + if (node.typeArguments) { + write("<"); + emitCommaList(node.typeArguments, emitType); + write(">"); } } } @@ -16678,17 +23337,99 @@ var ts; emitLines(node.statements); } function emitExportAssignment(node) { - write("export = "); - writeTextOfNode(currentSourceFile, node.exportName); + write(node.isExportEquals ? "export = " : "export default "); + if (node.expression.kind === 65) { + writeTextOfNode(currentSourceFile, node.expression); + } + else { + write(": "); + if (node.type) { + emitType(node.type); + } + else { + writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; + resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, 2, writer); + } + } write(";"); writeLine(); + if (node.expression.kind === 65) { + var nodes = resolver.collectLinkedAliases(node.expression); + writeAsynchronousModuleElements(nodes); + } + function getDefaultExportAccessibilityDiagnostic(diagnostic) { + return { + diagnosticMessage: ts.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, + errorNode: node + }; + } + } + function isModuleElementVisible(node) { + return resolver.isDeclarationVisible(node); + } + function emitModuleElement(node, isModuleElementVisible) { + if (isModuleElementVisible) { + writeModuleElement(node); + } + else if (node.kind === 208 || (node.parent.kind === 227 && ts.isExternalModule(currentSourceFile))) { + var isVisible; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 227) { + asynchronousSubModuleDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + else { + if (node.kind === 209) { + var importDeclaration = node; + if (importDeclaration.importClause) { + isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || isVisibleNamedBinding(importDeclaration.importClause.namedBindings); + } + } + moduleElementDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + } + } + function writeModuleElement(node) { + switch (node.kind) { + case 200: + return writeFunctionDeclaration(node); + case 180: + return writeVariableStatement(node); + case 202: + return writeInterfaceDeclaration(node); + case 201: + return writeClassDeclaration(node); + case 203: + return writeTypeAliasDeclaration(node); + case 204: + return writeEnumDeclaration(node); + case 205: + return writeModuleDeclaration(node); + case 208: + return writeImportEqualsDeclaration(node); + case 209: + return writeImportDeclaration(node); + default: + ts.Debug.fail("Unknown symbol kind"); + } } function emitModuleElementDeclarationFlags(node) { if (node.parent === currentSourceFile) { if (node.flags & 1) { write("export "); } - if (node.kind !== 195) { + if (node.flags & 256) { + write("default "); + } + else if (node.kind !== 202) { write("declare "); } } @@ -16704,19 +23445,7 @@ var ts; write("static "); } } - function emitImportDeclaration(node) { - var nodeEmitInfo = { - declaration: node, - outputPos: writer.getTextPos(), - indent: writer.getIndent(), - hasWritten: resolver.isDeclarationVisible(node) - }; - aliasDeclarationEmitInfo.push(nodeEmitInfo); - if (nodeEmitInfo.hasWritten) { - writeImportDeclaration(node); - } - } - function writeImportDeclaration(node) { + function writeImportEqualsDeclaration(node) { emitJsDocComments(node); if (node.flags & 1) { write("export "); @@ -16724,13 +23453,13 @@ var ts; write("import "); writeTextOfNode(currentSourceFile, node.name); write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node)) { emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); write(";"); } else { write("require("); - writeTextOfNode(currentSourceFile, ts.getExternalModuleImportDeclarationExpression(node)); + writeTextOfNode(currentSourceFile, ts.getExternalModuleImportEqualsDeclarationExpression(node)); write(");"); } writer.writeLine(); @@ -16742,40 +23471,112 @@ var ts; }; } } - function emitModuleDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("module "); - writeTextOfNode(currentSourceFile, node.name); - while (node.body.kind !== 199) { - node = node.body; - write("."); - writeTextOfNode(currentSourceFile, node.name); + function isVisibleNamedBinding(namedBindings) { + if (namedBindings) { + if (namedBindings.kind === 211) { + return resolver.isDeclarationVisible(namedBindings); + } + else { + return ts.forEach(namedBindings.elements, function (namedImport) { + return resolver.isDeclarationVisible(namedImport); + }); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.body.statements); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; } } - function emitTypeAliasDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("type "); - writeTextOfNode(currentSourceFile, node.name); - write(" = "); - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); - write(";"); - writeLine(); + function writeImportDeclaration(node) { + if (!node.importClause && !(node.flags & 1)) { + return; } + emitJsDocComments(node); + if (node.flags & 1) { + write("export "); + } + write("import "); + if (node.importClause) { + var currentWriterPos = writer.getTextPos(); + if (node.importClause.name && resolver.isDeclarationVisible(node.importClause)) { + writeTextOfNode(currentSourceFile, node.importClause.name); + } + if (node.importClause.namedBindings && isVisibleNamedBinding(node.importClause.namedBindings)) { + if (currentWriterPos !== writer.getTextPos()) { + write(", "); + } + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + writeTextOfNode(currentSourceFile, node.importClause.namedBindings.name); + } + else { + write("{ "); + emitCommaList(node.importClause.namedBindings.elements, emitImportOrExportSpecifier, resolver.isDeclarationVisible); + write(" }"); + } + } + write(" from "); + } + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + write(";"); + writer.writeLine(); + } + function emitImportOrExportSpecifier(node) { + if (node.propertyName) { + writeTextOfNode(currentSourceFile, node.propertyName); + write(" as "); + } + writeTextOfNode(currentSourceFile, node.name); + } + function emitExportSpecifier(node) { + emitImportOrExportSpecifier(node); + var nodes = resolver.collectLinkedAliases(node.propertyName || node.name); + writeAsynchronousModuleElements(nodes); + } + function emitExportDeclaration(node) { + emitJsDocComments(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitCommaList(node.exportClause.elements, emitExportSpecifier); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + } + write(";"); + writer.writeLine(); + } + function writeModuleDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("module "); + writeTextOfNode(currentSourceFile, node.name); + while (node.body.kind !== 206) { + node = node.body; + write("."); + writeTextOfNode(currentSourceFile, node.name); + } + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.body.statements); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function writeTypeAliasDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("type "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); + write(";"); + writeLine(); function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult) { return { diagnosticMessage: ts.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, @@ -16784,23 +23585,21 @@ var ts; }; } } - function emitEnumDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isConst(node)) { - write("const "); - } - write("enum "); - writeTextOfNode(currentSourceFile, node.name); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); + function writeEnumDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isConst(node)) { + write("const "); } + write("enum "); + writeTextOfNode(currentSourceFile, node.name); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); } function emitEnumMemberDeclaration(node) { emitJsDocComments(node); @@ -16814,7 +23613,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 130 && (node.parent.flags & 32); + return node.parent.kind === 134 && (node.parent.flags & 32); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -16824,15 +23623,8 @@ var ts; writeTextOfNode(currentSourceFile, node.name); if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - (node.parent.parent && node.parent.parent.kind === 141)) { - ts.Debug.assert(node.parent.kind === 130 || - node.parent.kind === 129 || - node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.kind === 134 || - node.parent.kind === 135); + if (node.parent.kind === 142 || node.parent.kind === 143 || (node.parent.parent && node.parent.parent.kind === 145)) { + ts.Debug.assert(node.parent.kind === 134 || node.parent.kind === 133 || node.parent.kind === 142 || node.parent.kind === 143 || node.parent.kind === 138 || node.parent.kind === 139); emitType(node.constraint); } else { @@ -16842,31 +23634,31 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 194: + case 201: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 195: + case 202: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 135: + case 139: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 134: + case 138: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 130: - case 129: + case 134: + case 133: if (node.parent.flags & 128) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 194) { + else if (node.parent.parent.kind === 201) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 193: + case 200: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -16891,10 +23683,12 @@ var ts; emitCommaList(typeReferences, emitTypeOfTypeReference); } function emitTypeOfTypeReference(node) { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + if (ts.isSupportedHeritageClauseElement(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + } function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 194) { + if (node.parent.parent.kind === 201) { diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; } else { @@ -16908,7 +23702,7 @@ var ts; } } } - function emitClassDeclaration(node) { + function writeClassDeclaration(node) { function emitParameterProperties(constructorDeclaration) { if (constructorDeclaration) { ts.forEach(constructorDeclaration.parameters, function (param) { @@ -16918,49 +23712,47 @@ var ts; }); } } - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("class "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - var baseTypeNode = ts.getClassBaseTypeNode(node); - if (baseTypeNode) { - emitHeritageClause([baseTypeNode], false); - } - emitHeritageClause(ts.getClassImplementedTypeNodes(node), true); - write(" {"); - writeLine(); - increaseIndent(); - emitParameterProperties(getFirstConstructorWithBody(node)); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("class "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + emitHeritageClause([ + baseTypeNode + ], false); } + emitHeritageClause(ts.getClassImplementsHeritageClauseElements(node), true); + write(" {"); + writeLine(); + increaseIndent(); + emitParameterProperties(ts.getFirstConstructorWithBody(node)); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } - function emitInterfaceDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("interface "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } + function writeInterfaceDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("interface "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } function emitPropertyDeclaration(node) { if (ts.hasDynamicName(node)) { @@ -16973,40 +23765,76 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 191 || resolver.isDeclarationVisible(node)) { - writeTextOfNode(currentSourceFile, node.name); - if ((node.kind === 128 || node.kind === 127) && ts.hasQuestionToken(node)) { - write("?"); + if (node.kind !== 198 || resolver.isDeclarationVisible(node)) { + if (ts.isBindingPattern(node.name)) { + emitBindingPattern(node.name); } - if ((node.kind === 128 || node.kind === 127) && node.parent.kind === 141) { - emitTypeOfVariableDeclarationFromTypeLiteral(node); + else { + writeTextOfNode(currentSourceFile, node.name); + if ((node.kind === 132 || node.kind === 131) && ts.hasQuestionToken(node)) { + write("?"); + } + if ((node.kind === 132 || node.kind === 131) && node.parent.kind === 145) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.flags & 32)) { + writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } } - else if (!(node.flags & 32)) { - writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } + function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + if (node.kind === 198) { + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + } + else if (node.kind === 132 || node.kind === 131) { + if (node.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } } } function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - if (node.kind === 191) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; - } - else if (node.kind === 128 || node.kind === 127) { - if (node.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; - } - } + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name } : undefined; } + function emitBindingPattern(bindingPattern) { + var elements = []; + for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { + var element = _a[_i]; + if (element.kind !== 175) { + elements.push(element); + } + } + emitCommaList(elements, emitBindingElement); + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + writeTextOfNode(currentSourceFile, bindingElement.name); + writeTypeOfDeclaration(bindingElement, undefined, getBindingElementTypeVisibilityError); + } + } + } } function emitTypeOfVariableDeclarationFromTypeLiteral(node) { if (node.type) { @@ -17014,40 +23842,43 @@ var ts; emitType(node.type); } } - function emitVariableStatement(node) { - var hasDeclarationWithEmit = ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); - if (hasDeclarationWithEmit) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } - emitCommaList(node.declarationList.declarations, emitVariableDeclaration); - write(";"); - writeLine(); + function isVariableStatementVisible(node) { + return ts.forEach(node.declarationList.declarations, function (varDeclaration) { + return resolver.isDeclarationVisible(varDeclaration); + }); + } + function writeVariableStatement(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isLet(node.declarationList)) { + write("let "); } + else if (ts.isConst(node.declarationList)) { + write("const "); + } + else { + write("var "); + } + emitCommaList(node.declarationList.declarations, emitVariableDeclaration, resolver.isDeclarationVisible); + write(";"); + writeLine(); } function emitAccessorDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - var accessors = getAllAccessorDeclarations(node.parent.members, node); + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + var accessorWithTypeAnnotation; if (node === accessors.firstAccessor) { emitJsDocComments(accessors.getAccessor); emitJsDocComments(accessors.setAccessor); emitClassMemberDeclarationFlags(node); writeTextOfNode(currentSourceFile, node.name); if (!(node.flags & 32)) { - var accessorWithTypeAnnotation = node; + accessorWithTypeAnnotation = node; var type = getTypeAnnotationFromAccessor(node); if (!type) { - var anotherAccessor = node.kind === 132 ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 136 ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -17060,12 +23891,12 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 132 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type : undefined; + return accessor.kind === 136 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type : undefined; } } function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 133) { + if (accessorWithTypeAnnotation.kind === 137) { if (accessorWithTypeAnnotation.parent.flags & 128) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; } @@ -17093,24 +23924,23 @@ var ts; } } } - function emitFunctionDeclaration(node) { + function writeFunctionDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - if ((node.kind !== 193 || resolver.isDeclarationVisible(node)) && - !resolver.isImplementationOfOverload(node)) { + if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 193) { + if (node.kind === 200) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 130) { + else if (node.kind === 134) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 193) { + if (node.kind === 200) { write("function "); writeTextOfNode(currentSourceFile, node.name); } - else if (node.kind === 131) { + else if (node.kind === 135) { write("constructor"); } else { @@ -17127,11 +23957,11 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { - if (node.kind === 135 || node.kind === 139) { + if (node.kind === 139 || node.kind === 143) { write("new "); } emitTypeParameters(node.typeParameters); - if (node.kind === 136) { + if (node.kind === 140) { write("["); } else { @@ -17140,20 +23970,20 @@ var ts; var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 136) { + if (node.kind === 140) { write("]"); } else { write(")"); } - var isFunctionTypeOrConstructorType = node.kind === 138 || node.kind === 139; - if (isFunctionTypeOrConstructorType || node.parent.kind === 141) { + var isFunctionTypeOrConstructorType = node.kind === 142 || node.kind === 143; + if (isFunctionTypeOrConstructorType || node.parent.kind === 145) { if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 131 && !(node.flags & 32)) { + else if (node.kind !== 135 && !(node.flags & 32)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -17164,28 +23994,28 @@ var ts; function getReturnTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.kind) { - case 135: + case 139: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 134: + case 138: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 136: + case 140: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; - case 130: - case 129: + case 134: + case 133: if (node.flags & 128) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; } else { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 193: + case 200: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; break; default: @@ -17204,7 +24034,7 @@ var ts; write("..."); } if (ts.isBindingPattern(node.name)) { - write("_" + ts.indexOf(node.parent.parameters, node)); + emitBindingPattern(node.name); } else { writeTextOfNode(currentSourceFile, node.name); @@ -17213,103 +24043,168 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.parent.kind === 141) { + if (node.parent.kind === 142 || node.parent.kind === 143 || node.parent.parent.kind === 145) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 32)) { writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); } function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - switch (node.parent.kind) { - case 131: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - break; - case 135: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 134: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 130: - case 129: - if (node.parent.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; - } - break; - case 193: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; - break; - default: - ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); - } - return { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name - }; + } : undefined; + } + function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + switch (node.parent.kind) { + case 135: + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + case 139: + return symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + case 138: + return symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 134: + case 133: + if (node.parent.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + case 200: + return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + default: + ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); + } + } + function emitBindingPattern(bindingPattern) { + if (bindingPattern.kind === 150) { + write("{"); + emitCommaList(bindingPattern.elements, emitBindingElement); + write("}"); + } + else if (bindingPattern.kind === 151) { + write("["); + var elements = bindingPattern.elements; + emitCommaList(elements, emitBindingElement); + if (elements && elements.hasTrailingComma) { + write(", "); + } + write("]"); + } + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.kind === 175) { + write(" "); + } + else if (bindingElement.kind === 152) { + if (bindingElement.propertyName) { + writeTextOfNode(currentSourceFile, bindingElement.propertyName); + write(": "); + emitBindingPattern(bindingElement.name); + } + else if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + ts.Debug.assert(bindingElement.name.kind === 65); + if (bindingElement.dotDotDotToken) { + write("..."); + } + writeTextOfNode(currentSourceFile, bindingElement.name); + } + } + } } } function emitNode(node) { switch (node.kind) { - case 131: - case 193: - case 130: - case 129: - return emitFunctionDeclaration(node); + case 200: + case 205: + case 208: + case 202: + case 201: + case 203: + case 204: + return emitModuleElement(node, isModuleElementVisible(node)); + case 180: + return emitModuleElement(node, isVariableStatementVisible(node)); + case 209: + return emitModuleElement(node, !node.importClause); + case 215: + return emitExportDeclaration(node); case 135: case 134: - case 136: - return emitSignatureDeclarationWithJsDocComments(node); - case 132: case 133: + return writeFunctionDeclaration(node); + case 139: + case 138: + case 140: + return emitSignatureDeclarationWithJsDocComments(node); + case 136: + case 137: return emitAccessorDeclaration(node); - case 173: - return emitVariableStatement(node); - case 128: - case 127: + case 132: + case 131: return emitPropertyDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 196: - return emitTypeAliasDeclaration(node); - case 209: + case 226: return emitEnumMemberDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 198: - return emitModuleDeclaration(node); - case 200: - return emitImportDeclaration(node); - case 201: + case 214: return emitExportAssignment(node); - case 210: + case 227: return emitSourceFile(node); } } function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 1024 ? referencedFile.fileName : shouldEmitToOwnFile(referencedFile, compilerOptions) ? getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; + var declFileName = referencedFile.flags & 2048 ? referencedFile.fileName : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); referencePathsOutput += "/// " + newLine; } } - function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); + if (!emitDeclarationResult.reportedDeclarationError) { + var declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); + ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + } + function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { + var appliedSyncOutputPos = 0; + var declarationOutput = ""; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.asynchronousOutput) { + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); + declarationOutput += getDeclarationOutput(aliasEmitInfo.asynchronousOutput, aliasEmitInfo.subModuleElementDeclarationEmitInfo); + appliedSyncOutputPos = aliasEmitInfo.outputPos; + } + }); + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos); + return declarationOutput; + } } - ts.getDeclarationDiagnostics = getDeclarationDiagnostics; + ts.writeDeclarationFile = writeDeclarationFile; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + function isExternalModuleOrDeclarationFile(sourceFile) { + return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); + } + ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; function emitFiles(resolver, host, targetSourceFile) { var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; @@ -17318,8 +24213,8 @@ var ts; var newLine = host.getNewLine(); if (targetSourceFile === undefined) { ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, ".js"); emitFile(jsFilePath, sourceFile); } }); @@ -17328,8 +24223,8 @@ var ts; } } else { - if (shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); emitFile(jsFilePath, targetSourceFile); } else if (!ts.isDeclarationFile(targetSourceFile) && compilerOptions.out) { @@ -17342,49 +24237,179 @@ var ts; diagnostics: diagnostics, sourceMaps: sourceMapDataList }; + function isNodeDescendentOf(node, ancestor) { + while (node) { + if (node === ancestor) + return true; + node = node.parent; + } + return false; + } + function isUniqueLocalName(name, container) { + for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { + if (node.locals && ts.hasProperty(node.locals, name)) { + if (node.locals[name].flags & (107455 | 1048576 | 8388608)) { + return false; + } + } + } + return true; + } function emitJavaScript(jsFilePath, root) { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); var write = writer.write; var writeTextOfNode = writer.writeTextOfNode; var writeLine = writer.writeLine; var increaseIndent = writer.increaseIndent; var decreaseIndent = writer.decreaseIndent; var currentSourceFile; + var generatedNameSet = {}; + var nodeToGeneratedName = []; + var blockScopedVariableToGeneratedName; + var computedPropertyNamesToGeneratedNames; var extendsEmitted = false; - var tempCount = 0; + var decorateEmitted = false; + var tempFlags = 0; var tempVariables; var tempParameters; + var externalImports; + var exportSpecifiers; + var exportEquals; + var hasExportStars; var writeEmittedFiles = writeJavaScriptFile; - var emitLeadingComments = compilerOptions.removeComments ? function (node) { } : emitLeadingDeclarationComments; - var emitTrailingComments = compilerOptions.removeComments ? function (node) { } : emitTrailingDeclarationComments; - var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfLocalPosition; var detachedCommentsInfo; - var emitDetachedComments = compilerOptions.removeComments ? function (node) { } : emitDetachedCommentsAtPosition; - var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? function (node) { } : emitPinnedOrTripleSlashCommentsOfNode; - var writeComment = writeCommentRange; - var emit = emitNode; - var emitStart = function (node) { }; - var emitEnd = function (node) { }; + var writeComment = ts.writeCommentRange; + var emit = emitNodeWithoutSourceMap; + var emitStart = function (node) { + }; + var emitEnd = function (node) { + }; var emitToken = emitTokenText; - var scopeEmitStart = function (scopeDeclaration, scopeName) { }; - var scopeEmitEnd = function () { }; + var scopeEmitStart = function (scopeDeclaration, scopeName) { + }; + var scopeEmitEnd = function () { + }; var sourceMapData; if (compilerOptions.sourceMap) { initializeEmitterWithSourceMaps(); } if (root) { - emit(root); + emitSourceFile(root); } else { ts.forEach(host.getSourceFiles(), function (sourceFile) { if (!isExternalModuleOrDeclarationFile(sourceFile)) { - emit(sourceFile); + emitSourceFile(sourceFile); } }); } writeLine(); writeEmittedFiles(writer.getText(), compilerOptions.emitBOM); return; + function emitSourceFile(sourceFile) { + currentSourceFile = sourceFile; + emit(sourceFile); + } + function isUniqueName(name) { + return !resolver.hasGlobalName(name) && !ts.hasProperty(currentSourceFile.identifiers, name) && !ts.hasProperty(generatedNameSet, name); + } + function makeTempVariableName(flags) { + if (flags && !(tempFlags & flags)) { + var name = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name)) { + tempFlags |= flags; + return name; + } + } + while (true) { + var count = tempFlags & 268435455; + tempFlags++; + if (count !== 8 && count !== 13) { + var name_12 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_12)) { + return name_12; + } + } + } + } + function makeUniqueName(baseName) { + if (baseName.charCodeAt(baseName.length - 1) !== 95) { + baseName += "_"; + } + var i = 1; + while (true) { + var generatedName = baseName + i; + if (isUniqueName(generatedName)) { + return generatedNameSet[generatedName] = generatedName; + } + i++; + } + } + function assignGeneratedName(node, name) { + nodeToGeneratedName[ts.getNodeId(node)] = ts.unescapeIdentifier(name); + } + function generateNameForFunctionOrClassDeclaration(node) { + if (!node.name) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForModuleOrEnum(node) { + if (node.name.kind === 65) { + var name_13 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_13, node) ? name_13 : makeUniqueName(name_13)); + } + } + function generateNameForImportOrExportDeclaration(node) { + var expr = ts.getExternalModuleName(node); + var baseName = expr.kind === 8 ? ts.escapeIdentifier(ts.makeIdentifierFromModuleName(expr.text)) : "module"; + assignGeneratedName(node, makeUniqueName(baseName)); + } + function generateNameForImportDeclaration(node) { + if (node.importClause) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportDeclaration(node) { + if (node.moduleSpecifier) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportAssignment(node) { + if (node.expression && node.expression.kind !== 65) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForNode(node) { + switch (node.kind) { + case 200: + case 201: + generateNameForFunctionOrClassDeclaration(node); + break; + case 205: + generateNameForModuleOrEnum(node); + generateNameForNode(node.body); + break; + case 204: + generateNameForModuleOrEnum(node); + break; + case 209: + generateNameForImportDeclaration(node); + break; + case 215: + generateNameForExportDeclaration(node); + break; + case 214: + generateNameForExportAssignment(node); + break; + } + } + function getGeneratedNameForNode(node) { + var nodeId = ts.getNodeId(node); + if (!nodeToGeneratedName[nodeId]) { + generateNameForNode(node); + } + return nodeToGeneratedName[nodeId]; + } function initializeEmitterWithSourceMaps() { var sourceMapDir; var sourceMapSourceIndex = -1; @@ -17459,12 +24484,7 @@ var ts; sourceLinePos.character++; var emittedLine = writer.getLine(); var emittedColumn = writer.getColumn(); - if (!lastRecordedSourceMapSpan || - lastRecordedSourceMapSpan.emittedLine != emittedLine || - lastRecordedSourceMapSpan.emittedColumn != emittedColumn || - (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && - (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || - (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan.emittedLine != emittedLine || lastRecordedSourceMapSpan.emittedColumn != emittedColumn || (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { encodeLastRecordedSourceMapSpan(); lastRecordedSourceMapSpan = { emittedLine: emittedLine, @@ -17509,8 +24529,8 @@ var ts; if (scopeName) { var parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { - var name = node.name; - if (!name || name.kind !== 124) { + var name_14 = node.name; + if (!name_14 || name_14.kind !== 127) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -17527,18 +24547,10 @@ var ts; if (scopeName) { recordScopeNameStart(scopeName); } - else if (node.kind === 193 || - node.kind === 158 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || - node.kind === 133 || - node.kind === 198 || - node.kind === 194 || - node.kind === 197) { + else if (node.kind === 200 || node.kind === 162 || node.kind === 134 || node.kind === 133 || node.kind === 136 || node.kind === 137 || node.kind === 205 || node.kind === 201 || node.kind === 204) { if (node.name) { - var name = node.name; - scopeName = name.kind === 124 ? ts.getTextOfNode(name) : node.name.text; + var name_15 = node.name; + scopeName = name_15.kind === 127 ? ts.getTextOfNode(name_15) : node.name.text; } recordScopeNameStart(scopeName); } @@ -17552,7 +24564,7 @@ var ts; ; function writeCommentRangeWithMap(curentSourceFile, writer, comment, newLine) { recordSourceMapSpan(comment.pos); - writeCommentRange(currentSourceFile, writer, comment, newLine); + ts.writeCommentRange(currentSourceFile, writer, comment, newLine); recordSourceMapSpan(comment.end); } function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings) { @@ -17580,7 +24592,7 @@ var ts; } function writeJavaScriptAndSourceMapFile(emitOutput, writeByteOrderMark) { encodeLastRecordedSourceMapSpan(); - writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); + ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); sourceMapDataList.push(sourceMapData); writeJavaScriptFile(emitOutput + "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL, writeByteOrderMark); } @@ -17603,7 +24615,7 @@ var ts; if (compilerOptions.mapRoot) { sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); if (root) { - sourceMapDir = ts.getDirectoryPath(getSourceFilePathInNewDir(root, host, sourceMapDir)); + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); } if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); @@ -17616,21 +24628,24 @@ var ts; else { sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); } - function emitNodeWithMap(node) { + function emitNodeWithSourceMap(node, allowGeneratedIdentifiers) { if (node) { - if (node.kind != 210) { + if (ts.nodeIsSynthesized(node)) { + return emitNodeWithoutSourceMap(node, false); + } + if (node.kind != 227) { recordEmitNodeStartSpan(node); - emitNode(node); + emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers); recordEmitNodeEndSpan(node); } else { recordNewSourceFileStart(node); - emitNode(node); + emitNodeWithoutSourceMap(node, false); } } } writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithMap; + emit = emitNodeWithSourceMap; emitStart = recordEmitNodeStartSpan; emitEnd = recordEmitNodeEndSpan; emitToken = writeTextWithSpanRecord; @@ -17639,19 +24654,11 @@ var ts; writeComment = writeCommentRangeWithMap; } function writeJavaScriptFile(emitOutput, writeByteOrderMark) { - writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); } - function createTempVariable(location, forLoopVariable) { - var name = forLoopVariable ? "_i" : undefined; - while (true) { - if (name && resolver.isUnknownIdentifier(location, name)) { - break; - } - name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + 97) : tempCount - 25); - tempCount++; - } - var result = ts.createNode(64); - result.text = name; + function createTempVariable(flags) { + var result = ts.createSynthesizedNode(65); + result.text = makeTempVariableName(flags); return result; } function recordTempDeclaration(name) { @@ -17660,8 +24667,8 @@ var ts; } tempVariables.push(name); } - function createAndRecordTempVariable(location) { - var temp = createTempVariable(location, false); + function createAndRecordTempVariable(flags) { + var temp = createTempVariable(flags); recordTempDeclaration(temp); return temp; } @@ -17694,7 +24701,7 @@ var ts; emit(node); } } - function emitParenthesized(node, parenthesized) { + function emitParenthesizedIf(node, parenthesized) { if (parenthesized) { write("("); } @@ -17731,12 +24738,11 @@ var ts; } emit(nodes[i]); } - var closeTokenIsOnSameLineAsLastElement = nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes)); if (nodes.hasTrailingComma && allowTrailingComma) { write(","); } decreaseIndent(); - if (closeTokenIsOnSameLineAsLastElement) { + if (nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes))) { if (spacesBetweenBraces) { write(" "); } @@ -17781,30 +24787,100 @@ var ts; emit(nodes[i]); } } - function isBinaryOrOctalIntegerLiteral(text) { - if (text.length <= 0) { - return false; - } - if (text.charCodeAt(1) === 66 || text.charCodeAt(1) === 98 || - text.charCodeAt(1) === 79 || text.charCodeAt(1) === 111) { - return true; + function isBinaryOrOctalIntegerLiteral(node, text) { + if (node.kind === 7 && text.length > 1) { + switch (text.charCodeAt(1)) { + case 98: + case 66: + case 111: + case 79: + return true; + } } return false; } function emitLiteral(node) { - var text = languageVersion < 2 && ts.isTemplateLiteralKind(node.kind) ? getTemplateLiteralAsStringLiteral(node) : node.parent ? ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node) : node.text; + var text = getLiteralText(node); if (compilerOptions.sourceMap && (node.kind === 8 || ts.isTemplateLiteralKind(node.kind))) { writer.writeLiteral(text); } - else if (languageVersion < 2 && node.kind === 7 && isBinaryOrOctalIntegerLiteral(text)) { + else if (languageVersion < 2 && isBinaryOrOctalIntegerLiteral(node, text)) { write(node.text); } else { write(text); } } - function getTemplateLiteralAsStringLiteral(node) { - return '"' + ts.escapeString(node.text) + '"'; + function getLiteralText(node) { + if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { + return getQuotedEscapedLiteralText('"', node.text, '"'); + } + if (node.parent) { + return ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + } + switch (node.kind) { + case 8: + return getQuotedEscapedLiteralText('"', node.text, '"'); + case 10: + return getQuotedEscapedLiteralText('`', node.text, '`'); + case 11: + return getQuotedEscapedLiteralText('`', node.text, '${'); + case 12: + return getQuotedEscapedLiteralText('}', node.text, '${'); + case 13: + return getQuotedEscapedLiteralText('}', node.text, '`'); + case 7: + return node.text; + } + ts.Debug.fail("Literal kind '" + node.kind + "' not accounted for."); + } + function getQuotedEscapedLiteralText(leftQuote, text, rightQuote) { + return leftQuote + ts.escapeNonAsciiCharacters(ts.escapeString(text)) + rightQuote; + } + function emitDownlevelRawTemplateLiteral(node) { + var text = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + var isLast = node.kind === 10 || node.kind === 13; + text = text.substring(1, text.length - (isLast ? 1 : 2)); + text = text.replace(/\r\n?/g, "\n"); + text = ts.escapeString(text); + write('"' + text + '"'); + } + function emitDownlevelTaggedTemplateArray(node, literalEmitter) { + write("["); + if (node.template.kind === 10) { + literalEmitter(node.template); + } + else { + literalEmitter(node.template.head); + ts.forEach(node.template.templateSpans, function (child) { + write(", "); + literalEmitter(child.literal); + }); + } + write("]"); + } + function emitDownlevelTaggedTemplate(node) { + var tempVariable = createAndRecordTempVariable(0); + write("("); + emit(tempVariable); + write(" = "); + emitDownlevelTaggedTemplateArray(node, emit); + write(", "); + emit(tempVariable); + write(".raw = "); + emitDownlevelTaggedTemplateArray(node, emitDownlevelRawTemplateLiteral); + write(", "); + emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); + write("("); + emit(tempVariable); + if (node.template.kind === 171) { + ts.forEach(node.template.templateSpans, function (templateSpan) { + write(", "); + var needsParens = templateSpan.expression.kind === 169 && templateSpan.expression.operatorToken.kind === 23; + emitParenthesizedIf(templateSpan.expression, needsParens); + }); + } + write("))"); } function emitTemplateExpression(node) { if (languageVersion >= 2) { @@ -17820,13 +24896,13 @@ var ts; emitLiteral(node.head); headEmitted = true; } - for (var i = 0; i < node.templateSpans.length; i++) { + for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 157 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; + var needsParens = templateSpan.expression.kind !== 161 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); } - emitParenthesized(templateSpan.expression, needsParens); + emitParenthesizedIf(templateSpan.expression, needsParens); if (templateSpan.literal.text.length !== 0) { write(" + "); emitLiteral(templateSpan.literal); @@ -17836,16 +24912,29 @@ var ts; write(")"); } function shouldEmitTemplateHead() { + // If this expression has an empty head literal and the first template span has a non-empty + // literal, then emitting the empty head literal is not necessary. + // `${ foo } and ${ bar }` + // can be emitted as + // foo + " and " + bar + // This is because it is only required that one of the first two operands in the emit + // output must be a string literal, so that the other operand and all following operands + // are forced into strings. + // + // If the first template span has an empty literal, then the head must still be emitted. + // `${ foo }${ bar }` + // must still be emitted as + // "" + foo + bar ts.Debug.assert(node.templateSpans.length !== 0); return node.head.text.length !== 0 || node.templateSpans[0].literal.text.length === 0; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 153: - case 154: - return parent.expression === template; - case 155: case 157: + case 158: + return parent.expression === template; + case 159: + case 161: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -17853,7 +24942,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 165: + case 169: switch (expression.operatorToken.kind) { case 35: case 36: @@ -17865,7 +24954,7 @@ var ts; default: return -1; } - case 166: + case 170: return -1; default: return 1; @@ -17877,11 +24966,27 @@ var ts; emit(span.literal); } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 148); + ts.Debug.assert(node.kind !== 152); if (node.kind === 8) { emitLiteral(node); } - else if (node.kind === 124) { + else if (node.kind === 127) { + if (ts.nodeIsDecorated(node.parent)) { + if (!computedPropertyNamesToGeneratedNames) { + computedPropertyNamesToGeneratedNames = []; + } + var generatedName = computedPropertyNamesToGeneratedNames[node.id]; + if (generatedName) { + write(generatedName); + return; + } + var generatedVariable = createTempVariable(0); + generatedName = generatedVariable.text; + recordTempDeclaration(generatedVariable); + computedPropertyNamesToGeneratedNames[node.id] = generatedName; + write(generatedName); + write(" = "); + } emit(node.expression); } else { @@ -17898,45 +25003,66 @@ var ts; function isNotExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: case 129: - case 193: - case 132: - case 133: - case 158: - case 194: - case 195: - case 197: case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: case 200: - return parent.name === node; - case 183: - case 182: + case 136: + case 137: + case 162: case 201: + case 202: + case 204: + case 205: + case 208: + case 210: + case 211: + return parent.name === node; + case 213: + case 217: + return parent.name === node || parent.propertyName === node; + case 190: + case 189: + case 214: return false; - case 187: + case 194: return node.parent.label === node; - case 206: - return node.parent.name === node; } } function emitExpressionIdentifier(node) { - var prefix = resolver.getExpressionNamePrefix(node); - if (prefix) { - write(prefix); - write("."); + var substitution = resolver.getExpressionNameSubstitution(node, getGeneratedNameForNode); + if (substitution) { + write(substitution); + } + else { + writeTextOfNode(currentSourceFile, node); } - writeTextOfNode(currentSourceFile, node); } - function emitIdentifier(node) { + function getGeneratedNameForIdentifier(node) { + if (ts.nodeIsSynthesized(node) || !blockScopedVariableToGeneratedName) { + return undefined; + } + var variableId = resolver.getBlockScopedVariableId(node); + if (variableId === undefined) { + return undefined; + } + return blockScopedVariableToGeneratedName[variableId]; + } + function emitIdentifier(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers) { + var generatedName = getGeneratedNameForIdentifier(node); + if (generatedName) { + write(generatedName); + return; + } + } if (!node.parent) { write(node.text); } @@ -17956,15 +25082,17 @@ var ts; } } function emitSuper(node) { - var flags = resolver.getNodeCheckFlags(node); - if (flags & 16) { - write("_super.prototype"); - } - else if (flags & 32) { - write("_super"); + if (languageVersion >= 2) { + write("super"); } else { - write("super"); + var flags = resolver.getNodeCheckFlags(node); + if (flags & 16) { + write("_super.prototype"); + } + else { + write("_super"); + } } } function emitObjectBindingPattern(node) { @@ -17981,7 +25109,7 @@ var ts; } function emitBindingElement(node) { if (node.propertyName) { - emit(node.propertyName); + emit(node.propertyName, false); write(": "); } if (node.dotDotDotToken) { @@ -17999,14 +25127,14 @@ var ts; write("..."); emit(node.expression); } - function needsParenthesisForPropertyAccess(node) { + function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { - case 64: - case 149: - case 151: - case 152: + case 65: case 153: + case 155: + case 156: case 157: + case 161: return false; } return true; @@ -18023,14 +25151,14 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 169) { + if (e.kind === 173) { e = e.expression; - emitParenthesized(e, group === 0 && needsParenthesisForPropertyAccess(e)); + emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; } else { var i = pos; - while (i < length && elements[i].kind !== 169) { + while (i < length && elements[i].kind !== 173) { i++; } write("["); @@ -18051,7 +25179,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 169; + return node.kind === 173; } function emitArrayLiteral(node) { var elements = node.elements; @@ -18064,32 +25192,26 @@ var ts; write("]"); } else { - emitListWithSpread(elements, (node.flags & 256) !== 0, elements.hasTrailingComma); + emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma); } } - function createSynthesizedNode(kind) { - var node = ts.createNode(kind); - node.pos = -1; - node.end = -1; - return node; - } function emitDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex) { var parenthesizedObjectLiteral = createDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex); return emit(parenthesizedObjectLiteral); } function createDownlevelObjectLiteralWithComputedProperties(originalObjectLiteral, firstComputedPropertyIndex) { - var tempVar = createAndRecordTempVariable(originalObjectLiteral); - var initialObjectLiteral = createSynthesizedNode(150); + var tempVar = createAndRecordTempVariable(0); + var initialObjectLiteral = ts.createSynthesizedNode(154); initialObjectLiteral.properties = originalObjectLiteral.properties.slice(0, firstComputedPropertyIndex); - initialObjectLiteral.flags |= 256; - var propertyPatches = createBinaryExpression(tempVar, 52, initialObjectLiteral); + initialObjectLiteral.flags |= 512; + var propertyPatches = createBinaryExpression(tempVar, 53, initialObjectLiteral); ts.forEach(originalObjectLiteral.properties, function (property) { var patchedProperty = tryCreatePatchingPropertyAssignment(originalObjectLiteral, tempVar, property); if (patchedProperty) { propertyPatches = createBinaryExpression(propertyPatches, 23, patchedProperty); } }); - propertyPatches = createBinaryExpression(propertyPatches, 23, tempVar); + propertyPatches = createBinaryExpression(propertyPatches, 23, createIdentifier(tempVar.text, true)); var result = createParenthesizedExpression(propertyPatches); return result; } @@ -18100,34 +25222,33 @@ var ts; function tryCreatePatchingPropertyAssignment(objectLiteral, tempVar, property) { var leftHandSide = createMemberAccessForPropertyName(tempVar, property.name); var maybeRightHandSide = tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property); - return maybeRightHandSide && createBinaryExpression(leftHandSide, 52, maybeRightHandSide); + return maybeRightHandSide && createBinaryExpression(leftHandSide, 53, maybeRightHandSide, true); } function tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property) { switch (property.kind) { - case 207: + case 224: return property.initializer; - case 208: - var prefix = createIdentifier(resolver.getExpressionNamePrefix(property.name)); - return createPropertyAccessExpression(prefix, property.name); - case 130: + case 225: + return createIdentifier(resolver.getExpressionNameSubstitution(property.name, getGeneratedNameForNode)); + case 134: return createFunctionExpression(property.parameters, property.body); - case 132: - case 133: - var _a = getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; + case 136: + case 137: + var _a = ts.getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; if (firstAccessor !== property) { return undefined; } - var propertyDescriptor = createSynthesizedNode(150); + var propertyDescriptor = ts.createSynthesizedNode(154); var descriptorProperties = []; if (getAccessor) { - var getProperty = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); - descriptorProperties.push(getProperty); + var getProperty_1 = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); + descriptorProperties.push(getProperty_1); } if (setAccessor) { var setProperty = createPropertyAssignment(createIdentifier("set"), createFunctionExpression(setAccessor.parameters, setAccessor.body)); descriptorProperties.push(setProperty); } - var trueExpr = createSynthesizedNode(94); + var trueExpr = ts.createSynthesizedNode(95); var enumerableTrue = createPropertyAssignment(createIdentifier("enumerable"), trueExpr); descriptorProperties.push(enumerableTrue); var configurableTrue = createPropertyAssignment(createIdentifier("configurable"), trueExpr); @@ -18140,35 +25261,40 @@ var ts; } } function createParenthesizedExpression(expression) { - var result = createSynthesizedNode(157); + var result = ts.createSynthesizedNode(161); result.expression = expression; return result; } function createNodeArray() { var elements = []; - for (var _i = 0; _i < arguments.length; _i++) { - elements[_i - 0] = arguments[_i]; + for (var _a = 0; _a < arguments.length; _a++) { + elements[_a - 0] = arguments[_a]; } var result = elements; result.pos = -1; result.end = -1; return result; } - function createBinaryExpression(left, operator, right) { - var result = createSynthesizedNode(165); - result.operatorToken = createSynthesizedNode(operator); + function createBinaryExpression(left, operator, right, startsOnNewLine) { + var result = ts.createSynthesizedNode(169, startsOnNewLine); + result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } + function createExpressionStatement(expression) { + var result = ts.createSynthesizedNode(182); + result.expression = expression; + return result; + } function createMemberAccessForPropertyName(expression, memberName) { - if (memberName.kind === 64) { + if (memberName.kind === 65) { return createPropertyAccessExpression(expression, memberName); } else if (memberName.kind === 8 || memberName.kind === 7) { return createElementAccessExpression(expression, memberName); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { return createElementAccessExpression(expression, memberName.expression); } else { @@ -18176,36 +25302,37 @@ var ts; } } function createPropertyAssignment(name, initializer) { - var result = createSynthesizedNode(207); + var result = ts.createSynthesizedNode(224); result.name = name; result.initializer = initializer; return result; } function createFunctionExpression(parameters, body) { - var result = createSynthesizedNode(158); + var result = ts.createSynthesizedNode(162); result.parameters = parameters; result.body = body; return result; } function createPropertyAccessExpression(expression, name) { - var result = createSynthesizedNode(151); + var result = ts.createSynthesizedNode(155); result.expression = expression; + result.dotToken = ts.createSynthesizedNode(20); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = createSynthesizedNode(152); + var result = ts.createSynthesizedNode(156); result.expression = expression; result.argumentExpression = argumentExpression; return result; } - function createIdentifier(name) { - var result = createSynthesizedNode(64); + function createIdentifier(name, startsOnNewLine) { + var result = ts.createSynthesizedNode(65, startsOnNewLine); result.text = name; return result; } function createCallExpression(invokedExpression, arguments) { - var result = createSynthesizedNode(153); + var result = ts.createSynthesizedNode(157); result.expression = invokedExpression; result.arguments = arguments; return result; @@ -18216,7 +25343,7 @@ var ts; var numProperties = properties.length; var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 124) { + if (properties[i].name.kind === 127) { numInitialNonComputedProperties = i; break; } @@ -18228,7 +25355,6 @@ var ts; } } write("{"); - var properties = node.properties; if (properties.length) { emitLinePreservingList(node, properties, languageVersion >= 1, true); } @@ -18236,47 +25362,78 @@ var ts; } function emitComputedPropertyName(node) { write("["); - emit(node.expression); + emitExpressionForPropertyName(node); write("]"); } function emitMethod(node) { - emit(node.name); + emit(node.name, false); if (languageVersion < 2) { write(": function "); } emitSignatureAndBody(node); } function emitPropertyAssignment(node) { - emit(node.name); + emit(node.name, false); write(": "); emit(node.initializer); } function emitShorthandPropertyAssignment(node) { - emit(node.name); - if (languageVersion <= 1 || resolver.getExpressionNamePrefix(node.name)) { + emit(node.name, false); + if (languageVersion < 2) { + write(": "); + var generatedName = getGeneratedNameForIdentifier(node.name); + if (generatedName) { + write(generatedName); + } + else { + emitExpressionIdentifier(node.name); + } + } + else if (resolver.getExpressionNameSubstitution(node.name, getGeneratedNameForNode)) { write(": "); emitExpressionIdentifier(node.name); } } function tryEmitConstantValue(node) { + if (compilerOptions.separateCompilation) { + return false; + } var constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 151 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 155 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; } return false; } + function indentIfOnDifferentLines(parent, node1, node2, valueToWriteWhenNotIndenting) { + var realNodesAreOnDifferentLines = !ts.nodeIsSynthesized(parent) && !nodeEndIsOnSameLineAsNodeStart(node1, node2); + var synthesizedNodeIsOnDifferentLine = synthesizedNodeStartsOnNewLine(node2); + if (realNodesAreOnDifferentLines || synthesizedNodeIsOnDifferentLine) { + increaseIndent(); + writeLine(); + return true; + } + else { + if (valueToWriteWhenNotIndenting) { + write(valueToWriteWhenNotIndenting); + } + return false; + } + } function emitPropertyAccess(node) { if (tryEmitConstantValue(node)) { return; } emit(node.expression); + var indentedBeforeDot = indentIfOnDifferentLines(node, node.expression, node.dotToken); write("."); - emit(node.name); + var indentedAfterDot = indentIfOnDifferentLines(node, node.dotToken, node.name); + emit(node.name, false); + decreaseIndentIf(indentedBeforeDot, indentedAfterDot); } function emitQualifiedName(node) { emit(node.left); @@ -18293,20 +25450,22 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 169; }); + return ts.forEach(elements, function (e) { + return e.kind === 173; + }); } function skipParentheses(node) { - while (node.kind === 157 || node.kind === 156) { + while (node.kind === 161 || node.kind === 160) { node = node.expression; } return node; } function emitCallTarget(node) { - if (node.kind === 64 || node.kind === 92 || node.kind === 90) { + if (node.kind === 65 || node.kind === 93 || node.kind === 91) { emit(node); return node; } - var temp = createAndRecordTempVariable(node); + var temp = createAndRecordTempVariable(0); write("("); emit(temp); write(" = "); @@ -18317,18 +25476,18 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 151) { + if (expr.kind === 155) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 152) { + else if (expr.kind === 156) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); write("]"); } - else if (expr.kind === 90) { + else if (expr.kind === 91) { target = expr; write("_super"); } @@ -18337,7 +25496,7 @@ var ts; } write(".apply("); if (target) { - if (target.kind === 90) { + if (target.kind === 91) { emitThis(target); } else { @@ -18357,15 +25516,15 @@ var ts; return; } var superCall = false; - if (node.expression.kind === 90) { - write("_super"); + if (node.expression.kind === 91) { + emitSuper(node.expression); superCall = true; } else { emit(node.expression); - superCall = node.expression.kind === 151 && node.expression.expression.kind === 90; + superCall = node.expression.kind === 155 && node.expression.expression.kind === 91; } - if (superCall) { + if (superCall && languageVersion < 2) { write(".call("); emitThis(node.expression); if (node.arguments.length) { @@ -18390,26 +25549,26 @@ var ts; } } function emitTaggedTemplateExpression(node) { - emit(node.tag); - write(" "); - emit(node.template); + if (languageVersion >= 2) { + emit(node.tag); + write(" "); + emit(node.template); + } + else { + emitDownlevelTaggedTemplate(node); + } } function emitParenExpression(node) { - if (node.expression.kind === 156) { - var operand = node.expression.expression; - while (operand.kind == 156) { - operand = operand.expression; - } - if (operand.kind !== 163 && - operand.kind !== 162 && - operand.kind !== 161 && - operand.kind !== 160 && - operand.kind !== 164 && - operand.kind !== 154 && - !(operand.kind === 153 && node.parent.kind === 154) && - !(operand.kind === 158 && node.parent.kind === 153)) { - emit(operand); - return; + if (!node.parent || node.parent.kind !== 163) { + if (node.expression.kind === 160) { + var operand = node.expression.expression; + while (operand.kind == 160) { + operand = operand.expression; + } + if (operand.kind !== 167 && operand.kind !== 166 && operand.kind !== 165 && operand.kind !== 164 && operand.kind !== 168 && operand.kind !== 158 && !(operand.kind === 157 && node.parent.kind === 158) && !(operand.kind === 162 && node.parent.kind === 157)) { + emit(operand); + return; + } } } write("("); @@ -18417,23 +25576,23 @@ var ts; write(")"); } function emitDeleteExpression(node) { - write(ts.tokenToString(73)); + write(ts.tokenToString(74)); write(" "); emit(node.expression); } function emitVoidExpression(node) { - write(ts.tokenToString(98)); + write(ts.tokenToString(99)); write(" "); emit(node.expression); } function emitTypeOfExpression(node) { - write(ts.tokenToString(96)); + write(ts.tokenToString(97)); write(" "); emit(node.expression); } function emitPrefixUnaryExpression(node) { write(ts.tokenToString(node.operator)); - if (node.operand.kind === 163) { + if (node.operand.kind === 167) { var operand = node.operand; if (node.operator === 33 && (operand.operator === 33 || operand.operator === 38)) { write(" "); @@ -18449,57 +25608,44 @@ var ts; write(ts.tokenToString(node.operator)); } function emitBinaryExpression(node) { - if (languageVersion < 2 && node.operatorToken.kind === 52 && - (node.left.kind === 150 || node.left.kind === 149)) { - emitDestructuring(node); + if (languageVersion < 2 && node.operatorToken.kind === 53 && (node.left.kind === 154 || node.left.kind === 153)) { + emitDestructuring(node, node.parent.kind === 182); } else { emit(node.left); - if (node.operatorToken.kind !== 23) { - write(" "); - } + var indentedBeforeOperator = indentIfOnDifferentLines(node, node.left, node.operatorToken, node.operatorToken.kind !== 23 ? " " : undefined); write(ts.tokenToString(node.operatorToken.kind)); - var operatorEnd = ts.getLineAndCharacterOfPosition(currentSourceFile, node.operatorToken.end); - var rightStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.right.pos)); - var onDifferentLine = operatorEnd.line !== rightStart.line; - if (onDifferentLine) { - var exprStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); - var firstCharOfExpr = getFirstNonWhitespaceCharacterIndexOnLine(exprStart.line); - var shouldIndent = rightStart.character > firstCharOfExpr; - if (shouldIndent) { - increaseIndent(); - } - writeLine(); - } - else { - write(" "); - } + var indentedAfterOperator = indentIfOnDifferentLines(node, node.operatorToken, node.right, " "); emit(node.right); - if (shouldIndent) { - decreaseIndent(); - } + decreaseIndentIf(indentedBeforeOperator, indentedAfterOperator); } } - function getFirstNonWhitespaceCharacterIndexOnLine(line) { - var lineStart = ts.getLineStarts(currentSourceFile)[line]; - var text = currentSourceFile.text; - for (var i = lineStart; i < text.length; i++) { - var ch = text.charCodeAt(i); - if (!ts.isWhiteSpace(text.charCodeAt(i)) || ts.isLineBreak(ch)) { - break; - } - } - return i - lineStart; + function synthesizedNodeStartsOnNewLine(node) { + return ts.nodeIsSynthesized(node) && node.startsOnNewLine; } function emitConditionalExpression(node) { emit(node.condition); - write(" ? "); + var indentedBeforeQuestion = indentIfOnDifferentLines(node, node.condition, node.questionToken, " "); + write("?"); + var indentedAfterQuestion = indentIfOnDifferentLines(node, node.questionToken, node.whenTrue, " "); emit(node.whenTrue); - write(" : "); + decreaseIndentIf(indentedBeforeQuestion, indentedAfterQuestion); + var indentedBeforeColon = indentIfOnDifferentLines(node, node.whenTrue, node.colonToken, " "); + write(":"); + var indentedAfterColon = indentIfOnDifferentLines(node, node.colonToken, node.whenFalse, " "); emit(node.whenFalse); + decreaseIndentIf(indentedBeforeColon, indentedAfterColon); + } + function decreaseIndentIf(value1, value2) { + if (value1) { + decreaseIndent(); + } + if (value2) { + decreaseIndent(); + } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 172) { + if (node && node.kind === 179) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -18514,12 +25660,12 @@ var ts; emitToken(14, node.pos); increaseIndent(); scopeEmitStart(node.parent); - if (node.kind === 199) { - ts.Debug.assert(node.parent.kind === 198); + if (node.kind === 206) { + ts.Debug.assert(node.parent.kind === 205); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 199) { + if (node.kind === 206) { emitTempDeclarations(true); } decreaseIndent(); @@ -18528,7 +25674,7 @@ var ts; scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 172) { + if (node.kind === 179) { write(" "); emit(node); } @@ -18540,11 +25686,11 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesized(node.expression, node.expression.kind === 159); + emitParenthesizedIf(node.expression, node.expression.kind === 163); write(";"); } function emitIfStatement(node) { - var endPos = emitToken(83, node.pos); + var endPos = emitToken(84, node.pos); write(" "); endPos = emitToken(16, endPos); emit(node.expression); @@ -18552,8 +25698,8 @@ var ts; emitEmbeddedStatement(node.thenStatement); if (node.elseStatement) { writeLine(); - emitToken(75, node.thenStatement.end); - if (node.elseStatement.kind === 176) { + emitToken(76, node.thenStatement.end); + if (node.elseStatement.kind === 183) { write(" "); emit(node.elseStatement); } @@ -18565,7 +25711,7 @@ var ts; function emitDoStatement(node) { write("do"); emitEmbeddedStatement(node.statement); - if (node.statement.kind === 172) { + if (node.statement.kind === 179) { write(" "); } else { @@ -18581,24 +25727,40 @@ var ts; write(")"); emitEmbeddedStatement(node.statement); } + function emitStartOfVariableDeclarationList(decl, startPos) { + var tokenKind = 98; + if (decl && languageVersion >= 2) { + if (ts.isLet(decl)) { + tokenKind = 105; + } + else if (ts.isConst(decl)) { + tokenKind = 70; + } + } + if (startPos !== undefined) { + emitToken(tokenKind, startPos); + } + else { + switch (tokenKind) { + case 98: + return write("var "); + case 105: + return write("let "); + case 70: + return write("const "); + } + } + } function emitForStatement(node) { - var endPos = emitToken(81, node.pos); + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer && node.initializer.kind === 192) { + if (node.initializer && node.initializer.kind === 199) { var variableDeclarationList = node.initializer; var declarations = variableDeclarationList.declarations; - if (declarations[0] && ts.isLet(declarations[0])) { - emitToken(103, endPos); - } - else if (declarations[0] && ts.isConst(declarations[0])) { - emitToken(69, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(declarations[0], endPos); write(" "); - emitCommaList(variableDeclarationList.declarations); + emitCommaList(declarations); } else if (node.initializer) { emit(node.initializer); @@ -18611,19 +25773,17 @@ var ts; emitEmbeddedStatement(node.statement); } function emitForInOrForOfStatement(node) { - var endPos = emitToken(81, node.pos); + if (languageVersion < 2 && node.kind === 188) { + return emitDownLevelForOfStatement(node); + } + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { var decl = variableDeclarationList.declarations[0]; - if (ts.isLet(decl)) { - emitToken(103, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(decl, endPos); write(" "); emit(decl); } @@ -18631,7 +25791,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 180) { + if (node.kind === 187) { write(" in "); } else { @@ -18641,13 +25801,113 @@ var ts; emitToken(17, node.expression.end); emitEmbeddedStatement(node.statement); } + function emitDownLevelForOfStatement(node) { + // The following ES6 code: + // + // for (let v of expr) { } + // + // should be emitted as + // + // for (let _i = 0, _a = expr; _i < _a.length; _i++) { + // let v = _a[_i]; + // } + // + // where _a and _i are temps emitted to capture the RHS and the counter, + // respectively. + // When the left hand side is an expression instead of a let declaration, + // the "let v" is not emitted. + // When the left hand side is a let/const, the v is renamed if there is + // another v in scope. + // Note that all assignments to the LHS are emitted in the body, including + // all destructuring. + // Note also that because an extra statement is needed to assign to the LHS, + // for-of bodies are always emitted as blocks. + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + var rhsIsIdentifier = node.expression.kind === 65; + var counter = createTempVariable(268435456); + var rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(0); + emitStart(node.expression); + write("var "); + emitNodeWithoutSourceMap(counter); + write(" = 0"); + emitEnd(node.expression); + if (!rhsIsIdentifier) { + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); + } + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write(" < "); + emitNodeWithoutSourceMap(rhsReference); + write(".length"); + emitEnd(node.initializer); + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write("++"); + emitEnd(node.initializer); + emitToken(17, node.expression.end); + write(" {"); + writeLine(); + increaseIndent(); + var rhsIterationValue = createElementAccessExpression(rhsReference, counter); + emitStart(node.initializer); + if (node.initializer.kind === 199) { + write("var "); + var variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length > 0) { + var declaration = variableDeclarationList.declarations[0]; + if (ts.isBindingPattern(declaration.name)) { + emitDestructuring(declaration, false, rhsIterationValue); + } + else { + emitNodeWithoutSourceMap(declaration); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + emitNodeWithoutSourceMap(createTempVariable(0)); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + var assignmentExpression = createBinaryExpression(node.initializer, 53, rhsIterationValue, false); + if (node.initializer.kind === 153 || node.initializer.kind === 154) { + emitDestructuring(assignmentExpression, true, undefined, node); + } + else { + emitNodeWithoutSourceMap(assignmentExpression); + } + } + emitEnd(node.initializer); + write(";"); + if (node.statement.kind === 179) { + emitLines(node.statement.statements); + } + else { + writeLine(); + emit(node.statement); + } + writeLine(); + decreaseIndent(); + write("}"); + } function emitBreakOrContinueStatement(node) { - emitToken(node.kind === 183 ? 65 : 70, node.pos); + emitToken(node.kind === 190 ? 66 : 71, node.pos); emitOptional(" ", node.label); write(";"); } function emitReturnStatement(node) { - emitToken(89, node.pos); + emitToken(90, node.pos); emitOptional(" ", node.expression); write(";"); } @@ -18658,13 +25918,16 @@ var ts; emitEmbeddedStatement(node.statement); } function emitSwitchStatement(node) { - var endPos = emitToken(91, node.pos); + var endPos = emitToken(92, node.pos); write(" "); emitToken(16, endPos); emit(node.expression); endPos = emitToken(17, node.expression.end); write(" "); - emitToken(14, endPos); + emitCaseBlock(node.caseBlock, endPos); + } + function emitCaseBlock(node, startPos) { + emitToken(14, startPos); increaseIndent(); emitLines(node.clauses); decreaseIndent(); @@ -18672,19 +25935,16 @@ var ts; emitToken(15, node.clauses.end); } function nodeStartPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function nodeEndPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, node2.end); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === ts.getLineOfLocalPosition(currentSourceFile, node2.end); } function nodeEndIsOnSameLineAsNodeStart(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 203) { + if (node.kind === 220) { write("case "); emit(node.expression); write(":"); @@ -18719,16 +25979,16 @@ var ts; } function emitCatchClause(node) { writeLine(); - var endPos = emitToken(67, node.pos); + var endPos = emitToken(68, node.pos); write(" "); emitToken(16, endPos); - emit(node.name); - emitToken(17, node.name.end); + emit(node.variableDeclaration); + emitToken(17, node.variableDeclaration ? node.variableDeclaration.end : endPos); write(" "); emitBlock(node.block); } function emitDebuggerStatement(node) { - emitToken(71, node.pos); + emitToken(72, node.pos); write(";"); } function emitLabelledStatement(node) { @@ -18739,33 +25999,83 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 198); + } while (node && node.kind !== 205); return node; } + function emitContainingModuleName(node) { + var container = getContainingModule(node); + write(container ? getGeneratedNameForNode(container) : "exports"); + } function emitModuleMemberName(node) { emitStart(node.name); if (ts.getCombinedNodeFlags(node) & 1) { var container = getContainingModule(node); - write(container ? resolver.getLocalNameOfContainer(container) : "exports"); - write("."); + if (container) { + write(getGeneratedNameForNode(container)); + write("."); + } + else if (languageVersion < 2) { + write("exports."); + } } - emitNode(node.name); + emitNodeWithoutSourceMap(node.name); emitEnd(node.name); } - function emitDestructuring(root, value) { + function createVoidZero() { + var zero = ts.createSynthesizedNode(7); + zero.text = "0"; + var result = ts.createSynthesizedNode(166); + result.expression = zero; + return result; + } + function emitExportMemberAssignment(node) { + if (node.flags & 1) { + writeLine(); + emitStart(node); + if (node.flags & 256) { + write("exports.default"); + } + else { + emitModuleMemberName(node); + } + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + } + function emitExportMemberAssignments(name) { + if (!exportEquals && exportSpecifiers && ts.hasProperty(exportSpecifiers, name.text)) { + for (var _a = 0, _b = exportSpecifiers[name.text]; _a < _b.length; _a++) { + var specifier = _b[_a]; + writeLine(); + emitStart(specifier.name); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier.name); + write(" = "); + emitExpressionIdentifier(name); + write(";"); + } + } + } + function emitDestructuring(root, isAssignmentExpressionStatement, value, lowestNonSynthesizedAncestor) { var emitCount = 0; - var isDeclaration = (root.kind === 191 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 126; - if (root.kind === 165) { + var isDeclaration = (root.kind === 198 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 129; + if (root.kind === 169) { emitAssignmentExpression(root); } else { + ts.Debug.assert(!isAssignmentExpressionStatement); emitBindingElement(root, value); } function emitAssignment(name, value) { if (emitCount++) { write(", "); } - if (name.parent && (name.parent.kind === 191 || name.parent.kind === 148)) { + renameNonTopLevelLetAndConst(name); + if (name.parent && (name.parent.kind === 198 || name.parent.kind === 152)) { emitModuleMemberName(name.parent); } else { @@ -18775,8 +26085,8 @@ var ts; emit(value); } function ensureIdentifier(expr) { - if (expr.kind !== 64) { - var identifier = createTempVariable(root); + if (expr.kind !== 65) { + var identifier = createTempVariable(0); if (!isDeclaration) { recordTempDeclaration(identifier); } @@ -18785,49 +26095,44 @@ var ts; } return expr; } - function createVoidZero() { - var zero = ts.createNode(7); - zero.text = "0"; - var result = ts.createNode(162); - result.expression = zero; - return result; - } function createDefaultValueCheck(value, defaultValue) { value = ensureIdentifier(value); - var equals = ts.createNode(165); + var equals = ts.createSynthesizedNode(169); equals.left = value; - equals.operatorToken = ts.createNode(30); + equals.operatorToken = ts.createSynthesizedNode(30); equals.right = createVoidZero(); - var cond = ts.createNode(166); - cond.condition = equals; - cond.whenTrue = defaultValue; - cond.whenFalse = value; + return createConditionalExpression(equals, defaultValue, value); + } + function createConditionalExpression(condition, whenTrue, whenFalse) { + var cond = ts.createSynthesizedNode(170); + cond.condition = condition; + cond.questionToken = ts.createSynthesizedNode(50); + cond.whenTrue = whenTrue; + cond.colonToken = ts.createSynthesizedNode(51); + cond.whenFalse = whenFalse; return cond; } function createNumericLiteral(value) { - var node = ts.createNode(7); + var node = ts.createSynthesizedNode(7); node.text = "" + value; return node; } function parenthesizeForAccess(expr) { - if (expr.kind === 64 || expr.kind === 151 || expr.kind === 152) { + if (expr.kind === 65 || expr.kind === 155 || expr.kind === 156) { return expr; } - var node = ts.createNode(157); + var node = ts.createSynthesizedNode(161); node.expression = expr; return node; } function createPropertyAccess(object, propName) { - if (propName.kind !== 64) { + if (propName.kind !== 65) { return createElementAccess(object, propName); } - var node = ts.createNode(151); - node.expression = parenthesizeForAccess(object); - node.name = propName; - return node; + return createPropertyAccessExpression(parenthesizeForAccess(object), propName); } function createElementAccess(object, index) { - var node = ts.createNode(152); + var node = ts.createSynthesizedNode(156); node.expression = parenthesizeForAccess(object); node.argumentExpression = index; return node; @@ -18837,9 +26142,9 @@ var ts; if (properties.length !== 1) { value = ensureIdentifier(value); } - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { + for (var _a = 0; _a < properties.length; _a++) { + var p = properties[_a]; + if (p.kind === 224 || p.kind === 225) { var propName = (p.name); emitDestructuringAssignment(p.initializer || propName, createPropertyAccess(value, propName)); } @@ -18852,8 +26157,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { emitDestructuringAssignment(e, createElementAccess(value, createNumericLiteral(i))); } else { @@ -18867,14 +26172,14 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 149) { + else if (target.kind === 153) { emitArrayLiteralAssignment(target, value); } else { @@ -18884,18 +26189,18 @@ var ts; function emitAssignmentExpression(root) { var target = root.left; var value = root.right; - if (root.parent.kind === 175) { + if (isAssignmentExpressionStatement) { emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write("("); } value = ensureIdentifier(value); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write(")"); } } @@ -18915,11 +26220,11 @@ var ts; } for (var i = 0; i < elements.length; i++) { var element = elements[i]; - if (pattern.kind === 146) { + if (pattern.kind === 150) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccess(value, propName)); } - else if (element.kind !== 170) { + else if (element.kind !== 175) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccess(value, createNumericLiteral(i))); } @@ -18941,7 +26246,7 @@ var ts; function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { if (languageVersion < 2) { - emitDestructuring(node); + emitDestructuring(node, false); } else { emit(node.name); @@ -18949,34 +26254,90 @@ var ts; } } else { + renameNonTopLevelLetAndConst(node.name); emitModuleMemberName(node); - emitOptional(" = ", node.initializer); + var initializer = node.initializer; + if (!initializer && languageVersion < 2) { + var isUninitializedLet = (resolver.getNodeCheckFlags(node) & 256) && (getCombinedFlagsForIdentifier(node.name) & 4096); + if (isUninitializedLet && node.parent.parent.kind !== 187 && node.parent.parent.kind !== 188) { + initializer = createVoidZero(); + } + } + emitOptional(" = ", initializer); } } + function emitExportVariableAssignments(node) { + if (node.kind === 175) { + return; + } + var name = node.name; + if (name.kind === 65) { + emitExportMemberAssignments(name); + } + else if (ts.isBindingPattern(name)) { + ts.forEach(name.elements, emitExportVariableAssignments); + } + } + function getCombinedFlagsForIdentifier(node) { + if (!node.parent || (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return 0; + } + return ts.getCombinedNodeFlags(node.parent); + } + function renameNonTopLevelLetAndConst(node) { + if (languageVersion >= 2 || ts.nodeIsSynthesized(node) || node.kind !== 65 || (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return; + } + var combinedFlags = getCombinedFlagsForIdentifier(node); + if (((combinedFlags & 12288) === 0) || combinedFlags & 1) { + return; + } + var list = ts.getAncestor(node, 199); + if (list.parent.kind === 180) { + var isSourceFileLevelBinding = list.parent.parent.kind === 227; + var isModuleLevelBinding = list.parent.parent.kind === 206; + var isFunctionLevelBinding = list.parent.parent.kind === 179 && ts.isFunctionLike(list.parent.parent.parent); + if (isSourceFileLevelBinding || isModuleLevelBinding || isFunctionLevelBinding) { + return; + } + } + var blockScopeContainer = ts.getEnclosingBlockScopeContainer(node); + var parent = blockScopeContainer.kind === 227 ? blockScopeContainer : blockScopeContainer.parent; + if (resolver.resolvesToSomeValue(parent, node.text)) { + var variableId = resolver.getBlockScopedVariableId(node); + if (!blockScopedVariableToGeneratedName) { + blockScopedVariableToGeneratedName = []; + } + var generatedName = makeUniqueName(node.text); + blockScopedVariableToGeneratedName[variableId] = generatedName; + } + } + function isES6ExportedDeclaration(node) { + return !!(node.flags & 1) && languageVersion >= 2 && node.parent.kind === 227; + } function emitVariableStatement(node) { if (!(node.flags & 1)) { - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } + emitStartOfVariableDeclarationList(node.declarationList); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + emitStartOfVariableDeclarationList(node.declarationList); } emitCommaList(node.declarationList.declarations); write(";"); + if (languageVersion < 2 && node.parent === currentSourceFile) { + ts.forEach(node.declarationList.declarations, emitExportVariableAssignments); + } } function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name = createTempVariable(node); + var name_16 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name); - emit(name); + tempParameters.push(name_16); + emit(name_16); } else { emit(node.name); @@ -18997,7 +26358,7 @@ var ts; if (ts.isBindingPattern(p.name)) { writeLine(); write("var "); - emitDestructuring(p, tempParameters[tempIndex]); + emitDestructuring(p, false, tempParameters[tempIndex]); write(";"); tempIndex++; } @@ -19005,14 +26366,14 @@ var ts; writeLine(); emitStart(p); write("if ("); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" === void 0)"); emitEnd(p); write(" { "); emitStart(p); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" = "); - emitNode(p.initializer); + emitNodeWithoutSourceMap(p.initializer); emitEnd(p); write("; }"); } @@ -19023,12 +26384,12 @@ var ts; if (languageVersion < 2 && ts.hasRestParameters(node)) { var restIndex = node.parameters.length - 1; var restParam = node.parameters[restIndex]; - var tempName = createTempVariable(node, true).text; + var tempName = createTempVariable(268435456).text; writeLine(); emitLeadingComments(restParam); emitStart(restParam); write("var "); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write(" = [];"); emitEnd(restParam); emitTrailingComments(restParam); @@ -19049,7 +26410,7 @@ var ts; increaseIndent(); writeLine(); emitStart(restParam); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write("[" + tempName + " - " + restIndex + "] = arguments[" + tempName + "];"); emitEnd(restParam); decreaseIndent(); @@ -19058,28 +26419,53 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 132 ? "get " : "set "); - emit(node.name); + write(node.kind === 136 ? "get " : "set "); + emit(node.name, false); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 159 && languageVersion >= 2; + return node.kind === 163 && languageVersion >= 2; + } + function emitDeclarationName(node) { + if (node.name) { + emitNodeWithoutSourceMap(node.name); + } + else { + write(getGeneratedNameForNode(node)); + } + } + function shouldEmitFunctionName(node) { + if (node.kind === 162) { + return !!node.name; + } + if (node.kind === 200) { + return !!node.name || languageVersion < 2; + } } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - if (node.kind !== 130 && node.kind !== 129) { + if (node.kind !== 134 && node.kind !== 133) { emitLeadingComments(node); } if (!shouldEmitAsArrowFunction(node)) { + if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } write("function "); } - if (node.kind === 193 || (node.kind === 158 && node.name)) { - emit(node.name); + if (shouldEmitFunctionName(node)) { + emitDeclarationName(node); } emitSignatureAndBody(node); - if (node.kind !== 130 && node.kind !== 129) { + if (languageVersion < 2 && node.kind === 200 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); + } + if (node.kind !== 134 && node.kind !== 133) { emitTrailingComments(node); } } @@ -19110,10 +26496,10 @@ var ts; emitSignatureParameters(node); } function emitSignatureAndBody(node) { - var saveTempCount = tempCount; + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; var saveTempParameters = tempParameters; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; tempParameters = undefined; if (shouldEmitAsArrowFunction(node)) { @@ -19123,25 +26509,19 @@ var ts; else { emitSignatureParameters(node); } - if (isSingleLineEmptyBlock(node.body) || !node.body) { + if (!node.body) { write(" { }"); } - else if (node.body.kind === 172) { + else if (node.body.kind === 179) { emitBlockFunctionBody(node, node.body); } else { emitExpressionFunctionBody(node, node.body); } - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); - write(";"); + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); } - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; tempParameters = saveTempParameters; } @@ -19151,6 +26531,18 @@ var ts; emitRestParameter(node); } function emitExpressionFunctionBody(node, body) { + if (languageVersion < 2) { + emitDownLevelExpressionFunctionBody(node, body); + return; + } + write(" "); + var current = body; + while (current.kind === 160) { + current = current.expression; + } + emitParenthesizedIf(body, current.kind === 154); + } + function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); scopeEmitStart(node); increaseIndent(); @@ -19163,7 +26555,7 @@ var ts; write(" "); emitStart(body); write("return "); - emitNode(body, true); + emit(body); emitEnd(body); write(";"); emitTempDeclarations(false); @@ -19174,7 +26566,7 @@ var ts; writeLine(); emitLeadingComments(node.body); write("return "); - emit(node.body, true); + emit(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(true); @@ -19189,17 +26581,18 @@ var ts; function emitBlockFunctionBody(node, body) { write(" {"); scopeEmitStart(node); - var outPos = writer.getTextPos(); + var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedComments(body.statements); var startIndex = emitDirectivePrologues(body.statements, true); emitFunctionBodyPreamble(node); decreaseIndent(); - var preambleEmitted = writer.getTextPos() !== outPos; + var preambleEmitted = writer.getTextPos() !== initialTextPos; if (!preambleEmitted && nodeEndIsOnSameLineAsNodeStart(body, body)) { - for (var i = 0, n = body.statements.length; i < n; i++) { + for (var _a = 0, _b = body.statements; _a < _b.length; _a++) { + var statement = _b[_a]; write(" "); - emit(body.statements[i]); + emit(statement); } emitTempDeclarations(false); write(" "); @@ -19219,11 +26612,11 @@ var ts; function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 175) { + if (statement && statement.kind === 182) { var expr = statement.expression; - if (expr && expr.kind === 153) { + if (expr && expr.kind === 157) { var func = expr.expression; - if (func && func.kind === 90) { + if (func && func.kind === 91) { return statement; } } @@ -19237,7 +26630,7 @@ var ts; emitStart(param); emitStart(param.name); write("this."); - emitNode(param.name); + emitNodeWithoutSourceMap(param.name); emitEnd(param.name); write(" = "); emit(param.name); @@ -19249,26 +26642,26 @@ var ts; function emitMemberAccessForPropertyName(memberName) { if (memberName.kind === 8 || memberName.kind === 7) { write("["); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); write("]"); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { emitComputedPropertyName(memberName); } else { write("."); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); } } function emitMemberAssignments(node, staticFlag) { ts.forEach(node.members, function (member) { - if (member.kind === 128 && (member.flags & 128) === staticFlag && member.initializer) { + if (member.kind === 132 && (member.flags & 128) === staticFlag && member.initializer) { writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); if (staticFlag) { - emitNode(node.name); + emitDeclarationName(node); } else { write("this"); @@ -19283,20 +26676,21 @@ var ts; } }); } - function emitMemberFunctions(node) { + function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 130 || node.kind === 129) { + if (member.kind === 178) { + writeLine(); + write(";"); + } + else if (member.kind === 134 || node.kind === 133) { if (!member.body) { - return emitPinnedOrTripleSlashComments(member); + return emitOnlyPinnedOrTripleSlashComments(member); } writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); emitMemberAccessForPropertyName(member.name); emitEnd(member.name); write(" = "); @@ -19307,17 +26701,14 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 132 || member.kind === 133) { - var accessors = getAllAccessorDeclarations(node.members, member); + else if (member.kind === 136 || member.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); emitStart(member); write("Object.defineProperty("); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); emitEnd(member.name); @@ -19357,36 +26748,265 @@ var ts; } }); } + function emitMemberFunctionsForES6AndHigher(node) { + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if ((member.kind === 134 || node.kind === 133) && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + else if (member.kind === 134 || member.kind === 136 || member.kind === 137) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & 128) { + write("static "); + } + if (member.kind === 136) { + write("get "); + } + else if (member.kind === 137) { + write("set "); + } + emit(member.name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + else if (member.kind === 178) { + writeLine(); + write(";"); + } + } + } + function emitConstructor(node, baseTypeElement) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + var hasInstancePropertyWithInitializer = false; + ts.forEach(node.members, function (member) { + if (member.kind === 135 && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + if (member.kind === 132 && member.initializer && (member.flags & 128) === 0) { + hasInstancePropertyWithInitializer = true; + } + }); + var ctor = ts.getFirstConstructorWithBody(node); + if (languageVersion >= 2 && !ctor && !hasInstancePropertyWithInitializer) { + return; + } + if (ctor) { + emitLeadingComments(ctor); + } + emitStart(ctor || node); + if (languageVersion < 2) { + write("function "); + emitDeclarationName(node); + emitSignatureParameters(ctor); + } + else { + write("constructor"); + if (ctor) { + emitSignatureParameters(ctor); + } + else { + if (baseTypeElement) { + write("(...args)"); + } + else { + write("()"); + } + } + } + write(" {"); + scopeEmitStart(node, "constructor"); + increaseIndent(); + if (ctor) { + emitDetachedComments(ctor.body.statements); + } + emitCaptureThisForNodeIfNecessary(node); + if (ctor) { + emitDefaultValueAssignments(ctor); + emitRestParameter(ctor); + if (baseTypeElement) { + var superCall = findInitialSuperCall(ctor); + if (superCall) { + writeLine(); + emit(superCall); + } + } + emitParameterPropertyAssignments(ctor); + } + else { + if (baseTypeElement) { + writeLine(); + emitStart(baseTypeElement); + if (languageVersion < 2) { + write("_super.apply(this, arguments);"); + } + else { + write("super(...args);"); + } + emitEnd(baseTypeElement); + } + } + emitMemberAssignments(node, 0); + if (ctor) { + var statements = ctor.body.statements; + if (superCall) { + statements = statements.slice(1); + } + emitLines(statements); + } + emitTempDeclarations(true); + writeLine(); + if (ctor) { + emitLeadingCommentsOfPosition(ctor.body.statements.end); + } + decreaseIndent(); + emitToken(15, ctor ? ctor.body.statements.end : node.members.end); + scopeEmitEnd(); + emitEnd(ctor || node); + if (ctor) { + emitTrailingComments(ctor); + } + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + function emitClassExpression(node) { + return emitClassLikeDeclaration(node); + } function emitClassDeclaration(node) { - write("var "); - emit(node.name); - write(" = (function ("); - var baseTypeNode = ts.getClassBaseTypeNode(node); + return emitClassLikeDeclaration(node); + } + function emitClassLikeDeclaration(node) { + if (languageVersion < 2) { + emitClassLikeDeclarationBelowES6(node); + } + else { + emitClassLikeDeclarationForES6AndHigher(node); + } + } + function emitClassLikeDeclarationForES6AndHigher(node) { + var thisNodeIsDecorated = ts.nodeIsDecorated(node); + if (node.kind === 201) { + if (thisNodeIsDecorated) { + if (isES6ExportedDeclaration(node) && !(node.flags & 256)) { + write("export "); + } + write("let "); + emitDeclarationName(node); + write(" = "); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } + } + write("class"); + if ((node.name || !(node.flags & 256)) && !thisNodeIsDecorated) { + write(" "); + emitDeclarationName(node); + } + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write(" extends "); + emit(baseTypeNode.expression); + } + write(" {"); + increaseIndent(); + scopeEmitStart(node); + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES6AndHigher(node); + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + if (thisNodeIsDecorated) { + write(";"); + if (node.name) { + writeLine(); + write("Object.defineProperty("); + emitDeclarationName(node); + write(", \"name\", { value: \""); + emitDeclarationName(node); + write("\", configurable: true });"); + writeLine(); + } + } + writeLine(); + emitMemberAssignments(node, 128); + emitDecoratorsOfClass(node); + if (!isES6ExportedDeclaration(node) && (node.flags & 1)) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + else if (isES6ExportedDeclaration(node) && (node.flags & 256) && thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + function emitClassLikeDeclarationBelowES6(node) { + if (node.kind === 201) { + write("var "); + emitDeclarationName(node); + write(" = "); + } + write("(function ("); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { write("_super"); } write(") {"); + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + var saveComputedPropertyNamesToGeneratedNames = computedPropertyNamesToGeneratedNames; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); write("__extends("); - emit(node.name); + emitDeclarationName(node); write(", _super);"); emitEnd(baseTypeNode); } writeLine(); - emitConstructorOfClass(); - emitMemberFunctions(node); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES5AndLower(node); emitMemberAssignments(node, 128); writeLine(); - function emitClassReturnStatement() { + emitDecoratorsOfClass(node); + writeLine(); + emitToken(15, node.members.end, function () { write("return "); - emitNode(node.name); - } - emitToken(15, node.members.end, emitClassReturnStatement); + emitDeclarationName(node); + }); write(";"); + emitTempDeclarations(true); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + computedPropertyNamesToGeneratedNames = saveComputedPropertyNamesToGeneratedNames; decreaseIndent(); writeLine(); emitToken(15, node.members.end); @@ -19394,103 +27014,170 @@ var ts; emitStart(node); write(")("); if (baseTypeNode) { - emit(baseTypeNode.typeName); + emit(baseTypeNode.expression); } - write(");"); - emitEnd(node); - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); + write(")"); + if (node.kind === 201) { write(";"); } - function emitConstructorOfClass() { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - var saveTempParameters = tempParameters; - tempCount = 0; - tempVariables = undefined; - tempParameters = undefined; - ts.forEach(node.members, function (member) { - if (member.kind === 131 && !member.body) { - emitPinnedOrTripleSlashComments(member); - } - }); - var ctor = getFirstConstructorWithBody(node); - if (ctor) { - emitLeadingComments(ctor); - } - emitStart(ctor || node); - write("function "); - emit(node.name); - emitSignatureParameters(ctor); - write(" {"); - scopeEmitStart(node, "constructor"); - increaseIndent(); - if (ctor) { - emitDetachedComments(ctor.body.statements); - } - emitCaptureThisForNodeIfNecessary(node); - if (ctor) { - emitDefaultValueAssignments(ctor); - emitRestParameter(ctor); - if (baseTypeNode) { - var superCall = findInitialSuperCall(ctor); - if (superCall) { - writeLine(); - emit(superCall); - } - } - emitParameterPropertyAssignments(ctor); - } - else { - if (baseTypeNode) { - writeLine(); - emitStart(baseTypeNode); - write("_super.apply(this, arguments);"); - emitEnd(baseTypeNode); - } - } - emitMemberAssignments(node, 0); - if (ctor) { - var statements = ctor.body.statements; - if (superCall) - statements = statements.slice(1); - emitLines(statements); - } - emitTempDeclarations(true); - writeLine(); - if (ctor) { - emitLeadingCommentsOfPosition(ctor.body.statements.end); - } - decreaseIndent(); - emitToken(15, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); - emitEnd(ctor || node); - if (ctor) { - emitTrailingComments(ctor); - } - tempCount = saveTempCount; - tempVariables = saveTempVariables; - tempParameters = saveTempParameters; + emitEnd(node); + if (node.kind === 201) { + emitExportMemberAssignment(node); + } + if (languageVersion < 2 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); } } + function emitClassMemberPrefix(node, member) { + emitDeclarationName(node); + if (!(member.flags & 128)) { + write(".prototype"); + } + } + function emitDecoratorsOfClass(node) { + emitDecoratorsOfMembers(node, 0); + emitDecoratorsOfMembers(node, 128); + emitDecoratorsOfConstructor(node); + } + function emitDecoratorsOfConstructor(node) { + var constructor = ts.getFirstConstructorWithBody(node); + if (constructor) { + emitDecoratorsOfParameters(node, constructor); + } + if (!ts.nodeIsDecorated(node)) { + return; + } + writeLine(); + emitStart(node); + emitDeclarationName(node); + write(" = "); + emitDecorateStart(node.decorators); + emitDeclarationName(node); + write(");"); + emitEnd(node); + writeLine(); + } + function emitDecoratorsOfMembers(node, staticFlag) { + ts.forEach(node.members, function (member) { + if ((member.flags & 128) !== staticFlag) { + return; + } + var decorators; + switch (member.kind) { + case 134: + emitDecoratorsOfParameters(node, member); + decorators = member.decorators; + break; + case 136: + case 137: + var accessors = ts.getAllAccessorDeclarations(node.members, member); + if (member !== accessors.firstAccessor) { + return; + } + if (accessors.setAccessor) { + emitDecoratorsOfParameters(node, accessors.setAccessor); + } + decorators = accessors.firstAccessor.decorators; + if (!decorators && accessors.secondAccessor) { + decorators = accessors.secondAccessor.decorators; + } + break; + case 132: + decorators = member.decorators; + break; + default: + return; + } + if (!decorators) { + return; + } + writeLine(); + emitStart(member); + if (member.kind !== 132) { + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", "); + } + emitDecorateStart(decorators); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + if (member.kind !== 132) { + write(", Object.getOwnPropertyDescriptor("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write("))"); + } + write(");"); + emitEnd(member); + writeLine(); + }); + } + function emitDecoratorsOfParameters(node, member) { + ts.forEach(member.parameters, function (parameter, parameterIndex) { + if (!ts.nodeIsDecorated(parameter)) { + return; + } + writeLine(); + emitStart(parameter); + emitDecorateStart(parameter.decorators); + emitStart(parameter.name); + if (member.kind === 135) { + emitDeclarationName(node); + write(", void 0"); + } + else { + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + } + write(", "); + write(String(parameterIndex)); + emitEnd(parameter.name); + write(");"); + emitEnd(parameter); + writeLine(); + }); + } + function emitDecorateStart(decorators) { + write("__decorate(["); + var decoratorCount = decorators.length; + for (var i = 0; i < decoratorCount; i++) { + if (i > 0) { + write(", "); + } + var decorator = decorators[i]; + emitStart(decorator); + emit(decorator.expression); + emitEnd(decorator); + } + write("], "); + } function emitInterfaceDeclaration(node) { - emitPinnedOrTripleSlashComments(node); + emitOnlyPinnedOrTripleSlashComments(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); - return !isConstEnum || compilerOptions.preserveConstEnums; + return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation; } function emitEnumDeclaration(node) { if (!shouldEmitEnumDeclaration(node)) { return; } - if (!(node.flags & 1)) { + if (!(node.flags & 1) || isES6ExportedDeclaration(node)) { emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); emitEnd(node); @@ -19500,7 +27187,7 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") {"); increaseIndent(); @@ -19516,7 +27203,7 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (node.flags & 1) { + if (!isES6ExportedDeclaration(node) && node.flags & 1) { writeLine(); emitStart(node); write("var "); @@ -19526,13 +27213,16 @@ var ts; emitEnd(node); write(";"); } + if (languageVersion < 2 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } } function emitEnumMember(node) { var enumParent = node.parent; emitStart(node); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); emitExpressionForPropertyName(node.name); write("] = "); @@ -19543,14 +27233,12 @@ var ts; write(";"); } function writeEnumMemberDeclarationValue(member) { - if (!member.initializer || ts.isConst(member.parent)) { - var value = resolver.getConstantValue(member); - if (value !== undefined) { - write(value.toString()); - return; - } + var value = resolver.getConstantValue(member); + if (value !== undefined) { + write(value.toString()); + return; } - if (member.initializer) { + else if (member.initializer) { emit(member.initializer); } else { @@ -19558,20 +27246,23 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 198) { + if (moduleDeclaration.body.kind === 205) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } } function shouldEmitModuleDeclaration(node) { - return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums); + return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation); } function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); write(";"); @@ -19580,16 +27271,16 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 199) { - var saveTempCount = tempCount; + if (node.body.kind === 206) { + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; emit(node.body); - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; } else { @@ -19606,7 +27297,7 @@ var ts; scopeEmitEnd(); } write(")("); - if (node.flags & 1) { + if ((node.flags & 1) && !isES6ExportedDeclaration(node)) { emit(node.name); write(" = "); } @@ -19615,66 +27306,310 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); + if (!isES6ExportedDeclaration(node) && node.name.kind === 65 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } + } + function emitRequire(moduleName) { + if (moduleName.kind === 8) { + write("require("); + emitStart(moduleName); + emitLiteral(moduleName); + emitEnd(moduleName); + emitToken(17, moduleName.end); + } + else { + write("require()"); + } + } + function getNamespaceDeclarationNode(node) { + if (node.kind === 208) { + return node; + } + var importClause = node.importClause; + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 211) { + return importClause.namedBindings; + } + } + function isDefaultImport(node) { + return node.kind === 209 && node.importClause && !!node.importClause.name; + } + function emitExportImportAssignments(node) { + if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { + emitExportMemberAssignments(node.name); + } + ts.forEachChild(node, emitExportImportAssignments); } function emitImportDeclaration(node) { - var emitImportDeclaration = resolver.isReferencedImportDeclaration(node); - if (!emitImportDeclaration) { - emitImportDeclaration = !ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportWithEntityName(node); + if (languageVersion < 2) { + return emitExternalImportDeclaration(node); } - if (emitImportDeclaration) { - if (ts.isExternalModuleImportDeclaration(node) && node.parent.kind === 210 && compilerOptions.module === 2) { - if (node.flags & 1) { - writeLine(); - emitLeadingComments(node); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - write(";"); - emitEnd(node); - emitTrailingComments(node); + if (node.importClause) { + var shouldEmitDefaultBindings = resolver.isReferencedAliasDeclaration(node.importClause); + var shouldEmitNamedBindings = node.importClause.namedBindings && resolver.isReferencedAliasDeclaration(node.importClause.namedBindings, true); + if (shouldEmitDefaultBindings || shouldEmitNamedBindings) { + write("import "); + emitStart(node.importClause); + if (shouldEmitDefaultBindings) { + emit(node.importClause.name); + if (shouldEmitNamedBindings) { + write(", "); + } } + if (shouldEmitNamedBindings) { + emitLeadingComments(node.importClause.namedBindings); + emitStart(node.importClause.namedBindings); + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + emit(node.importClause.namedBindings.name); + } + else { + write("{ "); + emitExportOrImportSpecifierList(node.importClause.namedBindings.elements, resolver.isReferencedAliasDeclaration); + write(" }"); + } + emitEnd(node.importClause.namedBindings); + emitTrailingComments(node.importClause.namedBindings); + } + emitEnd(node.importClause); + write(" from "); + emit(node.moduleSpecifier); + write(";"); } - else { - writeLine(); + } + else { + write("import "); + emit(node.moduleSpecifier); + write(";"); + } + } + function emitExternalImportDeclaration(node) { + if (ts.contains(externalImports, node)) { + var isExportedImport = node.kind === 208 && (node.flags & 1) !== 0; + var namespaceDeclaration = getNamespaceDeclarationNode(node); + if (compilerOptions.module !== 2) { emitLeadingComments(node); emitStart(node); - if (!(node.flags & 1)) - write("var "); - emitModuleMemberName(node); - write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { - emit(node.moduleReference); + if (namespaceDeclaration && !isDefaultImport(node)) { + if (!isExportedImport) + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); } else { - var literal = ts.getExternalModuleImportDeclarationExpression(node); - write("require("); - emitStart(literal); - emitLiteral(literal); - emitEnd(literal); - emitToken(17, literal.end); + var isNakedImport = 209 && !node.importClause; + if (!isNakedImport) { + write("var "); + write(getGeneratedNameForNode(node)); + write(" = "); + } + } + emitRequire(ts.getExternalModuleName(node)); + if (namespaceDeclaration && isDefaultImport(node)) { + write(", "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); } write(";"); emitEnd(node); + emitExportImportAssignments(node); emitTrailingComments(node); } + else { + if (isExportedImport) { + emitModuleMemberName(namespaceDeclaration); + write(" = "); + emit(namespaceDeclaration.name); + write(";"); + } + else if (namespaceDeclaration && isDefaultImport(node)) { + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + write(";"); + } + emitExportImportAssignments(node); + } } } - function getExternalImportDeclarations(node) { - var result = []; - ts.forEach(node.statements, function (statement) { - if (ts.isExternalModuleImportDeclaration(statement) && resolver.isReferencedImportDeclaration(statement)) { - result.push(statement); + function emitImportEqualsDeclaration(node) { + if (ts.isExternalModuleImportEqualsDeclaration(node)) { + emitExternalImportDeclaration(node); + return; + } + if (resolver.isReferencedAliasDeclaration(node) || (!ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node))) { + emitLeadingComments(node); + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + write("var "); } - }); - return result; + else if (!(node.flags & 1)) { + write("var "); + } + emitModuleMemberName(node); + write(" = "); + emit(node.moduleReference); + write(";"); + emitEnd(node); + emitExportImportAssignments(node); + emitTrailingComments(node); + } } - function getFirstExportAssignment(sourceFile) { - return ts.forEach(sourceFile.statements, function (node) { - if (node.kind === 201) { - return node; + function emitExportDeclaration(node) { + if (languageVersion < 2) { + if (node.moduleSpecifier && (!node.exportClause || resolver.isValueAliasDeclaration(node))) { + emitStart(node); + var generatedName = getGeneratedNameForNode(node); + if (node.exportClause) { + if (compilerOptions.module !== 2) { + write("var "); + write(generatedName); + write(" = "); + emitRequire(ts.getExternalModuleName(node)); + write(";"); + } + for (var _a = 0, _b = node.exportClause.elements; _a < _b.length; _a++) { + var specifier = _b[_a]; + if (resolver.isValueAliasDeclaration(specifier)) { + writeLine(); + emitStart(specifier); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + write(" = "); + write(generatedName); + write("."); + emitNodeWithoutSourceMap(specifier.propertyName || specifier.name); + write(";"); + emitEnd(specifier); + } + } + } + else { + writeLine(); + write("__export("); + if (compilerOptions.module !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); + } + emitEnd(node); } - }); + } + else { + if (!node.exportClause || resolver.isValueAliasDeclaration(node)) { + emitStart(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitExportOrImportSpecifierList(node.exportClause.elements, resolver.isValueAliasDeclaration); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + emitNodeWithoutSourceMap(node.moduleSpecifier); + } + write(";"); + emitEnd(node); + } + } + } + function emitExportOrImportSpecifierList(specifiers, shouldEmit) { + ts.Debug.assert(languageVersion >= 2); + var needsComma = false; + for (var _a = 0; _a < specifiers.length; _a++) { + var specifier = specifiers[_a]; + if (shouldEmit(specifier)) { + if (needsComma) { + write(", "); + } + emitStart(specifier); + if (specifier.propertyName) { + emitNodeWithoutSourceMap(specifier.propertyName); + write(" as "); + } + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier); + needsComma = true; + } + } + } + function emitExportAssignment(node) { + if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { + if (languageVersion >= 2) { + writeLine(); + emitStart(node); + write("export default "); + var expression = node.expression; + emit(expression); + if (expression.kind !== 200 && expression.kind !== 201) { + write(";"); + } + emitEnd(node); + } + else { + writeLine(); + emitStart(node); + emitContainingModuleName(node); + write(".default = "); + emit(node.expression); + write(";"); + emitEnd(node); + } + } + } + function collectExternalModuleInfo(sourceFile) { + externalImports = []; + exportSpecifiers = {}; + exportEquals = undefined; + hasExportStars = false; + for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { + var node = _b[_a]; + switch (node.kind) { + case 209: + if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, true)) { + externalImports.push(node); + } + break; + case 208: + if (node.moduleReference.kind === 219 && resolver.isReferencedAliasDeclaration(node)) { + externalImports.push(node); + } + break; + case 215: + if (node.moduleSpecifier) { + if (!node.exportClause) { + externalImports.push(node); + hasExportStars = true; + } + else if (resolver.isValueAliasDeclaration(node)) { + externalImports.push(node); + } + } + else { + for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { + var specifier = _d[_c]; + var name_17 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_17] || (exportSpecifiers[name_17] = [])).push(specifier); + } + } + break; + case 214: + if (node.isExportEquals && !exportEquals) { + exportEquals = node; + } + break; + } + } } function sortAMDModules(amdModules) { return amdModules.sort(function (moduleA, moduleB) { @@ -19689,8 +27624,20 @@ var ts; } }); } + function emitExportStarHelper() { + if (hasExportStars) { + writeLine(); + write("function __export(m) {"); + increaseIndent(); + writeLine(); + write("for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];"); + decreaseIndent(); + writeLine(); + write("}"); + } + } function emitAMDModule(node, startIndex) { - var imports = getExternalImportDeclarations(node); + collectExternalModuleInfo(node); writeLine(); write("define("); sortAMDModules(node.amdDependencies); @@ -19698,62 +27645,78 @@ var ts; write("\"" + node.amdModuleName + "\", "); } write("[\"require\", \"exports\""); - ts.forEach(imports, function (imp) { + for (var _a = 0; _a < externalImports.length; _a++) { + var importNode = externalImports[_a]; write(", "); - emitLiteral(ts.getExternalModuleImportDeclarationExpression(imp)); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var moduleName = ts.getExternalModuleName(importNode); + if (moduleName.kind === 8) { + emitLiteral(moduleName); + } + else { + write("\"\""); + } + } + for (var _b = 0, _c = node.amdDependencies; _b < _c.length; _b++) { + var amdDependency = _c[_b]; var text = "\"" + amdDependency.path + "\""; write(", "); write(text); - }); + } write("], function (require, exports"); - ts.forEach(imports, function (imp) { + for (var _d = 0; _d < externalImports.length; _d++) { + var importNode = externalImports[_d]; write(", "); - emit(imp.name); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var namespaceDeclaration = getNamespaceDeclarationNode(importNode); + if (namespaceDeclaration && !isDefaultImport(importNode)) { + emit(namespaceDeclaration.name); + } + else { + write(getGeneratedNameForNode(importNode)); + } + } + for (var _e = 0, _f = node.amdDependencies; _e < _f.length; _e++) { + var amdDependency = _f[_e]; if (amdDependency.name) { write(", "); write(amdDependency.name); } - }); + } write(") {"); increaseIndent(); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { - writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("return "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); - write(";"); - emitEnd(exportAssignment); - } + emitExportEquals(true); decreaseIndent(); writeLine(); write("});"); } function emitCommonJSModule(node, startIndex) { + collectExternalModuleInfo(node); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { + emitExportEquals(false); + } + function emitES6Module(node, startIndex) { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + } + function emitExportEquals(emitAsReturn) { + if (exportEquals && resolver.isValueAliasDeclaration(exportEquals)) { writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("module.exports = "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); + emitStart(exportEquals); + write(emitAsReturn ? "return " : "module.exports = "); + emit(exportEquals.expression); write(";"); - emitEnd(exportAssignment); + emitEnd(exportEquals); } } function emitDirectivePrologues(statements, startWithNewLine) { @@ -19770,12 +27733,21 @@ var ts; } return statements.length; } - function emitSourceFile(node) { - currentSourceFile = node; + function writeHelper(text) { + var lines = text.split(/\r\n|\r|\n/g); + for (var i = 0; i < lines.length; ++i) { + var line = lines[i]; + if (line.length) { + writeLine(); + write(line); + } + } + } + function emitSourceFileNode(node) { writeLine(); emitDetachedComments(node); var startIndex = emitDirectivePrologues(node.statements, false); - if (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8) { + if ((languageVersion < 2) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8)) { writeLine(); write("var __extends = this.__extends || function (d, b) {"); increaseIndent(); @@ -19792,8 +27764,15 @@ var ts; write("};"); extendsEmitted = true; } + if (!decorateEmitted && resolver.getNodeCheckFlags(node) & 512) { + writeHelper("\nvar __decorate = this.__decorate || function (decorators, target, key, value) {\n var kind = typeof (arguments.length == 2 ? value = target : value);\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n switch (kind) {\n case \"function\": value = decorator(value) || value; break;\n case \"number\": decorator(target, key, value); break;\n case \"undefined\": decorator(target, key); break;\n case \"object\": value = decorator(target, key, value) || value; break;\n }\n }\n return value;\n};"); + decorateEmitted = true; + } if (ts.isExternalModule(node)) { - if (compilerOptions.module === 2) { + if (languageVersion >= 2) { + emitES6Module(node, startIndex); + } + else if (compilerOptions.module === 2) { emitAMDModule(node, startIndex); } else { @@ -19801,64 +27780,73 @@ var ts; } } else { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); } emitLeadingComments(node.endOfFileToken); } - function emitNode(node, disableComments) { + function emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers) { if (!node) { return; } if (node.flags & 2) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - var emitComments = !disableComments && shouldEmitLeadingAndTrailingComments(node); + var emitComments = shouldEmitLeadingAndTrailingComments(node); if (emitComments) { emitLeadingComments(node); } - emitJavaScriptWorker(node); + emitJavaScriptWorker(node, allowGeneratedIdentifiers); if (emitComments) { emitTrailingComments(node); } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 195: - case 193: + case 202: case 200: - case 196: - case 201: + case 209: + case 208: + case 203: + case 214: return false; - case 198: + case 205: return shouldEmitModuleDeclaration(node); - case 197: + case 204: return shouldEmitEnumDeclaration(node); } + if (node.kind !== 179 && node.parent && node.parent.kind === 163 && node.parent.body === node && compilerOptions.target <= 1) { + return false; + } return true; } - function emitJavaScriptWorker(node) { + function emitJavaScriptWorker(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers === void 0) { allowGeneratedIdentifiers = true; } switch (node.kind) { - case 64: - return emitIdentifier(node); - case 126: - return emitParameter(node); - case 130: + case 65: + return emitIdentifier(node, allowGeneratedIdentifiers); case 129: - return emitMethod(node); - case 132: + return emitParameter(node); + case 134: case 133: + return emitMethod(node); + case 136: + case 137: return emitAccessor(node); - case 92: + case 93: return emitThis(node); - case 90: + case 91: return emitSuper(node); - case 88: + case 89: return write("null"); - case 94: + case 95: return write("true"); - case 79: + case 80: return write("false"); case 7: case 8: @@ -19868,122 +27856,130 @@ var ts; case 12: case 13: return emitLiteral(node); - case 167: - return emitTemplateExpression(node); case 171: - return emitTemplateSpan(node); - case 123: - return emitQualifiedName(node); - case 146: - return emitObjectBindingPattern(node); - case 147: - return emitArrayBindingPattern(node); - case 148: - return emitBindingElement(node); - case 149: - return emitArrayLiteral(node); - case 150: - return emitObjectLiteral(node); - case 207: - return emitPropertyAssignment(node); - case 208: - return emitShorthandPropertyAssignment(node); - case 124: - return emitComputedPropertyName(node); - case 151: - return emitPropertyAccess(node); - case 152: - return emitIndexedAccess(node); - case 153: - return emitCallExpression(node); - case 154: - return emitNewExpression(node); - case 155: - return emitTaggedTemplateExpression(node); - case 156: - return emit(node.expression); - case 157: - return emitParenExpression(node); - case 193: - case 158: - case 159: - return emitFunctionDeclaration(node); - case 160: - return emitDeleteExpression(node); - case 161: - return emitTypeOfExpression(node); - case 162: - return emitVoidExpression(node); - case 163: - return emitPrefixUnaryExpression(node); - case 164: - return emitPostfixUnaryExpression(node); - case 165: - return emitBinaryExpression(node); - case 166: - return emitConditionalExpression(node); - case 169: - return emitSpreadElementExpression(node); - case 170: - return; - case 172: - case 199: - return emitBlock(node); - case 173: - return emitVariableStatement(node); - case 174: - return write(";"); - case 175: - return emitExpressionStatement(node); + return emitTemplateExpression(node); case 176: - return emitIfStatement(node); - case 177: - return emitDoStatement(node); - case 178: - return emitWhileStatement(node); - case 179: - return emitForStatement(node); - case 181: - case 180: - return emitForInOrForOfStatement(node); - case 182: - case 183: - return emitBreakOrContinueStatement(node); - case 184: - return emitReturnStatement(node); - case 185: - return emitWithStatement(node); - case 186: - return emitSwitchStatement(node); - case 203: - case 204: - return emitCaseOrDefaultClause(node); - case 187: - return emitLabelledStatement(node); - case 188: - return emitThrowStatement(node); - case 189: - return emitTryStatement(node); - case 206: - return emitCatchClause(node); - case 190: - return emitDebuggerStatement(node); - case 191: - return emitVariableDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 209: - return emitEnumMember(node); - case 198: - return emitModuleDeclaration(node); + return emitTemplateSpan(node); + case 126: + return emitQualifiedName(node); + case 150: + return emitObjectBindingPattern(node); + case 151: + return emitArrayBindingPattern(node); + case 152: + return emitBindingElement(node); + case 153: + return emitArrayLiteral(node); + case 154: + return emitObjectLiteral(node); + case 224: + return emitPropertyAssignment(node); + case 225: + return emitShorthandPropertyAssignment(node); + case 127: + return emitComputedPropertyName(node); + case 155: + return emitPropertyAccess(node); + case 156: + return emitIndexedAccess(node); + case 157: + return emitCallExpression(node); + case 158: + return emitNewExpression(node); + case 159: + return emitTaggedTemplateExpression(node); + case 160: + return emit(node.expression); + case 161: + return emitParenExpression(node); case 200: + case 162: + case 163: + return emitFunctionDeclaration(node); + case 164: + return emitDeleteExpression(node); + case 165: + return emitTypeOfExpression(node); + case 166: + return emitVoidExpression(node); + case 167: + return emitPrefixUnaryExpression(node); + case 168: + return emitPostfixUnaryExpression(node); + case 169: + return emitBinaryExpression(node); + case 170: + return emitConditionalExpression(node); + case 173: + return emitSpreadElementExpression(node); + case 175: + return; + case 179: + case 206: + return emitBlock(node); + case 180: + return emitVariableStatement(node); + case 181: + return write(";"); + case 182: + return emitExpressionStatement(node); + case 183: + return emitIfStatement(node); + case 184: + return emitDoStatement(node); + case 185: + return emitWhileStatement(node); + case 186: + return emitForStatement(node); + case 188: + case 187: + return emitForInOrForOfStatement(node); + case 189: + case 190: + return emitBreakOrContinueStatement(node); + case 191: + return emitReturnStatement(node); + case 192: + return emitWithStatement(node); + case 193: + return emitSwitchStatement(node); + case 220: + case 221: + return emitCaseOrDefaultClause(node); + case 194: + return emitLabelledStatement(node); + case 195: + return emitThrowStatement(node); + case 196: + return emitTryStatement(node); + case 223: + return emitCatchClause(node); + case 197: + return emitDebuggerStatement(node); + case 198: + return emitVariableDeclaration(node); + case 174: + return emitClassExpression(node); + case 201: + return emitClassDeclaration(node); + case 202: + return emitInterfaceDeclaration(node); + case 204: + return emitEnumDeclaration(node); + case 226: + return emitEnumMember(node); + case 205: + return emitModuleDeclaration(node); + case 209: return emitImportDeclaration(node); - case 210: - return emitSourceFile(node); + case 208: + return emitImportEqualsDeclaration(node); + case 215: + return emitExportDeclaration(node); + case 214: + return emitExportAssignment(node); + case 227: + return emitSourceFileNode(node); } } function hasDetachedComments(pos) { @@ -19999,34 +27995,50 @@ var ts; } return leadingComments; } + function filterComments(ranges, onlyPinnedOrTripleSlashComments) { + if (ranges && onlyPinnedOrTripleSlashComments) { + ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); + if (ranges.length === 0) { + return undefined; + } + } + return ranges; + } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.pos !== node.parent.pos) { - var leadingComments; + if (node.parent.kind === 227 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { - leadingComments = getLeadingCommentsWithoutDetachedComments(); + return getLeadingCommentsWithoutDetachedComments(); } else { - leadingComments = ts.getLeadingCommentRangesOfNode(node, currentSourceFile); + return ts.getLeadingCommentRangesOfNode(node, currentSourceFile); } - return leadingComments; } } } - function emitLeadingDeclarationComments(node) { - var leadingComments = getLeadingCommentsToEmit(node); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); - } - function emitTrailingDeclarationComments(node) { + function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.end !== node.parent.end) { - var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, node.end); - emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + if (node.parent.kind === 227 || node.end !== node.parent.end) { + return ts.getTrailingCommentRanges(currentSourceFile.text, node.end); } } } - function emitLeadingCommentsOfLocalPosition(pos) { + function emitOnlyPinnedOrTripleSlashComments(node) { + emitLeadingCommentsWorker(node, true); + } + function emitLeadingComments(node) { + return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + } + function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { + var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + } + function emitTrailingComments(node) { + var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + } + function emitLeadingCommentsOfPosition(pos) { var leadingComments; if (hasDetachedComments(pos)) { leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -20034,18 +28046,22 @@ var ts; else { leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + leadingComments = filterComments(leadingComments, compilerOptions.removeComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { + pos: pos, + end: pos + }, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); } - function emitDetachedCommentsAtPosition(node) { + function emitDetachedComments(node) { var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); if (leadingComments) { var detachedComments = []; var lastComment; ts.forEach(leadingComments, function (comment) { if (lastComment) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, lastComment.end); - var commentLine = getLineOfLocalPosition(currentSourceFile, comment.pos); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, lastComment.end); + var commentLine = ts.getLineOfLocalPosition(currentSourceFile, comment.pos); if (commentLine >= lastCommentLine + 2) { return detachedComments; } @@ -20054,68 +28070,71 @@ var ts; lastComment = comment; }); if (detachedComments.length) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); - var nodeLine = getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); + var nodeLine = ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); if (nodeLine >= lastCommentLine + 2) { - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); - var currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); + var currentDetachedCommentInfo = { + nodePos: node.pos, + detachedCommentEndPos: detachedComments[detachedComments.length - 1].end + }; if (detachedCommentsInfo) { detachedCommentsInfo.push(currentDetachedCommentInfo); } else { - detachedCommentsInfo = [currentDetachedCommentInfo]; + detachedCommentsInfo = [ + currentDetachedCommentInfo + ]; } } } } } - function emitPinnedOrTripleSlashCommentsOfNode(node) { - var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); - function isPinnedOrTripleSlashComment(comment) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; - } - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && - currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { - return true; - } + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && comment.pos + 2 < comment.end && currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, pinnedComments); - emitComments(currentSourceFile, writer, pinnedComments, true, newLine, writeComment); - } - } - function writeDeclarationFile(jsFilePath, sourceFile) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - if (!emitDeclarationResult.reportedDeclarationError) { - var declarationOutput = emitDeclarationResult.referencePathsOutput; - var appliedSyncOutputPos = 0; - ts.forEach(emitDeclarationResult.aliasDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.asynchronousOutput) { - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); - declarationOutput += aliasEmitInfo.asynchronousOutput; - appliedSyncOutputPos = aliasEmitInfo.outputPos; - } - }); - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos); - writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, compilerOptions.emitBOM); } } function emitFile(jsFilePath, sourceFile) { emitJavaScript(jsFilePath, sourceFile); if (compilerOptions.declaration) { - writeDeclarationFile(jsFilePath, sourceFile); + ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); } } } ts.emitFiles = emitFiles; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { + ts.programTime = 0; ts.emitTime = 0; - function createCompilerHost(options) { + ts.ioReadTime = 0; + ts.ioWriteTime = 0; + ts.version = "1.5.0"; + function findConfigFile(searchPath) { + var fileName = "tsconfig.json"; + while (true) { + if (ts.sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + fileName = "../" + fileName; + } + return undefined; + } + ts.findConfigFile = findConfigFile; + function createCompilerHost(options, setParentNodes) { var currentDirectory; var existingDirectories = {}; function getCanonicalFileName(fileName) { @@ -20123,8 +28142,11 @@ var ts; } var unsupportedFileEncodingErrorCode = -2147024809; function getSourceFile(fileName, languageVersion, onError) { + var text; try { - var text = ts.sys.readFile(fileName, options.charset); + var start = new Date().getTime(); + text = ts.sys.readFile(fileName, options.charset); + ts.ioReadTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -20132,29 +28154,31 @@ var ts; } text = ""; } - return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion) : undefined; + return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; + } + function directoryExists(directoryPath) { + if (ts.hasProperty(existingDirectories, directoryPath)) { + return true; + } + if (ts.sys.directoryExists(directoryPath)) { + existingDirectories[directoryPath] = true; + return true; + } + return false; + } + function ensureDirectoriesExist(directoryPath) { + if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { + var parentDirectory = ts.getDirectoryPath(directoryPath); + ensureDirectoriesExist(parentDirectory); + ts.sys.createDirectory(directoryPath); + } } function writeFile(fileName, data, writeByteOrderMark, onError) { - function directoryExists(directoryPath) { - if (ts.hasProperty(existingDirectories, directoryPath)) { - return true; - } - if (ts.sys.directoryExists(directoryPath)) { - existingDirectories[directoryPath] = true; - return true; - } - return false; - } - function ensureDirectoriesExist(directoryPath) { - if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { - var parentDirectory = ts.getDirectoryPath(directoryPath); - ensureDirectoriesExist(parentDirectory); - ts.sys.createDirectory(directoryPath); - } - } try { + var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); ts.sys.writeFile(fileName, data, writeByteOrderMark); + ts.ioWriteTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -20164,17 +28188,28 @@ var ts; } return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibFileName: function (options) { + return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); + }, writeFile: writeFile, - getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, - useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, + getCurrentDirectory: function () { + return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); + }, + useCaseSensitiveFileNames: function () { + return ts.sys.useCaseSensitiveFileNames; + }, getCanonicalFileName: getCanonicalFileName, - getNewLine: function () { return ts.sys.newLine; } + getNewLine: function () { + return ts.sys.newLine; + } }; } ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program) { var diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + if (program.getCompilerOptions().declaration) { + diagnostics.concat(program.getDeclarationDiagnostics()); + } return ts.sortAndDeduplicateDiagnostics(diagnostics); } ts.getPreEmitDiagnostics = getPreEmitDiagnostics; @@ -20208,31 +28243,49 @@ var ts; var diagnostics = ts.createDiagnosticCollection(); var seenNoDefaultLib = options.noLib; var commonSourceDirectory; + var diagnosticsProducingTypeChecker; + var noDiagnosticsTypeChecker; + var start = new Date().getTime(); host = host || createCompilerHost(options); - ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); + ts.forEach(rootNames, function (name) { + return processRootFile(name, false); + }); if (!seenNoDefaultLib) { processRootFile(host.getDefaultLibFileName(options), true); } verifyCompilerOptions(); - var diagnosticsProducingTypeChecker; - var noDiagnosticsTypeChecker; + ts.programTime += new Date().getTime() - start; program = { getSourceFile: getSourceFile, - getSourceFiles: function () { return files; }, - getCompilerOptions: function () { return options; }, + getSourceFiles: function () { + return files; + }, + getCompilerOptions: function () { + return options; + }, getSyntacticDiagnostics: getSyntacticDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, getSemanticDiagnostics: getSemanticDiagnostics, getDeclarationDiagnostics: getDeclarationDiagnostics, getTypeChecker: getTypeChecker, getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, - getCommonSourceDirectory: function () { return commonSourceDirectory; }, + getCommonSourceDirectory: function () { + return commonSourceDirectory; + }, emit: emit, getCurrentDirectory: host.getCurrentDirectory, - getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, - getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, - getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, - getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + getNodeCount: function () { + return getDiagnosticsProducingTypeChecker().getNodeCount(); + }, + getIdentifierCount: function () { + return getDiagnosticsProducingTypeChecker().getIdentifierCount(); + }, + getSymbolCount: function () { + return getDiagnosticsProducingTypeChecker().getSymbolCount(); + }, + getTypeCount: function () { + return getDiagnosticsProducingTypeChecker().getTypeCount(); + } }; return program; function getEmitHost(writeFileCallback) { @@ -20253,16 +28306,17 @@ var ts; function getTypeChecker() { return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = ts.createTypeChecker(program, false)); } - function getDeclarationDiagnostics(targetSourceFile) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(targetSourceFile); - return ts.getDeclarationDiagnostics(getEmitHost(), resolver, targetSourceFile); - } function emit(sourceFile, writeFileCallback) { if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) { - return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + return { + diagnostics: [], + sourceMaps: undefined, + emitSkipped: true + }; } + var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); var start = new Date().getTime(); - var emitResult = ts.emitFiles(getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile), getEmitHost(writeFileCallback), sourceFile); + var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile); ts.emitTime += new Date().getTime() - start; return emitResult; } @@ -20286,6 +28340,9 @@ var ts; function getSemanticDiagnostics(sourceFile) { return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile); } + function getDeclarationDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile); + } function getSyntacticDiagnosticsForFile(sourceFile) { return sourceFile.parseDiagnostics; } @@ -20297,6 +28354,14 @@ var ts; var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); } + function getDeclarationDiagnosticsForFile(sourceFile) { + if (!ts.isDeclarationFile(sourceFile)) { + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + var writeFile = function () { + }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); + } + } function getGlobalDiagnostics() { var typeChecker = getDiagnosticsProducingTypeChecker(); var allDiagnostics = []; @@ -20311,9 +28376,11 @@ var ts; processSourceFile(ts.normalizePath(fileName), isDefaultLib); } function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + var start; + var length; if (refEnd !== undefined && refPos !== undefined) { - var start = refPos; - var length = refEnd - refPos; + start = refPos; + length = refEnd - refPos; } var diagnostic; if (hasExtension(fileName)) { @@ -20379,8 +28446,8 @@ var ts; files.push(file); } } + return file; } - return file; function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) { var file = filesByName[canonicalName]; if (file && host.useCaseSensitiveFileNames()) { @@ -20400,30 +28467,30 @@ var ts; } function processImportedModules(file, basePath) { ts.forEach(file.statements, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); - var moduleName = nameLiteral.text; - if (moduleName) { - var searchPath = basePath; - while (true) { - var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - if (findModuleSourceFile(searchName + ".ts", nameLiteral) || findModuleSourceFile(searchName + ".d.ts", nameLiteral)) { - break; + if (node.kind === 209 || node.kind === 208 || node.kind === 215) { + var moduleNameExpr = ts.getExternalModuleName(node); + if (moduleNameExpr && moduleNameExpr.kind === 8) { + var moduleNameText = moduleNameExpr.text; + if (moduleNameText) { + var searchPath = basePath; + while (true) { + var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleNameText)); + if (findModuleSourceFile(searchName + ".ts", moduleNameExpr) || findModuleSourceFile(searchName + ".d.ts", moduleNameExpr)) { + break; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; } - var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) { - break; - } - searchPath = parentPath; } } } - else if (node.kind === 198 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { + else if (node.kind === 205 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { ts.forEachChild(node.body, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); + if (ts.isExternalModuleImportEqualsDeclaration(node) && ts.getExternalModuleImportEqualsDeclarationExpression(node).kind === 8) { + var nameLiteral = ts.getExternalModuleImportEqualsDeclarationExpression(node); var moduleName = nameLiteral.text; if (moduleName) { var searchName = ts.normalizePath(ts.combinePaths(basePath, moduleName)); @@ -20441,6 +28508,20 @@ var ts; } } function verifyCompilerOptions() { + if (options.separateCompilation) { + if (options.sourceMap) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation)); + } + if (options.declaration) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation)); + } + if (options.noEmitOnError) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation)); + } + if (options.out) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation)); + } + } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { if (options.mapRoot) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option)); @@ -20450,20 +28531,33 @@ var ts; } return; } - var firstExternalModule = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); - if (firstExternalModule && !options.module) { - var externalModuleErrorSpan = ts.getErrorSpanForNode(firstExternalModule.externalModuleIndicator); - var errorStart = ts.skipTrivia(firstExternalModule.text, externalModuleErrorSpan.pos); - var errorLength = externalModuleErrorSpan.end - errorStart; - diagnostics.add(ts.createFileDiagnostic(firstExternalModule, errorStart, errorLength, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + var languageVersion = options.target || 0; + var firstExternalModuleSourceFile = ts.forEach(files, function (f) { + return ts.isExternalModule(f) ? f : undefined; + }); + if (options.separateCompilation) { + if (!options.module && languageVersion < 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + } + var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { + return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; + }); + if (firstNonExternalModuleSourceFile) { + var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); + diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided)); + } } - if (options.outDir || - options.sourceRoot || - (options.mapRoot && - (!options.out || firstExternalModule !== undefined))) { + else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { + var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); + diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + } + if (options.module && languageVersion >= 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher)); + } + if (options.outDir || options.sourceRoot || (options.mapRoot && (!options.out || firstExternalModuleSourceFile !== undefined))) { var commonPathComponents; ts.forEach(files, function (sourceFile) { - if (!(sourceFile.flags & 1024) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + if (!(sourceFile.flags & 2048) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); sourcePathComponents.pop(); if (commonPathComponents) { @@ -20503,6 +28597,10 @@ var ts; } ts.createProgram = createProgram; })(ts || (ts = {})); +/// +/// +/// +/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -20510,10 +28608,6 @@ var ts; name: "charset", type: "string" }, - { - name: "codepage", - type: "number" - }, { name: "declaration", shortName: "d", @@ -20579,10 +28673,6 @@ var ts; name: "noLib", type: "boolean" }, - { - name: "noLibCheck", - type: "boolean" - }, { name: "noResolve", type: "boolean" @@ -20618,6 +28708,10 @@ var ts; type: "boolean", description: ts.Diagnostics.Do_not_emit_comments_to_output }, + { + name: "separateCompilation", + type: "boolean" + }, { name: "sourceMap", type: "boolean", @@ -20644,7 +28738,11 @@ var ts; { name: "target", shortName: "t", - type: { "es3": 0, "es5": 1, "es6": 2 }, + type: { + "es3": 0, + "es5": 1, + "es6": 2 + }, description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental, paramType: ts.Diagnostics.VERSION, error: ts.Diagnostics.Argument_for_target_option_must_be_es3_es5_or_es6 @@ -20824,7 +28922,9 @@ var ts; var files = []; if (ts.hasProperty(json, "files")) { if (json["files"] instanceof Array) { - var files = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); + var files = ts.map(json["files"], function (s) { + return ts.combinePaths(basePath, s); + }); } } else { @@ -20841,9 +28941,10 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { - var version = "1.5.0.0"; function validateLocaleAndSetLanguage(locale, errors) { var matchResult = /^([a-z]+)([_\-]([a-z]+))?$/.exec(locale.toLowerCase()); if (!matchResult) { @@ -20852,8 +28953,7 @@ var ts; } var language = matchResult[1]; var territory = matchResult[3]; - if (!trySetLanguageAndTerritory(language, territory, errors) && - !trySetLanguageAndTerritory(language, undefined, errors)) { + if (!trySetLanguageAndTerritory(language, territory, errors) && !trySetLanguageAndTerritory(language, undefined, errors)) { errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_locale_0, locale)); return false; } @@ -20940,22 +29040,6 @@ var ts; function isJSONSupported() { return typeof JSON === "object" && typeof JSON.parse === "function"; } - function findConfigFile() { - var searchPath = ts.normalizePath(ts.sys.getCurrentDirectory()); - var fileName = "tsconfig.json"; - while (true) { - if (ts.sys.fileExists(fileName)) { - return fileName; - } - var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) { - break; - } - searchPath = parentPath; - fileName = "../" + fileName; - } - return undefined; - } function executeCommandLine(args) { var commandLine = ts.parseCommandLine(args); var configFileName; @@ -20969,46 +29053,47 @@ var ts; if (commandLine.options.locale) { if (!isJSONSupported()) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--locale")); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } validateLocaleAndSetLanguage(commandLine.options.locale, commandLine.errors); } if (commandLine.errors.length > 0) { reportDiagnostics(commandLine.errors); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } if (commandLine.options.version) { - reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Version_0, version)); - return ts.sys.exit(0); + reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Version_0, ts.version)); + return ts.sys.exit(ts.ExitStatus.Success); } if (commandLine.options.help) { printVersion(); printHelp(); - return ts.sys.exit(0); + return ts.sys.exit(ts.ExitStatus.Success); } if (commandLine.options.project) { if (!isJSONSupported()) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--project")); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } configFileName = ts.normalizePath(ts.combinePaths(commandLine.options.project, "tsconfig.json")); if (commandLine.fileNames.length !== 0) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Option_project_cannot_be_mixed_with_source_files_on_a_command_line)); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } } else if (commandLine.fileNames.length === 0 && isJSONSupported()) { - configFileName = findConfigFile(); + var searchPath = ts.normalizePath(ts.sys.getCurrentDirectory()); + configFileName = ts.findConfigFile(searchPath); } if (commandLine.fileNames.length === 0 && !configFileName) { printVersion(); printHelp(); - return ts.sys.exit(0); + return ts.sys.exit(ts.ExitStatus.Success); } if (commandLine.options.watch) { if (!ts.sys.watchFile) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--watch")); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } if (configFileName) { configFileWatcher = ts.sys.watchFile(configFileName, configFileChanged); @@ -21021,12 +29106,12 @@ var ts; var configObject = ts.readConfigFile(configFileName); if (!configObject) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Unable_to_open_file_0, configFileName)); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } var configParseResult = ts.parseConfigFile(configObject, ts.getDirectoryPath(configFileName)); if (configParseResult.errors.length > 0) { reportDiagnostics(configParseResult.errors); - return ts.sys.exit(1); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } rootFileNames = configParseResult.fileNames; compilerOptions = ts.extend(commandLine.options, configParseResult.options); @@ -21040,7 +29125,7 @@ var ts; compilerHost.getSourceFile = getSourceFile; } var compileResult = compile(rootFileNames, compilerOptions, compilerHost); - if (!commandLine.options.watch) { + if (!compilerOptions.watch) { return ts.sys.exit(compileResult.exitStatus); } setCachedProgram(compileResult.program); @@ -21054,8 +29139,10 @@ var ts; } } var sourceFile = hostGetSourceFile(fileName, languageVersion, onError); - if (sourceFile && commandLine.options.watch) { - sourceFile.fileWatcher = ts.sys.watchFile(sourceFile.fileName, function () { return sourceFileChanged(sourceFile); }); + if (sourceFile && compilerOptions.watch) { + sourceFile.fileWatcher = ts.sys.watchFile(sourceFile.fileName, function () { + return sourceFileChanged(sourceFile); + }); } return sourceFile; } @@ -21074,6 +29161,7 @@ var ts; cachedProgram = program; } function sourceFileChanged(sourceFile) { + sourceFile.fileWatcher.close(); sourceFile.fileWatcher = undefined; startTimer(); } @@ -21095,14 +29183,14 @@ var ts; } ts.executeCommandLine = executeCommandLine; function compile(fileNames, compilerOptions, compilerHost) { - ts.parseTime = 0; + ts.ioReadTime = 0; + ts.ioWriteTime = 0; + ts.programTime = 0; ts.bindTime = 0; ts.checkTime = 0; ts.emitTime = 0; - var start = new Date().getTime(); var program = ts.createProgram(fileNames, compilerOptions, compilerHost); var exitStatus = compileProgram(); - var end = new Date().getTime() - start; if (compilerOptions.listFiles) { ts.forEach(program.getSourceFiles(), function (file) { ts.sys.write(file.fileName + ts.sys.newLine); @@ -21119,13 +29207,18 @@ var ts; if (memoryUsed >= 0) { reportStatisticalValue("Memory used", Math.round(memoryUsed / 1000) + "K"); } - reportTimeStatistic("Parse time", ts.parseTime); + reportTimeStatistic("I/O read", ts.ioReadTime); + reportTimeStatistic("I/O write", ts.ioWriteTime); + reportTimeStatistic("Parse time", ts.programTime); reportTimeStatistic("Bind time", ts.bindTime); reportTimeStatistic("Check time", ts.checkTime); reportTimeStatistic("Emit time", ts.emitTime); - reportTimeStatistic("Total time", end); + reportTimeStatistic("Total time", ts.programTime + ts.bindTime + ts.checkTime + ts.emitTime); } - return { program: program, exitStatus: exitStatus }; + return { + program: program, + exitStatus: exitStatus + }; function compileProgram() { var diagnostics = program.getSyntacticDiagnostics(); reportDiagnostics(diagnostics); @@ -21138,21 +29231,21 @@ var ts; } } if (compilerOptions.noEmit) { - return diagnostics.length ? 1 : 0; + return diagnostics.length ? ts.ExitStatus.DiagnosticsPresent_OutputsSkipped : ts.ExitStatus.Success; } var emitOutput = program.emit(); reportDiagnostics(emitOutput.diagnostics); if (emitOutput.emitSkipped) { - return 1; + return ts.ExitStatus.DiagnosticsPresent_OutputsSkipped; } if (diagnostics.length > 0 || emitOutput.diagnostics.length > 0) { - 2; + return ts.ExitStatus.DiagnosticsPresent_OutputsGenerated; } - return 0; + return ts.ExitStatus.Success; } } function printVersion() { - ts.sys.write(getDiagnosticText(ts.Diagnostics.Version_0, version) + ts.sys.newLine); + ts.sys.write(getDiagnosticText(ts.Diagnostics.Version_0, ts.version) + ts.sys.newLine); } function printHelp() { var output = ""; @@ -21169,8 +29262,12 @@ var ts; output += padding + "tsc @args.txt" + ts.sys.newLine; output += ts.sys.newLine; output += getDiagnosticText(ts.Diagnostics.Options_Colon) + ts.sys.newLine; - var optsList = ts.filter(ts.optionDeclarations.slice(), function (v) { return !v.experimental; }); - optsList.sort(function (a, b) { return ts.compareValues(a.name.toLowerCase(), b.name.toLowerCase()); }); + var optsList = ts.filter(ts.optionDeclarations.slice(), function (v) { + return !v.experimental; + }); + optsList.sort(function (a, b) { + return ts.compareValues(a.name.toLowerCase(), b.name.toLowerCase()); + }); var marginLength = 0; var usageColumn = []; var descriptionColumn = []; diff --git a/bin/tsserver.js b/bin/tsserver.js new file mode 100644 index 00000000000..e7cd07fc7a8 --- /dev/null +++ b/bin/tsserver.js @@ -0,0 +1,36037 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +var ts; +(function (ts) { + (function (ExitStatus) { + ExitStatus[ExitStatus["Success"] = 0] = "Success"; + ExitStatus[ExitStatus["DiagnosticsPresent_OutputsSkipped"] = 1] = "DiagnosticsPresent_OutputsSkipped"; + ExitStatus[ExitStatus["DiagnosticsPresent_OutputsGenerated"] = 2] = "DiagnosticsPresent_OutputsGenerated"; + })(ts.ExitStatus || (ts.ExitStatus = {})); + var ExitStatus = ts.ExitStatus; + (function (DiagnosticCategory) { + DiagnosticCategory[DiagnosticCategory["Warning"] = 0] = "Warning"; + DiagnosticCategory[DiagnosticCategory["Error"] = 1] = "Error"; + DiagnosticCategory[DiagnosticCategory["Message"] = 2] = "Message"; + })(ts.DiagnosticCategory || (ts.DiagnosticCategory = {})); + var DiagnosticCategory = ts.DiagnosticCategory; +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + function forEach(array, callback) { + if (array) { + for (var i = 0, len = array.length; i < len; i++) { + var result = callback(array[i], i); + if (result) { + return result; + } + } + } + return undefined; + } + ts.forEach = forEach; + function contains(array, value) { + if (array) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (v === value) { + return true; + } + } + } + return false; + } + ts.contains = contains; + function indexOf(array, value) { + if (array) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + } + return -1; + } + ts.indexOf = indexOf; + function countWhere(array, predicate) { + var count = 0; + if (array) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (predicate(v)) { + count++; + } + } + } + return count; + } + ts.countWhere = countWhere; + function filter(array, f) { + var result; + if (array) { + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_1 = array[_i]; + if (f(item_1)) { + result.push(item_1); + } + } + } + return result; + } + ts.filter = filter; + function map(array, f) { + var result; + if (array) { + result = []; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result.push(f(v)); + } + } + return result; + } + ts.map = map; + function concatenate(array1, array2) { + if (!array2 || !array2.length) + return array1; + if (!array1 || !array1.length) + return array2; + return array1.concat(array2); + } + ts.concatenate = concatenate; + function deduplicate(array) { + var result; + if (array) { + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_2 = array[_i]; + if (!contains(result, item_2)) { + result.push(item_2); + } + } + } + return result; + } + ts.deduplicate = deduplicate; + function sum(array, prop) { + var result = 0; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result += v[prop]; + } + return result; + } + ts.sum = sum; + function addRange(to, from) { + if (to && from) { + for (var _i = 0; _i < from.length; _i++) { + var v = from[_i]; + to.push(v); + } + } + } + ts.addRange = addRange; + function lastOrUndefined(array) { + if (array.length === 0) { + return undefined; + } + return array[array.length - 1]; + } + ts.lastOrUndefined = lastOrUndefined; + function binarySearch(array, value) { + var low = 0; + var high = array.length - 1; + while (low <= high) { + var middle = low + ((high - low) >> 1); + var midValue = array[middle]; + if (midValue === value) { + return middle; + } + else if (midValue > value) { + high = middle - 1; + } + else { + low = middle + 1; + } + } + return ~low; + } + ts.binarySearch = binarySearch; + function reduceLeft(array, f, initial) { + if (array) { + var count = array.length; + if (count > 0) { + var pos = 0; + var result = arguments.length <= 2 ? array[pos++] : initial; + while (pos < count) { + result = f(result, array[pos++]); + } + return result; + } + } + return initial; + } + ts.reduceLeft = reduceLeft; + function reduceRight(array, f, initial) { + if (array) { + var pos = array.length - 1; + if (pos >= 0) { + var result = arguments.length <= 2 ? array[pos--] : initial; + while (pos >= 0) { + result = f(result, array[pos--]); + } + return result; + } + } + return initial; + } + ts.reduceRight = reduceRight; + var hasOwnProperty = Object.prototype.hasOwnProperty; + function hasProperty(map, key) { + return hasOwnProperty.call(map, key); + } + ts.hasProperty = hasProperty; + function getProperty(map, key) { + return hasOwnProperty.call(map, key) ? map[key] : undefined; + } + ts.getProperty = getProperty; + function isEmpty(map) { + for (var id in map) { + if (hasProperty(map, id)) { + return false; + } + } + return true; + } + ts.isEmpty = isEmpty; + function clone(object) { + var result = {}; + for (var id in object) { + result[id] = object[id]; + } + return result; + } + ts.clone = clone; + function extend(first, second) { + var result = {}; + for (var id in first) { + result[id] = first[id]; + } + for (var id in second) { + if (!hasProperty(result, id)) { + result[id] = second[id]; + } + } + return result; + } + ts.extend = extend; + function forEachValue(map, callback) { + var result; + for (var id in map) { + if (result = callback(map[id])) + break; + } + return result; + } + ts.forEachValue = forEachValue; + function forEachKey(map, callback) { + var result; + for (var id in map) { + if (result = callback(id)) + break; + } + return result; + } + ts.forEachKey = forEachKey; + function lookUp(map, key) { + return hasProperty(map, key) ? map[key] : undefined; + } + ts.lookUp = lookUp; + function copyMap(source, target) { + for (var p in source) { + target[p] = source[p]; + } + } + ts.copyMap = copyMap; + function arrayToMap(array, makeKey) { + var result = {}; + forEach(array, function (value) { + result[makeKey(value)] = value; + }); + return result; + } + ts.arrayToMap = arrayToMap; + function formatStringFromArgs(text, args, baseIndex) { + baseIndex = baseIndex || 0; + return text.replace(/{(\d+)}/g, function (match, index) { return args[+index + baseIndex]; }); + } + ts.localizedDiagnosticMessages = undefined; + function getLocaleSpecificMessage(message) { + return ts.localizedDiagnosticMessages && ts.localizedDiagnosticMessages[message] + ? ts.localizedDiagnosticMessages[message] + : message; + } + ts.getLocaleSpecificMessage = getLocaleSpecificMessage; + function createFileDiagnostic(file, start, length, message) { + var end = start + length; + Debug.assert(start >= 0, "start must be non-negative, is " + start); + Debug.assert(length >= 0, "length must be non-negative, is " + length); + Debug.assert(start <= file.text.length, "start must be within the bounds of the file. " + start + " > " + file.text.length); + Debug.assert(end <= file.text.length, "end must be the bounds of the file. " + end + " > " + file.text.length); + var text = getLocaleSpecificMessage(message.key); + if (arguments.length > 4) { + text = formatStringFromArgs(text, arguments, 4); + } + return { + file: file, + start: start, + length: length, + messageText: text, + category: message.category, + code: message.code + }; + } + ts.createFileDiagnostic = createFileDiagnostic; + function createCompilerDiagnostic(message) { + var text = getLocaleSpecificMessage(message.key); + if (arguments.length > 1) { + text = formatStringFromArgs(text, arguments, 1); + } + return { + file: undefined, + start: undefined, + length: undefined, + messageText: text, + category: message.category, + code: message.code + }; + } + ts.createCompilerDiagnostic = createCompilerDiagnostic; + function chainDiagnosticMessages(details, message) { + var text = getLocaleSpecificMessage(message.key); + if (arguments.length > 2) { + text = formatStringFromArgs(text, arguments, 2); + } + return { + messageText: text, + category: message.category, + code: message.code, + next: details + }; + } + ts.chainDiagnosticMessages = chainDiagnosticMessages; + function concatenateDiagnosticMessageChains(headChain, tailChain) { + Debug.assert(!headChain.next); + headChain.next = tailChain; + return headChain; + } + ts.concatenateDiagnosticMessageChains = concatenateDiagnosticMessageChains; + function compareValues(a, b) { + if (a === b) + return 0; + if (a === undefined) + return -1; + if (b === undefined) + return 1; + return a < b ? -1 : 1; + } + ts.compareValues = compareValues; + function getDiagnosticFileName(diagnostic) { + return diagnostic.file ? diagnostic.file.fileName : undefined; + } + function compareDiagnostics(d1, d2) { + return compareValues(getDiagnosticFileName(d1), getDiagnosticFileName(d2)) || + compareValues(d1.start, d2.start) || + compareValues(d1.length, d2.length) || + compareValues(d1.code, d2.code) || + compareMessageText(d1.messageText, d2.messageText) || + 0; + } + ts.compareDiagnostics = compareDiagnostics; + function compareMessageText(text1, text2) { + while (text1 && text2) { + var string1 = typeof text1 === "string" ? text1 : text1.messageText; + var string2 = typeof text2 === "string" ? text2 : text2.messageText; + var res = compareValues(string1, string2); + if (res) { + return res; + } + text1 = typeof text1 === "string" ? undefined : text1.next; + text2 = typeof text2 === "string" ? undefined : text2.next; + } + if (!text1 && !text2) { + return 0; + } + return text1 ? 1 : -1; + } + function sortAndDeduplicateDiagnostics(diagnostics) { + return deduplicateSortedDiagnostics(diagnostics.sort(compareDiagnostics)); + } + ts.sortAndDeduplicateDiagnostics = sortAndDeduplicateDiagnostics; + function deduplicateSortedDiagnostics(diagnostics) { + if (diagnostics.length < 2) { + return diagnostics; + } + var newDiagnostics = [diagnostics[0]]; + var previousDiagnostic = diagnostics[0]; + for (var i = 1; i < diagnostics.length; i++) { + var currentDiagnostic = diagnostics[i]; + var isDupe = compareDiagnostics(currentDiagnostic, previousDiagnostic) === 0; + if (!isDupe) { + newDiagnostics.push(currentDiagnostic); + previousDiagnostic = currentDiagnostic; + } + } + return newDiagnostics; + } + ts.deduplicateSortedDiagnostics = deduplicateSortedDiagnostics; + function normalizeSlashes(path) { + return path.replace(/\\/g, "/"); + } + ts.normalizeSlashes = normalizeSlashes; + function getRootLength(path) { + if (path.charCodeAt(0) === 47) { + if (path.charCodeAt(1) !== 47) + return 1; + var p1 = path.indexOf("/", 2); + if (p1 < 0) + return 2; + var p2 = path.indexOf("/", p1 + 1); + if (p2 < 0) + return p1 + 1; + return p2 + 1; + } + if (path.charCodeAt(1) === 58) { + if (path.charCodeAt(2) === 47) + return 3; + return 2; + } + return 0; + } + ts.getRootLength = getRootLength; + ts.directorySeparator = "/"; + function getNormalizedParts(normalizedSlashedPath, rootLength) { + var parts = normalizedSlashedPath.substr(rootLength).split(ts.directorySeparator); + var normalized = []; + for (var _i = 0; _i < parts.length; _i++) { + var part = parts[_i]; + if (part !== ".") { + if (part === ".." && normalized.length > 0 && normalized[normalized.length - 1] !== "..") { + normalized.pop(); + } + else { + if (part) { + normalized.push(part); + } + } + } + } + return normalized; + } + function normalizePath(path) { + path = normalizeSlashes(path); + var rootLength = getRootLength(path); + var normalized = getNormalizedParts(path, rootLength); + return path.substr(0, rootLength) + normalized.join(ts.directorySeparator); + } + ts.normalizePath = normalizePath; + function getDirectoryPath(path) { + return path.substr(0, Math.max(getRootLength(path), path.lastIndexOf(ts.directorySeparator))); + } + ts.getDirectoryPath = getDirectoryPath; + function isUrl(path) { + return path && !isRootedDiskPath(path) && path.indexOf("://") !== -1; + } + ts.isUrl = isUrl; + function isRootedDiskPath(path) { + return getRootLength(path) !== 0; + } + ts.isRootedDiskPath = isRootedDiskPath; + function normalizedPathComponents(path, rootLength) { + var normalizedParts = getNormalizedParts(path, rootLength); + return [path.substr(0, rootLength)].concat(normalizedParts); + } + function getNormalizedPathComponents(path, currentDirectory) { + path = normalizeSlashes(path); + var rootLength = getRootLength(path); + if (rootLength == 0) { + path = combinePaths(normalizeSlashes(currentDirectory), path); + rootLength = getRootLength(path); + } + return normalizedPathComponents(path, rootLength); + } + ts.getNormalizedPathComponents = getNormalizedPathComponents; + function getNormalizedAbsolutePath(fileName, currentDirectory) { + return getNormalizedPathFromPathComponents(getNormalizedPathComponents(fileName, currentDirectory)); + } + ts.getNormalizedAbsolutePath = getNormalizedAbsolutePath; + function getNormalizedPathFromPathComponents(pathComponents) { + if (pathComponents && pathComponents.length) { + return pathComponents[0] + pathComponents.slice(1).join(ts.directorySeparator); + } + } + ts.getNormalizedPathFromPathComponents = getNormalizedPathFromPathComponents; + function getNormalizedPathComponentsOfUrl(url) { + // Get root length of http://www.website.com/folder1/foler2/ + // In this example the root is: http://www.website.com/ + // normalized path components should be ["http://www.website.com/", "folder1", "folder2"] + var urlLength = url.length; + var rootLength = url.indexOf("://") + "://".length; + while (rootLength < urlLength) { + if (url.charCodeAt(rootLength) === 47) { + rootLength++; + } + else { + break; + } + } + if (rootLength === urlLength) { + return [url]; + } + var indexOfNextSlash = url.indexOf(ts.directorySeparator, rootLength); + if (indexOfNextSlash !== -1) { + rootLength = indexOfNextSlash + 1; + return normalizedPathComponents(url, rootLength); + } + else { + return [url + ts.directorySeparator]; + } + } + function getNormalizedPathOrUrlComponents(pathOrUrl, currentDirectory) { + if (isUrl(pathOrUrl)) { + return getNormalizedPathComponentsOfUrl(pathOrUrl); + } + else { + return getNormalizedPathComponents(pathOrUrl, currentDirectory); + } + } + function getRelativePathToDirectoryOrUrl(directoryPathOrUrl, relativeOrAbsolutePath, currentDirectory, getCanonicalFileName, isAbsolutePathAnUrl) { + var pathComponents = getNormalizedPathOrUrlComponents(relativeOrAbsolutePath, currentDirectory); + var directoryComponents = getNormalizedPathOrUrlComponents(directoryPathOrUrl, currentDirectory); + if (directoryComponents.length > 1 && directoryComponents[directoryComponents.length - 1] === "") { + directoryComponents.length--; + } + for (var joinStartIndex = 0; joinStartIndex < pathComponents.length && joinStartIndex < directoryComponents.length; joinStartIndex++) { + if (getCanonicalFileName(directoryComponents[joinStartIndex]) !== getCanonicalFileName(pathComponents[joinStartIndex])) { + break; + } + } + if (joinStartIndex) { + var relativePath = ""; + var relativePathComponents = pathComponents.slice(joinStartIndex, pathComponents.length); + for (; joinStartIndex < directoryComponents.length; joinStartIndex++) { + if (directoryComponents[joinStartIndex] !== "") { + relativePath = relativePath + ".." + ts.directorySeparator; + } + } + return relativePath + relativePathComponents.join(ts.directorySeparator); + } + var absolutePath = getNormalizedPathFromPathComponents(pathComponents); + if (isAbsolutePathAnUrl && isRootedDiskPath(absolutePath)) { + absolutePath = "file:///" + absolutePath; + } + return absolutePath; + } + ts.getRelativePathToDirectoryOrUrl = getRelativePathToDirectoryOrUrl; + function getBaseFileName(path) { + var i = path.lastIndexOf(ts.directorySeparator); + return i < 0 ? path : path.substring(i + 1); + } + ts.getBaseFileName = getBaseFileName; + function combinePaths(path1, path2) { + if (!(path1 && path1.length)) + return path2; + if (!(path2 && path2.length)) + return path1; + if (getRootLength(path2) !== 0) + return path2; + if (path1.charAt(path1.length - 1) === ts.directorySeparator) + return path1 + path2; + return path1 + ts.directorySeparator + path2; + } + ts.combinePaths = combinePaths; + function fileExtensionIs(path, extension) { + var pathLen = path.length; + var extLen = extension.length; + return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; + } + ts.fileExtensionIs = fileExtensionIs; + var supportedExtensions = [".d.ts", ".ts", ".js"]; + function removeFileExtension(path) { + for (var _i = 0; _i < supportedExtensions.length; _i++) { + var ext = supportedExtensions[_i]; + if (fileExtensionIs(path, ext)) { + return path.substr(0, path.length - ext.length); + } + } + return path; + } + ts.removeFileExtension = removeFileExtension; + var backslashOrDoubleQuote = /[\"\\]/g; + var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + var escapedCharsMap = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", + "\u2029": "\\u2029", + "\u0085": "\\u0085" + }; + function getDefaultLibFileName(options) { + return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; + } + ts.getDefaultLibFileName = getDefaultLibFileName; + function Symbol(flags, name) { + this.flags = flags; + this.name = name; + this.declarations = undefined; + } + function Type(checker, flags) { + this.flags = flags; + } + function Signature(checker) { + } + ts.objectAllocator = { + getNodeConstructor: function (kind) { + function Node() { + } + Node.prototype = { + kind: kind, + pos: 0, + end: 0, + flags: 0, + parent: undefined + }; + return Node; + }, + getSymbolConstructor: function () { return Symbol; }, + getTypeConstructor: function () { return Type; }, + getSignatureConstructor: function () { return Signature; } + }; + var Debug; + (function (Debug) { + var currentAssertionLevel = 0; + function shouldAssert(level) { + return currentAssertionLevel >= level; + } + Debug.shouldAssert = shouldAssert; + function assert(expression, message, verboseDebugInfo) { + if (!expression) { + var verboseDebugString = ""; + if (verboseDebugInfo) { + verboseDebugString = "\r\nVerbose Debug Information: " + verboseDebugInfo(); + } + throw new Error("Debug Failure. False expression: " + (message || "") + verboseDebugString); + } + } + Debug.assert = assert; + function fail(message) { + Debug.assert(false, message); + } + Debug.fail = fail; + })(Debug = ts.Debug || (ts.Debug = {})); +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.sys = (function () { + function getWScriptSystem() { + var fso = new ActiveXObject("Scripting.FileSystemObject"); + var fileStream = new ActiveXObject("ADODB.Stream"); + fileStream.Type = 2; + var binaryStream = new ActiveXObject("ADODB.Stream"); + binaryStream.Type = 1; + var args = []; + for (var i = 0; i < WScript.Arguments.length; i++) { + args[i] = WScript.Arguments.Item(i); + } + function readFile(fileName, encoding) { + if (!fso.FileExists(fileName)) { + return undefined; + } + fileStream.Open(); + try { + if (encoding) { + fileStream.Charset = encoding; + fileStream.LoadFromFile(fileName); + } + else { + fileStream.Charset = "x-ansi"; + fileStream.LoadFromFile(fileName); + var bom = fileStream.ReadText(2) || ""; + fileStream.Position = 0; + fileStream.Charset = bom.length >= 2 && (bom.charCodeAt(0) === 0xFF && bom.charCodeAt(1) === 0xFE || bom.charCodeAt(0) === 0xFE && bom.charCodeAt(1) === 0xFF) ? "unicode" : "utf-8"; + } + return fileStream.ReadText(); + } + catch (e) { + throw e; + } + finally { + fileStream.Close(); + } + } + function writeFile(fileName, data, writeByteOrderMark) { + fileStream.Open(); + binaryStream.Open(); + try { + fileStream.Charset = "utf-8"; + fileStream.WriteText(data); + if (writeByteOrderMark) { + fileStream.Position = 0; + } + else { + fileStream.Position = 3; + } + fileStream.CopyTo(binaryStream); + binaryStream.SaveToFile(fileName, 2); + } + finally { + binaryStream.Close(); + fileStream.Close(); + } + } + function getNames(collection) { + var result = []; + for (var e = new Enumerator(collection); !e.atEnd(); e.moveNext()) { + result.push(e.item().Name); + } + return result.sort(); + } + function readDirectory(path, extension) { + var result = []; + visitDirectory(path); + return result; + function visitDirectory(path) { + var folder = fso.GetFolder(path || "."); + var files = getNames(folder.files); + for (var _i = 0; _i < files.length; _i++) { + var name_1 = files[_i]; + if (!extension || ts.fileExtensionIs(name_1, extension)) { + result.push(ts.combinePaths(path, name_1)); + } + } + var subfolders = getNames(folder.subfolders); + for (var _a = 0; _a < subfolders.length; _a++) { + var current = subfolders[_a]; + visitDirectory(ts.combinePaths(path, current)); + } + } + } + return { + args: args, + newLine: "\r\n", + useCaseSensitiveFileNames: false, + write: function (s) { + WScript.StdOut.Write(s); + }, + readFile: readFile, + writeFile: writeFile, + resolvePath: function (path) { + return fso.GetAbsolutePathName(path); + }, + fileExists: function (path) { + return fso.FileExists(path); + }, + directoryExists: function (path) { + return fso.FolderExists(path); + }, + createDirectory: function (directoryName) { + if (!this.directoryExists(directoryName)) { + fso.CreateFolder(directoryName); + } + }, + getExecutingFilePath: function () { + return WScript.ScriptFullName; + }, + getCurrentDirectory: function () { + return new ActiveXObject("WScript.Shell").CurrentDirectory; + }, + readDirectory: readDirectory, + exit: function (exitCode) { + try { + WScript.Quit(exitCode); + } + catch (e) { + } + } + }; + } + function getNodeSystem() { + var _fs = require("fs"); + var _path = require("path"); + var _os = require('os'); + var platform = _os.platform(); + var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; + function readFile(fileName, encoding) { + if (!_fs.existsSync(fileName)) { + return undefined; + } + var buffer = _fs.readFileSync(fileName); + var len = buffer.length; + if (len >= 2 && buffer[0] === 0xFE && buffer[1] === 0xFF) { + len &= ~1; + for (var i = 0; i < len; i += 2) { + var temp = buffer[i]; + buffer[i] = buffer[i + 1]; + buffer[i + 1] = temp; + } + return buffer.toString("utf16le", 2); + } + if (len >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) { + return buffer.toString("utf16le", 2); + } + if (len >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + return buffer.toString("utf8", 3); + } + return buffer.toString("utf8"); + } + function writeFile(fileName, data, writeByteOrderMark) { + if (writeByteOrderMark) { + data = '\uFEFF' + data; + } + _fs.writeFileSync(fileName, data, "utf8"); + } + function readDirectory(path, extension) { + var result = []; + visitDirectory(path); + return result; + function visitDirectory(path) { + var files = _fs.readdirSync(path || ".").sort(); + var directories = []; + for (var _i = 0; _i < files.length; _i++) { + var current = files[_i]; + var name = ts.combinePaths(path, current); + var stat = _fs.lstatSync(name); + if (stat.isFile()) { + if (!extension || ts.fileExtensionIs(name, extension)) { + result.push(name); + } + } + else if (stat.isDirectory()) { + directories.push(name); + } + } + for (var _a = 0; _a < directories.length; _a++) { + var current = directories[_a]; + visitDirectory(current); + } + } + } + return { + args: process.argv.slice(2), + newLine: _os.EOL, + useCaseSensitiveFileNames: useCaseSensitiveFileNames, + write: function (s) { + _fs.writeSync(1, s); + }, + readFile: readFile, + writeFile: writeFile, + watchFile: function (fileName, callback) { + _fs.watchFile(fileName, { persistent: true, interval: 250 }, fileChanged); + return { + close: function () { _fs.unwatchFile(fileName, fileChanged); } + }; + function fileChanged(curr, prev) { + if (+curr.mtime <= +prev.mtime) { + return; + } + callback(fileName); + } + ; + }, + resolvePath: function (path) { + return _path.resolve(path); + }, + fileExists: function (path) { + return _fs.existsSync(path); + }, + directoryExists: function (path) { + return _fs.existsSync(path) && _fs.statSync(path).isDirectory(); + }, + createDirectory: function (directoryName) { + if (!this.directoryExists(directoryName)) { + _fs.mkdirSync(directoryName); + } + }, + getExecutingFilePath: function () { + return __filename; + }, + getCurrentDirectory: function () { + return process.cwd(); + }, + readDirectory: readDirectory, + getMemoryUsage: function () { + if (global.gc) { + global.gc(); + } + return process.memoryUsage().heapUsed; + }, + exit: function (exitCode) { + process.exit(exitCode); + } + }; + } + if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { + return getWScriptSystem(); + } + else if (typeof module !== "undefined" && module.exports) { + return getNodeSystem(); + } + else { + return undefined; + } + })(); +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.Diagnostics = { + Unterminated_string_literal: { code: 1002, category: ts.DiagnosticCategory.Error, key: "Unterminated string literal." }, + Identifier_expected: { code: 1003, category: ts.DiagnosticCategory.Error, key: "Identifier expected." }, + _0_expected: { code: 1005, category: ts.DiagnosticCategory.Error, key: "'{0}' expected." }, + A_file_cannot_have_a_reference_to_itself: { code: 1006, category: ts.DiagnosticCategory.Error, key: "A file cannot have a reference to itself." }, + Trailing_comma_not_allowed: { code: 1009, category: ts.DiagnosticCategory.Error, key: "Trailing comma not allowed." }, + Asterisk_Slash_expected: { code: 1010, category: ts.DiagnosticCategory.Error, key: "'*/' expected." }, + Unexpected_token: { code: 1012, category: ts.DiagnosticCategory.Error, key: "Unexpected token." }, + A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be last in a parameter list." }, + Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: ts.DiagnosticCategory.Error, key: "Parameter cannot have question mark and initializer." }, + A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: ts.DiagnosticCategory.Error, key: "A required parameter cannot follow an optional parameter." }, + An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: ts.DiagnosticCategory.Error, key: "An index signature cannot have a rest parameter." }, + An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an accessibility modifier." }, + An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have a question mark." }, + An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an initializer." }, + An_index_signature_must_have_a_type_annotation: { code: 1021, category: ts.DiagnosticCategory.Error, key: "An index signature must have a type annotation." }, + An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: ts.DiagnosticCategory.Error, key: "An index signature parameter must have a type annotation." }, + An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: ts.DiagnosticCategory.Error, key: "An index signature parameter type must be 'string' or 'number'." }, + A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: ts.DiagnosticCategory.Error, key: "A class or interface declaration can only have one 'extends' clause." }, + An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: ts.DiagnosticCategory.Error, key: "An 'extends' clause must precede an 'implements' clause." }, + A_class_can_only_extend_a_single_class: { code: 1026, category: ts.DiagnosticCategory.Error, key: "A class can only extend a single class." }, + A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: ts.DiagnosticCategory.Error, key: "A class declaration can only have one 'implements' clause." }, + Accessibility_modifier_already_seen: { code: 1028, category: ts.DiagnosticCategory.Error, key: "Accessibility modifier already seen." }, + _0_modifier_must_precede_1_modifier: { code: 1029, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier must precede '{1}' modifier." }, + _0_modifier_already_seen: { code: 1030, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier already seen." }, + _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a class element." }, + An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: ts.DiagnosticCategory.Error, key: "An interface declaration cannot have an 'implements' clause." }, + super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: ts.DiagnosticCategory.Error, key: "'super' must be followed by an argument list or member access." }, + Only_ambient_modules_can_use_quoted_names: { code: 1035, category: ts.DiagnosticCategory.Error, key: "Only ambient modules can use quoted names." }, + Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: ts.DiagnosticCategory.Error, key: "Statements are not allowed in ambient contexts." }, + A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used in an already ambient context." }, + Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: ts.DiagnosticCategory.Error, key: "Initializers are not allowed in ambient contexts." }, + _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a module element." }, + A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an interface declaration." }, + A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, + A_rest_parameter_cannot_be_optional: { code: 1047, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot be optional." }, + A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot have an initializer." }, + A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor must have exactly one parameter." }, + A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have an optional parameter." }, + A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor parameter cannot have an initializer." }, + A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have rest parameter." }, + A_get_accessor_cannot_have_parameters: { code: 1054, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor cannot have parameters." }, + Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: ts.DiagnosticCategory.Error, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, + Enum_member_must_have_initializer: { code: 1061, category: ts.DiagnosticCategory.Error, key: "Enum member must have initializer." }, + An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in an internal module." }, + Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: ts.DiagnosticCategory.Error, key: "Ambient enum elements can only have integer literal initializers." }, + Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: ts.DiagnosticCategory.Error, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, + A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an import declaration." }, + Invalid_reference_directive_syntax: { code: 1084, category: ts.DiagnosticCategory.Error, key: "Invalid 'reference' directive syntax." }, + Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: ts.DiagnosticCategory.Error, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, + An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: ts.DiagnosticCategory.Error, key: "An accessor cannot be declared in an ambient context." }, + _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a constructor declaration." }, + _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a parameter." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, + Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: ts.DiagnosticCategory.Error, key: "Type parameters cannot appear on a constructor declaration." }, + Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: ts.DiagnosticCategory.Error, key: "Type annotation cannot appear on a constructor declaration." }, + An_accessor_cannot_have_type_parameters: { code: 1094, category: ts.DiagnosticCategory.Error, key: "An accessor cannot have type parameters." }, + A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have a return type annotation." }, + An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: ts.DiagnosticCategory.Error, key: "An index signature must have exactly one parameter." }, + _0_list_cannot_be_empty: { code: 1097, category: ts.DiagnosticCategory.Error, key: "'{0}' list cannot be empty." }, + Type_parameter_list_cannot_be_empty: { code: 1098, category: ts.DiagnosticCategory.Error, key: "Type parameter list cannot be empty." }, + Type_argument_list_cannot_be_empty: { code: 1099, category: ts.DiagnosticCategory.Error, key: "Type argument list cannot be empty." }, + Invalid_use_of_0_in_strict_mode: { code: 1100, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}' in strict mode." }, + with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: ts.DiagnosticCategory.Error, key: "'with' statements are not allowed in strict mode." }, + delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: ts.DiagnosticCategory.Error, key: "'delete' cannot be called on an identifier in strict mode." }, + A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, + A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, + Jump_target_cannot_cross_function_boundary: { code: 1107, category: ts.DiagnosticCategory.Error, key: "Jump target cannot cross function boundary." }, + A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: ts.DiagnosticCategory.Error, key: "A 'return' statement can only be used within a function body." }, + Expression_expected: { code: 1109, category: ts.DiagnosticCategory.Error, key: "Expression expected." }, + Type_expected: { code: 1110, category: ts.DiagnosticCategory.Error, key: "Type expected." }, + A_class_member_cannot_be_declared_optional: { code: 1112, category: ts.DiagnosticCategory.Error, key: "A class member cannot be declared optional." }, + A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: ts.DiagnosticCategory.Error, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, + Duplicate_label_0: { code: 1114, category: ts.DiagnosticCategory.Error, key: "Duplicate label '{0}'" }, + A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, + A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only jump to a label of an enclosing statement." }, + An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple properties with the same name in strict mode." }, + An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple get/set accessors with the same name." }, + An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have property and accessor with the same name." }, + An_export_assignment_cannot_have_modifiers: { code: 1120, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot have modifiers." }, + Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: ts.DiagnosticCategory.Error, key: "Octal literals are not allowed in strict mode." }, + A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: ts.DiagnosticCategory.Error, key: "A tuple type element list cannot be empty." }, + Variable_declaration_list_cannot_be_empty: { code: 1123, category: ts.DiagnosticCategory.Error, key: "Variable declaration list cannot be empty." }, + Digit_expected: { code: 1124, category: ts.DiagnosticCategory.Error, key: "Digit expected." }, + Hexadecimal_digit_expected: { code: 1125, category: ts.DiagnosticCategory.Error, key: "Hexadecimal digit expected." }, + Unexpected_end_of_text: { code: 1126, category: ts.DiagnosticCategory.Error, key: "Unexpected end of text." }, + Invalid_character: { code: 1127, category: ts.DiagnosticCategory.Error, key: "Invalid character." }, + Declaration_or_statement_expected: { code: 1128, category: ts.DiagnosticCategory.Error, key: "Declaration or statement expected." }, + Statement_expected: { code: 1129, category: ts.DiagnosticCategory.Error, key: "Statement expected." }, + case_or_default_expected: { code: 1130, category: ts.DiagnosticCategory.Error, key: "'case' or 'default' expected." }, + Property_or_signature_expected: { code: 1131, category: ts.DiagnosticCategory.Error, key: "Property or signature expected." }, + Enum_member_expected: { code: 1132, category: ts.DiagnosticCategory.Error, key: "Enum member expected." }, + Type_reference_expected: { code: 1133, category: ts.DiagnosticCategory.Error, key: "Type reference expected." }, + Variable_declaration_expected: { code: 1134, category: ts.DiagnosticCategory.Error, key: "Variable declaration expected." }, + Argument_expression_expected: { code: 1135, category: ts.DiagnosticCategory.Error, key: "Argument expression expected." }, + Property_assignment_expected: { code: 1136, category: ts.DiagnosticCategory.Error, key: "Property assignment expected." }, + Expression_or_comma_expected: { code: 1137, category: ts.DiagnosticCategory.Error, key: "Expression or comma expected." }, + Parameter_declaration_expected: { code: 1138, category: ts.DiagnosticCategory.Error, key: "Parameter declaration expected." }, + Type_parameter_declaration_expected: { code: 1139, category: ts.DiagnosticCategory.Error, key: "Type parameter declaration expected." }, + Type_argument_expected: { code: 1140, category: ts.DiagnosticCategory.Error, key: "Type argument expected." }, + String_literal_expected: { code: 1141, category: ts.DiagnosticCategory.Error, key: "String literal expected." }, + Line_break_not_permitted_here: { code: 1142, category: ts.DiagnosticCategory.Error, key: "Line break not permitted here." }, + or_expected: { code: 1144, category: ts.DiagnosticCategory.Error, key: "'{' or ';' expected." }, + Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members." }, + Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration expected." }, + Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import declarations in an internal module cannot reference an external module." }, + Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules unless the '--module' flag is provided." }, + File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, + new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, + var_let_or_const_expected: { code: 1152, category: ts.DiagnosticCategory.Error, key: "'var', 'let' or 'const' expected." }, + let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: ts.DiagnosticCategory.Error, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: ts.DiagnosticCategory.Error, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "'const' declarations must be initialized" }, + const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: ts.DiagnosticCategory.Error, key: "'const' declarations can only be declared inside a block." }, + let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: ts.DiagnosticCategory.Error, key: "'let' declarations can only be declared inside a block." }, + Unterminated_template_literal: { code: 1160, category: ts.DiagnosticCategory.Error, key: "Unterminated template literal." }, + Unterminated_regular_expression_literal: { code: 1161, category: ts.DiagnosticCategory.Error, key: "Unterminated regular expression literal." }, + An_object_member_cannot_be_declared_optional: { code: 1162, category: ts.DiagnosticCategory.Error, key: "An object member cannot be declared optional." }, + yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: ts.DiagnosticCategory.Error, key: "'yield' expression must be contained_within a generator declaration." }, + Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: ts.DiagnosticCategory.Error, key: "Computed property names are not allowed in enums." }, + A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: ts.DiagnosticCategory.Error, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: ts.DiagnosticCategory.Error, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, + Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: ts.DiagnosticCategory.Error, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, + A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: ts.DiagnosticCategory.Error, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, + A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: ts.DiagnosticCategory.Error, key: "A computed property name in an interface must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: ts.DiagnosticCategory.Error, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, + A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: ts.DiagnosticCategory.Error, key: "A comma expression is not allowed in a computed property name." }, + extends_clause_already_seen: { code: 1172, category: ts.DiagnosticCategory.Error, key: "'extends' clause already seen." }, + extends_clause_must_precede_implements_clause: { code: 1173, category: ts.DiagnosticCategory.Error, key: "'extends' clause must precede 'implements' clause." }, + Classes_can_only_extend_a_single_class: { code: 1174, category: ts.DiagnosticCategory.Error, key: "Classes can only extend a single class." }, + implements_clause_already_seen: { code: 1175, category: ts.DiagnosticCategory.Error, key: "'implements' clause already seen." }, + Interface_declaration_cannot_have_implements_clause: { code: 1176, category: ts.DiagnosticCategory.Error, key: "Interface declaration cannot have 'implements' clause." }, + Binary_digit_expected: { code: 1177, category: ts.DiagnosticCategory.Error, key: "Binary digit expected." }, + Octal_digit_expected: { code: 1178, category: ts.DiagnosticCategory.Error, key: "Octal digit expected." }, + Unexpected_token_expected: { code: 1179, category: ts.DiagnosticCategory.Error, key: "Unexpected token. '{' expected." }, + Property_destructuring_pattern_expected: { code: 1180, category: ts.DiagnosticCategory.Error, key: "Property destructuring pattern expected." }, + Array_element_destructuring_pattern_expected: { code: 1181, category: ts.DiagnosticCategory.Error, key: "Array element destructuring pattern expected." }, + A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: ts.DiagnosticCategory.Error, key: "A destructuring declaration must have an initializer." }, + Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: ts.DiagnosticCategory.Error, key: "Destructuring declarations are not allowed in ambient contexts." }, + An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: ts.DiagnosticCategory.Error, key: "An implementation cannot be declared in ambient contexts." }, + Modifiers_cannot_appear_here: { code: 1184, category: ts.DiagnosticCategory.Error, key: "Modifiers cannot appear here." }, + Merge_conflict_marker_encountered: { code: 1185, category: ts.DiagnosticCategory.Error, key: "Merge conflict marker encountered." }, + A_rest_element_cannot_have_an_initializer: { code: 1186, category: ts.DiagnosticCategory.Error, key: "A rest element cannot have an initializer." }, + A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: ts.DiagnosticCategory.Error, key: "A parameter property may not be a binding pattern." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, + The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, + The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, + An_import_declaration_cannot_have_modifiers: { code: 1191, category: ts.DiagnosticCategory.Error, key: "An import declaration cannot have modifiers." }, + External_module_0_has_no_default_export: { code: 1192, category: ts.DiagnosticCategory.Error, key: "External module '{0}' has no default export." }, + An_export_declaration_cannot_have_modifiers: { code: 1193, category: ts.DiagnosticCategory.Error, key: "An export declaration cannot have modifiers." }, + Export_declarations_are_not_permitted_in_an_internal_module: { code: 1194, category: ts.DiagnosticCategory.Error, key: "Export declarations are not permitted in an internal module." }, + Catch_clause_variable_name_must_be_an_identifier: { code: 1195, category: ts.DiagnosticCategory.Error, key: "Catch clause variable name must be an identifier." }, + Catch_clause_variable_cannot_have_a_type_annotation: { code: 1196, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have a type annotation." }, + Catch_clause_variable_cannot_have_an_initializer: { code: 1197, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have an initializer." }, + An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: { code: 1198, category: ts.DiagnosticCategory.Error, key: "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive." }, + Unterminated_Unicode_escape_sequence: { code: 1199, category: ts.DiagnosticCategory.Error, key: "Unterminated Unicode escape sequence." }, + Line_terminator_not_permitted_before_arrow: { code: 1200, category: ts.DiagnosticCategory.Error, key: "Line terminator not permitted before arrow." }, + A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration: { code: 1201, category: ts.DiagnosticCategory.Error, key: "A type annotation on an export statement is only allowed in an ambient external module declaration." }, + Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { code: 1202, category: ts.DiagnosticCategory.Error, key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." }, + Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { code: 1203, category: ts.DiagnosticCategory.Error, key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." }, + Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { code: 1204, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." }, + Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." }, + Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." }, + Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." }, + Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile non-external modules when the '--separateCompilation' flag is provided." }, + Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, + Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, + Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, + Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, + Circular_definition_of_import_alias_0: { code: 2303, category: ts.DiagnosticCategory.Error, key: "Circular definition of import alias '{0}'." }, + Cannot_find_name_0: { code: 2304, category: ts.DiagnosticCategory.Error, key: "Cannot find name '{0}'." }, + Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module '{0}' has no exported member '{1}'." }, + File_0_is_not_an_external_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File '{0}' is not an external module." }, + Cannot_find_external_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot find external module '{0}'." }, + A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: ts.DiagnosticCategory.Error, key: "A module cannot have more than one export assignment." }, + An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in a module with other exported elements." }, + Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type '{0}' recursively references itself as a base type." }, + A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A class may only extend another class." }, + An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An interface may only extend a class or another interface." }, + Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic type '{0}' requires {1} type argument(s)." }, + Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not generic." }, + Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must be a class or interface type." }, + Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must have {1} type parameter(s)." }, + Cannot_find_global_type_0: { code: 2318, category: ts.DiagnosticCategory.Error, key: "Cannot find global type '{0}'." }, + Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: ts.DiagnosticCategory.Error, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, + Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, + Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, + Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}'." }, + Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is missing in type '{1}'." }, + Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, + Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible." }, + Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, + Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: ts.DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible." }, + Index_signature_is_missing_in_type_0: { code: 2329, category: ts.DiagnosticCategory.Error, key: "Index signature is missing in type '{0}'." }, + Index_signatures_are_incompatible: { code: 2330, category: ts.DiagnosticCategory.Error, key: "Index signatures are incompatible." }, + this_cannot_be_referenced_in_a_module_body: { code: 2331, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a module body." }, + this_cannot_be_referenced_in_current_location: { code: 2332, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in current location." }, + this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in constructor arguments." }, + this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a static property initializer." }, + super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: ts.DiagnosticCategory.Error, key: "'super' can only be referenced in a derived class." }, + super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in constructor arguments." }, + Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: ts.DiagnosticCategory.Error, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, + super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: ts.DiagnosticCategory.Error, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, + Property_0_does_not_exist_on_type_1: { code: 2339, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on type '{1}'." }, + Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: ts.DiagnosticCategory.Error, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, + Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private and only accessible within class '{1}'." }, + An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: ts.DiagnosticCategory.Error, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, + Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: ts.DiagnosticCategory.Error, key: "Type '{0}' does not satisfy the constraint '{1}'." }, + Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: ts.DiagnosticCategory.Error, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, + Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: ts.DiagnosticCategory.Error, key: "Supplied parameters do not match any signature of call target." }, + Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: ts.DiagnosticCategory.Error, key: "Untyped function calls may not accept type arguments." }, + Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: ts.DiagnosticCategory.Error, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, + Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot invoke an expression whose type lacks a call signature." }, + Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only a void function can be called with the 'new' keyword." }, + Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, + Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No best common type exists among return expressions." }, + A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, + An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: ts.DiagnosticCategory.Error, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, + The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, + The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, + The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, + The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, + The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, + The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side of assignment expression." }, + Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type parameter name cannot be '{0}'" }, + A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A parameter property is only allowed in a constructor implementation." }, + A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be of an array type." }, + A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: ts.DiagnosticCategory.Error, key: "A parameter initializer is only allowed in a function or constructor implementation." }, + Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' cannot be referenced in its initializer." }, + Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: ts.DiagnosticCategory.Error, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, + Duplicate_string_index_signature: { code: 2374, category: ts.DiagnosticCategory.Error, key: "Duplicate string index signature." }, + Duplicate_number_index_signature: { code: 2375, category: ts.DiagnosticCategory.Error, key: "Duplicate number index signature." }, + A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: ts.DiagnosticCategory.Error, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, + Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: ts.DiagnosticCategory.Error, key: "Constructors for derived classes must contain a 'super' call." }, + A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, + Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: ts.DiagnosticCategory.Error, key: "Getter and setter accessors do not agree in visibility." }, + get_and_set_accessor_must_have_the_same_type: { code: 2380, category: ts.DiagnosticCategory.Error, key: "'get' and 'set' accessor must have the same type." }, + A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: ts.DiagnosticCategory.Error, key: "A signature with an implementation cannot use a string literal type." }, + Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: ts.DiagnosticCategory.Error, key: "Specialized overload signature is not assignable to any non-specialized signature." }, + Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be exported or not exported." }, + Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be ambient or non-ambient." }, + Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be public, private or protected." }, + Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be optional or required." }, + Function_overload_must_be_static: { code: 2387, category: ts.DiagnosticCategory.Error, key: "Function overload must be static." }, + Function_overload_must_not_be_static: { code: 2388, category: ts.DiagnosticCategory.Error, key: "Function overload must not be static." }, + Function_implementation_name_must_be_0: { code: 2389, category: ts.DiagnosticCategory.Error, key: "Function implementation name must be '{0}'." }, + Constructor_implementation_is_missing: { code: 2390, category: ts.DiagnosticCategory.Error, key: "Constructor implementation is missing." }, + Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: ts.DiagnosticCategory.Error, key: "Function implementation is missing or not immediately following the declaration." }, + Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: ts.DiagnosticCategory.Error, key: "Multiple constructor implementations are not allowed." }, + Duplicate_function_implementation: { code: 2393, category: ts.DiagnosticCategory.Error, key: "Duplicate function implementation." }, + Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload signature is not compatible with function implementation." }, + Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, + Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, + Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, + Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, + Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: ts.DiagnosticCategory.Error, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, + Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: ts.DiagnosticCategory.Error, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, + The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, + The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, + Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...in' statement." }, + The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, + Setters_cannot_return_a_value: { code: 2408, category: ts.DiagnosticCategory.Error, key: "Setters cannot return a value." }, + Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature must be assignable to the instance type of the class" }, + All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: ts.DiagnosticCategory.Error, key: "All symbols within a 'with' block will be resolved to 'any'." }, + Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, + Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, + Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: ts.DiagnosticCategory.Error, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, + Class_name_cannot_be_0: { code: 2414, category: ts.DiagnosticCategory.Error, key: "Class name cannot be '{0}'" }, + Class_0_incorrectly_extends_base_class_1: { code: 2415, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}'." }, + Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: ts.DiagnosticCategory.Error, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, + Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: ts.DiagnosticCategory.Error, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, + Class_0_incorrectly_implements_interface_1: { code: 2420, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}'." }, + A_class_may_only_implement_another_class_or_interface: { code: 2422, category: ts.DiagnosticCategory.Error, key: "A class may only implement another class or interface." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, + Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, + Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, + Interface_name_cannot_be_0: { code: 2427, category: ts.DiagnosticCategory.Error, key: "Interface name cannot be '{0}'" }, + All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: ts.DiagnosticCategory.Error, key: "All declarations of an interface must have identical type parameters." }, + Interface_0_incorrectly_extends_interface_1: { code: 2430, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}'." }, + Enum_name_cannot_be_0: { code: 2431, category: ts.DiagnosticCategory.Error, key: "Enum name cannot be '{0}'" }, + In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: ts.DiagnosticCategory.Error, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, + A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, + A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, + Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: ts.DiagnosticCategory.Error, key: "Ambient external modules cannot be nested in other modules." }, + Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: ts.DiagnosticCategory.Error, key: "Ambient external module declaration cannot specify relative module name." }, + Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: ts.DiagnosticCategory.Error, key: "Module '{0}' is hidden by a local declaration with the same name" }, + Import_name_cannot_be_0: { code: 2438, category: ts.DiagnosticCategory.Error, key: "Import name cannot be '{0}'" }, + Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: ts.DiagnosticCategory.Error, key: "Import or export declaration in an ambient external module declaration cannot reference external module through relative external module name." }, + Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: ts.DiagnosticCategory.Error, key: "Import declaration conflicts with local declaration of '{0}'" }, + Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, + Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: ts.DiagnosticCategory.Error, key: "Types have separate declarations of a private property '{0}'." }, + Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, + Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, + Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, + Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, + The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, + Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: ts.DiagnosticCategory.Error, key: "Block-scoped variable '{0}' used before its declaration." }, + The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator cannot be a constant." }, + Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: ts.DiagnosticCategory.Error, key: "Left-hand side of assignment expression cannot be a constant." }, + Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare block-scoped variable '{0}'." }, + An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An enum member cannot have a numeric name." }, + The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, + Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type alias '{0}' circularly references itself." }, + Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type alias name cannot be '{0}'" }, + An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: ts.DiagnosticCategory.Error, key: "An AMD module cannot have multiple name assignments." }, + Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}' and no string index signature." }, + Type_0_has_no_property_1: { code: 2460, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}'." }, + Type_0_is_not_an_array_type: { code: 2461, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type." }, + A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: ts.DiagnosticCategory.Error, key: "A rest element must be last in an array destructuring pattern" }, + A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: ts.DiagnosticCategory.Error, key: "A binding pattern parameter cannot be optional in an implementation signature." }, + A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: ts.DiagnosticCategory.Error, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, + this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a computed property name." }, + super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in a computed property name." }, + A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: ts.DiagnosticCategory.Error, key: "A computed property name cannot reference a type parameter from its containing type." }, + Cannot_find_global_value_0: { code: 2468, category: ts.DiagnosticCategory.Error, key: "Cannot find global value '{0}'." }, + The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator cannot be applied to type 'symbol'." }, + Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: ts.DiagnosticCategory.Error, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, + A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: ts.DiagnosticCategory.Error, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, + Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: ts.DiagnosticCategory.Error, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, + Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: ts.DiagnosticCategory.Error, key: "Enum declarations must all be const or non-const." }, + In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: ts.DiagnosticCategory.Error, key: "In 'const' enum declarations member initializer must be constant expression." }, + const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: ts.DiagnosticCategory.Error, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, + A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: ts.DiagnosticCategory.Error, key: "A const enum member can only be accessed using a string literal." }, + const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to a non-finite value." }, + const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, + Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, + let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: ts.DiagnosticCategory.Error, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, + Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: ts.DiagnosticCategory.Error, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, + The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, + Export_declaration_conflicts_with_exported_declaration_of_0: { code: 2484, category: ts.DiagnosticCategory.Error, key: "Export declaration conflicts with exported declaration of '{0}'" }, + The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant: { code: 2485, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot be a previously defined constant." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant: { code: 2486, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a previously defined constant." }, + Invalid_left_hand_side_in_for_of_statement: { code: 2487, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...of' statement." }, + The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { code: 2488, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator." }, + The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method: { code: 2489, category: ts.DiagnosticCategory.Error, key: "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method." }, + The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property: { code: 2490, category: ts.DiagnosticCategory.Error, key: "The type returned by the 'next()' method of an iterator must have a 'value' property." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: { code: 2491, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a destructuring pattern." }, + Cannot_redeclare_identifier_0_in_catch_clause: { code: 2492, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare identifier '{0}' in catch clause" }, + Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2: { code: 2493, category: ts.DiagnosticCategory.Error, key: "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'." }, + Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: { code: 2494, category: ts.DiagnosticCategory.Error, key: "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher." }, + Type_0_is_not_an_array_type_or_a_string_type: { code: 2495, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type or a string type." }, + The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 2496, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, + External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { code: 2497, category: ts.DiagnosticCategory.Error, key: "External module '{0}' resolves to a non-module entity and cannot be imported using this construct." }, + External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { code: 2498, category: ts.DiagnosticCategory.Error, key: "External module '{0}' uses 'export =' and cannot be used with 'export *'." }, + An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2499, category: ts.DiagnosticCategory.Error, key: "An interface can only extend an identifier/qualified-name with optional type arguments." }, + A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2500, category: ts.DiagnosticCategory.Error, key: "A class can only implement an identifier/qualified-name with optional type arguments." }, + Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, + Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, + Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, + Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: ts.DiagnosticCategory.Error, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, + Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, + Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, + Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using private name '{1}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, + Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, + Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using private name '{0}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using private name '{0}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using private name '{0}'." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, + Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using private name '{0}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, + Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported type alias '{0}' has or is using private name '{1}'." }, + Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default export of the module has or is using private name '{0}'." }, + Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher: { code: 4091, category: ts.DiagnosticCategory.Error, key: "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher." }, + The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The current host does not support the '{0}' option." }, + Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot find the common subdirectory path for the input files." }, + Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot read file '{0}': {1}" }, + Unsupported_file_encoding: { code: 5013, category: ts.DiagnosticCategory.Error, key: "Unsupported file encoding." }, + Unknown_compiler_option_0: { code: 5023, category: ts.DiagnosticCategory.Error, key: "Unknown compiler option '{0}'." }, + Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' requires a value of type {1}." }, + Could_not_write_file_0_Colon_1: { code: 5033, category: ts.DiagnosticCategory.Error, key: "Could not write file '{0}': {1}" }, + Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, + Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, + Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." }, + Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." }, + Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." }, + Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." }, + Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." }, + Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." }, + Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate and emit output to single file." }, + Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.d.ts' file." }, + Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate map files instead of generated locations." }, + Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch input files." }, + Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect output structure to the directory." }, + Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do not erase const enum declarations in generated code." }, + Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs if any type checking errors were reported." }, + Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do not emit comments to output." }, + Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs." }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, + Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs' or 'amd'" }, + Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print this message." }, + Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print the compiler's version." }, + Compile_the_project_in_the_given_directory: { code: 6020, category: ts.DiagnosticCategory.Message, key: "Compile the project in the given directory." }, + Syntax_Colon_0: { code: 6023, category: ts.DiagnosticCategory.Message, key: "Syntax: {0}" }, + options: { code: 6024, category: ts.DiagnosticCategory.Message, key: "options" }, + file: { code: 6025, category: ts.DiagnosticCategory.Message, key: "file" }, + Examples_Colon_0: { code: 6026, category: ts.DiagnosticCategory.Message, key: "Examples: {0}" }, + Options_Colon: { code: 6027, category: ts.DiagnosticCategory.Message, key: "Options:" }, + Version_0: { code: 6029, category: ts.DiagnosticCategory.Message, key: "Version {0}" }, + Insert_command_line_options_and_files_from_a_file: { code: 6030, category: ts.DiagnosticCategory.Message, key: "Insert command line options and files from a file." }, + File_change_detected_Starting_incremental_compilation: { code: 6032, category: ts.DiagnosticCategory.Message, key: "File change detected. Starting incremental compilation..." }, + KIND: { code: 6034, category: ts.DiagnosticCategory.Message, key: "KIND" }, + FILE: { code: 6035, category: ts.DiagnosticCategory.Message, key: "FILE" }, + VERSION: { code: 6036, category: ts.DiagnosticCategory.Message, key: "VERSION" }, + LOCATION: { code: 6037, category: ts.DiagnosticCategory.Message, key: "LOCATION" }, + DIRECTORY: { code: 6038, category: ts.DiagnosticCategory.Message, key: "DIRECTORY" }, + Compilation_complete_Watching_for_file_changes: { code: 6042, category: ts.DiagnosticCategory.Message, key: "Compilation complete. Watching for file changes." }, + Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.map' file." }, + Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' expects an argument." }, + Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated quoted string in response file '{0}'." }, + Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, + Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, + Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, + Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported locale '{0}'." }, + Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable to open file '{0}'." }, + Corrupted_locale_file_0: { code: 6051, category: ts.DiagnosticCategory.Error, key: "Corrupted locale file {0}." }, + Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: ts.DiagnosticCategory.Message, key: "Raise error on expressions and declarations with an implied 'any' type." }, + File_0_not_found: { code: 6053, category: ts.DiagnosticCategory.Error, key: "File '{0}' not found." }, + File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, + Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, + Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do not emit declarations for code that has an '@internal' annotation." }, + Preserve_new_lines_when_emitting_code: { code: 6057, category: ts.DiagnosticCategory.Message, key: "Preserve new-lines when emitting code." }, + Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." }, + Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." }, + Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member '{0}' implicitly has an '{1}' type." }, + new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: ts.DiagnosticCategory.Error, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, + _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: ts.DiagnosticCategory.Error, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, + Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: ts.DiagnosticCategory.Error, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, + Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: ts.DiagnosticCategory.Error, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: ts.DiagnosticCategory.Error, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, + Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: ts.DiagnosticCategory.Error, key: "Index signature of object type implicitly has an 'any' type." }, + Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: ts.DiagnosticCategory.Error, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, + Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: ts.DiagnosticCategory.Error, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, + Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: ts.DiagnosticCategory.Error, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, + _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, + _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: ts.DiagnosticCategory.Error, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You cannot rename this element." }, + You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You cannot rename elements that are defined in the standard TypeScript library." }, + yield_expressions_are_not_currently_supported: { code: 9000, category: ts.DiagnosticCategory.Error, key: "'yield' expressions are not currently supported." }, + Generators_are_not_currently_supported: { code: 9001, category: ts.DiagnosticCategory.Error, key: "Generators are not currently supported." }, + Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { code: 9002, category: ts.DiagnosticCategory.Error, key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." }, + class_expressions_are_not_currently_supported: { code: 9003, category: ts.DiagnosticCategory.Error, key: "'class' expressions are not currently supported." }, + class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration: { code: 9004, category: ts.DiagnosticCategory.Error, key: "'class' declarations are only supported directly inside a module or as a top level declaration." } + }; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + var textToToken = { + "any": 112, + "as": 102, + "boolean": 113, + "break": 66, + "case": 67, + "catch": 68, + "class": 69, + "continue": 71, + "const": 70, + "constructor": 114, + "debugger": 72, + "declare": 115, + "default": 73, + "delete": 74, + "do": 75, + "else": 76, + "enum": 77, + "export": 78, + "extends": 79, + "false": 80, + "finally": 81, + "for": 82, + "from": 124, + "function": 83, + "get": 116, + "if": 84, + "implements": 103, + "import": 85, + "in": 86, + "instanceof": 87, + "interface": 104, + "let": 105, + "module": 117, + "new": 88, + "null": 89, + "number": 119, + "package": 106, + "private": 107, + "protected": 108, + "public": 109, + "require": 118, + "return": 90, + "set": 120, + "static": 110, + "string": 121, + "super": 91, + "switch": 92, + "symbol": 122, + "this": 93, + "throw": 94, + "true": 95, + "try": 96, + "type": 123, + "typeof": 97, + "var": 98, + "void": 99, + "while": 100, + "with": 101, + "yield": 111, + "of": 125, + "{": 14, + "}": 15, + "(": 16, + ")": 17, + "[": 18, + "]": 19, + ".": 20, + "...": 21, + ";": 22, + ",": 23, + "<": 24, + ">": 25, + "<=": 26, + ">=": 27, + "==": 28, + "!=": 29, + "===": 30, + "!==": 31, + "=>": 32, + "+": 33, + "-": 34, + "*": 35, + "/": 36, + "%": 37, + "++": 38, + "--": 39, + "<<": 40, + ">>": 41, + ">>>": 42, + "&": 43, + "|": 44, + "^": 45, + "!": 46, + "~": 47, + "&&": 48, + "||": 49, + "?": 50, + ":": 51, + "=": 53, + "+=": 54, + "-=": 55, + "*=": 56, + "/=": 57, + "%=": 58, + "<<=": 59, + ">>=": 60, + ">>>=": 61, + "&=": 62, + "|=": 63, + "^=": 64, + "@": 52 + }; + var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; + var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; + var unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; + var unicodeES5IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; + function lookupInUnicodeMap(code, map) { + if (code < map[0]) { + return false; + } + var lo = 0; + var hi = map.length; + var mid; + while (lo + 1 < hi) { + mid = lo + (hi - lo) / 2; + mid -= mid % 2; + if (map[mid] <= code && code <= map[mid + 1]) { + return true; + } + if (code < map[mid]) { + hi = mid; + } + else { + lo = mid + 2; + } + } + return false; + } + function isUnicodeIdentifierStart(code, languageVersion) { + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierStart) : + lookupInUnicodeMap(code, unicodeES3IdentifierStart); + } + ts.isUnicodeIdentifierStart = isUnicodeIdentifierStart; + function isUnicodeIdentifierPart(code, languageVersion) { + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierPart) : + lookupInUnicodeMap(code, unicodeES3IdentifierPart); + } + function makeReverseMap(source) { + var result = []; + for (var name_2 in source) { + if (source.hasOwnProperty(name_2)) { + result[source[name_2]] = name_2; + } + } + return result; + } + var tokenStrings = makeReverseMap(textToToken); + function tokenToString(t) { + return tokenStrings[t]; + } + ts.tokenToString = tokenToString; + function stringToToken(s) { + return textToToken[s]; + } + ts.stringToToken = stringToToken; + function computeLineStarts(text) { + var result = new Array(); + var pos = 0; + var lineStart = 0; + while (pos < text.length) { + var ch = text.charCodeAt(pos++); + switch (ch) { + case 13: + if (text.charCodeAt(pos) === 10) { + pos++; + } + case 10: + result.push(lineStart); + lineStart = pos; + break; + default: + if (ch > 127 && isLineBreak(ch)) { + result.push(lineStart); + lineStart = pos; + } + break; + } + } + result.push(lineStart); + return result; + } + ts.computeLineStarts = computeLineStarts; + function getPositionOfLineAndCharacter(sourceFile, line, character) { + return computePositionOfLineAndCharacter(getLineStarts(sourceFile), line, character); + } + ts.getPositionOfLineAndCharacter = getPositionOfLineAndCharacter; + function computePositionOfLineAndCharacter(lineStarts, line, character) { + ts.Debug.assert(line >= 0 && line < lineStarts.length); + return lineStarts[line] + character; + } + ts.computePositionOfLineAndCharacter = computePositionOfLineAndCharacter; + function getLineStarts(sourceFile) { + return sourceFile.lineMap || (sourceFile.lineMap = computeLineStarts(sourceFile.text)); + } + ts.getLineStarts = getLineStarts; + function computeLineAndCharacterOfPosition(lineStarts, position) { + var lineNumber = ts.binarySearch(lineStarts, position); + if (lineNumber < 0) { + lineNumber = ~lineNumber - 1; + } + return { + line: lineNumber, + character: position - lineStarts[lineNumber] + }; + } + ts.computeLineAndCharacterOfPosition = computeLineAndCharacterOfPosition; + function getLineAndCharacterOfPosition(sourceFile, position) { + return computeLineAndCharacterOfPosition(getLineStarts(sourceFile), position); + } + ts.getLineAndCharacterOfPosition = getLineAndCharacterOfPosition; + var hasOwnProperty = Object.prototype.hasOwnProperty; + function isWhiteSpace(ch) { + return ch === 32 || + ch === 9 || + ch === 11 || + ch === 12 || + ch === 160 || + ch === 133 || + ch === 5760 || + ch >= 8192 && ch <= 8203 || + ch === 8239 || + ch === 8287 || + ch === 12288 || + ch === 65279; + } + ts.isWhiteSpace = isWhiteSpace; + function isLineBreak(ch) { + // ES5 7.3: + // The ECMAScript line terminator characters are listed in Table 3. + // Table 3 � Line Terminator Characters + // Code Unit Value Name Formal Name + // \u000A Line Feed + // \u000D Carriage Return + // \u2028 Line separator + // \u2029 Paragraph separator + // Only the characters in Table 3 are treated as line terminators. Other new line or line + // breaking characters are treated as white space but not as line terminators. + return ch === 10 || + ch === 13 || + ch === 8232 || + ch === 8233; + } + ts.isLineBreak = isLineBreak; + function isDigit(ch) { + return ch >= 48 && ch <= 57; + } + function isOctalDigit(ch) { + return ch >= 48 && ch <= 55; + } + ts.isOctalDigit = isOctalDigit; + function skipTrivia(text, pos, stopAfterLineBreak) { + while (true) { + var ch = text.charCodeAt(pos); + switch (ch) { + case 13: + if (text.charCodeAt(pos + 1) === 10) { + pos++; + } + case 10: + pos++; + if (stopAfterLineBreak) { + return pos; + } + continue; + case 9: + case 11: + case 12: + case 32: + pos++; + continue; + case 47: + if (text.charCodeAt(pos + 1) === 47) { + pos += 2; + while (pos < text.length) { + if (isLineBreak(text.charCodeAt(pos))) { + break; + } + pos++; + } + continue; + } + if (text.charCodeAt(pos + 1) === 42) { + pos += 2; + while (pos < text.length) { + if (text.charCodeAt(pos) === 42 && text.charCodeAt(pos + 1) === 47) { + pos += 2; + break; + } + pos++; + } + continue; + } + break; + case 60: + case 61: + case 62: + if (isConflictMarkerTrivia(text, pos)) { + pos = scanConflictMarkerTrivia(text, pos); + continue; + } + break; + default: + if (ch > 127 && (isWhiteSpace(ch) || isLineBreak(ch))) { + pos++; + continue; + } + break; + } + return pos; + } + } + ts.skipTrivia = skipTrivia; + var mergeConflictMarkerLength = "<<<<<<<".length; + function isConflictMarkerTrivia(text, pos) { + ts.Debug.assert(pos >= 0); + if (pos === 0 || isLineBreak(text.charCodeAt(pos - 1))) { + var ch = text.charCodeAt(pos); + if ((pos + mergeConflictMarkerLength) < text.length) { + for (var i = 0, n = mergeConflictMarkerLength; i < n; i++) { + if (text.charCodeAt(pos + i) !== ch) { + return false; + } + } + return ch === 61 || + text.charCodeAt(pos + mergeConflictMarkerLength) === 32; + } + } + return false; + } + function scanConflictMarkerTrivia(text, pos, error) { + if (error) { + error(ts.Diagnostics.Merge_conflict_marker_encountered, mergeConflictMarkerLength); + } + var ch = text.charCodeAt(pos); + var len = text.length; + if (ch === 60 || ch === 62) { + while (pos < len && !isLineBreak(text.charCodeAt(pos))) { + pos++; + } + } + else { + ts.Debug.assert(ch === 61); + while (pos < len) { + var ch_1 = text.charCodeAt(pos); + if (ch_1 === 62 && isConflictMarkerTrivia(text, pos)) { + break; + } + pos++; + } + } + return pos; + } + function getCommentRanges(text, pos, trailing) { + var result; + var collecting = trailing || pos === 0; + while (true) { + var ch = text.charCodeAt(pos); + switch (ch) { + case 13: + if (text.charCodeAt(pos + 1) === 10) { + pos++; + } + case 10: + pos++; + if (trailing) { + return result; + } + collecting = true; + if (result && result.length) { + result[result.length - 1].hasTrailingNewLine = true; + } + continue; + case 9: + case 11: + case 12: + case 32: + pos++; + continue; + case 47: + var nextChar = text.charCodeAt(pos + 1); + var hasTrailingNewLine = false; + if (nextChar === 47 || nextChar === 42) { + var startPos = pos; + pos += 2; + if (nextChar === 47) { + while (pos < text.length) { + if (isLineBreak(text.charCodeAt(pos))) { + hasTrailingNewLine = true; + break; + } + pos++; + } + } + else { + while (pos < text.length) { + if (text.charCodeAt(pos) === 42 && text.charCodeAt(pos + 1) === 47) { + pos += 2; + break; + } + pos++; + } + } + if (collecting) { + if (!result) { + result = []; + } + result.push({ pos: startPos, end: pos, hasTrailingNewLine: hasTrailingNewLine }); + } + continue; + } + break; + default: + if (ch > 127 && (isWhiteSpace(ch) || isLineBreak(ch))) { + if (result && result.length && isLineBreak(ch)) { + result[result.length - 1].hasTrailingNewLine = true; + } + pos++; + continue; + } + break; + } + return result; + } + } + function getLeadingCommentRanges(text, pos) { + return getCommentRanges(text, pos, false); + } + ts.getLeadingCommentRanges = getLeadingCommentRanges; + function getTrailingCommentRanges(text, pos) { + return getCommentRanges(text, pos, true); + } + ts.getTrailingCommentRanges = getTrailingCommentRanges; + function isIdentifierStart(ch, languageVersion) { + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || + ch === 36 || ch === 95 || + ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); + } + ts.isIdentifierStart = isIdentifierStart; + function isIdentifierPart(ch, languageVersion) { + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || + ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || + ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); + } + ts.isIdentifierPart = isIdentifierPart; + function createScanner(languageVersion, skipTrivia, text, onError) { + var pos; + var len; + var startPos; + var tokenPos; + var token; + var tokenValue; + var precedingLineBreak; + var hasExtendedUnicodeEscape; + var tokenIsUnterminated; + function error(message, length) { + if (onError) { + onError(message, length || 0); + } + } + function isIdentifierStart(ch) { + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || + ch === 36 || ch === 95 || + ch > 127 && isUnicodeIdentifierStart(ch, languageVersion); + } + function isIdentifierPart(ch) { + return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || + ch >= 48 && ch <= 57 || ch === 36 || ch === 95 || + ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); + } + function scanNumber() { + var start = pos; + while (isDigit(text.charCodeAt(pos))) + pos++; + if (text.charCodeAt(pos) === 46) { + pos++; + while (isDigit(text.charCodeAt(pos))) + pos++; + } + var end = pos; + if (text.charCodeAt(pos) === 69 || text.charCodeAt(pos) === 101) { + pos++; + if (text.charCodeAt(pos) === 43 || text.charCodeAt(pos) === 45) + pos++; + if (isDigit(text.charCodeAt(pos))) { + pos++; + while (isDigit(text.charCodeAt(pos))) + pos++; + end = pos; + } + else { + error(ts.Diagnostics.Digit_expected); + } + } + return +(text.substring(start, end)); + } + function scanOctalDigits() { + var start = pos; + while (isOctalDigit(text.charCodeAt(pos))) { + pos++; + } + return +(text.substring(start, pos)); + } + function scanExactNumberOfHexDigits(count) { + return scanHexDigits(count, false); + } + function scanMinimumNumberOfHexDigits(count) { + return scanHexDigits(count, true); + } + function scanHexDigits(minCount, scanAsManyAsPossible) { + var digits = 0; + var value = 0; + while (digits < minCount || scanAsManyAsPossible) { + var ch = text.charCodeAt(pos); + if (ch >= 48 && ch <= 57) { + value = value * 16 + ch - 48; + } + else if (ch >= 65 && ch <= 70) { + value = value * 16 + ch - 65 + 10; + } + else if (ch >= 97 && ch <= 102) { + value = value * 16 + ch - 97 + 10; + } + else { + break; + } + pos++; + digits++; + } + if (digits < minCount) { + value = -1; + } + return value; + } + function scanString() { + var quote = text.charCodeAt(pos++); + var result = ""; + var start = pos; + while (true) { + if (pos >= len) { + result += text.substring(start, pos); + tokenIsUnterminated = true; + error(ts.Diagnostics.Unterminated_string_literal); + break; + } + var ch = text.charCodeAt(pos); + if (ch === quote) { + result += text.substring(start, pos); + pos++; + break; + } + if (ch === 92) { + result += text.substring(start, pos); + result += scanEscapeSequence(); + start = pos; + continue; + } + if (isLineBreak(ch)) { + result += text.substring(start, pos); + tokenIsUnterminated = true; + error(ts.Diagnostics.Unterminated_string_literal); + break; + } + pos++; + } + return result; + } + function scanTemplateAndSetTokenValue() { + var startedWithBacktick = text.charCodeAt(pos) === 96; + pos++; + var start = pos; + var contents = ""; + var resultingToken; + while (true) { + if (pos >= len) { + contents += text.substring(start, pos); + tokenIsUnterminated = true; + error(ts.Diagnostics.Unterminated_template_literal); + resultingToken = startedWithBacktick ? 10 : 13; + break; + } + var currChar = text.charCodeAt(pos); + if (currChar === 96) { + contents += text.substring(start, pos); + pos++; + resultingToken = startedWithBacktick ? 10 : 13; + break; + } + if (currChar === 36 && pos + 1 < len && text.charCodeAt(pos + 1) === 123) { + contents += text.substring(start, pos); + pos += 2; + resultingToken = startedWithBacktick ? 11 : 12; + break; + } + if (currChar === 92) { + contents += text.substring(start, pos); + contents += scanEscapeSequence(); + start = pos; + continue; + } + if (currChar === 13) { + contents += text.substring(start, pos); + pos++; + if (pos < len && text.charCodeAt(pos) === 10) { + pos++; + } + contents += "\n"; + start = pos; + continue; + } + pos++; + } + ts.Debug.assert(resultingToken !== undefined); + tokenValue = contents; + return resultingToken; + } + function scanEscapeSequence() { + pos++; + if (pos >= len) { + error(ts.Diagnostics.Unexpected_end_of_text); + return ""; + } + var ch = text.charCodeAt(pos++); + switch (ch) { + case 48: + return "\0"; + case 98: + return "\b"; + case 116: + return "\t"; + case 110: + return "\n"; + case 118: + return "\v"; + case 102: + return "\f"; + case 114: + return "\r"; + case 39: + return "\'"; + case 34: + return "\""; + case 117: + if (pos < len && text.charCodeAt(pos) === 123) { + hasExtendedUnicodeEscape = true; + pos++; + return scanExtendedUnicodeEscape(); + } + return scanHexadecimalEscape(4); + case 120: + return scanHexadecimalEscape(2); + case 13: + if (pos < len && text.charCodeAt(pos) === 10) { + pos++; + } + case 10: + case 8232: + case 8233: + return ""; + default: + return String.fromCharCode(ch); + } + } + function scanHexadecimalEscape(numDigits) { + var escapedValue = scanExactNumberOfHexDigits(numDigits); + if (escapedValue >= 0) { + return String.fromCharCode(escapedValue); + } + else { + error(ts.Diagnostics.Hexadecimal_digit_expected); + return ""; + } + } + function scanExtendedUnicodeEscape() { + var escapedValue = scanMinimumNumberOfHexDigits(1); + var isInvalidExtendedEscape = false; + if (escapedValue < 0) { + error(ts.Diagnostics.Hexadecimal_digit_expected); + isInvalidExtendedEscape = true; + } + else if (escapedValue > 0x10FFFF) { + error(ts.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive); + isInvalidExtendedEscape = true; + } + if (pos >= len) { + error(ts.Diagnostics.Unexpected_end_of_text); + isInvalidExtendedEscape = true; + } + else if (text.charCodeAt(pos) == 125) { + pos++; + } + else { + error(ts.Diagnostics.Unterminated_Unicode_escape_sequence); + isInvalidExtendedEscape = true; + } + if (isInvalidExtendedEscape) { + return ""; + } + return utf16EncodeAsString(escapedValue); + } + function utf16EncodeAsString(codePoint) { + ts.Debug.assert(0x0 <= codePoint && codePoint <= 0x10FFFF); + if (codePoint <= 65535) { + return String.fromCharCode(codePoint); + } + var codeUnit1 = Math.floor((codePoint - 65536) / 1024) + 0xD800; + var codeUnit2 = ((codePoint - 65536) % 1024) + 0xDC00; + return String.fromCharCode(codeUnit1, codeUnit2); + } + function peekUnicodeEscape() { + if (pos + 5 < len && text.charCodeAt(pos + 1) === 117) { + var start = pos; + pos += 2; + var value = scanExactNumberOfHexDigits(4); + pos = start; + return value; + } + return -1; + } + function scanIdentifierParts() { + var result = ""; + var start = pos; + while (pos < len) { + var ch = text.charCodeAt(pos); + if (isIdentifierPart(ch)) { + pos++; + } + else if (ch === 92) { + ch = peekUnicodeEscape(); + if (!(ch >= 0 && isIdentifierPart(ch))) { + break; + } + result += text.substring(start, pos); + result += String.fromCharCode(ch); + pos += 6; + start = pos; + } + else { + break; + } + } + result += text.substring(start, pos); + return result; + } + function getIdentifierToken() { + var len = tokenValue.length; + if (len >= 2 && len <= 11) { + var ch = tokenValue.charCodeAt(0); + if (ch >= 97 && ch <= 122 && hasOwnProperty.call(textToToken, tokenValue)) { + return token = textToToken[tokenValue]; + } + } + return token = 65; + } + function scanBinaryOrOctalDigits(base) { + ts.Debug.assert(base !== 2 || base !== 8, "Expected either base 2 or base 8"); + var value = 0; + var numberOfDigits = 0; + while (true) { + var ch = text.charCodeAt(pos); + var valueOfCh = ch - 48; + if (!isDigit(ch) || valueOfCh >= base) { + break; + } + value = value * base + valueOfCh; + pos++; + numberOfDigits++; + } + if (numberOfDigits === 0) { + return -1; + } + return value; + } + function scan() { + startPos = pos; + hasExtendedUnicodeEscape = false; + precedingLineBreak = false; + tokenIsUnterminated = false; + while (true) { + tokenPos = pos; + if (pos >= len) { + return token = 1; + } + var ch = text.charCodeAt(pos); + switch (ch) { + case 10: + case 13: + precedingLineBreak = true; + if (skipTrivia) { + pos++; + continue; + } + else { + if (ch === 13 && pos + 1 < len && text.charCodeAt(pos + 1) === 10) { + pos += 2; + } + else { + pos++; + } + return token = 4; + } + case 9: + case 11: + case 12: + case 32: + if (skipTrivia) { + pos++; + continue; + } + else { + while (pos < len && isWhiteSpace(text.charCodeAt(pos))) { + pos++; + } + return token = 5; + } + case 33: + if (text.charCodeAt(pos + 1) === 61) { + if (text.charCodeAt(pos + 2) === 61) { + return pos += 3, token = 31; + } + return pos += 2, token = 29; + } + return pos++, token = 46; + case 34: + case 39: + tokenValue = scanString(); + return token = 8; + case 96: + return token = scanTemplateAndSetTokenValue(); + case 37: + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 58; + } + return pos++, token = 37; + case 38: + if (text.charCodeAt(pos + 1) === 38) { + return pos += 2, token = 48; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 62; + } + return pos++, token = 43; + case 40: + return pos++, token = 16; + case 41: + return pos++, token = 17; + case 42: + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 56; + } + return pos++, token = 35; + case 43: + if (text.charCodeAt(pos + 1) === 43) { + return pos += 2, token = 38; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 54; + } + return pos++, token = 33; + case 44: + return pos++, token = 23; + case 45: + if (text.charCodeAt(pos + 1) === 45) { + return pos += 2, token = 39; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 55; + } + return pos++, token = 34; + case 46: + if (isDigit(text.charCodeAt(pos + 1))) { + tokenValue = "" + scanNumber(); + return token = 7; + } + if (text.charCodeAt(pos + 1) === 46 && text.charCodeAt(pos + 2) === 46) { + return pos += 3, token = 21; + } + return pos++, token = 20; + case 47: + if (text.charCodeAt(pos + 1) === 47) { + pos += 2; + while (pos < len) { + if (isLineBreak(text.charCodeAt(pos))) { + break; + } + pos++; + } + if (skipTrivia) { + continue; + } + else { + return token = 2; + } + } + if (text.charCodeAt(pos + 1) === 42) { + pos += 2; + var commentClosed = false; + while (pos < len) { + var ch_2 = text.charCodeAt(pos); + if (ch_2 === 42 && text.charCodeAt(pos + 1) === 47) { + pos += 2; + commentClosed = true; + break; + } + if (isLineBreak(ch_2)) { + precedingLineBreak = true; + } + pos++; + } + if (!commentClosed) { + error(ts.Diagnostics.Asterisk_Slash_expected); + } + if (skipTrivia) { + continue; + } + else { + tokenIsUnterminated = !commentClosed; + return token = 3; + } + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 57; + } + return pos++, token = 36; + case 48: + if (pos + 2 < len && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { + pos += 2; + var value = scanMinimumNumberOfHexDigits(1); + if (value < 0) { + error(ts.Diagnostics.Hexadecimal_digit_expected); + value = 0; + } + tokenValue = "" + value; + return token = 7; + } + else if (pos + 2 < len && (text.charCodeAt(pos + 1) === 66 || text.charCodeAt(pos + 1) === 98)) { + pos += 2; + var value = scanBinaryOrOctalDigits(2); + if (value < 0) { + error(ts.Diagnostics.Binary_digit_expected); + value = 0; + } + tokenValue = "" + value; + return token = 7; + } + else if (pos + 2 < len && (text.charCodeAt(pos + 1) === 79 || text.charCodeAt(pos + 1) === 111)) { + pos += 2; + var value = scanBinaryOrOctalDigits(8); + if (value < 0) { + error(ts.Diagnostics.Octal_digit_expected); + value = 0; + } + tokenValue = "" + value; + return token = 7; + } + if (pos + 1 < len && isOctalDigit(text.charCodeAt(pos + 1))) { + tokenValue = "" + scanOctalDigits(); + return token = 7; + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + tokenValue = "" + scanNumber(); + return token = 7; + case 58: + return pos++, token = 51; + case 59: + return pos++, token = 22; + case 60: + if (isConflictMarkerTrivia(text, pos)) { + pos = scanConflictMarkerTrivia(text, pos, error); + if (skipTrivia) { + continue; + } + else { + return token = 6; + } + } + if (text.charCodeAt(pos + 1) === 60) { + if (text.charCodeAt(pos + 2) === 61) { + return pos += 3, token = 59; + } + return pos += 2, token = 40; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 26; + } + return pos++, token = 24; + case 61: + if (isConflictMarkerTrivia(text, pos)) { + pos = scanConflictMarkerTrivia(text, pos, error); + if (skipTrivia) { + continue; + } + else { + return token = 6; + } + } + if (text.charCodeAt(pos + 1) === 61) { + if (text.charCodeAt(pos + 2) === 61) { + return pos += 3, token = 30; + } + return pos += 2, token = 28; + } + if (text.charCodeAt(pos + 1) === 62) { + return pos += 2, token = 32; + } + return pos++, token = 53; + case 62: + if (isConflictMarkerTrivia(text, pos)) { + pos = scanConflictMarkerTrivia(text, pos, error); + if (skipTrivia) { + continue; + } + else { + return token = 6; + } + } + return pos++, token = 25; + case 63: + return pos++, token = 50; + case 91: + return pos++, token = 18; + case 93: + return pos++, token = 19; + case 94: + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 64; + } + return pos++, token = 45; + case 123: + return pos++, token = 14; + case 124: + if (text.charCodeAt(pos + 1) === 124) { + return pos += 2, token = 49; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 63; + } + return pos++, token = 44; + case 125: + return pos++, token = 15; + case 126: + return pos++, token = 47; + case 64: + return pos++, token = 52; + case 92: + var cookedChar = peekUnicodeEscape(); + if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { + pos += 6; + tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); + return token = getIdentifierToken(); + } + error(ts.Diagnostics.Invalid_character); + return pos++, token = 0; + default: + if (isIdentifierStart(ch)) { + pos++; + while (pos < len && isIdentifierPart(ch = text.charCodeAt(pos))) + pos++; + tokenValue = text.substring(tokenPos, pos); + if (ch === 92) { + tokenValue += scanIdentifierParts(); + } + return token = getIdentifierToken(); + } + else if (isWhiteSpace(ch)) { + pos++; + continue; + } + else if (isLineBreak(ch)) { + precedingLineBreak = true; + pos++; + continue; + } + error(ts.Diagnostics.Invalid_character); + return pos++, token = 0; + } + } + } + function reScanGreaterToken() { + if (token === 25) { + if (text.charCodeAt(pos) === 62) { + if (text.charCodeAt(pos + 1) === 62) { + if (text.charCodeAt(pos + 2) === 61) { + return pos += 3, token = 61; + } + return pos += 2, token = 42; + } + if (text.charCodeAt(pos + 1) === 61) { + return pos += 2, token = 60; + } + return pos++, token = 41; + } + if (text.charCodeAt(pos) === 61) { + return pos++, token = 27; + } + } + return token; + } + function reScanSlashToken() { + if (token === 36 || token === 57) { + var p = tokenPos + 1; + var inEscape = false; + var inCharacterClass = false; + while (true) { + if (p >= len) { + tokenIsUnterminated = true; + error(ts.Diagnostics.Unterminated_regular_expression_literal); + break; + } + var ch = text.charCodeAt(p); + if (isLineBreak(ch)) { + tokenIsUnterminated = true; + error(ts.Diagnostics.Unterminated_regular_expression_literal); + break; + } + if (inEscape) { + inEscape = false; + } + else if (ch === 47 && !inCharacterClass) { + p++; + break; + } + else if (ch === 91) { + inCharacterClass = true; + } + else if (ch === 92) { + inEscape = true; + } + else if (ch === 93) { + inCharacterClass = false; + } + p++; + } + while (p < len && isIdentifierPart(text.charCodeAt(p))) { + p++; + } + pos = p; + tokenValue = text.substring(tokenPos, pos); + token = 9; + } + return token; + } + function reScanTemplateToken() { + ts.Debug.assert(token === 15, "'reScanTemplateToken' should only be called on a '}'"); + pos = tokenPos; + return token = scanTemplateAndSetTokenValue(); + } + function speculationHelper(callback, isLookahead) { + var savePos = pos; + var saveStartPos = startPos; + var saveTokenPos = tokenPos; + var saveToken = token; + var saveTokenValue = tokenValue; + var savePrecedingLineBreak = precedingLineBreak; + var result = callback(); + if (!result || isLookahead) { + pos = savePos; + startPos = saveStartPos; + tokenPos = saveTokenPos; + token = saveToken; + tokenValue = saveTokenValue; + precedingLineBreak = savePrecedingLineBreak; + } + return result; + } + function lookAhead(callback) { + return speculationHelper(callback, true); + } + function tryScan(callback) { + return speculationHelper(callback, false); + } + function setText(newText) { + text = newText || ""; + len = text.length; + setTextPos(0); + } + function setTextPos(textPos) { + pos = textPos; + startPos = textPos; + tokenPos = textPos; + token = 0; + precedingLineBreak = false; + } + setText(text); + return { + getStartPos: function () { return startPos; }, + getTextPos: function () { return pos; }, + getToken: function () { return token; }, + getTokenPos: function () { return tokenPos; }, + getTokenText: function () { return text.substring(tokenPos, pos); }, + getTokenValue: function () { return tokenValue; }, + hasExtendedUnicodeEscape: function () { return hasExtendedUnicodeEscape; }, + hasPrecedingLineBreak: function () { return precedingLineBreak; }, + isIdentifier: function () { return token === 65 || token > 101; }, + isReservedWord: function () { return token >= 66 && token <= 101; }, + isUnterminated: function () { return tokenIsUnterminated; }, + reScanGreaterToken: reScanGreaterToken, + reScanSlashToken: reScanSlashToken, + reScanTemplateToken: reScanTemplateToken, + scan: scan, + setText: setText, + setTextPos: setTextPos, + tryScan: tryScan, + lookAhead: lookAhead + }; + } + ts.createScanner = createScanner; +})(ts || (ts = {})); +/// +/// +/// +/// +var ts; +(function (ts) { + ts.optionDeclarations = [ + { + name: "charset", + type: "string" + }, + { + name: "declaration", + shortName: "d", + type: "boolean", + description: ts.Diagnostics.Generates_corresponding_d_ts_file + }, + { + name: "diagnostics", + type: "boolean" + }, + { + name: "emitBOM", + type: "boolean" + }, + { + name: "help", + shortName: "h", + type: "boolean", + description: ts.Diagnostics.Print_this_message + }, + { + name: "listFiles", + type: "boolean" + }, + { + name: "locale", + type: "string" + }, + { + name: "mapRoot", + type: "string", + isFilePath: true, + description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations, + paramType: ts.Diagnostics.LOCATION + }, + { + name: "module", + shortName: "m", + type: { + "commonjs": 1, + "amd": 2 + }, + description: ts.Diagnostics.Specify_module_code_generation_Colon_commonjs_or_amd, + paramType: ts.Diagnostics.KIND, + error: ts.Diagnostics.Argument_for_module_option_must_be_commonjs_or_amd + }, + { + name: "noEmit", + type: "boolean", + description: ts.Diagnostics.Do_not_emit_outputs + }, + { + name: "noEmitOnError", + type: "boolean", + description: ts.Diagnostics.Do_not_emit_outputs_if_any_type_checking_errors_were_reported + }, + { + name: "noImplicitAny", + type: "boolean", + description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type + }, + { + name: "noLib", + type: "boolean" + }, + { + name: "noResolve", + type: "boolean" + }, + { + name: "out", + type: "string", + description: ts.Diagnostics.Concatenate_and_emit_output_to_single_file, + paramType: ts.Diagnostics.FILE + }, + { + name: "outDir", + type: "string", + isFilePath: true, + description: ts.Diagnostics.Redirect_output_structure_to_the_directory, + paramType: ts.Diagnostics.DIRECTORY + }, + { + name: "preserveConstEnums", + type: "boolean", + description: ts.Diagnostics.Do_not_erase_const_enum_declarations_in_generated_code + }, + { + name: "project", + shortName: "p", + type: "string", + isFilePath: true, + description: ts.Diagnostics.Compile_the_project_in_the_given_directory, + paramType: ts.Diagnostics.DIRECTORY + }, + { + name: "removeComments", + type: "boolean", + description: ts.Diagnostics.Do_not_emit_comments_to_output + }, + { + name: "separateCompilation", + type: "boolean" + }, + { + name: "sourceMap", + type: "boolean", + description: ts.Diagnostics.Generates_corresponding_map_file + }, + { + name: "sourceRoot", + type: "string", + isFilePath: true, + description: ts.Diagnostics.Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations, + paramType: ts.Diagnostics.LOCATION + }, + { + name: "suppressImplicitAnyIndexErrors", + type: "boolean", + description: ts.Diagnostics.Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures + }, + { + name: "stripInternal", + type: "boolean", + description: ts.Diagnostics.Do_not_emit_declarations_for_code_that_has_an_internal_annotation, + experimental: true + }, + { + name: "target", + shortName: "t", + type: { "es3": 0, "es5": 1, "es6": 2 }, + description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental, + paramType: ts.Diagnostics.VERSION, + error: ts.Diagnostics.Argument_for_target_option_must_be_es3_es5_or_es6 + }, + { + name: "version", + shortName: "v", + type: "boolean", + description: ts.Diagnostics.Print_the_compiler_s_version + }, + { + name: "watch", + shortName: "w", + type: "boolean", + description: ts.Diagnostics.Watch_input_files + } + ]; + function parseCommandLine(commandLine) { + var options = {}; + var fileNames = []; + var errors = []; + var shortOptionNames = {}; + var optionNameMap = {}; + ts.forEach(ts.optionDeclarations, function (option) { + optionNameMap[option.name.toLowerCase()] = option; + if (option.shortName) { + shortOptionNames[option.shortName] = option.name; + } + }); + parseStrings(commandLine); + return { + options: options, + fileNames: fileNames, + errors: errors + }; + function parseStrings(args) { + var i = 0; + while (i < args.length) { + var s = args[i++]; + if (s.charCodeAt(0) === 64) { + parseResponseFile(s.slice(1)); + } + else if (s.charCodeAt(0) === 45) { + s = s.slice(s.charCodeAt(1) === 45 ? 2 : 1).toLowerCase(); + if (ts.hasProperty(shortOptionNames, s)) { + s = shortOptionNames[s]; + } + if (ts.hasProperty(optionNameMap, s)) { + var opt = optionNameMap[s]; + if (!args[i] && opt.type !== "boolean") { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_expects_an_argument, opt.name)); + } + switch (opt.type) { + case "number": + options[opt.name] = parseInt(args[i++]); + break; + case "boolean": + options[opt.name] = true; + break; + case "string": + options[opt.name] = args[i++] || ""; + break; + default: + var map = opt.type; + var key = (args[i++] || "").toLowerCase(); + if (ts.hasProperty(map, key)) { + options[opt.name] = map[key]; + } + else { + errors.push(ts.createCompilerDiagnostic(opt.error)); + } + } + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, s)); + } + } + else { + fileNames.push(s); + } + } + } + function parseResponseFile(fileName) { + var text = ts.sys.readFile(fileName); + if (!text) { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.File_0_not_found, fileName)); + return; + } + var args = []; + var pos = 0; + while (true) { + while (pos < text.length && text.charCodeAt(pos) <= 32) + pos++; + if (pos >= text.length) + break; + var start = pos; + if (text.charCodeAt(start) === 34) { + pos++; + while (pos < text.length && text.charCodeAt(pos) !== 34) + pos++; + if (pos < text.length) { + args.push(text.substring(start + 1, pos)); + pos++; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unterminated_quoted_string_in_response_file_0, fileName)); + } + } + else { + while (text.charCodeAt(pos) > 32) + pos++; + args.push(text.substring(start, pos)); + } + } + parseStrings(args); + } + } + ts.parseCommandLine = parseCommandLine; + function readConfigFile(fileName) { + try { + var text = ts.sys.readFile(fileName); + return /\S/.test(text) ? JSON.parse(text) : {}; + } + catch (e) { + } + } + ts.readConfigFile = readConfigFile; + function parseConfigFile(json, basePath) { + var errors = []; + return { + options: getCompilerOptions(), + fileNames: getFiles(), + errors: errors + }; + function getCompilerOptions() { + var options = {}; + var optionNameMap = {}; + ts.forEach(ts.optionDeclarations, function (option) { + optionNameMap[option.name] = option; + }); + var jsonOptions = json["compilerOptions"]; + if (jsonOptions) { + for (var id in jsonOptions) { + if (ts.hasProperty(optionNameMap, id)) { + var opt = optionNameMap[id]; + var optType = opt.type; + var value = jsonOptions[id]; + var expectedType = typeof optType === "string" ? optType : "string"; + if (typeof value === expectedType) { + if (typeof optType !== "string") { + var key = value.toLowerCase(); + if (ts.hasProperty(optType, key)) { + value = optType[key]; + } + else { + errors.push(ts.createCompilerDiagnostic(opt.error)); + value = 0; + } + } + if (opt.isFilePath) { + value = ts.normalizePath(ts.combinePaths(basePath, value)); + } + options[opt.name] = value; + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, id, expectedType)); + } + } + else { + errors.push(ts.createCompilerDiagnostic(ts.Diagnostics.Unknown_compiler_option_0, id)); + } + } + } + return options; + } + function getFiles() { + var files = []; + if (ts.hasProperty(json, "files")) { + if (json["files"] instanceof Array) { + var files = ts.map(json["files"], function (s) { return ts.combinePaths(basePath, s); }); + } + } + else { + var sysFiles = ts.sys.readDirectory(basePath, ".ts"); + for (var i = 0; i < sysFiles.length; i++) { + var name = sysFiles[i]; + if (!ts.fileExtensionIs(name, ".d.ts") || !ts.contains(sysFiles, name.substr(0, name.length - 5) + ".ts")) { + files.push(name); + } + } + } + return files; + } + } + ts.parseConfigFile = parseConfigFile; +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + function getDeclarationOfKind(symbol, kind) { + var declarations = symbol.declarations; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + if (declaration.kind === kind) { + return declaration; + } + } + return undefined; + } + ts.getDeclarationOfKind = getDeclarationOfKind; + var stringWriters = []; + function getSingleLineStringWriter() { + if (stringWriters.length == 0) { + var str = ""; + var writeText = function (text) { return str += text; }; + return { + string: function () { return str; }, + writeKeyword: writeText, + writeOperator: writeText, + writePunctuation: writeText, + writeSpace: writeText, + writeStringLiteral: writeText, + writeParameter: writeText, + writeSymbol: writeText, + writeLine: function () { return str += " "; }, + increaseIndent: function () { }, + decreaseIndent: function () { }, + clear: function () { return str = ""; }, + trackSymbol: function () { } + }; + } + return stringWriters.pop(); + } + ts.getSingleLineStringWriter = getSingleLineStringWriter; + function releaseStringWriter(writer) { + writer.clear(); + stringWriters.push(writer); + } + ts.releaseStringWriter = releaseStringWriter; + function getFullWidth(node) { + return node.end - node.pos; + } + ts.getFullWidth = getFullWidth; + function containsParseError(node) { + aggregateChildData(node); + return (node.parserContextFlags & 64) !== 0; + } + ts.containsParseError = containsParseError; + function aggregateChildData(node) { + if (!(node.parserContextFlags & 128)) { + var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 32) !== 0) || + ts.forEachChild(node, containsParseError); + if (thisNodeOrAnySubNodesHasError) { + node.parserContextFlags |= 64; + } + node.parserContextFlags |= 128; + } + } + function getSourceFileOfNode(node) { + while (node && node.kind !== 227) { + node = node.parent; + } + return node; + } + ts.getSourceFileOfNode = getSourceFileOfNode; + function getStartPositionOfLine(line, sourceFile) { + ts.Debug.assert(line >= 0); + return ts.getLineStarts(sourceFile)[line]; + } + ts.getStartPositionOfLine = getStartPositionOfLine; + function nodePosToString(node) { + var file = getSourceFileOfNode(node); + var loc = ts.getLineAndCharacterOfPosition(file, node.pos); + return file.fileName + "(" + (loc.line + 1) + "," + (loc.character + 1) + ")"; + } + ts.nodePosToString = nodePosToString; + function getStartPosOfNode(node) { + return node.pos; + } + ts.getStartPosOfNode = getStartPosOfNode; + function nodeIsMissing(node) { + if (!node) { + return true; + } + return node.pos === node.end && node.kind !== 1; + } + ts.nodeIsMissing = nodeIsMissing; + function nodeIsPresent(node) { + return !nodeIsMissing(node); + } + ts.nodeIsPresent = nodeIsPresent; + function getTokenPosOfNode(node, sourceFile) { + if (nodeIsMissing(node)) { + return node.pos; + } + return ts.skipTrivia((sourceFile || getSourceFileOfNode(node)).text, node.pos); + } + ts.getTokenPosOfNode = getTokenPosOfNode; + function getSourceTextOfNodeFromSourceFile(sourceFile, node) { + if (nodeIsMissing(node)) { + return ""; + } + var text = sourceFile.text; + return text.substring(ts.skipTrivia(text, node.pos), node.end); + } + ts.getSourceTextOfNodeFromSourceFile = getSourceTextOfNodeFromSourceFile; + function getTextOfNodeFromSourceText(sourceText, node) { + if (nodeIsMissing(node)) { + return ""; + } + return sourceText.substring(ts.skipTrivia(sourceText, node.pos), node.end); + } + ts.getTextOfNodeFromSourceText = getTextOfNodeFromSourceText; + function getTextOfNode(node) { + return getSourceTextOfNodeFromSourceFile(getSourceFileOfNode(node), node); + } + ts.getTextOfNode = getTextOfNode; + function escapeIdentifier(identifier) { + return identifier.length >= 2 && identifier.charCodeAt(0) === 95 && identifier.charCodeAt(1) === 95 ? "_" + identifier : identifier; + } + ts.escapeIdentifier = escapeIdentifier; + function unescapeIdentifier(identifier) { + return identifier.length >= 3 && identifier.charCodeAt(0) === 95 && identifier.charCodeAt(1) === 95 && identifier.charCodeAt(2) === 95 ? identifier.substr(1) : identifier; + } + ts.unescapeIdentifier = unescapeIdentifier; + function makeIdentifierFromModuleName(moduleName) { + return ts.getBaseFileName(moduleName).replace(/\W/g, "_"); + } + ts.makeIdentifierFromModuleName = makeIdentifierFromModuleName; + function isBlockOrCatchScoped(declaration) { + return (getCombinedNodeFlags(declaration) & 12288) !== 0 || + isCatchClauseVariableDeclaration(declaration); + } + ts.isBlockOrCatchScoped = isBlockOrCatchScoped; + function getEnclosingBlockScopeContainer(node) { + var current = node; + while (current) { + if (isFunctionLike(current)) { + return current; + } + switch (current.kind) { + case 227: + case 207: + case 223: + case 205: + case 186: + case 187: + case 188: + return current; + case 179: + if (!isFunctionLike(current.parent)) { + return current; + } + } + current = current.parent; + } + } + ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; + function isCatchClauseVariableDeclaration(declaration) { + return declaration && + declaration.kind === 198 && + declaration.parent && + declaration.parent.kind === 223; + } + ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; + function declarationNameToString(name) { + return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name); + } + ts.declarationNameToString = declarationNameToString; + function createDiagnosticForNode(node, message, arg0, arg1, arg2) { + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); + return ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2); + } + ts.createDiagnosticForNode = createDiagnosticForNode; + function createDiagnosticForNodeFromMessageChain(node, messageChain) { + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); + return { + file: sourceFile, + start: span.start, + length: span.length, + code: messageChain.code, + category: messageChain.category, + messageText: messageChain.next ? messageChain : messageChain.messageText + }; + } + ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; + function getSpanOfTokenAtPosition(sourceFile, pos) { + var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); + scanner.setTextPos(pos); + scanner.scan(); + var start = scanner.getTokenPos(); + return createTextSpanFromBounds(start, scanner.getTextPos()); + } + ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForNode(sourceFile, node) { + var errorNode = node; + switch (node.kind) { + case 227: + var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); + if (pos_1 === sourceFile.text.length) { + return createTextSpan(0, 0); + } + return getSpanOfTokenAtPosition(sourceFile, pos_1); + case 198: + case 152: + case 201: + case 174: + case 202: + case 205: + case 204: + case 226: + case 200: + case 162: + errorNode = node.name; + break; + } + if (errorNode === undefined) { + return getSpanOfTokenAtPosition(sourceFile, node.pos); + } + var pos = nodeIsMissing(errorNode) + ? errorNode.pos + : ts.skipTrivia(sourceFile.text, errorNode.pos); + return createTextSpanFromBounds(pos, errorNode.end); + } + ts.getErrorSpanForNode = getErrorSpanForNode; + function isExternalModule(file) { + return file.externalModuleIndicator !== undefined; + } + ts.isExternalModule = isExternalModule; + function isDeclarationFile(file) { + return (file.flags & 2048) !== 0; + } + ts.isDeclarationFile = isDeclarationFile; + function isConstEnumDeclaration(node) { + return node.kind === 204 && isConst(node); + } + ts.isConstEnumDeclaration = isConstEnumDeclaration; + function walkUpBindingElementsAndPatterns(node) { + while (node && (node.kind === 152 || isBindingPattern(node))) { + node = node.parent; + } + return node; + } + function getCombinedNodeFlags(node) { + node = walkUpBindingElementsAndPatterns(node); + var flags = node.flags; + if (node.kind === 198) { + node = node.parent; + } + if (node && node.kind === 199) { + flags |= node.flags; + node = node.parent; + } + if (node && node.kind === 180) { + flags |= node.flags; + } + return flags; + } + ts.getCombinedNodeFlags = getCombinedNodeFlags; + function isConst(node) { + return !!(getCombinedNodeFlags(node) & 8192); + } + ts.isConst = isConst; + function isLet(node) { + return !!(getCombinedNodeFlags(node) & 4096); + } + ts.isLet = isLet; + function isPrologueDirective(node) { + return node.kind === 182 && node.expression.kind === 8; + } + ts.isPrologueDirective = isPrologueDirective; + function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { + if (node.kind === 129 || node.kind === 128) { + return ts.concatenate(ts.getTrailingCommentRanges(sourceFileOfNode.text, node.pos), ts.getLeadingCommentRanges(sourceFileOfNode.text, node.pos)); + } + else { + return ts.getLeadingCommentRanges(sourceFileOfNode.text, node.pos); + } + } + ts.getLeadingCommentRangesOfNode = getLeadingCommentRangesOfNode; + function getJsDocComments(node, sourceFileOfNode) { + return ts.filter(getLeadingCommentRangesOfNode(node, sourceFileOfNode), isJsDocComment); + function isJsDocComment(comment) { + return sourceFileOfNode.text.charCodeAt(comment.pos + 1) === 42 && + sourceFileOfNode.text.charCodeAt(comment.pos + 2) === 42 && + sourceFileOfNode.text.charCodeAt(comment.pos + 3) !== 47; + } + } + ts.getJsDocComments = getJsDocComments; + ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + function forEachReturnStatement(body, visitor) { + return traverse(body); + function traverse(node) { + switch (node.kind) { + case 191: + return visitor(node); + case 207: + case 179: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 192: + case 193: + case 220: + case 221: + case 194: + case 196: + case 223: + return ts.forEachChild(node, traverse); + } + } + } + ts.forEachReturnStatement = forEachReturnStatement; + function isVariableLike(node) { + if (node) { + switch (node.kind) { + case 152: + case 226: + case 129: + case 224: + case 132: + case 131: + case 225: + case 198: + return true; + } + } + return false; + } + ts.isVariableLike = isVariableLike; + function isFunctionLike(node) { + if (node) { + switch (node.kind) { + case 135: + case 162: + case 200: + case 163: + case 134: + case 133: + case 136: + case 137: + case 138: + case 139: + case 140: + case 142: + case 143: + case 162: + case 163: + case 200: + return true; + } + } + return false; + } + ts.isFunctionLike = isFunctionLike; + function isFunctionBlock(node) { + return node && node.kind === 179 && isFunctionLike(node.parent); + } + ts.isFunctionBlock = isFunctionBlock; + function isObjectLiteralMethod(node) { + return node && node.kind === 134 && node.parent.kind === 154; + } + ts.isObjectLiteralMethod = isObjectLiteralMethod; + function getContainingFunction(node) { + while (true) { + node = node.parent; + if (!node || isFunctionLike(node)) { + return node; + } + } + } + ts.getContainingFunction = getContainingFunction; + function getThisContainer(node, includeArrowFunctions) { + while (true) { + node = node.parent; + if (!node) { + return undefined; + } + switch (node.kind) { + case 127: + if (node.parent.parent.kind === 201) { + return node; + } + node = node.parent; + break; + case 163: + if (!includeArrowFunctions) { + continue; + } + case 200: + case 162: + case 205: + case 132: + case 131: + case 134: + case 133: + case 135: + case 136: + case 137: + case 204: + case 227: + return node; + } + } + } + ts.getThisContainer = getThisContainer; + function getSuperContainer(node, includeFunctions) { + while (true) { + node = node.parent; + if (!node) + return node; + switch (node.kind) { + case 127: + if (node.parent.parent.kind === 201) { + return node; + } + node = node.parent; + break; + case 200: + case 162: + case 163: + if (!includeFunctions) { + continue; + } + case 132: + case 131: + case 134: + case 133: + case 135: + case 136: + case 137: + return node; + } + } + } + ts.getSuperContainer = getSuperContainer; + function getInvokedExpression(node) { + if (node.kind === 159) { + return node.tag; + } + return node.expression; + } + ts.getInvokedExpression = getInvokedExpression; + function nodeCanBeDecorated(node) { + switch (node.kind) { + case 201: + return true; + case 132: + return node.parent.kind === 201; + case 129: + return node.parent.body && node.parent.parent.kind === 201; + case 136: + case 137: + case 134: + return node.body && node.parent.kind === 201; + } + return false; + } + ts.nodeCanBeDecorated = nodeCanBeDecorated; + function nodeIsDecorated(node) { + switch (node.kind) { + case 201: + if (node.decorators) { + return true; + } + return false; + case 132: + case 129: + if (node.decorators) { + return true; + } + return false; + case 136: + if (node.body && node.decorators) { + return true; + } + return false; + case 134: + case 137: + if (node.body && node.decorators) { + return true; + } + return false; + } + return false; + } + ts.nodeIsDecorated = nodeIsDecorated; + function childIsDecorated(node) { + switch (node.kind) { + case 201: + return ts.forEach(node.members, nodeOrChildIsDecorated); + case 134: + case 137: + return ts.forEach(node.parameters, nodeIsDecorated); + } + return false; + } + ts.childIsDecorated = childIsDecorated; + function nodeOrChildIsDecorated(node) { + return nodeIsDecorated(node) || childIsDecorated(node); + } + ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; + function isExpression(node) { + switch (node.kind) { + case 93: + case 91: + case 89: + case 95: + case 80: + case 9: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 174: + case 163: + case 166: + case 164: + case 165: + case 167: + case 168: + case 169: + case 170: + case 173: + case 171: + case 10: + case 175: + return true; + case 126: + while (node.parent.kind === 126) { + node = node.parent; + } + return node.parent.kind === 144; + case 65: + if (node.parent.kind === 144) { + return true; + } + case 7: + case 8: + var parent_1 = node.parent; + switch (parent_1.kind) { + case 198: + case 129: + case 132: + case 131: + case 226: + case 224: + case 152: + return parent_1.initializer === node; + case 182: + case 183: + case 184: + case 185: + case 191: + case 192: + case 193: + case 220: + case 195: + case 193: + return parent_1.expression === node; + case 186: + var forStatement = parent_1; + return (forStatement.initializer === node && forStatement.initializer.kind !== 199) || + forStatement.condition === node || + forStatement.iterator === node; + case 187: + case 188: + var forInStatement = parent_1; + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 199) || + forInStatement.expression === node; + case 160: + return node === parent_1.expression; + case 176: + return node === parent_1.expression; + case 127: + return node === parent_1.expression; + default: + if (isExpression(parent_1)) { + return true; + } + } + } + return false; + } + ts.isExpression = isExpression; + function isInstantiatedModule(node, preserveConstEnums) { + var moduleState = ts.getModuleInstanceState(node); + return moduleState === 1 || + (preserveConstEnums && moduleState === 2); + } + ts.isInstantiatedModule = isInstantiatedModule; + function isExternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind === 219; + } + ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; + function getExternalModuleImportEqualsDeclarationExpression(node) { + ts.Debug.assert(isExternalModuleImportEqualsDeclaration(node)); + return node.moduleReference.expression; + } + ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; + function isInternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind !== 219; + } + ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; + function getExternalModuleName(node) { + if (node.kind === 209) { + return node.moduleSpecifier; + } + if (node.kind === 208) { + var reference = node.moduleReference; + if (reference.kind === 219) { + return reference.expression; + } + } + if (node.kind === 215) { + return node.moduleSpecifier; + } + } + ts.getExternalModuleName = getExternalModuleName; + function hasDotDotDotToken(node) { + return node && node.kind === 129 && node.dotDotDotToken !== undefined; + } + ts.hasDotDotDotToken = hasDotDotDotToken; + function hasQuestionToken(node) { + if (node) { + switch (node.kind) { + case 129: + return node.questionToken !== undefined; + case 134: + case 133: + return node.questionToken !== undefined; + case 225: + case 224: + case 132: + case 131: + return node.questionToken !== undefined; + } + } + return false; + } + ts.hasQuestionToken = hasQuestionToken; + function hasRestParameters(s) { + return s.parameters.length > 0 && s.parameters[s.parameters.length - 1].dotDotDotToken !== undefined; + } + ts.hasRestParameters = hasRestParameters; + function isLiteralKind(kind) { + return 7 <= kind && kind <= 10; + } + ts.isLiteralKind = isLiteralKind; + function isTextualLiteralKind(kind) { + return kind === 8 || kind === 10; + } + ts.isTextualLiteralKind = isTextualLiteralKind; + function isTemplateLiteralKind(kind) { + return 10 <= kind && kind <= 13; + } + ts.isTemplateLiteralKind = isTemplateLiteralKind; + function isBindingPattern(node) { + return !!node && (node.kind === 151 || node.kind === 150); + } + ts.isBindingPattern = isBindingPattern; + function isInAmbientContext(node) { + while (node) { + if (node.flags & (2 | 2048)) { + return true; + } + node = node.parent; + } + return false; + } + ts.isInAmbientContext = isInAmbientContext; + function isDeclaration(node) { + switch (node.kind) { + case 163: + case 152: + case 201: + case 135: + case 204: + case 226: + case 217: + case 200: + case 162: + case 136: + case 210: + case 208: + case 213: + case 202: + case 134: + case 133: + case 205: + case 211: + case 129: + case 224: + case 132: + case 131: + case 137: + case 225: + case 203: + case 128: + case 198: + return true; + } + return false; + } + ts.isDeclaration = isDeclaration; + function isStatement(n) { + switch (n.kind) { + case 190: + case 189: + case 197: + case 184: + case 182: + case 181: + case 187: + case 188: + case 186: + case 183: + case 194: + case 191: + case 193: + case 94: + case 196: + case 180: + case 185: + case 192: + case 214: + return true; + default: + return false; + } + } + ts.isStatement = isStatement; + function isClassElement(n) { + switch (n.kind) { + case 135: + case 132: + case 134: + case 136: + case 137: + case 140: + return true; + default: + return false; + } + } + ts.isClassElement = isClassElement; + function isDeclarationName(name) { + if (name.kind !== 65 && name.kind !== 8 && name.kind !== 7) { + return false; + } + var parent = name.parent; + if (parent.kind === 213 || parent.kind === 217) { + if (parent.propertyName) { + return true; + } + } + if (isDeclaration(parent)) { + return parent.name === name; + } + return false; + } + ts.isDeclarationName = isDeclarationName; + function isAliasSymbolDeclaration(node) { + return node.kind === 208 || + node.kind === 210 && !!node.name || + node.kind === 211 || + node.kind === 213 || + node.kind === 217 || + node.kind === 214 && node.expression.kind === 65; + } + ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; + function getClassExtendsHeritageClauseElement(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 79); + return heritageClause && heritageClause.types.length > 0 ? heritageClause.types[0] : undefined; + } + ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement; + function getClassImplementsHeritageClauseElements(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 103); + return heritageClause ? heritageClause.types : undefined; + } + ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements; + function getInterfaceBaseTypeNodes(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 79); + return heritageClause ? heritageClause.types : undefined; + } + ts.getInterfaceBaseTypeNodes = getInterfaceBaseTypeNodes; + function getHeritageClause(clauses, kind) { + if (clauses) { + for (var _i = 0; _i < clauses.length; _i++) { + var clause = clauses[_i]; + if (clause.token === kind) { + return clause; + } + } + } + return undefined; + } + ts.getHeritageClause = getHeritageClause; + function tryResolveScriptReference(host, sourceFile, reference) { + if (!host.getCompilerOptions().noResolve) { + var referenceFileName = ts.isRootedDiskPath(reference.fileName) ? reference.fileName : ts.combinePaths(ts.getDirectoryPath(sourceFile.fileName), reference.fileName); + referenceFileName = ts.getNormalizedAbsolutePath(referenceFileName, host.getCurrentDirectory()); + return host.getSourceFile(referenceFileName); + } + } + ts.tryResolveScriptReference = tryResolveScriptReference; + function getAncestor(node, kind) { + while (node) { + if (node.kind === kind) { + return node; + } + node = node.parent; + } + return undefined; + } + ts.getAncestor = getAncestor; + function getFileReferenceFromReferencePath(comment, commentRange) { + var simpleReferenceRegEx = /^\/\/\/\s*/gim; + if (simpleReferenceRegEx.exec(comment)) { + if (isNoDefaultLibRegEx.exec(comment)) { + return { + isNoDefaultLib: true + }; + } + else { + var matchResult = ts.fullTripleSlashReferencePathRegEx.exec(comment); + if (matchResult) { + var start = commentRange.pos; + var end = commentRange.end; + return { + fileReference: { + pos: start, + end: end, + fileName: matchResult[3] + }, + isNoDefaultLib: false + }; + } + else { + return { + diagnosticMessage: ts.Diagnostics.Invalid_reference_directive_syntax, + isNoDefaultLib: false + }; + } + } + } + return undefined; + } + ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; + function isKeyword(token) { + return 66 <= token && token <= 125; + } + ts.isKeyword = isKeyword; + function isTrivia(token) { + return 2 <= token && token <= 6; + } + ts.isTrivia = isTrivia; + function hasDynamicName(declaration) { + return declaration.name && + declaration.name.kind === 127 && + !isWellKnownSymbolSyntactically(declaration.name.expression); + } + ts.hasDynamicName = hasDynamicName; + function isWellKnownSymbolSyntactically(node) { + return node.kind === 155 && isESSymbolIdentifier(node.expression); + } + ts.isWellKnownSymbolSyntactically = isWellKnownSymbolSyntactically; + function getPropertyNameForPropertyNameNode(name) { + if (name.kind === 65 || name.kind === 8 || name.kind === 7) { + return name.text; + } + if (name.kind === 127) { + var nameExpression = name.expression; + if (isWellKnownSymbolSyntactically(nameExpression)) { + var rightHandSideName = nameExpression.name.text; + return getPropertyNameForKnownSymbolName(rightHandSideName); + } + } + return undefined; + } + ts.getPropertyNameForPropertyNameNode = getPropertyNameForPropertyNameNode; + function getPropertyNameForKnownSymbolName(symbolName) { + return "__@" + symbolName; + } + ts.getPropertyNameForKnownSymbolName = getPropertyNameForKnownSymbolName; + function isESSymbolIdentifier(node) { + return node.kind === 65 && node.text === "Symbol"; + } + ts.isESSymbolIdentifier = isESSymbolIdentifier; + function isModifier(token) { + switch (token) { + case 109: + case 107: + case 108: + case 110: + case 78: + case 115: + case 70: + case 73: + return true; + } + return false; + } + ts.isModifier = isModifier; + function textSpanEnd(span) { + return span.start + span.length; + } + ts.textSpanEnd = textSpanEnd; + function textSpanIsEmpty(span) { + return span.length === 0; + } + ts.textSpanIsEmpty = textSpanIsEmpty; + function textSpanContainsPosition(span, position) { + return position >= span.start && position < textSpanEnd(span); + } + ts.textSpanContainsPosition = textSpanContainsPosition; + function textSpanContainsTextSpan(span, other) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + ts.textSpanContainsTextSpan = textSpanContainsTextSpan; + function textSpanOverlapsWith(span, other) { + var overlapStart = Math.max(span.start, other.start); + var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + ts.textSpanOverlapsWith = textSpanOverlapsWith; + function textSpanOverlap(span1, span2) { + var overlapStart = Math.max(span1.start, span2.start); + var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + ts.textSpanOverlap = textSpanOverlap; + function textSpanIntersectsWithTextSpan(span, other) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; + } + ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; + function textSpanIntersectsWith(span, start, length) { + var end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + ts.textSpanIntersectsWith = textSpanIntersectsWith; + function textSpanIntersectsWithPosition(span, position) { + return position <= textSpanEnd(span) && position >= span.start; + } + ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; + function textSpanIntersection(span1, span2) { + var intersectStart = Math.max(span1.start, span2.start); + var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + ts.textSpanIntersection = textSpanIntersection; + function createTextSpan(start, length) { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + return { start: start, length: length }; + } + ts.createTextSpan = createTextSpan; + function createTextSpanFromBounds(start, end) { + return createTextSpan(start, end - start); + } + ts.createTextSpanFromBounds = createTextSpanFromBounds; + function textChangeRangeNewSpan(range) { + return createTextSpan(range.span.start, range.newLength); + } + ts.textChangeRangeNewSpan = textChangeRangeNewSpan; + function textChangeRangeIsUnchanged(range) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; + function createTextChangeRange(span, newLength) { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + return { span: span, newLength: newLength }; + } + ts.createTextChangeRange = createTextChangeRange; + ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + function collapseTextChangeRangesAcrossMultipleVersions(changes) { + if (changes.length === 0) { + return ts.unchangedTextChangeRange; + } + if (changes.length === 1) { + return changes[0]; + } + var change0 = changes[0]; + var oldStartN = change0.span.start; + var oldEndN = textSpanEnd(change0.span); + var newEndN = oldStartN + change0.newLength; + for (var i = 1; i < changes.length; i++) { + var nextChange = changes[i]; + var oldStart1 = oldStartN; + var oldEnd1 = oldEndN; + var newEnd1 = newEndN; + var oldStart2 = nextChange.span.start; + var oldEnd2 = textSpanEnd(nextChange.span); + var newEnd2 = oldStart2 + nextChange.newLength; + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); + } + ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; + function nodeStartsNewLexicalEnvironment(n) { + return isFunctionLike(n) || n.kind === 205 || n.kind === 227; + } + ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; + function nodeIsSynthesized(node) { + return node.pos === -1; + } + ts.nodeIsSynthesized = nodeIsSynthesized; + function createSynthesizedNode(kind, startsOnNewLine) { + var node = ts.createNode(kind); + node.pos = -1; + node.end = -1; + node.startsOnNewLine = startsOnNewLine; + return node; + } + ts.createSynthesizedNode = createSynthesizedNode; + function createDiagnosticCollection() { + var nonFileDiagnostics = []; + var fileDiagnostics = {}; + var diagnosticsModified = false; + var modificationCount = 0; + return { + add: add, + getGlobalDiagnostics: getGlobalDiagnostics, + getDiagnostics: getDiagnostics, + getModificationCount: getModificationCount + }; + function getModificationCount() { + return modificationCount; + } + function add(diagnostic) { + var diagnostics; + if (diagnostic.file) { + diagnostics = fileDiagnostics[diagnostic.file.fileName]; + if (!diagnostics) { + diagnostics = []; + fileDiagnostics[diagnostic.file.fileName] = diagnostics; + } + } + else { + diagnostics = nonFileDiagnostics; + } + diagnostics.push(diagnostic); + diagnosticsModified = true; + modificationCount++; + } + function getGlobalDiagnostics() { + sortAndDeduplicate(); + return nonFileDiagnostics; + } + function getDiagnostics(fileName) { + sortAndDeduplicate(); + if (fileName) { + return fileDiagnostics[fileName] || []; + } + var allDiagnostics = []; + function pushDiagnostic(d) { + allDiagnostics.push(d); + } + ts.forEach(nonFileDiagnostics, pushDiagnostic); + for (var key in fileDiagnostics) { + if (ts.hasProperty(fileDiagnostics, key)) { + ts.forEach(fileDiagnostics[key], pushDiagnostic); + } + } + return ts.sortAndDeduplicateDiagnostics(allDiagnostics); + } + function sortAndDeduplicate() { + if (!diagnosticsModified) { + return; + } + diagnosticsModified = false; + nonFileDiagnostics = ts.sortAndDeduplicateDiagnostics(nonFileDiagnostics); + for (var key in fileDiagnostics) { + if (ts.hasProperty(fileDiagnostics, key)) { + fileDiagnostics[key] = ts.sortAndDeduplicateDiagnostics(fileDiagnostics[key]); + } + } + } + } + ts.createDiagnosticCollection = createDiagnosticCollection; + var escapedCharsRegExp = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + var escapedCharsMap = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", + "\u2029": "\\u2029", + "\u0085": "\\u0085" + }; + function escapeString(s) { + s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; + return s; + function getReplacement(c) { + return escapedCharsMap[c] || get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + } + } + ts.escapeString = escapeString; + function get16BitUnicodeEscapeSequence(charCode) { + var hexCharCode = charCode.toString(16).toUpperCase(); + var paddedHexCode = ("0000" + hexCharCode).slice(-4); + return "\\u" + paddedHexCode; + } + var nonAsciiCharacters = /[^\u0000-\u007F]/g; + function escapeNonAsciiCharacters(s) { + return nonAsciiCharacters.test(s) ? + s.replace(nonAsciiCharacters, function (c) { return get16BitUnicodeEscapeSequence(c.charCodeAt(0)); }) : + s; + } + ts.escapeNonAsciiCharacters = escapeNonAsciiCharacters; + var indentStrings = ["", " "]; + function getIndentString(level) { + if (indentStrings[level] === undefined) { + indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; + } + return indentStrings[level]; + } + ts.getIndentString = getIndentString; + function getIndentSize() { + return indentStrings[1].length; + } + ts.getIndentSize = getIndentSize; + function createTextWriter(newLine) { + var output = ""; + var indent = 0; + var lineStart = true; + var lineCount = 0; + var linePos = 0; + function write(s) { + if (s && s.length) { + if (lineStart) { + output += getIndentString(indent); + lineStart = false; + } + output += s; + } + } + function rawWrite(s) { + if (s !== undefined) { + if (lineStart) { + lineStart = false; + } + output += s; + } + } + function writeLiteral(s) { + if (s && s.length) { + write(s); + var lineStartsOfS = ts.computeLineStarts(s); + if (lineStartsOfS.length > 1) { + lineCount = lineCount + lineStartsOfS.length - 1; + linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; + } + } + } + function writeLine() { + if (!lineStart) { + output += newLine; + lineCount++; + linePos = output.length; + lineStart = true; + } + } + function writeTextOfNode(sourceFile, node) { + write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); + } + return { + write: write, + rawWrite: rawWrite, + writeTextOfNode: writeTextOfNode, + writeLiteral: writeLiteral, + writeLine: writeLine, + increaseIndent: function () { return indent++; }, + decreaseIndent: function () { return indent--; }, + getIndent: function () { return indent; }, + getTextPos: function () { return output.length; }, + getLine: function () { return lineCount + 1; }, + getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, + getText: function () { return output; } + }; + } + ts.createTextWriter = createTextWriter; + function getOwnEmitOutputFilePath(sourceFile, host, extension) { + var compilerOptions = host.getCompilerOptions(); + var emitOutputFilePathWithoutExtension; + if (compilerOptions.outDir) { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); + } + else { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); + } + return emitOutputFilePathWithoutExtension + extension; + } + ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { + var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); + sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); + return ts.combinePaths(newDirPath, sourceFilePath); + } + ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { + diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + }); + } + ts.writeFile = writeFile; + function getLineOfLocalPosition(currentSourceFile, pos) { + return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; + } + ts.getLineOfLocalPosition = getLineOfLocalPosition; + function getFirstConstructorWithBody(node) { + return ts.forEach(node.members, function (member) { + if (member.kind === 135 && nodeIsPresent(member.body)) { + return member; + } + }); + } + ts.getFirstConstructorWithBody = getFirstConstructorWithBody; + function shouldEmitToOwnFile(sourceFile, compilerOptions) { + if (!isDeclarationFile(sourceFile)) { + if ((isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + return true; + } + return false; + } + return false; + } + ts.shouldEmitToOwnFile = shouldEmitToOwnFile; + function getAllAccessorDeclarations(declarations, accessor) { + var firstAccessor; + var secondAccessor; + var getAccessor; + var setAccessor; + if (hasDynamicName(accessor)) { + firstAccessor = accessor; + if (accessor.kind === 136) { + getAccessor = accessor; + } + else if (accessor.kind === 137) { + setAccessor = accessor; + } + else { + ts.Debug.fail("Accessor has wrong kind"); + } + } + else { + ts.forEach(declarations, function (member) { + if ((member.kind === 136 || member.kind === 137) + && (member.flags & 128) === (accessor.flags & 128)) { + var memberName = getPropertyNameForPropertyNameNode(member.name); + var accessorName = getPropertyNameForPropertyNameNode(accessor.name); + if (memberName === accessorName) { + if (!firstAccessor) { + firstAccessor = member; + } + else if (!secondAccessor) { + secondAccessor = member; + } + if (member.kind === 136 && !getAccessor) { + getAccessor = member; + } + if (member.kind === 137 && !setAccessor) { + setAccessor = member; + } + } + } + }); + } + return { + firstAccessor: firstAccessor, + secondAccessor: secondAccessor, + getAccessor: getAccessor, + setAccessor: setAccessor + }; + } + ts.getAllAccessorDeclarations = getAllAccessorDeclarations; + function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { + if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && + getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { + writer.writeLine(); + } + } + ts.emitNewLineBeforeLeadingComments = emitNewLineBeforeLeadingComments; + function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { + var emitLeadingSpace = !trailingSeparator; + ts.forEach(comments, function (comment) { + if (emitLeadingSpace) { + writer.write(" "); + emitLeadingSpace = false; + } + writeComment(currentSourceFile, writer, comment, newLine); + if (comment.hasTrailingNewLine) { + writer.writeLine(); + } + else if (trailingSeparator) { + writer.write(" "); + } + else { + emitLeadingSpace = true; + } + }); + } + ts.emitComments = emitComments; + function writeCommentRange(currentSourceFile, writer, comment, newLine) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); + var lineCount = ts.getLineStarts(currentSourceFile).length; + var firstCommentLineIndent; + for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { + var nextLineStart = (currentLine + 1) === lineCount + ? currentSourceFile.text.length + 1 + : getStartPositionOfLine(currentLine + 1, currentSourceFile); + if (pos !== comment.pos) { + if (firstCommentLineIndent === undefined) { + firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); + } + var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); + var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); + if (spacesToEmit > 0) { + var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); + var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); + writer.rawWrite(indentSizeSpaceString); + while (numberOfSingleSpacesToEmit) { + writer.rawWrite(" "); + numberOfSingleSpacesToEmit--; + } + } + else { + writer.rawWrite(""); + } + } + writeTrimmedCurrentLine(pos, nextLineStart); + pos = nextLineStart; + } + } + else { + writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); + } + function writeTrimmedCurrentLine(pos, nextLineStart) { + var end = Math.min(comment.end, nextLineStart - 1); + var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); + if (currentLineText) { + writer.write(currentLineText); + if (end !== comment.end) { + writer.writeLine(); + } + } + else { + writer.writeLiteral(newLine); + } + } + function calculateIndent(pos, end) { + var currentLineIndent = 0; + for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { + if (currentSourceFile.text.charCodeAt(pos) === 9) { + currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); + } + else { + currentLineIndent++; + } + } + return currentLineIndent; + } + } + ts.writeCommentRange = writeCommentRange; + function isSupportedHeritageClauseElement(node) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + ts.isSupportedHeritageClauseElement = isSupportedHeritageClauseElement; + function isSupportedHeritageClauseElementExpression(node) { + if (node.kind === 65) { + return true; + } + else if (node.kind === 155) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + else { + return false; + } + } + function isRightSideOfQualifiedNameOrPropertyAccess(node) { + return (node.parent.kind === 126 && node.parent.right === node) || + (node.parent.kind === 155 && node.parent.name === node); + } + ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; + function getLocalSymbolForExportDefault(symbol) { + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & 256) ? symbol.valueDeclaration.localSymbol : undefined; + } + ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + var nodeConstructors = new Array(229); + ts.parseTime = 0; + function getNodeConstructor(kind) { + return nodeConstructors[kind] || (nodeConstructors[kind] = ts.objectAllocator.getNodeConstructor(kind)); + } + ts.getNodeConstructor = getNodeConstructor; + function createNode(kind) { + return new (getNodeConstructor(kind))(); + } + ts.createNode = createNode; + function visitNode(cbNode, node) { + if (node) { + return cbNode(node); + } + } + function visitNodeArray(cbNodes, nodes) { + if (nodes) { + return cbNodes(nodes); + } + } + function visitEachNode(cbNode, nodes) { + if (nodes) { + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + var result = cbNode(node); + if (result) { + return result; + } + } + } + } + function forEachChild(node, cbNode, cbNodeArray) { + if (!node) { + return; + } + var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; + var cbNodes = cbNodeArray || cbNode; + switch (node.kind) { + case 126: + return visitNode(cbNode, node.left) || + visitNode(cbNode, node.right); + case 128: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.constraint) || + visitNode(cbNode, node.expression); + case 129: + case 132: + case 131: + case 224: + case 225: + case 198: + case 152: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.propertyName) || + visitNode(cbNode, node.dotDotDotToken) || + visitNode(cbNode, node.name) || + visitNode(cbNode, node.questionToken) || + visitNode(cbNode, node.type) || + visitNode(cbNode, node.initializer); + case 142: + case 143: + case 138: + case 139: + case 140: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.parameters) || + visitNode(cbNode, node.type); + case 134: + case 133: + case 135: + case 136: + case 137: + case 162: + case 200: + case 163: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.name) || + visitNode(cbNode, node.questionToken) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.parameters) || + visitNode(cbNode, node.type) || + visitNode(cbNode, node.equalsGreaterThanToken) || + visitNode(cbNode, node.body); + case 141: + return visitNode(cbNode, node.typeName) || + visitNodes(cbNodes, node.typeArguments); + case 144: + return visitNode(cbNode, node.exprName); + case 145: + return visitNodes(cbNodes, node.members); + case 146: + return visitNode(cbNode, node.elementType); + case 147: + return visitNodes(cbNodes, node.elementTypes); + case 148: + return visitNodes(cbNodes, node.types); + case 149: + return visitNode(cbNode, node.type); + case 150: + case 151: + return visitNodes(cbNodes, node.elements); + case 153: + return visitNodes(cbNodes, node.elements); + case 154: + return visitNodes(cbNodes, node.properties); + case 155: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.dotToken) || + visitNode(cbNode, node.name); + case 156: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.argumentExpression); + case 157: + case 158: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.typeArguments) || + visitNodes(cbNodes, node.arguments); + case 159: + return visitNode(cbNode, node.tag) || + visitNode(cbNode, node.template); + case 160: + return visitNode(cbNode, node.type) || + visitNode(cbNode, node.expression); + case 161: + return visitNode(cbNode, node.expression); + case 164: + return visitNode(cbNode, node.expression); + case 165: + return visitNode(cbNode, node.expression); + case 166: + return visitNode(cbNode, node.expression); + case 167: + return visitNode(cbNode, node.operand); + case 172: + return visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.expression); + case 168: + return visitNode(cbNode, node.operand); + case 169: + return visitNode(cbNode, node.left) || + visitNode(cbNode, node.operatorToken) || + visitNode(cbNode, node.right); + case 170: + return visitNode(cbNode, node.condition) || + visitNode(cbNode, node.questionToken) || + visitNode(cbNode, node.whenTrue) || + visitNode(cbNode, node.colonToken) || + visitNode(cbNode, node.whenFalse); + case 173: + return visitNode(cbNode, node.expression); + case 179: + case 206: + return visitNodes(cbNodes, node.statements); + case 227: + return visitNodes(cbNodes, node.statements) || + visitNode(cbNode, node.endOfFileToken); + case 180: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.declarationList); + case 199: + return visitNodes(cbNodes, node.declarations); + case 182: + return visitNode(cbNode, node.expression); + case 183: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.thenStatement) || + visitNode(cbNode, node.elseStatement); + case 184: + return visitNode(cbNode, node.statement) || + visitNode(cbNode, node.expression); + case 185: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 186: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.condition) || + visitNode(cbNode, node.iterator) || + visitNode(cbNode, node.statement); + case 187: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 188: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 189: + case 190: + return visitNode(cbNode, node.label); + case 191: + return visitNode(cbNode, node.expression); + case 192: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 193: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 207: + return visitNodes(cbNodes, node.clauses); + case 220: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 221: + return visitNodes(cbNodes, node.statements); + case 194: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 195: + return visitNode(cbNode, node.expression); + case 196: + return visitNode(cbNode, node.tryBlock) || + visitNode(cbNode, node.catchClause) || + visitNode(cbNode, node.finallyBlock); + case 223: + return visitNode(cbNode, node.variableDeclaration) || + visitNode(cbNode, node.block); + case 130: + return visitNode(cbNode, node.expression); + case 201: + case 174: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); + case 202: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); + case 203: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNode(cbNode, node.type); + case 204: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.members); + case 226: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.initializer); + case 205: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNode(cbNode, node.body); + case 208: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNode(cbNode, node.moduleReference); + case 209: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.importClause) || + visitNode(cbNode, node.moduleSpecifier); + case 210: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.namedBindings); + case 211: + return visitNode(cbNode, node.name); + case 212: + case 216: + return visitNodes(cbNodes, node.elements); + case 215: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.exportClause) || + visitNode(cbNode, node.moduleSpecifier); + case 213: + case 217: + return visitNode(cbNode, node.propertyName) || + visitNode(cbNode, node.name); + case 214: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.type); + case 171: + return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 176: + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); + case 127: + return visitNode(cbNode, node.expression); + case 222: + return visitNodes(cbNodes, node.types); + case 177: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.typeArguments); + case 219: + return visitNode(cbNode, node.expression); + case 218: + return visitNodes(cbNodes, node.decorators); + } + } + ts.forEachChild = forEachChild; + function parsingContextErrors(context) { + switch (context) { + case 0: return ts.Diagnostics.Declaration_or_statement_expected; + case 1: return ts.Diagnostics.Declaration_or_statement_expected; + case 2: return ts.Diagnostics.Statement_expected; + case 3: return ts.Diagnostics.case_or_default_expected; + case 4: return ts.Diagnostics.Statement_expected; + case 5: return ts.Diagnostics.Property_or_signature_expected; + case 6: return ts.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; + case 7: return ts.Diagnostics.Enum_member_expected; + case 8: return ts.Diagnostics.Expression_expected; + case 9: return ts.Diagnostics.Variable_declaration_expected; + case 10: return ts.Diagnostics.Property_destructuring_pattern_expected; + case 11: return ts.Diagnostics.Array_element_destructuring_pattern_expected; + case 12: return ts.Diagnostics.Argument_expression_expected; + case 13: return ts.Diagnostics.Property_assignment_expected; + case 14: return ts.Diagnostics.Expression_or_comma_expected; + case 15: return ts.Diagnostics.Parameter_declaration_expected; + case 16: return ts.Diagnostics.Type_parameter_declaration_expected; + case 17: return ts.Diagnostics.Type_argument_expected; + case 18: return ts.Diagnostics.Type_expected; + case 19: return ts.Diagnostics.Unexpected_token_expected; + case 20: return ts.Diagnostics.Identifier_expected; + } + } + ; + function modifierToFlag(token) { + switch (token) { + case 110: return 128; + case 109: return 16; + case 108: return 64; + case 107: return 32; + case 78: return 1; + case 115: return 2; + case 70: return 8192; + case 73: return 256; + } + return 0; + } + ts.modifierToFlag = modifierToFlag; + function fixupParentReferences(sourceFile) { + // normally parent references are set during binding. However, for clients that only need + // a syntax tree, and no semantic features, then the binding process is an unnecessary + // overhead. This functions allows us to set all the parents, without all the expense of + // binding. + var parent = sourceFile; + forEachChild(sourceFile, visitNode); + return; + function visitNode(n) { + if (n.parent !== parent) { + n.parent = parent; + var saveParent = parent; + parent = n; + forEachChild(n, visitNode); + parent = saveParent; + } + } + } + function shouldCheckNode(node) { + switch (node.kind) { + case 8: + case 7: + case 65: + return true; + } + return false; + } + function moveElementEntirelyPastChangeRange(element, isArray, delta, oldText, newText, aggressiveChecks) { + if (isArray) { + visitArray(element); + } + else { + visitNode(element); + } + return; + function visitNode(node) { + if (aggressiveChecks && shouldCheckNode(node)) { + var text = oldText.substring(node.pos, node.end); + } + node._children = undefined; + node.pos += delta; + node.end += delta; + if (aggressiveChecks && shouldCheckNode(node)) { + ts.Debug.assert(text === newText.substring(node.pos, node.end)); + } + forEachChild(node, visitNode, visitArray); + checkNodePositions(node, aggressiveChecks); + } + function visitArray(array) { + array._children = undefined; + array.pos += delta; + array.end += delta; + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); + } + } + } + function adjustIntersectingElement(element, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta) { + ts.Debug.assert(element.end >= changeStart, "Adjusting an element that was entirely before the change range"); + ts.Debug.assert(element.pos <= changeRangeOldEnd, "Adjusting an element that was entirely after the change range"); + ts.Debug.assert(element.pos <= element.end); + element.pos = Math.min(element.pos, changeRangeNewEnd); + if (element.end >= changeRangeOldEnd) { + element.end += delta; + } + else { + element.end = Math.min(element.end, changeRangeNewEnd); + } + ts.Debug.assert(element.pos <= element.end); + if (element.parent) { + ts.Debug.assert(element.pos >= element.parent.pos); + ts.Debug.assert(element.end <= element.parent.end); + } + } + function checkNodePositions(node, aggressiveChecks) { + if (aggressiveChecks) { + var pos = node.pos; + forEachChild(node, function (child) { + ts.Debug.assert(child.pos >= pos); + pos = child.end; + }); + ts.Debug.assert(pos <= node.end); + } + } + function updateTokenPositionsAndMarkElements(sourceFile, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta, oldText, newText, aggressiveChecks) { + visitNode(sourceFile); + return; + function visitNode(child) { + ts.Debug.assert(child.pos <= child.end); + if (child.pos > changeRangeOldEnd) { + moveElementEntirelyPastChangeRange(child, false, delta, oldText, newText, aggressiveChecks); + return; + } + var fullEnd = child.end; + if (fullEnd >= changeStart) { + child.intersectsChange = true; + child._children = undefined; + adjustIntersectingElement(child, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); + forEachChild(child, visitNode, visitArray); + checkNodePositions(child, aggressiveChecks); + return; + } + ts.Debug.assert(fullEnd < changeStart); + } + function visitArray(array) { + ts.Debug.assert(array.pos <= array.end); + if (array.pos > changeRangeOldEnd) { + moveElementEntirelyPastChangeRange(array, true, delta, oldText, newText, aggressiveChecks); + return; + } + var fullEnd = array.end; + if (fullEnd >= changeStart) { + array.intersectsChange = true; + array._children = undefined; + adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); + } + return; + } + ts.Debug.assert(fullEnd < changeStart); + } + } + function extendToAffectedRange(sourceFile, changeRange) { + var maxLookahead = 1; + var start = changeRange.span.start; + for (var i = 0; start > 0 && i <= maxLookahead; i++) { + var nearestNode = findNearestNodeStartingBeforeOrAtPosition(sourceFile, start); + ts.Debug.assert(nearestNode.pos <= start); + var position = nearestNode.pos; + start = Math.max(0, position - 1); + } + var finalSpan = ts.createTextSpanFromBounds(start, ts.textSpanEnd(changeRange.span)); + var finalLength = changeRange.newLength + (changeRange.span.start - start); + return ts.createTextChangeRange(finalSpan, finalLength); + } + function findNearestNodeStartingBeforeOrAtPosition(sourceFile, position) { + var bestResult = sourceFile; + var lastNodeEntirelyBeforePosition; + forEachChild(sourceFile, visit); + if (lastNodeEntirelyBeforePosition) { + var lastChildOfLastEntireNodeBeforePosition = getLastChild(lastNodeEntirelyBeforePosition); + if (lastChildOfLastEntireNodeBeforePosition.pos > bestResult.pos) { + bestResult = lastChildOfLastEntireNodeBeforePosition; + } + } + return bestResult; + function getLastChild(node) { + while (true) { + var lastChild = getLastChildWorker(node); + if (lastChild) { + node = lastChild; + } + else { + return node; + } + } + } + function getLastChildWorker(node) { + var last = undefined; + forEachChild(node, function (child) { + if (ts.nodeIsPresent(child)) { + last = child; + } + }); + return last; + } + function visit(child) { + if (ts.nodeIsMissing(child)) { + return; + } + if (child.pos <= position) { + if (child.pos >= bestResult.pos) { + bestResult = child; + } + if (position < child.end) { + forEachChild(child, visit); + return true; + } + else { + ts.Debug.assert(child.end <= position); + lastNodeEntirelyBeforePosition = child; + } + } + else { + ts.Debug.assert(child.pos > position); + return true; + } + } + } + function checkChangeRange(sourceFile, newText, textChangeRange, aggressiveChecks) { + var oldText = sourceFile.text; + if (textChangeRange) { + ts.Debug.assert((oldText.length - textChangeRange.span.length + textChangeRange.newLength) === newText.length); + if (aggressiveChecks || ts.Debug.shouldAssert(3)) { + var oldTextPrefix = oldText.substr(0, textChangeRange.span.start); + var newTextPrefix = newText.substr(0, textChangeRange.span.start); + ts.Debug.assert(oldTextPrefix === newTextPrefix); + var oldTextSuffix = oldText.substring(ts.textSpanEnd(textChangeRange.span), oldText.length); + var newTextSuffix = newText.substring(ts.textSpanEnd(ts.textChangeRangeNewSpan(textChangeRange)), newText.length); + ts.Debug.assert(oldTextSuffix === newTextSuffix); + } + } + } + function updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks) { + aggressiveChecks = aggressiveChecks || ts.Debug.shouldAssert(2); + checkChangeRange(sourceFile, newText, textChangeRange, aggressiveChecks); + if (ts.textChangeRangeIsUnchanged(textChangeRange)) { + return sourceFile; + } + if (sourceFile.statements.length === 0) { + return parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, undefined, true); + } + var incrementalSourceFile = sourceFile; + ts.Debug.assert(!incrementalSourceFile.hasBeenIncrementallyParsed); + incrementalSourceFile.hasBeenIncrementallyParsed = true; + var oldText = sourceFile.text; + var syntaxCursor = createSyntaxCursor(sourceFile); + var changeRange = extendToAffectedRange(sourceFile, textChangeRange); + checkChangeRange(sourceFile, newText, changeRange, aggressiveChecks); + ts.Debug.assert(changeRange.span.start <= textChangeRange.span.start); + ts.Debug.assert(ts.textSpanEnd(changeRange.span) === ts.textSpanEnd(textChangeRange.span)); + ts.Debug.assert(ts.textSpanEnd(ts.textChangeRangeNewSpan(changeRange)) === ts.textSpanEnd(ts.textChangeRangeNewSpan(textChangeRange))); + var delta = ts.textChangeRangeNewSpan(changeRange).length - changeRange.span.length; + updateTokenPositionsAndMarkElements(incrementalSourceFile, changeRange.span.start, ts.textSpanEnd(changeRange.span), ts.textSpanEnd(ts.textChangeRangeNewSpan(changeRange)), delta, oldText, newText, aggressiveChecks); + var result = parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, true); + return result; + } + ts.updateSourceFile = updateSourceFile; + function isEvalOrArgumentsIdentifier(node) { + return node.kind === 65 && + (node.text === "eval" || node.text === "arguments"); + } + ts.isEvalOrArgumentsIdentifier = isEvalOrArgumentsIdentifier; + function isUseStrictPrologueDirective(sourceFile, node) { + ts.Debug.assert(ts.isPrologueDirective(node)); + var nodeText = ts.getSourceTextOfNodeFromSourceFile(sourceFile, node.expression); + return nodeText === '"use strict"' || nodeText === "'use strict'"; + } + function createSyntaxCursor(sourceFile) { + var currentArray = sourceFile.statements; + var currentArrayIndex = 0; + ts.Debug.assert(currentArrayIndex < currentArray.length); + var current = currentArray[currentArrayIndex]; + var lastQueriedPosition = -1; + return { + currentNode: function (position) { + if (position !== lastQueriedPosition) { + if (current && current.end === position && currentArrayIndex < (currentArray.length - 1)) { + currentArrayIndex++; + current = currentArray[currentArrayIndex]; + } + if (!current || current.pos !== position) { + findHighestListElementThatStartsAtPosition(position); + } + } + lastQueriedPosition = position; + ts.Debug.assert(!current || current.pos === position); + return current; + } + }; + function findHighestListElementThatStartsAtPosition(position) { + currentArray = undefined; + currentArrayIndex = -1; + current = undefined; + forEachChild(sourceFile, visitNode, visitArray); + return; + function visitNode(node) { + if (position >= node.pos && position < node.end) { + forEachChild(node, visitNode, visitArray); + return true; + } + return false; + } + function visitArray(array) { + if (position >= array.pos && position < array.end) { + for (var i = 0, n = array.length; i < n; i++) { + var child = array[i]; + if (child) { + if (child.pos === position) { + currentArray = array; + currentArrayIndex = i; + current = child; + return true; + } + else { + if (child.pos < position && position < child.end) { + forEachChild(child, visitNode, visitArray); + return true; + } + } + } + } + } + return false; + } + } + } + function createSourceFile(fileName, sourceText, languageVersion, setParentNodes) { + if (setParentNodes === void 0) { setParentNodes = false; } + var start = new Date().getTime(); + var result = parseSourceFile(fileName, sourceText, languageVersion, undefined, setParentNodes); + ts.parseTime += new Date().getTime() - start; + return result; + } + ts.createSourceFile = createSourceFile; + function parseSourceFile(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes) { + if (setParentNodes === void 0) { setParentNodes = false; } + var disallowInAndDecoratorContext = 2 | 16; + var parsingContext = 0; + var identifiers = {}; + var identifierCount = 0; + var nodeCount = 0; + var token; + var sourceFile = createNode(227, 0); + sourceFile.pos = 0; + sourceFile.end = sourceText.length; + sourceFile.text = sourceText; + sourceFile.parseDiagnostics = []; + sourceFile.bindDiagnostics = []; + sourceFile.languageVersion = languageVersion; + sourceFile.fileName = ts.normalizePath(fileName); + sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 2048 : 0; + var contextFlags = 0; + var parseErrorBeforeNextFinishedNode = false; + var scanner = ts.createScanner(languageVersion, true, sourceText, scanError); + token = nextToken(); + processReferenceComments(sourceFile); + sourceFile.statements = parseList(0, true, parseSourceElement); + ts.Debug.assert(token === 1); + sourceFile.endOfFileToken = parseTokenNode(); + setExternalModuleIndicator(sourceFile); + sourceFile.nodeCount = nodeCount; + sourceFile.identifierCount = identifierCount; + sourceFile.identifiers = identifiers; + if (setParentNodes) { + fixupParentReferences(sourceFile); + } + syntaxCursor = undefined; + return sourceFile; + function setContextFlag(val, flag) { + if (val) { + contextFlags |= flag; + } + else { + contextFlags &= ~flag; + } + } + function setStrictModeContext(val) { + setContextFlag(val, 1); + } + function setDisallowInContext(val) { + setContextFlag(val, 2); + } + function setYieldContext(val) { + setContextFlag(val, 4); + } + function setGeneratorParameterContext(val) { + setContextFlag(val, 8); + } + function setDecoratorContext(val) { + setContextFlag(val, 16); + } + function doOutsideOfContext(flags, func) { + var currentContextFlags = contextFlags & flags; + if (currentContextFlags) { + setContextFlag(false, currentContextFlags); + var result = func(); + setContextFlag(true, currentContextFlags); + return result; + } + return func(); + } + function allowInAnd(func) { + if (contextFlags & 2) { + setDisallowInContext(false); + var result = func(); + setDisallowInContext(true); + return result; + } + return func(); + } + function disallowInAnd(func) { + if (contextFlags & 2) { + return func(); + } + setDisallowInContext(true); + var result = func(); + setDisallowInContext(false); + return result; + } + function doInYieldContext(func) { + if (contextFlags & 4) { + return func(); + } + setYieldContext(true); + var result = func(); + setYieldContext(false); + return result; + } + function doOutsideOfYieldContext(func) { + if (contextFlags & 4) { + setYieldContext(false); + var result = func(); + setYieldContext(true); + return result; + } + return func(); + } + function doInDecoratorContext(func) { + if (contextFlags & 16) { + return func(); + } + setDecoratorContext(true); + var result = func(); + setDecoratorContext(false); + return result; + } + function inYieldContext() { + return (contextFlags & 4) !== 0; + } + function inStrictModeContext() { + return (contextFlags & 1) !== 0; + } + function inGeneratorParameterContext() { + return (contextFlags & 8) !== 0; + } + function inDisallowInContext() { + return (contextFlags & 2) !== 0; + } + function inDecoratorContext() { + return (contextFlags & 16) !== 0; + } + function parseErrorAtCurrentToken(message, arg0) { + var start = scanner.getTokenPos(); + var length = scanner.getTextPos() - start; + parseErrorAtPosition(start, length, message, arg0); + } + function parseErrorAtPosition(start, length, message, arg0) { + var lastError = ts.lastOrUndefined(sourceFile.parseDiagnostics); + if (!lastError || start !== lastError.start) { + sourceFile.parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, start, length, message, arg0)); + } + parseErrorBeforeNextFinishedNode = true; + } + function scanError(message, length) { + var pos = scanner.getTextPos(); + parseErrorAtPosition(pos, length || 0, message); + } + function getNodePos() { + return scanner.getStartPos(); + } + function getNodeEnd() { + return scanner.getStartPos(); + } + function nextToken() { + return token = scanner.scan(); + } + function getTokenPos(pos) { + return ts.skipTrivia(sourceText, pos); + } + function reScanGreaterToken() { + return token = scanner.reScanGreaterToken(); + } + function reScanSlashToken() { + return token = scanner.reScanSlashToken(); + } + function reScanTemplateToken() { + return token = scanner.reScanTemplateToken(); + } + function speculationHelper(callback, isLookAhead) { + var saveToken = token; + var saveParseDiagnosticsLength = sourceFile.parseDiagnostics.length; + var saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode; + var saveContextFlags = contextFlags; + var result = isLookAhead + ? scanner.lookAhead(callback) + : scanner.tryScan(callback); + ts.Debug.assert(saveContextFlags === contextFlags); + if (!result || isLookAhead) { + token = saveToken; + sourceFile.parseDiagnostics.length = saveParseDiagnosticsLength; + parseErrorBeforeNextFinishedNode = saveParseErrorBeforeNextFinishedNode; + } + return result; + } + function lookAhead(callback) { + return speculationHelper(callback, true); + } + function tryParse(callback) { + return speculationHelper(callback, false); + } + function isIdentifier() { + if (token === 65) { + return true; + } + if (token === 111 && inYieldContext()) { + return false; + } + return inStrictModeContext() ? token > 111 : token > 101; + } + function parseExpected(kind, diagnosticMessage) { + if (token === kind) { + nextToken(); + return true; + } + if (diagnosticMessage) { + parseErrorAtCurrentToken(diagnosticMessage); + } + else { + parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(kind)); + } + return false; + } + function parseOptional(t) { + if (token === t) { + nextToken(); + return true; + } + return false; + } + function parseOptionalToken(t) { + if (token === t) { + return parseTokenNode(); + } + return undefined; + } + function parseExpectedToken(t, reportAtCurrentPosition, diagnosticMessage, arg0) { + return parseOptionalToken(t) || + createMissingNode(t, reportAtCurrentPosition, diagnosticMessage, arg0); + } + function parseTokenNode() { + var node = createNode(token); + nextToken(); + return finishNode(node); + } + function canParseSemicolon() { + if (token === 22) { + return true; + } + return token === 15 || token === 1 || scanner.hasPrecedingLineBreak(); + } + function parseSemicolon() { + if (canParseSemicolon()) { + if (token === 22) { + nextToken(); + } + return true; + } + else { + return parseExpected(22); + } + } + function createNode(kind, pos) { + nodeCount++; + var node = new (nodeConstructors[kind] || (nodeConstructors[kind] = ts.objectAllocator.getNodeConstructor(kind)))(); + if (!(pos >= 0)) { + pos = scanner.getStartPos(); + } + node.pos = pos; + node.end = pos; + return node; + } + function finishNode(node) { + node.end = scanner.getStartPos(); + if (contextFlags) { + node.parserContextFlags = contextFlags; + } + if (parseErrorBeforeNextFinishedNode) { + parseErrorBeforeNextFinishedNode = false; + node.parserContextFlags |= 32; + } + return node; + } + function createMissingNode(kind, reportAtCurrentPosition, diagnosticMessage, arg0) { + if (reportAtCurrentPosition) { + parseErrorAtPosition(scanner.getStartPos(), 0, diagnosticMessage, arg0); + } + else { + parseErrorAtCurrentToken(diagnosticMessage, arg0); + } + var result = createNode(kind, scanner.getStartPos()); + result.text = ""; + return finishNode(result); + } + function internIdentifier(text) { + text = ts.escapeIdentifier(text); + return ts.hasProperty(identifiers, text) ? identifiers[text] : (identifiers[text] = text); + } + function createIdentifier(isIdentifier, diagnosticMessage) { + identifierCount++; + if (isIdentifier) { + var node = createNode(65); + node.text = internIdentifier(scanner.getTokenValue()); + nextToken(); + return finishNode(node); + } + return createMissingNode(65, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); + } + function parseIdentifier(diagnosticMessage) { + return createIdentifier(isIdentifier(), diagnosticMessage); + } + function parseIdentifierName() { + return createIdentifier(isIdentifierOrKeyword()); + } + function isLiteralPropertyName() { + return isIdentifierOrKeyword() || + token === 8 || + token === 7; + } + function parsePropertyName() { + if (token === 8 || token === 7) { + return parseLiteralNode(true); + } + if (token === 18) { + return parseComputedPropertyName(); + } + return parseIdentifierName(); + } + function parseComputedPropertyName() { + var node = createNode(127); + parseExpected(18); + var yieldContext = inYieldContext(); + if (inGeneratorParameterContext()) { + setYieldContext(false); + } + node.expression = allowInAnd(parseExpression); + if (inGeneratorParameterContext()) { + setYieldContext(yieldContext); + } + parseExpected(19); + return finishNode(node); + } + function parseContextualModifier(t) { + return token === t && tryParse(nextTokenCanFollowModifier); + } + function nextTokenCanFollowModifier() { + nextToken(); + return canFollowModifier(); + } + function parseAnyContextualModifier() { + return ts.isModifier(token) && tryParse(nextTokenCanFollowContextualModifier); + } + function nextTokenCanFollowContextualModifier() { + if (token === 70) { + return nextToken() === 77; + } + if (token === 78) { + nextToken(); + if (token === 73) { + return lookAhead(nextTokenIsClassOrFunction); + } + return token !== 35 && token !== 14 && canFollowModifier(); + } + if (token === 73) { + return nextTokenIsClassOrFunction(); + } + nextToken(); + return canFollowModifier(); + } + function canFollowModifier() { + return token === 18 + || token === 14 + || token === 35 + || isLiteralPropertyName(); + } + function nextTokenIsClassOrFunction() { + nextToken(); + return token === 69 || token === 83; + } + function isListElement(parsingContext, inErrorRecovery) { + var node = currentNode(parsingContext); + if (node) { + return true; + } + switch (parsingContext) { + case 0: + case 1: + return isSourceElement(inErrorRecovery); + case 2: + case 4: + return isStartOfStatement(inErrorRecovery); + case 3: + return token === 67 || token === 73; + case 5: + return isStartOfTypeMember(); + case 6: + return lookAhead(isClassMemberStart) || (token === 22 && !inErrorRecovery); + case 7: + return token === 18 || isLiteralPropertyName(); + case 13: + return token === 18 || token === 35 || isLiteralPropertyName(); + case 10: + return isLiteralPropertyName(); + case 8: + if (token === 14) { + return lookAhead(isValidHeritageClauseObjectLiteral); + } + if (!inErrorRecovery) { + return isStartOfLeftHandSideExpression() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + else { + return isIdentifier() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + case 9: + return isIdentifierOrPattern(); + case 11: + return token === 23 || token === 21 || isIdentifierOrPattern(); + case 16: + return isIdentifier(); + case 12: + case 14: + return token === 23 || token === 21 || isStartOfExpression(); + case 15: + return isStartOfParameter(); + case 17: + case 18: + return token === 23 || isStartOfType(); + case 19: + return isHeritageClause(); + case 20: + return isIdentifierOrKeyword(); + } + ts.Debug.fail("Non-exhaustive case in 'isListElement'."); + } + function isValidHeritageClauseObjectLiteral() { + ts.Debug.assert(token === 14); + if (nextToken() === 15) { + var next = nextToken(); + return next === 23 || next === 14 || next === 79 || next === 103; + } + return true; + } + function nextTokenIsIdentifier() { + nextToken(); + return isIdentifier(); + } + function isHeritageClauseExtendsOrImplementsKeyword() { + if (token === 103 || + token === 79) { + return lookAhead(nextTokenIsStartOfExpression); + } + return false; + } + function nextTokenIsStartOfExpression() { + nextToken(); + return isStartOfExpression(); + } + function isListTerminator(kind) { + if (token === 1) { + return true; + } + switch (kind) { + case 1: + case 2: + case 3: + case 5: + case 6: + case 7: + case 13: + case 10: + case 20: + return token === 15; + case 4: + return token === 15 || token === 67 || token === 73; + case 8: + return token === 14 || token === 79 || token === 103; + case 9: + return isVariableDeclaratorListTerminator(); + case 16: + return token === 25 || token === 16 || token === 14 || token === 79 || token === 103; + case 12: + return token === 17 || token === 22; + case 14: + case 18: + case 11: + return token === 19; + case 15: + return token === 17 || token === 19; + case 17: + return token === 25 || token === 16; + case 19: + return token === 14 || token === 15; + } + } + function isVariableDeclaratorListTerminator() { + if (canParseSemicolon()) { + return true; + } + if (isInOrOfKeyword(token)) { + return true; + } + if (token === 32) { + return true; + } + return false; + } + function isInSomeParsingContext() { + for (var kind = 0; kind < 21; kind++) { + if (parsingContext & (1 << kind)) { + if (isListElement(kind, true) || isListTerminator(kind)) { + return true; + } + } + } + return false; + } + function parseList(kind, checkForStrictMode, parseElement) { + var saveParsingContext = parsingContext; + parsingContext |= 1 << kind; + var result = []; + result.pos = getNodePos(); + var savedStrictModeContext = inStrictModeContext(); + while (!isListTerminator(kind)) { + if (isListElement(kind, false)) { + var element = parseListElement(kind, parseElement); + result.push(element); + if (checkForStrictMode && !inStrictModeContext()) { + if (ts.isPrologueDirective(element)) { + if (isUseStrictPrologueDirective(sourceFile, element)) { + setStrictModeContext(true); + checkForStrictMode = false; + } + } + else { + checkForStrictMode = false; + } + } + continue; + } + if (abortParsingListOrMoveToNextToken(kind)) { + break; + } + } + setStrictModeContext(savedStrictModeContext); + result.end = getNodeEnd(); + parsingContext = saveParsingContext; + return result; + } + function parseListElement(parsingContext, parseElement) { + var node = currentNode(parsingContext); + if (node) { + return consumeNode(node); + } + return parseElement(); + } + function currentNode(parsingContext) { + if (parseErrorBeforeNextFinishedNode) { + return undefined; + } + if (!syntaxCursor) { + return undefined; + } + var node = syntaxCursor.currentNode(scanner.getStartPos()); + if (ts.nodeIsMissing(node)) { + return undefined; + } + if (node.intersectsChange) { + return undefined; + } + if (ts.containsParseError(node)) { + return undefined; + } + var nodeContextFlags = node.parserContextFlags & 63; + if (nodeContextFlags !== contextFlags) { + return undefined; + } + if (!canReuseNode(node, parsingContext)) { + return undefined; + } + return node; + } + function consumeNode(node) { + scanner.setTextPos(node.end); + nextToken(); + return node; + } + function canReuseNode(node, parsingContext) { + switch (parsingContext) { + case 1: + return isReusableModuleElement(node); + case 6: + return isReusableClassMember(node); + case 3: + return isReusableSwitchClause(node); + case 2: + case 4: + return isReusableStatement(node); + case 7: + return isReusableEnumMember(node); + case 5: + return isReusableTypeMember(node); + case 9: + return isReusableVariableDeclaration(node); + case 15: + return isReusableParameter(node); + case 19: + case 16: + case 18: + case 17: + case 12: + case 13: + case 8: + } + return false; + } + function isReusableModuleElement(node) { + if (node) { + switch (node.kind) { + case 209: + case 208: + case 215: + case 214: + case 201: + case 202: + case 205: + case 204: + return true; + } + return isReusableStatement(node); + } + return false; + } + function isReusableClassMember(node) { + if (node) { + switch (node.kind) { + case 135: + case 140: + case 134: + case 136: + case 137: + case 132: + case 178: + return true; + } + } + return false; + } + function isReusableSwitchClause(node) { + if (node) { + switch (node.kind) { + case 220: + case 221: + return true; + } + } + return false; + } + function isReusableStatement(node) { + if (node) { + switch (node.kind) { + case 200: + case 180: + case 179: + case 183: + case 182: + case 195: + case 191: + case 193: + case 190: + case 189: + case 187: + case 188: + case 186: + case 185: + case 192: + case 181: + case 196: + case 194: + case 184: + case 197: + return true; + } + } + return false; + } + function isReusableEnumMember(node) { + return node.kind === 226; + } + function isReusableTypeMember(node) { + if (node) { + switch (node.kind) { + case 139: + case 133: + case 140: + case 131: + case 138: + return true; + } + } + return false; + } + function isReusableVariableDeclaration(node) { + if (node.kind !== 198) { + return false; + } + var variableDeclarator = node; + return variableDeclarator.initializer === undefined; + } + function isReusableParameter(node) { + if (node.kind !== 129) { + return false; + } + var parameter = node; + return parameter.initializer === undefined; + } + function abortParsingListOrMoveToNextToken(kind) { + parseErrorAtCurrentToken(parsingContextErrors(kind)); + if (isInSomeParsingContext()) { + return true; + } + nextToken(); + return false; + } + function parseDelimitedList(kind, parseElement, considerSemicolonAsDelimeter) { + var saveParsingContext = parsingContext; + parsingContext |= 1 << kind; + var result = []; + result.pos = getNodePos(); + var commaStart = -1; + while (true) { + if (isListElement(kind, false)) { + result.push(parseListElement(kind, parseElement)); + commaStart = scanner.getTokenPos(); + if (parseOptional(23)) { + continue; + } + commaStart = -1; + if (isListTerminator(kind)) { + break; + } + parseExpected(23); + if (considerSemicolonAsDelimeter && token === 22 && !scanner.hasPrecedingLineBreak()) { + nextToken(); + } + continue; + } + if (isListTerminator(kind)) { + break; + } + if (abortParsingListOrMoveToNextToken(kind)) { + break; + } + } + if (commaStart >= 0) { + result.hasTrailingComma = true; + } + result.end = getNodeEnd(); + parsingContext = saveParsingContext; + return result; + } + function createMissingList() { + var pos = getNodePos(); + var result = []; + result.pos = pos; + result.end = pos; + return result; + } + function parseBracketedList(kind, parseElement, open, close) { + if (parseExpected(open)) { + var result = parseDelimitedList(kind, parseElement); + parseExpected(close); + return result; + } + return createMissingList(); + } + function parseEntityName(allowReservedWords, diagnosticMessage) { + var entity = parseIdentifier(diagnosticMessage); + while (parseOptional(20)) { + var node = createNode(126, entity.pos); + node.left = entity; + node.right = parseRightSideOfDot(allowReservedWords); + entity = finishNode(node); + } + return entity; + } + function parseRightSideOfDot(allowIdentifierNames) { + if (scanner.hasPrecedingLineBreak() && scanner.isReservedWord()) { + var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); + if (matchesPattern) { + return createMissingNode(65, true, ts.Diagnostics.Identifier_expected); + } + } + return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); + } + function parseTemplateExpression() { + var template = createNode(171); + template.head = parseLiteralNode(); + ts.Debug.assert(template.head.kind === 11, "Template head has wrong token kind"); + var templateSpans = []; + templateSpans.pos = getNodePos(); + do { + templateSpans.push(parseTemplateSpan()); + } while (templateSpans[templateSpans.length - 1].literal.kind === 12); + templateSpans.end = getNodeEnd(); + template.templateSpans = templateSpans; + return finishNode(template); + } + function parseTemplateSpan() { + var span = createNode(176); + span.expression = allowInAnd(parseExpression); + var literal; + if (token === 15) { + reScanTemplateToken(); + literal = parseLiteralNode(); + } + else { + literal = parseExpectedToken(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); + } + span.literal = literal; + return finishNode(span); + } + function parseLiteralNode(internName) { + var node = createNode(token); + var text = scanner.getTokenValue(); + node.text = internName ? internIdentifier(text) : text; + if (scanner.hasExtendedUnicodeEscape()) { + node.hasExtendedUnicodeEscape = true; + } + if (scanner.isUnterminated()) { + node.isUnterminated = true; + } + var tokenPos = scanner.getTokenPos(); + nextToken(); + finishNode(node); + if (node.kind === 7 + && sourceText.charCodeAt(tokenPos) === 48 + && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { + node.flags |= 16384; + } + return node; + } + function parseTypeReference() { + var node = createNode(141); + node.typeName = parseEntityName(false, ts.Diagnostics.Type_expected); + if (!scanner.hasPrecedingLineBreak() && token === 24) { + node.typeArguments = parseBracketedList(17, parseType, 24, 25); + } + return finishNode(node); + } + function parseTypeQuery() { + var node = createNode(144); + parseExpected(97); + node.exprName = parseEntityName(true); + return finishNode(node); + } + function parseTypeParameter() { + var node = createNode(128); + node.name = parseIdentifier(); + if (parseOptional(79)) { + if (isStartOfType() || !isStartOfExpression()) { + node.constraint = parseType(); + } + else { + node.expression = parseUnaryExpressionOrHigher(); + } + } + return finishNode(node); + } + function parseTypeParameters() { + if (token === 24) { + return parseBracketedList(16, parseTypeParameter, 24, 25); + } + } + function parseParameterType() { + if (parseOptional(51)) { + return token === 8 + ? parseLiteralNode(true) + : parseType(); + } + return undefined; + } + function isStartOfParameter() { + return token === 21 || isIdentifierOrPattern() || ts.isModifier(token) || token === 52; + } + function setModifiers(node, modifiers) { + if (modifiers) { + node.flags |= modifiers.flags; + node.modifiers = modifiers; + } + } + function parseParameter() { + var node = createNode(129); + node.decorators = parseDecorators(); + setModifiers(node, parseModifiers()); + node.dotDotDotToken = parseOptionalToken(21); + node.name = inGeneratorParameterContext() ? doInYieldContext(parseIdentifierOrPattern) : parseIdentifierOrPattern(); + if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifier(token)) { + nextToken(); + } + node.questionToken = parseOptionalToken(50); + node.type = parseParameterType(); + node.initializer = inGeneratorParameterContext() ? doOutsideOfYieldContext(parseParameterInitializer) : parseParameterInitializer(); + return finishNode(node); + } + function parseParameterInitializer() { + return parseInitializer(true); + } + function fillSignature(returnToken, yieldAndGeneratorParameterContext, requireCompleteParameterList, signature) { + var returnTokenRequired = returnToken === 32; + signature.typeParameters = parseTypeParameters(); + signature.parameters = parseParameterList(yieldAndGeneratorParameterContext, requireCompleteParameterList); + if (returnTokenRequired) { + parseExpected(returnToken); + signature.type = parseType(); + } + else if (parseOptional(returnToken)) { + signature.type = parseType(); + } + } + function parseParameterList(yieldAndGeneratorParameterContext, requireCompleteParameterList) { + if (parseExpected(16)) { + var savedYieldContext = inYieldContext(); + var savedGeneratorParameterContext = inGeneratorParameterContext(); + setYieldContext(yieldAndGeneratorParameterContext); + setGeneratorParameterContext(yieldAndGeneratorParameterContext); + var result = parseDelimitedList(15, parseParameter); + setYieldContext(savedYieldContext); + setGeneratorParameterContext(savedGeneratorParameterContext); + if (!parseExpected(17) && requireCompleteParameterList) { + return undefined; + } + return result; + } + return requireCompleteParameterList ? undefined : createMissingList(); + } + function parseTypeMemberSemicolon() { + if (parseOptional(23)) { + return; + } + parseSemicolon(); + } + function parseSignatureMember(kind) { + var node = createNode(kind); + if (kind === 139) { + parseExpected(88); + } + fillSignature(51, false, false, node); + parseTypeMemberSemicolon(); + return finishNode(node); + } + function isIndexSignature() { + if (token !== 18) { + return false; + } + return lookAhead(isUnambiguouslyIndexSignature); + } + function isUnambiguouslyIndexSignature() { + nextToken(); + if (token === 21 || token === 19) { + return true; + } + if (ts.isModifier(token)) { + nextToken(); + if (isIdentifier()) { + return true; + } + } + else if (!isIdentifier()) { + return false; + } + else { + nextToken(); + } + if (token === 51 || token === 23) { + return true; + } + if (token !== 50) { + return false; + } + nextToken(); + return token === 51 || token === 23 || token === 19; + } + function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { + var node = createNode(140, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + node.parameters = parseBracketedList(15, parseParameter, 18, 19); + node.type = parseTypeAnnotation(); + parseTypeMemberSemicolon(); + return finishNode(node); + } + function parsePropertyOrMethodSignature() { + var fullStart = scanner.getStartPos(); + var name = parsePropertyName(); + var questionToken = parseOptionalToken(50); + if (token === 16 || token === 24) { + var method = createNode(133, fullStart); + method.name = name; + method.questionToken = questionToken; + fillSignature(51, false, false, method); + parseTypeMemberSemicolon(); + return finishNode(method); + } + else { + var property = createNode(131, fullStart); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + parseTypeMemberSemicolon(); + return finishNode(property); + } + } + function isStartOfTypeMember() { + switch (token) { + case 16: + case 24: + case 18: + return true; + default: + if (ts.isModifier(token)) { + var result = lookAhead(isStartOfIndexSignatureDeclaration); + if (result) { + return result; + } + } + return isLiteralPropertyName() && lookAhead(isTypeMemberWithLiteralPropertyName); + } + } + function isStartOfIndexSignatureDeclaration() { + while (ts.isModifier(token)) { + nextToken(); + } + return isIndexSignature(); + } + function isTypeMemberWithLiteralPropertyName() { + nextToken(); + return token === 16 || + token === 24 || + token === 50 || + token === 51 || + canParseSemicolon(); + } + function parseTypeMember() { + switch (token) { + case 16: + case 24: + return parseSignatureMember(138); + case 18: + return isIndexSignature() + ? parseIndexSignatureDeclaration(scanner.getStartPos(), undefined, undefined) + : parsePropertyOrMethodSignature(); + case 88: + if (lookAhead(isStartOfConstructSignature)) { + return parseSignatureMember(139); + } + case 8: + case 7: + return parsePropertyOrMethodSignature(); + default: + if (ts.isModifier(token)) { + var result = tryParse(parseIndexSignatureWithModifiers); + if (result) { + return result; + } + } + if (isIdentifierOrKeyword()) { + return parsePropertyOrMethodSignature(); + } + } + } + function parseIndexSignatureWithModifiers() { + var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); + var modifiers = parseModifiers(); + return isIndexSignature() + ? parseIndexSignatureDeclaration(fullStart, decorators, modifiers) + : undefined; + } + function isStartOfConstructSignature() { + nextToken(); + return token === 16 || token === 24; + } + function parseTypeLiteral() { + var node = createNode(145); + node.members = parseObjectTypeMembers(); + return finishNode(node); + } + function parseObjectTypeMembers() { + var members; + if (parseExpected(14)) { + members = parseList(5, false, parseTypeMember); + parseExpected(15); + } + else { + members = createMissingList(); + } + return members; + } + function parseTupleType() { + var node = createNode(147); + node.elementTypes = parseBracketedList(18, parseType, 18, 19); + return finishNode(node); + } + function parseParenthesizedType() { + var node = createNode(149); + parseExpected(16); + node.type = parseType(); + parseExpected(17); + return finishNode(node); + } + function parseFunctionOrConstructorType(kind) { + var node = createNode(kind); + if (kind === 143) { + parseExpected(88); + } + fillSignature(32, false, false, node); + return finishNode(node); + } + function parseKeywordAndNoDot() { + var node = parseTokenNode(); + return token === 20 ? undefined : node; + } + function parseNonArrayType() { + switch (token) { + case 112: + case 121: + case 119: + case 113: + case 122: + var node = tryParse(parseKeywordAndNoDot); + return node || parseTypeReference(); + case 99: + return parseTokenNode(); + case 97: + return parseTypeQuery(); + case 14: + return parseTypeLiteral(); + case 18: + return parseTupleType(); + case 16: + return parseParenthesizedType(); + default: + return parseTypeReference(); + } + } + function isStartOfType() { + switch (token) { + case 112: + case 121: + case 119: + case 113: + case 122: + case 99: + case 97: + case 14: + case 18: + case 24: + case 88: + return true; + case 16: + return lookAhead(isStartOfParenthesizedOrFunctionType); + default: + return isIdentifier(); + } + } + function isStartOfParenthesizedOrFunctionType() { + nextToken(); + return token === 17 || isStartOfParameter() || isStartOfType(); + } + function parseArrayTypeOrHigher() { + var type = parseNonArrayType(); + while (!scanner.hasPrecedingLineBreak() && parseOptional(18)) { + parseExpected(19); + var node = createNode(146, type.pos); + node.elementType = type; + type = finishNode(node); + } + return type; + } + function parseUnionTypeOrHigher() { + var type = parseArrayTypeOrHigher(); + if (token === 44) { + var types = [type]; + types.pos = type.pos; + while (parseOptional(44)) { + types.push(parseArrayTypeOrHigher()); + } + types.end = getNodeEnd(); + var node = createNode(148, type.pos); + node.types = types; + type = finishNode(node); + } + return type; + } + function isStartOfFunctionType() { + if (token === 24) { + return true; + } + return token === 16 && lookAhead(isUnambiguouslyStartOfFunctionType); + } + function isUnambiguouslyStartOfFunctionType() { + nextToken(); + if (token === 17 || token === 21) { + return true; + } + if (isIdentifier() || ts.isModifier(token)) { + nextToken(); + if (token === 51 || token === 23 || + token === 50 || token === 53 || + isIdentifier() || ts.isModifier(token)) { + return true; + } + if (token === 17) { + nextToken(); + if (token === 32) { + return true; + } + } + } + return false; + } + function parseType() { + var savedYieldContext = inYieldContext(); + var savedGeneratorParameterContext = inGeneratorParameterContext(); + setYieldContext(false); + setGeneratorParameterContext(false); + var result = parseTypeWorker(); + setYieldContext(savedYieldContext); + setGeneratorParameterContext(savedGeneratorParameterContext); + return result; + } + function parseTypeWorker() { + if (isStartOfFunctionType()) { + return parseFunctionOrConstructorType(142); + } + if (token === 88) { + return parseFunctionOrConstructorType(143); + } + return parseUnionTypeOrHigher(); + } + function parseTypeAnnotation() { + return parseOptional(51) ? parseType() : undefined; + } + function isStartOfLeftHandSideExpression() { + switch (token) { + case 93: + case 91: + case 89: + case 95: + case 80: + case 7: + case 8: + case 10: + case 11: + case 16: + case 18: + case 14: + case 83: + case 69: + case 88: + case 36: + case 57: + case 65: + return true; + default: + return isIdentifier(); + } + } + function isStartOfExpression() { + if (isStartOfLeftHandSideExpression()) { + return true; + } + switch (token) { + case 33: + case 34: + case 47: + case 46: + case 74: + case 97: + case 99: + case 38: + case 39: + case 24: + case 111: + return true; + default: + if (isBinaryOperator()) { + return true; + } + return isIdentifier(); + } + } + function isStartOfExpressionStatement() { + return token !== 14 && + token !== 83 && + token !== 69 && + token !== 52 && + isStartOfExpression(); + } + function parseExpression() { + // Expression[in]: + // AssignmentExpression[in] + // Expression[in] , AssignmentExpression[in] + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var expr = parseAssignmentExpressionOrHigher(); + var operatorToken; + while ((operatorToken = parseOptionalToken(23))) { + expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); + } + if (saveDecoratorContext) { + setDecoratorContext(true); + } + return expr; + } + function parseInitializer(inParameter) { + if (token !== 53) { + if (scanner.hasPrecedingLineBreak() || (inParameter && token === 14) || !isStartOfExpression()) { + return undefined; + } + } + parseExpected(53); + return parseAssignmentExpressionOrHigher(); + } + function parseAssignmentExpressionOrHigher() { + // AssignmentExpression[in,yield]: + // 1) ConditionalExpression[?in,?yield] + // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield] + // 3) LeftHandSideExpression AssignmentOperator AssignmentExpression[?in,?yield] + // 4) ArrowFunctionExpression[?in,?yield] + // 5) [+Yield] YieldExpression[?In] + // + // Note: for ease of implementation we treat productions '2' and '3' as the same thing. + // (i.e. they're both BinaryExpressions with an assignment operator in it). + if (isYieldExpression()) { + return parseYieldExpression(); + } + var arrowExpression = tryParseParenthesizedArrowFunctionExpression(); + if (arrowExpression) { + return arrowExpression; + } + var expr = parseBinaryExpressionOrHigher(0); + if (expr.kind === 65 && token === 32) { + return parseSimpleArrowFunctionExpression(expr); + } + if (isLeftHandSideExpression(expr) && isAssignmentOperator(reScanGreaterToken())) { + return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher()); + } + return parseConditionalExpressionRest(expr); + } + function isYieldExpression() { + if (token === 111) { + if (inYieldContext()) { + return true; + } + if (inStrictModeContext()) { + return true; + } + return lookAhead(nextTokenIsIdentifierOnSameLine); + } + return false; + } + function nextTokenIsIdentifierOnSameLine() { + nextToken(); + return !scanner.hasPrecedingLineBreak() && isIdentifier(); + } + function nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine() { + nextToken(); + return !scanner.hasPrecedingLineBreak() && + (isIdentifier() || token === 14 || token === 18); + } + function parseYieldExpression() { + var node = createNode(172); + nextToken(); + if (!scanner.hasPrecedingLineBreak() && + (token === 35 || isStartOfExpression())) { + node.asteriskToken = parseOptionalToken(35); + node.expression = parseAssignmentExpressionOrHigher(); + return finishNode(node); + } + else { + return finishNode(node); + } + } + function parseSimpleArrowFunctionExpression(identifier) { + ts.Debug.assert(token === 32, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); + var node = createNode(163, identifier.pos); + var parameter = createNode(129, identifier.pos); + parameter.name = identifier; + finishNode(parameter); + node.parameters = [parameter]; + node.parameters.pos = parameter.pos; + node.parameters.end = parameter.end; + node.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); + node.body = parseArrowFunctionExpressionBody(); + return finishNode(node); + } + function tryParseParenthesizedArrowFunctionExpression() { + var triState = isParenthesizedArrowFunctionExpression(); + if (triState === 0) { + return undefined; + } + var arrowFunction = triState === 1 + ? parseParenthesizedArrowFunctionExpressionHead(true) + : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); + if (!arrowFunction) { + return undefined; + } + var lastToken = token; + arrowFunction.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); + arrowFunction.body = (lastToken === 32 || lastToken === 14) + ? parseArrowFunctionExpressionBody() + : parseIdentifier(); + return finishNode(arrowFunction); + } + function isParenthesizedArrowFunctionExpression() { + if (token === 16 || token === 24) { + return lookAhead(isParenthesizedArrowFunctionExpressionWorker); + } + if (token === 32) { + return 1; + } + return 0; + } + function isParenthesizedArrowFunctionExpressionWorker() { + var first = token; + var second = nextToken(); + if (first === 16) { + if (second === 17) { + var third = nextToken(); + switch (third) { + case 32: + case 51: + case 14: + return 1; + default: + return 0; + } + } + if (second === 21) { + return 1; + } + if (!isIdentifier()) { + return 0; + } + if (nextToken() === 51) { + return 1; + } + return 2; + } + else { + ts.Debug.assert(first === 24); + if (!isIdentifier()) { + return 0; + } + return 2; + } + } + function parsePossibleParenthesizedArrowFunctionExpressionHead() { + return parseParenthesizedArrowFunctionExpressionHead(false); + } + function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { + var node = createNode(163); + fillSignature(51, false, !allowAmbiguity, node); + if (!node.parameters) { + return undefined; + } + if (!allowAmbiguity && token !== 32 && token !== 14) { + return undefined; + } + return node; + } + function parseArrowFunctionExpressionBody() { + if (token === 14) { + return parseFunctionBlock(false, false); + } + if (isStartOfStatement(true) && + !isStartOfExpressionStatement() && + token !== 83 && + token !== 69) { + return parseFunctionBlock(false, true); + } + return parseAssignmentExpressionOrHigher(); + } + function parseConditionalExpressionRest(leftOperand) { + var questionToken = parseOptionalToken(50); + if (!questionToken) { + return leftOperand; + } + var node = createNode(170, leftOperand.pos); + node.condition = leftOperand; + node.questionToken = questionToken; + node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); + node.colonToken = parseExpectedToken(51, false, ts.Diagnostics._0_expected, ts.tokenToString(51)); + node.whenFalse = parseAssignmentExpressionOrHigher(); + return finishNode(node); + } + function parseBinaryExpressionOrHigher(precedence) { + var leftOperand = parseUnaryExpressionOrHigher(); + return parseBinaryExpressionRest(precedence, leftOperand); + } + function isInOrOfKeyword(t) { + return t === 86 || t === 125; + } + function parseBinaryExpressionRest(precedence, leftOperand) { + while (true) { + reScanGreaterToken(); + var newPrecedence = getBinaryOperatorPrecedence(); + if (newPrecedence <= precedence) { + break; + } + if (token === 86 && inDisallowInContext()) { + break; + } + leftOperand = makeBinaryExpression(leftOperand, parseTokenNode(), parseBinaryExpressionOrHigher(newPrecedence)); + } + return leftOperand; + } + function isBinaryOperator() { + if (inDisallowInContext() && token === 86) { + return false; + } + return getBinaryOperatorPrecedence() > 0; + } + function getBinaryOperatorPrecedence() { + switch (token) { + case 49: + return 1; + case 48: + return 2; + case 44: + return 3; + case 45: + return 4; + case 43: + return 5; + case 28: + case 29: + case 30: + case 31: + return 6; + case 24: + case 25: + case 26: + case 27: + case 87: + case 86: + return 7; + case 40: + case 41: + case 42: + return 8; + case 33: + case 34: + return 9; + case 35: + case 36: + case 37: + return 10; + } + return -1; + } + function makeBinaryExpression(left, operatorToken, right) { + var node = createNode(169, left.pos); + node.left = left; + node.operatorToken = operatorToken; + node.right = right; + return finishNode(node); + } + function parsePrefixUnaryExpression() { + var node = createNode(167); + node.operator = token; + nextToken(); + node.operand = parseUnaryExpressionOrHigher(); + return finishNode(node); + } + function parseDeleteExpression() { + var node = createNode(164); + nextToken(); + node.expression = parseUnaryExpressionOrHigher(); + return finishNode(node); + } + function parseTypeOfExpression() { + var node = createNode(165); + nextToken(); + node.expression = parseUnaryExpressionOrHigher(); + return finishNode(node); + } + function parseVoidExpression() { + var node = createNode(166); + nextToken(); + node.expression = parseUnaryExpressionOrHigher(); + return finishNode(node); + } + function parseUnaryExpressionOrHigher() { + switch (token) { + case 33: + case 34: + case 47: + case 46: + case 38: + case 39: + return parsePrefixUnaryExpression(); + case 74: + return parseDeleteExpression(); + case 97: + return parseTypeOfExpression(); + case 99: + return parseVoidExpression(); + case 24: + return parseTypeAssertion(); + default: + return parsePostfixExpressionOrHigher(); + } + } + function parsePostfixExpressionOrHigher() { + var expression = parseLeftHandSideExpressionOrHigher(); + ts.Debug.assert(isLeftHandSideExpression(expression)); + if ((token === 38 || token === 39) && !scanner.hasPrecedingLineBreak()) { + var node = createNode(168, expression.pos); + node.operand = expression; + node.operator = token; + nextToken(); + return finishNode(node); + } + return expression; + } + function parseLeftHandSideExpressionOrHigher() { + var expression = token === 91 + ? parseSuperExpression() + : parseMemberExpressionOrHigher(); + return parseCallExpressionRest(expression); + } + function parseMemberExpressionOrHigher() { + var expression = parsePrimaryExpression(); + return parseMemberExpressionRest(expression); + } + function parseSuperExpression() { + var expression = parseTokenNode(); + if (token === 16 || token === 20) { + return expression; + } + var node = createNode(155, expression.pos); + node.expression = expression; + node.dotToken = parseExpectedToken(20, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); + node.name = parseRightSideOfDot(true); + return finishNode(node); + } + function parseTypeAssertion() { + var node = createNode(160); + parseExpected(24); + node.type = parseType(); + parseExpected(25); + node.expression = parseUnaryExpressionOrHigher(); + return finishNode(node); + } + function parseMemberExpressionRest(expression) { + while (true) { + var dotToken = parseOptionalToken(20); + if (dotToken) { + var propertyAccess = createNode(155, expression.pos); + propertyAccess.expression = expression; + propertyAccess.dotToken = dotToken; + propertyAccess.name = parseRightSideOfDot(true); + expression = finishNode(propertyAccess); + continue; + } + if (!inDecoratorContext() && parseOptional(18)) { + var indexedAccess = createNode(156, expression.pos); + indexedAccess.expression = expression; + if (token !== 19) { + indexedAccess.argumentExpression = allowInAnd(parseExpression); + if (indexedAccess.argumentExpression.kind === 8 || indexedAccess.argumentExpression.kind === 7) { + var literal = indexedAccess.argumentExpression; + literal.text = internIdentifier(literal.text); + } + } + parseExpected(19); + expression = finishNode(indexedAccess); + continue; + } + if (token === 10 || token === 11) { + var tagExpression = createNode(159, expression.pos); + tagExpression.tag = expression; + tagExpression.template = token === 10 + ? parseLiteralNode() + : parseTemplateExpression(); + expression = finishNode(tagExpression); + continue; + } + return expression; + } + } + function parseCallExpressionRest(expression) { + while (true) { + expression = parseMemberExpressionRest(expression); + if (token === 24) { + var typeArguments = tryParse(parseTypeArgumentsInExpression); + if (!typeArguments) { + return expression; + } + var callExpr = createNode(157, expression.pos); + callExpr.expression = expression; + callExpr.typeArguments = typeArguments; + callExpr.arguments = parseArgumentList(); + expression = finishNode(callExpr); + continue; + } + else if (token === 16) { + var callExpr = createNode(157, expression.pos); + callExpr.expression = expression; + callExpr.arguments = parseArgumentList(); + expression = finishNode(callExpr); + continue; + } + return expression; + } + } + function parseArgumentList() { + parseExpected(16); + var result = parseDelimitedList(12, parseArgumentExpression); + parseExpected(17); + return result; + } + function parseTypeArgumentsInExpression() { + if (!parseOptional(24)) { + return undefined; + } + var typeArguments = parseDelimitedList(17, parseType); + if (!parseExpected(25)) { + return undefined; + } + return typeArguments && canFollowTypeArgumentsInExpression() + ? typeArguments + : undefined; + } + function canFollowTypeArgumentsInExpression() { + switch (token) { + case 16: + case 20: + case 17: + case 19: + case 51: + case 22: + case 50: + case 28: + case 30: + case 29: + case 31: + case 48: + case 49: + case 45: + case 43: + case 44: + case 15: + case 1: + return true; + case 23: + case 14: + default: + return false; + } + } + function parsePrimaryExpression() { + switch (token) { + case 7: + case 8: + case 10: + return parseLiteralNode(); + case 93: + case 91: + case 89: + case 95: + case 80: + return parseTokenNode(); + case 16: + return parseParenthesizedExpression(); + case 18: + return parseArrayLiteralExpression(); + case 14: + return parseObjectLiteralExpression(); + case 69: + return parseClassExpression(); + case 83: + return parseFunctionExpression(); + case 88: + return parseNewExpression(); + case 36: + case 57: + if (reScanSlashToken() === 9) { + return parseLiteralNode(); + } + break; + case 11: + return parseTemplateExpression(); + } + return parseIdentifier(ts.Diagnostics.Expression_expected); + } + function parseParenthesizedExpression() { + var node = createNode(161); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + return finishNode(node); + } + function parseSpreadElement() { + var node = createNode(173); + parseExpected(21); + node.expression = parseAssignmentExpressionOrHigher(); + return finishNode(node); + } + function parseArgumentOrArrayLiteralElement() { + return token === 21 ? parseSpreadElement() : + token === 23 ? createNode(175) : + parseAssignmentExpressionOrHigher(); + } + function parseArgumentExpression() { + return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); + } + function parseArrayLiteralExpression() { + var node = createNode(153); + parseExpected(18); + if (scanner.hasPrecedingLineBreak()) + node.flags |= 512; + node.elements = parseDelimitedList(14, parseArgumentOrArrayLiteralElement); + parseExpected(19); + return finishNode(node); + } + function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { + if (parseContextualModifier(116)) { + return parseAccessorDeclaration(136, fullStart, decorators, modifiers); + } + else if (parseContextualModifier(120)) { + return parseAccessorDeclaration(137, fullStart, decorators, modifiers); + } + return undefined; + } + function parseObjectLiteralElement() { + var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); + var modifiers = parseModifiers(); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); + if (accessor) { + return accessor; + } + var asteriskToken = parseOptionalToken(35); + var tokenIsIdentifier = isIdentifier(); + var nameToken = token; + var propertyName = parsePropertyName(); + var questionToken = parseOptionalToken(50); + if (asteriskToken || token === 16 || token === 24) { + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, propertyName, questionToken); + } + if ((token === 23 || token === 15) && tokenIsIdentifier) { + var shorthandDeclaration = createNode(225, fullStart); + shorthandDeclaration.name = propertyName; + shorthandDeclaration.questionToken = questionToken; + return finishNode(shorthandDeclaration); + } + else { + var propertyAssignment = createNode(224, fullStart); + propertyAssignment.name = propertyName; + propertyAssignment.questionToken = questionToken; + parseExpected(51); + propertyAssignment.initializer = allowInAnd(parseAssignmentExpressionOrHigher); + return finishNode(propertyAssignment); + } + } + function parseObjectLiteralExpression() { + var node = createNode(154); + parseExpected(14); + if (scanner.hasPrecedingLineBreak()) { + node.flags |= 512; + } + node.properties = parseDelimitedList(13, parseObjectLiteralElement, true); + parseExpected(15); + return finishNode(node); + } + function parseFunctionExpression() { + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var node = createNode(162); + parseExpected(83); + node.asteriskToken = parseOptionalToken(35); + node.name = node.asteriskToken ? doInYieldContext(parseOptionalIdentifier) : parseOptionalIdentifier(); + fillSignature(51, !!node.asteriskToken, false, node); + node.body = parseFunctionBlock(!!node.asteriskToken, false); + if (saveDecoratorContext) { + setDecoratorContext(true); + } + return finishNode(node); + } + function parseOptionalIdentifier() { + return isIdentifier() ? parseIdentifier() : undefined; + } + function parseNewExpression() { + var node = createNode(158); + parseExpected(88); + node.expression = parseMemberExpressionOrHigher(); + node.typeArguments = tryParse(parseTypeArgumentsInExpression); + if (node.typeArguments || token === 16) { + node.arguments = parseArgumentList(); + } + return finishNode(node); + } + function parseBlock(ignoreMissingOpenBrace, checkForStrictMode, diagnosticMessage) { + var node = createNode(179); + if (parseExpected(14, diagnosticMessage) || ignoreMissingOpenBrace) { + node.statements = parseList(2, checkForStrictMode, parseStatement); + parseExpected(15); + } + else { + node.statements = createMissingList(); + } + return finishNode(node); + } + function parseFunctionBlock(allowYield, ignoreMissingOpenBrace, diagnosticMessage) { + var savedYieldContext = inYieldContext(); + setYieldContext(allowYield); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var block = parseBlock(ignoreMissingOpenBrace, true, diagnosticMessage); + if (saveDecoratorContext) { + setDecoratorContext(true); + } + setYieldContext(savedYieldContext); + return block; + } + function parseEmptyStatement() { + var node = createNode(181); + parseExpected(22); + return finishNode(node); + } + function parseIfStatement() { + var node = createNode(183); + parseExpected(84); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + node.thenStatement = parseStatement(); + node.elseStatement = parseOptional(76) ? parseStatement() : undefined; + return finishNode(node); + } + function parseDoStatement() { + var node = createNode(184); + parseExpected(75); + node.statement = parseStatement(); + parseExpected(100); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + parseOptional(22); + return finishNode(node); + } + function parseWhileStatement() { + var node = createNode(185); + parseExpected(100); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + node.statement = parseStatement(); + return finishNode(node); + } + function parseForOrForInOrForOfStatement() { + var pos = getNodePos(); + parseExpected(82); + parseExpected(16); + var initializer = undefined; + if (token !== 22) { + if (token === 98 || token === 105 || token === 70) { + initializer = parseVariableDeclarationList(true); + } + else { + initializer = disallowInAnd(parseExpression); + } + } + var forOrForInOrForOfStatement; + if (parseOptional(86)) { + var forInStatement = createNode(187, pos); + forInStatement.initializer = initializer; + forInStatement.expression = allowInAnd(parseExpression); + parseExpected(17); + forOrForInOrForOfStatement = forInStatement; + } + else if (parseOptional(125)) { + var forOfStatement = createNode(188, pos); + forOfStatement.initializer = initializer; + forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); + parseExpected(17); + forOrForInOrForOfStatement = forOfStatement; + } + else { + var forStatement = createNode(186, pos); + forStatement.initializer = initializer; + parseExpected(22); + if (token !== 22 && token !== 17) { + forStatement.condition = allowInAnd(parseExpression); + } + parseExpected(22); + if (token !== 17) { + forStatement.iterator = allowInAnd(parseExpression); + } + parseExpected(17); + forOrForInOrForOfStatement = forStatement; + } + forOrForInOrForOfStatement.statement = parseStatement(); + return finishNode(forOrForInOrForOfStatement); + } + function parseBreakOrContinueStatement(kind) { + var node = createNode(kind); + parseExpected(kind === 190 ? 66 : 71); + if (!canParseSemicolon()) { + node.label = parseIdentifier(); + } + parseSemicolon(); + return finishNode(node); + } + function parseReturnStatement() { + var node = createNode(191); + parseExpected(90); + if (!canParseSemicolon()) { + node.expression = allowInAnd(parseExpression); + } + parseSemicolon(); + return finishNode(node); + } + function parseWithStatement() { + var node = createNode(192); + parseExpected(101); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + node.statement = parseStatement(); + return finishNode(node); + } + function parseCaseClause() { + var node = createNode(220); + parseExpected(67); + node.expression = allowInAnd(parseExpression); + parseExpected(51); + node.statements = parseList(4, false, parseStatement); + return finishNode(node); + } + function parseDefaultClause() { + var node = createNode(221); + parseExpected(73); + parseExpected(51); + node.statements = parseList(4, false, parseStatement); + return finishNode(node); + } + function parseCaseOrDefaultClause() { + return token === 67 ? parseCaseClause() : parseDefaultClause(); + } + function parseSwitchStatement() { + var node = createNode(193); + parseExpected(92); + parseExpected(16); + node.expression = allowInAnd(parseExpression); + parseExpected(17); + var caseBlock = createNode(207, scanner.getStartPos()); + parseExpected(14); + caseBlock.clauses = parseList(3, false, parseCaseOrDefaultClause); + parseExpected(15); + node.caseBlock = finishNode(caseBlock); + return finishNode(node); + } + function parseThrowStatement() { + // ThrowStatement[Yield] : + // throw [no LineTerminator here]Expression[In, ?Yield]; + var node = createNode(195); + parseExpected(94); + node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); + parseSemicolon(); + return finishNode(node); + } + function parseTryStatement() { + var node = createNode(196); + parseExpected(96); + node.tryBlock = parseBlock(false, false); + node.catchClause = token === 68 ? parseCatchClause() : undefined; + if (!node.catchClause || token === 81) { + parseExpected(81); + node.finallyBlock = parseBlock(false, false); + } + return finishNode(node); + } + function parseCatchClause() { + var result = createNode(223); + parseExpected(68); + if (parseExpected(16)) { + result.variableDeclaration = parseVariableDeclaration(); + } + parseExpected(17); + result.block = parseBlock(false, false); + return finishNode(result); + } + function parseDebuggerStatement() { + var node = createNode(197); + parseExpected(72); + parseSemicolon(); + return finishNode(node); + } + function parseExpressionOrLabeledStatement() { + var fullStart = scanner.getStartPos(); + var expression = allowInAnd(parseExpression); + if (expression.kind === 65 && parseOptional(51)) { + var labeledStatement = createNode(194, fullStart); + labeledStatement.label = expression; + labeledStatement.statement = parseStatement(); + return finishNode(labeledStatement); + } + else { + var expressionStatement = createNode(182, fullStart); + expressionStatement.expression = expression; + parseSemicolon(); + return finishNode(expressionStatement); + } + } + function isStartOfStatement(inErrorRecovery) { + if (ts.isModifier(token)) { + var result = lookAhead(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); + if (result) { + return true; + } + } + switch (token) { + case 22: + return !inErrorRecovery; + case 14: + case 98: + case 105: + case 83: + case 69: + case 84: + case 75: + case 100: + case 82: + case 71: + case 66: + case 90: + case 101: + case 92: + case 94: + case 96: + case 72: + case 68: + case 81: + return true; + case 70: + var isConstEnum = lookAhead(nextTokenIsEnumKeyword); + return !isConstEnum; + case 104: + case 117: + case 77: + case 123: + if (isDeclarationStart()) { + return false; + } + case 109: + case 107: + case 108: + case 110: + if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) { + return false; + } + default: + return isStartOfExpression(); + } + } + function nextTokenIsEnumKeyword() { + nextToken(); + return token === 77; + } + function nextTokenIsIdentifierOrKeywordOnSameLine() { + nextToken(); + return isIdentifierOrKeyword() && !scanner.hasPrecedingLineBreak(); + } + function parseStatement() { + switch (token) { + case 14: + return parseBlock(false, false); + case 98: + case 70: + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); + case 83: + return parseFunctionDeclaration(scanner.getStartPos(), undefined, undefined); + case 69: + return parseClassDeclaration(scanner.getStartPos(), undefined, undefined); + case 22: + return parseEmptyStatement(); + case 84: + return parseIfStatement(); + case 75: + return parseDoStatement(); + case 100: + return parseWhileStatement(); + case 82: + return parseForOrForInOrForOfStatement(); + case 71: + return parseBreakOrContinueStatement(189); + case 66: + return parseBreakOrContinueStatement(190); + case 90: + return parseReturnStatement(); + case 101: + return parseWithStatement(); + case 92: + return parseSwitchStatement(); + case 94: + return parseThrowStatement(); + case 96: + case 68: + case 81: + return parseTryStatement(); + case 72: + return parseDebuggerStatement(); + case 105: + if (isLetDeclaration()) { + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); + } + default: + if (ts.isModifier(token) || token === 52) { + var result = tryParse(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); + if (result) { + return result; + } + } + return parseExpressionOrLabeledStatement(); + } + } + function parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers() { + var start = scanner.getStartPos(); + var decorators = parseDecorators(); + var modifiers = parseModifiers(); + switch (token) { + case 70: + var nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword); + if (nextTokenIsEnum) { + return undefined; + } + return parseVariableStatement(start, decorators, modifiers); + case 105: + if (!isLetDeclaration()) { + return undefined; + } + return parseVariableStatement(start, decorators, modifiers); + case 98: + return parseVariableStatement(start, decorators, modifiers); + case 83: + return parseFunctionDeclaration(start, decorators, modifiers); + case 69: + return parseClassDeclaration(start, decorators, modifiers); + } + return undefined; + } + function parseFunctionBlockOrSemicolon(isGenerator, diagnosticMessage) { + if (token !== 14 && canParseSemicolon()) { + parseSemicolon(); + return; + } + return parseFunctionBlock(isGenerator, false, diagnosticMessage); + } + function parseArrayBindingElement() { + if (token === 23) { + return createNode(175); + } + var node = createNode(152); + node.dotDotDotToken = parseOptionalToken(21); + node.name = parseIdentifierOrPattern(); + node.initializer = parseInitializer(false); + return finishNode(node); + } + function parseObjectBindingElement() { + var node = createNode(152); + var id = parsePropertyName(); + if (id.kind === 65 && token !== 51) { + node.name = id; + } + else { + parseExpected(51); + node.propertyName = id; + node.name = parseIdentifierOrPattern(); + } + node.initializer = parseInitializer(false); + return finishNode(node); + } + function parseObjectBindingPattern() { + var node = createNode(150); + parseExpected(14); + node.elements = parseDelimitedList(10, parseObjectBindingElement); + parseExpected(15); + return finishNode(node); + } + function parseArrayBindingPattern() { + var node = createNode(151); + parseExpected(18); + node.elements = parseDelimitedList(11, parseArrayBindingElement); + parseExpected(19); + return finishNode(node); + } + function isIdentifierOrPattern() { + return token === 14 || token === 18 || isIdentifier(); + } + function parseIdentifierOrPattern() { + if (token === 18) { + return parseArrayBindingPattern(); + } + if (token === 14) { + return parseObjectBindingPattern(); + } + return parseIdentifier(); + } + function parseVariableDeclaration() { + var node = createNode(198); + node.name = parseIdentifierOrPattern(); + node.type = parseTypeAnnotation(); + if (!isInOrOfKeyword(token)) { + node.initializer = parseInitializer(false); + } + return finishNode(node); + } + function parseVariableDeclarationList(inForStatementInitializer) { + var node = createNode(199); + switch (token) { + case 98: + break; + case 105: + node.flags |= 4096; + break; + case 70: + node.flags |= 8192; + break; + default: + ts.Debug.fail(); + } + nextToken(); + if (token === 125 && lookAhead(canFollowContextualOfKeyword)) { + node.declarations = createMissingList(); + } + else { + var savedDisallowIn = inDisallowInContext(); + setDisallowInContext(inForStatementInitializer); + node.declarations = parseDelimitedList(9, parseVariableDeclaration); + setDisallowInContext(savedDisallowIn); + } + return finishNode(node); + } + function canFollowContextualOfKeyword() { + return nextTokenIsIdentifier() && nextToken() === 17; + } + function parseVariableStatement(fullStart, decorators, modifiers) { + var node = createNode(180, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + node.declarationList = parseVariableDeclarationList(false); + parseSemicolon(); + return finishNode(node); + } + function parseFunctionDeclaration(fullStart, decorators, modifiers) { + var node = createNode(200, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(83); + node.asteriskToken = parseOptionalToken(35); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); + fillSignature(51, !!node.asteriskToken, false, node); + node.body = parseFunctionBlockOrSemicolon(!!node.asteriskToken, ts.Diagnostics.or_expected); + return finishNode(node); + } + function parseConstructorDeclaration(pos, decorators, modifiers) { + var node = createNode(135, pos); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(114); + fillSignature(51, false, false, node); + node.body = parseFunctionBlockOrSemicolon(false, ts.Diagnostics.or_expected); + return finishNode(node); + } + function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { + var method = createNode(134, fullStart); + method.decorators = decorators; + setModifiers(method, modifiers); + method.asteriskToken = asteriskToken; + method.name = name; + method.questionToken = questionToken; + fillSignature(51, !!asteriskToken, false, method); + method.body = parseFunctionBlockOrSemicolon(!!asteriskToken, diagnosticMessage); + return finishNode(method); + } + function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { + var property = createNode(132, fullStart); + property.decorators = decorators; + setModifiers(property, modifiers); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + property.initializer = allowInAnd(parseNonParameterInitializer); + parseSemicolon(); + return finishNode(property); + } + function parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers) { + var asteriskToken = parseOptionalToken(35); + var name = parsePropertyName(); + var questionToken = parseOptionalToken(50); + if (asteriskToken || token === 16 || token === 24) { + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); + } + else { + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken); + } + } + function parseNonParameterInitializer() { + return parseInitializer(false); + } + function parseAccessorDeclaration(kind, fullStart, decorators, modifiers) { + var node = createNode(kind, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + node.name = parsePropertyName(); + fillSignature(51, false, false, node); + node.body = parseFunctionBlockOrSemicolon(false); + return finishNode(node); + } + function isClassMemberStart() { + var idToken; + if (token === 52) { + return true; + } + while (ts.isModifier(token)) { + idToken = token; + nextToken(); + } + if (token === 35) { + return true; + } + if (isLiteralPropertyName()) { + idToken = token; + nextToken(); + } + if (token === 18) { + return true; + } + if (idToken !== undefined) { + if (!ts.isKeyword(idToken) || idToken === 120 || idToken === 116) { + return true; + } + switch (token) { + case 16: + case 24: + case 51: + case 53: + case 50: + return true; + default: + return canParseSemicolon(); + } + } + return false; + } + function parseDecorators() { + var decorators; + while (true) { + var decoratorStart = getNodePos(); + if (!parseOptional(52)) { + break; + } + if (!decorators) { + decorators = []; + decorators.pos = scanner.getStartPos(); + } + var decorator = createNode(130, decoratorStart); + decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); + decorators.push(finishNode(decorator)); + } + if (decorators) { + decorators.end = getNodeEnd(); + } + return decorators; + } + function parseModifiers() { + var flags = 0; + var modifiers; + while (true) { + var modifierStart = scanner.getStartPos(); + var modifierKind = token; + if (!parseAnyContextualModifier()) { + break; + } + if (!modifiers) { + modifiers = []; + modifiers.pos = modifierStart; + } + flags |= modifierToFlag(modifierKind); + modifiers.push(finishNode(createNode(modifierKind, modifierStart))); + } + if (modifiers) { + modifiers.flags = flags; + modifiers.end = scanner.getStartPos(); + } + return modifiers; + } + function parseClassElement() { + if (token === 22) { + var result = createNode(178); + nextToken(); + return finishNode(result); + } + var fullStart = getNodePos(); + var decorators = parseDecorators(); + var modifiers = parseModifiers(); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); + if (accessor) { + return accessor; + } + if (token === 114) { + return parseConstructorDeclaration(fullStart, decorators, modifiers); + } + if (isIndexSignature()) { + return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); + } + if (isIdentifierOrKeyword() || + token === 8 || + token === 7 || + token === 35 || + token === 18) { + return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); + } + if (decorators) { + var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined); + } + ts.Debug.fail("Should not have attempted to parse class member declaration."); + } + function parseClassExpression() { + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 174); + } + function parseClassDeclaration(fullStart, decorators, modifiers) { + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 201); + } + function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { + var savedStrictModeContext = inStrictModeContext(); + if (languageVersion >= 2) { + setStrictModeContext(true); + } + var node = createNode(kind, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(69); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); + node.typeParameters = parseTypeParameters(); + node.heritageClauses = parseHeritageClauses(true); + if (parseExpected(14)) { + node.members = inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseClassMembers) + : parseClassMembers(); + parseExpected(15); + } + else { + node.members = createMissingList(); + } + var finishedNode = finishNode(node); + setStrictModeContext(savedStrictModeContext); + return finishedNode; + } + function parseHeritageClauses(isClassHeritageClause) { + // ClassTail[Yield,GeneratorParameter] : See 14.5 + // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } + // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } + if (isHeritageClause()) { + return isClassHeritageClause && inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseHeritageClausesWorker) + : parseHeritageClausesWorker(); + } + return undefined; + } + function parseHeritageClausesWorker() { + return parseList(19, false, parseHeritageClause); + } + function parseHeritageClause() { + if (token === 79 || token === 103) { + var node = createNode(222); + node.token = token; + nextToken(); + node.types = parseDelimitedList(8, parseHeritageClauseElement); + return finishNode(node); + } + return undefined; + } + function parseHeritageClauseElement() { + var node = createNode(177); + node.expression = parseLeftHandSideExpressionOrHigher(); + if (token === 24) { + node.typeArguments = parseBracketedList(17, parseType, 24, 25); + } + return finishNode(node); + } + function isHeritageClause() { + return token === 79 || token === 103; + } + function parseClassMembers() { + return parseList(6, false, parseClassElement); + } + function parseInterfaceDeclaration(fullStart, decorators, modifiers) { + var node = createNode(202, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(104); + node.name = parseIdentifier(); + node.typeParameters = parseTypeParameters(); + node.heritageClauses = parseHeritageClauses(false); + node.members = parseObjectTypeMembers(); + return finishNode(node); + } + function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { + var node = createNode(203, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(123); + node.name = parseIdentifier(); + parseExpected(53); + node.type = parseType(); + parseSemicolon(); + return finishNode(node); + } + function parseEnumMember() { + var node = createNode(226, scanner.getStartPos()); + node.name = parsePropertyName(); + node.initializer = allowInAnd(parseNonParameterInitializer); + return finishNode(node); + } + function parseEnumDeclaration(fullStart, decorators, modifiers) { + var node = createNode(204, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + parseExpected(77); + node.name = parseIdentifier(); + if (parseExpected(14)) { + node.members = parseDelimitedList(7, parseEnumMember); + parseExpected(15); + } + else { + node.members = createMissingList(); + } + return finishNode(node); + } + function parseModuleBlock() { + var node = createNode(206, scanner.getStartPos()); + if (parseExpected(14)) { + node.statements = parseList(1, false, parseModuleElement); + parseExpected(15); + } + else { + node.statements = createMissingList(); + } + return finishNode(node); + } + function parseInternalModuleTail(fullStart, decorators, modifiers, flags) { + var node = createNode(205, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + node.flags |= flags; + node.name = parseIdentifier(); + node.body = parseOptional(20) + ? parseInternalModuleTail(getNodePos(), undefined, undefined, 1) + : parseModuleBlock(); + return finishNode(node); + } + function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { + var node = createNode(205, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + node.name = parseLiteralNode(true); + node.body = parseModuleBlock(); + return finishNode(node); + } + function parseModuleDeclaration(fullStart, decorators, modifiers) { + parseExpected(117); + return token === 8 + ? parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) + : parseInternalModuleTail(fullStart, decorators, modifiers, modifiers ? modifiers.flags : 0); + } + function isExternalModuleReference() { + return token === 118 && + lookAhead(nextTokenIsOpenParen); + } + function nextTokenIsOpenParen() { + return nextToken() === 16; + } + function nextTokenIsCommaOrFromKeyword() { + nextToken(); + return token === 23 || + token === 124; + } + function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { + parseExpected(85); + var afterImportPos = scanner.getStartPos(); + var identifier; + if (isIdentifier()) { + identifier = parseIdentifier(); + if (token !== 23 && token !== 124) { + var importEqualsDeclaration = createNode(208, fullStart); + importEqualsDeclaration.decorators = decorators; + setModifiers(importEqualsDeclaration, modifiers); + importEqualsDeclaration.name = identifier; + parseExpected(53); + importEqualsDeclaration.moduleReference = parseModuleReference(); + parseSemicolon(); + return finishNode(importEqualsDeclaration); + } + } + var importDeclaration = createNode(209, fullStart); + importDeclaration.decorators = decorators; + setModifiers(importDeclaration, modifiers); + if (identifier || + token === 35 || + token === 14) { + importDeclaration.importClause = parseImportClause(identifier, afterImportPos); + parseExpected(124); + } + importDeclaration.moduleSpecifier = parseModuleSpecifier(); + parseSemicolon(); + return finishNode(importDeclaration); + } + function parseImportClause(identifier, fullStart) { + //ImportClause: + // ImportedDefaultBinding + // NameSpaceImport + // NamedImports + // ImportedDefaultBinding, NameSpaceImport + // ImportedDefaultBinding, NamedImports + var importClause = createNode(210, fullStart); + if (identifier) { + importClause.name = identifier; + } + if (!importClause.name || + parseOptional(23)) { + importClause.namedBindings = token === 35 ? parseNamespaceImport() : parseNamedImportsOrExports(212); + } + return finishNode(importClause); + } + function parseModuleReference() { + return isExternalModuleReference() + ? parseExternalModuleReference() + : parseEntityName(false); + } + function parseExternalModuleReference() { + var node = createNode(219); + parseExpected(118); + parseExpected(16); + node.expression = parseModuleSpecifier(); + parseExpected(17); + return finishNode(node); + } + function parseModuleSpecifier() { + var result = parseExpression(); + if (result.kind === 8) { + internIdentifier(result.text); + } + return result; + } + function parseNamespaceImport() { + var namespaceImport = createNode(211); + parseExpected(35); + parseExpected(102); + namespaceImport.name = parseIdentifier(); + return finishNode(namespaceImport); + } + function parseNamedImportsOrExports(kind) { + var node = createNode(kind); + node.elements = parseBracketedList(20, kind === 212 ? parseImportSpecifier : parseExportSpecifier, 14, 15); + return finishNode(node); + } + function parseExportSpecifier() { + return parseImportOrExportSpecifier(217); + } + function parseImportSpecifier() { + return parseImportOrExportSpecifier(213); + } + function parseImportOrExportSpecifier(kind) { + var node = createNode(kind); + var checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + var checkIdentifierStart = scanner.getTokenPos(); + var checkIdentifierEnd = scanner.getTextPos(); + var identifierName = parseIdentifierName(); + if (token === 102) { + node.propertyName = identifierName; + parseExpected(102); + checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + checkIdentifierStart = scanner.getTokenPos(); + checkIdentifierEnd = scanner.getTextPos(); + node.name = parseIdentifierName(); + } + else { + node.name = identifierName; + } + if (kind === 213 && checkIdentifierIsKeyword) { + parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); + } + return finishNode(node); + } + function parseExportDeclaration(fullStart, decorators, modifiers) { + var node = createNode(215, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + if (parseOptional(35)) { + parseExpected(124); + node.moduleSpecifier = parseModuleSpecifier(); + } + else { + node.exportClause = parseNamedImportsOrExports(216); + if (parseOptional(124)) { + node.moduleSpecifier = parseModuleSpecifier(); + } + } + parseSemicolon(); + return finishNode(node); + } + function parseExportAssignment(fullStart, decorators, modifiers) { + var node = createNode(214, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + if (parseOptional(53)) { + node.isExportEquals = true; + node.expression = parseAssignmentExpressionOrHigher(); + } + else { + parseExpected(73); + if (parseOptional(51)) { + node.type = parseType(); + } + else { + node.expression = parseAssignmentExpressionOrHigher(); + } + } + parseSemicolon(); + return finishNode(node); + } + function isLetDeclaration() { + return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine); + } + function isDeclarationStart(followsModifier) { + switch (token) { + case 98: + case 70: + case 83: + return true; + case 105: + return isLetDeclaration(); + case 69: + case 104: + case 77: + case 123: + return lookAhead(nextTokenIsIdentifierOrKeyword); + case 85: + return lookAhead(nextTokenCanFollowImportKeyword); + case 117: + return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); + case 78: + return lookAhead(nextTokenCanFollowExportKeyword); + case 115: + case 109: + case 107: + case 108: + case 110: + return lookAhead(nextTokenIsDeclarationStart); + case 52: + return !followsModifier; + } + } + function isIdentifierOrKeyword() { + return token >= 65; + } + function nextTokenIsIdentifierOrKeyword() { + nextToken(); + return isIdentifierOrKeyword(); + } + function nextTokenIsIdentifierOrKeywordOrStringLiteral() { + nextToken(); + return isIdentifierOrKeyword() || token === 8; + } + function nextTokenCanFollowImportKeyword() { + nextToken(); + return isIdentifierOrKeyword() || token === 8 || + token === 35 || token === 14; + } + function nextTokenCanFollowExportKeyword() { + nextToken(); + return token === 53 || token === 35 || + token === 14 || token === 73 || isDeclarationStart(true); + } + function nextTokenIsDeclarationStart() { + nextToken(); + return isDeclarationStart(true); + } + function nextTokenIsAsKeyword() { + return nextToken() === 102; + } + function parseDeclaration() { + var fullStart = getNodePos(); + var decorators = parseDecorators(); + var modifiers = parseModifiers(); + if (token === 78) { + nextToken(); + if (token === 73 || token === 53) { + return parseExportAssignment(fullStart, decorators, modifiers); + } + if (token === 35 || token === 14) { + return parseExportDeclaration(fullStart, decorators, modifiers); + } + } + switch (token) { + case 98: + case 105: + case 70: + return parseVariableStatement(fullStart, decorators, modifiers); + case 83: + return parseFunctionDeclaration(fullStart, decorators, modifiers); + case 69: + return parseClassDeclaration(fullStart, decorators, modifiers); + case 104: + return parseInterfaceDeclaration(fullStart, decorators, modifiers); + case 123: + return parseTypeAliasDeclaration(fullStart, decorators, modifiers); + case 77: + return parseEnumDeclaration(fullStart, decorators, modifiers); + case 117: + return parseModuleDeclaration(fullStart, decorators, modifiers); + case 85: + return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); + default: + if (decorators) { + var node = createMissingNode(218, true, ts.Diagnostics.Declaration_expected); + node.pos = fullStart; + node.decorators = decorators; + setModifiers(node, modifiers); + return finishNode(node); + } + ts.Debug.fail("Mismatch between isDeclarationStart and parseDeclaration"); + } + } + function isSourceElement(inErrorRecovery) { + return isDeclarationStart() || isStartOfStatement(inErrorRecovery); + } + function parseSourceElement() { + return parseSourceElementOrModuleElement(); + } + function parseModuleElement() { + return parseSourceElementOrModuleElement(); + } + function parseSourceElementOrModuleElement() { + return isDeclarationStart() + ? parseDeclaration() + : parseStatement(); + } + function processReferenceComments(sourceFile) { + var triviaScanner = ts.createScanner(sourceFile.languageVersion, false, sourceText); + var referencedFiles = []; + var amdDependencies = []; + var amdModuleName; + while (true) { + var kind = triviaScanner.scan(); + if (kind === 5 || kind === 4 || kind === 3) { + continue; + } + if (kind !== 2) { + break; + } + var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos() }; + var comment = sourceText.substring(range.pos, range.end); + var referencePathMatchResult = ts.getFileReferenceFromReferencePath(comment, range); + if (referencePathMatchResult) { + var fileReference = referencePathMatchResult.fileReference; + sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; + var diagnosticMessage = referencePathMatchResult.diagnosticMessage; + if (fileReference) { + referencedFiles.push(fileReference); + } + if (diagnosticMessage) { + sourceFile.parseDiagnostics.push(ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, diagnosticMessage)); + } + } + else { + var amdModuleNameRegEx = /^\/\/\/\s*= 53 && token <= 64; + } + ts.isAssignmentOperator = isAssignmentOperator; +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.bindTime = 0; + function getModuleInstanceState(node) { + if (node.kind === 202 || node.kind === 203) { + return 0; + } + else if (ts.isConstEnumDeclaration(node)) { + return 2; + } + else if ((node.kind === 209 || node.kind === 208) && !(node.flags & 1)) { + return 0; + } + else if (node.kind === 206) { + var state = 0; + ts.forEachChild(node, function (n) { + switch (getModuleInstanceState(n)) { + case 0: + return false; + case 2: + state = 2; + return false; + case 1: + state = 1; + return true; + } + }); + return state; + } + else if (node.kind === 205) { + return getModuleInstanceState(node.body); + } + else { + return 1; + } + } + ts.getModuleInstanceState = getModuleInstanceState; + function bindSourceFile(file) { + var start = new Date().getTime(); + bindSourceFileWorker(file); + ts.bindTime += new Date().getTime() - start; + } + ts.bindSourceFile = bindSourceFile; + function bindSourceFileWorker(file) { + var parent; + var container; + var blockScopeContainer; + var lastContainer; + var symbolCount = 0; + var Symbol = ts.objectAllocator.getSymbolConstructor(); + if (!file.locals) { + file.locals = {}; + container = file; + setBlockScopeContainer(file, false); + bind(file); + file.symbolCount = symbolCount; + } + function createSymbol(flags, name) { + symbolCount++; + return new Symbol(flags, name); + } + function setBlockScopeContainer(node, cleanLocals) { + blockScopeContainer = node; + if (cleanLocals) { + blockScopeContainer.locals = undefined; + } + } + function addDeclarationToSymbol(symbol, node, symbolKind) { + symbol.flags |= symbolKind; + if (!symbol.declarations) + symbol.declarations = []; + symbol.declarations.push(node); + if (symbolKind & 1952 && !symbol.exports) + symbol.exports = {}; + if (symbolKind & 6240 && !symbol.members) + symbol.members = {}; + node.symbol = symbol; + if (symbolKind & 107455 && !symbol.valueDeclaration) + symbol.valueDeclaration = node; + } + function getDeclarationName(node) { + if (node.name) { + if (node.kind === 205 && node.name.kind === 8) { + return '"' + node.name.text + '"'; + } + if (node.name.kind === 127) { + var nameExpression = node.name.expression; + ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); + return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); + } + return node.name.text; + } + switch (node.kind) { + case 143: + case 135: + return "__constructor"; + case 142: + case 138: + return "__call"; + case 139: + return "__new"; + case 140: + return "__index"; + case 215: + return "__export"; + case 214: + return node.isExportEquals ? "export=" : "default"; + case 200: + case 201: + return node.flags & 256 ? "default" : undefined; + } + } + function getDisplayName(node) { + return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); + } + function declareSymbol(symbols, parent, node, includes, excludes) { + ts.Debug.assert(!ts.hasDynamicName(node)); + var name = node.flags & 256 && parent ? "default" : getDeclarationName(node); + var symbol; + if (name !== undefined) { + symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); + if (symbol.flags & excludes) { + if (node.name) { + node.name.parent = node; + } + var message = symbol.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 + : ts.Diagnostics.Duplicate_identifier_0; + ts.forEach(symbol.declarations, function (declaration) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); + }); + file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message, getDisplayName(node))); + symbol = createSymbol(0, name); + } + } + else { + symbol = createSymbol(0, "__missing"); + } + addDeclarationToSymbol(symbol, node, includes); + symbol.parent = parent; + if ((node.kind === 201 || node.kind === 174) && symbol.exports) { + var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); + if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { + if (node.name) { + node.name.parent = node; + } + file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); + } + symbol.exports[prototypeSymbol.name] = prototypeSymbol; + prototypeSymbol.parent = symbol; + } + return symbol; + } + function declareModuleMember(node, symbolKind, symbolExcludes) { + var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; + if (symbolKind & 8388608) { + if (node.kind === 217 || (node.kind === 208 && hasExportModifier)) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + else { + if (hasExportModifier || container.flags & 32768) { + var exportKind = (symbolKind & 107455 ? 1048576 : 0) | + (symbolKind & 793056 ? 2097152 : 0) | + (symbolKind & 1536 ? 4194304 : 0); + var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); + local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + node.localSymbol = local; + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + } + function bindChildren(node, symbolKind, isBlockScopeContainer) { + if (symbolKind & 255504) { + node.locals = {}; + } + var saveParent = parent; + var saveContainer = container; + var savedBlockScopeContainer = blockScopeContainer; + parent = node; + if (symbolKind & 262128) { + container = node; + if (lastContainer) { + lastContainer.nextContainer = container; + } + lastContainer = container; + } + if (isBlockScopeContainer) { + setBlockScopeContainer(node, (symbolKind & 255504) === 0 && node.kind !== 227); + } + ts.forEachChild(node, bind); + container = saveContainer; + parent = saveParent; + blockScopeContainer = savedBlockScopeContainer; + } + function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + switch (container.kind) { + case 205: + declareModuleMember(node, symbolKind, symbolExcludes); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, symbolKind, symbolExcludes); + break; + } + case 142: + case 143: + case 138: + case 139: + case 140: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + break; + case 174: + case 201: + if (node.flags & 128) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + case 145: + case 154: + case 202: + declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); + break; + case 204: + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function isAmbientContext(node) { + while (node) { + if (node.flags & 2) + return true; + node = node.parent; + } + return false; + } + function hasExportDeclarations(node) { + var body = node.kind === 227 ? node : node.body; + if (body.kind === 227 || body.kind === 206) { + for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { + var stat = _a[_i]; + if (stat.kind === 215 || stat.kind === 214) { + return true; + } + } + } + return false; + } + function setExportContextFlag(node) { + if (isAmbientContext(node) && !hasExportDeclarations(node)) { + node.flags |= 32768; + } + else { + node.flags &= ~32768; + } + } + function bindModuleDeclaration(node) { + setExportContextFlag(node); + if (node.name.kind === 8) { + bindDeclaration(node, 512, 106639, true); + } + else { + var state = getModuleInstanceState(node); + if (state === 0) { + bindDeclaration(node, 1024, 0, true); + } + else { + bindDeclaration(node, 512, 106639, true); + var currentModuleIsConstEnumOnly = state === 2; + if (node.symbol.constEnumOnlyModule === undefined) { + node.symbol.constEnumOnlyModule = currentModuleIsConstEnumOnly; + } + else { + node.symbol.constEnumOnlyModule = node.symbol.constEnumOnlyModule && currentModuleIsConstEnumOnly; + } + } + } + } + function bindFunctionOrConstructorType(node) { + // For a given function symbol "<...>(...) => T" we want to generate a symbol identical + // to the one we would get for: { <...>(...): T } + // + // We do that by making an anonymous type literal symbol, and then setting the function + // symbol as its sole member. To the rest of the system, this symbol will be indistinguishable + // from an actual type literal symbol you would have gotten had you used the long form. + var symbol = createSymbol(131072, getDeclarationName(node)); + addDeclarationToSymbol(symbol, node, 131072); + bindChildren(node, 131072, false); + var typeLiteralSymbol = createSymbol(2048, "__type"); + addDeclarationToSymbol(typeLiteralSymbol, node, 2048); + typeLiteralSymbol.members = {}; + typeLiteralSymbol.members[node.kind === 142 ? "__call" : "__new"] = symbol; + } + function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { + var symbol = createSymbol(symbolKind, name); + addDeclarationToSymbol(symbol, node, symbolKind); + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function bindCatchVariableDeclaration(node) { + bindChildren(node, 0, true); + } + function bindBlockScopedVariableDeclaration(node) { + switch (blockScopeContainer.kind) { + case 205: + declareModuleMember(node, 2, 107455); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, 2, 107455); + break; + } + default: + if (!blockScopeContainer.locals) { + blockScopeContainer.locals = {}; + } + declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); + } + bindChildren(node, 2, false); + } + function getDestructuringParameterName(node) { + return "__" + ts.indexOf(node.parent.parameters, node); + } + function bind(node) { + node.parent = parent; + switch (node.kind) { + case 128: + bindDeclaration(node, 262144, 530912, false); + break; + case 129: + bindParameter(node); + break; + case 198: + case 152: + if (ts.isBindingPattern(node.name)) { + bindChildren(node, 0, false); + } + else if (ts.isBlockOrCatchScoped(node)) { + bindBlockScopedVariableDeclaration(node); + } + else { + bindDeclaration(node, 1, 107454, false); + } + break; + case 132: + case 131: + bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); + break; + case 224: + case 225: + bindPropertyOrMethodOrAccessor(node, 4, 107455, false); + break; + case 226: + bindPropertyOrMethodOrAccessor(node, 8, 107455, false); + break; + case 138: + case 139: + case 140: + bindDeclaration(node, 131072, 0, false); + break; + case 134: + case 133: + bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); + break; + case 200: + bindDeclaration(node, 16, 106927, true); + break; + case 135: + bindDeclaration(node, 16384, 0, true); + break; + case 136: + bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); + break; + case 137: + bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); + break; + case 142: + case 143: + bindFunctionOrConstructorType(node); + break; + case 145: + bindAnonymousDeclaration(node, 2048, "__type", false); + break; + case 154: + bindAnonymousDeclaration(node, 4096, "__object", false); + break; + case 162: + case 163: + bindAnonymousDeclaration(node, 16, "__function", true); + break; + case 174: + bindAnonymousDeclaration(node, 32, "__class", false); + break; + case 223: + bindCatchVariableDeclaration(node); + break; + case 201: + bindDeclaration(node, 32, 899583, false); + break; + case 202: + bindDeclaration(node, 64, 792992, false); + break; + case 203: + bindDeclaration(node, 524288, 793056, false); + break; + case 204: + if (ts.isConst(node)) { + bindDeclaration(node, 128, 899967, false); + } + else { + bindDeclaration(node, 256, 899327, false); + } + break; + case 205: + bindModuleDeclaration(node); + break; + case 208: + case 211: + case 213: + case 217: + bindDeclaration(node, 8388608, 8388608, false); + break; + case 210: + if (node.name) { + bindDeclaration(node, 8388608, 8388608, false); + } + else { + bindChildren(node, 0, false); + } + break; + case 215: + if (!node.exportClause) { + declareSymbol(container.symbol.exports, container.symbol, node, 1073741824, 0); + } + bindChildren(node, 0, false); + break; + case 214: + if (node.expression && node.expression.kind === 65) { + declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); + } + else { + declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); + } + bindChildren(node, 0, false); + break; + case 227: + setExportContextFlag(node); + if (ts.isExternalModule(node)) { + bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); + break; + } + case 179: + bindChildren(node, 0, !ts.isFunctionLike(node.parent)); + break; + case 223: + case 186: + case 187: + case 188: + case 207: + bindChildren(node, 0, true); + break; + default: + var saveParent = parent; + parent = node; + ts.forEachChild(node, bind); + parent = saveParent; + } + } + function bindParameter(node) { + if (ts.isBindingPattern(node.name)) { + bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); + } + else { + bindDeclaration(node, 1, 107455, false); + } + if (node.flags & 112 && + node.parent.kind === 135 && + (node.parent.parent.kind === 201 || node.parent.parent.kind === 174)) { + var classDeclaration = node.parent.parent; + declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); + } + } + function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + if (ts.hasDynamicName(node)) { + bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); + } + else { + bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); + } + } + } +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + var nextSymbolId = 1; + var nextNodeId = 1; + var nextMergeId = 1; + function getNodeId(node) { + if (!node.id) + node.id = nextNodeId++; + return node.id; + } + ts.getNodeId = getNodeId; + ts.checkTime = 0; + function getSymbolId(symbol) { + if (!symbol.id) { + symbol.id = nextSymbolId++; + } + return symbol.id; + } + ts.getSymbolId = getSymbolId; + function createTypeChecker(host, produceDiagnostics) { + var Symbol = ts.objectAllocator.getSymbolConstructor(); + var Type = ts.objectAllocator.getTypeConstructor(); + var Signature = ts.objectAllocator.getSignatureConstructor(); + var typeCount = 0; + var emptyArray = []; + var emptySymbols = {}; + var compilerOptions = host.getCompilerOptions(); + var languageVersion = compilerOptions.target || 0; + var emitResolver = createResolver(); + var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); + var checker = { + getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, + getIdentifierCount: function () { return ts.sum(host.getSourceFiles(), "identifierCount"); }, + getSymbolCount: function () { return ts.sum(host.getSourceFiles(), "symbolCount"); }, + getTypeCount: function () { return typeCount; }, + isUndefinedSymbol: function (symbol) { return symbol === undefinedSymbol; }, + isArgumentsSymbol: function (symbol) { return symbol === argumentsSymbol; }, + getDiagnostics: getDiagnostics, + getGlobalDiagnostics: getGlobalDiagnostics, + getTypeOfSymbolAtLocation: getTypeOfSymbolAtLocation, + getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, + getPropertiesOfType: getPropertiesOfType, + getPropertyOfType: getPropertyOfType, + getSignaturesOfType: getSignaturesOfType, + getIndexTypeOfType: getIndexTypeOfType, + getReturnTypeOfSignature: getReturnTypeOfSignature, + getSymbolsInScope: getSymbolsInScope, + getSymbolAtLocation: getSymbolAtLocation, + getShorthandAssignmentValueSymbol: getShorthandAssignmentValueSymbol, + getTypeAtLocation: getTypeAtLocation, + typeToString: typeToString, + getSymbolDisplayBuilder: getSymbolDisplayBuilder, + symbolToString: symbolToString, + getAugmentedPropertiesOfType: getAugmentedPropertiesOfType, + getRootSymbols: getRootSymbols, + getContextualType: getContextualType, + getFullyQualifiedName: getFullyQualifiedName, + getResolvedSignature: getResolvedSignature, + getConstantValue: getConstantValue, + isValidPropertyAccess: isValidPropertyAccess, + getSignatureFromDeclaration: getSignatureFromDeclaration, + isImplementationOfOverload: isImplementationOfOverload, + getAliasedSymbol: resolveAlias, + getEmitResolver: getEmitResolver, + getExportsOfExternalModule: getExportsOfExternalModule + }; + var unknownSymbol = createSymbol(4 | 67108864, "unknown"); + var resolvingSymbol = createSymbol(67108864, "__resolving__"); + var anyType = createIntrinsicType(1, "any"); + var stringType = createIntrinsicType(2, "string"); + var numberType = createIntrinsicType(4, "number"); + var booleanType = createIntrinsicType(8, "boolean"); + var esSymbolType = createIntrinsicType(1048576, "symbol"); + var voidType = createIntrinsicType(16, "void"); + var undefinedType = createIntrinsicType(32 | 262144, "undefined"); + var nullType = createIntrinsicType(64 | 262144, "null"); + var unknownType = createIntrinsicType(1, "unknown"); + var resolvingType = createIntrinsicType(1, "__resolving__"); + var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); + var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); + var globals = {}; + var globalArraySymbol; + var globalESSymbolConstructorSymbol; + var globalObjectType; + var globalFunctionType; + var globalArrayType; + var globalStringType; + var globalNumberType; + var globalBooleanType; + var globalRegExpType; + var globalTemplateStringsArrayType; + var globalESSymbolType; + var globalIterableType; + var anyArrayType; + var globalTypedPropertyDescriptorType; + var globalClassDecoratorType; + var globalParameterDecoratorType; + var globalPropertyDecoratorType; + var globalMethodDecoratorType; + var tupleTypes = {}; + var unionTypes = {}; + var stringLiteralTypes = {}; + var emitExtends = false; + var emitDecorate = false; + var mergedSymbols = []; + var symbolLinks = []; + var nodeLinks = []; + var potentialThisCollisions = []; + var diagnostics = ts.createDiagnosticCollection(); + var primitiveTypeInfo = { + "string": { + type: stringType, + flags: 258 + }, + "number": { + type: numberType, + flags: 132 + }, + "boolean": { + type: booleanType, + flags: 8 + }, + "symbol": { + type: esSymbolType, + flags: 1048576 + } + }; + function getEmitResolver(sourceFile) { + getDiagnostics(sourceFile); + return emitResolver; + } + function error(location, message, arg0, arg1, arg2) { + var diagnostic = location + ? ts.createDiagnosticForNode(location, message, arg0, arg1, arg2) + : ts.createCompilerDiagnostic(message, arg0, arg1, arg2); + diagnostics.add(diagnostic); + } + function createSymbol(flags, name) { + return new Symbol(flags, name); + } + function getExcludedSymbolFlags(flags) { + var result = 0; + if (flags & 2) + result |= 107455; + if (flags & 1) + result |= 107454; + if (flags & 4) + result |= 107455; + if (flags & 8) + result |= 107455; + if (flags & 16) + result |= 106927; + if (flags & 32) + result |= 899583; + if (flags & 64) + result |= 792992; + if (flags & 256) + result |= 899327; + if (flags & 128) + result |= 899967; + if (flags & 512) + result |= 106639; + if (flags & 8192) + result |= 99263; + if (flags & 32768) + result |= 41919; + if (flags & 65536) + result |= 74687; + if (flags & 262144) + result |= 530912; + if (flags & 524288) + result |= 793056; + if (flags & 8388608) + result |= 8388608; + return result; + } + function recordMergedSymbol(target, source) { + if (!source.mergeId) + source.mergeId = nextMergeId++; + mergedSymbols[source.mergeId] = target; + } + function cloneSymbol(symbol) { + var result = createSymbol(symbol.flags | 33554432, symbol.name); + result.declarations = symbol.declarations.slice(0); + result.parent = symbol.parent; + if (symbol.valueDeclaration) + result.valueDeclaration = symbol.valueDeclaration; + if (symbol.constEnumOnlyModule) + result.constEnumOnlyModule = true; + if (symbol.members) + result.members = cloneSymbolTable(symbol.members); + if (symbol.exports) + result.exports = cloneSymbolTable(symbol.exports); + recordMergedSymbol(result, symbol); + return result; + } + function mergeSymbol(target, source) { + if (!(target.flags & getExcludedSymbolFlags(source.flags))) { + if (source.flags & 512 && target.flags & 512 && target.constEnumOnlyModule && !source.constEnumOnlyModule) { + target.constEnumOnlyModule = false; + } + target.flags |= source.flags; + if (!target.valueDeclaration && source.valueDeclaration) + target.valueDeclaration = source.valueDeclaration; + ts.forEach(source.declarations, function (node) { + target.declarations.push(node); + }); + if (source.members) { + if (!target.members) + target.members = {}; + mergeSymbolTable(target.members, source.members); + } + if (source.exports) { + if (!target.exports) + target.exports = {}; + mergeSymbolTable(target.exports, source.exports); + } + recordMergedSymbol(target, source); + } + else { + var message = target.flags & 2 || source.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; + ts.forEach(source.declarations, function (node) { + error(node.name ? node.name : node, message, symbolToString(source)); + }); + ts.forEach(target.declarations, function (node) { + error(node.name ? node.name : node, message, symbolToString(source)); + }); + } + } + function cloneSymbolTable(symbolTable) { + var result = {}; + for (var id in symbolTable) { + if (ts.hasProperty(symbolTable, id)) { + result[id] = symbolTable[id]; + } + } + return result; + } + function mergeSymbolTable(target, source) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + if (!ts.hasProperty(target, id)) { + target[id] = source[id]; + } + else { + var symbol = target[id]; + if (!(symbol.flags & 33554432)) { + target[id] = symbol = cloneSymbol(symbol); + } + mergeSymbol(symbol, source[id]); + } + } + } + } + function getSymbolLinks(symbol) { + if (symbol.flags & 67108864) + return symbol; + var id = getSymbolId(symbol); + return symbolLinks[id] || (symbolLinks[id] = {}); + } + function getNodeLinks(node) { + var nodeId = getNodeId(node); + return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); + } + function getSourceFile(node) { + return ts.getAncestor(node, 227); + } + function isGlobalSourceFile(node) { + return node.kind === 227 && !ts.isExternalModule(node); + } + function getSymbol(symbols, name, meaning) { + if (meaning && ts.hasProperty(symbols, name)) { + var symbol = symbols[name]; + ts.Debug.assert((symbol.flags & 16777216) === 0, "Should never get an instantiated symbol here."); + if (symbol.flags & meaning) { + return symbol; + } + if (symbol.flags & 8388608) { + var target = resolveAlias(symbol); + if (target === unknownSymbol || target.flags & meaning) { + return symbol; + } + } + } + } + function isDefinedBefore(node1, node2) { + var file1 = ts.getSourceFileOfNode(node1); + var file2 = ts.getSourceFileOfNode(node2); + if (file1 === file2) { + return node1.pos <= node2.pos; + } + if (!compilerOptions.out) { + return true; + } + var sourceFiles = host.getSourceFiles(); + return sourceFiles.indexOf(file1) <= sourceFiles.indexOf(file2); + } + function resolveName(location, name, meaning, nameNotFoundMessage, nameArg) { + var result; + var lastLocation; + var propertyWithInvalidInitializer; + var errorLocation = location; + var grandparent; + loop: while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + if (result = getSymbol(location.locals, name, meaning)) { + break loop; + } + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) + break; + case 205: + if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) { + if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 217)) { + break loop; + } + result = undefined; + } + else if (location.kind === 227) { + result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & 8914931); + var localSymbol = ts.getLocalSymbolForExportDefault(result); + if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { + break loop; + } + result = undefined; + } + break; + case 204: + if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { + break loop; + } + break; + case 132: + case 131: + if (location.parent.kind === 201 && !(location.flags & 128)) { + var ctor = findConstructorDeclaration(location.parent); + if (ctor && ctor.locals) { + if (getSymbol(ctor.locals, name, meaning & 107455)) { + propertyWithInvalidInitializer = location; + } + } + } + break; + case 201: + case 202: + if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { + if (lastLocation && lastLocation.flags & 128) { + error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); + return undefined; + } + break loop; + } + break; + case 127: + grandparent = location.parent.parent; + if (grandparent.kind === 201 || grandparent.kind === 202) { + if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { + error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); + return undefined; + } + } + break; + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 163: + if (name === "arguments") { + result = argumentsSymbol; + break loop; + } + break; + case 162: + if (name === "arguments") { + result = argumentsSymbol; + break loop; + } + var functionName = location.name; + if (functionName && name === functionName.text) { + result = location.symbol; + break loop; + } + break; + case 174: + var className = location.name; + if (className && name === className.text) { + result = location.symbol; + break loop; + } + break; + case 130: + if (location.parent && location.parent.kind === 129) { + location = location.parent; + } + if (location.parent && ts.isClassElement(location.parent)) { + location = location.parent; + } + break; + } + lastLocation = location; + location = location.parent; + } + if (!result) { + result = getSymbol(globals, name, meaning); + } + if (!result) { + if (nameNotFoundMessage) { + error(errorLocation, nameNotFoundMessage, typeof nameArg === "string" ? nameArg : ts.declarationNameToString(nameArg)); + } + return undefined; + } + if (nameNotFoundMessage) { + if (propertyWithInvalidInitializer) { + var propertyName = propertyWithInvalidInitializer.name; + error(errorLocation, ts.Diagnostics.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor, ts.declarationNameToString(propertyName), typeof nameArg === "string" ? nameArg : ts.declarationNameToString(nameArg)); + return undefined; + } + if (result.flags & 2) { + checkResolvedBlockScopedVariable(result, errorLocation); + } + } + return result; + } + function checkResolvedBlockScopedVariable(result, errorLocation) { + ts.Debug.assert((result.flags & 2) !== 0); + var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); + ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); + var isUsedBeforeDeclaration = !isDefinedBefore(declaration, errorLocation); + if (!isUsedBeforeDeclaration) { + var variableDeclaration = ts.getAncestor(declaration, 198); + var container = ts.getEnclosingBlockScopeContainer(variableDeclaration); + if (variableDeclaration.parent.parent.kind === 180 || + variableDeclaration.parent.parent.kind === 186) { + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, variableDeclaration, container); + } + else if (variableDeclaration.parent.parent.kind === 188 || + variableDeclaration.parent.parent.kind === 187) { + var expression = variableDeclaration.parent.parent.expression; + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, expression, container); + } + } + if (isUsedBeforeDeclaration) { + error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); + } + } + function isSameScopeDescendentOf(initial, parent, stopAt) { + if (!parent) { + return false; + } + for (var current = initial; current && current !== stopAt && !ts.isFunctionLike(current); current = current.parent) { + if (current === parent) { + return true; + } + } + return false; + } + function getAnyImportSyntax(node) { + if (ts.isAliasSymbolDeclaration(node)) { + if (node.kind === 208) { + return node; + } + while (node && node.kind !== 209) { + node = node.parent; + } + return node; + } + } + function getDeclarationOfAliasSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); + } + function getTargetOfImportEqualsDeclaration(node) { + if (node.moduleReference.kind === 219) { + return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); + } + return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); + } + function getTargetOfImportClause(node) { + var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); + if (moduleSymbol) { + var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol) { + error(node.name, ts.Diagnostics.External_module_0_has_no_default_export, symbolToString(moduleSymbol)); + } + return exportDefaultSymbol; + } + } + function getTargetOfNamespaceImport(node) { + var moduleSpecifier = node.parent.parent.moduleSpecifier; + return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); + } + function getMemberOfModuleVariable(moduleSymbol, name) { + if (moduleSymbol.flags & 3) { + var typeAnnotation = moduleSymbol.valueDeclaration.type; + if (typeAnnotation) { + return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name); + } + } + } + function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { + if (valueSymbol.flags & (793056 | 1536)) { + return valueSymbol; + } + var result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.name); + result.declarations = ts.concatenate(valueSymbol.declarations, typeSymbol.declarations); + result.parent = valueSymbol.parent || typeSymbol.parent; + if (valueSymbol.valueDeclaration) + result.valueDeclaration = valueSymbol.valueDeclaration; + if (typeSymbol.members) + result.members = typeSymbol.members; + if (valueSymbol.exports) + result.exports = valueSymbol.exports; + return result; + } + function getExportOfModule(symbol, name) { + if (symbol.flags & 1536) { + var exports_1 = getExportsOfSymbol(symbol); + if (ts.hasProperty(exports_1, name)) { + return resolveSymbol(exports_1[name]); + } + } + } + function getPropertyOfVariable(symbol, name) { + if (symbol.flags & 3) { + var typeAnnotation = symbol.valueDeclaration.type; + if (typeAnnotation) { + return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name)); + } + } + } + function getExternalModuleMember(node, specifier) { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + var targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); + if (targetSymbol) { + var name_4 = specifier.propertyName || specifier.name; + if (name_4.text) { + var symbolFromModule = getExportOfModule(targetSymbol, name_4.text); + var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_4.text); + var symbol = symbolFromModule && symbolFromVariable ? + combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : + symbolFromModule || symbolFromVariable; + if (!symbol) { + error(name_4, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_4)); + } + return symbol; + } + } + } + function getTargetOfImportSpecifier(node) { + return getExternalModuleMember(node.parent.parent.parent, node); + } + function getTargetOfExportSpecifier(node) { + return node.parent.parent.moduleSpecifier ? + getExternalModuleMember(node.parent.parent, node) : + resolveEntityName(node.propertyName || node.name, 107455 | 793056 | 1536); + } + function getTargetOfExportAssignment(node) { + return node.expression && resolveEntityName(node.expression, 107455 | 793056 | 1536); + } + function getTargetOfAliasDeclaration(node) { + switch (node.kind) { + case 208: + return getTargetOfImportEqualsDeclaration(node); + case 210: + return getTargetOfImportClause(node); + case 211: + return getTargetOfNamespaceImport(node); + case 213: + return getTargetOfImportSpecifier(node); + case 217: + return getTargetOfExportSpecifier(node); + case 214: + return getTargetOfExportAssignment(node); + } + } + function resolveSymbol(symbol) { + return symbol && symbol.flags & 8388608 && !(symbol.flags & (107455 | 793056 | 1536)) ? resolveAlias(symbol) : symbol; + } + function resolveAlias(symbol) { + ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Alias here."); + var links = getSymbolLinks(symbol); + if (!links.target) { + links.target = resolvingSymbol; + var node = getDeclarationOfAliasSymbol(symbol); + var target = getTargetOfAliasDeclaration(node); + if (links.target === resolvingSymbol) { + links.target = target || unknownSymbol; + } + else { + error(node, ts.Diagnostics.Circular_definition_of_import_alias_0, symbolToString(symbol)); + } + } + else if (links.target === resolvingSymbol) { + links.target = unknownSymbol; + } + return links.target; + } + function markExportAsReferenced(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target) { + var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) || + (target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target)); + if (markAlias) { + markAliasSymbolAsReferenced(symbol); + } + } + } + function markAliasSymbolAsReferenced(symbol) { + var links = getSymbolLinks(symbol); + if (!links.referenced) { + links.referenced = true; + var node = getDeclarationOfAliasSymbol(symbol); + if (node.kind === 214 && node.expression) { + checkExpressionCached(node.expression); + } + else if (node.kind === 217) { + checkExpressionCached(node.propertyName || node.name); + } + else if (ts.isInternalModuleImportEqualsDeclaration(node)) { + checkExpressionCached(node.moduleReference); + } + } + } + function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { + if (!importDeclaration) { + importDeclaration = ts.getAncestor(entityName, 208); + ts.Debug.assert(importDeclaration !== undefined); + } + if (entityName.kind === 65 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + entityName = entityName.parent; + } + if (entityName.kind === 65 || entityName.parent.kind === 126) { + return resolveEntityName(entityName, 1536); + } + else { + ts.Debug.assert(entityName.parent.kind === 208); + return resolveEntityName(entityName, 107455 | 793056 | 1536); + } + } + function getFullyQualifiedName(symbol) { + return symbol.parent ? getFullyQualifiedName(symbol.parent) + "." + symbolToString(symbol) : symbolToString(symbol); + } + function resolveEntityName(name, meaning) { + if (ts.nodeIsMissing(name)) { + return undefined; + } + var symbol; + if (name.kind === 65) { + symbol = resolveName(name, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); + if (!symbol) { + return undefined; + } + } + else if (name.kind === 126 || name.kind === 155) { + var left = name.kind === 126 ? name.left : name.expression; + var right = name.kind === 126 ? name.right : name.name; + var namespace = resolveEntityName(left, 1536); + if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { + return undefined; + } + symbol = getSymbol(getExportsOfSymbol(namespace), right.text, meaning); + if (!symbol) { + error(right, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(right)); + return undefined; + } + } + else { + ts.Debug.fail("Unknown entity name kind."); + } + ts.Debug.assert((symbol.flags & 16777216) === 0, "Should never get an instantiated symbol here."); + return symbol.flags & meaning ? symbol : resolveAlias(symbol); + } + function isExternalModuleNameRelative(moduleName) { + return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; + } + function resolveExternalModuleName(location, moduleReferenceExpression) { + if (moduleReferenceExpression.kind !== 8) { + return; + } + var moduleReferenceLiteral = moduleReferenceExpression; + var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); + var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); + if (!moduleName) + return; + var isRelative = isExternalModuleNameRelative(moduleName); + if (!isRelative) { + var symbol = getSymbol(globals, '"' + moduleName + '"', 512); + if (symbol) { + return symbol; + } + } + var sourceFile; + while (true) { + var fileName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); + sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); + if (sourceFile || isRelative) { + break; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + } + if (sourceFile) { + if (sourceFile.symbol) { + return sourceFile.symbol; + } + error(moduleReferenceLiteral, ts.Diagnostics.File_0_is_not_an_external_module, sourceFile.fileName); + return; + } + error(moduleReferenceLiteral, ts.Diagnostics.Cannot_find_external_module_0, moduleName); + } + function resolveExternalModuleSymbol(moduleSymbol) { + return moduleSymbol && resolveSymbol(moduleSymbol.exports["export="]) || moduleSymbol; + } + function resolveESModuleSymbol(moduleSymbol, moduleReferenceExpression) { + var symbol = resolveExternalModuleSymbol(moduleSymbol); + if (symbol && !(symbol.flags & (1536 | 3))) { + error(moduleReferenceExpression, ts.Diagnostics.External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); + symbol = undefined; + } + return symbol; + } + function getExportAssignmentSymbol(moduleSymbol) { + return moduleSymbol.exports["export="]; + } + function getExportsOfSymbol(symbol) { + return symbol.flags & 1536 ? getExportsOfModule(symbol) : symbol.exports || emptySymbols; + } + function getExportsOfModule(moduleSymbol) { + var links = getSymbolLinks(moduleSymbol); + return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); + } + function extendExportSymbols(target, source) { + for (var id in source) { + if (id !== "default" && !ts.hasProperty(target, id)) { + target[id] = source[id]; + } + } + } + function getExportsForModule(moduleSymbol) { + var result; + var visitedSymbols = []; + visit(moduleSymbol); + return result || moduleSymbol.exports; + function visit(symbol) { + if (symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { + visitedSymbols.push(symbol); + if (symbol !== moduleSymbol) { + if (!result) { + result = cloneSymbolTable(moduleSymbol.exports); + } + extendExportSymbols(result, symbol.exports); + } + var exportStars = symbol.exports["__export"]; + if (exportStars) { + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + visit(resolveExternalModuleName(node, node.moduleSpecifier)); + } + } + } + } + } + function getMergedSymbol(symbol) { + var merged; + return symbol && symbol.mergeId && (merged = mergedSymbols[symbol.mergeId]) ? merged : symbol; + } + function getSymbolOfNode(node) { + return getMergedSymbol(node.symbol); + } + function getParentOfSymbol(symbol) { + return getMergedSymbol(symbol.parent); + } + function getExportSymbolOfValueSymbolIfExported(symbol) { + return symbol && (symbol.flags & 1048576) !== 0 + ? getMergedSymbol(symbol.exportSymbol) + : symbol; + } + function symbolIsValue(symbol) { + if (symbol.flags & 16777216) { + return symbolIsValue(getSymbolLinks(symbol).target); + } + if (symbol.flags & 107455) { + return true; + } + if (symbol.flags & 8388608) { + return (resolveAlias(symbol).flags & 107455) !== 0; + } + return false; + } + function findConstructorDeclaration(node) { + var members = node.members; + for (var _i = 0; _i < members.length; _i++) { + var member = members[_i]; + if (member.kind === 135 && ts.nodeIsPresent(member.body)) { + return member; + } + } + } + function createType(flags) { + var result = new Type(checker, flags); + result.id = typeCount++; + return result; + } + function createIntrinsicType(kind, intrinsicName) { + var type = createType(kind); + type.intrinsicName = intrinsicName; + return type; + } + function createObjectType(kind, symbol) { + var type = createType(kind); + type.symbol = symbol; + return type; + } + function isReservedMemberName(name) { + return name.charCodeAt(0) === 95 && + name.charCodeAt(1) === 95 && + name.charCodeAt(2) !== 95 && + name.charCodeAt(2) !== 64; + } + function getNamedMembers(members) { + var result; + for (var id in members) { + if (ts.hasProperty(members, id)) { + if (!isReservedMemberName(id)) { + if (!result) + result = []; + var symbol = members[id]; + if (symbolIsValue(symbol)) { + result.push(symbol); + } + } + } + } + return result || emptyArray; + } + function setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType) { + type.members = members; + type.properties = getNamedMembers(members); + type.callSignatures = callSignatures; + type.constructSignatures = constructSignatures; + if (stringIndexType) + type.stringIndexType = stringIndexType; + if (numberIndexType) + type.numberIndexType = numberIndexType; + return type; + } + function createAnonymousType(symbol, members, callSignatures, constructSignatures, stringIndexType, numberIndexType) { + return setObjectTypeMembers(createObjectType(32768, symbol), members, callSignatures, constructSignatures, stringIndexType, numberIndexType); + } + function forEachSymbolTableInScope(enclosingDeclaration, callback) { + var result; + for (var location_1 = enclosingDeclaration; location_1; location_1 = location_1.parent) { + if (location_1.locals && !isGlobalSourceFile(location_1)) { + if (result = callback(location_1.locals)) { + return result; + } + } + switch (location_1.kind) { + case 227: + if (!ts.isExternalModule(location_1)) { + break; + } + case 205: + if (result = callback(getSymbolOfNode(location_1).exports)) { + return result; + } + break; + case 201: + case 202: + if (result = callback(getSymbolOfNode(location_1).members)) { + return result; + } + break; + } + } + return callback(globals); + } + function getQualifiedLeftMeaning(rightMeaning) { + return rightMeaning === 107455 ? 107455 : 1536; + } + function getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, useOnlyExternalAliasing) { + function getAccessibleSymbolChainFromSymbolTable(symbols) { + function canQualifySymbol(symbolFromSymbolTable, meaning) { + if (!needsQualification(symbolFromSymbolTable, enclosingDeclaration, meaning)) { + return true; + } + var accessibleParent = getAccessibleSymbolChain(symbolFromSymbolTable.parent, enclosingDeclaration, getQualifiedLeftMeaning(meaning), useOnlyExternalAliasing); + return !!accessibleParent; + } + function isAccessible(symbolFromSymbolTable, resolvedAliasSymbol) { + if (symbol === (resolvedAliasSymbol || symbolFromSymbolTable)) { + return !ts.forEach(symbolFromSymbolTable.declarations, hasExternalModuleSymbol) && + canQualifySymbol(symbolFromSymbolTable, meaning); + } + } + if (isAccessible(ts.lookUp(symbols, symbol.name))) { + return [symbol]; + } + return ts.forEachValue(symbols, function (symbolFromSymbolTable) { + if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=") { + if (!useOnlyExternalAliasing || + ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { + var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); + if (isAccessible(symbolFromSymbolTable, resolveAlias(symbolFromSymbolTable))) { + return [symbolFromSymbolTable]; + } + var accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; + if (accessibleSymbolsFromExports && canQualifySymbol(symbolFromSymbolTable, getQualifiedLeftMeaning(meaning))) { + return [symbolFromSymbolTable].concat(accessibleSymbolsFromExports); + } + } + } + }); + } + if (symbol) { + return forEachSymbolTableInScope(enclosingDeclaration, getAccessibleSymbolChainFromSymbolTable); + } + } + function needsQualification(symbol, enclosingDeclaration, meaning) { + var qualify = false; + forEachSymbolTableInScope(enclosingDeclaration, function (symbolTable) { + if (!ts.hasProperty(symbolTable, symbol.name)) { + return false; + } + var symbolFromSymbolTable = symbolTable[symbol.name]; + if (symbolFromSymbolTable === symbol) { + return true; + } + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + if (symbolFromSymbolTable.flags & meaning) { + qualify = true; + return true; + } + return false; + }); + return qualify; + } + function isSymbolAccessible(symbol, enclosingDeclaration, meaning) { + if (symbol && enclosingDeclaration && !(symbol.flags & 262144)) { + var initialSymbol = symbol; + var meaningToLook = meaning; + while (symbol) { + var accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaningToLook, false); + if (accessibleSymbolChain) { + var hasAccessibleDeclarations = hasVisibleDeclarations(accessibleSymbolChain[0]); + if (!hasAccessibleDeclarations) { + return { + accessibility: 1, + errorSymbolName: symbolToString(initialSymbol, enclosingDeclaration, meaning), + errorModuleName: symbol !== initialSymbol ? symbolToString(symbol, enclosingDeclaration, 1536) : undefined + }; + } + return hasAccessibleDeclarations; + } + meaningToLook = getQualifiedLeftMeaning(meaning); + symbol = getParentOfSymbol(symbol); + } + var symbolExternalModule = ts.forEach(initialSymbol.declarations, getExternalModuleContainer); + if (symbolExternalModule) { + var enclosingExternalModule = getExternalModuleContainer(enclosingDeclaration); + if (symbolExternalModule !== enclosingExternalModule) { + return { + accessibility: 2, + errorSymbolName: symbolToString(initialSymbol, enclosingDeclaration, meaning), + errorModuleName: symbolToString(symbolExternalModule) + }; + } + } + return { + accessibility: 1, + errorSymbolName: symbolToString(initialSymbol, enclosingDeclaration, meaning) + }; + } + return { accessibility: 0 }; + function getExternalModuleContainer(declaration) { + for (; declaration; declaration = declaration.parent) { + if (hasExternalModuleSymbol(declaration)) { + return getSymbolOfNode(declaration); + } + } + } + } + function hasExternalModuleSymbol(declaration) { + return (declaration.kind === 205 && declaration.name.kind === 8) || + (declaration.kind === 227 && ts.isExternalModule(declaration)); + } + function hasVisibleDeclarations(symbol) { + var aliasesToMakeVisible; + if (ts.forEach(symbol.declarations, function (declaration) { return !getIsDeclarationVisible(declaration); })) { + return undefined; + } + return { accessibility: 0, aliasesToMakeVisible: aliasesToMakeVisible }; + function getIsDeclarationVisible(declaration) { + if (!isDeclarationVisible(declaration)) { + var anyImportSyntax = getAnyImportSyntax(declaration); + if (anyImportSyntax && + !(anyImportSyntax.flags & 1) && + isDeclarationVisible(anyImportSyntax.parent)) { + getNodeLinks(declaration).isVisible = true; + if (aliasesToMakeVisible) { + if (!ts.contains(aliasesToMakeVisible, anyImportSyntax)) { + aliasesToMakeVisible.push(anyImportSyntax); + } + } + else { + aliasesToMakeVisible = [anyImportSyntax]; + } + return true; + } + return false; + } + return true; + } + } + function isEntityNameVisible(entityName, enclosingDeclaration) { + var meaning; + if (entityName.parent.kind === 144) { + meaning = 107455 | 1048576; + } + else if (entityName.kind === 126 || entityName.kind === 155 || + entityName.parent.kind === 208) { + meaning = 1536; + } + else { + meaning = 793056; + } + var firstIdentifier = getFirstIdentifier(entityName); + var symbol = resolveName(enclosingDeclaration, firstIdentifier.text, meaning, undefined, undefined); + return (symbol && hasVisibleDeclarations(symbol)) || { + accessibility: 1, + errorSymbolName: ts.getTextOfNode(firstIdentifier), + errorNode: firstIdentifier + }; + } + function writeKeyword(writer, kind) { + writer.writeKeyword(ts.tokenToString(kind)); + } + function writePunctuation(writer, kind) { + writer.writePunctuation(ts.tokenToString(kind)); + } + function writeSpace(writer) { + writer.writeSpace(" "); + } + function symbolToString(symbol, enclosingDeclaration, meaning) { + var writer = ts.getSingleLineStringWriter(); + getSymbolDisplayBuilder().buildSymbolDisplay(symbol, writer, enclosingDeclaration, meaning); + var result = writer.string(); + ts.releaseStringWriter(writer); + return result; + } + function typeToString(type, enclosingDeclaration, flags) { + var writer = ts.getSingleLineStringWriter(); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + var result = writer.string(); + ts.releaseStringWriter(writer); + var maxLength = compilerOptions.noErrorTruncation || flags & 4 ? undefined : 100; + if (maxLength && result.length >= maxLength) { + result = result.substr(0, maxLength - "...".length) + "..."; + } + return result; + } + function getTypeAliasForTypeLiteral(type) { + if (type.symbol && type.symbol.flags & 2048) { + var node = type.symbol.declarations[0].parent; + while (node.kind === 149) { + node = node.parent; + } + if (node.kind === 203) { + return getSymbolOfNode(node); + } + } + return undefined; + } + var _displayBuilder; + function getSymbolDisplayBuilder() { + function appendSymbolNameOnly(symbol, writer) { + if (symbol.declarations && symbol.declarations.length > 0) { + var declaration = symbol.declarations[0]; + if (declaration.name) { + writer.writeSymbol(ts.declarationNameToString(declaration.name), symbol); + return; + } + } + writer.writeSymbol(symbol.name, symbol); + } + function buildSymbolDisplay(symbol, writer, enclosingDeclaration, meaning, flags, typeFlags) { + var parentSymbol; + function appendParentTypeArgumentsAndSymbolName(symbol) { + if (parentSymbol) { + if (flags & 1) { + if (symbol.flags & 16777216) { + buildDisplayForTypeArgumentsAndDelimiters(getTypeParametersOfClassOrInterface(parentSymbol), symbol.mapper, writer, enclosingDeclaration); + } + else { + buildTypeParameterDisplayFromSymbol(parentSymbol, writer, enclosingDeclaration); + } + } + writePunctuation(writer, 20); + } + parentSymbol = symbol; + appendSymbolNameOnly(symbol, writer); + } + writer.trackSymbol(symbol, enclosingDeclaration, meaning); + function walkSymbol(symbol, meaning) { + if (symbol) { + var accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, !!(flags & 2)); + if (!accessibleSymbolChain || + needsQualification(accessibleSymbolChain[0], enclosingDeclaration, accessibleSymbolChain.length === 1 ? meaning : getQualifiedLeftMeaning(meaning))) { + walkSymbol(getParentOfSymbol(accessibleSymbolChain ? accessibleSymbolChain[0] : symbol), getQualifiedLeftMeaning(meaning)); + } + if (accessibleSymbolChain) { + for (var _i = 0; _i < accessibleSymbolChain.length; _i++) { + var accessibleSymbol = accessibleSymbolChain[_i]; + appendParentTypeArgumentsAndSymbolName(accessibleSymbol); + } + } + else { + if (!parentSymbol && ts.forEach(symbol.declarations, hasExternalModuleSymbol)) { + return; + } + if (symbol.flags & 2048 || symbol.flags & 4096) { + return; + } + appendParentTypeArgumentsAndSymbolName(symbol); + } + } + } + var isTypeParameter = symbol.flags & 262144; + var typeFormatFlag = 128 & typeFlags; + if (!isTypeParameter && (enclosingDeclaration || typeFormatFlag)) { + walkSymbol(symbol, meaning); + return; + } + return appendParentTypeArgumentsAndSymbolName(symbol); + } + function buildTypeDisplay(type, writer, enclosingDeclaration, globalFlags, typeStack) { + var globalFlagsToPass = globalFlags & 16; + return writeType(type, globalFlags); + function writeType(type, flags) { + if (type.flags & 1048703) { + writer.writeKeyword(!(globalFlags & 16) && + (type.flags & 1) ? "any" : type.intrinsicName); + } + else if (type.flags & 4096) { + writeTypeReference(type, flags); + } + else if (type.flags & (1024 | 2048 | 128 | 512)) { + buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, 793056, 0, flags); + } + else if (type.flags & 8192) { + writeTupleType(type); + } + else if (type.flags & 16384) { + writeUnionType(type, flags); + } + else if (type.flags & 32768) { + writeAnonymousType(type, flags); + } + else if (type.flags & 256) { + writer.writeStringLiteral(type.text); + } + else { + writePunctuation(writer, 14); + writeSpace(writer); + writePunctuation(writer, 21); + writeSpace(writer); + writePunctuation(writer, 15); + } + } + function writeTypeList(types, union) { + for (var i = 0; i < types.length; i++) { + if (i > 0) { + if (union) { + writeSpace(writer); + } + writePunctuation(writer, union ? 44 : 23); + writeSpace(writer); + } + writeType(types[i], union ? 64 : 0); + } + } + function writeTypeReference(type, flags) { + if (type.target === globalArrayType && !(flags & 1)) { + writeType(type.typeArguments[0], 64); + writePunctuation(writer, 18); + writePunctuation(writer, 19); + } + else { + buildSymbolDisplay(type.target.symbol, writer, enclosingDeclaration, 793056); + writePunctuation(writer, 24); + writeTypeList(type.typeArguments, false); + writePunctuation(writer, 25); + } + } + function writeTupleType(type) { + writePunctuation(writer, 18); + writeTypeList(type.elementTypes, false); + writePunctuation(writer, 19); + } + function writeUnionType(type, flags) { + if (flags & 64) { + writePunctuation(writer, 16); + } + writeTypeList(type.types, true); + if (flags & 64) { + writePunctuation(writer, 17); + } + } + function writeAnonymousType(type, flags) { + if (type.symbol && type.symbol.flags & (32 | 384 | 512)) { + writeTypeofSymbol(type, flags); + } + else if (shouldWriteTypeOfFunctionSymbol()) { + writeTypeofSymbol(type, flags); + } + else if (typeStack && ts.contains(typeStack, type)) { + var typeAlias = getTypeAliasForTypeLiteral(type); + if (typeAlias) { + buildSymbolDisplay(typeAlias, writer, enclosingDeclaration, 793056, 0, flags); + } + else { + writeKeyword(writer, 112); + } + } + else { + if (!typeStack) { + typeStack = []; + } + typeStack.push(type); + writeLiteralType(type, flags); + typeStack.pop(); + } + function shouldWriteTypeOfFunctionSymbol() { + if (type.symbol) { + var isStaticMethodSymbol = !!(type.symbol.flags & 8192 && + ts.forEach(type.symbol.declarations, function (declaration) { return declaration.flags & 128; })); + var isNonLocalFunctionSymbol = !!(type.symbol.flags & 16) && + (type.symbol.parent || + ts.forEach(type.symbol.declarations, function (declaration) { + return declaration.parent.kind === 227 || declaration.parent.kind === 206; + })); + if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { + return !!(flags & 2) || + (typeStack && ts.contains(typeStack, type)); + } + } + } + } + function writeTypeofSymbol(type, typeFormatFlags) { + writeKeyword(writer, 97); + writeSpace(writer); + buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, 107455, 0, typeFormatFlags); + } + function getIndexerParameterName(type, indexKind, fallbackName) { + var declaration = getIndexDeclarationOfSymbol(type.symbol, indexKind); + if (!declaration) { + return fallbackName; + } + ts.Debug.assert(declaration.parameters.length !== 0); + return ts.declarationNameToString(declaration.parameters[0].name); + } + function writeLiteralType(type, flags) { + var resolved = resolveObjectOrUnionTypeMembers(type); + if (!resolved.properties.length && !resolved.stringIndexType && !resolved.numberIndexType) { + if (!resolved.callSignatures.length && !resolved.constructSignatures.length) { + writePunctuation(writer, 14); + writePunctuation(writer, 15); + return; + } + if (resolved.callSignatures.length === 1 && !resolved.constructSignatures.length) { + if (flags & 64) { + writePunctuation(writer, 16); + } + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, typeStack); + if (flags & 64) { + writePunctuation(writer, 17); + } + return; + } + if (resolved.constructSignatures.length === 1 && !resolved.callSignatures.length) { + if (flags & 64) { + writePunctuation(writer, 16); + } + writeKeyword(writer, 88); + writeSpace(writer); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, typeStack); + if (flags & 64) { + writePunctuation(writer, 17); + } + return; + } + } + writePunctuation(writer, 14); + writer.writeLine(); + writer.increaseIndent(); + for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { + var signature = _a[_i]; + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); + writePunctuation(writer, 22); + writer.writeLine(); + } + for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { + var signature = _c[_b]; + writeKeyword(writer, 88); + writeSpace(writer); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); + writePunctuation(writer, 22); + writer.writeLine(); + } + if (resolved.stringIndexType) { + writePunctuation(writer, 18); + writer.writeParameter(getIndexerParameterName(resolved, 0, "x")); + writePunctuation(writer, 51); + writeSpace(writer); + writeKeyword(writer, 121); + writePunctuation(writer, 19); + writePunctuation(writer, 51); + writeSpace(writer); + writeType(resolved.stringIndexType, 0); + writePunctuation(writer, 22); + writer.writeLine(); + } + if (resolved.numberIndexType) { + writePunctuation(writer, 18); + writer.writeParameter(getIndexerParameterName(resolved, 1, "x")); + writePunctuation(writer, 51); + writeSpace(writer); + writeKeyword(writer, 119); + writePunctuation(writer, 19); + writePunctuation(writer, 51); + writeSpace(writer); + writeType(resolved.numberIndexType, 0); + writePunctuation(writer, 22); + writer.writeLine(); + } + for (var _d = 0, _e = resolved.properties; _d < _e.length; _d++) { + var p = _e[_d]; + var t = getTypeOfSymbol(p); + if (p.flags & (16 | 8192) && !getPropertiesOfObjectType(t).length) { + var signatures = getSignaturesOfType(t, 0); + for (var _f = 0; _f < signatures.length; _f++) { + var signature = signatures[_f]; + buildSymbolDisplay(p, writer); + if (p.flags & 536870912) { + writePunctuation(writer, 50); + } + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); + writePunctuation(writer, 22); + writer.writeLine(); + } + } + else { + buildSymbolDisplay(p, writer); + if (p.flags & 536870912) { + writePunctuation(writer, 50); + } + writePunctuation(writer, 51); + writeSpace(writer); + writeType(t, 0); + writePunctuation(writer, 22); + writer.writeLine(); + } + } + writer.decreaseIndent(); + writePunctuation(writer, 15); + } + } + function buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaraiton, flags) { + var targetSymbol = getTargetSymbol(symbol); + if (targetSymbol.flags & 32 || targetSymbol.flags & 64) { + buildDisplayForTypeParametersAndDelimiters(getTypeParametersOfClassOrInterface(symbol), writer, enclosingDeclaraiton, flags); + } + } + function buildTypeParameterDisplay(tp, writer, enclosingDeclaration, flags, typeStack) { + appendSymbolNameOnly(tp.symbol, writer); + var constraint = getConstraintOfTypeParameter(tp); + if (constraint) { + writeSpace(writer); + writeKeyword(writer, 79); + writeSpace(writer); + buildTypeDisplay(constraint, writer, enclosingDeclaration, flags, typeStack); + } + } + function buildParameterDisplay(p, writer, enclosingDeclaration, flags, typeStack) { + if (ts.hasDotDotDotToken(p.valueDeclaration)) { + writePunctuation(writer, 21); + } + appendSymbolNameOnly(p, writer); + if (ts.hasQuestionToken(p.valueDeclaration) || p.valueDeclaration.initializer) { + writePunctuation(writer, 50); + } + writePunctuation(writer, 51); + writeSpace(writer); + buildTypeDisplay(getTypeOfSymbol(p), writer, enclosingDeclaration, flags, typeStack); + } + function buildDisplayForTypeParametersAndDelimiters(typeParameters, writer, enclosingDeclaration, flags, typeStack) { + if (typeParameters && typeParameters.length) { + writePunctuation(writer, 24); + for (var i = 0; i < typeParameters.length; i++) { + if (i > 0) { + writePunctuation(writer, 23); + writeSpace(writer); + } + buildTypeParameterDisplay(typeParameters[i], writer, enclosingDeclaration, flags, typeStack); + } + writePunctuation(writer, 25); + } + } + function buildDisplayForTypeArgumentsAndDelimiters(typeParameters, mapper, writer, enclosingDeclaration, flags, typeStack) { + if (typeParameters && typeParameters.length) { + writePunctuation(writer, 24); + for (var i = 0; i < typeParameters.length; i++) { + if (i > 0) { + writePunctuation(writer, 23); + writeSpace(writer); + } + buildTypeDisplay(mapper(typeParameters[i]), writer, enclosingDeclaration, 0); + } + writePunctuation(writer, 25); + } + } + function buildDisplayForParametersAndDelimiters(parameters, writer, enclosingDeclaration, flags, typeStack) { + writePunctuation(writer, 16); + for (var i = 0; i < parameters.length; i++) { + if (i > 0) { + writePunctuation(writer, 23); + writeSpace(writer); + } + buildParameterDisplay(parameters[i], writer, enclosingDeclaration, flags, typeStack); + } + writePunctuation(writer, 17); + } + function buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, typeStack) { + if (flags & 8) { + writeSpace(writer); + writePunctuation(writer, 32); + } + else { + writePunctuation(writer, 51); + } + writeSpace(writer); + buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags, typeStack); + } + function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, typeStack) { + if (signature.target && (flags & 32)) { + buildDisplayForTypeArgumentsAndDelimiters(signature.target.typeParameters, signature.mapper, writer, enclosingDeclaration); + } + else { + buildDisplayForTypeParametersAndDelimiters(signature.typeParameters, writer, enclosingDeclaration, flags, typeStack); + } + buildDisplayForParametersAndDelimiters(signature.parameters, writer, enclosingDeclaration, flags, typeStack); + buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, typeStack); + } + return _displayBuilder || (_displayBuilder = { + symbolToString: symbolToString, + typeToString: typeToString, + buildSymbolDisplay: buildSymbolDisplay, + buildTypeDisplay: buildTypeDisplay, + buildTypeParameterDisplay: buildTypeParameterDisplay, + buildParameterDisplay: buildParameterDisplay, + buildDisplayForParametersAndDelimiters: buildDisplayForParametersAndDelimiters, + buildDisplayForTypeParametersAndDelimiters: buildDisplayForTypeParametersAndDelimiters, + buildDisplayForTypeArgumentsAndDelimiters: buildDisplayForTypeArgumentsAndDelimiters, + buildTypeParameterDisplayFromSymbol: buildTypeParameterDisplayFromSymbol, + buildSignatureDisplay: buildSignatureDisplay, + buildReturnTypeDisplay: buildReturnTypeDisplay + }); + } + function isDeclarationVisible(node) { + function getContainingExternalModule(node) { + for (; node; node = node.parent) { + if (node.kind === 205) { + if (node.name.kind === 8) { + return node; + } + } + else if (node.kind === 227) { + return ts.isExternalModule(node) ? node : undefined; + } + } + ts.Debug.fail("getContainingModule cant reach here"); + } + function isUsedInExportAssignment(node) { + var externalModule = getContainingExternalModule(node); + var exportAssignmentSymbol; + var resolvedExportSymbol; + if (externalModule) { + var externalModuleSymbol = getSymbolOfNode(externalModule); + exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); + var symbolOfNode = getSymbolOfNode(node); + if (isSymbolUsedInExportAssignment(symbolOfNode)) { + return true; + } + if (symbolOfNode.flags & 8388608) { + return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); + } + } + function isSymbolUsedInExportAssignment(symbol) { + if (exportAssignmentSymbol === symbol) { + return true; + } + if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { + resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); + if (resolvedExportSymbol === symbol) { + return true; + } + return ts.forEach(resolvedExportSymbol.declarations, function (current) { + while (current) { + if (current === node) { + return true; + } + current = current.parent; + } + }); + } + } + } + function determineIfDeclarationIsVisible() { + switch (node.kind) { + case 152: + return isDeclarationVisible(node.parent.parent); + case 198: + if (ts.isBindingPattern(node.name) && + !node.name.elements.length) { + return false; + } + case 205: + case 201: + case 202: + case 203: + case 200: + case 204: + case 208: + var parent_2 = getDeclarationContainer(node); + if (!(ts.getCombinedNodeFlags(node) & 1) && + !(node.kind !== 208 && parent_2.kind !== 227 && ts.isInAmbientContext(parent_2))) { + return isGlobalSourceFile(parent_2); + } + return isDeclarationVisible(parent_2); + case 132: + case 131: + case 136: + case 137: + case 134: + case 133: + if (node.flags & (32 | 64)) { + return false; + } + case 135: + case 139: + case 138: + case 140: + case 129: + case 206: + case 142: + case 143: + case 145: + case 141: + case 146: + case 147: + case 148: + case 149: + return isDeclarationVisible(node.parent); + case 210: + case 211: + case 213: + return false; + case 128: + case 227: + return true; + case 214: + return false; + default: + ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); + } + } + if (node) { + var links = getNodeLinks(node); + if (links.isVisible === undefined) { + links.isVisible = !!determineIfDeclarationIsVisible(); + } + return links.isVisible; + } + } + function collectLinkedAliases(node) { + var exportSymbol; + if (node.parent && node.parent.kind === 214) { + exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, node); + } + else if (node.parent.kind === 217) { + exportSymbol = getTargetOfExportSpecifier(node.parent); + } + var result = []; + if (exportSymbol) { + buildVisibleNodeList(exportSymbol.declarations); + } + return result; + function buildVisibleNodeList(declarations) { + ts.forEach(declarations, function (declaration) { + getNodeLinks(declaration).isVisible = true; + var resultNode = getAnyImportSyntax(declaration) || declaration; + if (!ts.contains(result, resultNode)) { + result.push(resultNode); + } + if (ts.isInternalModuleImportEqualsDeclaration(declaration)) { + var internalModuleReference = declaration.moduleReference; + var firstIdentifier = getFirstIdentifier(internalModuleReference); + var importSymbol = resolveName(declaration, firstIdentifier.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, firstIdentifier); + buildVisibleNodeList(importSymbol.declarations); + } + }); + } + } + function getRootDeclaration(node) { + while (node.kind === 152) { + node = node.parent.parent; + } + return node; + } + function getDeclarationContainer(node) { + node = getRootDeclaration(node); + return node.kind === 198 ? node.parent.parent.parent : node.parent; + } + function getTypeOfPrototypeProperty(prototype) { + var classType = getDeclaredTypeOfSymbol(prototype.parent); + return classType.typeParameters ? createTypeReference(classType, ts.map(classType.typeParameters, function (_) { return anyType; })) : classType; + } + function getTypeOfPropertyOfType(type, name) { + var prop = getPropertyOfType(type, name); + return prop ? getTypeOfSymbol(prop) : undefined; + } + function getTypeForBindingElement(declaration) { + var pattern = declaration.parent; + var parentType = getTypeForVariableLikeDeclaration(pattern.parent); + if (parentType === unknownType) { + return unknownType; + } + if (!parentType || parentType === anyType) { + if (declaration.initializer) { + return checkExpressionCached(declaration.initializer); + } + return parentType; + } + var type; + if (pattern.kind === 150) { + var name_5 = declaration.propertyName || declaration.name; + type = getTypeOfPropertyOfType(parentType, name_5.text) || + isNumericLiteralName(name_5.text) && getIndexTypeOfType(parentType, 1) || + getIndexTypeOfType(parentType, 0); + if (!type) { + error(name_5, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_5)); + return unknownType; + } + } + else { + if (!isArrayLikeType(parentType)) { + error(pattern, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(parentType)); + return unknownType; + } + if (!declaration.dotDotDotToken) { + var propName = "" + ts.indexOf(pattern.elements, declaration); + type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); + if (!type) { + if (isTupleType(parentType)) { + error(declaration, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(parentType), parentType.elementTypes.length, pattern.elements.length); + } + else { + error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + } + return unknownType; + } + } + else { + type = createArrayType(getIndexTypeOfType(parentType, 1)); + } + } + return type; + } + function getTypeForVariableLikeDeclaration(declaration) { + if (declaration.parent.parent.kind === 187) { + return anyType; + } + if (declaration.parent.parent.kind === 188) { + return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; + } + if (ts.isBindingPattern(declaration.parent)) { + return getTypeForBindingElement(declaration); + } + if (declaration.type) { + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); + } + if (declaration.kind === 129) { + var func = declaration.parent; + if (func.kind === 137 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 136); + if (getter) { + return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); + } + } + var type = getContextuallyTypedParameterType(declaration); + if (type) { + return type; + } + } + if (declaration.initializer) { + return checkExpressionCached(declaration.initializer); + } + if (declaration.kind === 225) { + return checkIdentifier(declaration.name); + } + return undefined; + } + function getTypeFromBindingElement(element) { + if (element.initializer) { + return getWidenedType(checkExpressionCached(element.initializer)); + } + if (ts.isBindingPattern(element.name)) { + return getTypeFromBindingPattern(element.name); + } + return anyType; + } + function getTypeFromObjectBindingPattern(pattern) { + var members = {}; + ts.forEach(pattern.elements, function (e) { + var flags = 4 | 67108864 | (e.initializer ? 536870912 : 0); + var name = e.propertyName || e.name; + var symbol = createSymbol(flags, name.text); + symbol.type = getTypeFromBindingElement(e); + members[symbol.name] = symbol; + }); + return createAnonymousType(undefined, members, emptyArray, emptyArray, undefined, undefined); + } + function getTypeFromArrayBindingPattern(pattern) { + var hasSpreadElement = false; + var elementTypes = []; + ts.forEach(pattern.elements, function (e) { + elementTypes.push(e.kind === 175 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); + if (e.dotDotDotToken) { + hasSpreadElement = true; + } + }); + return !elementTypes.length ? anyArrayType : hasSpreadElement ? createArrayType(getUnionType(elementTypes)) : createTupleType(elementTypes); + } + function getTypeFromBindingPattern(pattern) { + return pattern.kind === 150 + ? getTypeFromObjectBindingPattern(pattern) + : getTypeFromArrayBindingPattern(pattern); + } + function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { + var type = getTypeForVariableLikeDeclaration(declaration); + if (type) { + if (reportErrors) { + reportErrorsFromWidening(declaration, type); + } + return declaration.kind !== 224 ? getWidenedType(type) : type; + } + if (ts.isBindingPattern(declaration.name)) { + return getTypeFromBindingPattern(declaration.name); + } + type = declaration.dotDotDotToken ? anyArrayType : anyType; + if (reportErrors && compilerOptions.noImplicitAny) { + var root = getRootDeclaration(declaration); + if (!isPrivateWithinAmbient(root) && !(root.kind === 129 && isPrivateWithinAmbient(root.parent))) { + reportImplicitAnyError(declaration, type); + } + } + return type; + } + function getTypeOfVariableOrParameterOrProperty(symbol) { + var links = getSymbolLinks(symbol); + if (!links.type) { + if (symbol.flags & 134217728) { + return links.type = getTypeOfPrototypeProperty(symbol); + } + var declaration = symbol.valueDeclaration; + if (declaration.parent.kind === 223) { + return links.type = anyType; + } + if (declaration.kind === 214) { + var exportAssignment = declaration; + if (exportAssignment.expression) { + return links.type = checkExpression(exportAssignment.expression); + } + else if (exportAssignment.type) { + return links.type = getTypeFromTypeNodeOrHeritageClauseElement(exportAssignment.type); + } + else { + return links.type = anyType; + } + } + links.type = resolvingType; + var type = getWidenedTypeForVariableLikeDeclaration(declaration, true); + if (links.type === resolvingType) { + links.type = type; + } + } + else if (links.type === resolvingType) { + links.type = anyType; + if (compilerOptions.noImplicitAny) { + var diagnostic = symbol.valueDeclaration.type ? + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; + error(symbol.valueDeclaration, diagnostic, symbolToString(symbol)); + } + } + return links.type; + } + function getSetAccessorTypeAnnotationNode(accessor) { + return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type; + } + function getAnnotatedAccessorType(accessor) { + if (accessor) { + if (accessor.kind === 136) { + return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement(accessor.type); + } + else { + var setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); + return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement(setterTypeAnnotation); + } + } + return undefined; + } + function getTypeOfAccessors(symbol) { + var links = getSymbolLinks(symbol); + checkAndStoreTypeOfAccessors(symbol, links); + return links.type; + } + function checkAndStoreTypeOfAccessors(symbol, links) { + links = links || getSymbolLinks(symbol); + if (!links.type) { + links.type = resolvingType; + var getter = ts.getDeclarationOfKind(symbol, 136); + var setter = ts.getDeclarationOfKind(symbol, 137); + var type; + var getterReturnType = getAnnotatedAccessorType(getter); + if (getterReturnType) { + type = getterReturnType; + } + else { + var setterParameterType = getAnnotatedAccessorType(setter); + if (setterParameterType) { + type = setterParameterType; + } + else { + if (getter && getter.body) { + type = getReturnTypeFromBody(getter); + } + else { + if (compilerOptions.noImplicitAny) { + error(setter, ts.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation, symbolToString(symbol)); + } + type = anyType; + } + } + } + if (links.type === resolvingType) { + links.type = type; + } + } + else if (links.type === resolvingType) { + links.type = anyType; + if (compilerOptions.noImplicitAny) { + var getter = ts.getDeclarationOfKind(symbol, 136); + error(getter, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); + } + } + } + function getTypeOfFuncClassEnumModule(symbol) { + var links = getSymbolLinks(symbol); + if (!links.type) { + links.type = createObjectType(32768, symbol); + } + return links.type; + } + function getTypeOfEnumMember(symbol) { + var links = getSymbolLinks(symbol); + if (!links.type) { + links.type = getDeclaredTypeOfEnum(getParentOfSymbol(symbol)); + } + return links.type; + } + function getTypeOfAlias(symbol) { + var links = getSymbolLinks(symbol); + if (!links.type) { + links.type = getTypeOfSymbol(resolveAlias(symbol)); + } + return links.type; + } + function getTypeOfInstantiatedSymbol(symbol) { + var links = getSymbolLinks(symbol); + if (!links.type) { + links.type = instantiateType(getTypeOfSymbol(links.target), links.mapper); + } + return links.type; + } + function getTypeOfSymbol(symbol) { + if (symbol.flags & 16777216) { + return getTypeOfInstantiatedSymbol(symbol); + } + if (symbol.flags & (3 | 4)) { + return getTypeOfVariableOrParameterOrProperty(symbol); + } + if (symbol.flags & (16 | 8192 | 32 | 384 | 512)) { + return getTypeOfFuncClassEnumModule(symbol); + } + if (symbol.flags & 8) { + return getTypeOfEnumMember(symbol); + } + if (symbol.flags & 98304) { + return getTypeOfAccessors(symbol); + } + if (symbol.flags & 8388608) { + return getTypeOfAlias(symbol); + } + return unknownType; + } + function getTargetType(type) { + return type.flags & 4096 ? type.target : type; + } + function hasBaseType(type, checkBase) { + return check(type); + function check(type) { + var target = getTargetType(type); + return target === checkBase || ts.forEach(target.baseTypes, check); + } + } + function getTypeParametersOfClassOrInterface(symbol) { + var result; + ts.forEach(symbol.declarations, function (node) { + if (node.kind === 202 || node.kind === 201) { + var declaration = node; + if (declaration.typeParameters && declaration.typeParameters.length) { + ts.forEach(declaration.typeParameters, function (node) { + var tp = getDeclaredTypeOfTypeParameter(getSymbolOfNode(node)); + if (!result) { + result = [tp]; + } + else if (!ts.contains(result, tp)) { + result.push(tp); + } + }); + } + } + }); + return result; + } + function getDeclaredTypeOfClass(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + var type = links.declaredType = createObjectType(1024, symbol); + var typeParameters = getTypeParametersOfClassOrInterface(symbol); + if (typeParameters) { + type.flags |= 4096; + type.typeParameters = typeParameters; + type.instantiations = {}; + type.instantiations[getTypeListId(type.typeParameters)] = type; + type.target = type; + type.typeArguments = type.typeParameters; + } + type.baseTypes = []; + var declaration = ts.getDeclarationOfKind(symbol, 201); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(declaration); + if (baseTypeNode) { + var baseType = getTypeFromHeritageClauseElement(baseTypeNode); + if (baseType !== unknownType) { + if (getTargetType(baseType).flags & 1024) { + if (type !== baseType && !hasBaseType(baseType, type)) { + type.baseTypes.push(baseType); + } + else { + error(declaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1)); + } + } + else { + error(baseTypeNode, ts.Diagnostics.A_class_may_only_extend_another_class); + } + } + } + type.declaredProperties = getNamedMembers(symbol.members); + type.declaredCallSignatures = emptyArray; + type.declaredConstructSignatures = emptyArray; + type.declaredStringIndexType = getIndexTypeOfSymbol(symbol, 0); + type.declaredNumberIndexType = getIndexTypeOfSymbol(symbol, 1); + } + return links.declaredType; + } + function getDeclaredTypeOfInterface(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + var type = links.declaredType = createObjectType(2048, symbol); + var typeParameters = getTypeParametersOfClassOrInterface(symbol); + if (typeParameters) { + type.flags |= 4096; + type.typeParameters = typeParameters; + type.instantiations = {}; + type.instantiations[getTypeListId(type.typeParameters)] = type; + type.target = type; + type.typeArguments = type.typeParameters; + } + type.baseTypes = []; + ts.forEach(symbol.declarations, function (declaration) { + if (declaration.kind === 202 && ts.getInterfaceBaseTypeNodes(declaration)) { + ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), function (node) { + var baseType = getTypeFromHeritageClauseElement(node); + if (baseType !== unknownType) { + if (getTargetType(baseType).flags & (1024 | 2048)) { + if (type !== baseType && !hasBaseType(baseType, type)) { + type.baseTypes.push(baseType); + } + else { + error(declaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1)); + } + } + else { + error(node, ts.Diagnostics.An_interface_may_only_extend_a_class_or_another_interface); + } + } + }); + } + }); + type.declaredProperties = getNamedMembers(symbol.members); + type.declaredCallSignatures = getSignaturesOfSymbol(symbol.members["__call"]); + type.declaredConstructSignatures = getSignaturesOfSymbol(symbol.members["__new"]); + type.declaredStringIndexType = getIndexTypeOfSymbol(symbol, 0); + type.declaredNumberIndexType = getIndexTypeOfSymbol(symbol, 1); + } + return links.declaredType; + } + function getDeclaredTypeOfTypeAlias(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + links.declaredType = resolvingType; + var declaration = ts.getDeclarationOfKind(symbol, 203); + var type = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); + if (links.declaredType === resolvingType) { + links.declaredType = type; + } + } + else if (links.declaredType === resolvingType) { + links.declaredType = unknownType; + var declaration = ts.getDeclarationOfKind(symbol, 203); + error(declaration.name, ts.Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); + } + return links.declaredType; + } + function getDeclaredTypeOfEnum(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + var type = createType(128); + type.symbol = symbol; + links.declaredType = type; + } + return links.declaredType; + } + function getDeclaredTypeOfTypeParameter(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + var type = createType(512); + type.symbol = symbol; + if (!ts.getDeclarationOfKind(symbol, 128).constraint) { + type.constraint = noConstraintType; + } + links.declaredType = type; + } + return links.declaredType; + } + function getDeclaredTypeOfAlias(symbol) { + var links = getSymbolLinks(symbol); + if (!links.declaredType) { + links.declaredType = getDeclaredTypeOfSymbol(resolveAlias(symbol)); + } + return links.declaredType; + } + function getDeclaredTypeOfSymbol(symbol) { + ts.Debug.assert((symbol.flags & 16777216) === 0); + if (symbol.flags & 32) { + return getDeclaredTypeOfClass(symbol); + } + if (symbol.flags & 64) { + return getDeclaredTypeOfInterface(symbol); + } + if (symbol.flags & 524288) { + return getDeclaredTypeOfTypeAlias(symbol); + } + if (symbol.flags & 384) { + return getDeclaredTypeOfEnum(symbol); + } + if (symbol.flags & 262144) { + return getDeclaredTypeOfTypeParameter(symbol); + } + if (symbol.flags & 8388608) { + return getDeclaredTypeOfAlias(symbol); + } + return unknownType; + } + function createSymbolTable(symbols) { + var result = {}; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; + result[symbol.name] = symbol; + } + return result; + } + function createInstantiatedSymbolTable(symbols, mapper) { + var result = {}; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; + result[symbol.name] = instantiateSymbol(symbol, mapper); + } + return result; + } + function addInheritedMembers(symbols, baseSymbols) { + for (var _i = 0; _i < baseSymbols.length; _i++) { + var s = baseSymbols[_i]; + if (!ts.hasProperty(symbols, s.name)) { + symbols[s.name] = s; + } + } + } + function addInheritedSignatures(signatures, baseSignatures) { + if (baseSignatures) { + for (var _i = 0; _i < baseSignatures.length; _i++) { + var signature = baseSignatures[_i]; + signatures.push(signature); + } + } + } + function resolveClassOrInterfaceMembers(type) { + var members = type.symbol.members; + var callSignatures = type.declaredCallSignatures; + var constructSignatures = type.declaredConstructSignatures; + var stringIndexType = type.declaredStringIndexType; + var numberIndexType = type.declaredNumberIndexType; + if (type.baseTypes.length) { + members = createSymbolTable(type.declaredProperties); + ts.forEach(type.baseTypes, function (baseType) { + addInheritedMembers(members, getPropertiesOfObjectType(baseType)); + callSignatures = ts.concatenate(callSignatures, getSignaturesOfType(baseType, 0)); + constructSignatures = ts.concatenate(constructSignatures, getSignaturesOfType(baseType, 1)); + stringIndexType = stringIndexType || getIndexTypeOfType(baseType, 0); + numberIndexType = numberIndexType || getIndexTypeOfType(baseType, 1); + }); + } + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); + } + function resolveTypeReferenceMembers(type) { + var target = type.target; + var mapper = createTypeMapper(target.typeParameters, type.typeArguments); + var members = createInstantiatedSymbolTable(target.declaredProperties, mapper); + var callSignatures = instantiateList(target.declaredCallSignatures, mapper, instantiateSignature); + var constructSignatures = instantiateList(target.declaredConstructSignatures, mapper, instantiateSignature); + var stringIndexType = target.declaredStringIndexType ? instantiateType(target.declaredStringIndexType, mapper) : undefined; + var numberIndexType = target.declaredNumberIndexType ? instantiateType(target.declaredNumberIndexType, mapper) : undefined; + ts.forEach(target.baseTypes, function (baseType) { + var instantiatedBaseType = instantiateType(baseType, mapper); + addInheritedMembers(members, getPropertiesOfObjectType(instantiatedBaseType)); + callSignatures = ts.concatenate(callSignatures, getSignaturesOfType(instantiatedBaseType, 0)); + constructSignatures = ts.concatenate(constructSignatures, getSignaturesOfType(instantiatedBaseType, 1)); + stringIndexType = stringIndexType || getIndexTypeOfType(instantiatedBaseType, 0); + numberIndexType = numberIndexType || getIndexTypeOfType(instantiatedBaseType, 1); + }); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); + } + function createSignature(declaration, typeParameters, parameters, resolvedReturnType, minArgumentCount, hasRestParameter, hasStringLiterals) { + var sig = new Signature(checker); + sig.declaration = declaration; + sig.typeParameters = typeParameters; + sig.parameters = parameters; + sig.resolvedReturnType = resolvedReturnType; + sig.minArgumentCount = minArgumentCount; + sig.hasRestParameter = hasRestParameter; + sig.hasStringLiterals = hasStringLiterals; + return sig; + } + function cloneSignature(sig) { + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + } + function getDefaultConstructSignatures(classType) { + if (classType.baseTypes.length) { + var baseType = classType.baseTypes[0]; + var baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), 1); + return ts.map(baseSignatures, function (baseSignature) { + var signature = baseType.flags & 4096 ? + getSignatureInstantiation(baseSignature, baseType.typeArguments) : cloneSignature(baseSignature); + signature.typeParameters = classType.typeParameters; + signature.resolvedReturnType = classType; + return signature; + }); + } + return [createSignature(undefined, classType.typeParameters, emptyArray, classType, 0, false, false)]; + } + function createTupleTypeMemberSymbols(memberTypes) { + var members = {}; + for (var i = 0; i < memberTypes.length; i++) { + var symbol = createSymbol(4 | 67108864, "" + i); + symbol.type = memberTypes[i]; + members[i] = symbol; + } + return members; + } + function resolveTupleTypeMembers(type) { + var arrayType = resolveObjectOrUnionTypeMembers(createArrayType(getUnionType(type.elementTypes))); + var members = createTupleTypeMemberSymbols(type.elementTypes); + addInheritedMembers(members, arrayType.properties); + setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexType, arrayType.numberIndexType); + } + function signatureListsIdentical(s, t) { + if (s.length !== t.length) { + return false; + } + for (var i = 0; i < s.length; i++) { + if (!compareSignatures(s[i], t[i], false, compareTypes)) { + return false; + } + } + return true; + } + function getUnionSignatures(types, kind) { + var signatureLists = ts.map(types, function (t) { return getSignaturesOfType(t, kind); }); + var signatures = signatureLists[0]; + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; + if (signature.typeParameters) { + return emptyArray; + } + } + for (var i_1 = 1; i_1 < signatureLists.length; i_1++) { + if (!signatureListsIdentical(signatures, signatureLists[i_1])) { + return emptyArray; + } + } + var result = ts.map(signatures, cloneSignature); + for (var i = 0; i < result.length; i++) { + var s = result[i]; + s.resolvedReturnType = undefined; + s.unionSignatures = ts.map(signatureLists, function (signatures) { return signatures[i]; }); + } + return result; + } + function getUnionIndexType(types, kind) { + var indexTypes = []; + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + var indexType = getIndexTypeOfType(type, kind); + if (!indexType) { + return undefined; + } + indexTypes.push(indexType); + } + return getUnionType(indexTypes); + } + function resolveUnionTypeMembers(type) { + var callSignatures = getUnionSignatures(type.types, 0); + var constructSignatures = getUnionSignatures(type.types, 1); + var stringIndexType = getUnionIndexType(type.types, 0); + var numberIndexType = getUnionIndexType(type.types, 1); + setObjectTypeMembers(type, emptySymbols, callSignatures, constructSignatures, stringIndexType, numberIndexType); + } + function resolveAnonymousTypeMembers(type) { + var symbol = type.symbol; + var members; + var callSignatures; + var constructSignatures; + var stringIndexType; + var numberIndexType; + if (symbol.flags & 2048) { + members = symbol.members; + callSignatures = getSignaturesOfSymbol(members["__call"]); + constructSignatures = getSignaturesOfSymbol(members["__new"]); + stringIndexType = getIndexTypeOfSymbol(symbol, 0); + numberIndexType = getIndexTypeOfSymbol(symbol, 1); + } + else { + members = emptySymbols; + callSignatures = emptyArray; + constructSignatures = emptyArray; + if (symbol.flags & 1952) { + members = getExportsOfSymbol(symbol); + } + if (symbol.flags & (16 | 8192)) { + callSignatures = getSignaturesOfSymbol(symbol); + } + if (symbol.flags & 32) { + var classType = getDeclaredTypeOfClass(symbol); + constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); + if (!constructSignatures.length) { + constructSignatures = getDefaultConstructSignatures(classType); + } + if (classType.baseTypes.length) { + members = createSymbolTable(getNamedMembers(members)); + addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(classType.baseTypes[0].symbol))); + } + } + stringIndexType = undefined; + numberIndexType = (symbol.flags & 384) ? stringType : undefined; + } + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); + } + function resolveObjectOrUnionTypeMembers(type) { + if (!type.members) { + if (type.flags & (1024 | 2048)) { + resolveClassOrInterfaceMembers(type); + } + else if (type.flags & 32768) { + resolveAnonymousTypeMembers(type); + } + else if (type.flags & 8192) { + resolveTupleTypeMembers(type); + } + else if (type.flags & 16384) { + resolveUnionTypeMembers(type); + } + else { + resolveTypeReferenceMembers(type); + } + } + return type; + } + function getPropertiesOfObjectType(type) { + if (type.flags & 48128) { + return resolveObjectOrUnionTypeMembers(type).properties; + } + return emptyArray; + } + function getPropertyOfObjectType(type, name) { + if (type.flags & 48128) { + var resolved = resolveObjectOrUnionTypeMembers(type); + if (ts.hasProperty(resolved.members, name)) { + var symbol = resolved.members[name]; + if (symbolIsValue(symbol)) { + return symbol; + } + } + } + } + function getPropertiesOfUnionType(type) { + var result = []; + ts.forEach(getPropertiesOfType(type.types[0]), function (prop) { + var unionProp = getPropertyOfUnionType(type, prop.name); + if (unionProp) { + result.push(unionProp); + } + }); + return result; + } + function getPropertiesOfType(type) { + if (type.flags & 16384) { + return getPropertiesOfUnionType(type); + } + return getPropertiesOfObjectType(getApparentType(type)); + } + function getApparentType(type) { + if (type.flags & 512) { + do { + type = getConstraintOfTypeParameter(type); + } while (type && type.flags & 512); + if (!type) { + type = emptyObjectType; + } + } + if (type.flags & 258) { + type = globalStringType; + } + else if (type.flags & 132) { + type = globalNumberType; + } + else if (type.flags & 8) { + type = globalBooleanType; + } + else if (type.flags & 1048576) { + type = globalESSymbolType; + } + return type; + } + function createUnionProperty(unionType, name) { + var types = unionType.types; + var props; + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var type = getApparentType(current); + if (type !== unknownType) { + var prop = getPropertyOfType(type, name); + if (!prop) { + return undefined; + } + if (!props) { + props = [prop]; + } + else { + props.push(prop); + } + } + } + var propTypes = []; + var declarations = []; + for (var _a = 0; _a < props.length; _a++) { + var prop = props[_a]; + if (prop.declarations) { + declarations.push.apply(declarations, prop.declarations); + } + propTypes.push(getTypeOfSymbol(prop)); + } + var result = createSymbol(4 | 67108864 | 268435456, name); + result.unionType = unionType; + result.declarations = declarations; + result.type = getUnionType(propTypes); + return result; + } + function getPropertyOfUnionType(type, name) { + var properties = type.resolvedProperties || (type.resolvedProperties = {}); + if (ts.hasProperty(properties, name)) { + return properties[name]; + } + var property = createUnionProperty(type, name); + if (property) { + properties[name] = property; + } + return property; + } + function getPropertyOfType(type, name) { + if (type.flags & 16384) { + return getPropertyOfUnionType(type, name); + } + if (!(type.flags & 48128)) { + type = getApparentType(type); + if (!(type.flags & 48128)) { + return undefined; + } + } + var resolved = resolveObjectOrUnionTypeMembers(type); + if (ts.hasProperty(resolved.members, name)) { + var symbol = resolved.members[name]; + if (symbolIsValue(symbol)) { + return symbol; + } + } + if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) { + var symbol = getPropertyOfObjectType(globalFunctionType, name); + if (symbol) + return symbol; + } + return getPropertyOfObjectType(globalObjectType, name); + } + function getSignaturesOfObjectOrUnionType(type, kind) { + if (type.flags & (48128 | 16384)) { + var resolved = resolveObjectOrUnionTypeMembers(type); + return kind === 0 ? resolved.callSignatures : resolved.constructSignatures; + } + return emptyArray; + } + function getSignaturesOfType(type, kind) { + return getSignaturesOfObjectOrUnionType(getApparentType(type), kind); + } + function getIndexTypeOfObjectOrUnionType(type, kind) { + if (type.flags & (48128 | 16384)) { + var resolved = resolveObjectOrUnionTypeMembers(type); + return kind === 0 ? resolved.stringIndexType : resolved.numberIndexType; + } + } + function getIndexTypeOfType(type, kind) { + return getIndexTypeOfObjectOrUnionType(getApparentType(type), kind); + } + function getTypeParametersFromDeclaration(typeParameterDeclarations) { + var result = []; + ts.forEach(typeParameterDeclarations, function (node) { + var tp = getDeclaredTypeOfTypeParameter(node.symbol); + if (!ts.contains(result, tp)) { + result.push(tp); + } + }); + return result; + } + function symbolsToArray(symbols) { + var result = []; + for (var id in symbols) { + if (!isReservedMemberName(id)) { + result.push(symbols[id]); + } + } + return result; + } + function getExportsOfExternalModule(node) { + if (!node.moduleSpecifier) { + return emptyArray; + } + var module = resolveExternalModuleName(node, node.moduleSpecifier); + if (!module) { + return emptyArray; + } + return symbolsToArray(getExportsOfModule(module)); + } + function getSignatureFromDeclaration(declaration) { + var links = getNodeLinks(declaration); + if (!links.resolvedSignature) { + var classType = declaration.kind === 135 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; + var typeParameters = classType ? classType.typeParameters : + declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; + var parameters = []; + var hasStringLiterals = false; + var minArgumentCount = -1; + for (var i = 0, n = declaration.parameters.length; i < n; i++) { + var param = declaration.parameters[i]; + parameters.push(param.symbol); + if (param.type && param.type.kind === 8) { + hasStringLiterals = true; + } + if (minArgumentCount < 0) { + if (param.initializer || param.questionToken || param.dotDotDotToken) { + minArgumentCount = i; + } + } + } + if (minArgumentCount < 0) { + minArgumentCount = declaration.parameters.length; + } + var returnType; + if (classType) { + returnType = classType; + } + else if (declaration.type) { + returnType = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); + } + else { + if (declaration.kind === 136 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 137); + returnType = getAnnotatedAccessorType(setter); + } + if (!returnType && ts.nodeIsMissing(declaration.body)) { + returnType = anyType; + } + } + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, minArgumentCount, ts.hasRestParameters(declaration), hasStringLiterals); + } + return links.resolvedSignature; + } + function getSignaturesOfSymbol(symbol) { + if (!symbol) + return emptyArray; + var result = []; + for (var i = 0, len = symbol.declarations.length; i < len; i++) { + var node = symbol.declarations[i]; + switch (node.kind) { + case 142: + case 143: + case 200: + case 134: + case 133: + case 135: + case 138: + case 139: + case 140: + case 136: + case 137: + case 162: + case 163: + if (i > 0 && node.body) { + var previous = symbol.declarations[i - 1]; + if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { + break; + } + } + result.push(getSignatureFromDeclaration(node)); + } + } + return result; + } + function getReturnTypeOfSignature(signature) { + if (!signature.resolvedReturnType) { + signature.resolvedReturnType = resolvingType; + var type; + if (signature.target) { + type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); + } + else if (signature.unionSignatures) { + type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); + } + else { + type = getReturnTypeFromBody(signature.declaration); + } + if (signature.resolvedReturnType === resolvingType) { + signature.resolvedReturnType = type; + } + } + else if (signature.resolvedReturnType === resolvingType) { + signature.resolvedReturnType = anyType; + if (compilerOptions.noImplicitAny) { + var declaration = signature.declaration; + if (declaration.name) { + error(declaration.name, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, ts.declarationNameToString(declaration.name)); + } + else { + error(declaration, ts.Diagnostics.Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions); + } + } + } + return signature.resolvedReturnType; + } + function getRestTypeOfSignature(signature) { + if (signature.hasRestParameter) { + var type = getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]); + if (type.flags & 4096 && type.target === globalArrayType) { + return type.typeArguments[0]; + } + } + return anyType; + } + function getSignatureInstantiation(signature, typeArguments) { + return instantiateSignature(signature, createTypeMapper(signature.typeParameters, typeArguments), true); + } + function getErasedSignature(signature) { + if (!signature.typeParameters) + return signature; + if (!signature.erasedSignatureCache) { + if (signature.target) { + signature.erasedSignatureCache = instantiateSignature(getErasedSignature(signature.target), signature.mapper); + } + else { + signature.erasedSignatureCache = instantiateSignature(signature, createTypeEraser(signature.typeParameters), true); + } + } + return signature.erasedSignatureCache; + } + function getOrCreateTypeFromSignature(signature) { + if (!signature.isolatedSignatureType) { + var isConstructor = signature.declaration.kind === 135 || signature.declaration.kind === 139; + var type = createObjectType(32768 | 65536); + type.members = emptySymbols; + type.properties = emptyArray; + type.callSignatures = !isConstructor ? [signature] : emptyArray; + type.constructSignatures = isConstructor ? [signature] : emptyArray; + signature.isolatedSignatureType = type; + } + return signature.isolatedSignatureType; + } + function getIndexSymbol(symbol) { + return symbol.members["__index"]; + } + function getIndexDeclarationOfSymbol(symbol, kind) { + var syntaxKind = kind === 1 ? 119 : 121; + var indexSymbol = getIndexSymbol(symbol); + if (indexSymbol) { + var len = indexSymbol.declarations.length; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var node = decl; + if (node.parameters.length === 1) { + var parameter = node.parameters[0]; + if (parameter && parameter.type && parameter.type.kind === syntaxKind) { + return node; + } + } + } + } + return undefined; + } + function getIndexTypeOfSymbol(symbol, kind) { + var declaration = getIndexDeclarationOfSymbol(symbol, kind); + return declaration + ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement(declaration.type) : anyType + : undefined; + } + function getConstraintOfTypeParameter(type) { + if (!type.constraint) { + if (type.target) { + var targetConstraint = getConstraintOfTypeParameter(type.target); + type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; + } + else { + type.constraint = getTypeFromTypeNodeOrHeritageClauseElement(ts.getDeclarationOfKind(type.symbol, 128).constraint); + } + } + return type.constraint === noConstraintType ? undefined : type.constraint; + } + function getTypeListId(types) { + switch (types.length) { + case 1: + return "" + types[0].id; + case 2: + return types[0].id + "," + types[1].id; + default: + var result = ""; + for (var i = 0; i < types.length; i++) { + if (i > 0) { + result += ","; + } + result += types[i].id; + } + return result; + } + } + function getWideningFlagsOfTypes(types) { + var result = 0; + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + result |= type.flags; + } + return result & 786432; + } + function createTypeReference(target, typeArguments) { + var id = getTypeListId(typeArguments); + var type = target.instantiations[id]; + if (!type) { + var flags = 4096 | getWideningFlagsOfTypes(typeArguments); + type = target.instantiations[id] = createObjectType(flags, target.symbol); + type.target = target; + type.typeArguments = typeArguments; + } + return type; + } + function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode, typeParameterSymbol) { + var links = getNodeLinks(typeReferenceNode); + if (links.isIllegalTypeReferenceInConstraint !== undefined) { + return links.isIllegalTypeReferenceInConstraint; + } + var currentNode = typeReferenceNode; + while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { + currentNode = currentNode.parent; + } + links.isIllegalTypeReferenceInConstraint = currentNode.kind === 128; + return links.isIllegalTypeReferenceInConstraint; + } + function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { + var typeParameterSymbol; + function check(n) { + if (n.kind === 141 && n.typeName.kind === 65) { + var links = getNodeLinks(n); + if (links.isIllegalTypeReferenceInConstraint === undefined) { + var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); + if (symbol && (symbol.flags & 262144)) { + links.isIllegalTypeReferenceInConstraint = ts.forEach(symbol.declarations, function (d) { return d.parent == typeParameter.parent; }); + } + } + if (links.isIllegalTypeReferenceInConstraint) { + error(typeParameter, ts.Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); + } + } + ts.forEachChild(n, check); + } + if (typeParameter.constraint) { + typeParameterSymbol = getSymbolOfNode(typeParameter); + check(typeParameter.constraint); + } + } + function getTypeFromTypeReference(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromHeritageClauseElement(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromTypeReferenceOrHeritageClauseElement(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + var type; + if (node.kind !== 177 || ts.isSupportedHeritageClauseElement(node)) { + var typeNameOrExpression = node.kind === 141 + ? node.typeName + : node.expression; + var symbol = resolveEntityName(typeNameOrExpression, 793056); + if (symbol) { + if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { + type = unknownType; + } + else { + type = getDeclaredTypeOfSymbol(symbol); + if (type.flags & (1024 | 2048) && type.flags & 4096) { + var typeParameters = type.typeParameters; + if (node.typeArguments && node.typeArguments.length === typeParameters.length) { + type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement)); + } + else { + error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); + type = undefined; + } + } + else { + if (node.typeArguments) { + error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); + type = undefined; + } + } + } + } + } + links.resolvedType = type || unknownType; + } + return links.resolvedType; + } + function getTypeFromTypeQueryNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getWidenedType(checkExpressionOrQualifiedName(node.exprName)); + } + return links.resolvedType; + } + function getTypeOfGlobalSymbol(symbol, arity) { + function getTypeDeclaration(symbol) { + var declarations = symbol.declarations; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + switch (declaration.kind) { + case 201: + case 202: + case 204: + return declaration; + } + } + } + if (!symbol) { + return emptyObjectType; + } + var type = getDeclaredTypeOfSymbol(symbol); + if (!(type.flags & 48128)) { + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, symbol.name); + return emptyObjectType; + } + if ((type.typeParameters ? type.typeParameters.length : 0) !== arity) { + error(getTypeDeclaration(symbol), ts.Diagnostics.Global_type_0_must_have_1_type_parameter_s, symbol.name, arity); + return emptyObjectType; + } + return type; + } + function getGlobalValueSymbol(name) { + return getGlobalSymbol(name, 107455, ts.Diagnostics.Cannot_find_global_value_0); + } + function getGlobalTypeSymbol(name) { + return getGlobalSymbol(name, 793056, ts.Diagnostics.Cannot_find_global_type_0); + } + function getGlobalSymbol(name, meaning, diagnostic) { + return resolveName(undefined, name, meaning, diagnostic, name); + } + function getGlobalType(name, arity) { + if (arity === void 0) { arity = 0; } + return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); + } + function getGlobalESSymbolConstructorSymbol() { + return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); + } + function createArrayType(elementType) { + var arrayType = globalArrayType || getDeclaredTypeOfSymbol(globalArraySymbol); + return arrayType !== emptyObjectType ? createTypeReference(arrayType, [elementType]) : emptyObjectType; + } + function getTypeFromArrayTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement(node.elementType)); + } + return links.resolvedType; + } + function createTupleType(elementTypes) { + var id = getTypeListId(elementTypes); + var type = tupleTypes[id]; + if (!type) { + type = tupleTypes[id] = createObjectType(8192); + type.elementTypes = elementTypes; + } + return type; + } + function getTypeFromTupleTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement)); + } + return links.resolvedType; + } + function addTypeToSortedSet(sortedSet, type) { + if (type.flags & 16384) { + addTypesToSortedSet(sortedSet, type.types); + } + else { + var i = 0; + var id = type.id; + while (i < sortedSet.length && sortedSet[i].id < id) { + i++; + } + if (i === sortedSet.length || sortedSet[i].id !== id) { + sortedSet.splice(i, 0, type); + } + } + } + function addTypesToSortedSet(sortedTypes, types) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + addTypeToSortedSet(sortedTypes, type); + } + } + function isSubtypeOfAny(candidate, types) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && isTypeSubtypeOf(candidate, type)) { + return true; + } + } + return false; + } + function removeSubtypes(types) { + var i = types.length; + while (i > 0) { + i--; + if (isSubtypeOfAny(types[i], types)) { + types.splice(i, 1); + } + } + } + function containsAnyType(types) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (type.flags & 1) { + return true; + } + } + return false; + } + function removeAllButLast(types, typeToRemove) { + var i = types.length; + while (i > 0 && types.length > 1) { + i--; + if (types[i] === typeToRemove) { + types.splice(i, 1); + } + } + } + function getUnionType(types, noSubtypeReduction) { + if (types.length === 0) { + return emptyObjectType; + } + var sortedTypes = []; + addTypesToSortedSet(sortedTypes, types); + if (noSubtypeReduction) { + if (containsAnyType(sortedTypes)) { + return anyType; + } + removeAllButLast(sortedTypes, undefinedType); + removeAllButLast(sortedTypes, nullType); + } + else { + removeSubtypes(sortedTypes); + } + if (sortedTypes.length === 1) { + return sortedTypes[0]; + } + var id = getTypeListId(sortedTypes); + var type = unionTypes[id]; + if (!type) { + type = unionTypes[id] = createObjectType(16384 | getWideningFlagsOfTypes(sortedTypes)); + type.types = sortedTypes; + } + return type; + } + function getTypeFromUnionTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNodeOrHeritageClauseElement), true); + } + return links.resolvedType; + } + function getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = createObjectType(32768, node.symbol); + } + return links.resolvedType; + } + function getStringLiteralType(node) { + if (ts.hasProperty(stringLiteralTypes, node.text)) { + return stringLiteralTypes[node.text]; + } + var type = stringLiteralTypes[node.text] = createType(256); + type.text = ts.getTextOfNode(node); + return type; + } + function getTypeFromStringLiteral(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getStringLiteralType(node); + } + return links.resolvedType; + } + function getTypeFromTypeNodeOrHeritageClauseElement(node) { + switch (node.kind) { + case 112: + return anyType; + case 121: + return stringType; + case 119: + return numberType; + case 113: + return booleanType; + case 122: + return esSymbolType; + case 99: + return voidType; + case 8: + return getTypeFromStringLiteral(node); + case 141: + return getTypeFromTypeReference(node); + case 177: + return getTypeFromHeritageClauseElement(node); + case 144: + return getTypeFromTypeQueryNode(node); + case 146: + return getTypeFromArrayTypeNode(node); + case 147: + return getTypeFromTupleTypeNode(node); + case 148: + return getTypeFromUnionTypeNode(node); + case 149: + return getTypeFromTypeNodeOrHeritageClauseElement(node.type); + case 142: + case 143: + case 145: + return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); + case 65: + case 126: + var symbol = getSymbolInfo(node); + return symbol && getDeclaredTypeOfSymbol(symbol); + default: + return unknownType; + } + } + function instantiateList(items, mapper, instantiator) { + if (items && items.length) { + var result = []; + for (var _i = 0; _i < items.length; _i++) { + var v = items[_i]; + result.push(instantiator(v, mapper)); + } + return result; + } + return items; + } + function createUnaryTypeMapper(source, target) { + return function (t) { return t === source ? target : t; }; + } + function createBinaryTypeMapper(source1, target1, source2, target2) { + return function (t) { return t === source1 ? target1 : t === source2 ? target2 : t; }; + } + function createTypeMapper(sources, targets) { + switch (sources.length) { + case 1: return createUnaryTypeMapper(sources[0], targets[0]); + case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); + } + return function (t) { + for (var i = 0; i < sources.length; i++) { + if (t === sources[i]) { + return targets[i]; + } + } + return t; + }; + } + function createUnaryTypeEraser(source) { + return function (t) { return t === source ? anyType : t; }; + } + function createBinaryTypeEraser(source1, source2) { + return function (t) { return t === source1 || t === source2 ? anyType : t; }; + } + function createTypeEraser(sources) { + switch (sources.length) { + case 1: return createUnaryTypeEraser(sources[0]); + case 2: return createBinaryTypeEraser(sources[0], sources[1]); + } + return function (t) { + for (var _i = 0; _i < sources.length; _i++) { + var source = sources[_i]; + if (t === source) { + return anyType; + } + } + return t; + }; + } + function createInferenceMapper(context) { + return function (t) { + for (var i = 0; i < context.typeParameters.length; i++) { + if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; + return getInferredType(context, i); + } + } + return t; + }; + } + function identityMapper(type) { + return type; + } + function combineTypeMappers(mapper1, mapper2) { + return function (t) { return mapper2(mapper1(t)); }; + } + function instantiateTypeParameter(typeParameter, mapper) { + var result = createType(512); + result.symbol = typeParameter.symbol; + if (typeParameter.constraint) { + result.constraint = instantiateType(typeParameter.constraint, mapper); + } + else { + result.target = typeParameter; + result.mapper = mapper; + } + return result; + } + function instantiateSignature(signature, mapper, eraseTypeParameters) { + var freshTypeParameters; + if (signature.typeParameters && !eraseTypeParameters) { + freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); + } + var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), signature.resolvedReturnType ? instantiateType(signature.resolvedReturnType, mapper) : undefined, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + result.target = signature; + result.mapper = mapper; + return result; + } + function instantiateSymbol(symbol, mapper) { + if (symbol.flags & 16777216) { + var links = getSymbolLinks(symbol); + symbol = links.target; + mapper = combineTypeMappers(links.mapper, mapper); + } + var result = createSymbol(16777216 | 67108864 | symbol.flags, symbol.name); + result.declarations = symbol.declarations; + result.parent = symbol.parent; + result.target = symbol; + result.mapper = mapper; + if (symbol.valueDeclaration) { + result.valueDeclaration = symbol.valueDeclaration; + } + return result; + } + function instantiateAnonymousType(type, mapper) { + var result = createObjectType(32768, type.symbol); + result.properties = instantiateList(getPropertiesOfObjectType(type), mapper, instantiateSymbol); + result.members = createSymbolTable(result.properties); + result.callSignatures = instantiateList(getSignaturesOfType(type, 0), mapper, instantiateSignature); + result.constructSignatures = instantiateList(getSignaturesOfType(type, 1), mapper, instantiateSignature); + var stringIndexType = getIndexTypeOfType(type, 0); + var numberIndexType = getIndexTypeOfType(type, 1); + if (stringIndexType) + result.stringIndexType = instantiateType(stringIndexType, mapper); + if (numberIndexType) + result.numberIndexType = instantiateType(numberIndexType, mapper); + return result; + } + function instantiateType(type, mapper) { + if (mapper !== identityMapper) { + if (type.flags & 512) { + return mapper(type); + } + if (type.flags & 32768) { + return type.symbol && type.symbol.flags & (16 | 8192 | 2048 | 4096) ? + instantiateAnonymousType(type, mapper) : type; + } + if (type.flags & 4096) { + return createTypeReference(type.target, instantiateList(type.typeArguments, mapper, instantiateType)); + } + if (type.flags & 8192) { + return createTupleType(instantiateList(type.elementTypes, mapper, instantiateType)); + } + if (type.flags & 16384) { + return getUnionType(instantiateList(type.types, mapper, instantiateType), true); + } + } + return type; + } + function isContextSensitive(node) { + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + switch (node.kind) { + case 162: + case 163: + return isContextSensitiveFunctionLikeDeclaration(node); + case 154: + return ts.forEach(node.properties, isContextSensitive); + case 153: + return ts.forEach(node.elements, isContextSensitive); + case 170: + return isContextSensitive(node.whenTrue) || + isContextSensitive(node.whenFalse); + case 169: + return node.operatorToken.kind === 49 && + (isContextSensitive(node.left) || isContextSensitive(node.right)); + case 224: + return isContextSensitive(node.initializer); + case 134: + case 133: + return isContextSensitiveFunctionLikeDeclaration(node); + case 161: + return isContextSensitive(node.expression); + } + return false; + } + function isContextSensitiveFunctionLikeDeclaration(node) { + return !node.typeParameters && node.parameters.length && !ts.forEach(node.parameters, function (p) { return p.type; }); + } + function getTypeWithoutConstructors(type) { + if (type.flags & 48128) { + var resolved = resolveObjectOrUnionTypeMembers(type); + if (resolved.constructSignatures.length) { + var result = createObjectType(32768, type.symbol); + result.members = resolved.members; + result.properties = resolved.properties; + result.callSignatures = resolved.callSignatures; + result.constructSignatures = emptyArray; + type = result; + } + } + return type; + } + var subtypeRelation = {}; + var assignableRelation = {}; + var identityRelation = {}; + function isTypeIdenticalTo(source, target) { + return checkTypeRelatedTo(source, target, identityRelation, undefined); + } + function compareTypes(source, target) { + return checkTypeRelatedTo(source, target, identityRelation, undefined) ? -1 : 0; + } + function isTypeSubtypeOf(source, target) { + return checkTypeSubtypeOf(source, target, undefined); + } + function isTypeAssignableTo(source, target) { + return checkTypeAssignableTo(source, target, undefined); + } + function checkTypeSubtypeOf(source, target, errorNode, headMessage, containingMessageChain) { + return checkTypeRelatedTo(source, target, subtypeRelation, errorNode, headMessage, containingMessageChain); + } + function checkTypeAssignableTo(source, target, errorNode, headMessage) { + return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage); + } + function isSignatureAssignableTo(source, target) { + var sourceType = getOrCreateTypeFromSignature(source); + var targetType = getOrCreateTypeFromSignature(target); + return checkTypeRelatedTo(sourceType, targetType, assignableRelation, undefined); + } + function checkTypeRelatedTo(source, target, relation, errorNode, headMessage, containingMessageChain) { + var errorInfo; + var sourceStack; + var targetStack; + var maybeStack; + var expandingFlags; + var depth = 0; + var overflow = false; + var elaborateErrors = false; + ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking"); + var result = isRelatedTo(source, target, errorNode !== undefined, headMessage); + if (overflow) { + error(errorNode, ts.Diagnostics.Excessive_stack_depth_comparing_types_0_and_1, typeToString(source), typeToString(target)); + } + else if (errorInfo) { + if (errorInfo.next === undefined) { + errorInfo = undefined; + elaborateErrors = true; + isRelatedTo(source, target, errorNode !== undefined, headMessage); + } + if (containingMessageChain) { + errorInfo = ts.concatenateDiagnosticMessageChains(containingMessageChain, errorInfo); + } + diagnostics.add(ts.createDiagnosticForNodeFromMessageChain(errorNode, errorInfo)); + } + return result !== 0; + function reportError(message, arg0, arg1, arg2) { + errorInfo = ts.chainDiagnosticMessages(errorInfo, message, arg0, arg1, arg2); + } + function isRelatedTo(source, target, reportErrors, headMessage) { + var result; + if (source === target) + return -1; + if (relation !== identityRelation) { + if (target.flags & 1) + return -1; + if (source === undefinedType) + return -1; + if (source === nullType && target !== undefinedType) + return -1; + if (source.flags & 128 && target === numberType) + return -1; + if (source.flags & 256 && target === stringType) + return -1; + if (relation === assignableRelation) { + if (source.flags & 1) + return -1; + if (source === numberType && target.flags & 128) + return -1; + } + } + if (source.flags & 16384 || target.flags & 16384) { + if (relation === identityRelation) { + if (source.flags & 16384 && target.flags & 16384) { + if (result = unionTypeRelatedToUnionType(source, target)) { + if (result &= unionTypeRelatedToUnionType(target, source)) { + return result; + } + } + } + else if (source.flags & 16384) { + if (result = unionTypeRelatedToType(source, target, reportErrors)) { + return result; + } + } + else { + if (result = unionTypeRelatedToType(target, source, reportErrors)) { + return result; + } + } + } + else { + if (source.flags & 16384) { + if (result = unionTypeRelatedToType(source, target, reportErrors)) { + return result; + } + } + else { + if (result = typeRelatedToUnionType(source, target, reportErrors)) { + return result; + } + } + } + } + else if (source.flags & 512 && target.flags & 512) { + if (result = typeParameterRelatedTo(source, target, reportErrors)) { + return result; + } + } + else { + var saveErrorInfo = errorInfo; + if (source.flags & 4096 && target.flags & 4096 && source.target === target.target) { + if (result = typesRelatedTo(source.typeArguments, target.typeArguments, reportErrors)) { + return result; + } + } + var reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; + var sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); + if (sourceOrApparentType.flags & 48128 && target.flags & 48128 && + (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors))) { + errorInfo = saveErrorInfo; + return result; + } + } + if (reportErrors) { + headMessage = headMessage || ts.Diagnostics.Type_0_is_not_assignable_to_type_1; + var sourceType = typeToString(source); + var targetType = typeToString(target); + if (sourceType === targetType) { + sourceType = typeToString(source, undefined, 128); + targetType = typeToString(target, undefined, 128); + } + reportError(headMessage, sourceType, targetType); + } + return 0; + } + function unionTypeRelatedToUnionType(source, target) { + var result = -1; + var sourceTypes = source.types; + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = typeRelatedToUnionType(sourceType, target, false); + if (!related) { + return 0; + } + result &= related; + } + return result; + } + function typeRelatedToUnionType(source, target, reportErrors) { + var targetTypes = target.types; + for (var i = 0, len = targetTypes.length; i < len; i++) { + var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); + if (related) { + return related; + } + } + return 0; + } + function unionTypeRelatedToType(source, target, reportErrors) { + var result = -1; + var sourceTypes = source.types; + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = isRelatedTo(sourceType, target, reportErrors); + if (!related) { + return 0; + } + result &= related; + } + return result; + } + function typesRelatedTo(sources, targets, reportErrors) { + var result = -1; + for (var i = 0, len = sources.length; i < len; i++) { + var related = isRelatedTo(sources[i], targets[i], reportErrors); + if (!related) { + return 0; + } + result &= related; + } + return result; + } + function typeParameterRelatedTo(source, target, reportErrors) { + if (relation === identityRelation) { + if (source.symbol.name !== target.symbol.name) { + return 0; + } + if (source.constraint === target.constraint) { + return -1; + } + if (source.constraint === noConstraintType || target.constraint === noConstraintType) { + return 0; + } + return isRelatedTo(source.constraint, target.constraint, reportErrors); + } + else { + while (true) { + var constraint = getConstraintOfTypeParameter(source); + if (constraint === target) + return -1; + if (!(constraint && constraint.flags & 512)) + break; + source = constraint; + } + return 0; + } + } + function objectTypeRelatedTo(source, target, reportErrors) { + if (overflow) { + return 0; + } + var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; + var related = relation[id]; + if (related !== undefined) { + if (!elaborateErrors || (related === 3)) { + return related === 1 ? -1 : 0; + } + } + if (depth > 0) { + for (var i = 0; i < depth; i++) { + if (maybeStack[i][id]) { + return 1; + } + } + if (depth === 100) { + overflow = true; + return 0; + } + } + else { + sourceStack = []; + targetStack = []; + maybeStack = []; + expandingFlags = 0; + } + sourceStack[depth] = source; + targetStack[depth] = target; + maybeStack[depth] = {}; + maybeStack[depth][id] = 1; + depth++; + var saveExpandingFlags = expandingFlags; + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack)) + expandingFlags |= 1; + if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack)) + expandingFlags |= 2; + var result; + if (expandingFlags === 3) { + result = 1; + } + else { + result = propertiesRelatedTo(source, target, reportErrors); + if (result) { + result &= signaturesRelatedTo(source, target, 0, reportErrors); + if (result) { + result &= signaturesRelatedTo(source, target, 1, reportErrors); + if (result) { + result &= stringIndexTypesRelatedTo(source, target, reportErrors); + if (result) { + result &= numberIndexTypesRelatedTo(source, target, reportErrors); + } + } + } + } + } + expandingFlags = saveExpandingFlags; + depth--; + if (result) { + var maybeCache = maybeStack[depth]; + var destinationCache = (result === -1 || depth === 0) ? relation : maybeStack[depth - 1]; + ts.copyMap(maybeCache, destinationCache); + } + else { + relation[id] = reportErrors ? 3 : 2; + } + return result; + } + function isDeeplyNestedGeneric(type, stack) { + if (type.flags & 4096 && depth >= 10) { + var target_1 = type.target; + var count = 0; + for (var i = 0; i < depth; i++) { + var t = stack[i]; + if (t.flags & 4096 && t.target === target_1) { + count++; + if (count >= 10) + return true; + } + } + } + return false; + } + function propertiesRelatedTo(source, target, reportErrors) { + if (relation === identityRelation) { + return propertiesIdenticalTo(source, target); + } + var result = -1; + var properties = getPropertiesOfObjectType(target); + var requireOptionalProperties = relation === subtypeRelation && !(source.flags & 131072); + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; + var sourceProp = getPropertyOfType(source, targetProp.name); + if (sourceProp !== targetProp) { + if (!sourceProp) { + if (!(targetProp.flags & 536870912) || requireOptionalProperties) { + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, symbolToString(targetProp), typeToString(source)); + } + return 0; + } + } + else if (!(targetProp.flags & 134217728)) { + var sourceFlags = getDeclarationFlagsFromSymbol(sourceProp); + var targetFlags = getDeclarationFlagsFromSymbol(targetProp); + if (sourceFlags & 32 || targetFlags & 32) { + if (sourceProp.valueDeclaration !== targetProp.valueDeclaration) { + if (reportErrors) { + if (sourceFlags & 32 && targetFlags & 32) { + reportError(ts.Diagnostics.Types_have_separate_declarations_of_a_private_property_0, symbolToString(targetProp)); + } + else { + reportError(ts.Diagnostics.Property_0_is_private_in_type_1_but_not_in_type_2, symbolToString(targetProp), typeToString(sourceFlags & 32 ? source : target), typeToString(sourceFlags & 32 ? target : source)); + } + } + return 0; + } + } + else if (targetFlags & 64) { + var sourceDeclaredInClass = sourceProp.parent && sourceProp.parent.flags & 32; + var sourceClass = sourceDeclaredInClass ? getDeclaredTypeOfSymbol(sourceProp.parent) : undefined; + var targetClass = getDeclaredTypeOfSymbol(targetProp.parent); + if (!sourceClass || !hasBaseType(sourceClass, targetClass)) { + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2, symbolToString(targetProp), typeToString(sourceClass || source), typeToString(targetClass)); + } + return 0; + } + } + else if (sourceFlags & 64) { + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_protected_in_type_1_but_public_in_type_2, symbolToString(targetProp), typeToString(source), typeToString(target)); + } + return 0; + } + var related = isRelatedTo(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp), reportErrors); + if (!related) { + if (reportErrors) { + reportError(ts.Diagnostics.Types_of_property_0_are_incompatible, symbolToString(targetProp)); + } + return 0; + } + result &= related; + if (sourceProp.flags & 536870912 && !(targetProp.flags & 536870912)) { + if (reportErrors) { + reportError(ts.Diagnostics.Property_0_is_optional_in_type_1_but_required_in_type_2, symbolToString(targetProp), typeToString(source), typeToString(target)); + } + return 0; + } + } + } + } + return result; + } + function propertiesIdenticalTo(source, target) { + var sourceProperties = getPropertiesOfObjectType(source); + var targetProperties = getPropertiesOfObjectType(target); + if (sourceProperties.length !== targetProperties.length) { + return 0; + } + var result = -1; + for (var _i = 0; _i < sourceProperties.length; _i++) { + var sourceProp = sourceProperties[_i]; + var targetProp = getPropertyOfObjectType(target, sourceProp.name); + if (!targetProp) { + return 0; + } + var related = compareProperties(sourceProp, targetProp, isRelatedTo); + if (!related) { + return 0; + } + result &= related; + } + return result; + } + function signaturesRelatedTo(source, target, kind, reportErrors) { + if (relation === identityRelation) { + return signaturesIdenticalTo(source, target, kind); + } + if (target === anyFunctionType || source === anyFunctionType) { + return -1; + } + var sourceSignatures = getSignaturesOfType(source, kind); + var targetSignatures = getSignaturesOfType(target, kind); + var result = -1; + var saveErrorInfo = errorInfo; + outer: for (var _i = 0; _i < targetSignatures.length; _i++) { + var t = targetSignatures[_i]; + if (!t.hasStringLiterals || target.flags & 65536) { + var localErrors = reportErrors; + for (var _a = 0; _a < sourceSignatures.length; _a++) { + var s = sourceSignatures[_a]; + if (!s.hasStringLiterals || source.flags & 65536) { + var related = signatureRelatedTo(s, t, localErrors); + if (related) { + result &= related; + errorInfo = saveErrorInfo; + continue outer; + } + localErrors = false; + } + } + return 0; + } + } + return result; + } + function signatureRelatedTo(source, target, reportErrors) { + if (source === target) { + return -1; + } + if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { + return 0; + } + var sourceMax = source.parameters.length; + var targetMax = target.parameters.length; + var checkCount; + if (source.hasRestParameter && target.hasRestParameter) { + checkCount = sourceMax > targetMax ? sourceMax : targetMax; + sourceMax--; + targetMax--; + } + else if (source.hasRestParameter) { + sourceMax--; + checkCount = targetMax; + } + else if (target.hasRestParameter) { + targetMax--; + checkCount = sourceMax; + } + else { + checkCount = sourceMax < targetMax ? sourceMax : targetMax; + } + source = getErasedSignature(source); + target = getErasedSignature(target); + var result = -1; + for (var i = 0; i < checkCount; i++) { + var s_1 = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t_1 = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var saveErrorInfo = errorInfo; + var related = isRelatedTo(s_1, t_1, reportErrors); + if (!related) { + related = isRelatedTo(t_1, s_1, false); + if (!related) { + if (reportErrors) { + reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); + } + return 0; + } + errorInfo = saveErrorInfo; + } + result &= related; + } + var t = getReturnTypeOfSignature(target); + if (t === voidType) + return result; + var s = getReturnTypeOfSignature(source); + return result & isRelatedTo(s, t, reportErrors); + } + function signaturesIdenticalTo(source, target, kind) { + var sourceSignatures = getSignaturesOfType(source, kind); + var targetSignatures = getSignaturesOfType(target, kind); + if (sourceSignatures.length !== targetSignatures.length) { + return 0; + } + var result = -1; + for (var i = 0, len = sourceSignatures.length; i < len; ++i) { + var related = compareSignatures(sourceSignatures[i], targetSignatures[i], true, isRelatedTo); + if (!related) { + return 0; + } + result &= related; + } + return result; + } + function stringIndexTypesRelatedTo(source, target, reportErrors) { + if (relation === identityRelation) { + return indexTypesIdenticalTo(0, source, target); + } + var targetType = getIndexTypeOfType(target, 0); + if (targetType) { + var sourceType = getIndexTypeOfType(source, 0); + if (!sourceType) { + if (reportErrors) { + reportError(ts.Diagnostics.Index_signature_is_missing_in_type_0, typeToString(source)); + } + return 0; + } + var related = isRelatedTo(sourceType, targetType, reportErrors); + if (!related) { + if (reportErrors) { + reportError(ts.Diagnostics.Index_signatures_are_incompatible); + } + return 0; + } + return related; + } + return -1; + } + function numberIndexTypesRelatedTo(source, target, reportErrors) { + if (relation === identityRelation) { + return indexTypesIdenticalTo(1, source, target); + } + var targetType = getIndexTypeOfType(target, 1); + if (targetType) { + var sourceStringType = getIndexTypeOfType(source, 0); + var sourceNumberType = getIndexTypeOfType(source, 1); + if (!(sourceStringType || sourceNumberType)) { + if (reportErrors) { + reportError(ts.Diagnostics.Index_signature_is_missing_in_type_0, typeToString(source)); + } + return 0; + } + var related; + if (sourceStringType && sourceNumberType) { + related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + } + else { + related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); + } + if (!related) { + if (reportErrors) { + reportError(ts.Diagnostics.Index_signatures_are_incompatible); + } + return 0; + } + return related; + } + return -1; + } + function indexTypesIdenticalTo(indexKind, source, target) { + var targetType = getIndexTypeOfType(target, indexKind); + var sourceType = getIndexTypeOfType(source, indexKind); + if (!sourceType && !targetType) { + return -1; + } + if (sourceType && targetType) { + return isRelatedTo(sourceType, targetType); + } + return 0; + } + } + function isPropertyIdenticalTo(sourceProp, targetProp) { + return compareProperties(sourceProp, targetProp, compareTypes) !== 0; + } + function compareProperties(sourceProp, targetProp, compareTypes) { + if (sourceProp === targetProp) { + return -1; + } + var sourcePropAccessibility = getDeclarationFlagsFromSymbol(sourceProp) & (32 | 64); + var targetPropAccessibility = getDeclarationFlagsFromSymbol(targetProp) & (32 | 64); + if (sourcePropAccessibility !== targetPropAccessibility) { + return 0; + } + if (sourcePropAccessibility) { + if (getTargetSymbol(sourceProp) !== getTargetSymbol(targetProp)) { + return 0; + } + } + else { + if ((sourceProp.flags & 536870912) !== (targetProp.flags & 536870912)) { + return 0; + } + } + return compareTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); + } + function compareSignatures(source, target, compareReturnTypes, compareTypes) { + if (source === target) { + return -1; + } + if (source.parameters.length !== target.parameters.length || + source.minArgumentCount !== target.minArgumentCount || + source.hasRestParameter !== target.hasRestParameter) { + return 0; + } + var result = -1; + if (source.typeParameters && target.typeParameters) { + if (source.typeParameters.length !== target.typeParameters.length) { + return 0; + } + for (var i = 0, len = source.typeParameters.length; i < len; ++i) { + var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); + if (!related) { + return 0; + } + result &= related; + } + } + else if (source.typeParameters || target.typeParameters) { + return 0; + } + source = getErasedSignature(source); + target = getErasedSignature(target); + for (var i = 0, len = source.parameters.length; i < len; i++) { + var s = source.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); + var t = target.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + var related = compareTypes(s, t); + if (!related) { + return 0; + } + result &= related; + } + if (compareReturnTypes) { + result &= compareTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); + } + return result; + } + function isSupertypeOfEach(candidate, types) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && !isTypeSubtypeOf(type, candidate)) + return false; + } + return true; + } + function getCommonSupertype(types) { + return ts.forEach(types, function (t) { return isSupertypeOfEach(t, types) ? t : undefined; }); + } + function reportNoCommonSupertypeError(types, errorLocation, errorMessageChainHead) { + var bestSupertype; + var bestSupertypeDownfallType; + var bestSupertypeScore = 0; + for (var i = 0; i < types.length; i++) { + var score = 0; + var downfallType = undefined; + for (var j = 0; j < types.length; j++) { + if (isTypeSubtypeOf(types[j], types[i])) { + score++; + } + else if (!downfallType) { + downfallType = types[j]; + } + } + ts.Debug.assert(!!downfallType, "If there is no common supertype, each type should have a downfallType"); + if (score > bestSupertypeScore) { + bestSupertype = types[i]; + bestSupertypeDownfallType = downfallType; + bestSupertypeScore = score; + } + if (bestSupertypeScore === types.length - 1) { + break; + } + } + checkTypeSubtypeOf(bestSupertypeDownfallType, bestSupertype, errorLocation, ts.Diagnostics.Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0, errorMessageChainHead); + } + function isArrayType(type) { + return type.flags & 4096 && type.target === globalArrayType; + } + function isArrayLikeType(type) { + return !(type.flags & (32 | 64)) && isTypeAssignableTo(type, anyArrayType); + } + function isTupleLikeType(type) { + return !!getPropertyOfType(type, "0"); + } + function isTupleType(type) { + return (type.flags & 8192) && !!type.elementTypes; + } + function getWidenedTypeOfObjectLiteral(type) { + var properties = getPropertiesOfObjectType(type); + var members = {}; + ts.forEach(properties, function (p) { + var propType = getTypeOfSymbol(p); + var widenedType = getWidenedType(propType); + if (propType !== widenedType) { + var symbol = createSymbol(p.flags | 67108864, p.name); + symbol.declarations = p.declarations; + symbol.parent = p.parent; + symbol.type = widenedType; + symbol.target = p; + if (p.valueDeclaration) + symbol.valueDeclaration = p.valueDeclaration; + p = symbol; + } + members[p.name] = p; + }); + var stringIndexType = getIndexTypeOfType(type, 0); + var numberIndexType = getIndexTypeOfType(type, 1); + if (stringIndexType) + stringIndexType = getWidenedType(stringIndexType); + if (numberIndexType) + numberIndexType = getWidenedType(numberIndexType); + return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); + } + function getWidenedType(type) { + if (type.flags & 786432) { + if (type.flags & (32 | 64)) { + return anyType; + } + if (type.flags & 131072) { + return getWidenedTypeOfObjectLiteral(type); + } + if (type.flags & 16384) { + return getUnionType(ts.map(type.types, getWidenedType)); + } + if (isArrayType(type)) { + return createArrayType(getWidenedType(type.typeArguments[0])); + } + } + return type; + } + function reportWideningErrorsInType(type) { + if (type.flags & 16384) { + var errorReported = false; + ts.forEach(type.types, function (t) { + if (reportWideningErrorsInType(t)) { + errorReported = true; + } + }); + return errorReported; + } + if (isArrayType(type)) { + return reportWideningErrorsInType(type.typeArguments[0]); + } + if (type.flags & 131072) { + var errorReported = false; + ts.forEach(getPropertiesOfObjectType(type), function (p) { + var t = getTypeOfSymbol(p); + if (t.flags & 262144) { + if (!reportWideningErrorsInType(t)) { + error(p.valueDeclaration, ts.Diagnostics.Object_literal_s_property_0_implicitly_has_an_1_type, p.name, typeToString(getWidenedType(t))); + } + errorReported = true; + } + }); + return errorReported; + } + return false; + } + function reportImplicitAnyError(declaration, type) { + var typeAsString = typeToString(getWidenedType(type)); + var diagnostic; + switch (declaration.kind) { + case 132: + case 131: + diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; + break; + case 129: + diagnostic = declaration.dotDotDotToken ? + ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : + ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; + break; + case 200: + case 134: + case 133: + case 136: + case 137: + case 162: + case 163: + if (!declaration.name) { + error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); + return; + } + diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; + break; + default: + diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; + } + error(declaration, diagnostic, ts.declarationNameToString(declaration.name), typeAsString); + } + function reportErrorsFromWidening(declaration, type) { + if (produceDiagnostics && compilerOptions.noImplicitAny && type.flags & 262144) { + if (!reportWideningErrorsInType(type)) { + reportImplicitAnyError(declaration, type); + } + } + } + function forEachMatchingParameterType(source, target, callback) { + var sourceMax = source.parameters.length; + var targetMax = target.parameters.length; + var count; + if (source.hasRestParameter && target.hasRestParameter) { + count = sourceMax > targetMax ? sourceMax : targetMax; + sourceMax--; + targetMax--; + } + else if (source.hasRestParameter) { + sourceMax--; + count = targetMax; + } + else if (target.hasRestParameter) { + targetMax--; + count = sourceMax; + } + else { + count = sourceMax < targetMax ? sourceMax : targetMax; + } + for (var i = 0; i < count; i++) { + var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + callback(s, t); + } + } + function createInferenceContext(typeParameters, inferUnionTypes) { + var inferences = []; + for (var _i = 0; _i < typeParameters.length; _i++) { + var unused = typeParameters[_i]; + inferences.push({ primary: undefined, secondary: undefined, isFixed: false }); + } + return { + typeParameters: typeParameters, + inferUnionTypes: inferUnionTypes, + inferences: inferences, + inferredTypes: new Array(typeParameters.length) + }; + } + function inferTypes(context, source, target) { + var sourceStack; + var targetStack; + var depth = 0; + var inferiority = 0; + inferFromTypes(source, target); + function isInProcess(source, target) { + for (var i = 0; i < depth; i++) { + if (source === sourceStack[i] && target === targetStack[i]) { + return true; + } + } + return false; + } + function isWithinDepthLimit(type, stack) { + if (depth >= 5) { + var target_2 = type.target; + var count = 0; + for (var i = 0; i < depth; i++) { + var t = stack[i]; + if (t.flags & 4096 && t.target === target_2) { + count++; + } + } + return count < 5; + } + return true; + } + function inferFromTypes(source, target) { + if (source === anyFunctionType) { + return; + } + if (target.flags & 512) { + var typeParameters = context.typeParameters; + for (var i = 0; i < typeParameters.length; i++) { + if (target === typeParameters[i]) { + var inferences = context.inferences[i]; + if (!inferences.isFixed) { + var candidates = inferiority ? + inferences.secondary || (inferences.secondary = []) : + inferences.primary || (inferences.primary = []); + if (!ts.contains(candidates, source)) { + candidates.push(source); + } + } + return; + } + } + } + else if (source.flags & 4096 && target.flags & 4096 && source.target === target.target) { + var sourceTypes = source.typeArguments; + var targetTypes = target.typeArguments; + for (var i = 0; i < sourceTypes.length; i++) { + inferFromTypes(sourceTypes[i], targetTypes[i]); + } + } + else if (target.flags & 16384) { + var targetTypes = target.types; + var typeParameterCount = 0; + var typeParameter; + for (var _i = 0; _i < targetTypes.length; _i++) { + var t = targetTypes[_i]; + if (t.flags & 512 && ts.contains(context.typeParameters, t)) { + typeParameter = t; + typeParameterCount++; + } + else { + inferFromTypes(source, t); + } + } + if (typeParameterCount === 1) { + inferiority++; + inferFromTypes(source, typeParameter); + inferiority--; + } + } + else if (source.flags & 16384) { + var sourceTypes = source.types; + for (var _a = 0; _a < sourceTypes.length; _a++) { + var sourceType = sourceTypes[_a]; + inferFromTypes(sourceType, target); + } + } + else if (source.flags & 48128 && (target.flags & (4096 | 8192) || + (target.flags & 32768) && target.symbol && target.symbol.flags & (8192 | 2048))) { + if (!isInProcess(source, target) && isWithinDepthLimit(source, sourceStack) && isWithinDepthLimit(target, targetStack)) { + if (depth === 0) { + sourceStack = []; + targetStack = []; + } + sourceStack[depth] = source; + targetStack[depth] = target; + depth++; + inferFromProperties(source, target); + inferFromSignatures(source, target, 0); + inferFromSignatures(source, target, 1); + inferFromIndexTypes(source, target, 0, 0); + inferFromIndexTypes(source, target, 1, 1); + inferFromIndexTypes(source, target, 0, 1); + depth--; + } + } + } + function inferFromProperties(source, target) { + var properties = getPropertiesOfObjectType(target); + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; + var sourceProp = getPropertyOfObjectType(source, targetProp.name); + if (sourceProp) { + inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); + } + } + } + function inferFromSignatures(source, target, kind) { + var sourceSignatures = getSignaturesOfType(source, kind); + var targetSignatures = getSignaturesOfType(target, kind); + var sourceLen = sourceSignatures.length; + var targetLen = targetSignatures.length; + var len = sourceLen < targetLen ? sourceLen : targetLen; + for (var i = 0; i < len; i++) { + inferFromSignature(getErasedSignature(sourceSignatures[sourceLen - len + i]), getErasedSignature(targetSignatures[targetLen - len + i])); + } + } + function inferFromSignature(source, target) { + forEachMatchingParameterType(source, target, inferFromTypes); + inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); + } + function inferFromIndexTypes(source, target, sourceKind, targetKind) { + var targetIndexType = getIndexTypeOfType(target, targetKind); + if (targetIndexType) { + var sourceIndexType = getIndexTypeOfType(source, sourceKind); + if (sourceIndexType) { + inferFromTypes(sourceIndexType, targetIndexType); + } + } + } + } + function getInferenceCandidates(context, index) { + var inferences = context.inferences[index]; + return inferences.primary || inferences.secondary || emptyArray; + } + function getInferredType(context, index) { + var inferredType = context.inferredTypes[index]; + var inferenceSucceeded; + if (!inferredType) { + var inferences = getInferenceCandidates(context, index); + if (inferences.length) { + var unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); + inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : unknownType; + inferenceSucceeded = !!unionOrSuperType; + } + else { + inferredType = emptyObjectType; + inferenceSucceeded = true; + } + if (inferenceSucceeded) { + var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); + inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + } + else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { + context.failedTypeParameterIndex = index; + } + context.inferredTypes[index] = inferredType; + } + return inferredType; + } + function getInferredTypes(context) { + for (var i = 0; i < context.inferredTypes.length; i++) { + getInferredType(context, i); + } + return context.inferredTypes; + } + function hasAncestor(node, kind) { + return ts.getAncestor(node, kind) !== undefined; + } + function getResolvedSymbol(node) { + var links = getNodeLinks(node); + if (!links.resolvedSymbol) { + links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + } + return links.resolvedSymbol; + } + function isInTypeQuery(node) { + while (node) { + switch (node.kind) { + case 144: + return true; + case 65: + case 126: + node = node.parent; + continue; + default: + return false; + } + } + ts.Debug.fail("should not get here"); + } + function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { + if (type.flags & 16384) { + var types = type.types; + if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { + var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); + if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { + return narrowedType; + } + } + } + else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { + return getUnionType(emptyArray); + } + return type; + } + function hasInitializer(node) { + return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); + } + function isVariableAssignedWithin(symbol, node) { + var links = getNodeLinks(node); + if (links.assignmentChecks) { + var cachedResult = links.assignmentChecks[symbol.id]; + if (cachedResult !== undefined) { + return cachedResult; + } + } + else { + links.assignmentChecks = {}; + } + return links.assignmentChecks[symbol.id] = isAssignedIn(node); + function isAssignedInBinaryExpression(node) { + if (node.operatorToken.kind >= 53 && node.operatorToken.kind <= 64) { + var n = node.left; + while (n.kind === 161) { + n = n.expression; + } + if (n.kind === 65 && getResolvedSymbol(n) === symbol) { + return true; + } + } + return ts.forEachChild(node, isAssignedIn); + } + function isAssignedInVariableDeclaration(node) { + if (!ts.isBindingPattern(node.name) && getSymbolOfNode(node) === symbol && hasInitializer(node)) { + return true; + } + return ts.forEachChild(node, isAssignedIn); + } + function isAssignedIn(node) { + switch (node.kind) { + case 169: + return isAssignedInBinaryExpression(node); + case 198: + case 152: + return isAssignedInVariableDeclaration(node); + case 150: + case 151: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 160: + case 161: + case 167: + case 164: + case 165: + case 166: + case 168: + case 170: + case 173: + case 179: + case 180: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 191: + case 192: + case 193: + case 220: + case 221: + case 194: + case 195: + case 196: + case 223: + return ts.forEachChild(node, isAssignedIn); + } + return false; + } + } + function resolveLocation(node) { + var containerNodes = []; + for (var parent_3 = node.parent; parent_3; parent_3 = parent_3.parent) { + if ((ts.isExpression(parent_3) || ts.isObjectLiteralMethod(node)) && + isContextSensitive(parent_3)) { + containerNodes.unshift(parent_3); + } + } + ts.forEach(containerNodes, function (node) { getTypeOfNode(node); }); + } + function getSymbolAtLocation(node) { + resolveLocation(node); + return getSymbolInfo(node); + } + function getTypeAtLocation(node) { + resolveLocation(node); + return getTypeOfNode(node); + } + function getTypeOfSymbolAtLocation(symbol, node) { + resolveLocation(node); + return getNarrowedTypeOfSymbol(symbol, node); + } + function getNarrowedTypeOfSymbol(symbol, node) { + var type = getTypeOfSymbol(symbol); + if (node && symbol.flags & 3 && type.flags & (1 | 48128 | 16384 | 512)) { + loop: while (node.parent) { + var child = node; + node = node.parent; + var narrowedType = type; + switch (node.kind) { + case 183: + if (child !== node.expression) { + narrowedType = narrowType(type, node.expression, child === node.thenStatement); + } + break; + case 170: + if (child !== node.condition) { + narrowedType = narrowType(type, node.condition, child === node.whenTrue); + } + break; + case 169: + if (child === node.right) { + if (node.operatorToken.kind === 48) { + narrowedType = narrowType(type, node.left, true); + } + else if (node.operatorToken.kind === 49) { + narrowedType = narrowType(type, node.left, false); + } + } + break; + case 227: + case 205: + case 200: + case 134: + case 133: + case 136: + case 137: + case 135: + break loop; + } + if (narrowedType !== type) { + if (isVariableAssignedWithin(symbol, node)) { + break; + } + type = narrowedType; + } + } + } + return type; + function narrowTypeByEquality(type, expr, assumeTrue) { + if (expr.left.kind !== 165 || expr.right.kind !== 8) { + return type; + } + var left = expr.left; + var right = expr.right; + if (left.expression.kind !== 65 || getResolvedSymbol(left.expression) !== symbol) { + return type; + } + var typeInfo = primitiveTypeInfo[right.text]; + if (expr.operatorToken.kind === 31) { + assumeTrue = !assumeTrue; + } + if (assumeTrue) { + if (!typeInfo) { + return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true, false); + } + if (isTypeSubtypeOf(typeInfo.type, type)) { + return typeInfo.type; + } + return removeTypesFromUnionType(type, typeInfo.flags, false, false); + } + else { + if (typeInfo) { + return removeTypesFromUnionType(type, typeInfo.flags, true, false); + } + return type; + } + } + function narrowTypeByAnd(type, expr, assumeTrue) { + if (assumeTrue) { + return narrowType(narrowType(type, expr.left, true), expr.right, true); + } + else { + return getUnionType([ + narrowType(type, expr.left, false), + narrowType(narrowType(type, expr.left, true), expr.right, false) + ]); + } + } + function narrowTypeByOr(type, expr, assumeTrue) { + if (assumeTrue) { + return getUnionType([ + narrowType(type, expr.left, true), + narrowType(narrowType(type, expr.left, false), expr.right, true) + ]); + } + else { + return narrowType(narrowType(type, expr.left, false), expr.right, false); + } + } + function narrowTypeByInstanceof(type, expr, assumeTrue) { + if (type.flags & 1 || !assumeTrue || expr.left.kind !== 65 || getResolvedSymbol(expr.left) !== symbol) { + return type; + } + var rightType = checkExpression(expr.right); + if (!isTypeSubtypeOf(rightType, globalFunctionType)) { + return type; + } + var prototypeProperty = getPropertyOfType(rightType, "prototype"); + if (!prototypeProperty) { + return type; + } + var targetType = getTypeOfSymbol(prototypeProperty); + if (isTypeSubtypeOf(targetType, type)) { + return targetType; + } + if (type.flags & 16384) { + return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); })); + } + return type; + } + function narrowType(type, expr, assumeTrue) { + switch (expr.kind) { + case 161: + return narrowType(type, expr.expression, assumeTrue); + case 169: + var operator = expr.operatorToken.kind; + if (operator === 30 || operator === 31) { + return narrowTypeByEquality(type, expr, assumeTrue); + } + else if (operator === 48) { + return narrowTypeByAnd(type, expr, assumeTrue); + } + else if (operator === 49) { + return narrowTypeByOr(type, expr, assumeTrue); + } + else if (operator === 87) { + return narrowTypeByInstanceof(type, expr, assumeTrue); + } + break; + case 167: + if (expr.operator === 46) { + return narrowType(type, expr.operand, !assumeTrue); + } + break; + } + return type; + } + } + function checkIdentifier(node) { + var symbol = getResolvedSymbol(node); + if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 163) { + error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression); + } + if (symbol.flags & 8388608 && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); + } + checkCollisionWithCapturedSuperVariable(node, node); + checkCollisionWithCapturedThisVariable(node, node); + checkBlockScopedBindingCapturedInLoop(node, symbol); + return getNarrowedTypeOfSymbol(getExportSymbolOfValueSymbolIfExported(symbol), node); + } + function isInsideFunction(node, threshold) { + var current = node; + while (current && current !== threshold) { + if (ts.isFunctionLike(current)) { + return true; + } + current = current.parent; + } + return false; + } + function checkBlockScopedBindingCapturedInLoop(node, symbol) { + if (languageVersion >= 2 || + (symbol.flags & 2) === 0 || + symbol.valueDeclaration.parent.kind === 223) { + return; + } + var container = symbol.valueDeclaration; + while (container.kind !== 199) { + container = container.parent; + } + container = container.parent; + if (container.kind === 180) { + container = container.parent; + } + var inFunction = isInsideFunction(node.parent, container); + var current = container; + while (current && !ts.nodeStartsNewLexicalEnvironment(current)) { + if (isIterationStatement(current, false)) { + if (inFunction) { + grammarErrorOnFirstToken(current, ts.Diagnostics.Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher, ts.declarationNameToString(node)); + } + getNodeLinks(symbol.valueDeclaration).flags |= 256; + break; + } + current = current.parent; + } + } + function captureLexicalThis(node, container) { + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; + getNodeLinks(node).flags |= 2; + if (container.kind === 132 || container.kind === 135) { + getNodeLinks(classNode).flags |= 4; + } + else { + getNodeLinks(container).flags |= 4; + } + } + function checkThisExpression(node) { + var container = ts.getThisContainer(node, true); + var needToCaptureLexicalThis = false; + if (container.kind === 163) { + container = ts.getThisContainer(container, false); + needToCaptureLexicalThis = (languageVersion < 2); + } + switch (container.kind) { + case 205: + error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_body); + break; + case 204: + error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); + break; + case 135: + if (isInConstructorArgumentInitializer(node, container)) { + error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); + } + break; + case 132: + case 131: + if (container.flags & 128) { + error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); + } + break; + case 127: + error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); + break; + } + if (needToCaptureLexicalThis) { + captureLexicalThis(node, container); + } + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; + if (classNode) { + var symbol = getSymbolOfNode(classNode); + return container.flags & 128 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); + } + return anyType; + } + function isInConstructorArgumentInitializer(node, constructorDecl) { + for (var n = node; n && n !== constructorDecl; n = n.parent) { + if (n.kind === 129) { + return true; + } + } + return false; + } + function checkSuperExpression(node) { + var isCallExpression = node.parent.kind === 157 && node.parent.expression === node; + var enclosingClass = ts.getAncestor(node, 201); + var baseClass; + if (enclosingClass && ts.getClassExtendsHeritageClauseElement(enclosingClass)) { + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); + baseClass = classType.baseTypes.length && classType.baseTypes[0]; + } + if (!baseClass) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); + return unknownType; + } + var container = ts.getSuperContainer(node, true); + if (container) { + var canUseSuperExpression = false; + var needToCaptureLexicalThis; + if (isCallExpression) { + canUseSuperExpression = container.kind === 135; + } + else { + needToCaptureLexicalThis = false; + while (container && container.kind === 163) { + container = ts.getSuperContainer(container, true); + needToCaptureLexicalThis = true; + } + if (container && container.parent && container.parent.kind === 201) { + if (container.flags & 128) { + canUseSuperExpression = + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137; + } + else { + canUseSuperExpression = + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137 || + container.kind === 132 || + container.kind === 131 || + container.kind === 135; + } + } + } + if (canUseSuperExpression) { + var returnType; + if ((container.flags & 128) || isCallExpression) { + getNodeLinks(node).flags |= 32; + returnType = getTypeOfSymbol(baseClass.symbol); + } + else { + getNodeLinks(node).flags |= 16; + returnType = baseClass; + } + if (container.kind === 135 && isInConstructorArgumentInitializer(node, container)) { + error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); + returnType = unknownType; + } + if (!isCallExpression && needToCaptureLexicalThis) { + captureLexicalThis(node.parent, container); + } + return returnType; + } + } + if (container.kind === 127) { + error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); + } + else if (isCallExpression) { + error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); + } + else { + error(node, ts.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); + } + return unknownType; + } + function getContextuallyTypedParameterType(parameter) { + if (isFunctionExpressionOrArrowFunction(parameter.parent)) { + var func = parameter.parent; + if (isContextSensitive(func)) { + var contextualSignature = getContextualSignature(func); + if (contextualSignature) { + var funcHasRestParameters = ts.hasRestParameters(func); + var len = func.parameters.length - (funcHasRestParameters ? 1 : 0); + var indexOfParameter = ts.indexOf(func.parameters, parameter); + if (indexOfParameter < len) { + return getTypeAtPosition(contextualSignature, indexOfParameter); + } + if (indexOfParameter === (func.parameters.length - 1) && + funcHasRestParameters && contextualSignature.hasRestParameter && func.parameters.length >= contextualSignature.parameters.length) { + return getTypeOfSymbol(contextualSignature.parameters[contextualSignature.parameters.length - 1]); + } + } + } + } + return undefined; + } + function getContextualTypeForInitializerExpression(node) { + var declaration = node.parent; + if (node === declaration.initializer) { + if (declaration.type) { + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); + } + if (declaration.kind === 129) { + var type = getContextuallyTypedParameterType(declaration); + if (type) { + return type; + } + } + if (ts.isBindingPattern(declaration.name)) { + return getTypeFromBindingPattern(declaration.name); + } + } + return undefined; + } + function getContextualTypeForReturnExpression(node) { + var func = ts.getContainingFunction(node); + if (func) { + if (func.type || func.kind === 135 || func.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 137))) { + return getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + } + var signature = getContextualSignatureForFunctionLikeDeclaration(func); + if (signature) { + return getReturnTypeOfSignature(signature); + } + } + return undefined; + } + function getContextualTypeForArgument(callTarget, arg) { + var args = getEffectiveCallArguments(callTarget); + var argIndex = ts.indexOf(args, arg); + if (argIndex >= 0) { + var signature = getResolvedSignature(callTarget); + return getTypeAtPosition(signature, argIndex); + } + return undefined; + } + function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { + if (template.parent.kind === 159) { + return getContextualTypeForArgument(template.parent, substitutionExpression); + } + return undefined; + } + function getContextualTypeForBinaryOperand(node) { + var binaryExpression = node.parent; + var operator = binaryExpression.operatorToken.kind; + if (operator >= 53 && operator <= 64) { + if (node === binaryExpression.right) { + return checkExpression(binaryExpression.left); + } + } + else if (operator === 49) { + var type = getContextualType(binaryExpression); + if (!type && node === binaryExpression.right) { + type = checkExpression(binaryExpression.left); + } + return type; + } + return undefined; + } + function applyToContextualType(type, mapper) { + if (!(type.flags & 16384)) { + return mapper(type); + } + var types = type.types; + var mappedType; + var mappedTypes; + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var t = mapper(current); + if (t) { + if (!mappedType) { + mappedType = t; + } + else if (!mappedTypes) { + mappedTypes = [mappedType, t]; + } + else { + mappedTypes.push(t); + } + } + } + return mappedTypes ? getUnionType(mappedTypes) : mappedType; + } + function getTypeOfPropertyOfContextualType(type, name) { + return applyToContextualType(type, function (t) { + var prop = getPropertyOfObjectType(t, name); + return prop ? getTypeOfSymbol(prop) : undefined; + }); + } + function getIndexTypeOfContextualType(type, kind) { + return applyToContextualType(type, function (t) { return getIndexTypeOfObjectOrUnionType(t, kind); }); + } + function contextualTypeIsTupleLikeType(type) { + return !!(type.flags & 16384 ? ts.forEach(type.types, isTupleLikeType) : isTupleLikeType(type)); + } + function contextualTypeHasIndexSignature(type, kind) { + return !!(type.flags & 16384 ? ts.forEach(type.types, function (t) { return getIndexTypeOfObjectOrUnionType(t, kind); }) : getIndexTypeOfObjectOrUnionType(type, kind)); + } + function getContextualTypeForObjectLiteralMethod(node) { + ts.Debug.assert(ts.isObjectLiteralMethod(node)); + if (isInsideWithStatementBody(node)) { + return undefined; + } + return getContextualTypeForObjectLiteralElement(node); + } + function getContextualTypeForObjectLiteralElement(element) { + var objectLiteral = element.parent; + var type = getContextualType(objectLiteral); + if (type) { + if (!ts.hasDynamicName(element)) { + var symbolName = getSymbolOfNode(element).name; + var propertyType = getTypeOfPropertyOfContextualType(type, symbolName); + if (propertyType) { + return propertyType; + } + } + return isNumericName(element.name) && getIndexTypeOfContextualType(type, 1) || + getIndexTypeOfContextualType(type, 0); + } + return undefined; + } + function getContextualTypeForElementExpression(node) { + var arrayLiteral = node.parent; + var type = getContextualType(arrayLiteral); + if (type) { + var index = ts.indexOf(arrayLiteral.elements, node); + return getTypeOfPropertyOfContextualType(type, "" + index) + || getIndexTypeOfContextualType(type, 1) + || (languageVersion >= 2 ? checkIteratedType(type, undefined) : undefined); + } + return undefined; + } + function getContextualTypeForConditionalOperand(node) { + var conditional = node.parent; + return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; + } + function getContextualType(node) { + if (isInsideWithStatementBody(node)) { + return undefined; + } + if (node.contextualType) { + return node.contextualType; + } + var parent = node.parent; + switch (parent.kind) { + case 198: + case 129: + case 132: + case 131: + case 152: + return getContextualTypeForInitializerExpression(node); + case 163: + case 191: + return getContextualTypeForReturnExpression(node); + case 157: + case 158: + return getContextualTypeForArgument(parent, node); + case 160: + return getTypeFromTypeNodeOrHeritageClauseElement(parent.type); + case 169: + return getContextualTypeForBinaryOperand(node); + case 224: + return getContextualTypeForObjectLiteralElement(parent); + case 153: + return getContextualTypeForElementExpression(node); + case 170: + return getContextualTypeForConditionalOperand(node); + case 176: + ts.Debug.assert(parent.parent.kind === 171); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 161: + return getContextualType(parent); + } + return undefined; + } + function getNonGenericSignature(type) { + var signatures = getSignaturesOfObjectOrUnionType(type, 0); + if (signatures.length === 1) { + var signature = signatures[0]; + if (!signature.typeParameters) { + return signature; + } + } + } + function isFunctionExpressionOrArrowFunction(node) { + return node.kind === 162 || node.kind === 163; + } + function getContextualSignatureForFunctionLikeDeclaration(node) { + return isFunctionExpressionOrArrowFunction(node) ? getContextualSignature(node) : undefined; + } + function getContextualSignature(node) { + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + var type = ts.isObjectLiteralMethod(node) + ? getContextualTypeForObjectLiteralMethod(node) + : getContextualType(node); + if (!type) { + return undefined; + } + if (!(type.flags & 16384)) { + return getNonGenericSignature(type); + } + var signatureList; + var types = type.types; + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (signatureList && + getSignaturesOfObjectOrUnionType(current, 0).length > 1) { + return undefined; + } + var signature = getNonGenericSignature(current); + if (signature) { + if (!signatureList) { + signatureList = [signature]; + } + else if (!compareSignatures(signatureList[0], signature, false, compareTypes)) { + return undefined; + } + else { + signatureList.push(signature); + } + } + } + var result; + if (signatureList) { + result = cloneSignature(signatureList[0]); + result.resolvedReturnType = undefined; + result.unionSignatures = signatureList; + } + return result; + } + function isInferentialContext(mapper) { + return mapper && mapper !== identityMapper; + } + function isAssignmentTarget(node) { + var parent = node.parent; + if (parent.kind === 169 && parent.operatorToken.kind === 53 && parent.left === node) { + return true; + } + if (parent.kind === 224) { + return isAssignmentTarget(parent.parent); + } + if (parent.kind === 153) { + return isAssignmentTarget(parent); + } + return false; + } + function checkSpreadElementExpression(node, contextualMapper) { + var type = checkExpressionCached(node.expression, contextualMapper); + if (!isArrayLikeType(type)) { + error(node.expression, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(type)); + return unknownType; + } + return type; + } + function checkArrayLiteral(node, contextualMapper) { + var elements = node.elements; + if (!elements.length) { + return createArrayType(undefinedType); + } + var hasSpreadElement = false; + var elementTypes = []; + ts.forEach(elements, function (e) { + var type = checkExpression(e, contextualMapper); + if (e.kind === 173) { + elementTypes.push(getIndexTypeOfType(type, 1) || anyType); + hasSpreadElement = true; + } + else { + elementTypes.push(type); + } + }); + if (!hasSpreadElement) { + var contextualType = getContextualType(node); + if (contextualType && contextualTypeIsTupleLikeType(contextualType) || isAssignmentTarget(node)) { + return createTupleType(elementTypes); + } + } + return createArrayType(getUnionType(elementTypes)); + } + function isNumericName(name) { + return name.kind === 127 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + } + function isNumericComputedName(name) { + return allConstituentTypesHaveKind(checkComputedPropertyName(name), 1 | 132); + } + function isNumericLiteralName(name) { + return (+name).toString() === name; + } + function checkComputedPropertyName(node) { + var links = getNodeLinks(node.expression); + if (!links.resolvedType) { + links.resolvedType = checkExpression(node.expression); + if (!allConstituentTypesHaveKind(links.resolvedType, 1 | 132 | 258 | 1048576)) { + error(node, ts.Diagnostics.A_computed_property_name_must_be_of_type_string_number_symbol_or_any); + } + else { + checkThatExpressionIsProperSymbolReference(node.expression, links.resolvedType, true); + } + } + return links.resolvedType; + } + function checkObjectLiteral(node, contextualMapper) { + checkGrammarObjectLiteralExpression(node); + var propertiesTable = {}; + var propertiesArray = []; + var contextualType = getContextualType(node); + var typeFlags; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var memberDecl = _a[_i]; + var member = memberDecl.symbol; + if (memberDecl.kind === 224 || + memberDecl.kind === 225 || + ts.isObjectLiteralMethod(memberDecl)) { + var type = void 0; + if (memberDecl.kind === 224) { + type = checkPropertyAssignment(memberDecl, contextualMapper); + } + else if (memberDecl.kind === 134) { + type = checkObjectLiteralMethod(memberDecl, contextualMapper); + } + else { + ts.Debug.assert(memberDecl.kind === 225); + type = memberDecl.name.kind === 127 + ? unknownType + : checkExpression(memberDecl.name, contextualMapper); + } + typeFlags |= type.flags; + var prop = createSymbol(4 | 67108864 | member.flags, member.name); + prop.declarations = member.declarations; + prop.parent = member.parent; + if (member.valueDeclaration) { + prop.valueDeclaration = member.valueDeclaration; + } + prop.type = type; + prop.target = member; + member = prop; + } + else { + ts.Debug.assert(memberDecl.kind === 136 || memberDecl.kind === 137); + checkAccessorDeclaration(memberDecl); + } + if (!ts.hasDynamicName(memberDecl)) { + propertiesTable[member.name] = member; + } + propertiesArray.push(member); + } + var stringIndexType = getIndexType(0); + var numberIndexType = getIndexType(1); + var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); + result.flags |= 131072 | 524288 | (typeFlags & 262144); + return result; + function getIndexType(kind) { + if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { + var propTypes = []; + for (var i = 0; i < propertiesArray.length; i++) { + var propertyDecl = node.properties[i]; + if (kind === 0 || isNumericName(propertyDecl.name)) { + var type = getTypeOfSymbol(propertiesArray[i]); + if (!ts.contains(propTypes, type)) { + propTypes.push(type); + } + } + } + var result_1 = propTypes.length ? getUnionType(propTypes) : undefinedType; + typeFlags |= result_1.flags; + return result_1; + } + return undefined; + } + } + function getDeclarationKindFromSymbol(s) { + return s.valueDeclaration ? s.valueDeclaration.kind : 132; + } + function getDeclarationFlagsFromSymbol(s) { + return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 16 | 128 : 0; + } + function checkClassPropertyAccess(node, left, type, prop) { + var flags = getDeclarationFlagsFromSymbol(prop); + if (!(flags & (32 | 64))) { + return; + } + var enclosingClassDeclaration = ts.getAncestor(node, 201); + var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; + var declaringClass = getDeclaredTypeOfSymbol(prop.parent); + if (flags & 32) { + if (declaringClass !== enclosingClass) { + error(node, ts.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, symbolToString(prop), typeToString(declaringClass)); + } + return; + } + if (left.kind === 91) { + return; + } + if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { + error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, symbolToString(prop), typeToString(declaringClass)); + return; + } + if (flags & 128) { + return; + } + if (!(getTargetType(type).flags & (1024 | 2048) && hasBaseType(type, enclosingClass))) { + error(node, ts.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1, symbolToString(prop), typeToString(enclosingClass)); + } + } + function checkPropertyAccessExpression(node) { + return checkPropertyAccessExpressionOrQualifiedName(node, node.expression, node.name); + } + function checkQualifiedName(node) { + return checkPropertyAccessExpressionOrQualifiedName(node, node.left, node.right); + } + function checkPropertyAccessExpressionOrQualifiedName(node, left, right) { + var type = checkExpressionOrQualifiedName(left); + if (type === unknownType) + return type; + if (type !== anyType) { + var apparentType = getApparentType(getWidenedType(type)); + if (apparentType === unknownType) { + return unknownType; + } + var prop = getPropertyOfType(apparentType, right.text); + if (!prop) { + if (right.text) { + error(right, ts.Diagnostics.Property_0_does_not_exist_on_type_1, ts.declarationNameToString(right), typeToString(type)); + } + return unknownType; + } + getNodeLinks(node).resolvedSymbol = prop; + if (prop.parent && prop.parent.flags & 32) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { + error(right, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); + } + else { + checkClassPropertyAccess(node, left, type, prop); + } + } + return getTypeOfSymbol(prop); + } + return anyType; + } + function isValidPropertyAccess(node, propertyName) { + var left = node.kind === 155 + ? node.expression + : node.left; + var type = checkExpressionOrQualifiedName(left); + if (type !== unknownType && type !== anyType) { + var prop = getPropertyOfType(getWidenedType(type), propertyName); + if (prop && prop.parent && prop.parent.flags & 32) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { + return false; + } + else { + var modificationCount = diagnostics.getModificationCount(); + checkClassPropertyAccess(node, left, type, prop); + return diagnostics.getModificationCount() === modificationCount; + } + } + } + return true; + } + function checkIndexedAccess(node) { + if (!node.argumentExpression) { + var sourceFile = getSourceFile(node); + if (node.parent.kind === 158 && node.parent.expression === node) { + var start = ts.skipTrivia(sourceFile.text, node.expression.end); + var end = node.end; + grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); + } + else { + var start = node.end - "]".length; + var end = node.end; + grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Expression_expected); + } + } + var objectType = getApparentType(checkExpression(node.expression)); + var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; + if (objectType === unknownType) { + return unknownType; + } + var isConstEnum = isConstEnumObjectType(objectType); + if (isConstEnum && + (!node.argumentExpression || node.argumentExpression.kind !== 8)) { + error(node.argumentExpression, ts.Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal); + return unknownType; + } + if (node.argumentExpression) { + var name_6 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_6 !== undefined) { + var prop = getPropertyOfType(objectType, name_6); + if (prop) { + getNodeLinks(node).resolvedSymbol = prop; + return getTypeOfSymbol(prop); + } + else if (isConstEnum) { + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_6, symbolToString(objectType.symbol)); + return unknownType; + } + } + } + if (allConstituentTypesHaveKind(indexType, 1 | 258 | 132 | 1048576)) { + if (allConstituentTypesHaveKind(indexType, 1 | 132)) { + var numberIndexType = getIndexTypeOfType(objectType, 1); + if (numberIndexType) { + return numberIndexType; + } + } + var stringIndexType = getIndexTypeOfType(objectType, 0); + if (stringIndexType) { + return stringIndexType; + } + if (compilerOptions.noImplicitAny && !compilerOptions.suppressImplicitAnyIndexErrors && objectType !== anyType) { + error(node, ts.Diagnostics.Index_signature_of_object_type_implicitly_has_an_any_type); + } + return anyType; + } + error(node, ts.Diagnostics.An_index_expression_argument_must_be_of_type_string_number_symbol_or_any); + return unknownType; + } + function getPropertyNameForIndexedAccess(indexArgumentExpression, indexArgumentType) { + if (indexArgumentExpression.kind === 8 || indexArgumentExpression.kind === 7) { + return indexArgumentExpression.text; + } + if (checkThatExpressionIsProperSymbolReference(indexArgumentExpression, indexArgumentType, false)) { + var rightHandSideName = indexArgumentExpression.name.text; + return ts.getPropertyNameForKnownSymbolName(rightHandSideName); + } + return undefined; + } + function checkThatExpressionIsProperSymbolReference(expression, expressionType, reportError) { + if (expressionType === unknownType) { + return false; + } + if (!ts.isWellKnownSymbolSyntactically(expression)) { + return false; + } + if ((expressionType.flags & 1048576) === 0) { + if (reportError) { + error(expression, ts.Diagnostics.A_computed_property_name_of_the_form_0_must_be_of_type_symbol, ts.getTextOfNode(expression)); + } + return false; + } + var leftHandSide = expression.expression; + var leftHandSideSymbol = getResolvedSymbol(leftHandSide); + if (!leftHandSideSymbol) { + return false; + } + var globalESSymbol = getGlobalESSymbolConstructorSymbol(); + if (!globalESSymbol) { + return false; + } + if (leftHandSideSymbol !== globalESSymbol) { + if (reportError) { + error(leftHandSide, ts.Diagnostics.Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object); + } + return false; + } + return true; + } + function resolveUntypedCall(node) { + if (node.kind === 159) { + checkExpression(node.template); + } + else { + ts.forEach(node.arguments, function (argument) { + checkExpression(argument); + }); + } + return anySignature; + } + function resolveErrorCall(node) { + resolveUntypedCall(node); + return unknownSignature; + } + function reorderCandidates(signatures, result) { + var lastParent; + var lastSymbol; + var cutoffIndex = 0; + var index; + var specializedIndex = -1; + var spliceIndex; + ts.Debug.assert(!result.length); + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; + var symbol = signature.declaration && getSymbolOfNode(signature.declaration); + var parent_4 = signature.declaration && signature.declaration.parent; + if (!lastSymbol || symbol === lastSymbol) { + if (lastParent && parent_4 === lastParent) { + index++; + } + else { + lastParent = parent_4; + index = cutoffIndex; + } + } + else { + index = cutoffIndex = result.length; + lastParent = parent_4; + } + lastSymbol = symbol; + if (signature.hasStringLiterals) { + specializedIndex++; + spliceIndex = specializedIndex; + cutoffIndex++; + } + else { + spliceIndex = index; + } + result.splice(spliceIndex, 0, signature); + } + } + function getSpreadArgumentIndex(args) { + for (var i = 0; i < args.length; i++) { + if (args[i].kind === 173) { + return i; + } + } + return -1; + } + function hasCorrectArity(node, args, signature) { + var adjustedArgCount; + var typeArguments; + var callIsIncomplete; + if (node.kind === 159) { + var tagExpression = node; + adjustedArgCount = args.length; + typeArguments = undefined; + if (tagExpression.template.kind === 171) { + var templateExpression = tagExpression.template; + var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); + ts.Debug.assert(lastSpan !== undefined); + callIsIncomplete = ts.nodeIsMissing(lastSpan.literal) || !!lastSpan.literal.isUnterminated; + } + else { + var templateLiteral = tagExpression.template; + ts.Debug.assert(templateLiteral.kind === 10); + callIsIncomplete = !!templateLiteral.isUnterminated; + } + } + else { + var callExpression = node; + if (!callExpression.arguments) { + ts.Debug.assert(callExpression.kind === 158); + return signature.minArgumentCount === 0; + } + adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; + callIsIncomplete = callExpression.arguments.end === callExpression.end; + typeArguments = callExpression.typeArguments; + } + var hasRightNumberOfTypeArgs = !typeArguments || + (signature.typeParameters && typeArguments.length === signature.typeParameters.length); + if (!hasRightNumberOfTypeArgs) { + return false; + } + var spreadArgIndex = getSpreadArgumentIndex(args); + if (spreadArgIndex >= 0) { + return signature.hasRestParameter && spreadArgIndex >= signature.parameters.length - 1; + } + if (!signature.hasRestParameter && adjustedArgCount > signature.parameters.length) { + return false; + } + var hasEnoughArguments = adjustedArgCount >= signature.minArgumentCount; + return callIsIncomplete || hasEnoughArguments; + } + function getSingleCallSignature(type) { + if (type.flags & 48128) { + var resolved = resolveObjectOrUnionTypeMembers(type); + if (resolved.callSignatures.length === 1 && resolved.constructSignatures.length === 0 && + resolved.properties.length === 0 && !resolved.stringIndexType && !resolved.numberIndexType) { + return resolved.callSignatures[0]; + } + } + return undefined; + } + function instantiateSignatureInContextOf(signature, contextualSignature, contextualMapper) { + var context = createInferenceContext(signature.typeParameters, true); + forEachMatchingParameterType(contextualSignature, signature, function (source, target) { + inferTypes(context, instantiateType(source, contextualMapper), target); + }); + return getSignatureInstantiation(signature, getInferredTypes(context)); + } + function inferTypeArguments(signature, args, excludeArgument, context) { + var typeParameters = signature.typeParameters; + var inferenceMapper = createInferenceMapper(context); + for (var i = 0; i < typeParameters.length; i++) { + if (!context.inferences[i].isFixed) { + context.inferredTypes[i] = undefined; + } + } + if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { + context.failedTypeParameterIndex = undefined; + } + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = void 0; + if (i === 0 && args[i].parent.kind === 159) { + argType = globalTemplateStringsArrayType; + } + else { + var mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; + argType = checkExpressionWithContextualType(arg, paramType, mapper); + } + inferTypes(context, argType, paramType); + } + } + if (excludeArgument) { + for (var i = 0; i < args.length; i++) { + if (excludeArgument[i] === false) { + var arg = args[i]; + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + inferTypes(context, checkExpressionWithContextualType(arg, paramType, inferenceMapper), paramType); + } + } + } + getInferredTypes(context); + } + function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors) { + var typeParameters = signature.typeParameters; + var typeArgumentsAreAssignable = true; + for (var i = 0; i < typeParameters.length; i++) { + var typeArgNode = typeArguments[i]; + var typeArgument = getTypeFromTypeNodeOrHeritageClauseElement(typeArgNode); + typeArgumentResultTypes[i] = typeArgument; + if (typeArgumentsAreAssignable) { + var constraint = getConstraintOfTypeParameter(typeParameters[i]); + if (constraint) { + typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + } + } + } + return typeArgumentsAreAssignable; + } + function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = i === 0 && node.kind === 159 ? globalTemplateStringsArrayType : + arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : + checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); + if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined, ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) { + return false; + } + } + } + return true; + } + function getEffectiveCallArguments(node) { + var args; + if (node.kind === 159) { + var template = node.template; + args = [template]; + if (template.kind === 171) { + ts.forEach(template.templateSpans, function (span) { + args.push(span.expression); + }); + } + } + else { + args = node.arguments || emptyArray; + } + return args; + } + function getEffectiveTypeArguments(callExpression) { + if (callExpression.expression.kind === 91) { + var containingClass = ts.getAncestor(callExpression, 201); + var baseClassTypeNode = containingClass && ts.getClassExtendsHeritageClauseElement(containingClass); + return baseClassTypeNode && baseClassTypeNode.typeArguments; + } + else { + return callExpression.typeArguments; + } + } + function resolveCall(node, signatures, candidatesOutArray) { + var isTaggedTemplate = node.kind === 159; + var typeArguments; + if (!isTaggedTemplate) { + typeArguments = getEffectiveTypeArguments(node); + if (node.expression.kind !== 91) { + ts.forEach(typeArguments, checkSourceElement); + } + } + var candidates = candidatesOutArray || []; + reorderCandidates(signatures, candidates); + if (!candidates.length) { + error(node, ts.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target); + return resolveErrorCall(node); + } + var args = getEffectiveCallArguments(node); + var excludeArgument; + for (var i = isTaggedTemplate ? 1 : 0; i < args.length; i++) { + if (isContextSensitive(args[i])) { + if (!excludeArgument) { + excludeArgument = new Array(args.length); + } + excludeArgument[i] = true; + } + } + var candidateForArgumentError; + var candidateForTypeArgumentError; + var resultOfFailedInference; + var result; + if (candidates.length > 1) { + result = chooseOverload(candidates, subtypeRelation); + } + if (!result) { + candidateForArgumentError = undefined; + candidateForTypeArgumentError = undefined; + resultOfFailedInference = undefined; + result = chooseOverload(candidates, assignableRelation); + } + if (result) { + return result; + } + if (candidateForArgumentError) { + checkApplicableSignature(node, args, candidateForArgumentError, assignableRelation, undefined, true); + } + else if (candidateForTypeArgumentError) { + if (!isTaggedTemplate && node.typeArguments) { + checkTypeArguments(candidateForTypeArgumentError, node.typeArguments, [], true); + } + else { + ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); + var failedTypeParameter = candidateForTypeArgumentError.typeParameters[resultOfFailedInference.failedTypeParameterIndex]; + var inferenceCandidates = getInferenceCandidates(resultOfFailedInference, resultOfFailedInference.failedTypeParameterIndex); + var diagnosticChainHead = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly, typeToString(failedTypeParameter)); + reportNoCommonSupertypeError(inferenceCandidates, node.expression || node.tag, diagnosticChainHead); + } + } + else { + error(node, ts.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target); + } + if (!produceDiagnostics) { + for (var _i = 0; _i < candidates.length; _i++) { + var candidate = candidates[_i]; + if (hasCorrectArity(node, args, candidate)) { + return candidate; + } + } + } + return resolveErrorCall(node); + function chooseOverload(candidates, relation) { + for (var _i = 0; _i < candidates.length; _i++) { + var originalCandidate = candidates[_i]; + if (!hasCorrectArity(node, args, originalCandidate)) { + continue; + } + var candidate = void 0; + var typeArgumentsAreValid = void 0; + var inferenceContext = originalCandidate.typeParameters + ? createInferenceContext(originalCandidate.typeParameters, false) + : undefined; + while (true) { + candidate = originalCandidate; + if (candidate.typeParameters) { + var typeArgumentTypes = void 0; + if (typeArguments) { + typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); + } + else { + inferTypeArguments(candidate, args, excludeArgument, inferenceContext); + typeArgumentsAreValid = inferenceContext.failedTypeParameterIndex === undefined; + typeArgumentTypes = inferenceContext.inferredTypes; + } + if (!typeArgumentsAreValid) { + break; + } + candidate = getSignatureInstantiation(candidate, typeArgumentTypes); + } + if (!checkApplicableSignature(node, args, candidate, relation, excludeArgument, false)) { + break; + } + var index = excludeArgument ? ts.indexOf(excludeArgument, true) : -1; + if (index < 0) { + return candidate; + } + excludeArgument[index] = false; + } + if (originalCandidate.typeParameters) { + var instantiatedCandidate = candidate; + if (typeArgumentsAreValid) { + candidateForArgumentError = instantiatedCandidate; + } + else { + candidateForTypeArgumentError = originalCandidate; + if (!typeArguments) { + resultOfFailedInference = inferenceContext; + } + } + } + else { + ts.Debug.assert(originalCandidate === candidate); + candidateForArgumentError = originalCandidate; + } + } + return undefined; + } + } + function resolveCallExpression(node, candidatesOutArray) { + if (node.expression.kind === 91) { + var superType = checkSuperExpression(node.expression); + if (superType !== unknownType) { + return resolveCall(node, getSignaturesOfType(superType, 1), candidatesOutArray); + } + return resolveUntypedCall(node); + } + var funcType = checkExpression(node.expression); + var apparentType = getApparentType(funcType); + if (apparentType === unknownType) { + return resolveErrorCall(node); + } + var callSignatures = getSignaturesOfType(apparentType, 0); + var constructSignatures = getSignaturesOfType(apparentType, 1); + if (funcType === anyType || (!callSignatures.length && !constructSignatures.length && !(funcType.flags & 16384) && isTypeAssignableTo(funcType, globalFunctionType))) { + if (node.typeArguments) { + error(node, ts.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments); + } + return resolveUntypedCall(node); + } + if (!callSignatures.length) { + if (constructSignatures.length) { + error(node, ts.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new, typeToString(funcType)); + } + else { + error(node, ts.Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature); + } + return resolveErrorCall(node); + } + return resolveCall(node, callSignatures, candidatesOutArray); + } + function resolveNewExpression(node, candidatesOutArray) { + if (node.arguments && languageVersion < 2) { + var spreadIndex = getSpreadArgumentIndex(node.arguments); + if (spreadIndex >= 0) { + error(node.arguments[spreadIndex], ts.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher); + } + } + var expressionType = checkExpression(node.expression); + if (expressionType === anyType) { + if (node.typeArguments) { + error(node, ts.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments); + } + return resolveUntypedCall(node); + } + expressionType = getApparentType(expressionType); + if (expressionType === unknownType) { + return resolveErrorCall(node); + } + var constructSignatures = getSignaturesOfType(expressionType, 1); + if (constructSignatures.length) { + return resolveCall(node, constructSignatures, candidatesOutArray); + } + var callSignatures = getSignaturesOfType(expressionType, 0); + if (callSignatures.length) { + var signature = resolveCall(node, callSignatures, candidatesOutArray); + if (getReturnTypeOfSignature(signature) !== voidType) { + error(node, ts.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); + } + return signature; + } + error(node, ts.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature); + return resolveErrorCall(node); + } + function resolveTaggedTemplateExpression(node, candidatesOutArray) { + var tagType = checkExpression(node.tag); + var apparentType = getApparentType(tagType); + if (apparentType === unknownType) { + return resolveErrorCall(node); + } + var callSignatures = getSignaturesOfType(apparentType, 0); + if (tagType === anyType || (!callSignatures.length && !(tagType.flags & 16384) && isTypeAssignableTo(tagType, globalFunctionType))) { + return resolveUntypedCall(node); + } + if (!callSignatures.length) { + error(node, ts.Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature); + return resolveErrorCall(node); + } + return resolveCall(node, callSignatures, candidatesOutArray); + } + function getResolvedSignature(node, candidatesOutArray) { + var links = getNodeLinks(node); + if (!links.resolvedSignature || candidatesOutArray) { + links.resolvedSignature = anySignature; + if (node.kind === 157) { + links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); + } + else if (node.kind === 158) { + links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); + } + else if (node.kind === 159) { + links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); + } + else { + ts.Debug.fail("Branch in 'getResolvedSignature' should be unreachable."); + } + } + return links.resolvedSignature; + } + function checkCallExpression(node) { + checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); + var signature = getResolvedSignature(node); + if (node.expression.kind === 91) { + return voidType; + } + if (node.kind === 158) { + var declaration = signature.declaration; + if (declaration && + declaration.kind !== 135 && + declaration.kind !== 139 && + declaration.kind !== 143) { + if (compilerOptions.noImplicitAny) { + error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); + } + return anyType; + } + } + return getReturnTypeOfSignature(signature); + } + function checkTaggedTemplateExpression(node) { + return getReturnTypeOfSignature(getResolvedSignature(node)); + } + function checkTypeAssertion(node) { + var exprType = checkExpression(node.expression); + var targetType = getTypeFromTypeNodeOrHeritageClauseElement(node.type); + if (produceDiagnostics && targetType !== unknownType) { + var widenedType = getWidenedType(exprType); + if (!(isTypeAssignableTo(targetType, widenedType))) { + checkTypeAssignableTo(exprType, targetType, node, ts.Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); + } + } + return targetType; + } + function getTypeAtPosition(signature, pos) { + if (pos >= 0) { + return signature.hasRestParameter ? + pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + } + return signature.hasRestParameter ? + getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]) : + anyArrayType; + } + function assignContextualParameterTypes(signature, context, mapper) { + var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); + for (var i = 0; i < len; i++) { + var parameter = signature.parameters[i]; + var links = getSymbolLinks(parameter); + links.type = instantiateType(getTypeAtPosition(context, i), mapper); + } + if (signature.hasRestParameter && context.hasRestParameter && signature.parameters.length >= context.parameters.length) { + var parameter = signature.parameters[signature.parameters.length - 1]; + var links = getSymbolLinks(parameter); + links.type = instantiateType(getTypeOfSymbol(context.parameters[context.parameters.length - 1]), mapper); + } + } + function getReturnTypeFromBody(func, contextualMapper) { + var contextualSignature = getContextualSignatureForFunctionLikeDeclaration(func); + if (!func.body) { + return unknownType; + } + var type; + if (func.body.kind !== 179) { + type = checkExpressionCached(func.body, contextualMapper); + } + else { + var types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); + if (types.length === 0) { + return voidType; + } + type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); + if (!type) { + error(func, ts.Diagnostics.No_best_common_type_exists_among_return_expressions); + return unknownType; + } + } + if (!contextualSignature) { + reportErrorsFromWidening(func, type); + } + return getWidenedType(type); + } + function checkAndAggregateReturnExpressionTypes(body, contextualMapper) { + var aggregatedTypes = []; + ts.forEachReturnStatement(body, function (returnStatement) { + var expr = returnStatement.expression; + if (expr) { + var type = checkExpressionCached(expr, contextualMapper); + if (!ts.contains(aggregatedTypes, type)) { + aggregatedTypes.push(type); + } + } + }); + return aggregatedTypes; + } + function bodyContainsAReturnStatement(funcBody) { + return ts.forEachReturnStatement(funcBody, function (returnStatement) { + return true; + }); + } + function bodyContainsSingleThrowStatement(body) { + return (body.statements.length === 1) && (body.statements[0].kind === 195); + } + function checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(func, returnType) { + if (!produceDiagnostics) { + return; + } + if (returnType === voidType || returnType === anyType) { + return; + } + if (ts.nodeIsMissing(func.body) || func.body.kind !== 179) { + return; + } + var bodyBlock = func.body; + if (bodyContainsAReturnStatement(bodyBlock)) { + return; + } + if (bodyContainsSingleThrowStatement(bodyBlock)) { + return; + } + error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement); + } + function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + if (!hasGrammarError && node.kind === 162) { + checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); + } + if (contextualMapper === identityMapper && isContextSensitive(node)) { + return anyFunctionType; + } + var links = getNodeLinks(node); + var type = getTypeOfSymbol(node.symbol); + if (!(links.flags & 64)) { + var contextualSignature = getContextualSignature(node); + if (!(links.flags & 64)) { + links.flags |= 64; + if (contextualSignature) { + var signature = getSignaturesOfType(type, 0)[0]; + if (isContextSensitive(node)) { + assignContextualParameterTypes(signature, contextualSignature, contextualMapper || identityMapper); + } + if (!node.type) { + signature.resolvedReturnType = resolvingType; + var returnType = getReturnTypeFromBody(node, contextualMapper); + if (signature.resolvedReturnType === resolvingType) { + signature.resolvedReturnType = returnType; + } + } + } + checkSignatureDeclaration(node); + } + } + if (produceDiagnostics && node.kind !== 134 && node.kind !== 133) { + checkCollisionWithCapturedSuperVariable(node, node.name); + checkCollisionWithCapturedThisVariable(node, node.name); + } + return type; + } + function checkFunctionExpressionOrObjectLiteralMethodBody(node) { + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + if (node.type) { + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); + } + if (node.body) { + if (node.body.kind === 179) { + checkSourceElement(node.body); + } + else { + var exprType = checkExpression(node.body); + if (node.type) { + checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement(node.type), node.body, undefined); + } + checkFunctionExpressionBodies(node.body); + } + } + } + function checkArithmeticOperandType(operand, type, diagnostic) { + if (!allConstituentTypesHaveKind(type, 1 | 132)) { + error(operand, diagnostic); + return false; + } + return true; + } + function checkReferenceExpression(n, invalidReferenceMessage, constantVariableMessage) { + function findSymbol(n) { + var symbol = getNodeLinks(n).resolvedSymbol; + return symbol && getExportSymbolOfValueSymbolIfExported(symbol); + } + function isReferenceOrErrorExpression(n) { + switch (n.kind) { + case 65: { + var symbol = findSymbol(n); + return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; + } + case 155: { + var symbol = findSymbol(n); + return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; + } + case 156: + return true; + case 161: + return isReferenceOrErrorExpression(n.expression); + default: + return false; + } + } + function isConstVariableReference(n) { + switch (n.kind) { + case 65: + case 155: { + var symbol = findSymbol(n); + return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 8192) !== 0; + } + case 156: { + var index = n.argumentExpression; + var symbol = findSymbol(n.expression); + if (symbol && index && index.kind === 8) { + var name_7 = index.text; + var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_7); + return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 8192) !== 0; + } + return false; + } + case 161: + return isConstVariableReference(n.expression); + default: + return false; + } + } + if (!isReferenceOrErrorExpression(n)) { + error(n, invalidReferenceMessage); + return false; + } + if (isConstVariableReference(n)) { + error(n, constantVariableMessage); + return false; + } + return true; + } + function checkDeleteExpression(node) { + if (node.parserContextFlags & 1 && node.expression.kind === 65) { + grammarErrorOnNode(node.expression, ts.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode); + } + var operandType = checkExpression(node.expression); + return booleanType; + } + function checkTypeOfExpression(node) { + var operandType = checkExpression(node.expression); + return stringType; + } + function checkVoidExpression(node) { + var operandType = checkExpression(node.expression); + return undefinedType; + } + function checkPrefixUnaryExpression(node) { + if ((node.operator === 38 || node.operator === 39)) { + checkGrammarEvalOrArgumentsInStrictMode(node, node.operand); + } + var operandType = checkExpression(node.operand); + switch (node.operator) { + case 33: + case 34: + case 47: + if (someConstituentTypeHasKind(operandType, 1048576)) { + error(node.operand, ts.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, ts.tokenToString(node.operator)); + } + return numberType; + case 46: + return booleanType; + case 38: + case 39: + var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + if (ok) { + checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant); + } + return numberType; + } + return unknownType; + } + function checkPostfixUnaryExpression(node) { + checkGrammarEvalOrArgumentsInStrictMode(node, node.operand); + var operandType = checkExpression(node.operand); + var ok = checkArithmeticOperandType(node.operand, operandType, ts.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + if (ok) { + checkReferenceExpression(node.operand, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer, ts.Diagnostics.The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant); + } + return numberType; + } + function someConstituentTypeHasKind(type, kind) { + if (type.flags & kind) { + return true; + } + if (type.flags & 16384) { + var types = type.types; + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (current.flags & kind) { + return true; + } + } + return false; + } + return false; + } + function allConstituentTypesHaveKind(type, kind) { + if (type.flags & kind) { + return true; + } + if (type.flags & 16384) { + var types = type.types; + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (!(current.flags & kind)) { + return false; + } + } + return true; + } + return false; + } + function isConstEnumObjectType(type) { + return type.flags & (48128 | 32768) && type.symbol && isConstEnumSymbol(type.symbol); + } + function isConstEnumSymbol(symbol) { + return (symbol.flags & 128) !== 0; + } + function checkInstanceOfExpression(node, leftType, rightType) { + if (allConstituentTypesHaveKind(leftType, 1049086)) { + error(node.left, ts.Diagnostics.The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter); + } + if (!(rightType.flags & 1 || isTypeSubtypeOf(rightType, globalFunctionType))) { + error(node.right, ts.Diagnostics.The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type); + } + return booleanType; + } + function checkInExpression(node, leftType, rightType) { + if (!allConstituentTypesHaveKind(leftType, 1 | 258 | 132 | 1048576)) { + error(node.left, ts.Diagnostics.The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol); + } + if (!allConstituentTypesHaveKind(rightType, 1 | 48128 | 512)) { + error(node.right, ts.Diagnostics.The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter); + } + return booleanType; + } + function checkObjectLiteralAssignment(node, sourceType, contextualMapper) { + var properties = node.properties; + for (var _i = 0; _i < properties.length; _i++) { + var p = properties[_i]; + if (p.kind === 224 || p.kind === 225) { + var name_8 = p.name; + var type = sourceType.flags & 1 ? sourceType : + getTypeOfPropertyOfType(sourceType, name_8.text) || + isNumericLiteralName(name_8.text) && getIndexTypeOfType(sourceType, 1) || + getIndexTypeOfType(sourceType, 0); + if (type) { + checkDestructuringAssignment(p.initializer || name_8, type); + } + else { + error(name_8, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_8)); + } + } + else { + error(p, ts.Diagnostics.Property_assignment_expected); + } + } + return sourceType; + } + function checkArrayLiteralAssignment(node, sourceType, contextualMapper) { + if (!isArrayLikeType(sourceType)) { + error(node, ts.Diagnostics.Type_0_is_not_an_array_type, typeToString(sourceType)); + return sourceType; + } + var elements = node.elements; + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + if (e.kind !== 175) { + if (e.kind !== 173) { + var propName = "" + i; + var type = sourceType.flags & 1 ? sourceType : + isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : + getIndexTypeOfType(sourceType, 1); + if (type) { + checkDestructuringAssignment(e, type, contextualMapper); + } + else { + if (isTupleType(sourceType)) { + error(e, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), sourceType.elementTypes.length, elements.length); + } + else { + error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } + } + } + else { + if (i === elements.length - 1) { + checkReferenceAssignment(e.expression, sourceType, contextualMapper); + } + else { + error(e, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); + } + } + } + } + return sourceType; + } + function checkDestructuringAssignment(target, sourceType, contextualMapper) { + if (target.kind === 169 && target.operatorToken.kind === 53) { + checkBinaryExpression(target, contextualMapper); + target = target.left; + } + if (target.kind === 154) { + return checkObjectLiteralAssignment(target, sourceType, contextualMapper); + } + if (target.kind === 153) { + return checkArrayLiteralAssignment(target, sourceType, contextualMapper); + } + return checkReferenceAssignment(target, sourceType, contextualMapper); + } + function checkReferenceAssignment(target, sourceType, contextualMapper) { + var targetType = checkExpression(target, contextualMapper); + if (checkReferenceExpression(target, ts.Diagnostics.Invalid_left_hand_side_of_assignment_expression, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant)) { + checkTypeAssignableTo(sourceType, targetType, target, undefined); + } + return sourceType; + } + function checkBinaryExpression(node, contextualMapper) { + if (ts.isLeftHandSideExpression(node.left) && ts.isAssignmentOperator(node.operatorToken.kind)) { + checkGrammarEvalOrArgumentsInStrictMode(node, node.left); + } + var operator = node.operatorToken.kind; + if (operator === 53 && (node.left.kind === 154 || node.left.kind === 153)) { + return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper); + } + var leftType = checkExpression(node.left, contextualMapper); + var rightType = checkExpression(node.right, contextualMapper); + switch (operator) { + case 35: + case 56: + case 36: + case 57: + case 37: + case 58: + case 34: + case 55: + case 40: + case 59: + case 41: + case 60: + case 42: + case 61: + case 44: + case 63: + case 45: + case 64: + case 43: + case 62: + if (leftType.flags & (32 | 64)) + leftType = rightType; + if (rightType.flags & (32 | 64)) + rightType = leftType; + var suggestedOperator; + if ((leftType.flags & 8) && + (rightType.flags & 8) && + (suggestedOperator = getSuggestedBooleanOperator(node.operatorToken.kind)) !== undefined) { + error(node, ts.Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, ts.tokenToString(node.operatorToken.kind), ts.tokenToString(suggestedOperator)); + } + else { + var leftOk = checkArithmeticOperandType(node.left, leftType, ts.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); + var rightOk = checkArithmeticOperandType(node.right, rightType, ts.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); + if (leftOk && rightOk) { + checkAssignmentOperator(numberType); + } + } + return numberType; + case 33: + case 54: + if (leftType.flags & (32 | 64)) + leftType = rightType; + if (rightType.flags & (32 | 64)) + rightType = leftType; + var resultType; + if (allConstituentTypesHaveKind(leftType, 132) && allConstituentTypesHaveKind(rightType, 132)) { + resultType = numberType; + } + else { + if (allConstituentTypesHaveKind(leftType, 258) || allConstituentTypesHaveKind(rightType, 258)) { + resultType = stringType; + } + else if (leftType.flags & 1 || rightType.flags & 1) { + resultType = anyType; + } + if (resultType && !checkForDisallowedESSymbolOperand(operator)) { + return resultType; + } + } + if (!resultType) { + reportOperatorError(); + return anyType; + } + if (operator === 54) { + checkAssignmentOperator(resultType); + } + return resultType; + case 24: + case 25: + case 26: + case 27: + if (!checkForDisallowedESSymbolOperand(operator)) { + return booleanType; + } + case 28: + case 29: + case 30: + case 31: + if (!isTypeAssignableTo(leftType, rightType) && !isTypeAssignableTo(rightType, leftType)) { + reportOperatorError(); + } + return booleanType; + case 87: + return checkInstanceOfExpression(node, leftType, rightType); + case 86: + return checkInExpression(node, leftType, rightType); + case 48: + return rightType; + case 49: + return getUnionType([leftType, rightType]); + case 53: + checkAssignmentOperator(rightType); + return rightType; + case 23: + return rightType; + } + function checkForDisallowedESSymbolOperand(operator) { + var offendingSymbolOperand = someConstituentTypeHasKind(leftType, 1048576) ? node.left : + someConstituentTypeHasKind(rightType, 1048576) ? node.right : + undefined; + if (offendingSymbolOperand) { + error(offendingSymbolOperand, ts.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, ts.tokenToString(operator)); + return false; + } + return true; + } + function getSuggestedBooleanOperator(operator) { + switch (operator) { + case 44: + case 63: + return 49; + case 45: + case 64: + return 31; + case 43: + case 62: + return 48; + default: + return undefined; + } + } + function checkAssignmentOperator(valueType) { + if (produceDiagnostics && operator >= 53 && operator <= 64) { + var ok = checkReferenceExpression(node.left, ts.Diagnostics.Invalid_left_hand_side_of_assignment_expression, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + if (ok) { + checkTypeAssignableTo(valueType, leftType, node.left, undefined); + } + } + } + function reportOperatorError() { + error(node, ts.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, ts.tokenToString(node.operatorToken.kind), typeToString(leftType), typeToString(rightType)); + } + } + function checkYieldExpression(node) { + if (!(node.parserContextFlags & 4)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.yield_expression_must_be_contained_within_a_generator_declaration); + } + else { + grammarErrorOnFirstToken(node, ts.Diagnostics.yield_expressions_are_not_currently_supported); + } + } + function checkConditionalExpression(node, contextualMapper) { + checkExpression(node.condition); + var type1 = checkExpression(node.whenTrue, contextualMapper); + var type2 = checkExpression(node.whenFalse, contextualMapper); + return getUnionType([type1, type2]); + } + function checkTemplateExpression(node) { + ts.forEach(node.templateSpans, function (templateSpan) { + checkExpression(templateSpan.expression); + }); + return stringType; + } + function checkExpressionWithContextualType(node, contextualType, contextualMapper) { + var saveContextualType = node.contextualType; + node.contextualType = contextualType; + var result = checkExpression(node, contextualMapper); + node.contextualType = saveContextualType; + return result; + } + function checkExpressionCached(node, contextualMapper) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = checkExpression(node, contextualMapper); + } + return links.resolvedType; + } + function checkPropertyAssignment(node, contextualMapper) { + if (node.name.kind === 127) { + checkComputedPropertyName(node.name); + } + return checkExpression(node.initializer, contextualMapper); + } + function checkObjectLiteralMethod(node, contextualMapper) { + checkGrammarMethod(node); + if (node.name.kind === 127) { + checkComputedPropertyName(node.name); + } + var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); + return instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); + } + function instantiateTypeWithSingleGenericCallSignature(node, type, contextualMapper) { + if (contextualMapper && contextualMapper !== identityMapper) { + var signature = getSingleCallSignature(type); + if (signature && signature.typeParameters) { + var contextualType = getContextualType(node); + if (contextualType) { + var contextualSignature = getSingleCallSignature(contextualType); + if (contextualSignature && !contextualSignature.typeParameters) { + return getOrCreateTypeFromSignature(instantiateSignatureInContextOf(signature, contextualSignature, contextualMapper)); + } + } + } + } + return type; + } + function checkExpression(node, contextualMapper) { + return checkExpressionOrQualifiedName(node, contextualMapper); + } + function checkExpressionOrQualifiedName(node, contextualMapper) { + var type; + if (node.kind == 126) { + type = checkQualifiedName(node); + } + else { + var uninstantiatedType = checkExpressionWorker(node, contextualMapper); + type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); + } + if (isConstEnumObjectType(type)) { + var ok = (node.parent.kind === 155 && node.parent.expression === node) || + (node.parent.kind === 156 && node.parent.expression === node) || + ((node.kind === 65 || node.kind === 126) && isInRightSideOfImportOrExportAssignment(node)); + if (!ok) { + error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); + } + } + return type; + } + function checkNumericLiteral(node) { + checkGrammarNumbericLiteral(node); + return numberType; + } + function checkExpressionWorker(node, contextualMapper) { + switch (node.kind) { + case 65: + return checkIdentifier(node); + case 93: + return checkThisExpression(node); + case 91: + return checkSuperExpression(node); + case 89: + return nullType; + case 95: + case 80: + return booleanType; + case 7: + return checkNumericLiteral(node); + case 171: + return checkTemplateExpression(node); + case 8: + case 10: + return stringType; + case 9: + return globalRegExpType; + case 153: + return checkArrayLiteral(node, contextualMapper); + case 154: + return checkObjectLiteral(node, contextualMapper); + case 155: + return checkPropertyAccessExpression(node); + case 156: + return checkIndexedAccess(node); + case 157: + case 158: + return checkCallExpression(node); + case 159: + return checkTaggedTemplateExpression(node); + case 160: + return checkTypeAssertion(node); + case 161: + return checkExpression(node.expression, contextualMapper); + case 174: + return checkClassExpression(node); + case 162: + case 163: + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); + case 165: + return checkTypeOfExpression(node); + case 164: + return checkDeleteExpression(node); + case 166: + return checkVoidExpression(node); + case 167: + return checkPrefixUnaryExpression(node); + case 168: + return checkPostfixUnaryExpression(node); + case 169: + return checkBinaryExpression(node, contextualMapper); + case 170: + return checkConditionalExpression(node, contextualMapper); + case 173: + return checkSpreadElementExpression(node, contextualMapper); + case 175: + return undefinedType; + case 172: + checkYieldExpression(node); + return unknownType; + } + return unknownType; + } + function checkTypeParameter(node) { + if (node.expression) { + grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); + } + checkSourceElement(node.constraint); + if (produceDiagnostics) { + checkTypeParameterHasIllegalReferencesInConstraint(node); + checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_parameter_name_cannot_be_0); + } + } + function checkParameter(node) { + // Grammar checking + // It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs as the + // Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code + // or if its FunctionBody is strict code(11.1.5). + // It is a SyntaxError if the identifier eval or arguments appears within a FormalParameterList of a + // strict mode FunctionLikeDeclaration or FunctionExpression(13.1) + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + checkVariableLikeDeclaration(node); + var func = ts.getContainingFunction(node); + if (node.flags & 112) { + func = ts.getContainingFunction(node); + if (!(func.kind === 135 && ts.nodeIsPresent(func.body))) { + error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); + } + } + if (node.questionToken && ts.isBindingPattern(node.name) && func.body) { + error(node, ts.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature); + } + if (node.dotDotDotToken) { + if (!isArrayType(getTypeOfSymbol(node.symbol))) { + error(node, ts.Diagnostics.A_rest_parameter_must_be_of_an_array_type); + } + } + } + function checkSignatureDeclaration(node) { + if (node.kind === 140) { + checkGrammarIndexSignature(node); + } + else if (node.kind === 142 || node.kind === 200 || node.kind === 143 || + node.kind === 138 || node.kind === 135 || + node.kind === 139) { + checkGrammarFunctionLikeDeclaration(node); + } + checkTypeParameters(node.typeParameters); + ts.forEach(node.parameters, checkParameter); + if (node.type) { + checkSourceElement(node.type); + } + if (produceDiagnostics) { + checkCollisionWithArgumentsInGeneratedCode(node); + if (compilerOptions.noImplicitAny && !node.type) { + switch (node.kind) { + case 139: + error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); + break; + case 138: + error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); + break; + } + } + } + checkSpecializedSignatureDeclaration(node); + } + function checkTypeForDuplicateIndexSignatures(node) { + if (node.kind === 202) { + var nodeSymbol = getSymbolOfNode(node); + if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { + return; + } + } + var indexSymbol = getIndexSymbol(getSymbolOfNode(node)); + if (indexSymbol) { + var seenNumericIndexer = false; + var seenStringIndexer = false; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var declaration = decl; + if (declaration.parameters.length === 1 && declaration.parameters[0].type) { + switch (declaration.parameters[0].type.kind) { + case 121: + if (!seenStringIndexer) { + seenStringIndexer = true; + } + else { + error(declaration, ts.Diagnostics.Duplicate_string_index_signature); + } + break; + case 119: + if (!seenNumericIndexer) { + seenNumericIndexer = true; + } + else { + error(declaration, ts.Diagnostics.Duplicate_number_index_signature); + } + break; + } + } + } + } + } + function checkPropertyDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); + checkVariableLikeDeclaration(node); + } + function checkMethodDeclaration(node) { + checkGrammarMethod(node) || checkGrammarComputedPropertyName(node.name); + checkFunctionLikeDeclaration(node); + } + function checkConstructorDeclaration(node) { + checkSignatureDeclaration(node); + checkGrammarConstructorTypeParameters(node) || checkGrammarConstructorTypeAnnotation(node); + checkSourceElement(node.body); + var symbol = getSymbolOfNode(node); + var firstDeclaration = ts.getDeclarationOfKind(symbol, node.kind); + if (node === firstDeclaration) { + checkFunctionOrConstructorSymbol(symbol); + } + if (ts.nodeIsMissing(node.body)) { + return; + } + if (!produceDiagnostics) { + return; + } + function isSuperCallExpression(n) { + return n.kind === 157 && n.expression.kind === 91; + } + function containsSuperCall(n) { + if (isSuperCallExpression(n)) { + return true; + } + switch (n.kind) { + case 162: + case 200: + case 163: + case 154: return false; + default: return ts.forEachChild(n, containsSuperCall); + } + } + function markThisReferencesAsErrors(n) { + if (n.kind === 93) { + error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); + } + else if (n.kind !== 162 && n.kind !== 200) { + ts.forEachChild(n, markThisReferencesAsErrors); + } + } + function isInstancePropertyWithInitializer(n) { + return n.kind === 132 && + !(n.flags & 128) && + !!n.initializer; + } + if (ts.getClassExtendsHeritageClauseElement(node.parent)) { + if (containsSuperCall(node.body)) { + var superCallShouldBeFirst = ts.forEach(node.parent.members, isInstancePropertyWithInitializer) || + ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); + if (superCallShouldBeFirst) { + var statements = node.body.statements; + if (!statements.length || statements[0].kind !== 182 || !isSuperCallExpression(statements[0].expression)) { + error(node, ts.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); + } + else { + markThisReferencesAsErrors(statements[0].expression); + } + } + } + else { + error(node, ts.Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call); + } + } + } + function checkAccessorDeclaration(node) { + if (produceDiagnostics) { + checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); + if (node.kind === 136) { + if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && !(bodyContainsAReturnStatement(node.body) || bodyContainsSingleThrowStatement(node.body))) { + error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement); + } + } + if (!ts.hasDynamicName(node)) { + var otherKind = node.kind === 136 ? 137 : 136; + var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); + if (otherAccessor) { + if (((node.flags & 112) !== (otherAccessor.flags & 112))) { + error(node.name, ts.Diagnostics.Getter_and_setter_accessors_do_not_agree_in_visibility); + } + var currentAccessorType = getAnnotatedAccessorType(node); + var otherAccessorType = getAnnotatedAccessorType(otherAccessor); + if (currentAccessorType && otherAccessorType) { + if (!isTypeIdenticalTo(currentAccessorType, otherAccessorType)) { + error(node, ts.Diagnostics.get_and_set_accessor_must_have_the_same_type); + } + } + } + } + checkAndStoreTypeOfAccessors(getSymbolOfNode(node)); + } + checkFunctionLikeDeclaration(node); + } + function checkMissingDeclaration(node) { + checkDecorators(node); + } + function checkTypeReferenceNode(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkHeritageClauseElement(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkTypeReferenceOrHeritageClauseElement(node) { + checkGrammarTypeArguments(node, node.typeArguments); + var type = getTypeFromTypeReferenceOrHeritageClauseElement(node); + if (type !== unknownType && node.typeArguments) { + var len = node.typeArguments.length; + for (var i = 0; i < len; i++) { + checkSourceElement(node.typeArguments[i]); + var constraint = getConstraintOfTypeParameter(type.target.typeParameters[i]); + if (produceDiagnostics && constraint) { + var typeArgument = type.typeArguments[i]; + checkTypeAssignableTo(typeArgument, constraint, node, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + } + } + } + } + function checkTypeQuery(node) { + getTypeFromTypeQueryNode(node); + } + function checkTypeLiteral(node) { + ts.forEach(node.members, checkSourceElement); + if (produceDiagnostics) { + var type = getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); + checkIndexConstraints(type); + checkTypeForDuplicateIndexSignatures(node); + } + } + function checkArrayType(node) { + checkSourceElement(node.elementType); + } + function checkTupleType(node) { + var hasErrorFromDisallowedTrailingComma = checkGrammarForDisallowedTrailingComma(node.elementTypes); + if (!hasErrorFromDisallowedTrailingComma && node.elementTypes.length === 0) { + grammarErrorOnNode(node, ts.Diagnostics.A_tuple_type_element_list_cannot_be_empty); + } + ts.forEach(node.elementTypes, checkSourceElement); + } + function checkUnionType(node) { + ts.forEach(node.types, checkSourceElement); + } + function isPrivateWithinAmbient(node) { + return (node.flags & 32) && ts.isInAmbientContext(node); + } + function checkSpecializedSignatureDeclaration(signatureDeclarationNode) { + if (!produceDiagnostics) { + return; + } + var signature = getSignatureFromDeclaration(signatureDeclarationNode); + if (!signature.hasStringLiterals) { + return; + } + if (ts.nodeIsPresent(signatureDeclarationNode.body)) { + error(signatureDeclarationNode, ts.Diagnostics.A_signature_with_an_implementation_cannot_use_a_string_literal_type); + return; + } + var signaturesToCheck; + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 202) { + ts.Debug.assert(signatureDeclarationNode.kind === 138 || signatureDeclarationNode.kind === 139); + var signatureKind = signatureDeclarationNode.kind === 138 ? 0 : 1; + var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); + var containingType = getDeclaredTypeOfSymbol(containingSymbol); + signaturesToCheck = getSignaturesOfType(containingType, signatureKind); + } + else { + signaturesToCheck = getSignaturesOfSymbol(getSymbolOfNode(signatureDeclarationNode)); + } + for (var _i = 0; _i < signaturesToCheck.length; _i++) { + var otherSignature = signaturesToCheck[_i]; + if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { + return; + } + } + error(signatureDeclarationNode, ts.Diagnostics.Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature); + } + function getEffectiveDeclarationFlags(n, flagsToCheck) { + var flags = ts.getCombinedNodeFlags(n); + if (n.parent.kind !== 202 && ts.isInAmbientContext(n)) { + if (!(flags & 2)) { + flags |= 1; + } + flags |= 2; + } + return flags & flagsToCheck; + } + function checkFunctionOrConstructorSymbol(symbol) { + if (!produceDiagnostics) { + return; + } + function getCanonicalOverload(overloads, implementation) { + var implementationSharesContainerWithFirstOverload = implementation !== undefined && implementation.parent === overloads[0].parent; + return implementationSharesContainerWithFirstOverload ? implementation : overloads[0]; + } + function checkFlagAgreementBetweenOverloads(overloads, implementation, flagsToCheck, someOverloadFlags, allOverloadFlags) { + var someButNotAllOverloadFlags = someOverloadFlags ^ allOverloadFlags; + if (someButNotAllOverloadFlags !== 0) { + var canonicalFlags = getEffectiveDeclarationFlags(getCanonicalOverload(overloads, implementation), flagsToCheck); + ts.forEach(overloads, function (o) { + var deviation = getEffectiveDeclarationFlags(o, flagsToCheck) ^ canonicalFlags; + if (deviation & 1) { + error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_exported_or_not_exported); + } + else if (deviation & 2) { + error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_ambient_or_non_ambient); + } + else if (deviation & (32 | 64)) { + error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_public_private_or_protected); + } + }); + } + } + function checkQuestionTokenAgreementBetweenOverloads(overloads, implementation, someHaveQuestionToken, allHaveQuestionToken) { + if (someHaveQuestionToken !== allHaveQuestionToken) { + var canonicalHasQuestionToken = ts.hasQuestionToken(getCanonicalOverload(overloads, implementation)); + ts.forEach(overloads, function (o) { + var deviation = ts.hasQuestionToken(o) !== canonicalHasQuestionToken; + if (deviation) { + error(o.name, ts.Diagnostics.Overload_signatures_must_all_be_optional_or_required); + } + }); + } + } + var flagsToCheck = 1 | 2 | 32 | 64; + var someNodeFlags = 0; + var allNodeFlags = flagsToCheck; + var someHaveQuestionToken = false; + var allHaveQuestionToken = true; + var hasOverloads = false; + var bodyDeclaration; + var lastSeenNonAmbientDeclaration; + var previousDeclaration; + var declarations = symbol.declarations; + var isConstructor = (symbol.flags & 16384) !== 0; + function reportImplementationExpectedError(node) { + if (node.name && ts.nodeIsMissing(node.name)) { + return; + } + var seen = false; + var subsequentNode = ts.forEachChild(node.parent, function (c) { + if (seen) { + return c; + } + else { + seen = c === node; + } + }); + if (subsequentNode) { + if (subsequentNode.kind === node.kind) { + var errorNode_1 = subsequentNode.name || subsequentNode; + if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { + ts.Debug.assert(node.kind === 134 || node.kind === 133); + ts.Debug.assert((node.flags & 128) !== (subsequentNode.flags & 128)); + var diagnostic = node.flags & 128 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; + error(errorNode_1, diagnostic); + return; + } + else if (ts.nodeIsPresent(subsequentNode.body)) { + error(errorNode_1, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); + return; + } + } + } + var errorNode = node.name || node; + if (isConstructor) { + error(errorNode, ts.Diagnostics.Constructor_implementation_is_missing); + } + else { + error(errorNode, ts.Diagnostics.Function_implementation_is_missing_or_not_immediately_following_the_declaration); + } + } + var isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & 1536; + var duplicateFunctionDeclaration = false; + var multipleConstructorImplementation = false; + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var node = current; + var inAmbientContext = ts.isInAmbientContext(node); + var inAmbientContextOrInterface = node.parent.kind === 202 || node.parent.kind === 145 || inAmbientContext; + if (inAmbientContextOrInterface) { + previousDeclaration = undefined; + } + if (node.kind === 200 || node.kind === 134 || node.kind === 133 || node.kind === 135) { + var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); + someNodeFlags |= currentNodeFlags; + allNodeFlags &= currentNodeFlags; + someHaveQuestionToken = someHaveQuestionToken || ts.hasQuestionToken(node); + allHaveQuestionToken = allHaveQuestionToken && ts.hasQuestionToken(node); + if (ts.nodeIsPresent(node.body) && bodyDeclaration) { + if (isConstructor) { + multipleConstructorImplementation = true; + } + else { + duplicateFunctionDeclaration = true; + } + } + else if (!isExportSymbolInsideModule && previousDeclaration && previousDeclaration.parent === node.parent && previousDeclaration.end !== node.pos) { + reportImplementationExpectedError(previousDeclaration); + } + if (ts.nodeIsPresent(node.body)) { + if (!bodyDeclaration) { + bodyDeclaration = node; + } + } + else { + hasOverloads = true; + } + previousDeclaration = node; + if (!inAmbientContextOrInterface) { + lastSeenNonAmbientDeclaration = node; + } + } + } + if (multipleConstructorImplementation) { + ts.forEach(declarations, function (declaration) { + error(declaration, ts.Diagnostics.Multiple_constructor_implementations_are_not_allowed); + }); + } + if (duplicateFunctionDeclaration) { + ts.forEach(declarations, function (declaration) { + error(declaration.name, ts.Diagnostics.Duplicate_function_implementation); + }); + } + if (!isExportSymbolInsideModule && lastSeenNonAmbientDeclaration && !lastSeenNonAmbientDeclaration.body) { + reportImplementationExpectedError(lastSeenNonAmbientDeclaration); + } + if (hasOverloads) { + checkFlagAgreementBetweenOverloads(declarations, bodyDeclaration, flagsToCheck, someNodeFlags, allNodeFlags); + checkQuestionTokenAgreementBetweenOverloads(declarations, bodyDeclaration, someHaveQuestionToken, allHaveQuestionToken); + if (bodyDeclaration) { + var signatures = getSignaturesOfSymbol(symbol); + var bodySignature = getSignatureFromDeclaration(bodyDeclaration); + if (!bodySignature.hasStringLiterals) { + for (var _a = 0; _a < signatures.length; _a++) { + var signature = signatures[_a]; + if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); + break; + } + } + } + } + } + } + function checkExportsOnMergedDeclarations(node) { + if (!produceDiagnostics) { + return; + } + var symbol = node.localSymbol; + if (!symbol) { + symbol = getSymbolOfNode(node); + if (!(symbol.flags & 7340032)) { + return; + } + } + if (ts.getDeclarationOfKind(symbol, node.kind) !== node) { + return; + } + var exportedDeclarationSpaces = 0; + var nonExportedDeclarationSpaces = 0; + ts.forEach(symbol.declarations, function (d) { + var declarationSpaces = getDeclarationSpaces(d); + if (getEffectiveDeclarationFlags(d, 1)) { + exportedDeclarationSpaces |= declarationSpaces; + } + else { + nonExportedDeclarationSpaces |= declarationSpaces; + } + }); + var commonDeclarationSpace = exportedDeclarationSpaces & nonExportedDeclarationSpaces; + if (commonDeclarationSpace) { + ts.forEach(symbol.declarations, function (d) { + if (getDeclarationSpaces(d) & commonDeclarationSpace) { + error(d.name, ts.Diagnostics.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local, ts.declarationNameToString(d.name)); + } + }); + } + function getDeclarationSpaces(d) { + switch (d.kind) { + case 202: + return 2097152; + case 205: + return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 + ? 4194304 | 1048576 + : 4194304; + case 201: + case 204: + return 2097152 | 1048576; + case 208: + var result = 0; + var target = resolveAlias(getSymbolOfNode(d)); + ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); + return result; + default: + return 1048576; + } + } + } + function checkDecorator(node) { + var expression = node.expression; + var exprType = checkExpression(expression); + switch (node.parent.kind) { + case 201: + var classSymbol = getSymbolOfNode(node.parent); + var classConstructorType = getTypeOfSymbol(classSymbol); + var classDecoratorType = instantiateSingleCallFunctionType(globalClassDecoratorType, [classConstructorType]); + checkTypeAssignableTo(exprType, classDecoratorType, node); + break; + case 132: + checkTypeAssignableTo(exprType, globalPropertyDecoratorType, node); + break; + case 134: + case 136: + case 137: + var methodType = getTypeOfNode(node.parent); + var methodDecoratorType = instantiateSingleCallFunctionType(globalMethodDecoratorType, [methodType]); + checkTypeAssignableTo(exprType, methodDecoratorType, node); + break; + case 129: + checkTypeAssignableTo(exprType, globalParameterDecoratorType, node); + break; + } + } + function checkDecorators(node) { + if (!node.decorators) { + return; + } + switch (node.kind) { + case 201: + case 134: + case 136: + case 137: + case 132: + case 129: + emitDecorate = true; + break; + default: + return; + } + ts.forEach(node.decorators, checkDecorator); + } + function checkFunctionDeclaration(node) { + if (produceDiagnostics) { + checkFunctionLikeDeclaration(node) || + checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || + checkGrammarFunctionName(node.name) || + checkGrammarForGenerator(node); + checkCollisionWithCapturedSuperVariable(node, node.name); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } + } + function checkFunctionLikeDeclaration(node) { + checkDecorators(node); + checkSignatureDeclaration(node); + if (node.name && node.name.kind === 127) { + checkComputedPropertyName(node.name); + } + if (!ts.hasDynamicName(node)) { + var symbol = getSymbolOfNode(node); + var localSymbol = node.localSymbol || symbol; + var firstDeclaration = ts.getDeclarationOfKind(localSymbol, node.kind); + if (node === firstDeclaration) { + checkFunctionOrConstructorSymbol(localSymbol); + } + if (symbol.parent) { + if (ts.getDeclarationOfKind(symbol, node.kind) === node) { + checkFunctionOrConstructorSymbol(symbol); + } + } + } + checkSourceElement(node.body); + if (node.type && !isAccessor(node.kind)) { + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); + } + if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { + reportImplicitAnyError(node, anyType); + } + } + function checkBlock(node) { + if (node.kind === 179) { + checkGrammarStatementInAmbientContext(node); + } + ts.forEach(node.statements, checkSourceElement); + if (ts.isFunctionBlock(node) || node.kind === 206) { + checkFunctionExpressionBodies(node); + } + } + function checkCollisionWithArgumentsInGeneratedCode(node) { + if (!ts.hasRestParameters(node) || ts.isInAmbientContext(node) || ts.nodeIsMissing(node.body)) { + return; + } + ts.forEach(node.parameters, function (p) { + if (p.name && !ts.isBindingPattern(p.name) && p.name.text === argumentsSymbol.name) { + error(p, ts.Diagnostics.Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters); + } + }); + } + function needCollisionCheckForIdentifier(node, identifier, name) { + if (!(identifier && identifier.text === name)) { + return false; + } + if (node.kind === 132 || + node.kind === 131 || + node.kind === 134 || + node.kind === 133 || + node.kind === 136 || + node.kind === 137) { + return false; + } + if (ts.isInAmbientContext(node)) { + return false; + } + var root = getRootDeclaration(node); + if (root.kind === 129 && ts.nodeIsMissing(root.parent.body)) { + return false; + } + return true; + } + function checkCollisionWithCapturedThisVariable(node, name) { + if (needCollisionCheckForIdentifier(node, name, "_this")) { + potentialThisCollisions.push(node); + } + } + function checkIfThisIsCapturedInEnclosingScope(node) { + var current = node; + while (current) { + if (getNodeCheckFlags(current) & 4) { + var isDeclaration_1 = node.kind !== 65; + if (isDeclaration_1) { + error(node.name, ts.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference); + } + else { + error(node, ts.Diagnostics.Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference); + } + return; + } + current = current.parent; + } + } + function checkCollisionWithCapturedSuperVariable(node, name) { + if (!needCollisionCheckForIdentifier(node, name, "_super")) { + return; + } + var enclosingClass = ts.getAncestor(node, 201); + if (!enclosingClass || ts.isInAmbientContext(enclosingClass)) { + return; + } + if (ts.getClassExtendsHeritageClauseElement(enclosingClass)) { + var isDeclaration_2 = node.kind !== 65; + if (isDeclaration_2) { + error(node, ts.Diagnostics.Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference); + } + else { + error(node, ts.Diagnostics.Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference); + } + } + } + function checkCollisionWithRequireExportsInGeneratedCode(node, name) { + if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { + return; + } + if (node.kind === 205 && ts.getModuleInstanceState(node) !== 1) { + return; + } + var parent = getDeclarationContainer(node); + if (parent.kind === 227 && ts.isExternalModule(parent)) { + error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); + } + } + function checkVarDeclaredNamesNotShadowed(node) { + // - ScriptBody : StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // also occurs in the VarDeclaredNames of StatementList. + if ((ts.getCombinedNodeFlags(node) & 12288) !== 0 || isParameterDeclaration(node)) { + return; + } + if (node.kind === 198 && !node.initializer) { + return; + } + var symbol = getSymbolOfNode(node); + if (symbol.flags & 1) { + var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); + if (localDeclarationSymbol && + localDeclarationSymbol !== symbol && + localDeclarationSymbol.flags & 2) { + if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 12288) { + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 199); + var container = varDeclList.parent.kind === 180 && varDeclList.parent.parent + ? varDeclList.parent.parent + : undefined; + var namesShareScope = container && + (container.kind === 179 && ts.isFunctionLike(container.parent) || + container.kind === 206 || + container.kind === 205 || + container.kind === 227); + if (!namesShareScope) { + var name_9 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_9, name_9); + } + } + } + } + } + function isParameterDeclaration(node) { + while (node.kind === 152) { + node = node.parent.parent; + } + return node.kind === 129; + } + function checkParameterInitializer(node) { + if (getRootDeclaration(node).kind !== 129) { + return; + } + var func = ts.getContainingFunction(node); + visit(node.initializer); + function visit(n) { + if (n.kind === 65) { + var referencedSymbol = getNodeLinks(n).resolvedSymbol; + if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { + if (referencedSymbol.valueDeclaration.kind === 129) { + if (referencedSymbol.valueDeclaration === node) { + error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); + return; + } + if (referencedSymbol.valueDeclaration.pos < node.pos) { + return; + } + } + error(n, ts.Diagnostics.Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it, ts.declarationNameToString(node.name), ts.declarationNameToString(n)); + } + } + else { + ts.forEachChild(n, visit); + } + } + } + function checkVariableLikeDeclaration(node) { + checkDecorators(node); + checkSourceElement(node.type); + if (node.name.kind === 127) { + checkComputedPropertyName(node.name); + if (node.initializer) { + checkExpressionCached(node.initializer); + } + } + if (ts.isBindingPattern(node.name)) { + ts.forEach(node.name.elements, checkSourceElement); + } + if (node.initializer && getRootDeclaration(node).kind === 129 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); + return; + } + if (ts.isBindingPattern(node.name)) { + if (node.initializer) { + checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, undefined); + checkParameterInitializer(node); + } + return; + } + var symbol = getSymbolOfNode(node); + var type = getTypeOfVariableOrParameterOrProperty(symbol); + if (node === symbol.valueDeclaration) { + if (node.initializer) { + checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, undefined); + checkParameterInitializer(node); + } + } + else { + var declarationType = getWidenedTypeForVariableLikeDeclaration(node); + if (type !== unknownType && declarationType !== unknownType && !isTypeIdenticalTo(type, declarationType)) { + error(node.name, ts.Diagnostics.Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2, ts.declarationNameToString(node.name), typeToString(type), typeToString(declarationType)); + } + if (node.initializer) { + checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); + } + } + if (node.kind !== 132 && node.kind !== 131) { + checkExportsOnMergedDeclarations(node); + if (node.kind === 198 || node.kind === 152) { + checkVarDeclaredNamesNotShadowed(node); + } + checkCollisionWithCapturedSuperVariable(node, node.name); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } + } + function checkVariableDeclaration(node) { + checkGrammarVariableDeclaration(node); + return checkVariableLikeDeclaration(node); + } + function checkBindingElement(node) { + checkGrammarBindingElement(node); + return checkVariableLikeDeclaration(node); + } + function checkVariableStatement(node) { + checkGrammarDecorators(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); + ts.forEach(node.declarationList.declarations, checkSourceElement); + } + function checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) { + if (node.modifiers) { + if (inBlockOrObjectLiteralExpression(node)) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); + } + } + } + function inBlockOrObjectLiteralExpression(node) { + while (node) { + if (node.kind === 179 || node.kind === 154) { + return true; + } + node = node.parent; + } + } + function checkExpressionStatement(node) { + checkGrammarStatementInAmbientContext(node); + checkExpression(node.expression); + } + function checkIfStatement(node) { + checkGrammarStatementInAmbientContext(node); + checkExpression(node.expression); + checkSourceElement(node.thenStatement); + checkSourceElement(node.elseStatement); + } + function checkDoStatement(node) { + checkGrammarStatementInAmbientContext(node); + checkSourceElement(node.statement); + checkExpression(node.expression); + } + function checkWhileStatement(node) { + checkGrammarStatementInAmbientContext(node); + checkExpression(node.expression); + checkSourceElement(node.statement); + } + function checkForStatement(node) { + if (!checkGrammarStatementInAmbientContext(node)) { + if (node.initializer && node.initializer.kind == 199) { + checkGrammarVariableDeclarationList(node.initializer); + } + } + if (node.initializer) { + if (node.initializer.kind === 199) { + ts.forEach(node.initializer.declarations, checkVariableDeclaration); + } + else { + checkExpression(node.initializer); + } + } + if (node.condition) + checkExpression(node.condition); + if (node.iterator) + checkExpression(node.iterator); + checkSourceElement(node.statement); + } + function checkForOfStatement(node) { + checkGrammarForInOrForOfStatement(node); + if (node.initializer.kind === 199) { + checkForInOrForOfVariableDeclaration(node); + } + else { + var varExpr = node.initializer; + var iteratedType = checkRightHandSideOfForOf(node.expression); + if (varExpr.kind === 153 || varExpr.kind === 154) { + checkDestructuringAssignment(varExpr, iteratedType || unknownType); + } + else { + var leftType = checkExpression(varExpr); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_of_statement, ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant); + if (iteratedType) { + checkTypeAssignableTo(iteratedType, leftType, varExpr, undefined); + } + } + } + checkSourceElement(node.statement); + } + function checkForInStatement(node) { + checkGrammarForInOrForOfStatement(node); + if (node.initializer.kind === 199) { + var variable = node.initializer.declarations[0]; + if (variable && ts.isBindingPattern(variable.name)) { + error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + checkForInOrForOfVariableDeclaration(node); + } + else { + var varExpr = node.initializer; + var leftType = checkExpression(varExpr); + if (varExpr.kind === 153 || varExpr.kind === 154) { + error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + else if (!allConstituentTypesHaveKind(leftType, 1 | 258)) { + error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); + } + else { + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant); + } + } + var rightType = checkExpression(node.expression); + if (!allConstituentTypesHaveKind(rightType, 1 | 48128 | 512)) { + error(node.expression, ts.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter); + } + checkSourceElement(node.statement); + } + function checkForInOrForOfVariableDeclaration(iterationStatement) { + var variableDeclarationList = iterationStatement.initializer; + if (variableDeclarationList.declarations.length >= 1) { + var decl = variableDeclarationList.declarations[0]; + checkVariableDeclaration(decl); + } + } + function checkRightHandSideOfForOf(rhsExpression) { + var expressionType = getTypeOfExpression(rhsExpression); + return languageVersion >= 2 + ? checkIteratedType(expressionType, rhsExpression) + : checkElementTypeOfArrayOrString(expressionType, rhsExpression); + } + function checkIteratedType(iterable, expressionForError) { + ts.Debug.assert(languageVersion >= 2); + var iteratedType = getIteratedType(iterable, expressionForError); + if (expressionForError && iteratedType) { + var completeIterableType = globalIterableType !== emptyObjectType + ? createTypeReference(globalIterableType, [iteratedType]) + : emptyObjectType; + checkTypeAssignableTo(iterable, completeIterableType, expressionForError); + } + return iteratedType; + function getIteratedType(iterable, expressionForError) { + // We want to treat type as an iterable, and get the type it is an iterable of. The iterable + // must have the following structure (annotated with the names of the variables below): + // + // { // iterable + // [Symbol.iterator]: { // iteratorFunction + // (): { // iterator + // next: { // iteratorNextFunction + // (): { // iteratorNextResult + // value: T // iteratorNextValue + // } + // } + // } + // } + // } + // + // T is the type we are after. At every level that involves analyzing return types + // of signatures, we union the return types of all the signatures. + // + // Another thing to note is that at any step of this process, we could run into a dead end, + // meaning either the property is missing, or we run into the anyType. If either of these things + // happens, we return undefined to signal that we could not find the iterated type. If a property + // is missing, and the previous step did not result in 'any', then we also give an error if the + // caller requested it. Then the caller can decide what to do in the case where there is no iterated + // type. This is different from returning anyType, because that would signify that we have matched the + // whole pattern and that T (above) is 'any'. + if (allConstituentTypesHaveKind(iterable, 1)) { + return undefined; + } + var iteratorFunction = getTypeOfPropertyOfType(iterable, ts.getPropertyNameForKnownSymbolName("iterator")); + if (iteratorFunction && allConstituentTypesHaveKind(iteratorFunction, 1)) { + return undefined; + } + var iteratorFunctionSignatures = iteratorFunction ? getSignaturesOfType(iteratorFunction, 0) : emptyArray; + if (iteratorFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator); + } + return undefined; + } + var iterator = getUnionType(ts.map(iteratorFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iterator, 1)) { + return undefined; + } + var iteratorNextFunction = getTypeOfPropertyOfType(iterator, "next"); + if (iteratorNextFunction && allConstituentTypesHaveKind(iteratorNextFunction, 1)) { + return undefined; + } + var iteratorNextFunctionSignatures = iteratorNextFunction ? getSignaturesOfType(iteratorNextFunction, 0) : emptyArray; + if (iteratorNextFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method); + } + return undefined; + } + var iteratorNextResult = getUnionType(ts.map(iteratorNextFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iteratorNextResult, 1)) { + return undefined; + } + var iteratorNextValue = getTypeOfPropertyOfType(iteratorNextResult, "value"); + if (!iteratorNextValue) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property); + } + return undefined; + } + return iteratorNextValue; + } + } + function checkElementTypeOfArrayOrString(arrayOrStringType, expressionForError) { + ts.Debug.assert(languageVersion < 2); + var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var hasStringConstituent = arrayOrStringType !== arrayType; + var reportedError = false; + if (hasStringConstituent) { + if (languageVersion < 1) { + error(expressionForError, ts.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher); + reportedError = true; + } + if (arrayType === emptyObjectType) { + return stringType; + } + } + if (!isArrayLikeType(arrayType)) { + if (!reportedError) { + var diagnostic = hasStringConstituent + ? ts.Diagnostics.Type_0_is_not_an_array_type + : ts.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type; + error(expressionForError, diagnostic, typeToString(arrayType)); + } + return hasStringConstituent ? stringType : unknownType; + } + var arrayElementType = getIndexTypeOfType(arrayType, 1) || unknownType; + if (hasStringConstituent) { + if (arrayElementType.flags & 258) { + return stringType; + } + return getUnionType([arrayElementType, stringType]); + } + return arrayElementType; + } + function checkBreakOrContinueStatement(node) { + checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); + } + function isGetAccessorWithAnnotatatedSetAccessor(node) { + return !!(node.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 137))); + } + function checkReturnStatement(node) { + if (!checkGrammarStatementInAmbientContext(node)) { + var functionBlock = ts.getContainingFunction(node); + if (!functionBlock) { + grammarErrorOnFirstToken(node, ts.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); + } + } + if (node.expression) { + var func = ts.getContainingFunction(node); + if (func) { + var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + var exprType = checkExpressionCached(node.expression); + if (func.kind === 137) { + error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); + } + else { + if (func.kind === 135) { + if (!isTypeAssignableTo(exprType, returnType)) { + error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); + } + } + else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func)) { + checkTypeAssignableTo(exprType, returnType, node.expression, undefined); + } + } + } + } + } + function checkWithStatement(node) { + if (!checkGrammarStatementInAmbientContext(node)) { + if (node.parserContextFlags & 1) { + grammarErrorOnFirstToken(node, ts.Diagnostics.with_statements_are_not_allowed_in_strict_mode); + } + } + checkExpression(node.expression); + error(node.expression, ts.Diagnostics.All_symbols_within_a_with_block_will_be_resolved_to_any); + } + function checkSwitchStatement(node) { + checkGrammarStatementInAmbientContext(node); + var firstDefaultClause; + var hasDuplicateDefaultClause = false; + var expressionType = checkExpression(node.expression); + ts.forEach(node.caseBlock.clauses, function (clause) { + if (clause.kind === 221 && !hasDuplicateDefaultClause) { + if (firstDefaultClause === undefined) { + firstDefaultClause = clause; + } + else { + var sourceFile = ts.getSourceFileOfNode(node); + var start = ts.skipTrivia(sourceFile.text, clause.pos); + var end = clause.statements.length > 0 ? clause.statements[0].pos : clause.end; + grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement); + hasDuplicateDefaultClause = true; + } + } + if (produceDiagnostics && clause.kind === 220) { + var caseClause = clause; + var caseType = checkExpression(caseClause.expression); + if (!isTypeAssignableTo(expressionType, caseType)) { + checkTypeAssignableTo(caseType, expressionType, caseClause.expression, undefined); + } + } + ts.forEach(clause.statements, checkSourceElement); + }); + } + function checkLabeledStatement(node) { + if (!checkGrammarStatementInAmbientContext(node)) { + var current = node.parent; + while (current) { + if (ts.isFunctionLike(current)) { + break; + } + if (current.kind === 194 && current.label.text === node.label.text) { + var sourceFile = ts.getSourceFileOfNode(node); + grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); + break; + } + current = current.parent; + } + } + checkSourceElement(node.statement); + } + function checkThrowStatement(node) { + if (!checkGrammarStatementInAmbientContext(node)) { + if (node.expression === undefined) { + grammarErrorAfterFirstToken(node, ts.Diagnostics.Line_break_not_permitted_here); + } + } + if (node.expression) { + checkExpression(node.expression); + } + } + function checkTryStatement(node) { + checkGrammarStatementInAmbientContext(node); + checkBlock(node.tryBlock); + var catchClause = node.catchClause; + if (catchClause) { + if (catchClause.variableDeclaration) { + if (catchClause.variableDeclaration.name.kind !== 65) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.name, ts.Diagnostics.Catch_clause_variable_name_must_be_an_identifier); + } + else if (catchClause.variableDeclaration.type) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.type, ts.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation); + } + else if (catchClause.variableDeclaration.initializer) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.initializer, ts.Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + } + else { + var identifierName = catchClause.variableDeclaration.name.text; + var locals = catchClause.block.locals; + if (locals && ts.hasProperty(locals, identifierName)) { + var localSymbol = locals[identifierName]; + if (localSymbol && (localSymbol.flags & 2) !== 0) { + grammarErrorOnNode(localSymbol.valueDeclaration, ts.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, identifierName); + } + } + checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.variableDeclaration.name); + } + } + checkBlock(catchClause.block); + } + if (node.finallyBlock) { + checkBlock(node.finallyBlock); + } + } + function checkIndexConstraints(type) { + var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1); + var declaredStringIndexer = getIndexDeclarationOfSymbol(type.symbol, 0); + var stringIndexType = getIndexTypeOfType(type, 0); + var numberIndexType = getIndexTypeOfType(type, 1); + if (stringIndexType || numberIndexType) { + ts.forEach(getPropertiesOfObjectType(type), function (prop) { + var propType = getTypeOfSymbol(prop); + checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0); + checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1); + }); + if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 201) { + var classDeclaration = type.symbol.valueDeclaration; + for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) { + var member = _a[_i]; + if (!(member.flags & 128) && ts.hasDynamicName(member)) { + var propType = getTypeOfSymbol(member.symbol); + checkIndexConstraintForProperty(member.symbol, propType, type, declaredStringIndexer, stringIndexType, 0); + checkIndexConstraintForProperty(member.symbol, propType, type, declaredNumberIndexer, numberIndexType, 1); + } + } + } + } + var errorNode; + if (stringIndexType && numberIndexType) { + errorNode = declaredNumberIndexer || declaredStringIndexer; + if (!errorNode && (type.flags & 2048)) { + var someBaseTypeHasBothIndexers = ts.forEach(type.baseTypes, function (base) { return getIndexTypeOfType(base, 0) && getIndexTypeOfType(base, 1); }); + errorNode = someBaseTypeHasBothIndexers ? undefined : type.symbol.declarations[0]; + } + } + if (errorNode && !isTypeAssignableTo(numberIndexType, stringIndexType)) { + error(errorNode, ts.Diagnostics.Numeric_index_type_0_is_not_assignable_to_string_index_type_1, typeToString(numberIndexType), typeToString(stringIndexType)); + } + function checkIndexConstraintForProperty(prop, propertyType, containingType, indexDeclaration, indexType, indexKind) { + if (!indexType) { + return; + } + if (indexKind === 1 && !isNumericName(prop.valueDeclaration.name)) { + return; + } + var errorNode; + if (prop.valueDeclaration.name.kind === 127 || prop.parent === containingType.symbol) { + errorNode = prop.valueDeclaration; + } + else if (indexDeclaration) { + errorNode = indexDeclaration; + } + else if (containingType.flags & 2048) { + var someBaseClassHasBothPropertyAndIndexer = ts.forEach(containingType.baseTypes, function (base) { return getPropertyOfObjectType(base, prop.name) && getIndexTypeOfType(base, indexKind); }); + errorNode = someBaseClassHasBothPropertyAndIndexer ? undefined : containingType.symbol.declarations[0]; + } + if (errorNode && !isTypeAssignableTo(propertyType, indexType)) { + var errorMessage = indexKind === 0 + ? ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 + : ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; + error(errorNode, errorMessage, symbolToString(prop), typeToString(propertyType), typeToString(indexType)); + } + } + } + function checkTypeNameIsReserved(name, message) { + switch (name.text) { + case "any": + case "number": + case "boolean": + case "string": + case "symbol": + case "void": + error(name, message, name.text); + } + } + function checkTypeParameters(typeParameterDeclarations) { + if (typeParameterDeclarations) { + for (var i = 0, n = typeParameterDeclarations.length; i < n; i++) { + var node = typeParameterDeclarations[i]; + checkTypeParameter(node); + if (produceDiagnostics) { + for (var j = 0; j < i; j++) { + if (typeParameterDeclarations[j].symbol === node.symbol) { + error(node.name, ts.Diagnostics.Duplicate_identifier_0, ts.declarationNameToString(node.name)); + } + } + } + } + } + } + function checkClassExpression(node) { + grammarErrorOnNode(node, ts.Diagnostics.class_expressions_are_not_currently_supported); + ts.forEach(node.members, checkSourceElement); + return unknownType; + } + function checkClassDeclaration(node) { + if (node.parent.kind !== 206 && node.parent.kind !== 227) { + grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + } + checkGrammarClassDeclarationHeritageClauses(node); + checkDecorators(node); + if (node.name) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } + checkTypeParameters(node.typeParameters); + checkExportsOnMergedDeclarations(node); + var symbol = getSymbolOfNode(node); + var type = getDeclaredTypeOfSymbol(symbol); + var staticType = getTypeOfSymbol(symbol); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + if (!ts.isSupportedHeritageClauseElement(baseTypeNode)) { + error(baseTypeNode.expression, ts.Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); + } + emitExtends = emitExtends || !ts.isInAmbientContext(node); + checkHeritageClauseElement(baseTypeNode); + } + if (type.baseTypes.length) { + if (produceDiagnostics) { + var baseType = type.baseTypes[0]; + checkTypeAssignableTo(type, baseType, node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); + var staticBaseType = getTypeOfSymbol(baseType.symbol); + checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); + if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, 107455)) { + error(baseTypeNode, ts.Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); + } + checkKindsOfPropertyMemberOverrides(type, baseType); + } + } + if (type.baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) { + checkExpressionOrQualifiedName(baseTypeNode.expression); + } + var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node); + if (implementedTypeNodes) { + ts.forEach(implementedTypeNodes, function (typeRefNode) { + if (!ts.isSupportedHeritageClauseElement(typeRefNode)) { + error(typeRefNode.expression, ts.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(typeRefNode); + if (produceDiagnostics) { + var t = getTypeFromHeritageClauseElement(typeRefNode); + if (t !== unknownType) { + var declaredType = (t.flags & 4096) ? t.target : t; + if (declaredType.flags & (1024 | 2048)) { + checkTypeAssignableTo(type, t, node.name || node, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); + } + else { + error(typeRefNode, ts.Diagnostics.A_class_may_only_implement_another_class_or_interface); + } + } + } + }); + } + ts.forEach(node.members, checkSourceElement); + if (produceDiagnostics) { + checkIndexConstraints(type); + checkTypeForDuplicateIndexSignatures(node); + } + } + function getTargetSymbol(s) { + return s.flags & 16777216 ? getSymbolLinks(s).target : s; + } + function checkKindsOfPropertyMemberOverrides(type, baseType) { + // TypeScript 1.0 spec (April 2014): 8.2.3 + // A derived class inherits all members from its base class it doesn't override. + // Inheritance means that a derived class implicitly contains all non - overridden members of the base class. + // Both public and private property members are inherited, but only public property members can be overridden. + // A property member in a derived class is said to override a property member in a base class + // when the derived class property member has the same name and kind(instance or static) + // as the base class property member. + // The type of an overriding property member must be assignable(section 3.8.4) + // to the type of the overridden property member, or otherwise a compile - time error occurs. + // Base class instance member functions can be overridden by derived class instance member functions, + // but not by other kinds of members. + // Base class instance member variables and accessors can be overridden by + // derived class instance member variables and accessors, but not by other kinds of members. + var baseProperties = getPropertiesOfObjectType(baseType); + for (var _i = 0; _i < baseProperties.length; _i++) { + var baseProperty = baseProperties[_i]; + var base = getTargetSymbol(baseProperty); + if (base.flags & 134217728) { + continue; + } + var derived = getTargetSymbol(getPropertyOfObjectType(type, base.name)); + if (derived) { + var baseDeclarationFlags = getDeclarationFlagsFromSymbol(base); + var derivedDeclarationFlags = getDeclarationFlagsFromSymbol(derived); + if ((baseDeclarationFlags & 32) || (derivedDeclarationFlags & 32)) { + continue; + } + if ((baseDeclarationFlags & 128) !== (derivedDeclarationFlags & 128)) { + continue; + } + if ((base.flags & derived.flags & 8192) || ((base.flags & 98308) && (derived.flags & 98308))) { + continue; + } + var errorMessage = void 0; + if (base.flags & 8192) { + if (derived.flags & 98304) { + errorMessage = ts.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; + } + else { + ts.Debug.assert((derived.flags & 4) !== 0); + errorMessage = ts.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property; + } + } + else if (base.flags & 4) { + ts.Debug.assert((derived.flags & 8192) !== 0); + errorMessage = ts.Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function; + } + else { + ts.Debug.assert((base.flags & 98304) !== 0); + ts.Debug.assert((derived.flags & 8192) !== 0); + errorMessage = ts.Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function; + } + error(derived.valueDeclaration.name, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type)); + } + } + } + function isAccessor(kind) { + return kind === 136 || kind === 137; + } + function areTypeParametersIdentical(list1, list2) { + if (!list1 && !list2) { + return true; + } + if (!list1 || !list2 || list1.length !== list2.length) { + return false; + } + for (var i = 0, len = list1.length; i < len; i++) { + var tp1 = list1[i]; + var tp2 = list2[i]; + if (tp1.name.text !== tp2.name.text) { + return false; + } + if (!tp1.constraint && !tp2.constraint) { + continue; + } + if (!tp1.constraint || !tp2.constraint) { + return false; + } + if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement(tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement(tp2.constraint))) { + return false; + } + } + return true; + } + function checkInheritedPropertiesAreIdentical(type, typeNode) { + if (!type.baseTypes.length || type.baseTypes.length === 1) { + return true; + } + var seen = {}; + ts.forEach(type.declaredProperties, function (p) { seen[p.name] = { prop: p, containingType: type }; }); + var ok = true; + for (var _i = 0, _a = type.baseTypes; _i < _a.length; _i++) { + var base = _a[_i]; + var properties = getPropertiesOfObjectType(base); + for (var _b = 0; _b < properties.length; _b++) { + var prop = properties[_b]; + if (!ts.hasProperty(seen, prop.name)) { + seen[prop.name] = { prop: prop, containingType: base }; + } + else { + var existing = seen[prop.name]; + var isInheritedProperty = existing.containingType !== type; + if (isInheritedProperty && !isPropertyIdenticalTo(existing.prop, prop)) { + ok = false; + var typeName1 = typeToString(existing.containingType); + var typeName2 = typeToString(base); + var errorInfo = ts.chainDiagnosticMessages(undefined, ts.Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical, symbolToString(prop), typeName1, typeName2); + errorInfo = ts.chainDiagnosticMessages(errorInfo, ts.Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); + diagnostics.add(ts.createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); + } + } + } + } + return ok; + } + function checkInterfaceDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkTypeParameters(node.typeParameters); + if (produceDiagnostics) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); + checkExportsOnMergedDeclarations(node); + var symbol = getSymbolOfNode(node); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 202); + if (symbol.declarations.length > 1) { + if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { + error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); + } + } + if (node === firstInterfaceDecl) { + var type = getDeclaredTypeOfSymbol(symbol); + if (checkInheritedPropertiesAreIdentical(type, node.name)) { + ts.forEach(type.baseTypes, function (baseType) { + checkTypeAssignableTo(type, baseType, node.name, ts.Diagnostics.Interface_0_incorrectly_extends_interface_1); + }); + checkIndexConstraints(type); + } + } + } + ts.forEach(ts.getInterfaceBaseTypeNodes(node), function (heritageElement) { + if (!ts.isSupportedHeritageClauseElement(heritageElement)) { + error(heritageElement.expression, ts.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(heritageElement); + }); + ts.forEach(node.members, checkSourceElement); + if (produceDiagnostics) { + checkTypeForDuplicateIndexSignatures(node); + } + } + function checkTypeAliasDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_alias_name_cannot_be_0); + checkSourceElement(node.type); + } + function computeEnumMemberValues(node) { + var nodeLinks = getNodeLinks(node); + if (!(nodeLinks.flags & 128)) { + var enumSymbol = getSymbolOfNode(node); + var enumType = getDeclaredTypeOfSymbol(enumSymbol); + var autoValue = 0; + var ambient = ts.isInAmbientContext(node); + var enumIsConst = ts.isConst(node); + ts.forEach(node.members, function (member) { + if (member.name.kind !== 127 && isNumericLiteralName(member.name.text)) { + error(member.name, ts.Diagnostics.An_enum_member_cannot_have_a_numeric_name); + } + var initializer = member.initializer; + if (initializer) { + autoValue = getConstantValueForEnumMemberInitializer(initializer); + if (autoValue === undefined) { + if (enumIsConst) { + error(initializer, ts.Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); + } + else if (!ambient) { + checkTypeAssignableTo(checkExpression(initializer), enumType, initializer, undefined); + } + } + else if (enumIsConst) { + if (isNaN(autoValue)) { + error(initializer, ts.Diagnostics.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN); + } + else if (!isFinite(autoValue)) { + error(initializer, ts.Diagnostics.const_enum_member_initializer_was_evaluated_to_a_non_finite_value); + } + } + } + else if (ambient && !enumIsConst) { + autoValue = undefined; + } + if (autoValue !== undefined) { + getNodeLinks(member).enumMemberValue = autoValue++; + } + }); + nodeLinks.flags |= 128; + } + function getConstantValueForEnumMemberInitializer(initializer) { + return evalConstant(initializer); + function evalConstant(e) { + switch (e.kind) { + case 167: + var value = evalConstant(e.operand); + if (value === undefined) { + return undefined; + } + switch (e.operator) { + case 33: return value; + case 34: return -value; + case 47: return ~value; + } + return undefined; + case 169: + var left = evalConstant(e.left); + if (left === undefined) { + return undefined; + } + var right = evalConstant(e.right); + if (right === undefined) { + return undefined; + } + switch (e.operatorToken.kind) { + case 44: return left | right; + case 43: return left & right; + case 41: return left >> right; + case 42: return left >>> right; + case 40: return left << right; + case 45: return left ^ right; + case 35: return left * right; + case 36: return left / right; + case 33: return left + right; + case 34: return left - right; + case 37: return left % right; + } + return undefined; + case 7: + return +e.text; + case 161: + return evalConstant(e.expression); + case 65: + case 156: + case 155: + var member = initializer.parent; + var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); + var enumType; + var propertyName; + if (e.kind === 65) { + enumType = currentType; + propertyName = e.text; + } + else { + var expression; + if (e.kind === 156) { + if (e.argumentExpression === undefined || + e.argumentExpression.kind !== 8) { + return undefined; + } + expression = e.expression; + propertyName = e.argumentExpression.text; + } + else { + expression = e.expression; + propertyName = e.name.text; + } + var current = expression; + while (current) { + if (current.kind === 65) { + break; + } + else if (current.kind === 155) { + current = current.expression; + } + else { + return undefined; + } + } + enumType = checkExpression(expression); + if (!(enumType.symbol && (enumType.symbol.flags & 384))) { + return undefined; + } + } + if (propertyName === undefined) { + return undefined; + } + var property = getPropertyOfObjectType(enumType, propertyName); + if (!property || !(property.flags & 8)) { + return undefined; + } + var propertyDecl = property.valueDeclaration; + if (member === propertyDecl) { + return undefined; + } + if (!isDefinedBefore(propertyDecl, member)) { + return undefined; + } + return getNodeLinks(propertyDecl).enumMemberValue; + } + } + } + } + function checkEnumDeclaration(node) { + if (!produceDiagnostics) { + return; + } + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + checkExportsOnMergedDeclarations(node); + computeEnumMemberValues(node); + var enumIsConst = ts.isConst(node); + if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) { + error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided); + } + var enumSymbol = getSymbolOfNode(node); + var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind); + if (node === firstDeclaration) { + if (enumSymbol.declarations.length > 1) { + ts.forEach(enumSymbol.declarations, function (decl) { + if (ts.isConstEnumDeclaration(decl) !== enumIsConst) { + error(decl.name, ts.Diagnostics.Enum_declarations_must_all_be_const_or_non_const); + } + }); + } + var seenEnumMissingInitialInitializer = false; + ts.forEach(enumSymbol.declarations, function (declaration) { + if (declaration.kind !== 204) { + return false; + } + var enumDeclaration = declaration; + if (!enumDeclaration.members.length) { + return false; + } + var firstEnumMember = enumDeclaration.members[0]; + if (!firstEnumMember.initializer) { + if (seenEnumMissingInitialInitializer) { + error(firstEnumMember.name, ts.Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element); + } + else { + seenEnumMissingInitialInitializer = true; + } + } + }); + } + } + function getFirstNonAmbientClassOrFunctionDeclaration(symbol) { + var declarations = symbol.declarations; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + if ((declaration.kind === 201 || (declaration.kind === 200 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { + return declaration; + } + } + return undefined; + } + function checkModuleDeclaration(node) { + if (produceDiagnostics) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { + if (!ts.isInAmbientContext(node) && node.name.kind === 8) { + grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); + } + } + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + checkExportsOnMergedDeclarations(node); + var symbol = getSymbolOfNode(node); + if (symbol.flags & 512 + && symbol.declarations.length > 1 + && !ts.isInAmbientContext(node) + && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) { + var classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + if (classOrFunc) { + if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(classOrFunc)) { + error(node.name, ts.Diagnostics.A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); + } + else if (node.pos < classOrFunc.pos) { + error(node.name, ts.Diagnostics.A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + } + } + } + if (node.name.kind === 8) { + if (!isGlobalSourceFile(node.parent)) { + error(node.name, ts.Diagnostics.Ambient_external_modules_cannot_be_nested_in_other_modules); + } + if (isExternalModuleNameRelative(node.name.text)) { + error(node.name, ts.Diagnostics.Ambient_external_module_declaration_cannot_specify_relative_module_name); + } + } + } + checkSourceElement(node.body); + } + function getFirstIdentifier(node) { + while (true) { + if (node.kind === 126) { + node = node.left; + } + else if (node.kind === 155) { + node = node.expression; + } + else { + break; + } + } + ts.Debug.assert(node.kind === 65); + return node; + } + function checkExternalImportOrExportDeclaration(node) { + var moduleName = ts.getExternalModuleName(node); + if (!ts.nodeIsMissing(moduleName) && moduleName.kind !== 8) { + error(moduleName, ts.Diagnostics.String_literal_expected); + return false; + } + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(moduleName, node.kind === 215 ? + ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module : + ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); + return false; + } + if (inAmbientExternalModule && isExternalModuleNameRelative(moduleName.text)) { + error(node, ts.Diagnostics.Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); + return false; + } + return true; + } + function checkAliasSymbol(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target !== unknownSymbol) { + var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | + (symbol.flags & 793056 ? 793056 : 0) | + (symbol.flags & 1536 ? 1536 : 0); + if (target.flags & excludedMeanings) { + var message = node.kind === 217 ? + ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : + ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; + error(node, message, symbolToString(symbol)); + } + } + } + function checkImportBinding(node) { + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + checkAliasSymbol(node); + } + function checkImportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); + } + if (checkExternalImportOrExportDeclaration(node)) { + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + checkImportBinding(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + checkImportBinding(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, checkImportBinding); + } + } + } + } + } + function checkImportEqualsDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { + checkImportBinding(node); + if (node.flags & 1) { + markExportAsReferenced(node); + } + if (ts.isInternalModuleImportEqualsDeclaration(node)) { + var target = resolveAlias(getSymbolOfNode(node)); + if (target !== unknownSymbol) { + if (target.flags & 107455) { + var moduleName = getFirstIdentifier(node.moduleReference); + if (!(resolveEntityName(moduleName, 107455 | 1536).flags & 1536)) { + error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + } + } + if (target.flags & 793056) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); + } + } + } + else { + if (languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead); + } + } + } + } + function checkExportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_declaration_cannot_have_modifiers); + } + if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { + if (node.exportClause) { + ts.forEach(node.exportClause.elements, checkExportSpecifier); + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module); + } + } + else { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + if (moduleSymbol && moduleSymbol.exports["export="]) { + error(node.moduleSpecifier, ts.Diagnostics.External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk, symbolToString(moduleSymbol)); + } + } + } + } + function checkExportSpecifier(node) { + checkAliasSymbol(node); + if (!node.parent.parent.moduleSpecifier) { + markExportAsReferenced(node); + } + } + function checkExportAssignment(node) { + var container = node.parent.kind === 227 ? node.parent : node.parent.parent; + if (container.kind === 205 && container.name.kind === 65) { + error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); + return; + } + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_assignment_cannot_have_modifiers); + } + if (node.expression) { + if (node.expression.kind === 65) { + markExportAsReferenced(node); + } + else { + checkExpressionCached(node.expression); + } + } + if (node.type) { + checkSourceElement(node.type); + if (!ts.isInAmbientContext(node)) { + grammarErrorOnFirstToken(node.type, ts.Diagnostics.A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration); + } + } + checkExternalModuleExports(container); + if (node.isExportEquals && languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead); + } + } + function getModuleStatements(node) { + if (node.kind === 227) { + return node.statements; + } + if (node.kind === 205 && node.body.kind === 206) { + return node.body.statements; + } + return emptyArray; + } + function hasExportedMembers(moduleSymbol) { + for (var id in moduleSymbol.exports) { + if (id !== "export=") { + return true; + } + } + return false; + } + function checkExternalModuleExports(node) { + var moduleSymbol = getSymbolOfNode(node); + var links = getSymbolLinks(moduleSymbol); + if (!links.exportsChecked) { + var exportEqualsSymbol = moduleSymbol.exports["export="]; + if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { + var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; + error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + links.exportsChecked = true; + } + } + function checkSourceElement(node) { + if (!node) + return; + switch (node.kind) { + case 128: + return checkTypeParameter(node); + case 129: + return checkParameter(node); + case 132: + case 131: + return checkPropertyDeclaration(node); + case 142: + case 143: + case 138: + case 139: + return checkSignatureDeclaration(node); + case 140: + return checkSignatureDeclaration(node); + case 134: + case 133: + return checkMethodDeclaration(node); + case 135: + return checkConstructorDeclaration(node); + case 136: + case 137: + return checkAccessorDeclaration(node); + case 141: + return checkTypeReferenceNode(node); + case 144: + return checkTypeQuery(node); + case 145: + return checkTypeLiteral(node); + case 146: + return checkArrayType(node); + case 147: + return checkTupleType(node); + case 148: + return checkUnionType(node); + case 149: + return checkSourceElement(node.type); + case 200: + return checkFunctionDeclaration(node); + case 179: + case 206: + return checkBlock(node); + case 180: + return checkVariableStatement(node); + case 182: + return checkExpressionStatement(node); + case 183: + return checkIfStatement(node); + case 184: + return checkDoStatement(node); + case 185: + return checkWhileStatement(node); + case 186: + return checkForStatement(node); + case 187: + return checkForInStatement(node); + case 188: + return checkForOfStatement(node); + case 189: + case 190: + return checkBreakOrContinueStatement(node); + case 191: + return checkReturnStatement(node); + case 192: + return checkWithStatement(node); + case 193: + return checkSwitchStatement(node); + case 194: + return checkLabeledStatement(node); + case 195: + return checkThrowStatement(node); + case 196: + return checkTryStatement(node); + case 198: + return checkVariableDeclaration(node); + case 152: + return checkBindingElement(node); + case 201: + return checkClassDeclaration(node); + case 202: + return checkInterfaceDeclaration(node); + case 203: + return checkTypeAliasDeclaration(node); + case 204: + return checkEnumDeclaration(node); + case 205: + return checkModuleDeclaration(node); + case 209: + return checkImportDeclaration(node); + case 208: + return checkImportEqualsDeclaration(node); + case 215: + return checkExportDeclaration(node); + case 214: + return checkExportAssignment(node); + case 181: + checkGrammarStatementInAmbientContext(node); + return; + case 197: + checkGrammarStatementInAmbientContext(node); + return; + case 218: + return checkMissingDeclaration(node); + } + } + function checkFunctionExpressionBodies(node) { + switch (node.kind) { + case 162: + case 163: + ts.forEach(node.parameters, checkFunctionExpressionBodies); + checkFunctionExpressionOrObjectLiteralMethodBody(node); + break; + case 134: + case 133: + ts.forEach(node.parameters, checkFunctionExpressionBodies); + if (ts.isObjectLiteralMethod(node)) { + checkFunctionExpressionOrObjectLiteralMethodBody(node); + } + break; + case 135: + case 136: + case 137: + case 200: + ts.forEach(node.parameters, checkFunctionExpressionBodies); + break; + case 192: + checkFunctionExpressionBodies(node.expression); + break; + case 129: + case 132: + case 131: + case 150: + case 151: + case 152: + case 153: + case 154: + case 224: + case 155: + case 156: + case 157: + case 158: + case 159: + case 171: + case 176: + case 160: + case 161: + case 165: + case 166: + case 164: + case 167: + case 168: + case 169: + case 170: + case 173: + case 179: + case 206: + case 180: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 188: + case 189: + case 190: + case 191: + case 193: + case 207: + case 220: + case 221: + case 194: + case 195: + case 196: + case 223: + case 198: + case 199: + case 201: + case 204: + case 226: + case 214: + case 227: + ts.forEachChild(node, checkFunctionExpressionBodies); + break; + } + } + function checkSourceFile(node) { + var start = new Date().getTime(); + checkSourceFileWorker(node); + ts.checkTime += new Date().getTime() - start; + } + function checkSourceFileWorker(node) { + var links = getNodeLinks(node); + if (!(links.flags & 1)) { + checkGrammarSourceFile(node); + emitExtends = false; + potentialThisCollisions.length = 0; + ts.forEach(node.statements, checkSourceElement); + checkFunctionExpressionBodies(node); + if (ts.isExternalModule(node)) { + checkExternalModuleExports(node); + } + if (potentialThisCollisions.length) { + ts.forEach(potentialThisCollisions, checkIfThisIsCapturedInEnclosingScope); + potentialThisCollisions.length = 0; + } + if (emitExtends) { + links.flags |= 8; + } + if (emitDecorate) { + links.flags |= 512; + } + links.flags |= 1; + } + } + function getDiagnostics(sourceFile) { + throwIfNonDiagnosticsProducing(); + if (sourceFile) { + checkSourceFile(sourceFile); + return diagnostics.getDiagnostics(sourceFile.fileName); + } + ts.forEach(host.getSourceFiles(), checkSourceFile); + return diagnostics.getDiagnostics(); + } + function getGlobalDiagnostics() { + throwIfNonDiagnosticsProducing(); + return diagnostics.getGlobalDiagnostics(); + } + function throwIfNonDiagnosticsProducing() { + if (!produceDiagnostics) { + throw new Error("Trying to get diagnostics from a type checker that does not produce them."); + } + } + function isInsideWithStatementBody(node) { + if (node) { + while (node.parent) { + if (node.parent.kind === 192 && node.parent.statement === node) { + return true; + } + node = node.parent; + } + } + return false; + } + function getSymbolsInScope(location, meaning) { + var symbols = {}; + var memberFlags = 0; + if (isInsideWithStatementBody(location)) { + return []; + } + populateSymbols(); + return symbolsToArray(symbols); + function populateSymbols() { + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) { + break; + } + case 205: + copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); + break; + case 204: + copySymbols(getSymbolOfNode(location).exports, meaning & 8); + break; + case 201: + case 202: + if (!(memberFlags & 128)) { + copySymbols(getSymbolOfNode(location).members, meaning & 793056); + } + break; + case 162: + if (location.name) { + copySymbol(location.symbol, meaning); + } + break; + } + memberFlags = location.flags; + location = location.parent; + } + copySymbols(globals, meaning); + } + function copySymbol(symbol, meaning) { + if (symbol.flags & meaning) { + var id = symbol.name; + if (!isReservedMemberName(id) && !ts.hasProperty(symbols, id)) { + symbols[id] = symbol; + } + } + } + function copySymbols(source, meaning) { + if (meaning) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + copySymbol(source[id], meaning); + } + } + } + } + if (isInsideWithStatementBody(location)) { + return []; + } + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) + break; + case 205: + copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); + break; + case 204: + copySymbols(getSymbolOfNode(location).exports, meaning & 8); + break; + case 201: + case 202: + if (!(memberFlags & 128)) { + copySymbols(getSymbolOfNode(location).members, meaning & 793056); + } + break; + case 162: + if (location.name) { + copySymbol(location.symbol, meaning); + } + break; + } + memberFlags = location.flags; + location = location.parent; + } + copySymbols(globals, meaning); + return symbolsToArray(symbols); + } + function isTypeDeclarationName(name) { + return name.kind == 65 && + isTypeDeclaration(name.parent) && + name.parent.name === name; + } + function isTypeDeclaration(node) { + switch (node.kind) { + case 128: + case 201: + case 202: + case 203: + case 204: + return true; + } + } + function isTypeReferenceIdentifier(entityName) { + var node = entityName; + while (node.parent && node.parent.kind === 126) { + node = node.parent; + } + return node.parent && node.parent.kind === 141; + } + function isHeritageClauseElementIdentifier(entityName) { + var node = entityName; + while (node.parent && node.parent.kind === 155) { + node = node.parent; + } + return node.parent && node.parent.kind === 177; + } + function isTypeNodeOrHeritageClauseElement(node) { + if (141 <= node.kind && node.kind <= 149) { + return true; + } + switch (node.kind) { + case 112: + case 119: + case 121: + case 113: + case 122: + return true; + case 99: + return node.parent.kind !== 166; + case 8: + return node.parent.kind === 129; + case 177: + return true; + case 65: + if (node.parent.kind === 126 && node.parent.right === node) { + node = node.parent; + } + else if (node.parent.kind === 155 && node.parent.name === node) { + node = node.parent; + } + case 126: + case 155: + ts.Debug.assert(node.kind === 65 || node.kind === 126 || node.kind === 155, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + var parent_5 = node.parent; + if (parent_5.kind === 144) { + return false; + } + if (141 <= parent_5.kind && parent_5.kind <= 149) { + return true; + } + switch (parent_5.kind) { + case 177: + return true; + case 128: + return node === parent_5.constraint; + case 132: + case 131: + case 129: + case 198: + return node === parent_5.type; + case 200: + case 162: + case 163: + case 135: + case 134: + case 133: + case 136: + case 137: + return node === parent_5.type; + case 138: + case 139: + case 140: + return node === parent_5.type; + case 160: + return node === parent_5.type; + case 157: + case 158: + return parent_5.typeArguments && ts.indexOf(parent_5.typeArguments, node) >= 0; + case 159: + return false; + } + } + return false; + } + function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { + while (nodeOnRightSide.parent.kind === 126) { + nodeOnRightSide = nodeOnRightSide.parent; + } + if (nodeOnRightSide.parent.kind === 208) { + return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; + } + if (nodeOnRightSide.parent.kind === 214) { + return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; + } + return undefined; + } + function isInRightSideOfImportOrExportAssignment(node) { + return getLeftSideOfImportEqualsOrExportAssignment(node) !== undefined; + } + function getSymbolOfEntityNameOrPropertyAccessExpression(entityName) { + if (ts.isDeclarationName(entityName)) { + return getSymbolOfNode(entityName.parent); + } + if (entityName.parent.kind === 214) { + return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); + } + if (entityName.kind !== 155) { + if (isInRightSideOfImportOrExportAssignment(entityName)) { + return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); + } + } + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + entityName = entityName.parent; + } + if (isHeritageClauseElementIdentifier(entityName)) { + var meaning = entityName.parent.kind === 177 ? 793056 : 1536; + meaning |= 8388608; + return resolveEntityName(entityName, meaning); + } + else if (ts.isExpression(entityName)) { + if (ts.nodeIsMissing(entityName)) { + return undefined; + } + if (entityName.kind === 65) { + var meaning = 107455 | 8388608; + return resolveEntityName(entityName, meaning); + } + else if (entityName.kind === 155) { + var symbol = getNodeLinks(entityName).resolvedSymbol; + if (!symbol) { + checkPropertyAccessExpression(entityName); + } + return getNodeLinks(entityName).resolvedSymbol; + } + else if (entityName.kind === 126) { + var symbol = getNodeLinks(entityName).resolvedSymbol; + if (!symbol) { + checkQualifiedName(entityName); + } + return getNodeLinks(entityName).resolvedSymbol; + } + } + else if (isTypeReferenceIdentifier(entityName)) { + var meaning = entityName.parent.kind === 141 ? 793056 : 1536; + meaning |= 8388608; + return resolveEntityName(entityName, meaning); + } + return undefined; + } + function getSymbolInfo(node) { + if (isInsideWithStatementBody(node)) { + return undefined; + } + if (ts.isDeclarationName(node)) { + return getSymbolOfNode(node.parent); + } + if (node.kind === 65 && isInRightSideOfImportOrExportAssignment(node)) { + return node.parent.kind === 214 + ? getSymbolOfEntityNameOrPropertyAccessExpression(node) + : getSymbolOfPartOfRightHandSideOfImportEquals(node); + } + switch (node.kind) { + case 65: + case 155: + case 126: + return getSymbolOfEntityNameOrPropertyAccessExpression(node); + case 93: + case 91: + var type = checkExpression(node); + return type.symbol; + case 114: + var constructorDeclaration = node.parent; + if (constructorDeclaration && constructorDeclaration.kind === 135) { + return constructorDeclaration.parent.symbol; + } + return undefined; + case 8: + var moduleName; + if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && + ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || + ((node.parent.kind === 209 || node.parent.kind === 215) && + node.parent.moduleSpecifier === node)) { + return resolveExternalModuleName(node, node); + } + case 7: + if (node.parent.kind == 156 && node.parent.argumentExpression === node) { + var objectType = checkExpression(node.parent.expression); + if (objectType === unknownType) + return undefined; + var apparentType = getApparentType(objectType); + if (apparentType === unknownType) + return undefined; + return getPropertyOfType(apparentType, node.text); + } + break; + } + return undefined; + } + function getShorthandAssignmentValueSymbol(location) { + if (location && location.kind === 225) { + return resolveEntityName(location.name, 107455); + } + return undefined; + } + function getTypeOfNode(node) { + if (isInsideWithStatementBody(node)) { + return unknownType; + } + if (isTypeNodeOrHeritageClauseElement(node)) { + return getTypeFromTypeNodeOrHeritageClauseElement(node); + } + if (ts.isExpression(node)) { + return getTypeOfExpression(node); + } + if (isTypeDeclaration(node)) { + var symbol = getSymbolOfNode(node); + return getDeclaredTypeOfSymbol(symbol); + } + if (isTypeDeclarationName(node)) { + var symbol = getSymbolInfo(node); + return symbol && getDeclaredTypeOfSymbol(symbol); + } + if (ts.isDeclaration(node)) { + var symbol = getSymbolOfNode(node); + return getTypeOfSymbol(symbol); + } + if (ts.isDeclarationName(node)) { + var symbol = getSymbolInfo(node); + return symbol && getTypeOfSymbol(symbol); + } + if (isInRightSideOfImportOrExportAssignment(node)) { + var symbol = getSymbolInfo(node); + var declaredType = symbol && getDeclaredTypeOfSymbol(symbol); + return declaredType !== unknownType ? declaredType : getTypeOfSymbol(symbol); + } + return unknownType; + } + function getTypeOfExpression(expr) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(expr)) { + expr = expr.parent; + } + return checkExpression(expr); + } + function getAugmentedPropertiesOfType(type) { + type = getApparentType(type); + var propsByName = createSymbolTable(getPropertiesOfType(type)); + if (getSignaturesOfType(type, 0).length || getSignaturesOfType(type, 1).length) { + ts.forEach(getPropertiesOfType(globalFunctionType), function (p) { + if (!ts.hasProperty(propsByName, p.name)) { + propsByName[p.name] = p; + } + }); + } + return getNamedMembers(propsByName); + } + function getRootSymbols(symbol) { + if (symbol.flags & 268435456) { + var symbols = []; + var name_10 = symbol.name; + ts.forEach(getSymbolLinks(symbol).unionType.types, function (t) { + symbols.push(getPropertyOfType(t, name_10)); + }); + return symbols; + } + else if (symbol.flags & 67108864) { + var target = getSymbolLinks(symbol).target; + if (target) { + return [target]; + } + } + return [symbol]; + } + function isExternalModuleSymbol(symbol) { + return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 227; + } + function getAliasNameSubstitution(symbol, getGeneratedNameForNode) { + if (languageVersion >= 2) { + return undefined; + } + var node = getDeclarationOfAliasSymbol(symbol); + if (node) { + if (node.kind === 210) { + return getGeneratedNameForNode(node.parent) + ".default"; + } + if (node.kind === 213) { + var moduleName = getGeneratedNameForNode(node.parent.parent.parent); + var propertyName = node.propertyName || node.name; + return moduleName + "." + ts.unescapeIdentifier(propertyName.text); + } + } + } + function getExportNameSubstitution(symbol, location, getGeneratedNameForNode) { + if (isExternalModuleSymbol(symbol.parent)) { + if (languageVersion >= 2) { + return undefined; + } + return "exports." + ts.unescapeIdentifier(symbol.name); + } + var node = location; + var containerSymbol = getParentOfSymbol(symbol); + while (node) { + if ((node.kind === 205 || node.kind === 204) && getSymbolOfNode(node) === containerSymbol) { + return getGeneratedNameForNode(node) + "." + ts.unescapeIdentifier(symbol.name); + } + node = node.parent; + } + } + function getExpressionNameSubstitution(node, getGeneratedNameForNode) { + var symbol = getNodeLinks(node).resolvedSymbol || (ts.isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined); + if (symbol) { + if (symbol.parent) { + return getExportNameSubstitution(symbol, node.parent, getGeneratedNameForNode); + } + var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); + if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { + return getExportNameSubstitution(exportSymbol, node.parent, getGeneratedNameForNode); + } + if (symbol.flags & 8388608) { + return getAliasNameSubstitution(symbol, getGeneratedNameForNode); + } + } + } + function isValueAliasDeclaration(node) { + switch (node.kind) { + case 208: + case 210: + case 211: + case 213: + case 217: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 215: + var exportClause = node.exportClause; + return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); + case 214: + return node.expression && node.expression.kind === 65 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; + } + return false; + } + function isTopLevelValueImportEqualsWithEntityName(node) { + if (node.parent.kind !== 227 || !ts.isInternalModuleImportEqualsDeclaration(node)) { + return false; + } + var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); + return isValue && node.moduleReference && !ts.nodeIsMissing(node.moduleReference); + } + function isAliasResolvedToValue(symbol) { + var target = resolveAlias(symbol); + if (target === unknownSymbol && compilerOptions.separateCompilation) { + return true; + } + return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); + } + function isConstEnumOrConstEnumOnlyModule(s) { + return isConstEnumSymbol(s) || s.constEnumOnlyModule; + } + function isReferencedAliasDeclaration(node, checkChildren) { + if (ts.isAliasSymbolDeclaration(node)) { + var symbol = getSymbolOfNode(node); + if (getSymbolLinks(symbol).referenced) { + return true; + } + } + if (checkChildren) { + return ts.forEachChild(node, function (node) { return isReferencedAliasDeclaration(node, checkChildren); }); + } + return false; + } + function isImplementationOfOverload(node) { + if (ts.nodeIsPresent(node.body)) { + var symbol = getSymbolOfNode(node); + var signaturesOfSymbol = getSignaturesOfSymbol(symbol); + return signaturesOfSymbol.length > 1 || + (signaturesOfSymbol.length === 1 && signaturesOfSymbol[0].declaration !== node); + } + return false; + } + function getNodeCheckFlags(node) { + return getNodeLinks(node).flags; + } + function getEnumMemberValue(node) { + computeEnumMemberValues(node.parent); + return getNodeLinks(node).enumMemberValue; + } + function getConstantValue(node) { + if (node.kind === 226) { + return getEnumMemberValue(node); + } + var symbol = getNodeLinks(node).resolvedSymbol; + if (symbol && (symbol.flags & 8)) { + if (ts.isConstEnumDeclaration(symbol.valueDeclaration.parent)) { + return getEnumMemberValue(symbol.valueDeclaration); + } + } + return undefined; + } + function writeTypeOfDeclaration(declaration, enclosingDeclaration, flags, writer) { + var symbol = getSymbolOfNode(declaration); + var type = symbol && !(symbol.flags & (2048 | 131072)) + ? getTypeOfSymbol(symbol) + : unknownType; + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + function writeReturnTypeOfSignatureDeclaration(signatureDeclaration, enclosingDeclaration, flags, writer) { + var signature = getSignatureFromDeclaration(signatureDeclaration); + getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); + } + function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { + var type = getTypeOfExpression(expr); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + function hasGlobalName(name) { + return ts.hasProperty(globals, name); + } + function resolvesToSomeValue(location, name) { + ts.Debug.assert(!ts.nodeIsSynthesized(location), "resolvesToSomeValue called with a synthesized location"); + return !!resolveName(location, name, 107455, undefined, undefined); + } + function getBlockScopedVariableId(n) { + ts.Debug.assert(!ts.nodeIsSynthesized(n)); + var isVariableDeclarationOrBindingElement = n.parent.kind === 152 || (n.parent.kind === 198 && n.parent.name === n); + var symbol = (isVariableDeclarationOrBindingElement ? getSymbolOfNode(n.parent) : undefined) || + getNodeLinks(n).resolvedSymbol || + resolveName(n, n.text, 107455 | 8388608, undefined, undefined); + var isLetOrConst = symbol && + (symbol.flags & 2) && + symbol.valueDeclaration.parent.kind !== 223; + if (isLetOrConst) { + getSymbolLinks(symbol); + return symbol.id; + } + return undefined; + } + function instantiateSingleCallFunctionType(functionType, typeArguments) { + if (functionType === unknownType) { + return unknownType; + } + var signature = getSingleCallSignature(functionType); + if (!signature) { + return unknownType; + } + var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); + return getOrCreateTypeFromSignature(instantiatedSignature); + } + function createResolver() { + return { + getExpressionNameSubstitution: getExpressionNameSubstitution, + isValueAliasDeclaration: isValueAliasDeclaration, + hasGlobalName: hasGlobalName, + isReferencedAliasDeclaration: isReferencedAliasDeclaration, + getNodeCheckFlags: getNodeCheckFlags, + isTopLevelValueImportEqualsWithEntityName: isTopLevelValueImportEqualsWithEntityName, + isDeclarationVisible: isDeclarationVisible, + isImplementationOfOverload: isImplementationOfOverload, + writeTypeOfDeclaration: writeTypeOfDeclaration, + writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, + writeTypeOfExpression: writeTypeOfExpression, + isSymbolAccessible: isSymbolAccessible, + isEntityNameVisible: isEntityNameVisible, + getConstantValue: getConstantValue, + resolvesToSomeValue: resolvesToSomeValue, + collectLinkedAliases: collectLinkedAliases, + getBlockScopedVariableId: getBlockScopedVariableId + }; + } + function initializeTypeChecker() { + ts.forEach(host.getSourceFiles(), function (file) { + ts.bindSourceFile(file); + }); + ts.forEach(host.getSourceFiles(), function (file) { + if (!ts.isExternalModule(file)) { + mergeSymbolTable(globals, file.locals); + } + }); + getSymbolLinks(undefinedSymbol).type = undefinedType; + getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments"); + getSymbolLinks(unknownSymbol).type = unknownType; + globals[undefinedSymbol.name] = undefinedSymbol; + globalArraySymbol = getGlobalTypeSymbol("Array"); + globalArrayType = getTypeOfGlobalSymbol(globalArraySymbol, 1); + globalObjectType = getGlobalType("Object"); + globalFunctionType = getGlobalType("Function"); + globalStringType = getGlobalType("String"); + globalNumberType = getGlobalType("Number"); + globalBooleanType = getGlobalType("Boolean"); + globalRegExpType = getGlobalType("RegExp"); + globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); + globalClassDecoratorType = getGlobalType("ClassDecorator"); + globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); + globalMethodDecoratorType = getGlobalType("MethodDecorator"); + globalParameterDecoratorType = getGlobalType("ParameterDecorator"); + if (languageVersion >= 2) { + globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); + globalESSymbolType = getGlobalType("Symbol"); + globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); + globalIterableType = getGlobalType("Iterable", 1); + } + else { + globalTemplateStringsArrayType = unknownType; + globalESSymbolType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + globalESSymbolConstructorSymbol = undefined; + } + anyArrayType = createArrayType(anyType); + } + function checkGrammarDecorators(node) { + if (!node.decorators) { + return false; + } + if (!ts.nodeCanBeDecorated(node)) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_not_valid_here); + } + else if (languageVersion < 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (node.kind === 136 || node.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } + return false; + } + function checkGrammarModifiers(node) { + switch (node.kind) { + case 136: + case 137: + case 135: + case 132: + case 131: + case 134: + case 133: + case 140: + case 201: + case 202: + case 205: + case 204: + case 180: + case 200: + case 203: + case 209: + case 208: + case 215: + case 214: + case 129: + break; + default: + return false; + } + if (!node.modifiers) { + return; + } + var lastStatic, lastPrivate, lastProtected, lastDeclare; + var flags = 0; + for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { + var modifier = _a[_i]; + switch (modifier.kind) { + case 109: + case 108: + case 107: + var text = void 0; + if (modifier.kind === 109) { + text = "public"; + } + else if (modifier.kind === 108) { + text = "protected"; + lastProtected = modifier; + } + else { + text = "private"; + lastPrivate = modifier; + } + if (flags & 112) { + return grammarErrorOnNode(modifier, ts.Diagnostics.Accessibility_modifier_already_seen); + } + else if (flags & 128) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); + } + else if (node.parent.kind === 206 || node.parent.kind === 227) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); + } + flags |= ts.modifierToFlag(modifier.kind); + break; + case 110: + if (flags & 128) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static"); + } + else if (node.parent.kind === 206 || node.parent.kind === 227) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); + } + else if (node.kind === 129) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + } + flags |= 128; + lastStatic = modifier; + break; + case 78: + if (flags & 1) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "export"); + } + else if (flags & 2) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + } + else if (node.parent.kind === 201) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); + } + else if (node.kind === 129) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + } + flags |= 1; + break; + case 115: + if (flags & 2) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "declare"); + } + else if (node.parent.kind === 201) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); + } + else if (node.kind === 129) { + return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + } + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 206) { + return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + } + flags |= 2; + lastDeclare = modifier; + break; + } + } + if (node.kind === 135) { + if (flags & 128) { + return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); + } + else if (flags & 64) { + return grammarErrorOnNode(lastProtected, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "protected"); + } + else if (flags & 32) { + return grammarErrorOnNode(lastPrivate, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "private"); + } + } + else if ((node.kind === 209 || node.kind === 208) && flags & 2) { + return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_import_declaration, "declare"); + } + else if (node.kind === 202 && flags & 2) { + return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_interface_declaration, "declare"); + } + else if (node.kind === 129 && (flags & 112) && ts.isBindingPattern(node.name)) { + return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); + } + } + function checkGrammarForDisallowedTrailingComma(list) { + if (list && list.hasTrailingComma) { + var start = list.end - ",".length; + var end = list.end; + var sourceFile = ts.getSourceFileOfNode(list[0]); + return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Trailing_comma_not_allowed); + } + } + function checkGrammarTypeParameterList(node, typeParameters, file) { + if (checkGrammarForDisallowedTrailingComma(typeParameters)) { + return true; + } + if (typeParameters && typeParameters.length === 0) { + var start = typeParameters.pos - "<".length; + var end = ts.skipTrivia(file.text, typeParameters.end) + ">".length; + return grammarErrorAtPos(file, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); + } + } + function checkGrammarParameterList(parameters) { + if (checkGrammarForDisallowedTrailingComma(parameters)) { + return true; + } + var seenOptionalParameter = false; + var parameterCount = parameters.length; + for (var i = 0; i < parameterCount; i++) { + var parameter = parameters[i]; + if (parameter.dotDotDotToken) { + if (i !== (parameterCount - 1)) { + return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list); + } + if (parameter.questionToken) { + return grammarErrorOnNode(parameter.questionToken, ts.Diagnostics.A_rest_parameter_cannot_be_optional); + } + if (parameter.initializer) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.A_rest_parameter_cannot_have_an_initializer); + } + } + else if (parameter.questionToken || parameter.initializer) { + seenOptionalParameter = true; + if (parameter.questionToken && parameter.initializer) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.Parameter_cannot_have_question_mark_and_initializer); + } + } + else { + if (seenOptionalParameter) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.A_required_parameter_cannot_follow_an_optional_parameter); + } + } + } + } + function checkGrammarFunctionLikeDeclaration(node) { + var file = ts.getSourceFileOfNode(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters, file) || + checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); + } + function checkGrammarArrowFunction(node, file) { + if (node.kind === 163) { + var arrowFunction = node; + var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; + if (startLine !== endLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, ts.Diagnostics.Line_terminator_not_permitted_before_arrow); + } + } + return false; + } + function checkGrammarIndexSignatureParameters(node) { + var parameter = node.parameters[0]; + if (node.parameters.length !== 1) { + if (parameter) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_must_have_exactly_one_parameter); + } + else { + return grammarErrorOnNode(node, ts.Diagnostics.An_index_signature_must_have_exactly_one_parameter); + } + } + if (parameter.dotDotDotToken) { + return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.An_index_signature_cannot_have_a_rest_parameter); + } + if (parameter.flags & 499) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier); + } + if (parameter.questionToken) { + return grammarErrorOnNode(parameter.questionToken, ts.Diagnostics.An_index_signature_parameter_cannot_have_a_question_mark); + } + if (parameter.initializer) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_cannot_have_an_initializer); + } + if (!parameter.type) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation); + } + if (parameter.type.kind !== 121 && parameter.type.kind !== 119) { + return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_type_must_be_string_or_number); + } + if (!node.type) { + return grammarErrorOnNode(node, ts.Diagnostics.An_index_signature_must_have_a_type_annotation); + } + } + function checkGrammarForIndexSignatureModifier(node) { + if (node.flags & 499) { + grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_not_permitted_on_index_signature_members); + } + } + function checkGrammarIndexSignature(node) { + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); + } + function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { + if (typeArguments && typeArguments.length === 0) { + var sourceFile = ts.getSourceFileOfNode(node); + var start = typeArguments.pos - "<".length; + var end = ts.skipTrivia(sourceFile.text, typeArguments.end) + ">".length; + return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Type_argument_list_cannot_be_empty); + } + } + function checkGrammarTypeArguments(node, typeArguments) { + return checkGrammarForDisallowedTrailingComma(typeArguments) || + checkGrammarForAtLeastOneTypeArgument(node, typeArguments); + } + function checkGrammarForOmittedArgument(node, arguments) { + if (arguments) { + var sourceFile = ts.getSourceFileOfNode(node); + for (var _i = 0; _i < arguments.length; _i++) { + var arg = arguments[_i]; + if (arg.kind === 175) { + return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); + } + } + } + } + function checkGrammarArguments(node, arguments) { + return checkGrammarForDisallowedTrailingComma(arguments) || + checkGrammarForOmittedArgument(node, arguments); + } + function checkGrammarHeritageClause(node) { + var types = node.types; + if (checkGrammarForDisallowedTrailingComma(types)) { + return true; + } + if (types && types.length === 0) { + var listType = ts.tokenToString(node.token); + var sourceFile = ts.getSourceFileOfNode(node); + return grammarErrorAtPos(sourceFile, types.pos, 0, ts.Diagnostics._0_list_cannot_be_empty, listType); + } + } + function checkGrammarClassDeclarationHeritageClauses(node) { + var seenExtendsClause = false; + var seenImplementsClause = false; + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && node.heritageClauses) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { + if (seenExtendsClause) { + return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); + } + if (seenImplementsClause) { + return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_must_precede_implements_clause); + } + if (heritageClause.types.length > 1) { + return grammarErrorOnFirstToken(heritageClause.types[1], ts.Diagnostics.Classes_can_only_extend_a_single_class); + } + seenExtendsClause = true; + } + else { + ts.Debug.assert(heritageClause.token === 103); + if (seenImplementsClause) { + return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen); + } + seenImplementsClause = true; + } + checkGrammarHeritageClause(heritageClause); + } + } + } + function checkGrammarInterfaceDeclaration(node) { + var seenExtendsClause = false; + if (node.heritageClauses) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { + if (seenExtendsClause) { + return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); + } + seenExtendsClause = true; + } + else { + ts.Debug.assert(heritageClause.token === 103); + return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause); + } + checkGrammarHeritageClause(heritageClause); + } + } + return false; + } + function checkGrammarComputedPropertyName(node) { + if (node.kind !== 127) { + return false; + } + var computedPropertyName = node; + if (computedPropertyName.expression.kind === 169 && computedPropertyName.expression.operatorToken.kind === 23) { + return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); + } + } + function checkGrammarForGenerator(node) { + if (node.asteriskToken) { + return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_currently_supported); + } + } + function checkGrammarFunctionName(name) { + return checkGrammarEvalOrArgumentsInStrictMode(name, name); + } + function checkGrammarForInvalidQuestionMark(node, questionToken, message) { + if (questionToken) { + return grammarErrorOnNode(questionToken, message); + } + } + function checkGrammarObjectLiteralExpression(node) { + var seen = {}; + var Property = 1; + var GetAccessor = 2; + var SetAccesor = 4; + var GetOrSetAccessor = GetAccessor | SetAccesor; + var inStrictMode = (node.parserContextFlags & 1) !== 0; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var name_11 = prop.name; + if (prop.kind === 175 || + name_11.kind === 127) { + checkGrammarComputedPropertyName(name_11); + continue; + } + var currentKind = void 0; + if (prop.kind === 224 || prop.kind === 225) { + checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); + if (name_11.kind === 7) { + checkGrammarNumbericLiteral(name_11); + } + currentKind = Property; + } + else if (prop.kind === 134) { + currentKind = Property; + } + else if (prop.kind === 136) { + currentKind = GetAccessor; + } + else if (prop.kind === 137) { + currentKind = SetAccesor; + } + else { + ts.Debug.fail("Unexpected syntax kind:" + prop.kind); + } + if (!ts.hasProperty(seen, name_11.text)) { + seen[name_11.text] = currentKind; + } + else { + var existingKind = seen[name_11.text]; + if (currentKind === Property && existingKind === Property) { + if (inStrictMode) { + grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + } + } + else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { + if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { + seen[name_11.text] = currentKind | existingKind; + } + else { + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + } + } + else { + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + } + } + } + } + function checkGrammarForInOrForOfStatement(forInOrOfStatement) { + if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { + return true; + } + if (forInOrOfStatement.initializer.kind === 199) { + var variableList = forInOrOfStatement.initializer; + if (!checkGrammarVariableDeclarationList(variableList)) { + if (variableList.declarations.length > 1) { + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement + : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; + return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); + } + var firstDeclaration = variableList.declarations[0]; + if (firstDeclaration.initializer) { + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer + : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + return grammarErrorOnNode(firstDeclaration.name, diagnostic); + } + if (firstDeclaration.type) { + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation + : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + return grammarErrorOnNode(firstDeclaration, diagnostic); + } + } + } + return false; + } + function checkGrammarAccessor(accessor) { + var kind = accessor.kind; + if (languageVersion < 1) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (ts.isInAmbientContext(accessor)) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_be_declared_in_an_ambient_context); + } + else if (accessor.body === undefined) { + return grammarErrorAtPos(ts.getSourceFileOfNode(accessor), accessor.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); + } + else if (accessor.typeParameters) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); + } + else if (kind === 136 && accessor.parameters.length) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); + } + else if (kind === 137) { + if (accessor.type) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); + } + else if (accessor.parameters.length !== 1) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_must_have_exactly_one_parameter); + } + else { + var parameter = accessor.parameters[0]; + if (parameter.dotDotDotToken) { + return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_set_accessor_cannot_have_rest_parameter); + } + else if (parameter.flags & 499) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); + } + else if (parameter.questionToken) { + return grammarErrorOnNode(parameter.questionToken, ts.Diagnostics.A_set_accessor_cannot_have_an_optional_parameter); + } + else if (parameter.initializer) { + return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_parameter_cannot_have_an_initializer); + } + } + } + } + function checkGrammarForNonSymbolComputedProperty(node, message) { + if (node.kind === 127 && !ts.isWellKnownSymbolSyntactically(node.expression)) { + return grammarErrorOnNode(node, message); + } + } + function checkGrammarMethod(node) { + if (checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || + checkGrammarFunctionLikeDeclaration(node) || + checkGrammarForGenerator(node)) { + return true; + } + if (node.parent.kind === 154) { + if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { + return true; + } + else if (node.body === undefined) { + return grammarErrorAtPos(getSourceFile(node), node.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); + } + } + if (node.parent.kind === 201) { + if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { + return true; + } + if (ts.isInAmbientContext(node)) { + return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol); + } + else if (!node.body) { + return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); + } + } + else if (node.parent.kind === 202) { + return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); + } + else if (node.parent.kind === 145) { + return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); + } + } + function isIterationStatement(node, lookInLabeledStatements) { + switch (node.kind) { + case 186: + case 187: + case 188: + case 184: + case 185: + return true; + case 194: + return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); + } + return false; + } + function checkGrammarBreakOrContinueStatement(node) { + var current = node; + while (current) { + if (ts.isFunctionLike(current)) { + return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); + } + switch (current.kind) { + case 194: + if (node.label && current.label.text === node.label.text) { + var isMisplacedContinueLabel = node.kind === 189 + && !isIterationStatement(current.statement, true); + if (isMisplacedContinueLabel) { + return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); + } + return false; + } + break; + case 193: + if (node.kind === 190 && !node.label) { + return false; + } + break; + default: + if (isIterationStatement(current, false) && !node.label) { + return false; + } + break; + } + current = current.parent; + } + if (node.label) { + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement + : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; + return grammarErrorOnNode(node, message); + } + else { + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement + : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; + return grammarErrorOnNode(node, message); + } + } + function checkGrammarBindingElement(node) { + if (node.dotDotDotToken) { + var elements = node.parent.elements; + if (node !== elements[elements.length - 1]) { + return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); + } + if (node.initializer) { + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - 1, 1, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); + } + } + return checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + } + function checkGrammarVariableDeclaration(node) { + if (node.parent.parent.kind !== 187 && node.parent.parent.kind !== 188) { + if (ts.isInAmbientContext(node)) { + if (node.initializer) { + var equalsTokenLength = "=".length; + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - equalsTokenLength, equalsTokenLength, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } + } + else if (!node.initializer) { + if (ts.isBindingPattern(node.name) && !ts.isBindingPattern(node.parent)) { + return grammarErrorOnNode(node, ts.Diagnostics.A_destructuring_declaration_must_have_an_initializer); + } + if (ts.isConst(node)) { + return grammarErrorOnNode(node, ts.Diagnostics.const_declarations_must_be_initialized); + } + } + } + var checkLetConstNames = languageVersion >= 2 && (ts.isLet(node) || ts.isConst(node)); + return (checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name)) || + checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + } + function checkGrammarNameInLetOrConstDeclarations(name) { + if (name.kind === 65) { + if (name.text === "let") { + return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); + } + } + else { + var elements = name.elements; + for (var _i = 0; _i < elements.length; _i++) { + var element = elements[_i]; + checkGrammarNameInLetOrConstDeclarations(element.name); + } + } + } + function checkGrammarVariableDeclarationList(declarationList) { + var declarations = declarationList.declarations; + if (checkGrammarForDisallowedTrailingComma(declarationList.declarations)) { + return true; + } + if (!declarationList.declarations.length) { + return grammarErrorAtPos(ts.getSourceFileOfNode(declarationList), declarations.pos, declarations.end - declarations.pos, ts.Diagnostics.Variable_declaration_list_cannot_be_empty); + } + } + function allowLetAndConstDeclarations(parent) { + switch (parent.kind) { + case 183: + case 184: + case 185: + case 192: + case 186: + case 187: + case 188: + return false; + case 194: + return allowLetAndConstDeclarations(parent.parent); + } + return true; + } + function checkGrammarForDisallowedLetOrConstStatement(node) { + if (!allowLetAndConstDeclarations(node.parent)) { + if (ts.isLet(node.declarationList)) { + return grammarErrorOnNode(node, ts.Diagnostics.let_declarations_can_only_be_declared_inside_a_block); + } + else if (ts.isConst(node.declarationList)) { + return grammarErrorOnNode(node, ts.Diagnostics.const_declarations_can_only_be_declared_inside_a_block); + } + } + } + function isIntegerLiteral(expression) { + if (expression.kind === 167) { + var unaryExpression = expression; + if (unaryExpression.operator === 33 || unaryExpression.operator === 34) { + expression = unaryExpression.operand; + } + } + if (expression.kind === 7) { + return /^[0-9]+([eE]\+?[0-9]+)?$/.test(expression.text); + } + return false; + } + function checkGrammarEnumDeclaration(enumDecl) { + var enumIsConst = (enumDecl.flags & 8192) !== 0; + var hasError = false; + if (!enumIsConst) { + var inConstantEnumMemberSection = true; + var inAmbientContext = ts.isInAmbientContext(enumDecl); + for (var _i = 0, _a = enumDecl.members; _i < _a.length; _i++) { + var node = _a[_i]; + if (node.name.kind === 127) { + hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Computed_property_names_are_not_allowed_in_enums); + } + else if (inAmbientContext) { + if (node.initializer && !isIntegerLiteral(node.initializer)) { + hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Ambient_enum_elements_can_only_have_integer_literal_initializers) || hasError; + } + } + else if (node.initializer) { + inConstantEnumMemberSection = isIntegerLiteral(node.initializer); + } + else if (!inConstantEnumMemberSection) { + hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Enum_member_must_have_initializer) || hasError; + } + } + } + return hasError; + } + function hasParseDiagnostics(sourceFile) { + return sourceFile.parseDiagnostics.length > 0; + } + function grammarErrorOnFirstToken(node, message, arg0, arg1, arg2) { + var sourceFile = ts.getSourceFileOfNode(node); + if (!hasParseDiagnostics(sourceFile)) { + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2)); + return true; + } + } + function grammarErrorAtPos(sourceFile, start, length, message, arg0, arg1, arg2) { + if (!hasParseDiagnostics(sourceFile)) { + diagnostics.add(ts.createFileDiagnostic(sourceFile, start, length, message, arg0, arg1, arg2)); + return true; + } + } + function grammarErrorOnNode(node, message, arg0, arg1, arg2) { + var sourceFile = ts.getSourceFileOfNode(node); + if (!hasParseDiagnostics(sourceFile)) { + diagnostics.add(ts.createDiagnosticForNode(node, message, arg0, arg1, arg2)); + return true; + } + } + function checkGrammarEvalOrArgumentsInStrictMode(contextNode, name) { + if (name && name.kind === 65) { + var identifier = name; + if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { + var nameText = ts.declarationNameToString(identifier); + return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); + } + } + } + function checkGrammarConstructorTypeParameters(node) { + if (node.typeParameters) { + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.typeParameters.pos, node.typeParameters.end - node.typeParameters.pos, ts.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); + } + } + function checkGrammarConstructorTypeAnnotation(node) { + if (node.type) { + return grammarErrorOnNode(node.type, ts.Diagnostics.Type_annotation_cannot_appear_on_a_constructor_declaration); + } + } + function checkGrammarProperty(node) { + if (node.parent.kind === 201) { + if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional) || + checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol)) { + return true; + } + } + else if (node.parent.kind === 202) { + if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { + return true; + } + } + else if (node.parent.kind === 145) { + if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { + return true; + } + } + if (ts.isInAmbientContext(node) && node.initializer) { + return grammarErrorOnFirstToken(node.initializer, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } + } + function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { + if (node.kind === 202 || + node.kind === 209 || + node.kind === 208 || + node.kind === 215 || + node.kind === 214 || + (node.flags & 2) || + (node.flags & (1 | 256))) { + return false; + } + return grammarErrorOnFirstToken(node, ts.Diagnostics.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file); + } + function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { + for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { + var decl = _a[_i]; + if (ts.isDeclaration(decl) || decl.kind === 180) { + if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { + return true; + } + } + } + } + function checkGrammarSourceFile(node) { + return ts.isInAmbientContext(node) && checkGrammarTopLevelElementsForRequiredDeclareModifier(node); + } + function checkGrammarStatementInAmbientContext(node) { + if (ts.isInAmbientContext(node)) { + if (isAccessor(node.parent.kind)) { + return getNodeLinks(node).hasReportedStatementInAmbientContext = true; + } + var links = getNodeLinks(node); + if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { + return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); + } + if (node.parent.kind === 179 || node.parent.kind === 206 || node.parent.kind === 227) { + var links_1 = getNodeLinks(node.parent); + if (!links_1.hasReportedStatementInAmbientContext) { + return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); + } + } + else { + } + } + } + function checkGrammarNumbericLiteral(node) { + if (node.flags & 16384) { + if (node.parserContextFlags & 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode); + } + else if (languageVersion >= 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher); + } + } + } + function grammarErrorAfterFirstToken(node, message, arg0, arg1, arg2) { + var sourceFile = ts.getSourceFileOfNode(node); + if (!hasParseDiagnostics(sourceFile)) { + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, ts.textSpanEnd(span), 0, message, arg0, arg1, arg2)); + return true; + } + } + initializeTypeChecker(); + return checker; + } + ts.createTypeChecker = createTypeChecker; +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + function getDeclarationDiagnostics(host, resolver, targetSourceFile) { + var diagnostics = []; + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); + return diagnostics; + } + ts.getDeclarationDiagnostics = getDeclarationDiagnostics; + function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { + var newLine = host.getNewLine(); + var compilerOptions = host.getCompilerOptions(); + var languageVersion = compilerOptions.target || 0; + var write; + var writeLine; + var increaseIndent; + var decreaseIndent; + var writeTextOfNode; + var writer = createAndSetNewTextWriterWithSymbolWriter(); + var enclosingDeclaration; + var currentSourceFile; + var reportedDeclarationError = false; + var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; + var emit = compilerOptions.stripInternal ? stripInternal : emitNode; + var moduleElementDeclarationEmitInfo = []; + var asynchronousSubModuleDeclarationEmitInfo; + var referencePathsOutput = ""; + if (root) { + if (!compilerOptions.noResolve) { + var addedGlobalFileReference = false; + ts.forEach(root.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); + if (referencedFile && ((referencedFile.flags & 2048) || + ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || + !addedGlobalFileReference)) { + writeReferencePath(referencedFile); + if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { + addedGlobalFileReference = true; + } + } + }); + } + emitSourceFile(root); + if (moduleElementDeclarationEmitInfo.length) { + var oldWriter = writer; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.isVisible) { + ts.Debug.assert(aliasEmitInfo.node.kind === 209); + createAndSetNewTextWriterWithSymbolWriter(); + ts.Debug.assert(aliasEmitInfo.indent === 0); + writeImportDeclaration(aliasEmitInfo.node); + aliasEmitInfo.asynchronousOutput = writer.getText(); + } + }); + setWriter(oldWriter); + } + } + else { + var emittedReferencedFiles = []; + ts.forEach(host.getSourceFiles(), function (sourceFile) { + if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { + if (!compilerOptions.noResolve) { + ts.forEach(sourceFile.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); + if (referencedFile && (ts.isExternalModuleOrDeclarationFile(referencedFile) && + !ts.contains(emittedReferencedFiles, referencedFile))) { + writeReferencePath(referencedFile); + emittedReferencedFiles.push(referencedFile); + } + }); + } + emitSourceFile(sourceFile); + } + }); + } + return { + reportedDeclarationError: reportedDeclarationError, + moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, + synchronousDeclarationOutput: writer.getText(), + referencePathsOutput: referencePathsOutput + }; + function hasInternalAnnotation(range) { + var text = currentSourceFile.text; + var comment = text.substring(range.pos, range.end); + return comment.indexOf("@internal") >= 0; + } + function stripInternal(node) { + if (node) { + var leadingCommentRanges = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + if (ts.forEach(leadingCommentRanges, hasInternalAnnotation)) { + return; + } + emitNode(node); + } + } + function createAndSetNewTextWriterWithSymbolWriter() { + var writer = ts.createTextWriter(newLine); + writer.trackSymbol = trackSymbol; + writer.writeKeyword = writer.write; + writer.writeOperator = writer.write; + writer.writePunctuation = writer.write; + writer.writeSpace = writer.write; + writer.writeStringLiteral = writer.writeLiteral; + writer.writeParameter = writer.write; + writer.writeSymbol = writer.write; + setWriter(writer); + return writer; + } + function setWriter(newWriter) { + writer = newWriter; + write = newWriter.write; + writeTextOfNode = newWriter.writeTextOfNode; + writeLine = newWriter.writeLine; + increaseIndent = newWriter.increaseIndent; + decreaseIndent = newWriter.decreaseIndent; + } + function writeAsynchronousModuleElements(nodes) { + var oldWriter = writer; + ts.forEach(nodes, function (declaration) { + var nodeToCheck; + if (declaration.kind === 198) { + nodeToCheck = declaration.parent.parent; + } + else if (declaration.kind === 212 || declaration.kind === 213 || declaration.kind === 210) { + ts.Debug.fail("We should be getting ImportDeclaration instead to write"); + } + else { + nodeToCheck = declaration; + } + var moduleElementEmitInfo = ts.forEach(moduleElementDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + if (!moduleElementEmitInfo && asynchronousSubModuleDeclarationEmitInfo) { + moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + } + if (moduleElementEmitInfo) { + if (moduleElementEmitInfo.node.kind === 209) { + moduleElementEmitInfo.isVisible = true; + } + else { + createAndSetNewTextWriterWithSymbolWriter(); + for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { + increaseIndent(); + } + if (nodeToCheck.kind === 205) { + ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); + asynchronousSubModuleDeclarationEmitInfo = []; + } + writeModuleElement(nodeToCheck); + if (nodeToCheck.kind === 205) { + moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; + asynchronousSubModuleDeclarationEmitInfo = undefined; + } + moduleElementEmitInfo.asynchronousOutput = writer.getText(); + } + } + }); + setWriter(oldWriter); + } + function handleSymbolAccessibilityError(symbolAccesibilityResult) { + if (symbolAccesibilityResult.accessibility === 0) { + if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { + writeAsynchronousModuleElements(symbolAccesibilityResult.aliasesToMakeVisible); + } + } + else { + reportedDeclarationError = true; + var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); + if (errorInfo) { + if (errorInfo.typeName) { + diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + } + else { + diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + } + } + } + } + function trackSymbol(symbol, enclosingDeclaration, meaning) { + handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning)); + } + function writeTypeOfDeclaration(declaration, type, getSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + write(": "); + if (type) { + emitType(type); + } + else { + resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, 2, writer); + } + } + function writeReturnTypeAtSignature(signature, getSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + write(": "); + if (signature.type) { + emitType(signature.type); + } + else { + resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, 2, writer); + } + } + function emitLines(nodes) { + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + emit(node); + } + } + function emitSeparatedList(nodes, separator, eachNodeEmitFn, canEmitFn) { + var currentWriterPos = writer.getTextPos(); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + if (!canEmitFn || canEmitFn(node)) { + if (currentWriterPos !== writer.getTextPos()) { + write(separator); + } + currentWriterPos = writer.getTextPos(); + eachNodeEmitFn(node); + } + } + } + function emitCommaList(nodes, eachNodeEmitFn, canEmitFn) { + emitSeparatedList(nodes, ", ", eachNodeEmitFn, canEmitFn); + } + function writeJsDocComments(declaration) { + if (declaration) { + var jsDocComments = ts.getJsDocComments(declaration, currentSourceFile); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); + ts.emitComments(currentSourceFile, writer, jsDocComments, true, newLine, ts.writeCommentRange); + } + } + function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type, getSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + emitType(type); + } + function emitType(type) { + switch (type.kind) { + case 112: + case 121: + case 119: + case 113: + case 122: + case 99: + case 8: + return writeTextOfNode(currentSourceFile, type); + case 177: + return emitHeritageClauseElement(type); + case 141: + return emitTypeReference(type); + case 144: + return emitTypeQuery(type); + case 146: + return emitArrayType(type); + case 147: + return emitTupleType(type); + case 148: + return emitUnionType(type); + case 149: + return emitParenType(type); + case 142: + case 143: + return emitSignatureDeclarationWithJsDocComments(type); + case 145: + return emitTypeLiteral(type); + case 65: + return emitEntityName(type); + case 126: + return emitEntityName(type); + } + function emitEntityName(entityName) { + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 208 ? entityName.parent : enclosingDeclaration); + handleSymbolAccessibilityError(visibilityResult); + writeEntityName(entityName); + function writeEntityName(entityName) { + if (entityName.kind === 65) { + writeTextOfNode(currentSourceFile, entityName); + } + else { + var left = entityName.kind === 126 ? entityName.left : entityName.expression; + var right = entityName.kind === 126 ? entityName.right : entityName.name; + writeEntityName(left); + write("."); + writeTextOfNode(currentSourceFile, right); + } + } + } + function emitHeritageClauseElement(node) { + if (ts.isSupportedHeritageClauseElement(node)) { + ts.Debug.assert(node.expression.kind === 65 || node.expression.kind === 155); + emitEntityName(node.expression); + if (node.typeArguments) { + write("<"); + emitCommaList(node.typeArguments, emitType); + write(">"); + } + } + } + function emitTypeReference(type) { + emitEntityName(type.typeName); + if (type.typeArguments) { + write("<"); + emitCommaList(type.typeArguments, emitType); + write(">"); + } + } + function emitTypeQuery(type) { + write("typeof "); + emitEntityName(type.exprName); + } + function emitArrayType(type) { + emitType(type.elementType); + write("[]"); + } + function emitTupleType(type) { + write("["); + emitCommaList(type.elementTypes, emitType); + write("]"); + } + function emitUnionType(type) { + emitSeparatedList(type.types, " | ", emitType); + } + function emitParenType(type) { + write("("); + emitType(type.type); + write(")"); + } + function emitTypeLiteral(type) { + write("{"); + if (type.members.length) { + writeLine(); + increaseIndent(); + emitLines(type.members); + decreaseIndent(); + } + write("}"); + } + } + function emitSourceFile(node) { + currentSourceFile = node; + enclosingDeclaration = node; + emitLines(node.statements); + } + function emitExportAssignment(node) { + write(node.isExportEquals ? "export = " : "export default "); + if (node.expression.kind === 65) { + writeTextOfNode(currentSourceFile, node.expression); + } + else { + write(": "); + if (node.type) { + emitType(node.type); + } + else { + writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; + resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, 2, writer); + } + } + write(";"); + writeLine(); + if (node.expression.kind === 65) { + var nodes = resolver.collectLinkedAliases(node.expression); + writeAsynchronousModuleElements(nodes); + } + function getDefaultExportAccessibilityDiagnostic(diagnostic) { + return { + diagnosticMessage: ts.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, + errorNode: node + }; + } + } + function isModuleElementVisible(node) { + return resolver.isDeclarationVisible(node); + } + function emitModuleElement(node, isModuleElementVisible) { + if (isModuleElementVisible) { + writeModuleElement(node); + } + else if (node.kind === 208 || + (node.parent.kind === 227 && ts.isExternalModule(currentSourceFile))) { + var isVisible; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 227) { + asynchronousSubModuleDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + else { + if (node.kind === 209) { + var importDeclaration = node; + if (importDeclaration.importClause) { + isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || + isVisibleNamedBinding(importDeclaration.importClause.namedBindings); + } + } + moduleElementDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + } + } + function writeModuleElement(node) { + switch (node.kind) { + case 200: + return writeFunctionDeclaration(node); + case 180: + return writeVariableStatement(node); + case 202: + return writeInterfaceDeclaration(node); + case 201: + return writeClassDeclaration(node); + case 203: + return writeTypeAliasDeclaration(node); + case 204: + return writeEnumDeclaration(node); + case 205: + return writeModuleDeclaration(node); + case 208: + return writeImportEqualsDeclaration(node); + case 209: + return writeImportDeclaration(node); + default: + ts.Debug.fail("Unknown symbol kind"); + } + } + function emitModuleElementDeclarationFlags(node) { + if (node.parent === currentSourceFile) { + if (node.flags & 1) { + write("export "); + } + if (node.flags & 256) { + write("default "); + } + else if (node.kind !== 202) { + write("declare "); + } + } + } + function emitClassMemberDeclarationFlags(node) { + if (node.flags & 32) { + write("private "); + } + else if (node.flags & 64) { + write("protected "); + } + if (node.flags & 128) { + write("static "); + } + } + function writeImportEqualsDeclaration(node) { + emitJsDocComments(node); + if (node.flags & 1) { + write("export "); + } + write("import "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + if (ts.isInternalModuleImportEqualsDeclaration(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); + write(";"); + } + else { + write("require("); + writeTextOfNode(currentSourceFile, ts.getExternalModuleImportEqualsDeclarationExpression(node)); + write(");"); + } + writer.writeLine(); + function getImportEntityNameVisibilityError(symbolAccesibilityResult) { + return { + diagnosticMessage: ts.Diagnostics.Import_declaration_0_is_using_private_name_1, + errorNode: node, + typeName: node.name + }; + } + } + function isVisibleNamedBinding(namedBindings) { + if (namedBindings) { + if (namedBindings.kind === 211) { + return resolver.isDeclarationVisible(namedBindings); + } + else { + return ts.forEach(namedBindings.elements, function (namedImport) { return resolver.isDeclarationVisible(namedImport); }); + } + } + } + function writeImportDeclaration(node) { + if (!node.importClause && !(node.flags & 1)) { + return; + } + emitJsDocComments(node); + if (node.flags & 1) { + write("export "); + } + write("import "); + if (node.importClause) { + var currentWriterPos = writer.getTextPos(); + if (node.importClause.name && resolver.isDeclarationVisible(node.importClause)) { + writeTextOfNode(currentSourceFile, node.importClause.name); + } + if (node.importClause.namedBindings && isVisibleNamedBinding(node.importClause.namedBindings)) { + if (currentWriterPos !== writer.getTextPos()) { + write(", "); + } + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + writeTextOfNode(currentSourceFile, node.importClause.namedBindings.name); + } + else { + write("{ "); + emitCommaList(node.importClause.namedBindings.elements, emitImportOrExportSpecifier, resolver.isDeclarationVisible); + write(" }"); + } + } + write(" from "); + } + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + write(";"); + writer.writeLine(); + } + function emitImportOrExportSpecifier(node) { + if (node.propertyName) { + writeTextOfNode(currentSourceFile, node.propertyName); + write(" as "); + } + writeTextOfNode(currentSourceFile, node.name); + } + function emitExportSpecifier(node) { + emitImportOrExportSpecifier(node); + var nodes = resolver.collectLinkedAliases(node.propertyName || node.name); + writeAsynchronousModuleElements(nodes); + } + function emitExportDeclaration(node) { + emitJsDocComments(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitCommaList(node.exportClause.elements, emitExportSpecifier); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + } + write(";"); + writer.writeLine(); + } + function writeModuleDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("module "); + writeTextOfNode(currentSourceFile, node.name); + while (node.body.kind !== 206) { + node = node.body; + write("."); + writeTextOfNode(currentSourceFile, node.name); + } + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.body.statements); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function writeTypeAliasDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("type "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); + write(";"); + writeLine(); + function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult) { + return { + diagnosticMessage: ts.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, + errorNode: node.type, + typeName: node.name + }; + } + } + function writeEnumDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isConst(node)) { + write("const "); + } + write("enum "); + writeTextOfNode(currentSourceFile, node.name); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + } + function emitEnumMemberDeclaration(node) { + emitJsDocComments(node); + writeTextOfNode(currentSourceFile, node.name); + var enumMemberValue = resolver.getConstantValue(node); + if (enumMemberValue !== undefined) { + write(" = "); + write(enumMemberValue.toString()); + } + write(","); + writeLine(); + } + function isPrivateMethodTypeParameter(node) { + return node.parent.kind === 134 && (node.parent.flags & 32); + } + function emitTypeParameters(typeParameters) { + function emitTypeParameter(node) { + increaseIndent(); + emitJsDocComments(node); + decreaseIndent(); + writeTextOfNode(currentSourceFile, node.name); + if (node.constraint && !isPrivateMethodTypeParameter(node)) { + write(" extends "); + if (node.parent.kind === 142 || + node.parent.kind === 143 || + (node.parent.parent && node.parent.parent.kind === 145)) { + ts.Debug.assert(node.parent.kind === 134 || + node.parent.kind === 133 || + node.parent.kind === 142 || + node.parent.kind === 143 || + node.parent.kind === 138 || + node.parent.kind === 139); + emitType(node.constraint); + } + else { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.constraint, getTypeParameterConstraintVisibilityError); + } + } + function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage; + switch (node.parent.kind) { + case 201: + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; + break; + case 202: + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; + break; + case 139: + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + case 138: + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + case 134: + case 133: + if (node.parent.flags & 128) { + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === 201) { + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + break; + case 200: + diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; + break; + default: + ts.Debug.fail("This is unknown parent for type parameter: " + node.parent.kind); + } + return { + diagnosticMessage: diagnosticMessage, + errorNode: node, + typeName: node.name + }; + } + } + if (typeParameters) { + write("<"); + emitCommaList(typeParameters, emitTypeParameter); + write(">"); + } + } + function emitHeritageClause(typeReferences, isImplementsList) { + if (typeReferences) { + write(isImplementsList ? " implements " : " extends "); + emitCommaList(typeReferences, emitTypeOfTypeReference); + } + function emitTypeOfTypeReference(node) { + if (ts.isSupportedHeritageClauseElement(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + } + function getHeritageClauseVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage; + if (node.parent.parent.kind === 201) { + diagnosticMessage = isImplementsList ? + ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : + ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; + } + else { + diagnosticMessage = ts.Diagnostics.Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1; + } + return { + diagnosticMessage: diagnosticMessage, + errorNode: node, + typeName: node.parent.parent.name + }; + } + } + } + function writeClassDeclaration(node) { + function emitParameterProperties(constructorDeclaration) { + if (constructorDeclaration) { + ts.forEach(constructorDeclaration.parameters, function (param) { + if (param.flags & 112) { + emitPropertyDeclaration(param); + } + }); + } + } + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("class "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + emitHeritageClause([baseTypeNode], false); + } + emitHeritageClause(ts.getClassImplementsHeritageClauseElements(node), true); + write(" {"); + writeLine(); + increaseIndent(); + emitParameterProperties(ts.getFirstConstructorWithBody(node)); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function writeInterfaceDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("interface "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function emitPropertyDeclaration(node) { + if (ts.hasDynamicName(node)) { + return; + } + emitJsDocComments(node); + emitClassMemberDeclarationFlags(node); + emitVariableDeclaration(node); + write(";"); + writeLine(); + } + function emitVariableDeclaration(node) { + if (node.kind !== 198 || resolver.isDeclarationVisible(node)) { + if (ts.isBindingPattern(node.name)) { + emitBindingPattern(node.name); + } + else { + writeTextOfNode(currentSourceFile, node.name); + if ((node.kind === 132 || node.kind === 131) && ts.hasQuestionToken(node)) { + write("?"); + } + if ((node.kind === 132 || node.kind === 131) && node.parent.kind === 145) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.flags & 32)) { + writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } + } + } + function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + if (node.kind === 198) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + } + else if (node.kind === 132 || node.kind === 131) { + if (node.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } + } + } + function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: node, + typeName: node.name + } : undefined; + } + function emitBindingPattern(bindingPattern) { + var elements = []; + for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { + var element = _a[_i]; + if (element.kind !== 175) { + elements.push(element); + } + } + emitCommaList(elements, emitBindingElement); + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + writeTextOfNode(currentSourceFile, bindingElement.name); + writeTypeOfDeclaration(bindingElement, undefined, getBindingElementTypeVisibilityError); + } + } + } + } + function emitTypeOfVariableDeclarationFromTypeLiteral(node) { + if (node.type) { + write(": "); + emitType(node.type); + } + } + function isVariableStatementVisible(node) { + return ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); + } + function writeVariableStatement(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isLet(node.declarationList)) { + write("let "); + } + else if (ts.isConst(node.declarationList)) { + write("const "); + } + else { + write("var "); + } + emitCommaList(node.declarationList.declarations, emitVariableDeclaration, resolver.isDeclarationVisible); + write(";"); + writeLine(); + } + function emitAccessorDeclaration(node) { + if (ts.hasDynamicName(node)) { + return; + } + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + var accessorWithTypeAnnotation; + if (node === accessors.firstAccessor) { + emitJsDocComments(accessors.getAccessor); + emitJsDocComments(accessors.setAccessor); + emitClassMemberDeclarationFlags(node); + writeTextOfNode(currentSourceFile, node.name); + if (!(node.flags & 32)) { + accessorWithTypeAnnotation = node; + var type = getTypeAnnotationFromAccessor(node); + if (!type) { + var anotherAccessor = node.kind === 136 ? accessors.setAccessor : accessors.getAccessor; + type = getTypeAnnotationFromAccessor(anotherAccessor); + if (type) { + accessorWithTypeAnnotation = anotherAccessor; + } + } + writeTypeOfDeclaration(node, type, getAccessorDeclarationTypeVisibilityError); + } + write(";"); + writeLine(); + } + function getTypeAnnotationFromAccessor(accessor) { + if (accessor) { + return accessor.kind === 136 + ? accessor.type + : accessor.parameters.length > 0 + ? accessor.parameters[0].type + : undefined; + } + } + function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage; + if (accessorWithTypeAnnotation.kind === 137) { + if (accessorWithTypeAnnotation.parent.flags & 128) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; + } + else { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; + } + return { + diagnosticMessage: diagnosticMessage, + errorNode: accessorWithTypeAnnotation.parameters[0], + typeName: accessorWithTypeAnnotation.name + }; + } + else { + if (accessorWithTypeAnnotation.flags & 128) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; + } + else { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; + } + return { + diagnosticMessage: diagnosticMessage, + errorNode: accessorWithTypeAnnotation.name, + typeName: undefined + }; + } + } + } + function writeFunctionDeclaration(node) { + if (ts.hasDynamicName(node)) { + return; + } + if (!resolver.isImplementationOfOverload(node)) { + emitJsDocComments(node); + if (node.kind === 200) { + emitModuleElementDeclarationFlags(node); + } + else if (node.kind === 134) { + emitClassMemberDeclarationFlags(node); + } + if (node.kind === 200) { + write("function "); + writeTextOfNode(currentSourceFile, node.name); + } + else if (node.kind === 135) { + write("constructor"); + } + else { + writeTextOfNode(currentSourceFile, node.name); + if (ts.hasQuestionToken(node)) { + write("?"); + } + } + emitSignatureDeclaration(node); + } + } + function emitSignatureDeclarationWithJsDocComments(node) { + emitJsDocComments(node); + emitSignatureDeclaration(node); + } + function emitSignatureDeclaration(node) { + if (node.kind === 139 || node.kind === 143) { + write("new "); + } + emitTypeParameters(node.typeParameters); + if (node.kind === 140) { + write("["); + } + else { + write("("); + } + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitCommaList(node.parameters, emitParameterDeclaration); + if (node.kind === 140) { + write("]"); + } + else { + write(")"); + } + var isFunctionTypeOrConstructorType = node.kind === 142 || node.kind === 143; + if (isFunctionTypeOrConstructorType || node.parent.kind === 145) { + if (node.type) { + write(isFunctionTypeOrConstructorType ? " => " : ": "); + emitType(node.type); + } + } + else if (node.kind !== 135 && !(node.flags & 32)) { + writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); + } + enclosingDeclaration = prevEnclosingDeclaration; + if (!isFunctionTypeOrConstructorType) { + write(";"); + writeLine(); + } + function getReturnTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage; + switch (node.kind) { + case 139: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 138: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 140: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 134: + case 133: + if (node.flags & 128) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; + } + else if (node.parent.kind === 201) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; + } + else { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; + } + break; + case 200: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; + break; + default: + ts.Debug.fail("This is unknown kind for signature: " + node.kind); + } + return { + diagnosticMessage: diagnosticMessage, + errorNode: node.name || node + }; + } + } + function emitParameterDeclaration(node) { + increaseIndent(); + emitJsDocComments(node); + if (node.dotDotDotToken) { + write("..."); + } + if (ts.isBindingPattern(node.name)) { + emitBindingPattern(node.name); + } + else { + writeTextOfNode(currentSourceFile, node.name); + } + if (node.initializer || ts.hasQuestionToken(node)) { + write("?"); + } + decreaseIndent(); + if (node.parent.kind === 142 || + node.parent.kind === 143 || + node.parent.parent.kind === 145) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.parent.flags & 32)) { + writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); + } + function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: node, + typeName: node.name + } : undefined; + } + function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + switch (node.parent.kind) { + case 135: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + case 139: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + case 138: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 134: + case 133: + if (node.parent.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + case 200: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + default: + ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); + } + } + function emitBindingPattern(bindingPattern) { + if (bindingPattern.kind === 150) { + write("{"); + emitCommaList(bindingPattern.elements, emitBindingElement); + write("}"); + } + else if (bindingPattern.kind === 151) { + write("["); + var elements = bindingPattern.elements; + emitCommaList(elements, emitBindingElement); + if (elements && elements.hasTrailingComma) { + write(", "); + } + write("]"); + } + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.kind === 175) { + write(" "); + } + else if (bindingElement.kind === 152) { + if (bindingElement.propertyName) { + writeTextOfNode(currentSourceFile, bindingElement.propertyName); + write(": "); + emitBindingPattern(bindingElement.name); + } + else if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + ts.Debug.assert(bindingElement.name.kind === 65); + if (bindingElement.dotDotDotToken) { + write("..."); + } + writeTextOfNode(currentSourceFile, bindingElement.name); + } + } + } + } + } + function emitNode(node) { + switch (node.kind) { + case 200: + case 205: + case 208: + case 202: + case 201: + case 203: + case 204: + return emitModuleElement(node, isModuleElementVisible(node)); + case 180: + return emitModuleElement(node, isVariableStatementVisible(node)); + case 209: + return emitModuleElement(node, !node.importClause); + case 215: + return emitExportDeclaration(node); + case 135: + case 134: + case 133: + return writeFunctionDeclaration(node); + case 139: + case 138: + case 140: + return emitSignatureDeclarationWithJsDocComments(node); + case 136: + case 137: + return emitAccessorDeclaration(node); + case 132: + case 131: + return emitPropertyDeclaration(node); + case 226: + return emitEnumMemberDeclaration(node); + case 214: + return emitExportAssignment(node); + case 227: + return emitSourceFile(node); + } + } + function writeReferencePath(referencedFile) { + var declFileName = referencedFile.flags & 2048 + ? referencedFile.fileName + : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) + ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") + : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; + declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); + referencePathsOutput += "/// " + newLine; + } + } + function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); + if (!emitDeclarationResult.reportedDeclarationError) { + var declarationOutput = emitDeclarationResult.referencePathsOutput + + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); + ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + } + function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { + var appliedSyncOutputPos = 0; + var declarationOutput = ""; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.asynchronousOutput) { + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); + declarationOutput += getDeclarationOutput(aliasEmitInfo.asynchronousOutput, aliasEmitInfo.subModuleElementDeclarationEmitInfo); + appliedSyncOutputPos = aliasEmitInfo.outputPos; + } + }); + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos); + return declarationOutput; + } + } + ts.writeDeclarationFile = writeDeclarationFile; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + function isExternalModuleOrDeclarationFile(sourceFile) { + return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); + } + ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; + function emitFiles(resolver, host, targetSourceFile) { + var compilerOptions = host.getCompilerOptions(); + var languageVersion = compilerOptions.target || 0; + var sourceMapDataList = compilerOptions.sourceMap ? [] : undefined; + var diagnostics = []; + var newLine = host.getNewLine(); + if (targetSourceFile === undefined) { + ts.forEach(host.getSourceFiles(), function (sourceFile) { + if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, ".js"); + emitFile(jsFilePath, sourceFile); + } + }); + if (compilerOptions.out) { + emitFile(compilerOptions.out); + } + } + else { + if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitFile(jsFilePath, targetSourceFile); + } + else if (!ts.isDeclarationFile(targetSourceFile) && compilerOptions.out) { + emitFile(compilerOptions.out); + } + } + diagnostics = ts.sortAndDeduplicateDiagnostics(diagnostics); + return { + emitSkipped: false, + diagnostics: diagnostics, + sourceMaps: sourceMapDataList + }; + function isNodeDescendentOf(node, ancestor) { + while (node) { + if (node === ancestor) + return true; + node = node.parent; + } + return false; + } + function isUniqueLocalName(name, container) { + for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { + if (node.locals && ts.hasProperty(node.locals, name)) { + if (node.locals[name].flags & (107455 | 1048576 | 8388608)) { + return false; + } + } + } + return true; + } + function emitJavaScript(jsFilePath, root) { + var writer = ts.createTextWriter(newLine); + var write = writer.write; + var writeTextOfNode = writer.writeTextOfNode; + var writeLine = writer.writeLine; + var increaseIndent = writer.increaseIndent; + var decreaseIndent = writer.decreaseIndent; + var currentSourceFile; + var generatedNameSet = {}; + var nodeToGeneratedName = []; + var blockScopedVariableToGeneratedName; + var computedPropertyNamesToGeneratedNames; + var extendsEmitted = false; + var decorateEmitted = false; + var tempFlags = 0; + var tempVariables; + var tempParameters; + var externalImports; + var exportSpecifiers; + var exportEquals; + var hasExportStars; + var writeEmittedFiles = writeJavaScriptFile; + var detachedCommentsInfo; + var writeComment = ts.writeCommentRange; + var emit = emitNodeWithoutSourceMap; + var emitStart = function (node) { }; + var emitEnd = function (node) { }; + var emitToken = emitTokenText; + var scopeEmitStart = function (scopeDeclaration, scopeName) { }; + var scopeEmitEnd = function () { }; + var sourceMapData; + if (compilerOptions.sourceMap) { + initializeEmitterWithSourceMaps(); + } + if (root) { + emitSourceFile(root); + } + else { + ts.forEach(host.getSourceFiles(), function (sourceFile) { + if (!isExternalModuleOrDeclarationFile(sourceFile)) { + emitSourceFile(sourceFile); + } + }); + } + writeLine(); + writeEmittedFiles(writer.getText(), compilerOptions.emitBOM); + return; + function emitSourceFile(sourceFile) { + currentSourceFile = sourceFile; + emit(sourceFile); + } + function isUniqueName(name) { + return !resolver.hasGlobalName(name) && + !ts.hasProperty(currentSourceFile.identifiers, name) && + !ts.hasProperty(generatedNameSet, name); + } + function makeTempVariableName(flags) { + if (flags && !(tempFlags & flags)) { + var name = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name)) { + tempFlags |= flags; + return name; + } + } + while (true) { + var count = tempFlags & 268435455; + tempFlags++; + if (count !== 8 && count !== 13) { + var name_12 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_12)) { + return name_12; + } + } + } + } + function makeUniqueName(baseName) { + if (baseName.charCodeAt(baseName.length - 1) !== 95) { + baseName += "_"; + } + var i = 1; + while (true) { + var generatedName = baseName + i; + if (isUniqueName(generatedName)) { + return generatedNameSet[generatedName] = generatedName; + } + i++; + } + } + function assignGeneratedName(node, name) { + nodeToGeneratedName[ts.getNodeId(node)] = ts.unescapeIdentifier(name); + } + function generateNameForFunctionOrClassDeclaration(node) { + if (!node.name) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForModuleOrEnum(node) { + if (node.name.kind === 65) { + var name_13 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_13, node) ? name_13 : makeUniqueName(name_13)); + } + } + function generateNameForImportOrExportDeclaration(node) { + var expr = ts.getExternalModuleName(node); + var baseName = expr.kind === 8 ? + ts.escapeIdentifier(ts.makeIdentifierFromModuleName(expr.text)) : "module"; + assignGeneratedName(node, makeUniqueName(baseName)); + } + function generateNameForImportDeclaration(node) { + if (node.importClause) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportDeclaration(node) { + if (node.moduleSpecifier) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportAssignment(node) { + if (node.expression && node.expression.kind !== 65) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForNode(node) { + switch (node.kind) { + case 200: + case 201: + generateNameForFunctionOrClassDeclaration(node); + break; + case 205: + generateNameForModuleOrEnum(node); + generateNameForNode(node.body); + break; + case 204: + generateNameForModuleOrEnum(node); + break; + case 209: + generateNameForImportDeclaration(node); + break; + case 215: + generateNameForExportDeclaration(node); + break; + case 214: + generateNameForExportAssignment(node); + break; + } + } + function getGeneratedNameForNode(node) { + var nodeId = ts.getNodeId(node); + if (!nodeToGeneratedName[nodeId]) { + generateNameForNode(node); + } + return nodeToGeneratedName[nodeId]; + } + function initializeEmitterWithSourceMaps() { + var sourceMapDir; + var sourceMapSourceIndex = -1; + var sourceMapNameIndexMap = {}; + var sourceMapNameIndices = []; + function getSourceMapNameIndex() { + return sourceMapNameIndices.length ? sourceMapNameIndices[sourceMapNameIndices.length - 1] : -1; + } + var lastRecordedSourceMapSpan; + var lastEncodedSourceMapSpan = { + emittedLine: 1, + emittedColumn: 1, + sourceLine: 1, + sourceColumn: 1, + sourceIndex: 0 + }; + var lastEncodedNameIndex = 0; + function encodeLastRecordedSourceMapSpan() { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { + return; + } + var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + if (lastEncodedSourceMapSpan.emittedLine == lastRecordedSourceMapSpan.emittedLine) { + if (sourceMapData.sourceMapMappings) { + sourceMapData.sourceMapMappings += ","; + } + } + else { + for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + sourceMapData.sourceMapMappings += ";"; + } + prevEncodedEmittedColumn = 1; + } + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); + if (lastRecordedSourceMapSpan.nameIndex >= 0) { + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); + lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; + } + lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; + sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); + function base64VLQFormatEncode(inValue) { + function base64FormatEncode(inValue) { + if (inValue < 64) { + return 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + if (inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } + else { + inValue = inValue << 1; + } + var encodedStr = ""; + do { + var currentDigit = inValue & 31; + inValue = inValue >> 5; + if (inValue > 0) { + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + base64FormatEncode(currentDigit); + } while (inValue > 0); + return encodedStr; + } + } + function recordSourceMapSpan(pos) { + var sourceLinePos = ts.getLineAndCharacterOfPosition(currentSourceFile, pos); + sourceLinePos.line++; + sourceLinePos.character++; + var emittedLine = writer.getLine(); + var emittedColumn = writer.getColumn(); + if (!lastRecordedSourceMapSpan || + lastRecordedSourceMapSpan.emittedLine != emittedLine || + lastRecordedSourceMapSpan.emittedColumn != emittedColumn || + (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && + (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || + (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + encodeLastRecordedSourceMapSpan(); + lastRecordedSourceMapSpan = { + emittedLine: emittedLine, + emittedColumn: emittedColumn, + sourceLine: sourceLinePos.line, + sourceColumn: sourceLinePos.character, + nameIndex: getSourceMapNameIndex(), + sourceIndex: sourceMapSourceIndex + }; + } + else { + lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; + lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; + lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; + } + } + function recordEmitNodeStartSpan(node) { + recordSourceMapSpan(ts.skipTrivia(currentSourceFile.text, node.pos)); + } + function recordEmitNodeEndSpan(node) { + recordSourceMapSpan(node.end); + } + function writeTextWithSpanRecord(tokenKind, startPos, emitFn) { + var tokenStartPos = ts.skipTrivia(currentSourceFile.text, startPos); + recordSourceMapSpan(tokenStartPos); + var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); + recordSourceMapSpan(tokenEndPos); + return tokenEndPos; + } + function recordNewSourceFileStart(node) { + var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + sourceMapData.sourceMapSources.push(ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, true)); + sourceMapSourceIndex = sourceMapData.sourceMapSources.length - 1; + sourceMapData.inputSourceFileNames.push(node.fileName); + } + function recordScopeNameOfNode(node, scopeName) { + function recordScopeNameIndex(scopeNameIndex) { + sourceMapNameIndices.push(scopeNameIndex); + } + function recordScopeNameStart(scopeName) { + var scopeNameIndex = -1; + if (scopeName) { + var parentIndex = getSourceMapNameIndex(); + if (parentIndex !== -1) { + var name_14 = node.name; + if (!name_14 || name_14.kind !== 127) { + scopeName = "." + scopeName; + } + scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; + } + scopeNameIndex = ts.getProperty(sourceMapNameIndexMap, scopeName); + if (scopeNameIndex === undefined) { + scopeNameIndex = sourceMapData.sourceMapNames.length; + sourceMapData.sourceMapNames.push(scopeName); + sourceMapNameIndexMap[scopeName] = scopeNameIndex; + } + } + recordScopeNameIndex(scopeNameIndex); + } + if (scopeName) { + recordScopeNameStart(scopeName); + } + else if (node.kind === 200 || + node.kind === 162 || + node.kind === 134 || + node.kind === 133 || + node.kind === 136 || + node.kind === 137 || + node.kind === 205 || + node.kind === 201 || + node.kind === 204) { + if (node.name) { + var name_15 = node.name; + scopeName = name_15.kind === 127 + ? ts.getTextOfNode(name_15) + : node.name.text; + } + recordScopeNameStart(scopeName); + } + else { + recordScopeNameIndex(getSourceMapNameIndex()); + } + } + function recordScopeNameEnd() { + sourceMapNameIndices.pop(); + } + ; + function writeCommentRangeWithMap(curentSourceFile, writer, comment, newLine) { + recordSourceMapSpan(comment.pos); + ts.writeCommentRange(currentSourceFile, writer, comment, newLine); + recordSourceMapSpan(comment.end); + } + function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings) { + if (typeof JSON !== "undefined") { + return JSON.stringify({ + version: version, + file: file, + sourceRoot: sourceRoot, + sources: sources, + names: names, + mappings: mappings + }); + } + return "{\"version\":" + version + ",\"file\":\"" + ts.escapeString(file) + "\",\"sourceRoot\":\"" + ts.escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + ts.escapeString(mappings) + "\"}"; + function serializeStringArray(list) { + var output = ""; + for (var i = 0, n = list.length; i < n; i++) { + if (i) { + output += ","; + } + output += "\"" + ts.escapeString(list[i]) + "\""; + } + return output; + } + } + function writeJavaScriptAndSourceMapFile(emitOutput, writeByteOrderMark) { + encodeLastRecordedSourceMapSpan(); + ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); + sourceMapDataList.push(sourceMapData); + writeJavaScriptFile(emitOutput + "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL, writeByteOrderMark); + } + var sourceMapJsFile = ts.getBaseFileName(ts.normalizeSlashes(jsFilePath)); + sourceMapData = { + sourceMapFilePath: jsFilePath + ".map", + jsSourceMappingURL: sourceMapJsFile + ".map", + sourceMapFile: sourceMapJsFile, + sourceMapSourceRoot: compilerOptions.sourceRoot || "", + sourceMapSources: [], + inputSourceFileNames: [], + sourceMapNames: [], + sourceMapMappings: "", + sourceMapDecodedMappings: [] + }; + sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); + if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47) { + sourceMapData.sourceMapSourceRoot += ts.directorySeparator; + } + if (compilerOptions.mapRoot) { + sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); + if (root) { + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); + } + if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { + sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); + sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(jsFilePath)), ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), host.getCurrentDirectory(), host.getCanonicalFileName, true); + } + else { + sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); + } + } + else { + sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); + } + function emitNodeWithSourceMap(node, allowGeneratedIdentifiers) { + if (node) { + if (ts.nodeIsSynthesized(node)) { + return emitNodeWithoutSourceMap(node, false); + } + if (node.kind != 227) { + recordEmitNodeStartSpan(node); + emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers); + recordEmitNodeEndSpan(node); + } + else { + recordNewSourceFileStart(node); + emitNodeWithoutSourceMap(node, false); + } + } + } + writeEmittedFiles = writeJavaScriptAndSourceMapFile; + emit = emitNodeWithSourceMap; + emitStart = recordEmitNodeStartSpan; + emitEnd = recordEmitNodeEndSpan; + emitToken = writeTextWithSpanRecord; + scopeEmitStart = recordScopeNameOfNode; + scopeEmitEnd = recordScopeNameEnd; + writeComment = writeCommentRangeWithMap; + } + function writeJavaScriptFile(emitOutput, writeByteOrderMark) { + ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + } + function createTempVariable(flags) { + var result = ts.createSynthesizedNode(65); + result.text = makeTempVariableName(flags); + return result; + } + function recordTempDeclaration(name) { + if (!tempVariables) { + tempVariables = []; + } + tempVariables.push(name); + } + function createAndRecordTempVariable(flags) { + var temp = createTempVariable(flags); + recordTempDeclaration(temp); + return temp; + } + function emitTempDeclarations(newLine) { + if (tempVariables) { + if (newLine) { + writeLine(); + } + else { + write(" "); + } + write("var "); + emitCommaList(tempVariables); + write(";"); + } + } + function emitTokenText(tokenKind, startPos, emitFn) { + var tokenString = ts.tokenToString(tokenKind); + if (emitFn) { + emitFn(); + } + else { + write(tokenString); + } + return startPos + tokenString.length; + } + function emitOptional(prefix, node) { + if (node) { + write(prefix); + emit(node); + } + } + function emitParenthesizedIf(node, parenthesized) { + if (parenthesized) { + write("("); + } + emit(node); + if (parenthesized) { + write(")"); + } + } + function emitTrailingCommaIfPresent(nodeList) { + if (nodeList.hasTrailingComma) { + write(","); + } + } + function emitLinePreservingList(parent, nodes, allowTrailingComma, spacesBetweenBraces) { + ts.Debug.assert(nodes.length > 0); + increaseIndent(); + if (nodeStartPositionsAreOnSameLine(parent, nodes[0])) { + if (spacesBetweenBraces) { + write(" "); + } + } + else { + writeLine(); + } + for (var i = 0, n = nodes.length; i < n; i++) { + if (i) { + if (nodeEndIsOnSameLineAsNodeStart(nodes[i - 1], nodes[i])) { + write(", "); + } + else { + write(","); + writeLine(); + } + } + emit(nodes[i]); + } + if (nodes.hasTrailingComma && allowTrailingComma) { + write(","); + } + decreaseIndent(); + if (nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes))) { + if (spacesBetweenBraces) { + write(" "); + } + } + else { + writeLine(); + } + } + function emitList(nodes, start, count, multiLine, trailingComma) { + for (var i = 0; i < count; i++) { + if (multiLine) { + if (i) { + write(","); + } + writeLine(); + } + else { + if (i) { + write(", "); + } + } + emit(nodes[start + i]); + } + if (trailingComma) { + write(","); + } + if (multiLine) { + writeLine(); + } + } + function emitCommaList(nodes) { + if (nodes) { + emitList(nodes, 0, nodes.length, false, false); + } + } + function emitLines(nodes) { + emitLinesStartingAt(nodes, 0); + } + function emitLinesStartingAt(nodes, startIndex) { + for (var i = startIndex; i < nodes.length; i++) { + writeLine(); + emit(nodes[i]); + } + } + function isBinaryOrOctalIntegerLiteral(node, text) { + if (node.kind === 7 && text.length > 1) { + switch (text.charCodeAt(1)) { + case 98: + case 66: + case 111: + case 79: + return true; + } + } + return false; + } + function emitLiteral(node) { + var text = getLiteralText(node); + if (compilerOptions.sourceMap && (node.kind === 8 || ts.isTemplateLiteralKind(node.kind))) { + writer.writeLiteral(text); + } + else if (languageVersion < 2 && isBinaryOrOctalIntegerLiteral(node, text)) { + write(node.text); + } + else { + write(text); + } + } + function getLiteralText(node) { + if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { + return getQuotedEscapedLiteralText('"', node.text, '"'); + } + if (node.parent) { + return ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + } + switch (node.kind) { + case 8: + return getQuotedEscapedLiteralText('"', node.text, '"'); + case 10: + return getQuotedEscapedLiteralText('`', node.text, '`'); + case 11: + return getQuotedEscapedLiteralText('`', node.text, '${'); + case 12: + return getQuotedEscapedLiteralText('}', node.text, '${'); + case 13: + return getQuotedEscapedLiteralText('}', node.text, '`'); + case 7: + return node.text; + } + ts.Debug.fail("Literal kind '" + node.kind + "' not accounted for."); + } + function getQuotedEscapedLiteralText(leftQuote, text, rightQuote) { + return leftQuote + ts.escapeNonAsciiCharacters(ts.escapeString(text)) + rightQuote; + } + function emitDownlevelRawTemplateLiteral(node) { + var text = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + var isLast = node.kind === 10 || node.kind === 13; + text = text.substring(1, text.length - (isLast ? 1 : 2)); + text = text.replace(/\r\n?/g, "\n"); + text = ts.escapeString(text); + write('"' + text + '"'); + } + function emitDownlevelTaggedTemplateArray(node, literalEmitter) { + write("["); + if (node.template.kind === 10) { + literalEmitter(node.template); + } + else { + literalEmitter(node.template.head); + ts.forEach(node.template.templateSpans, function (child) { + write(", "); + literalEmitter(child.literal); + }); + } + write("]"); + } + function emitDownlevelTaggedTemplate(node) { + var tempVariable = createAndRecordTempVariable(0); + write("("); + emit(tempVariable); + write(" = "); + emitDownlevelTaggedTemplateArray(node, emit); + write(", "); + emit(tempVariable); + write(".raw = "); + emitDownlevelTaggedTemplateArray(node, emitDownlevelRawTemplateLiteral); + write(", "); + emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); + write("("); + emit(tempVariable); + if (node.template.kind === 171) { + ts.forEach(node.template.templateSpans, function (templateSpan) { + write(", "); + var needsParens = templateSpan.expression.kind === 169 + && templateSpan.expression.operatorToken.kind === 23; + emitParenthesizedIf(templateSpan.expression, needsParens); + }); + } + write("))"); + } + function emitTemplateExpression(node) { + if (languageVersion >= 2) { + ts.forEachChild(node, emit); + return; + } + var emitOuterParens = ts.isExpression(node.parent) + && templateNeedsParens(node, node.parent); + if (emitOuterParens) { + write("("); + } + var headEmitted = false; + if (shouldEmitTemplateHead()) { + emitLiteral(node.head); + headEmitted = true; + } + for (var i = 0, n = node.templateSpans.length; i < n; i++) { + var templateSpan = node.templateSpans[i]; + var needsParens = templateSpan.expression.kind !== 161 + && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; + if (i > 0 || headEmitted) { + write(" + "); + } + emitParenthesizedIf(templateSpan.expression, needsParens); + if (templateSpan.literal.text.length !== 0) { + write(" + "); + emitLiteral(templateSpan.literal); + } + } + if (emitOuterParens) { + write(")"); + } + function shouldEmitTemplateHead() { + // If this expression has an empty head literal and the first template span has a non-empty + // literal, then emitting the empty head literal is not necessary. + // `${ foo } and ${ bar }` + // can be emitted as + // foo + " and " + bar + // This is because it is only required that one of the first two operands in the emit + // output must be a string literal, so that the other operand and all following operands + // are forced into strings. + // + // If the first template span has an empty literal, then the head must still be emitted. + // `${ foo }${ bar }` + // must still be emitted as + // "" + foo + bar + ts.Debug.assert(node.templateSpans.length !== 0); + return node.head.text.length !== 0 || node.templateSpans[0].literal.text.length === 0; + } + function templateNeedsParens(template, parent) { + switch (parent.kind) { + case 157: + case 158: + return parent.expression === template; + case 159: + case 161: + return false; + default: + return comparePrecedenceToBinaryPlus(parent) !== -1; + } + } + function comparePrecedenceToBinaryPlus(expression) { + switch (expression.kind) { + case 169: + switch (expression.operatorToken.kind) { + case 35: + case 36: + case 37: + return 1; + case 33: + case 34: + return 0; + default: + return -1; + } + case 170: + return -1; + default: + return 1; + } + } + } + function emitTemplateSpan(span) { + emit(span.expression); + emit(span.literal); + } + function emitExpressionForPropertyName(node) { + ts.Debug.assert(node.kind !== 152); + if (node.kind === 8) { + emitLiteral(node); + } + else if (node.kind === 127) { + if (ts.nodeIsDecorated(node.parent)) { + if (!computedPropertyNamesToGeneratedNames) { + computedPropertyNamesToGeneratedNames = []; + } + var generatedName = computedPropertyNamesToGeneratedNames[node.id]; + if (generatedName) { + write(generatedName); + return; + } + var generatedVariable = createTempVariable(0); + generatedName = generatedVariable.text; + recordTempDeclaration(generatedVariable); + computedPropertyNamesToGeneratedNames[node.id] = generatedName; + write(generatedName); + write(" = "); + } + emit(node.expression); + } + else { + write("\""); + if (node.kind === 7) { + write(node.text); + } + else { + writeTextOfNode(currentSourceFile, node); + } + write("\""); + } + } + function isNotExpressionIdentifier(node) { + var parent = node.parent; + switch (parent.kind) { + case 129: + case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: + case 200: + case 136: + case 137: + case 162: + case 201: + case 202: + case 204: + case 205: + case 208: + case 210: + case 211: + return parent.name === node; + case 213: + case 217: + return parent.name === node || parent.propertyName === node; + case 190: + case 189: + case 214: + return false; + case 194: + return node.parent.label === node; + } + } + function emitExpressionIdentifier(node) { + var substitution = resolver.getExpressionNameSubstitution(node, getGeneratedNameForNode); + if (substitution) { + write(substitution); + } + else { + writeTextOfNode(currentSourceFile, node); + } + } + function getGeneratedNameForIdentifier(node) { + if (ts.nodeIsSynthesized(node) || !blockScopedVariableToGeneratedName) { + return undefined; + } + var variableId = resolver.getBlockScopedVariableId(node); + if (variableId === undefined) { + return undefined; + } + return blockScopedVariableToGeneratedName[variableId]; + } + function emitIdentifier(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers) { + var generatedName = getGeneratedNameForIdentifier(node); + if (generatedName) { + write(generatedName); + return; + } + } + if (!node.parent) { + write(node.text); + } + else if (!isNotExpressionIdentifier(node)) { + emitExpressionIdentifier(node); + } + else { + writeTextOfNode(currentSourceFile, node); + } + } + function emitThis(node) { + if (resolver.getNodeCheckFlags(node) & 2) { + write("_this"); + } + else { + write("this"); + } + } + function emitSuper(node) { + if (languageVersion >= 2) { + write("super"); + } + else { + var flags = resolver.getNodeCheckFlags(node); + if (flags & 16) { + write("_super.prototype"); + } + else { + write("_super"); + } + } + } + function emitObjectBindingPattern(node) { + write("{ "); + var elements = node.elements; + emitList(elements, 0, elements.length, false, elements.hasTrailingComma); + write(" }"); + } + function emitArrayBindingPattern(node) { + write("["); + var elements = node.elements; + emitList(elements, 0, elements.length, false, elements.hasTrailingComma); + write("]"); + } + function emitBindingElement(node) { + if (node.propertyName) { + emit(node.propertyName, false); + write(": "); + } + if (node.dotDotDotToken) { + write("..."); + } + if (ts.isBindingPattern(node.name)) { + emit(node.name); + } + else { + emitModuleMemberName(node); + } + emitOptional(" = ", node.initializer); + } + function emitSpreadElementExpression(node) { + write("..."); + emit(node.expression); + } + function needsParenthesisForPropertyAccessOrInvocation(node) { + switch (node.kind) { + case 65: + case 153: + case 155: + case 156: + case 157: + case 161: + return false; + } + return true; + } + function emitListWithSpread(elements, multiLine, trailingComma) { + var pos = 0; + var group = 0; + var length = elements.length; + while (pos < length) { + if (group === 1) { + write(".concat("); + } + else if (group > 1) { + write(", "); + } + var e = elements[pos]; + if (e.kind === 173) { + e = e.expression; + emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); + pos++; + } + else { + var i = pos; + while (i < length && elements[i].kind !== 173) { + i++; + } + write("["); + if (multiLine) { + increaseIndent(); + } + emitList(elements, pos, i - pos, multiLine, trailingComma && i === length); + if (multiLine) { + decreaseIndent(); + } + write("]"); + pos = i; + } + group++; + } + if (group > 1) { + write(")"); + } + } + function isSpreadElementExpression(node) { + return node.kind === 173; + } + function emitArrayLiteral(node) { + var elements = node.elements; + if (elements.length === 0) { + write("[]"); + } + else if (languageVersion >= 2 || !ts.forEach(elements, isSpreadElementExpression)) { + write("["); + emitLinePreservingList(node, node.elements, elements.hasTrailingComma, false); + write("]"); + } + else { + emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma); + } + } + function emitDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex) { + var parenthesizedObjectLiteral = createDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex); + return emit(parenthesizedObjectLiteral); + } + function createDownlevelObjectLiteralWithComputedProperties(originalObjectLiteral, firstComputedPropertyIndex) { + var tempVar = createAndRecordTempVariable(0); + var initialObjectLiteral = ts.createSynthesizedNode(154); + initialObjectLiteral.properties = originalObjectLiteral.properties.slice(0, firstComputedPropertyIndex); + initialObjectLiteral.flags |= 512; + var propertyPatches = createBinaryExpression(tempVar, 53, initialObjectLiteral); + ts.forEach(originalObjectLiteral.properties, function (property) { + var patchedProperty = tryCreatePatchingPropertyAssignment(originalObjectLiteral, tempVar, property); + if (patchedProperty) { + propertyPatches = createBinaryExpression(propertyPatches, 23, patchedProperty); + } + }); + propertyPatches = createBinaryExpression(propertyPatches, 23, createIdentifier(tempVar.text, true)); + var result = createParenthesizedExpression(propertyPatches); + return result; + } + function addCommentsToSynthesizedNode(node, leadingCommentRanges, trailingCommentRanges) { + node.leadingCommentRanges = leadingCommentRanges; + node.trailingCommentRanges = trailingCommentRanges; + } + function tryCreatePatchingPropertyAssignment(objectLiteral, tempVar, property) { + var leftHandSide = createMemberAccessForPropertyName(tempVar, property.name); + var maybeRightHandSide = tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property); + return maybeRightHandSide && createBinaryExpression(leftHandSide, 53, maybeRightHandSide, true); + } + function tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property) { + switch (property.kind) { + case 224: + return property.initializer; + case 225: + return createIdentifier(resolver.getExpressionNameSubstitution(property.name, getGeneratedNameForNode)); + case 134: + return createFunctionExpression(property.parameters, property.body); + case 136: + case 137: + var _a = ts.getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; + if (firstAccessor !== property) { + return undefined; + } + var propertyDescriptor = ts.createSynthesizedNode(154); + var descriptorProperties = []; + if (getAccessor) { + var getProperty_1 = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); + descriptorProperties.push(getProperty_1); + } + if (setAccessor) { + var setProperty = createPropertyAssignment(createIdentifier("set"), createFunctionExpression(setAccessor.parameters, setAccessor.body)); + descriptorProperties.push(setProperty); + } + var trueExpr = ts.createSynthesizedNode(95); + var enumerableTrue = createPropertyAssignment(createIdentifier("enumerable"), trueExpr); + descriptorProperties.push(enumerableTrue); + var configurableTrue = createPropertyAssignment(createIdentifier("configurable"), trueExpr); + descriptorProperties.push(configurableTrue); + propertyDescriptor.properties = descriptorProperties; + var objectDotDefineProperty = createPropertyAccessExpression(createIdentifier("Object"), createIdentifier("defineProperty")); + return createCallExpression(objectDotDefineProperty, createNodeArray(propertyDescriptor)); + default: + ts.Debug.fail("ObjectLiteralElement kind " + property.kind + " not accounted for."); + } + } + function createParenthesizedExpression(expression) { + var result = ts.createSynthesizedNode(161); + result.expression = expression; + return result; + } + function createNodeArray() { + var elements = []; + for (var _a = 0; _a < arguments.length; _a++) { + elements[_a - 0] = arguments[_a]; + } + var result = elements; + result.pos = -1; + result.end = -1; + return result; + } + function createBinaryExpression(left, operator, right, startsOnNewLine) { + var result = ts.createSynthesizedNode(169, startsOnNewLine); + result.operatorToken = ts.createSynthesizedNode(operator); + result.left = left; + result.right = right; + return result; + } + function createExpressionStatement(expression) { + var result = ts.createSynthesizedNode(182); + result.expression = expression; + return result; + } + function createMemberAccessForPropertyName(expression, memberName) { + if (memberName.kind === 65) { + return createPropertyAccessExpression(expression, memberName); + } + else if (memberName.kind === 8 || memberName.kind === 7) { + return createElementAccessExpression(expression, memberName); + } + else if (memberName.kind === 127) { + return createElementAccessExpression(expression, memberName.expression); + } + else { + ts.Debug.fail("Kind '" + memberName.kind + "' not accounted for."); + } + } + function createPropertyAssignment(name, initializer) { + var result = ts.createSynthesizedNode(224); + result.name = name; + result.initializer = initializer; + return result; + } + function createFunctionExpression(parameters, body) { + var result = ts.createSynthesizedNode(162); + result.parameters = parameters; + result.body = body; + return result; + } + function createPropertyAccessExpression(expression, name) { + var result = ts.createSynthesizedNode(155); + result.expression = expression; + result.dotToken = ts.createSynthesizedNode(20); + result.name = name; + return result; + } + function createElementAccessExpression(expression, argumentExpression) { + var result = ts.createSynthesizedNode(156); + result.expression = expression; + result.argumentExpression = argumentExpression; + return result; + } + function createIdentifier(name, startsOnNewLine) { + var result = ts.createSynthesizedNode(65, startsOnNewLine); + result.text = name; + return result; + } + function createCallExpression(invokedExpression, arguments) { + var result = ts.createSynthesizedNode(157); + result.expression = invokedExpression; + result.arguments = arguments; + return result; + } + function emitObjectLiteral(node) { + var properties = node.properties; + if (languageVersion < 2) { + var numProperties = properties.length; + var numInitialNonComputedProperties = numProperties; + for (var i = 0, n = properties.length; i < n; i++) { + if (properties[i].name.kind === 127) { + numInitialNonComputedProperties = i; + break; + } + } + var hasComputedProperty = numInitialNonComputedProperties !== properties.length; + if (hasComputedProperty) { + emitDownlevelObjectLiteralWithComputedProperties(node, numInitialNonComputedProperties); + return; + } + } + write("{"); + if (properties.length) { + emitLinePreservingList(node, properties, languageVersion >= 1, true); + } + write("}"); + } + function emitComputedPropertyName(node) { + write("["); + emitExpressionForPropertyName(node); + write("]"); + } + function emitMethod(node) { + emit(node.name, false); + if (languageVersion < 2) { + write(": function "); + } + emitSignatureAndBody(node); + } + function emitPropertyAssignment(node) { + emit(node.name, false); + write(": "); + emit(node.initializer); + } + function emitShorthandPropertyAssignment(node) { + emit(node.name, false); + if (languageVersion < 2) { + write(": "); + var generatedName = getGeneratedNameForIdentifier(node.name); + if (generatedName) { + write(generatedName); + } + else { + emitExpressionIdentifier(node.name); + } + } + else if (resolver.getExpressionNameSubstitution(node.name, getGeneratedNameForNode)) { + write(": "); + emitExpressionIdentifier(node.name); + } + } + function tryEmitConstantValue(node) { + if (compilerOptions.separateCompilation) { + return false; + } + var constantValue = resolver.getConstantValue(node); + if (constantValue !== undefined) { + write(constantValue.toString()); + if (!compilerOptions.removeComments) { + var propertyName = node.kind === 155 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + write(" /* " + propertyName + " */"); + } + return true; + } + return false; + } + function indentIfOnDifferentLines(parent, node1, node2, valueToWriteWhenNotIndenting) { + var realNodesAreOnDifferentLines = !ts.nodeIsSynthesized(parent) && !nodeEndIsOnSameLineAsNodeStart(node1, node2); + var synthesizedNodeIsOnDifferentLine = synthesizedNodeStartsOnNewLine(node2); + if (realNodesAreOnDifferentLines || synthesizedNodeIsOnDifferentLine) { + increaseIndent(); + writeLine(); + return true; + } + else { + if (valueToWriteWhenNotIndenting) { + write(valueToWriteWhenNotIndenting); + } + return false; + } + } + function emitPropertyAccess(node) { + if (tryEmitConstantValue(node)) { + return; + } + emit(node.expression); + var indentedBeforeDot = indentIfOnDifferentLines(node, node.expression, node.dotToken); + write("."); + var indentedAfterDot = indentIfOnDifferentLines(node, node.dotToken, node.name); + emit(node.name, false); + decreaseIndentIf(indentedBeforeDot, indentedAfterDot); + } + function emitQualifiedName(node) { + emit(node.left); + write("."); + emit(node.right); + } + function emitIndexedAccess(node) { + if (tryEmitConstantValue(node)) { + return; + } + emit(node.expression); + write("["); + emit(node.argumentExpression); + write("]"); + } + function hasSpreadElement(elements) { + return ts.forEach(elements, function (e) { return e.kind === 173; }); + } + function skipParentheses(node) { + while (node.kind === 161 || node.kind === 160) { + node = node.expression; + } + return node; + } + function emitCallTarget(node) { + if (node.kind === 65 || node.kind === 93 || node.kind === 91) { + emit(node); + return node; + } + var temp = createAndRecordTempVariable(0); + write("("); + emit(temp); + write(" = "); + emit(node); + write(")"); + return temp; + } + function emitCallWithSpread(node) { + var target; + var expr = skipParentheses(node.expression); + if (expr.kind === 155) { + target = emitCallTarget(expr.expression); + write("."); + emit(expr.name); + } + else if (expr.kind === 156) { + target = emitCallTarget(expr.expression); + write("["); + emit(expr.argumentExpression); + write("]"); + } + else if (expr.kind === 91) { + target = expr; + write("_super"); + } + else { + emit(node.expression); + } + write(".apply("); + if (target) { + if (target.kind === 91) { + emitThis(target); + } + else { + emit(target); + } + } + else { + write("void 0"); + } + write(", "); + emitListWithSpread(node.arguments, false, false); + write(")"); + } + function emitCallExpression(node) { + if (languageVersion < 2 && hasSpreadElement(node.arguments)) { + emitCallWithSpread(node); + return; + } + var superCall = false; + if (node.expression.kind === 91) { + emitSuper(node.expression); + superCall = true; + } + else { + emit(node.expression); + superCall = node.expression.kind === 155 && node.expression.expression.kind === 91; + } + if (superCall && languageVersion < 2) { + write(".call("); + emitThis(node.expression); + if (node.arguments.length) { + write(", "); + emitCommaList(node.arguments); + } + write(")"); + } + else { + write("("); + emitCommaList(node.arguments); + write(")"); + } + } + function emitNewExpression(node) { + write("new "); + emit(node.expression); + if (node.arguments) { + write("("); + emitCommaList(node.arguments); + write(")"); + } + } + function emitTaggedTemplateExpression(node) { + if (languageVersion >= 2) { + emit(node.tag); + write(" "); + emit(node.template); + } + else { + emitDownlevelTaggedTemplate(node); + } + } + function emitParenExpression(node) { + if (!node.parent || node.parent.kind !== 163) { + if (node.expression.kind === 160) { + var operand = node.expression.expression; + while (operand.kind == 160) { + operand = operand.expression; + } + if (operand.kind !== 167 && + operand.kind !== 166 && + operand.kind !== 165 && + operand.kind !== 164 && + operand.kind !== 168 && + operand.kind !== 158 && + !(operand.kind === 157 && node.parent.kind === 158) && + !(operand.kind === 162 && node.parent.kind === 157)) { + emit(operand); + return; + } + } + } + write("("); + emit(node.expression); + write(")"); + } + function emitDeleteExpression(node) { + write(ts.tokenToString(74)); + write(" "); + emit(node.expression); + } + function emitVoidExpression(node) { + write(ts.tokenToString(99)); + write(" "); + emit(node.expression); + } + function emitTypeOfExpression(node) { + write(ts.tokenToString(97)); + write(" "); + emit(node.expression); + } + function emitPrefixUnaryExpression(node) { + write(ts.tokenToString(node.operator)); + if (node.operand.kind === 167) { + var operand = node.operand; + if (node.operator === 33 && (operand.operator === 33 || operand.operator === 38)) { + write(" "); + } + else if (node.operator === 34 && (operand.operator === 34 || operand.operator === 39)) { + write(" "); + } + } + emit(node.operand); + } + function emitPostfixUnaryExpression(node) { + emit(node.operand); + write(ts.tokenToString(node.operator)); + } + function emitBinaryExpression(node) { + if (languageVersion < 2 && node.operatorToken.kind === 53 && + (node.left.kind === 154 || node.left.kind === 153)) { + emitDestructuring(node, node.parent.kind === 182); + } + else { + emit(node.left); + var indentedBeforeOperator = indentIfOnDifferentLines(node, node.left, node.operatorToken, node.operatorToken.kind !== 23 ? " " : undefined); + write(ts.tokenToString(node.operatorToken.kind)); + var indentedAfterOperator = indentIfOnDifferentLines(node, node.operatorToken, node.right, " "); + emit(node.right); + decreaseIndentIf(indentedBeforeOperator, indentedAfterOperator); + } + } + function synthesizedNodeStartsOnNewLine(node) { + return ts.nodeIsSynthesized(node) && node.startsOnNewLine; + } + function emitConditionalExpression(node) { + emit(node.condition); + var indentedBeforeQuestion = indentIfOnDifferentLines(node, node.condition, node.questionToken, " "); + write("?"); + var indentedAfterQuestion = indentIfOnDifferentLines(node, node.questionToken, node.whenTrue, " "); + emit(node.whenTrue); + decreaseIndentIf(indentedBeforeQuestion, indentedAfterQuestion); + var indentedBeforeColon = indentIfOnDifferentLines(node, node.whenTrue, node.colonToken, " "); + write(":"); + var indentedAfterColon = indentIfOnDifferentLines(node, node.colonToken, node.whenFalse, " "); + emit(node.whenFalse); + decreaseIndentIf(indentedBeforeColon, indentedAfterColon); + } + function decreaseIndentIf(value1, value2) { + if (value1) { + decreaseIndent(); + } + if (value2) { + decreaseIndent(); + } + } + function isSingleLineEmptyBlock(node) { + if (node && node.kind === 179) { + var block = node; + return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); + } + } + function emitBlock(node) { + if (isSingleLineEmptyBlock(node)) { + emitToken(14, node.pos); + write(" "); + emitToken(15, node.statements.end); + return; + } + emitToken(14, node.pos); + increaseIndent(); + scopeEmitStart(node.parent); + if (node.kind === 206) { + ts.Debug.assert(node.parent.kind === 205); + emitCaptureThisForNodeIfNecessary(node.parent); + } + emitLines(node.statements); + if (node.kind === 206) { + emitTempDeclarations(true); + } + decreaseIndent(); + writeLine(); + emitToken(15, node.statements.end); + scopeEmitEnd(); + } + function emitEmbeddedStatement(node) { + if (node.kind === 179) { + write(" "); + emit(node); + } + else { + increaseIndent(); + writeLine(); + emit(node); + decreaseIndent(); + } + } + function emitExpressionStatement(node) { + emitParenthesizedIf(node.expression, node.expression.kind === 163); + write(";"); + } + function emitIfStatement(node) { + var endPos = emitToken(84, node.pos); + write(" "); + endPos = emitToken(16, endPos); + emit(node.expression); + emitToken(17, node.expression.end); + emitEmbeddedStatement(node.thenStatement); + if (node.elseStatement) { + writeLine(); + emitToken(76, node.thenStatement.end); + if (node.elseStatement.kind === 183) { + write(" "); + emit(node.elseStatement); + } + else { + emitEmbeddedStatement(node.elseStatement); + } + } + } + function emitDoStatement(node) { + write("do"); + emitEmbeddedStatement(node.statement); + if (node.statement.kind === 179) { + write(" "); + } + else { + writeLine(); + } + write("while ("); + emit(node.expression); + write(");"); + } + function emitWhileStatement(node) { + write("while ("); + emit(node.expression); + write(")"); + emitEmbeddedStatement(node.statement); + } + function emitStartOfVariableDeclarationList(decl, startPos) { + var tokenKind = 98; + if (decl && languageVersion >= 2) { + if (ts.isLet(decl)) { + tokenKind = 105; + } + else if (ts.isConst(decl)) { + tokenKind = 70; + } + } + if (startPos !== undefined) { + emitToken(tokenKind, startPos); + } + else { + switch (tokenKind) { + case 98: + return write("var "); + case 105: + return write("let "); + case 70: + return write("const "); + } + } + } + function emitForStatement(node) { + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + if (node.initializer && node.initializer.kind === 199) { + var variableDeclarationList = node.initializer; + var declarations = variableDeclarationList.declarations; + emitStartOfVariableDeclarationList(declarations[0], endPos); + write(" "); + emitCommaList(declarations); + } + else if (node.initializer) { + emit(node.initializer); + } + write(";"); + emitOptional(" ", node.condition); + write(";"); + emitOptional(" ", node.iterator); + write(")"); + emitEmbeddedStatement(node.statement); + } + function emitForInOrForOfStatement(node) { + if (languageVersion < 2 && node.kind === 188) { + return emitDownLevelForOfStatement(node); + } + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + if (node.initializer.kind === 199) { + var variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length >= 1) { + var decl = variableDeclarationList.declarations[0]; + emitStartOfVariableDeclarationList(decl, endPos); + write(" "); + emit(decl); + } + } + else { + emit(node.initializer); + } + if (node.kind === 187) { + write(" in "); + } + else { + write(" of "); + } + emit(node.expression); + emitToken(17, node.expression.end); + emitEmbeddedStatement(node.statement); + } + function emitDownLevelForOfStatement(node) { + // The following ES6 code: + // + // for (let v of expr) { } + // + // should be emitted as + // + // for (let _i = 0, _a = expr; _i < _a.length; _i++) { + // let v = _a[_i]; + // } + // + // where _a and _i are temps emitted to capture the RHS and the counter, + // respectively. + // When the left hand side is an expression instead of a let declaration, + // the "let v" is not emitted. + // When the left hand side is a let/const, the v is renamed if there is + // another v in scope. + // Note that all assignments to the LHS are emitted in the body, including + // all destructuring. + // Note also that because an extra statement is needed to assign to the LHS, + // for-of bodies are always emitted as blocks. + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + var rhsIsIdentifier = node.expression.kind === 65; + var counter = createTempVariable(268435456); + var rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(0); + emitStart(node.expression); + write("var "); + emitNodeWithoutSourceMap(counter); + write(" = 0"); + emitEnd(node.expression); + if (!rhsIsIdentifier) { + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); + } + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write(" < "); + emitNodeWithoutSourceMap(rhsReference); + write(".length"); + emitEnd(node.initializer); + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write("++"); + emitEnd(node.initializer); + emitToken(17, node.expression.end); + write(" {"); + writeLine(); + increaseIndent(); + var rhsIterationValue = createElementAccessExpression(rhsReference, counter); + emitStart(node.initializer); + if (node.initializer.kind === 199) { + write("var "); + var variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length > 0) { + var declaration = variableDeclarationList.declarations[0]; + if (ts.isBindingPattern(declaration.name)) { + emitDestructuring(declaration, false, rhsIterationValue); + } + else { + emitNodeWithoutSourceMap(declaration); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + emitNodeWithoutSourceMap(createTempVariable(0)); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + var assignmentExpression = createBinaryExpression(node.initializer, 53, rhsIterationValue, false); + if (node.initializer.kind === 153 || node.initializer.kind === 154) { + emitDestructuring(assignmentExpression, true, undefined, node); + } + else { + emitNodeWithoutSourceMap(assignmentExpression); + } + } + emitEnd(node.initializer); + write(";"); + if (node.statement.kind === 179) { + emitLines(node.statement.statements); + } + else { + writeLine(); + emit(node.statement); + } + writeLine(); + decreaseIndent(); + write("}"); + } + function emitBreakOrContinueStatement(node) { + emitToken(node.kind === 190 ? 66 : 71, node.pos); + emitOptional(" ", node.label); + write(";"); + } + function emitReturnStatement(node) { + emitToken(90, node.pos); + emitOptional(" ", node.expression); + write(";"); + } + function emitWithStatement(node) { + write("with ("); + emit(node.expression); + write(")"); + emitEmbeddedStatement(node.statement); + } + function emitSwitchStatement(node) { + var endPos = emitToken(92, node.pos); + write(" "); + emitToken(16, endPos); + emit(node.expression); + endPos = emitToken(17, node.expression.end); + write(" "); + emitCaseBlock(node.caseBlock, endPos); + } + function emitCaseBlock(node, startPos) { + emitToken(14, startPos); + increaseIndent(); + emitLines(node.clauses); + decreaseIndent(); + writeLine(); + emitToken(15, node.clauses.end); + } + function nodeStartPositionsAreOnSameLine(node1, node2) { + return ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + } + function nodeEndPositionsAreOnSameLine(node1, node2) { + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, node2.end); + } + function nodeEndIsOnSameLineAsNodeStart(node1, node2) { + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + } + function emitCaseOrDefaultClause(node) { + if (node.kind === 220) { + write("case "); + emit(node.expression); + write(":"); + } + else { + write("default:"); + } + if (node.statements.length === 1 && nodeStartPositionsAreOnSameLine(node, node.statements[0])) { + write(" "); + emit(node.statements[0]); + } + else { + increaseIndent(); + emitLines(node.statements); + decreaseIndent(); + } + } + function emitThrowStatement(node) { + write("throw "); + emit(node.expression); + write(";"); + } + function emitTryStatement(node) { + write("try "); + emit(node.tryBlock); + emit(node.catchClause); + if (node.finallyBlock) { + writeLine(); + write("finally "); + emit(node.finallyBlock); + } + } + function emitCatchClause(node) { + writeLine(); + var endPos = emitToken(68, node.pos); + write(" "); + emitToken(16, endPos); + emit(node.variableDeclaration); + emitToken(17, node.variableDeclaration ? node.variableDeclaration.end : endPos); + write(" "); + emitBlock(node.block); + } + function emitDebuggerStatement(node) { + emitToken(72, node.pos); + write(";"); + } + function emitLabelledStatement(node) { + emit(node.label); + write(": "); + emit(node.statement); + } + function getContainingModule(node) { + do { + node = node.parent; + } while (node && node.kind !== 205); + return node; + } + function emitContainingModuleName(node) { + var container = getContainingModule(node); + write(container ? getGeneratedNameForNode(container) : "exports"); + } + function emitModuleMemberName(node) { + emitStart(node.name); + if (ts.getCombinedNodeFlags(node) & 1) { + var container = getContainingModule(node); + if (container) { + write(getGeneratedNameForNode(container)); + write("."); + } + else if (languageVersion < 2) { + write("exports."); + } + } + emitNodeWithoutSourceMap(node.name); + emitEnd(node.name); + } + function createVoidZero() { + var zero = ts.createSynthesizedNode(7); + zero.text = "0"; + var result = ts.createSynthesizedNode(166); + result.expression = zero; + return result; + } + function emitExportMemberAssignment(node) { + if (node.flags & 1) { + writeLine(); + emitStart(node); + if (node.flags & 256) { + write("exports.default"); + } + else { + emitModuleMemberName(node); + } + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + } + function emitExportMemberAssignments(name) { + if (!exportEquals && exportSpecifiers && ts.hasProperty(exportSpecifiers, name.text)) { + for (var _a = 0, _b = exportSpecifiers[name.text]; _a < _b.length; _a++) { + var specifier = _b[_a]; + writeLine(); + emitStart(specifier.name); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier.name); + write(" = "); + emitExpressionIdentifier(name); + write(";"); + } + } + } + function emitDestructuring(root, isAssignmentExpressionStatement, value, lowestNonSynthesizedAncestor) { + var emitCount = 0; + var isDeclaration = (root.kind === 198 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 129; + if (root.kind === 169) { + emitAssignmentExpression(root); + } + else { + ts.Debug.assert(!isAssignmentExpressionStatement); + emitBindingElement(root, value); + } + function emitAssignment(name, value) { + if (emitCount++) { + write(", "); + } + renameNonTopLevelLetAndConst(name); + if (name.parent && (name.parent.kind === 198 || name.parent.kind === 152)) { + emitModuleMemberName(name.parent); + } + else { + emit(name); + } + write(" = "); + emit(value); + } + function ensureIdentifier(expr) { + if (expr.kind !== 65) { + var identifier = createTempVariable(0); + if (!isDeclaration) { + recordTempDeclaration(identifier); + } + emitAssignment(identifier, expr); + expr = identifier; + } + return expr; + } + function createDefaultValueCheck(value, defaultValue) { + value = ensureIdentifier(value); + var equals = ts.createSynthesizedNode(169); + equals.left = value; + equals.operatorToken = ts.createSynthesizedNode(30); + equals.right = createVoidZero(); + return createConditionalExpression(equals, defaultValue, value); + } + function createConditionalExpression(condition, whenTrue, whenFalse) { + var cond = ts.createSynthesizedNode(170); + cond.condition = condition; + cond.questionToken = ts.createSynthesizedNode(50); + cond.whenTrue = whenTrue; + cond.colonToken = ts.createSynthesizedNode(51); + cond.whenFalse = whenFalse; + return cond; + } + function createNumericLiteral(value) { + var node = ts.createSynthesizedNode(7); + node.text = "" + value; + return node; + } + function parenthesizeForAccess(expr) { + if (expr.kind === 65 || expr.kind === 155 || expr.kind === 156) { + return expr; + } + var node = ts.createSynthesizedNode(161); + node.expression = expr; + return node; + } + function createPropertyAccess(object, propName) { + if (propName.kind !== 65) { + return createElementAccess(object, propName); + } + return createPropertyAccessExpression(parenthesizeForAccess(object), propName); + } + function createElementAccess(object, index) { + var node = ts.createSynthesizedNode(156); + node.expression = parenthesizeForAccess(object); + node.argumentExpression = index; + return node; + } + function emitObjectLiteralAssignment(target, value) { + var properties = target.properties; + if (properties.length !== 1) { + value = ensureIdentifier(value); + } + for (var _a = 0; _a < properties.length; _a++) { + var p = properties[_a]; + if (p.kind === 224 || p.kind === 225) { + var propName = (p.name); + emitDestructuringAssignment(p.initializer || propName, createPropertyAccess(value, propName)); + } + } + } + function emitArrayLiteralAssignment(target, value) { + var elements = target.elements; + if (elements.length !== 1) { + value = ensureIdentifier(value); + } + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + if (e.kind !== 175) { + if (e.kind !== 173) { + emitDestructuringAssignment(e, createElementAccess(value, createNumericLiteral(i))); + } + else { + if (i === elements.length - 1) { + value = ensureIdentifier(value); + emitAssignment(e.expression, value); + write(".slice(" + i + ")"); + } + } + } + } + } + function emitDestructuringAssignment(target, value) { + if (target.kind === 169 && target.operatorToken.kind === 53) { + value = createDefaultValueCheck(value, target.right); + target = target.left; + } + if (target.kind === 154) { + emitObjectLiteralAssignment(target, value); + } + else if (target.kind === 153) { + emitArrayLiteralAssignment(target, value); + } + else { + emitAssignment(target, value); + } + } + function emitAssignmentExpression(root) { + var target = root.left; + var value = root.right; + if (isAssignmentExpressionStatement) { + emitDestructuringAssignment(target, value); + } + else { + if (root.parent.kind !== 161) { + write("("); + } + value = ensureIdentifier(value); + emitDestructuringAssignment(target, value); + write(", "); + emit(value); + if (root.parent.kind !== 161) { + write(")"); + } + } + } + function emitBindingElement(target, value) { + if (target.initializer) { + value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer; + } + else if (!value) { + value = createVoidZero(); + } + if (ts.isBindingPattern(target.name)) { + var pattern = target.name; + var elements = pattern.elements; + if (elements.length !== 1) { + value = ensureIdentifier(value); + } + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + if (pattern.kind === 150) { + var propName = element.propertyName || element.name; + emitBindingElement(element, createPropertyAccess(value, propName)); + } + else if (element.kind !== 175) { + if (!element.dotDotDotToken) { + emitBindingElement(element, createElementAccess(value, createNumericLiteral(i))); + } + else { + if (i === elements.length - 1) { + value = ensureIdentifier(value); + emitAssignment(element.name, value); + write(".slice(" + i + ")"); + } + } + } + } + } + else { + emitAssignment(target.name, value); + } + } + } + function emitVariableDeclaration(node) { + if (ts.isBindingPattern(node.name)) { + if (languageVersion < 2) { + emitDestructuring(node, false); + } + else { + emit(node.name); + emitOptional(" = ", node.initializer); + } + } + else { + renameNonTopLevelLetAndConst(node.name); + emitModuleMemberName(node); + var initializer = node.initializer; + if (!initializer && languageVersion < 2) { + var isUninitializedLet = (resolver.getNodeCheckFlags(node) & 256) && + (getCombinedFlagsForIdentifier(node.name) & 4096); + if (isUninitializedLet && + node.parent.parent.kind !== 187 && + node.parent.parent.kind !== 188) { + initializer = createVoidZero(); + } + } + emitOptional(" = ", initializer); + } + } + function emitExportVariableAssignments(node) { + if (node.kind === 175) { + return; + } + var name = node.name; + if (name.kind === 65) { + emitExportMemberAssignments(name); + } + else if (ts.isBindingPattern(name)) { + ts.forEach(name.elements, emitExportVariableAssignments); + } + } + function getCombinedFlagsForIdentifier(node) { + if (!node.parent || (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return 0; + } + return ts.getCombinedNodeFlags(node.parent); + } + function renameNonTopLevelLetAndConst(node) { + if (languageVersion >= 2 || + ts.nodeIsSynthesized(node) || + node.kind !== 65 || + (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return; + } + var combinedFlags = getCombinedFlagsForIdentifier(node); + if (((combinedFlags & 12288) === 0) || combinedFlags & 1) { + return; + } + var list = ts.getAncestor(node, 199); + if (list.parent.kind === 180) { + var isSourceFileLevelBinding = list.parent.parent.kind === 227; + var isModuleLevelBinding = list.parent.parent.kind === 206; + var isFunctionLevelBinding = list.parent.parent.kind === 179 && ts.isFunctionLike(list.parent.parent.parent); + if (isSourceFileLevelBinding || isModuleLevelBinding || isFunctionLevelBinding) { + return; + } + } + var blockScopeContainer = ts.getEnclosingBlockScopeContainer(node); + var parent = blockScopeContainer.kind === 227 + ? blockScopeContainer + : blockScopeContainer.parent; + if (resolver.resolvesToSomeValue(parent, node.text)) { + var variableId = resolver.getBlockScopedVariableId(node); + if (!blockScopedVariableToGeneratedName) { + blockScopedVariableToGeneratedName = []; + } + var generatedName = makeUniqueName(node.text); + blockScopedVariableToGeneratedName[variableId] = generatedName; + } + } + function isES6ExportedDeclaration(node) { + return !!(node.flags & 1) && + languageVersion >= 2 && + node.parent.kind === 227; + } + function emitVariableStatement(node) { + if (!(node.flags & 1)) { + emitStartOfVariableDeclarationList(node.declarationList); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + emitStartOfVariableDeclarationList(node.declarationList); + } + emitCommaList(node.declarationList.declarations); + write(";"); + if (languageVersion < 2 && node.parent === currentSourceFile) { + ts.forEach(node.declarationList.declarations, emitExportVariableAssignments); + } + } + function emitParameter(node) { + if (languageVersion < 2) { + if (ts.isBindingPattern(node.name)) { + var name_16 = createTempVariable(0); + if (!tempParameters) { + tempParameters = []; + } + tempParameters.push(name_16); + emit(name_16); + } + else { + emit(node.name); + } + } + else { + if (node.dotDotDotToken) { + write("..."); + } + emit(node.name); + emitOptional(" = ", node.initializer); + } + } + function emitDefaultValueAssignments(node) { + if (languageVersion < 2) { + var tempIndex = 0; + ts.forEach(node.parameters, function (p) { + if (ts.isBindingPattern(p.name)) { + writeLine(); + write("var "); + emitDestructuring(p, false, tempParameters[tempIndex]); + write(";"); + tempIndex++; + } + else if (p.initializer) { + writeLine(); + emitStart(p); + write("if ("); + emitNodeWithoutSourceMap(p.name); + write(" === void 0)"); + emitEnd(p); + write(" { "); + emitStart(p); + emitNodeWithoutSourceMap(p.name); + write(" = "); + emitNodeWithoutSourceMap(p.initializer); + emitEnd(p); + write("; }"); + } + }); + } + } + function emitRestParameter(node) { + if (languageVersion < 2 && ts.hasRestParameters(node)) { + var restIndex = node.parameters.length - 1; + var restParam = node.parameters[restIndex]; + var tempName = createTempVariable(268435456).text; + writeLine(); + emitLeadingComments(restParam); + emitStart(restParam); + write("var "); + emitNodeWithoutSourceMap(restParam.name); + write(" = [];"); + emitEnd(restParam); + emitTrailingComments(restParam); + writeLine(); + write("for ("); + emitStart(restParam); + write("var " + tempName + " = " + restIndex + ";"); + emitEnd(restParam); + write(" "); + emitStart(restParam); + write(tempName + " < arguments.length;"); + emitEnd(restParam); + write(" "); + emitStart(restParam); + write(tempName + "++"); + emitEnd(restParam); + write(") {"); + increaseIndent(); + writeLine(); + emitStart(restParam); + emitNodeWithoutSourceMap(restParam.name); + write("[" + tempName + " - " + restIndex + "] = arguments[" + tempName + "];"); + emitEnd(restParam); + decreaseIndent(); + writeLine(); + write("}"); + } + } + function emitAccessor(node) { + write(node.kind === 136 ? "get " : "set "); + emit(node.name, false); + emitSignatureAndBody(node); + } + function shouldEmitAsArrowFunction(node) { + return node.kind === 163 && languageVersion >= 2; + } + function emitDeclarationName(node) { + if (node.name) { + emitNodeWithoutSourceMap(node.name); + } + else { + write(getGeneratedNameForNode(node)); + } + } + function shouldEmitFunctionName(node) { + if (node.kind === 162) { + return !!node.name; + } + if (node.kind === 200) { + return !!node.name || languageVersion < 2; + } + } + function emitFunctionDeclaration(node) { + if (ts.nodeIsMissing(node.body)) { + return emitOnlyPinnedOrTripleSlashComments(node); + } + if (node.kind !== 134 && node.kind !== 133) { + emitLeadingComments(node); + } + if (!shouldEmitAsArrowFunction(node)) { + if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } + write("function "); + } + if (shouldEmitFunctionName(node)) { + emitDeclarationName(node); + } + emitSignatureAndBody(node); + if (languageVersion < 2 && node.kind === 200 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); + } + if (node.kind !== 134 && node.kind !== 133) { + emitTrailingComments(node); + } + } + function emitCaptureThisForNodeIfNecessary(node) { + if (resolver.getNodeCheckFlags(node) & 4) { + writeLine(); + emitStart(node); + write("var _this = this;"); + emitEnd(node); + } + } + function emitSignatureParameters(node) { + increaseIndent(); + write("("); + if (node) { + var parameters = node.parameters; + var omitCount = languageVersion < 2 && ts.hasRestParameters(node) ? 1 : 0; + emitList(parameters, 0, parameters.length - omitCount, false, false); + } + write(")"); + decreaseIndent(); + } + function emitSignatureParametersForArrow(node) { + if (node.parameters.length === 1 && node.pos === node.parameters[0].pos) { + emit(node.parameters[0]); + return; + } + emitSignatureParameters(node); + } + function emitSignatureAndBody(node) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + if (shouldEmitAsArrowFunction(node)) { + emitSignatureParametersForArrow(node); + write(" =>"); + } + else { + emitSignatureParameters(node); + } + if (!node.body) { + write(" { }"); + } + else if (node.body.kind === 179) { + emitBlockFunctionBody(node, node.body); + } + else { + emitExpressionFunctionBody(node, node.body); + } + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); + } + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + function emitFunctionBodyPreamble(node) { + emitCaptureThisForNodeIfNecessary(node); + emitDefaultValueAssignments(node); + emitRestParameter(node); + } + function emitExpressionFunctionBody(node, body) { + if (languageVersion < 2) { + emitDownLevelExpressionFunctionBody(node, body); + return; + } + write(" "); + var current = body; + while (current.kind === 160) { + current = current.expression; + } + emitParenthesizedIf(body, current.kind === 154); + } + function emitDownLevelExpressionFunctionBody(node, body) { + write(" {"); + scopeEmitStart(node); + increaseIndent(); + var outPos = writer.getTextPos(); + emitDetachedComments(node.body); + emitFunctionBodyPreamble(node); + var preambleEmitted = writer.getTextPos() !== outPos; + decreaseIndent(); + if (!preambleEmitted && nodeStartPositionsAreOnSameLine(node, body)) { + write(" "); + emitStart(body); + write("return "); + emit(body); + emitEnd(body); + write(";"); + emitTempDeclarations(false); + write(" "); + } + else { + increaseIndent(); + writeLine(); + emitLeadingComments(node.body); + write("return "); + emit(body); + write(";"); + emitTrailingComments(node.body); + emitTempDeclarations(true); + decreaseIndent(); + writeLine(); + } + emitStart(node.body); + write("}"); + emitEnd(node.body); + scopeEmitEnd(); + } + function emitBlockFunctionBody(node, body) { + write(" {"); + scopeEmitStart(node); + var initialTextPos = writer.getTextPos(); + increaseIndent(); + emitDetachedComments(body.statements); + var startIndex = emitDirectivePrologues(body.statements, true); + emitFunctionBodyPreamble(node); + decreaseIndent(); + var preambleEmitted = writer.getTextPos() !== initialTextPos; + if (!preambleEmitted && nodeEndIsOnSameLineAsNodeStart(body, body)) { + for (var _a = 0, _b = body.statements; _a < _b.length; _a++) { + var statement = _b[_a]; + write(" "); + emit(statement); + } + emitTempDeclarations(false); + write(" "); + emitLeadingCommentsOfPosition(body.statements.end); + } + else { + increaseIndent(); + emitLinesStartingAt(body.statements, startIndex); + emitTempDeclarations(true); + writeLine(); + emitLeadingCommentsOfPosition(body.statements.end); + decreaseIndent(); + } + emitToken(15, body.statements.end); + scopeEmitEnd(); + } + function findInitialSuperCall(ctor) { + if (ctor.body) { + var statement = ctor.body.statements[0]; + if (statement && statement.kind === 182) { + var expr = statement.expression; + if (expr && expr.kind === 157) { + var func = expr.expression; + if (func && func.kind === 91) { + return statement; + } + } + } + } + } + function emitParameterPropertyAssignments(node) { + ts.forEach(node.parameters, function (param) { + if (param.flags & 112) { + writeLine(); + emitStart(param); + emitStart(param.name); + write("this."); + emitNodeWithoutSourceMap(param.name); + emitEnd(param.name); + write(" = "); + emit(param.name); + write(";"); + emitEnd(param); + } + }); + } + function emitMemberAccessForPropertyName(memberName) { + if (memberName.kind === 8 || memberName.kind === 7) { + write("["); + emitNodeWithoutSourceMap(memberName); + write("]"); + } + else if (memberName.kind === 127) { + emitComputedPropertyName(memberName); + } + else { + write("."); + emitNodeWithoutSourceMap(memberName); + } + } + function emitMemberAssignments(node, staticFlag) { + ts.forEach(node.members, function (member) { + if (member.kind === 132 && (member.flags & 128) === staticFlag && member.initializer) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + emitStart(member.name); + if (staticFlag) { + emitDeclarationName(node); + } + else { + write("this"); + } + emitMemberAccessForPropertyName(member.name); + emitEnd(member.name); + write(" = "); + emit(member.initializer); + write(";"); + emitEnd(member); + emitTrailingComments(member); + } + }); + } + function emitMemberFunctionsForES5AndLower(node) { + ts.forEach(node.members, function (member) { + if (member.kind === 178) { + writeLine(); + write(";"); + } + else if (member.kind === 134 || node.kind === 133) { + if (!member.body) { + return emitOnlyPinnedOrTripleSlashComments(member); + } + writeLine(); + emitLeadingComments(member); + emitStart(member); + emitStart(member.name); + emitClassMemberPrefix(node, member); + emitMemberAccessForPropertyName(member.name); + emitEnd(member.name); + write(" = "); + emitStart(member); + emitFunctionDeclaration(member); + emitEnd(member); + emitEnd(member); + write(";"); + emitTrailingComments(member); + } + else if (member.kind === 136 || member.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.members, member); + if (member === accessors.firstAccessor) { + writeLine(); + emitStart(member); + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", {"); + increaseIndent(); + if (accessors.getAccessor) { + writeLine(); + emitLeadingComments(accessors.getAccessor); + write("get: "); + emitStart(accessors.getAccessor); + write("function "); + emitSignatureAndBody(accessors.getAccessor); + emitEnd(accessors.getAccessor); + emitTrailingComments(accessors.getAccessor); + write(","); + } + if (accessors.setAccessor) { + writeLine(); + emitLeadingComments(accessors.setAccessor); + write("set: "); + emitStart(accessors.setAccessor); + write("function "); + emitSignatureAndBody(accessors.setAccessor); + emitEnd(accessors.setAccessor); + emitTrailingComments(accessors.setAccessor); + write(","); + } + writeLine(); + write("enumerable: true,"); + writeLine(); + write("configurable: true"); + decreaseIndent(); + writeLine(); + write("});"); + emitEnd(member); + } + } + }); + } + function emitMemberFunctionsForES6AndHigher(node) { + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if ((member.kind === 134 || node.kind === 133) && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + else if (member.kind === 134 || + member.kind === 136 || + member.kind === 137) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & 128) { + write("static "); + } + if (member.kind === 136) { + write("get "); + } + else if (member.kind === 137) { + write("set "); + } + emit(member.name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + else if (member.kind === 178) { + writeLine(); + write(";"); + } + } + } + function emitConstructor(node, baseTypeElement) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + var hasInstancePropertyWithInitializer = false; + ts.forEach(node.members, function (member) { + if (member.kind === 135 && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + if (member.kind === 132 && member.initializer && (member.flags & 128) === 0) { + hasInstancePropertyWithInitializer = true; + } + }); + var ctor = ts.getFirstConstructorWithBody(node); + if (languageVersion >= 2 && !ctor && !hasInstancePropertyWithInitializer) { + return; + } + if (ctor) { + emitLeadingComments(ctor); + } + emitStart(ctor || node); + if (languageVersion < 2) { + write("function "); + emitDeclarationName(node); + emitSignatureParameters(ctor); + } + else { + write("constructor"); + if (ctor) { + emitSignatureParameters(ctor); + } + else { + if (baseTypeElement) { + write("(...args)"); + } + else { + write("()"); + } + } + } + write(" {"); + scopeEmitStart(node, "constructor"); + increaseIndent(); + if (ctor) { + emitDetachedComments(ctor.body.statements); + } + emitCaptureThisForNodeIfNecessary(node); + if (ctor) { + emitDefaultValueAssignments(ctor); + emitRestParameter(ctor); + if (baseTypeElement) { + var superCall = findInitialSuperCall(ctor); + if (superCall) { + writeLine(); + emit(superCall); + } + } + emitParameterPropertyAssignments(ctor); + } + else { + if (baseTypeElement) { + writeLine(); + emitStart(baseTypeElement); + if (languageVersion < 2) { + write("_super.apply(this, arguments);"); + } + else { + write("super(...args);"); + } + emitEnd(baseTypeElement); + } + } + emitMemberAssignments(node, 0); + if (ctor) { + var statements = ctor.body.statements; + if (superCall) { + statements = statements.slice(1); + } + emitLines(statements); + } + emitTempDeclarations(true); + writeLine(); + if (ctor) { + emitLeadingCommentsOfPosition(ctor.body.statements.end); + } + decreaseIndent(); + emitToken(15, ctor ? ctor.body.statements.end : node.members.end); + scopeEmitEnd(); + emitEnd(ctor || node); + if (ctor) { + emitTrailingComments(ctor); + } + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + function emitClassExpression(node) { + return emitClassLikeDeclaration(node); + } + function emitClassDeclaration(node) { + return emitClassLikeDeclaration(node); + } + function emitClassLikeDeclaration(node) { + if (languageVersion < 2) { + emitClassLikeDeclarationBelowES6(node); + } + else { + emitClassLikeDeclarationForES6AndHigher(node); + } + } + function emitClassLikeDeclarationForES6AndHigher(node) { + var thisNodeIsDecorated = ts.nodeIsDecorated(node); + if (node.kind === 201) { + if (thisNodeIsDecorated) { + if (isES6ExportedDeclaration(node) && !(node.flags & 256)) { + write("export "); + } + write("let "); + emitDeclarationName(node); + write(" = "); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } + } + write("class"); + if ((node.name || !(node.flags & 256)) && !thisNodeIsDecorated) { + write(" "); + emitDeclarationName(node); + } + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write(" extends "); + emit(baseTypeNode.expression); + } + write(" {"); + increaseIndent(); + scopeEmitStart(node); + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES6AndHigher(node); + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + if (thisNodeIsDecorated) { + write(";"); + if (node.name) { + writeLine(); + write("Object.defineProperty("); + emitDeclarationName(node); + write(", \"name\", { value: \""); + emitDeclarationName(node); + write("\", configurable: true });"); + writeLine(); + } + } + writeLine(); + emitMemberAssignments(node, 128); + emitDecoratorsOfClass(node); + if (!isES6ExportedDeclaration(node) && (node.flags & 1)) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + else if (isES6ExportedDeclaration(node) && (node.flags & 256) && thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + function emitClassLikeDeclarationBelowES6(node) { + if (node.kind === 201) { + write("var "); + emitDeclarationName(node); + write(" = "); + } + write("(function ("); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write("_super"); + } + write(") {"); + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + var saveComputedPropertyNamesToGeneratedNames = computedPropertyNamesToGeneratedNames; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + computedPropertyNamesToGeneratedNames = undefined; + increaseIndent(); + scopeEmitStart(node); + if (baseTypeNode) { + writeLine(); + emitStart(baseTypeNode); + write("__extends("); + emitDeclarationName(node); + write(", _super);"); + emitEnd(baseTypeNode); + } + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES5AndLower(node); + emitMemberAssignments(node, 128); + writeLine(); + emitDecoratorsOfClass(node); + writeLine(); + emitToken(15, node.members.end, function () { + write("return "); + emitDeclarationName(node); + }); + write(";"); + emitTempDeclarations(true); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + computedPropertyNamesToGeneratedNames = saveComputedPropertyNamesToGeneratedNames; + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + emitStart(node); + write(")("); + if (baseTypeNode) { + emit(baseTypeNode.expression); + } + write(")"); + if (node.kind === 201) { + write(";"); + } + emitEnd(node); + if (node.kind === 201) { + emitExportMemberAssignment(node); + } + if (languageVersion < 2 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); + } + } + function emitClassMemberPrefix(node, member) { + emitDeclarationName(node); + if (!(member.flags & 128)) { + write(".prototype"); + } + } + function emitDecoratorsOfClass(node) { + emitDecoratorsOfMembers(node, 0); + emitDecoratorsOfMembers(node, 128); + emitDecoratorsOfConstructor(node); + } + function emitDecoratorsOfConstructor(node) { + var constructor = ts.getFirstConstructorWithBody(node); + if (constructor) { + emitDecoratorsOfParameters(node, constructor); + } + if (!ts.nodeIsDecorated(node)) { + return; + } + writeLine(); + emitStart(node); + emitDeclarationName(node); + write(" = "); + emitDecorateStart(node.decorators); + emitDeclarationName(node); + write(");"); + emitEnd(node); + writeLine(); + } + function emitDecoratorsOfMembers(node, staticFlag) { + ts.forEach(node.members, function (member) { + if ((member.flags & 128) !== staticFlag) { + return; + } + var decorators; + switch (member.kind) { + case 134: + emitDecoratorsOfParameters(node, member); + decorators = member.decorators; + break; + case 136: + case 137: + var accessors = ts.getAllAccessorDeclarations(node.members, member); + if (member !== accessors.firstAccessor) { + return; + } + if (accessors.setAccessor) { + emitDecoratorsOfParameters(node, accessors.setAccessor); + } + decorators = accessors.firstAccessor.decorators; + if (!decorators && accessors.secondAccessor) { + decorators = accessors.secondAccessor.decorators; + } + break; + case 132: + decorators = member.decorators; + break; + default: + return; + } + if (!decorators) { + return; + } + writeLine(); + emitStart(member); + if (member.kind !== 132) { + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", "); + } + emitDecorateStart(decorators); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + if (member.kind !== 132) { + write(", Object.getOwnPropertyDescriptor("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write("))"); + } + write(");"); + emitEnd(member); + writeLine(); + }); + } + function emitDecoratorsOfParameters(node, member) { + ts.forEach(member.parameters, function (parameter, parameterIndex) { + if (!ts.nodeIsDecorated(parameter)) { + return; + } + writeLine(); + emitStart(parameter); + emitDecorateStart(parameter.decorators); + emitStart(parameter.name); + if (member.kind === 135) { + emitDeclarationName(node); + write(", void 0"); + } + else { + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + } + write(", "); + write(String(parameterIndex)); + emitEnd(parameter.name); + write(");"); + emitEnd(parameter); + writeLine(); + }); + } + function emitDecorateStart(decorators) { + write("__decorate(["); + var decoratorCount = decorators.length; + for (var i = 0; i < decoratorCount; i++) { + if (i > 0) { + write(", "); + } + var decorator = decorators[i]; + emitStart(decorator); + emit(decorator.expression); + emitEnd(decorator); + } + write("], "); + } + function emitInterfaceDeclaration(node) { + emitOnlyPinnedOrTripleSlashComments(node); + } + function shouldEmitEnumDeclaration(node) { + var isConstEnum = ts.isConst(node); + return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation; + } + function emitEnumDeclaration(node) { + if (!shouldEmitEnumDeclaration(node)) { + return; + } + if (!(node.flags & 1) || isES6ExportedDeclaration(node)) { + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } + write("var "); + emit(node.name); + emitEnd(node); + write(";"); + } + writeLine(); + emitStart(node); + write("(function ("); + emitStart(node.name); + write(getGeneratedNameForNode(node)); + emitEnd(node.name); + write(") {"); + increaseIndent(); + scopeEmitStart(node); + emitLines(node.members); + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + write(")("); + emitModuleMemberName(node); + write(" || ("); + emitModuleMemberName(node); + write(" = {}));"); + emitEnd(node); + if (!isES6ExportedDeclaration(node) && node.flags & 1) { + writeLine(); + emitStart(node); + write("var "); + emit(node.name); + write(" = "); + emitModuleMemberName(node); + emitEnd(node); + write(";"); + } + if (languageVersion < 2 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } + } + function emitEnumMember(node) { + var enumParent = node.parent; + emitStart(node); + write(getGeneratedNameForNode(enumParent)); + write("["); + write(getGeneratedNameForNode(enumParent)); + write("["); + emitExpressionForPropertyName(node.name); + write("] = "); + writeEnumMemberDeclarationValue(node); + write("] = "); + emitExpressionForPropertyName(node.name); + emitEnd(node); + write(";"); + } + function writeEnumMemberDeclarationValue(member) { + var value = resolver.getConstantValue(member); + if (value !== undefined) { + write(value.toString()); + return; + } + else if (member.initializer) { + emit(member.initializer); + } + else { + write("undefined"); + } + } + function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { + if (moduleDeclaration.body.kind === 205) { + var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); + return recursiveInnerModule || moduleDeclaration.body; + } + } + function shouldEmitModuleDeclaration(node) { + return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation); + } + function emitModuleDeclaration(node) { + var shouldEmit = shouldEmitModuleDeclaration(node); + if (!shouldEmit) { + return emitOnlyPinnedOrTripleSlashComments(node); + } + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } + write("var "); + emit(node.name); + write(";"); + emitEnd(node); + writeLine(); + emitStart(node); + write("(function ("); + emitStart(node.name); + write(getGeneratedNameForNode(node)); + emitEnd(node.name); + write(") "); + if (node.body.kind === 206) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + tempFlags = 0; + tempVariables = undefined; + emit(node.body); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + } + else { + write("{"); + increaseIndent(); + scopeEmitStart(node); + emitCaptureThisForNodeIfNecessary(node); + writeLine(); + emit(node.body); + decreaseIndent(); + writeLine(); + var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; + emitToken(15, moduleBlock.statements.end); + scopeEmitEnd(); + } + write(")("); + if ((node.flags & 1) && !isES6ExportedDeclaration(node)) { + emit(node.name); + write(" = "); + } + emitModuleMemberName(node); + write(" || ("); + emitModuleMemberName(node); + write(" = {}));"); + emitEnd(node); + if (!isES6ExportedDeclaration(node) && node.name.kind === 65 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } + } + function emitRequire(moduleName) { + if (moduleName.kind === 8) { + write("require("); + emitStart(moduleName); + emitLiteral(moduleName); + emitEnd(moduleName); + emitToken(17, moduleName.end); + } + else { + write("require()"); + } + } + function getNamespaceDeclarationNode(node) { + if (node.kind === 208) { + return node; + } + var importClause = node.importClause; + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 211) { + return importClause.namedBindings; + } + } + function isDefaultImport(node) { + return node.kind === 209 && node.importClause && !!node.importClause.name; + } + function emitExportImportAssignments(node) { + if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { + emitExportMemberAssignments(node.name); + } + ts.forEachChild(node, emitExportImportAssignments); + } + function emitImportDeclaration(node) { + if (languageVersion < 2) { + return emitExternalImportDeclaration(node); + } + if (node.importClause) { + var shouldEmitDefaultBindings = resolver.isReferencedAliasDeclaration(node.importClause); + var shouldEmitNamedBindings = node.importClause.namedBindings && resolver.isReferencedAliasDeclaration(node.importClause.namedBindings, true); + if (shouldEmitDefaultBindings || shouldEmitNamedBindings) { + write("import "); + emitStart(node.importClause); + if (shouldEmitDefaultBindings) { + emit(node.importClause.name); + if (shouldEmitNamedBindings) { + write(", "); + } + } + if (shouldEmitNamedBindings) { + emitLeadingComments(node.importClause.namedBindings); + emitStart(node.importClause.namedBindings); + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + emit(node.importClause.namedBindings.name); + } + else { + write("{ "); + emitExportOrImportSpecifierList(node.importClause.namedBindings.elements, resolver.isReferencedAliasDeclaration); + write(" }"); + } + emitEnd(node.importClause.namedBindings); + emitTrailingComments(node.importClause.namedBindings); + } + emitEnd(node.importClause); + write(" from "); + emit(node.moduleSpecifier); + write(";"); + } + } + else { + write("import "); + emit(node.moduleSpecifier); + write(";"); + } + } + function emitExternalImportDeclaration(node) { + if (ts.contains(externalImports, node)) { + var isExportedImport = node.kind === 208 && (node.flags & 1) !== 0; + var namespaceDeclaration = getNamespaceDeclarationNode(node); + if (compilerOptions.module !== 2) { + emitLeadingComments(node); + emitStart(node); + if (namespaceDeclaration && !isDefaultImport(node)) { + if (!isExportedImport) + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + } + else { + var isNakedImport = 209 && !node.importClause; + if (!isNakedImport) { + write("var "); + write(getGeneratedNameForNode(node)); + write(" = "); + } + } + emitRequire(ts.getExternalModuleName(node)); + if (namespaceDeclaration && isDefaultImport(node)) { + write(", "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + } + write(";"); + emitEnd(node); + emitExportImportAssignments(node); + emitTrailingComments(node); + } + else { + if (isExportedImport) { + emitModuleMemberName(namespaceDeclaration); + write(" = "); + emit(namespaceDeclaration.name); + write(";"); + } + else if (namespaceDeclaration && isDefaultImport(node)) { + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + write(";"); + } + emitExportImportAssignments(node); + } + } + } + function emitImportEqualsDeclaration(node) { + if (ts.isExternalModuleImportEqualsDeclaration(node)) { + emitExternalImportDeclaration(node); + return; + } + if (resolver.isReferencedAliasDeclaration(node) || + (!ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node))) { + emitLeadingComments(node); + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + write("var "); + } + else if (!(node.flags & 1)) { + write("var "); + } + emitModuleMemberName(node); + write(" = "); + emit(node.moduleReference); + write(";"); + emitEnd(node); + emitExportImportAssignments(node); + emitTrailingComments(node); + } + } + function emitExportDeclaration(node) { + if (languageVersion < 2) { + if (node.moduleSpecifier && (!node.exportClause || resolver.isValueAliasDeclaration(node))) { + emitStart(node); + var generatedName = getGeneratedNameForNode(node); + if (node.exportClause) { + if (compilerOptions.module !== 2) { + write("var "); + write(generatedName); + write(" = "); + emitRequire(ts.getExternalModuleName(node)); + write(";"); + } + for (var _a = 0, _b = node.exportClause.elements; _a < _b.length; _a++) { + var specifier = _b[_a]; + if (resolver.isValueAliasDeclaration(specifier)) { + writeLine(); + emitStart(specifier); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + write(" = "); + write(generatedName); + write("."); + emitNodeWithoutSourceMap(specifier.propertyName || specifier.name); + write(";"); + emitEnd(specifier); + } + } + } + else { + writeLine(); + write("__export("); + if (compilerOptions.module !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); + } + emitEnd(node); + } + } + else { + if (!node.exportClause || resolver.isValueAliasDeclaration(node)) { + emitStart(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitExportOrImportSpecifierList(node.exportClause.elements, resolver.isValueAliasDeclaration); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + emitNodeWithoutSourceMap(node.moduleSpecifier); + } + write(";"); + emitEnd(node); + } + } + } + function emitExportOrImportSpecifierList(specifiers, shouldEmit) { + ts.Debug.assert(languageVersion >= 2); + var needsComma = false; + for (var _a = 0; _a < specifiers.length; _a++) { + var specifier = specifiers[_a]; + if (shouldEmit(specifier)) { + if (needsComma) { + write(", "); + } + emitStart(specifier); + if (specifier.propertyName) { + emitNodeWithoutSourceMap(specifier.propertyName); + write(" as "); + } + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier); + needsComma = true; + } + } + } + function emitExportAssignment(node) { + if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { + if (languageVersion >= 2) { + writeLine(); + emitStart(node); + write("export default "); + var expression = node.expression; + emit(expression); + if (expression.kind !== 200 && + expression.kind !== 201) { + write(";"); + } + emitEnd(node); + } + else { + writeLine(); + emitStart(node); + emitContainingModuleName(node); + write(".default = "); + emit(node.expression); + write(";"); + emitEnd(node); + } + } + } + function collectExternalModuleInfo(sourceFile) { + externalImports = []; + exportSpecifiers = {}; + exportEquals = undefined; + hasExportStars = false; + for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { + var node = _b[_a]; + switch (node.kind) { + case 209: + if (!node.importClause || + resolver.isReferencedAliasDeclaration(node.importClause, true)) { + externalImports.push(node); + } + break; + case 208: + if (node.moduleReference.kind === 219 && resolver.isReferencedAliasDeclaration(node)) { + externalImports.push(node); + } + break; + case 215: + if (node.moduleSpecifier) { + if (!node.exportClause) { + externalImports.push(node); + hasExportStars = true; + } + else if (resolver.isValueAliasDeclaration(node)) { + externalImports.push(node); + } + } + else { + for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { + var specifier = _d[_c]; + var name_17 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_17] || (exportSpecifiers[name_17] = [])).push(specifier); + } + } + break; + case 214: + if (node.isExportEquals && !exportEquals) { + exportEquals = node; + } + break; + } + } + } + function sortAMDModules(amdModules) { + return amdModules.sort(function (moduleA, moduleB) { + if (moduleA.name === moduleB.name) { + return 0; + } + else if (!moduleA.name) { + return 1; + } + else { + return -1; + } + }); + } + function emitExportStarHelper() { + if (hasExportStars) { + writeLine(); + write("function __export(m) {"); + increaseIndent(); + writeLine(); + write("for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];"); + decreaseIndent(); + writeLine(); + write("}"); + } + } + function emitAMDModule(node, startIndex) { + collectExternalModuleInfo(node); + writeLine(); + write("define("); + sortAMDModules(node.amdDependencies); + if (node.amdModuleName) { + write("\"" + node.amdModuleName + "\", "); + } + write("[\"require\", \"exports\""); + for (var _a = 0; _a < externalImports.length; _a++) { + var importNode = externalImports[_a]; + write(", "); + var moduleName = ts.getExternalModuleName(importNode); + if (moduleName.kind === 8) { + emitLiteral(moduleName); + } + else { + write("\"\""); + } + } + for (var _b = 0, _c = node.amdDependencies; _b < _c.length; _b++) { + var amdDependency = _c[_b]; + var text = "\"" + amdDependency.path + "\""; + write(", "); + write(text); + } + write("], function (require, exports"); + for (var _d = 0; _d < externalImports.length; _d++) { + var importNode = externalImports[_d]; + write(", "); + var namespaceDeclaration = getNamespaceDeclarationNode(importNode); + if (namespaceDeclaration && !isDefaultImport(importNode)) { + emit(namespaceDeclaration.name); + } + else { + write(getGeneratedNameForNode(importNode)); + } + } + for (var _e = 0, _f = node.amdDependencies; _e < _f.length; _e++) { + var amdDependency = _f[_e]; + if (amdDependency.name) { + write(", "); + write(amdDependency.name); + } + } + write(") {"); + increaseIndent(); + emitExportStarHelper(); + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + emitExportEquals(true); + decreaseIndent(); + writeLine(); + write("});"); + } + function emitCommonJSModule(node, startIndex) { + collectExternalModuleInfo(node); + emitExportStarHelper(); + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + emitExportEquals(false); + } + function emitES6Module(node, startIndex) { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + } + function emitExportEquals(emitAsReturn) { + if (exportEquals && resolver.isValueAliasDeclaration(exportEquals)) { + writeLine(); + emitStart(exportEquals); + write(emitAsReturn ? "return " : "module.exports = "); + emit(exportEquals.expression); + write(";"); + emitEnd(exportEquals); + } + } + function emitDirectivePrologues(statements, startWithNewLine) { + for (var i = 0; i < statements.length; ++i) { + if (ts.isPrologueDirective(statements[i])) { + if (startWithNewLine || i > 0) { + writeLine(); + } + emit(statements[i]); + } + else { + return i; + } + } + return statements.length; + } + function writeHelper(text) { + var lines = text.split(/\r\n|\r|\n/g); + for (var i = 0; i < lines.length; ++i) { + var line = lines[i]; + if (line.length) { + writeLine(); + write(line); + } + } + } + function emitSourceFileNode(node) { + writeLine(); + emitDetachedComments(node); + var startIndex = emitDirectivePrologues(node.statements, false); + if ((languageVersion < 2) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8)) { + writeLine(); + write("var __extends = this.__extends || function (d, b) {"); + increaseIndent(); + writeLine(); + write("for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];"); + writeLine(); + write("function __() { this.constructor = d; }"); + writeLine(); + write("__.prototype = b.prototype;"); + writeLine(); + write("d.prototype = new __();"); + decreaseIndent(); + writeLine(); + write("};"); + extendsEmitted = true; + } + if (!decorateEmitted && resolver.getNodeCheckFlags(node) & 512) { + writeHelper("\nvar __decorate = this.__decorate || function (decorators, target, key, value) {\n var kind = typeof (arguments.length == 2 ? value = target : value);\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n switch (kind) {\n case \"function\": value = decorator(value) || value; break;\n case \"number\": decorator(target, key, value); break;\n case \"undefined\": decorator(target, key); break;\n case \"object\": value = decorator(target, key, value) || value; break;\n }\n }\n return value;\n};"); + decorateEmitted = true; + } + if (ts.isExternalModule(node)) { + if (languageVersion >= 2) { + emitES6Module(node, startIndex); + } + else if (compilerOptions.module === 2) { + emitAMDModule(node, startIndex); + } + else { + emitCommonJSModule(node, startIndex); + } + } + else { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + } + emitLeadingComments(node.endOfFileToken); + } + function emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers) { + if (!node) { + return; + } + if (node.flags & 2) { + return emitOnlyPinnedOrTripleSlashComments(node); + } + var emitComments = shouldEmitLeadingAndTrailingComments(node); + if (emitComments) { + emitLeadingComments(node); + } + emitJavaScriptWorker(node, allowGeneratedIdentifiers); + if (emitComments) { + emitTrailingComments(node); + } + } + function shouldEmitLeadingAndTrailingComments(node) { + switch (node.kind) { + case 202: + case 200: + case 209: + case 208: + case 203: + case 214: + return false; + case 205: + return shouldEmitModuleDeclaration(node); + case 204: + return shouldEmitEnumDeclaration(node); + } + if (node.kind !== 179 && + node.parent && + node.parent.kind === 163 && + node.parent.body === node && + compilerOptions.target <= 1) { + return false; + } + return true; + } + function emitJavaScriptWorker(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers === void 0) { allowGeneratedIdentifiers = true; } + switch (node.kind) { + case 65: + return emitIdentifier(node, allowGeneratedIdentifiers); + case 129: + return emitParameter(node); + case 134: + case 133: + return emitMethod(node); + case 136: + case 137: + return emitAccessor(node); + case 93: + return emitThis(node); + case 91: + return emitSuper(node); + case 89: + return write("null"); + case 95: + return write("true"); + case 80: + return write("false"); + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + return emitLiteral(node); + case 171: + return emitTemplateExpression(node); + case 176: + return emitTemplateSpan(node); + case 126: + return emitQualifiedName(node); + case 150: + return emitObjectBindingPattern(node); + case 151: + return emitArrayBindingPattern(node); + case 152: + return emitBindingElement(node); + case 153: + return emitArrayLiteral(node); + case 154: + return emitObjectLiteral(node); + case 224: + return emitPropertyAssignment(node); + case 225: + return emitShorthandPropertyAssignment(node); + case 127: + return emitComputedPropertyName(node); + case 155: + return emitPropertyAccess(node); + case 156: + return emitIndexedAccess(node); + case 157: + return emitCallExpression(node); + case 158: + return emitNewExpression(node); + case 159: + return emitTaggedTemplateExpression(node); + case 160: + return emit(node.expression); + case 161: + return emitParenExpression(node); + case 200: + case 162: + case 163: + return emitFunctionDeclaration(node); + case 164: + return emitDeleteExpression(node); + case 165: + return emitTypeOfExpression(node); + case 166: + return emitVoidExpression(node); + case 167: + return emitPrefixUnaryExpression(node); + case 168: + return emitPostfixUnaryExpression(node); + case 169: + return emitBinaryExpression(node); + case 170: + return emitConditionalExpression(node); + case 173: + return emitSpreadElementExpression(node); + case 175: + return; + case 179: + case 206: + return emitBlock(node); + case 180: + return emitVariableStatement(node); + case 181: + return write(";"); + case 182: + return emitExpressionStatement(node); + case 183: + return emitIfStatement(node); + case 184: + return emitDoStatement(node); + case 185: + return emitWhileStatement(node); + case 186: + return emitForStatement(node); + case 188: + case 187: + return emitForInOrForOfStatement(node); + case 189: + case 190: + return emitBreakOrContinueStatement(node); + case 191: + return emitReturnStatement(node); + case 192: + return emitWithStatement(node); + case 193: + return emitSwitchStatement(node); + case 220: + case 221: + return emitCaseOrDefaultClause(node); + case 194: + return emitLabelledStatement(node); + case 195: + return emitThrowStatement(node); + case 196: + return emitTryStatement(node); + case 223: + return emitCatchClause(node); + case 197: + return emitDebuggerStatement(node); + case 198: + return emitVariableDeclaration(node); + case 174: + return emitClassExpression(node); + case 201: + return emitClassDeclaration(node); + case 202: + return emitInterfaceDeclaration(node); + case 204: + return emitEnumDeclaration(node); + case 226: + return emitEnumMember(node); + case 205: + return emitModuleDeclaration(node); + case 209: + return emitImportDeclaration(node); + case 208: + return emitImportEqualsDeclaration(node); + case 215: + return emitExportDeclaration(node); + case 214: + return emitExportAssignment(node); + case 227: + return emitSourceFileNode(node); + } + } + function hasDetachedComments(pos) { + return detachedCommentsInfo !== undefined && detachedCommentsInfo[detachedCommentsInfo.length - 1].nodePos === pos; + } + function getLeadingCommentsWithoutDetachedComments() { + var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, detachedCommentsInfo[detachedCommentsInfo.length - 1].detachedCommentEndPos); + if (detachedCommentsInfo.length - 1) { + detachedCommentsInfo.pop(); + } + else { + detachedCommentsInfo = undefined; + } + return leadingComments; + } + function filterComments(ranges, onlyPinnedOrTripleSlashComments) { + if (ranges && onlyPinnedOrTripleSlashComments) { + ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); + if (ranges.length === 0) { + return undefined; + } + } + return ranges; + } + function getLeadingCommentsToEmit(node) { + if (node.parent) { + if (node.parent.kind === 227 || node.pos !== node.parent.pos) { + if (hasDetachedComments(node.pos)) { + return getLeadingCommentsWithoutDetachedComments(); + } + else { + return ts.getLeadingCommentRangesOfNode(node, currentSourceFile); + } + } + } + } + function getTrailingCommentsToEmit(node) { + if (node.parent) { + if (node.parent.kind === 227 || node.end !== node.parent.end) { + return ts.getTrailingCommentRanges(currentSourceFile.text, node.end); + } + } + } + function emitOnlyPinnedOrTripleSlashComments(node) { + emitLeadingCommentsWorker(node, true); + } + function emitLeadingComments(node) { + return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + } + function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { + var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + } + function emitTrailingComments(node) { + var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + } + function emitLeadingCommentsOfPosition(pos) { + var leadingComments; + if (hasDetachedComments(pos)) { + leadingComments = getLeadingCommentsWithoutDetachedComments(); + } + else { + leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); + } + leadingComments = filterComments(leadingComments, compilerOptions.removeComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + } + function emitDetachedComments(node) { + var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); + if (leadingComments) { + var detachedComments = []; + var lastComment; + ts.forEach(leadingComments, function (comment) { + if (lastComment) { + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, lastComment.end); + var commentLine = ts.getLineOfLocalPosition(currentSourceFile, comment.pos); + if (commentLine >= lastCommentLine + 2) { + return detachedComments; + } + } + detachedComments.push(comment); + lastComment = comment; + }); + if (detachedComments.length) { + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); + var nodeLine = ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); + if (nodeLine >= lastCommentLine + 2) { + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); + var currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; + if (detachedCommentsInfo) { + detachedCommentsInfo.push(currentDetachedCommentInfo); + } + else { + detachedCommentsInfo = [currentDetachedCommentInfo]; + } + } + } + } + } + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && + currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; + } + } + } + function emitFile(jsFilePath, sourceFile) { + emitJavaScript(jsFilePath, sourceFile); + if (compilerOptions.declaration) { + ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); + } + } + } + ts.emitFiles = emitFiles; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + ts.programTime = 0; + ts.emitTime = 0; + ts.ioReadTime = 0; + ts.ioWriteTime = 0; + ts.version = "1.5.0"; + function findConfigFile(searchPath) { + var fileName = "tsconfig.json"; + while (true) { + if (ts.sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + fileName = "../" + fileName; + } + return undefined; + } + ts.findConfigFile = findConfigFile; + function createCompilerHost(options, setParentNodes) { + var currentDirectory; + var existingDirectories = {}; + function getCanonicalFileName(fileName) { + return ts.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); + } + var unsupportedFileEncodingErrorCode = -2147024809; + function getSourceFile(fileName, languageVersion, onError) { + var text; + try { + var start = new Date().getTime(); + text = ts.sys.readFile(fileName, options.charset); + ts.ioReadTime += new Date().getTime() - start; + } + catch (e) { + if (onError) { + onError(e.number === unsupportedFileEncodingErrorCode + ? ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_file_encoding).messageText + : e.message); + } + text = ""; + } + return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; + } + function directoryExists(directoryPath) { + if (ts.hasProperty(existingDirectories, directoryPath)) { + return true; + } + if (ts.sys.directoryExists(directoryPath)) { + existingDirectories[directoryPath] = true; + return true; + } + return false; + } + function ensureDirectoriesExist(directoryPath) { + if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { + var parentDirectory = ts.getDirectoryPath(directoryPath); + ensureDirectoriesExist(parentDirectory); + ts.sys.createDirectory(directoryPath); + } + } + function writeFile(fileName, data, writeByteOrderMark, onError) { + try { + var start = new Date().getTime(); + ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); + ts.sys.writeFile(fileName, data, writeByteOrderMark); + ts.ioWriteTime += new Date().getTime() - start; + } + catch (e) { + if (onError) { + onError(e.message); + } + } + } + return { + getSourceFile: getSourceFile, + getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + writeFile: writeFile, + getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, + useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, + getCanonicalFileName: getCanonicalFileName, + getNewLine: function () { return ts.sys.newLine; } + }; + } + ts.createCompilerHost = createCompilerHost; + function getPreEmitDiagnostics(program) { + var diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + if (program.getCompilerOptions().declaration) { + diagnostics.concat(program.getDeclarationDiagnostics()); + } + return ts.sortAndDeduplicateDiagnostics(diagnostics); + } + ts.getPreEmitDiagnostics = getPreEmitDiagnostics; + function flattenDiagnosticMessageText(messageText, newLine) { + if (typeof messageText === "string") { + return messageText; + } + else { + var diagnosticChain = messageText; + var result = ""; + var indent = 0; + while (diagnosticChain) { + if (indent) { + result += newLine; + for (var i = 0; i < indent; i++) { + result += " "; + } + } + result += diagnosticChain.messageText; + indent++; + diagnosticChain = diagnosticChain.next; + } + return result; + } + } + ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function createProgram(rootNames, options, host) { + var program; + var files = []; + var filesByName = {}; + var diagnostics = ts.createDiagnosticCollection(); + var seenNoDefaultLib = options.noLib; + var commonSourceDirectory; + var diagnosticsProducingTypeChecker; + var noDiagnosticsTypeChecker; + var start = new Date().getTime(); + host = host || createCompilerHost(options); + ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); + if (!seenNoDefaultLib) { + processRootFile(host.getDefaultLibFileName(options), true); + } + verifyCompilerOptions(); + ts.programTime += new Date().getTime() - start; + program = { + getSourceFile: getSourceFile, + getSourceFiles: function () { return files; }, + getCompilerOptions: function () { return options; }, + getSyntacticDiagnostics: getSyntacticDiagnostics, + getGlobalDiagnostics: getGlobalDiagnostics, + getSemanticDiagnostics: getSemanticDiagnostics, + getDeclarationDiagnostics: getDeclarationDiagnostics, + getTypeChecker: getTypeChecker, + getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, + getCommonSourceDirectory: function () { return commonSourceDirectory; }, + emit: emit, + getCurrentDirectory: host.getCurrentDirectory, + getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, + getIdentifierCount: function () { return getDiagnosticsProducingTypeChecker().getIdentifierCount(); }, + getSymbolCount: function () { return getDiagnosticsProducingTypeChecker().getSymbolCount(); }, + getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); } + }; + return program; + function getEmitHost(writeFileCallback) { + return { + getCanonicalFileName: host.getCanonicalFileName, + getCommonSourceDirectory: program.getCommonSourceDirectory, + getCompilerOptions: program.getCompilerOptions, + getCurrentDirectory: host.getCurrentDirectory, + getNewLine: host.getNewLine, + getSourceFile: program.getSourceFile, + getSourceFiles: program.getSourceFiles, + writeFile: writeFileCallback || host.writeFile + }; + } + function getDiagnosticsProducingTypeChecker() { + return diagnosticsProducingTypeChecker || (diagnosticsProducingTypeChecker = ts.createTypeChecker(program, true)); + } + function getTypeChecker() { + return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = ts.createTypeChecker(program, false)); + } + function emit(sourceFile, writeFileCallback) { + if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) { + return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + } + var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + var start = new Date().getTime(); + var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile); + ts.emitTime += new Date().getTime() - start; + return emitResult; + } + function getSourceFile(fileName) { + fileName = host.getCanonicalFileName(fileName); + return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined; + } + function getDiagnosticsHelper(sourceFile, getDiagnostics) { + if (sourceFile) { + return getDiagnostics(sourceFile); + } + var allDiagnostics = []; + ts.forEach(program.getSourceFiles(), function (sourceFile) { + ts.addRange(allDiagnostics, getDiagnostics(sourceFile)); + }); + return ts.sortAndDeduplicateDiagnostics(allDiagnostics); + } + function getSyntacticDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getSyntacticDiagnosticsForFile); + } + function getSemanticDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile); + } + function getDeclarationDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile); + } + function getSyntacticDiagnosticsForFile(sourceFile) { + return sourceFile.parseDiagnostics; + } + function getSemanticDiagnosticsForFile(sourceFile) { + var typeChecker = getDiagnosticsProducingTypeChecker(); + ts.Debug.assert(!!sourceFile.bindDiagnostics); + var bindDiagnostics = sourceFile.bindDiagnostics; + var checkDiagnostics = typeChecker.getDiagnostics(sourceFile); + var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); + return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); + } + function getDeclarationDiagnosticsForFile(sourceFile) { + if (!ts.isDeclarationFile(sourceFile)) { + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); + } + } + function getGlobalDiagnostics() { + var typeChecker = getDiagnosticsProducingTypeChecker(); + var allDiagnostics = []; + ts.addRange(allDiagnostics, typeChecker.getGlobalDiagnostics()); + ts.addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); + return ts.sortAndDeduplicateDiagnostics(allDiagnostics); + } + function hasExtension(fileName) { + return ts.getBaseFileName(fileName).indexOf(".") >= 0; + } + function processRootFile(fileName, isDefaultLib) { + processSourceFile(ts.normalizePath(fileName), isDefaultLib); + } + function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + var start; + var length; + if (refEnd !== undefined && refPos !== undefined) { + start = refPos; + length = refEnd - refPos; + } + var diagnostic; + if (hasExtension(fileName)) { + if (!options.allowNonTsExtensions && !ts.fileExtensionIs(host.getCanonicalFileName(fileName), ".ts")) { + diagnostic = ts.Diagnostics.File_0_must_have_extension_ts_or_d_ts; + } + else if (!findSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd)) { + diagnostic = ts.Diagnostics.File_0_not_found; + } + else if (refFile && host.getCanonicalFileName(fileName) === host.getCanonicalFileName(refFile.fileName)) { + diagnostic = ts.Diagnostics.A_file_cannot_have_a_reference_to_itself; + } + } + else { + if (options.allowNonTsExtensions && !findSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd)) { + diagnostic = ts.Diagnostics.File_0_not_found; + } + else if (!findSourceFile(fileName + ".ts", isDefaultLib, refFile, refPos, refEnd) && !findSourceFile(fileName + ".d.ts", isDefaultLib, refFile, refPos, refEnd)) { + diagnostic = ts.Diagnostics.File_0_not_found; + fileName += ".ts"; + } + } + if (diagnostic) { + if (refFile) { + diagnostics.add(ts.createFileDiagnostic(refFile, start, length, diagnostic, fileName)); + } + else { + diagnostics.add(ts.createCompilerDiagnostic(diagnostic, fileName)); + } + } + } + function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) { + var canonicalName = host.getCanonicalFileName(fileName); + if (ts.hasProperty(filesByName, canonicalName)) { + return getSourceFileFromCache(fileName, canonicalName, false); + } + else { + var normalizedAbsolutePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); + if (ts.hasProperty(filesByName, canonicalAbsolutePath)) { + return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, true); + } + var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, function (hostErrorMessage) { + if (refFile) { + diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + } + else { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); + } + }); + if (file) { + seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib; + filesByName[canonicalAbsolutePath] = file; + if (!options.noResolve) { + var basePath = ts.getDirectoryPath(fileName); + processReferencedFiles(file, basePath); + processImportedModules(file, basePath); + } + if (isDefaultLib) { + files.unshift(file); + } + else { + files.push(file); + } + } + return file; + } + function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) { + var file = filesByName[canonicalName]; + if (file && host.useCaseSensitiveFileNames()) { + var sourceFileName = useAbsolutePath ? ts.getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; + if (canonicalName !== sourceFileName) { + diagnostics.add(ts.createFileDiagnostic(refFile, refStart, refLength, ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); + } + } + return file; + } + } + function processReferencedFiles(file, basePath) { + ts.forEach(file.referencedFiles, function (ref) { + var referencedFileName = ts.isRootedDiskPath(ref.fileName) ? ref.fileName : ts.combinePaths(basePath, ref.fileName); + processSourceFile(ts.normalizePath(referencedFileName), false, file, ref.pos, ref.end); + }); + } + function processImportedModules(file, basePath) { + ts.forEach(file.statements, function (node) { + if (node.kind === 209 || node.kind === 208 || node.kind === 215) { + var moduleNameExpr = ts.getExternalModuleName(node); + if (moduleNameExpr && moduleNameExpr.kind === 8) { + var moduleNameText = moduleNameExpr.text; + if (moduleNameText) { + var searchPath = basePath; + while (true) { + var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleNameText)); + if (findModuleSourceFile(searchName + ".ts", moduleNameExpr) || findModuleSourceFile(searchName + ".d.ts", moduleNameExpr)) { + break; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + } + } + } + } + else if (node.kind === 205 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { + ts.forEachChild(node.body, function (node) { + if (ts.isExternalModuleImportEqualsDeclaration(node) && + ts.getExternalModuleImportEqualsDeclarationExpression(node).kind === 8) { + var nameLiteral = ts.getExternalModuleImportEqualsDeclarationExpression(node); + var moduleName = nameLiteral.text; + if (moduleName) { + var searchName = ts.normalizePath(ts.combinePaths(basePath, moduleName)); + var tsFile = findModuleSourceFile(searchName + ".ts", nameLiteral); + if (!tsFile) { + findModuleSourceFile(searchName + ".d.ts", nameLiteral); + } + } + } + }); + } + }); + function findModuleSourceFile(fileName, nameLiteral) { + return findSourceFile(fileName, false, file, nameLiteral.pos, nameLiteral.end - nameLiteral.pos); + } + } + function verifyCompilerOptions() { + if (options.separateCompilation) { + if (options.sourceMap) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation)); + } + if (options.declaration) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation)); + } + if (options.noEmitOnError) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation)); + } + if (options.out) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation)); + } + } + if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { + if (options.mapRoot) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option)); + } + if (options.sourceRoot) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option)); + } + return; + } + var languageVersion = options.target || 0; + var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); + if (options.separateCompilation) { + if (!options.module && languageVersion < 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + } + var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; }); + if (firstNonExternalModuleSourceFile) { + var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); + diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided)); + } + } + else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { + var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); + diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + } + if (options.module && languageVersion >= 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher)); + } + if (options.outDir || + options.sourceRoot || + (options.mapRoot && + (!options.out || firstExternalModuleSourceFile !== undefined))) { + var commonPathComponents; + ts.forEach(files, function (sourceFile) { + if (!(sourceFile.flags & 2048) + && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); + sourcePathComponents.pop(); + if (commonPathComponents) { + for (var i = 0; i < Math.min(commonPathComponents.length, sourcePathComponents.length); i++) { + if (commonPathComponents[i] !== sourcePathComponents[i]) { + if (i === 0) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); + return; + } + commonPathComponents.length = i; + break; + } + } + if (sourcePathComponents.length < commonPathComponents.length) { + commonPathComponents.length = sourcePathComponents.length; + } + } + else { + commonPathComponents = sourcePathComponents; + } + } + }); + commonSourceDirectory = ts.getNormalizedPathFromPathComponents(commonPathComponents); + if (commonSourceDirectory) { + commonSourceDirectory += ts.directorySeparator; + } + } + if (options.noEmit) { + if (options.out || options.outDir) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmit_cannot_be_specified_with_option_out_or_outDir)); + } + if (options.declaration) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmit_cannot_be_specified_with_option_declaration)); + } + } + } + } + ts.createProgram = createProgram; +})(ts || (ts = {})); +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. +/// +var ts; +(function (ts) { + var BreakpointResolver; + (function (BreakpointResolver) { + function spanInSourceFileAtLocation(sourceFile, position) { + if (sourceFile.flags & 2048) { + return undefined; + } + var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); + var lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; + if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart()).line > lineOfPosition) { + tokenAtLocation = ts.findPrecedingToken(tokenAtLocation.pos, sourceFile); + if (!tokenAtLocation || sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getEnd()).line !== lineOfPosition) { + return undefined; + } + } + if (ts.isInAmbientContext(tokenAtLocation)) { + return undefined; + } + return spanInNode(tokenAtLocation); + function textSpan(startNode, endNode) { + return ts.createTextSpanFromBounds(startNode.getStart(), (endNode || startNode).getEnd()); + } + function spanInNodeIfStartsOnSameLine(node, otherwiseOnNode) { + if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart()).line) { + return spanInNode(node); + } + return spanInNode(otherwiseOnNode); + } + function spanInPreviousNode(node) { + return spanInNode(ts.findPrecedingToken(node.pos, sourceFile)); + } + function spanInNextNode(node) { + return spanInNode(ts.findNextToken(node, node.parent)); + } + function spanInNode(node) { + if (node) { + if (ts.isExpression(node)) { + if (node.parent.kind === 184) { + return spanInPreviousNode(node); + } + if (node.parent.kind === 186) { + return textSpan(node); + } + if (node.parent.kind === 169 && node.parent.operatorToken.kind === 23) { + return textSpan(node); + } + if (node.parent.kind == 163 && node.parent.body == node) { + return textSpan(node); + } + } + switch (node.kind) { + case 180: + return spanInVariableDeclaration(node.declarationList.declarations[0]); + case 198: + case 132: + case 131: + return spanInVariableDeclaration(node); + case 129: + return spanInParameterDeclaration(node); + case 200: + case 134: + case 133: + case 136: + case 137: + case 135: + case 162: + case 163: + return spanInFunctionDeclaration(node); + case 179: + if (ts.isFunctionBlock(node)) { + return spanInFunctionBlock(node); + } + case 206: + return spanInBlock(node); + case 223: + return spanInBlock(node.block); + case 182: + return textSpan(node.expression); + case 191: + return textSpan(node.getChildAt(0), node.expression); + case 185: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 184: + return spanInNode(node.statement); + case 197: + return textSpan(node.getChildAt(0)); + case 183: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 194: + return spanInNode(node.statement); + case 190: + case 189: + return textSpan(node.getChildAt(0), node.label); + case 186: + return spanInForStatement(node); + case 187: + case 188: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 193: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 220: + case 221: + return spanInNode(node.statements[0]); + case 196: + return spanInBlock(node.tryBlock); + case 195: + return textSpan(node, node.expression); + case 214: + if (!node.expression) { + return undefined; + } + return textSpan(node, node.expression); + case 208: + return textSpan(node, node.moduleReference); + case 209: + return textSpan(node, node.moduleSpecifier); + case 215: + return textSpan(node, node.moduleSpecifier); + case 205: + if (ts.getModuleInstanceState(node) !== 1) { + return undefined; + } + case 201: + case 204: + case 226: + case 157: + case 158: + return textSpan(node); + case 192: + return spanInNode(node.statement); + case 202: + case 203: + return undefined; + case 22: + case 1: + return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile)); + case 23: + return spanInPreviousNode(node); + case 14: + return spanInOpenBraceToken(node); + case 15: + return spanInCloseBraceToken(node); + case 16: + return spanInOpenParenToken(node); + case 17: + return spanInCloseParenToken(node); + case 51: + return spanInColonToken(node); + case 25: + case 24: + return spanInGreaterThanOrLessThanToken(node); + case 100: + return spanInWhileKeyword(node); + case 76: + case 68: + case 81: + return spanInNextNode(node); + default: + if (node.parent.kind === 224 && node.parent.name === node) { + return spanInNode(node.parent.initializer); + } + if (node.parent.kind === 160 && node.parent.type === node) { + return spanInNode(node.parent.expression); + } + if (ts.isFunctionLike(node.parent) && node.parent.type === node) { + return spanInPreviousNode(node); + } + return spanInNode(node.parent); + } + } + function spanInVariableDeclaration(variableDeclaration) { + if (variableDeclaration.parent.parent.kind === 187 || + variableDeclaration.parent.parent.kind === 188) { + return spanInNode(variableDeclaration.parent.parent); + } + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 180; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 186 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var declarations = isParentVariableStatement + ? variableDeclaration.parent.parent.declarationList.declarations + : isDeclarationOfForStatement + ? variableDeclaration.parent.parent.initializer.declarations + : undefined; + if (variableDeclaration.initializer || (variableDeclaration.flags & 1)) { + if (declarations && declarations[0] === variableDeclaration) { + if (isParentVariableStatement) { + return textSpan(variableDeclaration.parent, variableDeclaration); + } + else { + ts.Debug.assert(isDeclarationOfForStatement); + return textSpan(ts.findPrecedingToken(variableDeclaration.pos, sourceFile, variableDeclaration.parent), variableDeclaration); + } + } + else { + return textSpan(variableDeclaration); + } + } + else if (declarations && declarations[0] !== variableDeclaration) { + var indexOfCurrentDeclaration = ts.indexOf(declarations, variableDeclaration); + return spanInVariableDeclaration(declarations[indexOfCurrentDeclaration - 1]); + } + } + function canHaveSpanInParameterDeclaration(parameter) { + return !!parameter.initializer || parameter.dotDotDotToken !== undefined || + !!(parameter.flags & 16) || !!(parameter.flags & 32); + } + function spanInParameterDeclaration(parameter) { + if (canHaveSpanInParameterDeclaration(parameter)) { + return textSpan(parameter); + } + else { + var functionDeclaration = parameter.parent; + var indexOfParameter = ts.indexOf(functionDeclaration.parameters, parameter); + if (indexOfParameter) { + return spanInParameterDeclaration(functionDeclaration.parameters[indexOfParameter - 1]); + } + else { + return spanInNode(functionDeclaration.body); + } + } + } + function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { + return !!(functionDeclaration.flags & 1) || + (functionDeclaration.parent.kind === 201 && functionDeclaration.kind !== 135); + } + function spanInFunctionDeclaration(functionDeclaration) { + if (!functionDeclaration.body) { + return undefined; + } + if (canFunctionHaveSpanInWholeDeclaration(functionDeclaration)) { + return textSpan(functionDeclaration); + } + return spanInNode(functionDeclaration.body); + } + function spanInFunctionBlock(block) { + var nodeForSpanInBlock = block.statements.length ? block.statements[0] : block.getLastToken(); + if (canFunctionHaveSpanInWholeDeclaration(block.parent)) { + return spanInNodeIfStartsOnSameLine(block.parent, nodeForSpanInBlock); + } + return spanInNode(nodeForSpanInBlock); + } + function spanInBlock(block) { + switch (block.parent.kind) { + case 205: + if (ts.getModuleInstanceState(block.parent) !== 1) { + return undefined; + } + case 185: + case 183: + case 187: + case 188: + return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); + case 186: + return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); + } + return spanInNode(block.statements[0]); + } + function spanInForStatement(forStatement) { + if (forStatement.initializer) { + if (forStatement.initializer.kind === 199) { + var variableDeclarationList = forStatement.initializer; + if (variableDeclarationList.declarations.length > 0) { + return spanInNode(variableDeclarationList.declarations[0]); + } + } + else { + return spanInNode(forStatement.initializer); + } + } + if (forStatement.condition) { + return textSpan(forStatement.condition); + } + if (forStatement.iterator) { + return textSpan(forStatement.iterator); + } + } + function spanInOpenBraceToken(node) { + switch (node.parent.kind) { + case 204: + var enumDeclaration = node.parent; + return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); + case 201: + var classDeclaration = node.parent; + return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); + case 207: + return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); + } + return spanInNode(node.parent); + } + function spanInCloseBraceToken(node) { + switch (node.parent.kind) { + case 206: + if (ts.getModuleInstanceState(node.parent.parent) !== 1) { + return undefined; + } + case 204: + case 201: + return textSpan(node); + case 179: + if (ts.isFunctionBlock(node.parent)) { + return textSpan(node); + } + case 223: + return spanInNode(node.parent.statements[node.parent.statements.length - 1]); + ; + case 207: + var caseBlock = node.parent; + var lastClause = caseBlock.clauses[caseBlock.clauses.length - 1]; + if (lastClause) { + return spanInNode(lastClause.statements[lastClause.statements.length - 1]); + } + return undefined; + default: + return spanInNode(node.parent); + } + } + function spanInOpenParenToken(node) { + if (node.parent.kind === 184) { + return spanInPreviousNode(node); + } + return spanInNode(node.parent); + } + function spanInCloseParenToken(node) { + switch (node.parent.kind) { + case 162: + case 200: + case 163: + case 134: + case 133: + case 136: + case 137: + case 135: + case 185: + case 184: + case 186: + return spanInPreviousNode(node); + default: + return spanInNode(node.parent); + } + return spanInNode(node.parent); + } + function spanInColonToken(node) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 224) { + return spanInPreviousNode(node); + } + return spanInNode(node.parent); + } + function spanInGreaterThanOrLessThanToken(node) { + if (node.parent.kind === 160) { + return spanInNode(node.parent.expression); + } + return spanInNode(node.parent); + } + function spanInWhileKeyword(node) { + if (node.parent.kind === 184) { + return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); + } + return spanInNode(node.parent); + } + } + } + BreakpointResolver.spanInSourceFileAtLocation = spanInSourceFileAtLocation; + })(BreakpointResolver = ts.BreakpointResolver || (ts.BreakpointResolver = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +var ts; +(function (ts) { + var OutliningElementsCollector; + (function (OutliningElementsCollector) { + function collectElements(sourceFile) { + var elements = []; + var collapseText = "..."; + function addOutliningSpan(hintSpanNode, startElement, endElement, autoCollapse) { + if (hintSpanNode && startElement && endElement) { + var span = { + textSpan: ts.createTextSpanFromBounds(startElement.pos, endElement.end), + hintSpan: ts.createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end), + bannerText: collapseText, + autoCollapse: autoCollapse + }; + elements.push(span); + } + } + function autoCollapse(node) { + return ts.isFunctionBlock(node) && node.parent.kind !== 163; + } + var depth = 0; + var maxDepth = 20; + function walk(n) { + if (depth > maxDepth) { + return; + } + switch (n.kind) { + case 179: + if (!ts.isFunctionBlock(n)) { + var parent_6 = n.parent; + var openBrace = ts.findChildOfKind(n, 14, sourceFile); + var closeBrace = ts.findChildOfKind(n, 15, sourceFile); + if (parent_6.kind === 184 || + parent_6.kind === 187 || + parent_6.kind === 188 || + parent_6.kind === 186 || + parent_6.kind === 183 || + parent_6.kind === 185 || + parent_6.kind === 192 || + parent_6.kind === 223) { + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); + break; + } + if (parent_6.kind === 196) { + var tryStatement = parent_6; + if (tryStatement.tryBlock === n) { + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); + break; + } + else if (tryStatement.finallyBlock === n) { + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); + if (finallyKeyword) { + addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); + break; + } + } + } + var span = ts.createTextSpanFromBounds(n.getStart(), n.end); + elements.push({ + textSpan: span, + hintSpan: span, + bannerText: collapseText, + autoCollapse: autoCollapse(n) + }); + break; + } + case 206: { + var openBrace = ts.findChildOfKind(n, 14, sourceFile); + var closeBrace = ts.findChildOfKind(n, 15, sourceFile); + addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); + break; + } + case 201: + case 202: + case 204: + case 154: + case 207: { + var openBrace = ts.findChildOfKind(n, 14, sourceFile); + var closeBrace = ts.findChildOfKind(n, 15, sourceFile); + addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); + break; + } + case 153: + var openBracket = ts.findChildOfKind(n, 18, sourceFile); + var closeBracket = ts.findChildOfKind(n, 19, sourceFile); + addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); + break; + } + depth++; + ts.forEachChild(n, walk); + depth--; + } + walk(sourceFile); + return elements; + } + OutliningElementsCollector.collectElements = collectElements; + })(OutliningElementsCollector = ts.OutliningElementsCollector || (ts.OutliningElementsCollector = {})); +})(ts || (ts = {})); +var ts; +(function (ts) { + var NavigateTo; + (function (NavigateTo) { + function getNavigateToItems(program, cancellationToken, searchValue, maxResultCount) { + var patternMatcher = ts.createPatternMatcher(searchValue); + var rawItems = []; + ts.forEach(program.getSourceFiles(), function (sourceFile) { + cancellationToken.throwIfCancellationRequested(); + var declarations = sourceFile.getNamedDeclarations(); + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var name = getDeclarationName(declaration); + if (name !== undefined) { + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); + if (!matches) { + continue; + } + if (patternMatcher.patternContainsDots) { + var containers = getContainers(declaration); + if (!containers) { + return undefined; + } + matches = patternMatcher.getMatches(containers, name); + if (!matches) { + continue; + } + } + var fileName = sourceFile.fileName; + var matchKind = bestMatchKind(matches); + rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + } + } + }); + rawItems.sort(compareNavigateToItems); + if (maxResultCount !== undefined) { + rawItems = rawItems.slice(0, maxResultCount); + } + var items = ts.map(rawItems, createNavigateToItem); + return items; + function allMatchesAreCaseSensitive(matches) { + ts.Debug.assert(matches.length > 0); + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + if (!match.isCaseSensitive) { + return false; + } + } + return true; + } + function getDeclarationName(declaration) { + var result = getTextOfIdentifierOrLiteral(declaration.name); + if (result !== undefined) { + return result; + } + if (declaration.name.kind === 127) { + var expr = declaration.name.expression; + if (expr.kind === 155) { + return expr.name.text; + } + return getTextOfIdentifierOrLiteral(expr); + } + return undefined; + } + function getTextOfIdentifierOrLiteral(node) { + if (node.kind === 65 || + node.kind === 8 || + node.kind === 7) { + return node.text; + } + return undefined; + } + function tryAddSingleDeclarationName(declaration, containers) { + if (declaration && declaration.name) { + var text = getTextOfIdentifierOrLiteral(declaration.name); + if (text !== undefined) { + containers.unshift(text); + } + else if (declaration.name.kind === 127) { + return tryAddComputedPropertyName(declaration.name.expression, containers, true); + } + else { + return false; + } + } + return true; + } + function tryAddComputedPropertyName(expression, containers, includeLastPortion) { + var text = getTextOfIdentifierOrLiteral(expression); + if (text !== undefined) { + if (includeLastPortion) { + containers.unshift(text); + } + return true; + } + if (expression.kind === 155) { + var propertyAccess = expression; + if (includeLastPortion) { + containers.unshift(propertyAccess.name.text); + } + return tryAddComputedPropertyName(propertyAccess.expression, containers, true); + } + return false; + } + function getContainers(declaration) { + var containers = []; + if (declaration.name.kind === 127) { + if (!tryAddComputedPropertyName(declaration.name.expression, containers, false)) { + return undefined; + } + } + declaration = ts.getContainerNode(declaration); + while (declaration) { + if (!tryAddSingleDeclarationName(declaration, containers)) { + return undefined; + } + declaration = ts.getContainerNode(declaration); + } + return containers; + } + function bestMatchKind(matches) { + ts.Debug.assert(matches.length > 0); + var bestMatchKind = ts.PatternMatchKind.camelCase; + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + var kind = match.kind; + if (kind < bestMatchKind) { + bestMatchKind = kind; + } + } + return bestMatchKind; + } + var baseSensitivity = { sensitivity: "base" }; + function compareNavigateToItems(i1, i2) { + return i1.matchKind - i2.matchKind || + i1.name.localeCompare(i2.name, undefined, baseSensitivity) || + i1.name.localeCompare(i2.name); + } + function createNavigateToItem(rawItem) { + var declaration = rawItem.declaration; + var container = ts.getContainerNode(declaration); + return { + name: rawItem.name, + kind: ts.getNodeKind(declaration), + kindModifiers: ts.getNodeModifiers(declaration), + matchKind: ts.PatternMatchKind[rawItem.matchKind], + isCaseSensitive: rawItem.isCaseSensitive, + fileName: rawItem.fileName, + textSpan: ts.createTextSpanFromBounds(declaration.getStart(), declaration.getEnd()), + containerName: container && container.name ? container.name.text : "", + containerKind: container && container.name ? ts.getNodeKind(container) : "" + }; + } + } + NavigateTo.getNavigateToItems = getNavigateToItems; + })(NavigateTo = ts.NavigateTo || (ts.NavigateTo = {})); +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + var NavigationBar; + (function (NavigationBar) { + function getNavigationBarItems(sourceFile) { + var hasGlobalNode = false; + return getItemsWorker(getTopLevelNodes(sourceFile), createTopLevelItem); + function getIndent(node) { + var indent = hasGlobalNode ? 1 : 0; + var current = node.parent; + while (current) { + switch (current.kind) { + case 205: + do { + current = current.parent; + } while (current.kind === 205); + case 201: + case 204: + case 202: + case 200: + indent++; + } + current = current.parent; + } + return indent; + } + function getChildNodes(nodes) { + var childNodes = []; + function visit(node) { + switch (node.kind) { + case 180: + ts.forEach(node.declarationList.declarations, visit); + break; + case 150: + case 151: + ts.forEach(node.elements, visit); + break; + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + childNodes.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + childNodes.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; + case 152: + case 198: + if (ts.isBindingPattern(node.name)) { + visit(node.name); + break; + } + case 201: + case 204: + case 202: + case 205: + case 200: + case 208: + case 213: + case 217: + childNodes.push(node); + break; + } + } + ts.forEach(nodes, visit); + return sortNodes(childNodes); + } + function getTopLevelNodes(node) { + var topLevelNodes = []; + topLevelNodes.push(node); + addTopLevelNodes(node.statements, topLevelNodes); + return topLevelNodes; + } + function sortNodes(nodes) { + return nodes.slice(0).sort(function (n1, n2) { + if (n1.name && n2.name) { + return ts.getPropertyNameForPropertyNameNode(n1.name).localeCompare(ts.getPropertyNameForPropertyNameNode(n2.name)); + } + else if (n1.name) { + return 1; + } + else if (n2.name) { + return -1; + } + else { + return n1.kind - n2.kind; + } + }); + } + function addTopLevelNodes(nodes, topLevelNodes) { + nodes = sortNodes(nodes); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + switch (node.kind) { + case 201: + case 204: + case 202: + topLevelNodes.push(node); + break; + case 205: + var moduleDeclaration = node; + topLevelNodes.push(node); + addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); + break; + case 200: + var functionDeclaration = node; + if (isTopLevelFunctionDeclaration(functionDeclaration)) { + topLevelNodes.push(node); + addTopLevelNodes(functionDeclaration.body.statements, topLevelNodes); + } + break; + } + } + } + function isTopLevelFunctionDeclaration(functionDeclaration) { + if (functionDeclaration.kind === 200) { + if (functionDeclaration.body && functionDeclaration.body.kind === 179) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 200 && !isEmpty(s.name.text); })) { + return true; + } + if (!ts.isFunctionBlock(functionDeclaration.parent)) { + return true; + } + } + } + return false; + } + function getItemsWorker(nodes, createItem) { + var items = []; + var keyToItem = {}; + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + var item_3 = createItem(child); + if (item_3 !== undefined) { + if (item_3.text.length > 0) { + var key = item_3.text + "-" + item_3.kind + "-" + item_3.indent; + var itemWithSameName = keyToItem[key]; + if (itemWithSameName) { + merge(itemWithSameName, item_3); + } + else { + keyToItem[key] = item_3; + items.push(item_3); + } + } + } + } + return items; + } + function merge(target, source) { + target.spans.push.apply(target.spans, source.spans); + if (source.childItems) { + if (!target.childItems) { + target.childItems = []; + } + outer: for (var _i = 0, _a = source.childItems; _i < _a.length; _i++) { + var sourceChild = _a[_i]; + for (var _b = 0, _c = target.childItems; _b < _c.length; _b++) { + var targetChild = _c[_b]; + if (targetChild.text === sourceChild.text && targetChild.kind === sourceChild.kind) { + merge(targetChild, sourceChild); + continue outer; + } + } + target.childItems.push(sourceChild); + } + } + } + function createChildItem(node) { + switch (node.kind) { + case 129: + if (ts.isBindingPattern(node.name)) { + break; + } + if ((node.flags & 499) === 0) { + return undefined; + } + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 134: + case 133: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); + case 136: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); + case 137: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); + case 140: + return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); + case 226: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 138: + return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); + case 139: + return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); + case 132: + case 131: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 200: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); + case 198: + case 152: + var variableDeclarationNode; + var name_18; + if (node.kind === 152) { + name_18 = node.name; + variableDeclarationNode = node; + while (variableDeclarationNode && variableDeclarationNode.kind !== 198) { + variableDeclarationNode = variableDeclarationNode.parent; + } + ts.Debug.assert(variableDeclarationNode !== undefined); + } + else { + ts.Debug.assert(!ts.isBindingPattern(node.name)); + variableDeclarationNode = node; + name_18 = node.name; + } + if (ts.isConst(variableDeclarationNode)) { + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.constElement); + } + else if (ts.isLet(variableDeclarationNode)) { + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.letElement); + } + else { + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.variableElement); + } + case 135: + return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); + case 217: + case 213: + case 208: + case 210: + case 211: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); + } + return undefined; + function createItem(node, name, scriptElementKind) { + return getNavigationBarItem(name, scriptElementKind, ts.getNodeModifiers(node), [getNodeSpan(node)]); + } + } + function isEmpty(text) { + return !text || text.trim() === ""; + } + function getNavigationBarItem(text, kind, kindModifiers, spans, childItems, indent) { + if (childItems === void 0) { childItems = []; } + if (indent === void 0) { indent = 0; } + if (isEmpty(text)) { + return undefined; + } + return { + text: text, + kind: kind, + kindModifiers: kindModifiers, + spans: spans, + childItems: childItems, + indent: indent, + bolded: false, + grayed: false + }; + } + function createTopLevelItem(node) { + switch (node.kind) { + case 227: + return createSourceFileItem(node); + case 201: + return createClassItem(node); + case 204: + return createEnumItem(node); + case 202: + return createIterfaceItem(node); + case 205: + return createModuleItem(node); + case 200: + return createFunctionItem(node); + } + return undefined; + function getModuleName(moduleDeclaration) { + if (moduleDeclaration.name.kind === 8) { + return getTextOfNode(moduleDeclaration.name); + } + var result = []; + result.push(moduleDeclaration.name.text); + while (moduleDeclaration.body && moduleDeclaration.body.kind === 205) { + moduleDeclaration = moduleDeclaration.body; + result.push(moduleDeclaration.name.text); + } + return result.join("."); + } + function createModuleItem(node) { + var moduleName = getModuleName(node); + var childItems = getItemsWorker(getChildNodes(getInnermostModule(node).body.statements), createChildItem); + return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + function createFunctionItem(node) { + if ((node.name || node.flags & 256) && node.body && node.body.kind === 179) { + var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); + return getNavigationBarItem((!node.name && node.flags & 256) ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + return undefined; + } + function createSourceFileItem(node) { + var childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); + if (childItems === undefined || childItems.length === 0) { + return undefined; + } + hasGlobalNode = true; + var rootName = ts.isExternalModule(node) + ? "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(node.fileName)))) + "\"" + : ""; + return getNavigationBarItem(rootName, ts.ScriptElementKind.moduleElement, ts.ScriptElementKindModifier.none, [getNodeSpan(node)], childItems); + } + function createClassItem(node) { + var childItems; + if (node.members) { + var constructor = ts.forEach(node.members, function (member) { + return member.kind === 135 && member; + }); + var nodes = removeDynamicallyNamedProperties(node); + if (constructor) { + nodes.push.apply(nodes, ts.filter(constructor.parameters, function (p) { return !ts.isBindingPattern(p.name); })); + } + childItems = getItemsWorker(sortNodes(nodes), createChildItem); + } + var nodeName = !node.name && (node.flags & 256) ? "default" : node.name.text; + return getNavigationBarItem(nodeName, ts.ScriptElementKind.classElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + function createEnumItem(node) { + var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); + return getNavigationBarItem(node.name.text, ts.ScriptElementKind.enumElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + function createIterfaceItem(node) { + var childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); + return getNavigationBarItem(node.name.text, ts.ScriptElementKind.interfaceElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + } + } + function removeComputedProperties(node) { + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 127; }); + } + function removeDynamicallyNamedProperties(node) { + return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); + } + function getInnermostModule(node) { + while (node.body.kind === 205) { + node = node.body; + } + return node; + } + function getNodeSpan(node) { + return node.kind === 227 + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + } + function getTextOfNode(node) { + return ts.getTextOfNodeFromSourceText(sourceFile.text, node); + } + } + NavigationBar.getNavigationBarItems = getNavigationBarItems; + })(NavigationBar = ts.NavigationBar || (ts.NavigationBar = {})); +})(ts || (ts = {})); +var ts; +(function (ts) { + (function (PatternMatchKind) { + PatternMatchKind[PatternMatchKind["exact"] = 0] = "exact"; + PatternMatchKind[PatternMatchKind["prefix"] = 1] = "prefix"; + PatternMatchKind[PatternMatchKind["substring"] = 2] = "substring"; + PatternMatchKind[PatternMatchKind["camelCase"] = 3] = "camelCase"; + })(ts.PatternMatchKind || (ts.PatternMatchKind = {})); + var PatternMatchKind = ts.PatternMatchKind; + function createPatternMatch(kind, punctuationStripped, isCaseSensitive, camelCaseWeight) { + return { + kind: kind, + punctuationStripped: punctuationStripped, + isCaseSensitive: isCaseSensitive, + camelCaseWeight: camelCaseWeight + }; + } + function createPatternMatcher(pattern) { + var stringToWordSpans = {}; + pattern = pattern.trim(); + var fullPatternSegment = createSegment(pattern); + var dotSeparatedSegments = pattern.split(".").map(function (p) { return createSegment(p.trim()); }); + var invalidPattern = dotSeparatedSegments.length === 0 || ts.forEach(dotSeparatedSegments, segmentIsInvalid); + return { + getMatches: getMatches, + getMatchesForLastSegmentOfPattern: getMatchesForLastSegmentOfPattern, + patternContainsDots: dotSeparatedSegments.length > 1 + }; + function skipMatch(candidate) { + return invalidPattern || !candidate; + } + function getMatchesForLastSegmentOfPattern(candidate) { + if (skipMatch(candidate)) { + return undefined; + } + return matchSegment(candidate, ts.lastOrUndefined(dotSeparatedSegments)); + } + function getMatches(candidateContainers, candidate) { + if (skipMatch(candidate)) { + return undefined; + } + var candidateMatch = matchSegment(candidate, ts.lastOrUndefined(dotSeparatedSegments)); + if (!candidateMatch) { + return undefined; + } + candidateContainers = candidateContainers || []; + if (dotSeparatedSegments.length - 1 > candidateContainers.length) { + return undefined; + } + var totalMatch = candidateMatch; + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { + var segment = dotSeparatedSegments[i]; + var containerName = candidateContainers[j]; + var containerMatch = matchSegment(containerName, segment); + if (!containerMatch) { + return undefined; + } + ts.addRange(totalMatch, containerMatch); + } + return totalMatch; + } + function getWordSpans(word) { + if (!ts.hasProperty(stringToWordSpans, word)) { + stringToWordSpans[word] = breakIntoWordSpans(word); + } + return stringToWordSpans[word]; + } + function matchTextChunk(candidate, chunk, punctuationStripped) { + var index = indexOfIgnoringCase(candidate, chunk.textLowerCase); + if (index === 0) { + if (chunk.text.length === candidate.length) { + return createPatternMatch(PatternMatchKind.exact, punctuationStripped, candidate === chunk.text); + } + else { + return createPatternMatch(PatternMatchKind.prefix, punctuationStripped, startsWith(candidate, chunk.text)); + } + } + var isLowercase = chunk.isLowerCase; + if (isLowercase) { + if (index > 0) { + var wordSpans = getWordSpans(candidate); + for (var _i = 0; _i < wordSpans.length; _i++) { + var span = wordSpans[_i]; + if (partStartsWith(candidate, span, chunk.text, true)) { + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, partStartsWith(candidate, span, chunk.text, false)); + } + } + } + } + else { + if (candidate.indexOf(chunk.text) > 0) { + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, true); + } + } + if (!isLowercase) { + if (chunk.characterSpans.length > 0) { + var candidateParts = getWordSpans(candidate); + var camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, false); + if (camelCaseWeight !== undefined) { + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, true, camelCaseWeight); + } + camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, true); + if (camelCaseWeight !== undefined) { + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, false, camelCaseWeight); + } + } + } + if (isLowercase) { + if (chunk.text.length < candidate.length) { + if (index > 0 && isUpperCaseLetter(candidate.charCodeAt(index))) { + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, false); + } + } + } + return undefined; + } + function containsSpaceOrAsterisk(text) { + for (var i = 0; i < text.length; i++) { + var ch = text.charCodeAt(i); + if (ch === 32 || ch === 42) { + return true; + } + } + return false; + } + function matchSegment(candidate, segment) { + if (!containsSpaceOrAsterisk(segment.totalTextChunk.text)) { + var match = matchTextChunk(candidate, segment.totalTextChunk, false); + if (match) { + return [match]; + } + } + var subWordTextChunks = segment.subWordTextChunks; + var matches = undefined; + for (var _i = 0; _i < subWordTextChunks.length; _i++) { + var subWordTextChunk = subWordTextChunks[_i]; + var result = matchTextChunk(candidate, subWordTextChunk, true); + if (!result) { + return undefined; + } + matches = matches || []; + matches.push(result); + } + return matches; + } + function partStartsWith(candidate, candidateSpan, pattern, ignoreCase, patternSpan) { + var patternPartStart = patternSpan ? patternSpan.start : 0; + var patternPartLength = patternSpan ? patternSpan.length : pattern.length; + if (patternPartLength > candidateSpan.length) { + return false; + } + if (ignoreCase) { + for (var i = 0; i < patternPartLength; i++) { + var ch1 = pattern.charCodeAt(patternPartStart + i); + var ch2 = candidate.charCodeAt(candidateSpan.start + i); + if (toLowerCase(ch1) !== toLowerCase(ch2)) { + return false; + } + } + } + else { + for (var i = 0; i < patternPartLength; i++) { + var ch1 = pattern.charCodeAt(patternPartStart + i); + var ch2 = candidate.charCodeAt(candidateSpan.start + i); + if (ch1 !== ch2) { + return false; + } + } + } + return true; + } + function tryCamelCaseMatch(candidate, candidateParts, chunk, ignoreCase) { + var chunkCharacterSpans = chunk.characterSpans; + var currentCandidate = 0; + var currentChunkSpan = 0; + var firstMatch = undefined; + var contiguous = undefined; + while (true) { + if (currentChunkSpan === chunkCharacterSpans.length) { + var weight = 0; + if (contiguous) { + weight += 1; + } + if (firstMatch === 0) { + weight += 2; + } + return weight; + } + else if (currentCandidate === candidateParts.length) { + return undefined; + } + var candidatePart = candidateParts[currentCandidate]; + var gotOneMatchThisCandidate = false; + for (; currentChunkSpan < chunkCharacterSpans.length; currentChunkSpan++) { + var chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; + if (gotOneMatchThisCandidate) { + if (!isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan - 1].start)) || + !isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan].start))) { + break; + } + } + if (!partStartsWith(candidate, candidatePart, chunk.text, ignoreCase, chunkCharacterSpan)) { + break; + } + gotOneMatchThisCandidate = true; + firstMatch = firstMatch === undefined ? currentCandidate : firstMatch; + contiguous = contiguous === undefined ? true : contiguous; + candidatePart = ts.createTextSpan(candidatePart.start + chunkCharacterSpan.length, candidatePart.length - chunkCharacterSpan.length); + } + if (!gotOneMatchThisCandidate && contiguous !== undefined) { + contiguous = false; + } + currentCandidate++; + } + } + } + ts.createPatternMatcher = createPatternMatcher; + function patternMatchCompareTo(match1, match2) { + return compareType(match1, match2) || + compareCamelCase(match1, match2) || + compareCase(match1, match2) || + comparePunctuation(match1, match2); + } + function comparePunctuation(result1, result2) { + if (result1.punctuationStripped !== result2.punctuationStripped) { + return result1.punctuationStripped ? 1 : -1; + } + return 0; + } + function compareCase(result1, result2) { + if (result1.isCaseSensitive !== result2.isCaseSensitive) { + return result1.isCaseSensitive ? -1 : 1; + } + return 0; + } + function compareType(result1, result2) { + return result1.kind - result2.kind; + } + function compareCamelCase(result1, result2) { + if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { + return result2.camelCaseWeight - result1.camelCaseWeight; + } + return 0; + } + function createSegment(text) { + return { + totalTextChunk: createTextChunk(text), + subWordTextChunks: breakPatternIntoTextChunks(text) + }; + } + function segmentIsInvalid(segment) { + return segment.subWordTextChunks.length === 0; + } + function isUpperCaseLetter(ch) { + if (ch >= 65 && ch <= 90) { + return true; + } + if (ch < 127 || !ts.isUnicodeIdentifierStart(ch, 2)) { + return false; + } + var str = String.fromCharCode(ch); + return str === str.toUpperCase(); + } + function isLowerCaseLetter(ch) { + if (ch >= 97 && ch <= 122) { + return true; + } + if (ch < 127 || !ts.isUnicodeIdentifierStart(ch, 2)) { + return false; + } + var str = String.fromCharCode(ch); + return str === str.toLowerCase(); + } + function containsUpperCaseLetter(string) { + for (var i = 0, n = string.length; i < n; i++) { + if (isUpperCaseLetter(string.charCodeAt(i))) { + return true; + } + } + return false; + } + function startsWith(string, search) { + for (var i = 0, n = search.length; i < n; i++) { + if (string.charCodeAt(i) !== search.charCodeAt(i)) { + return false; + } + } + return true; + } + function indexOfIgnoringCase(string, value) { + for (var i = 0, n = string.length - value.length; i <= n; i++) { + if (startsWithIgnoringCase(string, value, i)) { + return i; + } + } + return -1; + } + function startsWithIgnoringCase(string, value, start) { + for (var i = 0, n = value.length; i < n; i++) { + var ch1 = toLowerCase(string.charCodeAt(i + start)); + var ch2 = value.charCodeAt(i); + if (ch1 !== ch2) { + return false; + } + } + return true; + } + function toLowerCase(ch) { + if (ch >= 65 && ch <= 90) { + return 97 + (ch - 65); + } + if (ch < 127) { + return ch; + } + return String.fromCharCode(ch).toLowerCase().charCodeAt(0); + } + function isDigit(ch) { + return ch >= 48 && ch <= 57; + } + function isWordChar(ch) { + return isUpperCaseLetter(ch) || isLowerCaseLetter(ch) || isDigit(ch) || ch === 95 || ch === 36; + } + function breakPatternIntoTextChunks(pattern) { + var result = []; + var wordStart = 0; + var wordLength = 0; + for (var i = 0; i < pattern.length; i++) { + var ch = pattern.charCodeAt(i); + if (isWordChar(ch)) { + if (wordLength++ === 0) { + wordStart = i; + } + } + else { + if (wordLength > 0) { + result.push(createTextChunk(pattern.substr(wordStart, wordLength))); + wordLength = 0; + } + } + } + if (wordLength > 0) { + result.push(createTextChunk(pattern.substr(wordStart, wordLength))); + } + return result; + } + function createTextChunk(text) { + var textLowerCase = text.toLowerCase(); + return { + text: text, + textLowerCase: textLowerCase, + isLowerCase: text === textLowerCase, + characterSpans: breakIntoCharacterSpans(text) + }; + } + function breakIntoCharacterSpans(identifier) { + return breakIntoSpans(identifier, false); + } + ts.breakIntoCharacterSpans = breakIntoCharacterSpans; + function breakIntoWordSpans(identifier) { + return breakIntoSpans(identifier, true); + } + ts.breakIntoWordSpans = breakIntoWordSpans; + function breakIntoSpans(identifier, word) { + var result = []; + var wordStart = 0; + for (var i = 1, n = identifier.length; i < n; i++) { + var lastIsDigit = isDigit(identifier.charCodeAt(i - 1)); + var currentIsDigit = isDigit(identifier.charCodeAt(i)); + var hasTransitionFromLowerToUpper = transitionFromLowerToUpper(identifier, word, i); + var hasTransitionFromUpperToLower = transitionFromUpperToLower(identifier, word, i, wordStart); + if (charIsPunctuation(identifier.charCodeAt(i - 1)) || + charIsPunctuation(identifier.charCodeAt(i)) || + lastIsDigit != currentIsDigit || + hasTransitionFromLowerToUpper || + hasTransitionFromUpperToLower) { + if (!isAllPunctuation(identifier, wordStart, i)) { + result.push(ts.createTextSpan(wordStart, i - wordStart)); + } + wordStart = i; + } + } + if (!isAllPunctuation(identifier, wordStart, identifier.length)) { + result.push(ts.createTextSpan(wordStart, identifier.length - wordStart)); + } + return result; + } + function charIsPunctuation(ch) { + switch (ch) { + case 33: + case 34: + case 35: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 44: + case 45: + case 46: + case 47: + case 58: + case 59: + case 63: + case 64: + case 91: + case 92: + case 93: + case 95: + case 123: + case 125: + return true; + } + return false; + } + function isAllPunctuation(identifier, start, end) { + for (var i = start; i < end; i++) { + var ch = identifier.charCodeAt(i); + if (!charIsPunctuation(ch) || ch === 95 || ch === 36) { + return false; + } + } + return true; + } + function transitionFromUpperToLower(identifier, word, index, wordStart) { + if (word) { + if (index != wordStart && + index + 1 < identifier.length) { + var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + var nextIsLower = isLowerCaseLetter(identifier.charCodeAt(index + 1)); + if (currentIsUpper && nextIsLower) { + for (var i = wordStart; i < index; i++) { + if (!isUpperCaseLetter(identifier.charCodeAt(i))) { + return false; + } + } + return true; + } + } + } + return false; + } + function transitionFromLowerToUpper(identifier, word, index) { + var lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); + var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + var transition = word + ? (currentIsUpper && !lastIsUpper) + : currentIsUpper; + return transition; + } +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + var SignatureHelp; + (function (SignatureHelp) { + var emptyArray = []; + function getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken) { + var startingToken = ts.findTokenOnLeftOfPosition(sourceFile, position); + if (!startingToken) { + return undefined; + } + var argumentInfo = getContainingArgumentInfo(startingToken); + cancellationToken.throwIfCancellationRequested(); + if (!argumentInfo) { + return undefined; + } + var call = argumentInfo.invocation; + var candidates = []; + var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates); + cancellationToken.throwIfCancellationRequested(); + if (!candidates.length) { + return undefined; + } + return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); + function getImmediatelyContainingArgumentInfo(node) { + if (node.parent.kind === 157 || node.parent.kind === 158) { + var callExpression = node.parent; + if (node.kind === 24 || + node.kind === 16) { + var list = getChildListThatStartsWithOpenerToken(callExpression, node, sourceFile); + var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; + ts.Debug.assert(list !== undefined); + return { + kind: isTypeArgList ? 0 : 1, + invocation: callExpression, + argumentsSpan: getApplicableSpanForArguments(list), + argumentIndex: 0, + argumentCount: getArgumentCount(list) + }; + } + var listItemInfo = ts.findListItemInfo(node); + if (listItemInfo) { + var list = listItemInfo.list; + var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; + var argumentIndex = getArgumentIndex(list, node); + var argumentCount = getArgumentCount(list); + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); + return { + kind: isTypeArgList ? 0 : 1, + invocation: callExpression, + argumentsSpan: getApplicableSpanForArguments(list), + argumentIndex: argumentIndex, + argumentCount: argumentCount + }; + } + } + else if (node.kind === 10 && node.parent.kind === 159) { + if (ts.isInsideTemplateLiteral(node, position)) { + return getArgumentListInfoForTemplate(node.parent, 0); + } + } + else if (node.kind === 11 && node.parent.parent.kind === 159) { + var templateExpression = node.parent; + var tagExpression = templateExpression.parent; + ts.Debug.assert(templateExpression.kind === 171); + var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; + return getArgumentListInfoForTemplate(tagExpression, argumentIndex); + } + else if (node.parent.kind === 176 && node.parent.parent.parent.kind === 159) { + var templateSpan = node.parent; + var templateExpression = templateSpan.parent; + var tagExpression = templateExpression.parent; + ts.Debug.assert(templateExpression.kind === 171); + if (node.kind === 13 && !ts.isInsideTemplateLiteral(node, position)) { + return undefined; + } + var spanIndex = templateExpression.templateSpans.indexOf(templateSpan); + var argumentIndex = getArgumentIndexForTemplatePiece(spanIndex, node); + return getArgumentListInfoForTemplate(tagExpression, argumentIndex); + } + return undefined; + } + function getArgumentIndex(argumentsList, node) { + var argumentIndex = 0; + var listChildren = argumentsList.getChildren(); + for (var _i = 0; _i < listChildren.length; _i++) { + var child = listChildren[_i]; + if (child === node) { + break; + } + if (child.kind !== 23) { + argumentIndex++; + } + } + return argumentIndex; + } + function getArgumentCount(argumentsList) { + var listChildren = argumentsList.getChildren(); + var argumentCount = ts.countWhere(listChildren, function (arg) { return arg.kind !== 23; }); + if (listChildren.length > 0 && ts.lastOrUndefined(listChildren).kind === 23) { + argumentCount++; + } + return argumentCount; + } + function getArgumentIndexForTemplatePiece(spanIndex, node) { + ts.Debug.assert(position >= node.getStart(), "Assumed 'position' could not occur before node."); + if (ts.isTemplateLiteralKind(node.kind)) { + if (ts.isInsideTemplateLiteral(node, position)) { + return 0; + } + return spanIndex + 2; + } + return spanIndex + 1; + } + function getArgumentListInfoForTemplate(tagExpression, argumentIndex) { + var argumentCount = tagExpression.template.kind === 10 + ? 1 + : tagExpression.template.templateSpans.length + 1; + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); + return { + kind: 2, + invocation: tagExpression, + argumentsSpan: getApplicableSpanForTaggedTemplate(tagExpression), + argumentIndex: argumentIndex, + argumentCount: argumentCount + }; + } + function getApplicableSpanForArguments(argumentsList) { + var applicableSpanStart = argumentsList.getFullStart(); + var applicableSpanEnd = ts.skipTrivia(sourceFile.text, argumentsList.getEnd(), false); + return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); + } + function getApplicableSpanForTaggedTemplate(taggedTemplate) { + var template = taggedTemplate.template; + var applicableSpanStart = template.getStart(); + var applicableSpanEnd = template.getEnd(); + if (template.kind === 171) { + var lastSpan = ts.lastOrUndefined(template.templateSpans); + if (lastSpan.literal.getFullWidth() === 0) { + applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, false); + } + } + return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); + } + function getContainingArgumentInfo(node) { + for (var n = node; n.kind !== 227; n = n.parent) { + if (ts.isFunctionBlock(n)) { + return undefined; + } + if (n.pos < n.parent.pos || n.end > n.parent.end) { + ts.Debug.fail("Node of kind " + n.kind + " is not a subspan of its parent of kind " + n.parent.kind); + } + var argumentInfo_1 = getImmediatelyContainingArgumentInfo(n); + if (argumentInfo_1) { + return argumentInfo_1; + } + } + return undefined; + } + function getChildListThatStartsWithOpenerToken(parent, openerToken, sourceFile) { + var children = parent.getChildren(sourceFile); + var indexOfOpenerToken = children.indexOf(openerToken); + ts.Debug.assert(indexOfOpenerToken >= 0 && children.length > indexOfOpenerToken + 1); + return children[indexOfOpenerToken + 1]; + } + function selectBestInvalidOverloadIndex(candidates, argumentCount) { + var maxParamsSignatureIndex = -1; + var maxParams = -1; + for (var i = 0; i < candidates.length; i++) { + var candidate = candidates[i]; + if (candidate.hasRestParameter || candidate.parameters.length >= argumentCount) { + return i; + } + if (candidate.parameters.length > maxParams) { + maxParams = candidate.parameters.length; + maxParamsSignatureIndex = i; + } + } + return maxParamsSignatureIndex; + } + function createSignatureHelpItems(candidates, bestSignature, argumentListInfo) { + var applicableSpan = argumentListInfo.argumentsSpan; + var isTypeParameterList = argumentListInfo.kind === 0; + var invocation = argumentListInfo.invocation; + var callTarget = ts.getInvokedExpression(invocation); + var callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget); + var callTargetDisplayParts = callTargetSymbol && ts.symbolToDisplayParts(typeInfoResolver, callTargetSymbol, undefined, undefined); + var items = ts.map(candidates, function (candidateSignature) { + var signatureHelpParameters; + var prefixDisplayParts = []; + var suffixDisplayParts = []; + if (callTargetDisplayParts) { + prefixDisplayParts.push.apply(prefixDisplayParts, callTargetDisplayParts); + } + if (isTypeParameterList) { + prefixDisplayParts.push(ts.punctuationPart(24)); + var typeParameters = candidateSignature.typeParameters; + signatureHelpParameters = typeParameters && typeParameters.length > 0 ? ts.map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; + suffixDisplayParts.push(ts.punctuationPart(25)); + var parameterParts = ts.mapToDisplayParts(function (writer) { + return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation); + }); + suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts); + } + else { + var typeParameterParts = ts.mapToDisplayParts(function (writer) { + return typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation); + }); + prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts); + prefixDisplayParts.push(ts.punctuationPart(16)); + var parameters = candidateSignature.parameters; + signatureHelpParameters = parameters.length > 0 ? ts.map(parameters, createSignatureHelpParameterForParameter) : emptyArray; + suffixDisplayParts.push(ts.punctuationPart(17)); + } + var returnTypeParts = ts.mapToDisplayParts(function (writer) { + return typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation); + }); + suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts); + return { + isVariadic: candidateSignature.hasRestParameter, + prefixDisplayParts: prefixDisplayParts, + suffixDisplayParts: suffixDisplayParts, + separatorDisplayParts: [ts.punctuationPart(23), ts.spacePart()], + parameters: signatureHelpParameters, + documentation: candidateSignature.getDocumentationComment() + }; + }); + var argumentIndex = argumentListInfo.argumentIndex; + var argumentCount = argumentListInfo.argumentCount; + var selectedItemIndex = candidates.indexOf(bestSignature); + if (selectedItemIndex < 0) { + selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); + } + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); + return { + items: items, + applicableSpan: applicableSpan, + selectedItemIndex: selectedItemIndex, + argumentIndex: argumentIndex, + argumentCount: argumentCount + }; + function createSignatureHelpParameterForParameter(parameter) { + var displayParts = ts.mapToDisplayParts(function (writer) { + return typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation); + }); + var isOptional = ts.hasQuestionToken(parameter.valueDeclaration); + return { + name: parameter.name, + documentation: parameter.getDocumentationComment(), + displayParts: displayParts, + isOptional: isOptional + }; + } + function createSignatureHelpParameterForTypeParameter(typeParameter) { + var displayParts = ts.mapToDisplayParts(function (writer) { + return typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation); + }); + return { + name: typeParameter.symbol.name, + documentation: emptyArray, + displayParts: displayParts, + isOptional: false + }; + } + } + } + SignatureHelp.getSignatureHelpItems = getSignatureHelpItems; + })(SignatureHelp = ts.SignatureHelp || (ts.SignatureHelp = {})); +})(ts || (ts = {})); +var ts; +(function (ts) { + function getEndLinePosition(line, sourceFile) { + ts.Debug.assert(line >= 0); + var lineStarts = sourceFile.getLineStarts(); + var lineIndex = line; + if (lineIndex + 1 === lineStarts.length) { + return sourceFile.text.length - 1; + } + else { + var start = lineStarts[lineIndex]; + var pos = lineStarts[lineIndex + 1] - 1; + ts.Debug.assert(ts.isLineBreak(sourceFile.text.charCodeAt(pos))); + while (start <= pos && ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { + pos--; + } + return pos; + } + } + ts.getEndLinePosition = getEndLinePosition; + function getLineStartPositionForPosition(position, sourceFile) { + var lineStarts = sourceFile.getLineStarts(); + var line = sourceFile.getLineAndCharacterOfPosition(position).line; + return lineStarts[line]; + } + ts.getLineStartPositionForPosition = getLineStartPositionForPosition; + function rangeContainsRange(r1, r2) { + return startEndContainsRange(r1.pos, r1.end, r2); + } + ts.rangeContainsRange = rangeContainsRange; + function startEndContainsRange(start, end, range) { + return start <= range.pos && end >= range.end; + } + ts.startEndContainsRange = startEndContainsRange; + function rangeContainsStartEnd(range, start, end) { + return range.pos <= start && range.end >= end; + } + ts.rangeContainsStartEnd = rangeContainsStartEnd; + function rangeOverlapsWithStartEnd(r1, start, end) { + return startEndOverlapsWithStartEnd(r1.pos, r1.end, start, end); + } + ts.rangeOverlapsWithStartEnd = rangeOverlapsWithStartEnd; + function startEndOverlapsWithStartEnd(start1, end1, start2, end2) { + var start = Math.max(start1, start2); + var end = Math.min(end1, end2); + return start < end; + } + ts.startEndOverlapsWithStartEnd = startEndOverlapsWithStartEnd; + function positionBelongsToNode(candidate, position, sourceFile) { + return candidate.end > position || !isCompletedNode(candidate, sourceFile); + } + ts.positionBelongsToNode = positionBelongsToNode; + function isCompletedNode(n, sourceFile) { + if (ts.nodeIsMissing(n)) { + return false; + } + switch (n.kind) { + case 201: + case 202: + case 204: + case 154: + case 150: + case 145: + case 179: + case 206: + case 207: + return nodeEndsWith(n, 15, sourceFile); + case 223: + return isCompletedNode(n.block, sourceFile); + case 158: + if (!n.arguments) { + return true; + } + case 157: + case 161: + case 149: + return nodeEndsWith(n, 17, sourceFile); + case 142: + case 143: + return isCompletedNode(n.type, sourceFile); + case 135: + case 136: + case 137: + case 200: + case 162: + case 134: + case 133: + case 139: + case 138: + case 163: + if (n.body) { + return isCompletedNode(n.body, sourceFile); + } + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 17, sourceFile); + case 205: + return n.body && isCompletedNode(n.body, sourceFile); + case 183: + if (n.elseStatement) { + return isCompletedNode(n.elseStatement, sourceFile); + } + return isCompletedNode(n.thenStatement, sourceFile); + case 182: + return isCompletedNode(n.expression, sourceFile); + case 153: + case 151: + case 156: + case 127: + case 147: + return nodeEndsWith(n, 19, sourceFile); + case 140: + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 19, sourceFile); + case 220: + case 221: + return false; + case 186: + case 187: + case 188: + case 185: + return isCompletedNode(n.statement, sourceFile); + case 184: + var hasWhileKeyword = findChildOfKind(n, 100, sourceFile); + if (hasWhileKeyword) { + return nodeEndsWith(n, 17, sourceFile); + } + return isCompletedNode(n.statement, sourceFile); + case 144: + return isCompletedNode(n.exprName, sourceFile); + case 165: + case 164: + case 166: + case 172: + case 173: + var unaryWordExpression = n; + return isCompletedNode(unaryWordExpression.expression, sourceFile); + case 159: + return isCompletedNode(n.template, sourceFile); + case 171: + var lastSpan = ts.lastOrUndefined(n.templateSpans); + return isCompletedNode(lastSpan, sourceFile); + case 176: + return ts.nodeIsPresent(n.literal); + case 167: + return isCompletedNode(n.operand, sourceFile); + case 169: + return isCompletedNode(n.right, sourceFile); + case 170: + return isCompletedNode(n.whenFalse, sourceFile); + default: + return true; + } + } + ts.isCompletedNode = isCompletedNode; + function nodeEndsWith(n, expectedLastToken, sourceFile) { + var children = n.getChildren(sourceFile); + if (children.length) { + var last = children[children.length - 1]; + if (last.kind === expectedLastToken) { + return true; + } + else if (last.kind === 22 && children.length !== 1) { + return children[children.length - 2].kind === expectedLastToken; + } + } + return false; + } + function findListItemInfo(node) { + var list = findContainingList(node); + if (!list) { + return undefined; + } + var children = list.getChildren(); + var listItemIndex = ts.indexOf(children, node); + return { + listItemIndex: listItemIndex, + list: list + }; + } + ts.findListItemInfo = findListItemInfo; + function hasChildOfKind(n, kind, sourceFile) { + return !!findChildOfKind(n, kind, sourceFile); + } + ts.hasChildOfKind = hasChildOfKind; + function findChildOfKind(n, kind, sourceFile) { + return ts.forEach(n.getChildren(sourceFile), function (c) { return c.kind === kind && c; }); + } + ts.findChildOfKind = findChildOfKind; + function findContainingList(node) { + var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { + if (c.kind === 228 && c.pos <= node.pos && c.end >= node.end) { + return c; + } + }); + ts.Debug.assert(!syntaxList || ts.contains(syntaxList.getChildren(), node)); + return syntaxList; + } + ts.findContainingList = findContainingList; + function getTouchingWord(sourceFile, position) { + return getTouchingToken(sourceFile, position, function (n) { return isWord(n.kind); }); + } + ts.getTouchingWord = getTouchingWord; + function getTouchingPropertyName(sourceFile, position) { + return getTouchingToken(sourceFile, position, function (n) { return isPropertyName(n.kind); }); + } + ts.getTouchingPropertyName = getTouchingPropertyName; + function getTouchingToken(sourceFile, position, includeItemAtEndPosition) { + return getTokenAtPositionWorker(sourceFile, position, false, includeItemAtEndPosition); + } + ts.getTouchingToken = getTouchingToken; + function getTokenAtPosition(sourceFile, position) { + return getTokenAtPositionWorker(sourceFile, position, true, undefined); + } + ts.getTokenAtPosition = getTokenAtPosition; + function getTokenAtPositionWorker(sourceFile, position, allowPositionInLeadingTrivia, includeItemAtEndPosition) { + var current = sourceFile; + outer: while (true) { + if (isToken(current)) { + return current; + } + for (var i = 0, n = current.getChildCount(sourceFile); i < n; i++) { + var child = current.getChildAt(i); + var start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile); + if (start <= position) { + var end = child.getEnd(); + if (position < end || (position === end && child.kind === 1)) { + current = child; + continue outer; + } + else if (includeItemAtEndPosition && end === position) { + var previousToken = findPrecedingToken(position, sourceFile, child); + if (previousToken && includeItemAtEndPosition(previousToken)) { + return previousToken; + } + } + } + } + return current; + } + } + function findTokenOnLeftOfPosition(file, position) { + var tokenAtPosition = getTokenAtPosition(file, position); + if (isToken(tokenAtPosition) && position > tokenAtPosition.getStart(file) && position < tokenAtPosition.getEnd()) { + return tokenAtPosition; + } + return findPrecedingToken(position, file); + } + ts.findTokenOnLeftOfPosition = findTokenOnLeftOfPosition; + function findNextToken(previousToken, parent) { + return find(parent); + function find(n) { + if (isToken(n) && n.pos === previousToken.end) { + return n; + } + var children = n.getChildren(); + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; + var shouldDiveInChildNode = (child.pos <= previousToken.pos && child.end > previousToken.end) || + (child.pos === previousToken.end); + if (shouldDiveInChildNode && nodeHasTokens(child)) { + return find(child); + } + } + return undefined; + } + } + ts.findNextToken = findNextToken; + function findPrecedingToken(position, sourceFile, startNode) { + return find(startNode || sourceFile); + function findRightmostToken(n) { + if (isToken(n)) { + return n; + } + var children = n.getChildren(); + var candidate = findRightmostChildNodeWithTokens(children, children.length); + return candidate && findRightmostToken(candidate); + } + function find(n) { + if (isToken(n)) { + return n; + } + var children = n.getChildren(); + for (var i = 0, len = children.length; i < len; i++) { + var child = children[i]; + if (nodeHasTokens(child)) { + if (position <= child.end) { + if (child.getStart(sourceFile) >= position) { + var candidate = findRightmostChildNodeWithTokens(children, i); + return candidate && findRightmostToken(candidate); + } + else { + return find(child); + } + } + } + } + ts.Debug.assert(startNode !== undefined || n.kind === 227); + if (children.length) { + var candidate = findRightmostChildNodeWithTokens(children, children.length); + return candidate && findRightmostToken(candidate); + } + } + function findRightmostChildNodeWithTokens(children, exclusiveStartPosition) { + for (var i = exclusiveStartPosition - 1; i >= 0; --i) { + if (nodeHasTokens(children[i])) { + return children[i]; + } + } + } + } + ts.findPrecedingToken = findPrecedingToken; + function nodeHasTokens(n) { + return n.getWidth() !== 0; + } + function getNodeModifiers(node) { + var flags = ts.getCombinedNodeFlags(node); + var result = []; + if (flags & 32) + result.push(ts.ScriptElementKindModifier.privateMemberModifier); + if (flags & 64) + result.push(ts.ScriptElementKindModifier.protectedMemberModifier); + if (flags & 16) + result.push(ts.ScriptElementKindModifier.publicMemberModifier); + if (flags & 128) + result.push(ts.ScriptElementKindModifier.staticModifier); + if (flags & 1) + result.push(ts.ScriptElementKindModifier.exportedModifier); + if (ts.isInAmbientContext(node)) + result.push(ts.ScriptElementKindModifier.ambientModifier); + return result.length > 0 ? result.join(',') : ts.ScriptElementKindModifier.none; + } + ts.getNodeModifiers = getNodeModifiers; + function getTypeArgumentOrTypeParameterList(node) { + if (node.kind === 141 || node.kind === 157) { + return node.typeArguments; + } + if (ts.isFunctionLike(node) || node.kind === 201 || node.kind === 202) { + return node.typeParameters; + } + return undefined; + } + ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; + function isToken(n) { + return n.kind >= 0 && n.kind <= 125; + } + ts.isToken = isToken; + function isWord(kind) { + return kind === 65 || ts.isKeyword(kind); + } + ts.isWord = isWord; + function isPropertyName(kind) { + return kind === 8 || kind === 7 || isWord(kind); + } + function isComment(kind) { + return kind === 2 || kind === 3; + } + ts.isComment = isComment; + function isPunctuation(kind) { + return 14 <= kind && kind <= 64; + } + ts.isPunctuation = isPunctuation; + function isInsideTemplateLiteral(node, position) { + return ts.isTemplateLiteralKind(node.kind) + && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); + } + ts.isInsideTemplateLiteral = isInsideTemplateLiteral; + function isAccessibilityModifier(kind) { + switch (kind) { + case 109: + case 107: + case 108: + return true; + } + return false; + } + ts.isAccessibilityModifier = isAccessibilityModifier; + function compareDataObjects(dst, src) { + for (var e in dst) { + if (typeof dst[e] === "object") { + if (!compareDataObjects(dst[e], src[e])) { + return false; + } + } + else if (typeof dst[e] !== "function") { + if (dst[e] !== src[e]) { + return false; + } + } + } + return true; + } + ts.compareDataObjects = compareDataObjects; +})(ts || (ts = {})); +var ts; +(function (ts) { + function isFirstDeclarationOfSymbolParameter(symbol) { + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 129; + } + ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; + var displayPartWriter = getDisplayPartWriter(); + function getDisplayPartWriter() { + var displayParts; + var lineStart; + var indent; + resetWriter(); + return { + displayParts: function () { return displayParts; }, + writeKeyword: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.keyword); }, + writeOperator: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.operator); }, + writePunctuation: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.punctuation); }, + writeSpace: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.space); }, + writeStringLiteral: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.stringLiteral); }, + writeParameter: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.parameterName); }, + writeSymbol: writeSymbol, + writeLine: writeLine, + increaseIndent: function () { indent++; }, + decreaseIndent: function () { indent--; }, + clear: resetWriter, + trackSymbol: function () { } + }; + function writeIndent() { + if (lineStart) { + var indentString = ts.getIndentString(indent); + if (indentString) { + displayParts.push(displayPart(indentString, ts.SymbolDisplayPartKind.space)); + } + lineStart = false; + } + } + function writeKind(text, kind) { + writeIndent(); + displayParts.push(displayPart(text, kind)); + } + function writeSymbol(text, symbol) { + writeIndent(); + displayParts.push(symbolPart(text, symbol)); + } + function writeLine() { + displayParts.push(lineBreakPart()); + lineStart = true; + } + function resetWriter() { + displayParts = []; + lineStart = true; + indent = 0; + } + } + function symbolPart(text, symbol) { + return displayPart(text, displayPartKind(symbol), symbol); + function displayPartKind(symbol) { + var flags = symbol.flags; + if (flags & 3) { + return isFirstDeclarationOfSymbolParameter(symbol) ? ts.SymbolDisplayPartKind.parameterName : ts.SymbolDisplayPartKind.localName; + } + else if (flags & 4) { + return ts.SymbolDisplayPartKind.propertyName; + } + else if (flags & 32768) { + return ts.SymbolDisplayPartKind.propertyName; + } + else if (flags & 65536) { + return ts.SymbolDisplayPartKind.propertyName; + } + else if (flags & 8) { + return ts.SymbolDisplayPartKind.enumMemberName; + } + else if (flags & 16) { + return ts.SymbolDisplayPartKind.functionName; + } + else if (flags & 32) { + return ts.SymbolDisplayPartKind.className; + } + else if (flags & 64) { + return ts.SymbolDisplayPartKind.interfaceName; + } + else if (flags & 384) { + return ts.SymbolDisplayPartKind.enumName; + } + else if (flags & 1536) { + return ts.SymbolDisplayPartKind.moduleName; + } + else if (flags & 8192) { + return ts.SymbolDisplayPartKind.methodName; + } + else if (flags & 262144) { + return ts.SymbolDisplayPartKind.typeParameterName; + } + else if (flags & 524288) { + return ts.SymbolDisplayPartKind.aliasName; + } + else if (flags & 8388608) { + return ts.SymbolDisplayPartKind.aliasName; + } + return ts.SymbolDisplayPartKind.text; + } + } + ts.symbolPart = symbolPart; + function displayPart(text, kind, symbol) { + return { + text: text, + kind: ts.SymbolDisplayPartKind[kind] + }; + } + ts.displayPart = displayPart; + function spacePart() { + return displayPart(" ", ts.SymbolDisplayPartKind.space); + } + ts.spacePart = spacePart; + function keywordPart(kind) { + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.keyword); + } + ts.keywordPart = keywordPart; + function punctuationPart(kind) { + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.punctuation); + } + ts.punctuationPart = punctuationPart; + function operatorPart(kind) { + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.operator); + } + ts.operatorPart = operatorPart; + function textOrKeywordPart(text) { + var kind = ts.stringToToken(text); + return kind === undefined + ? textPart(text) + : keywordPart(kind); + } + ts.textOrKeywordPart = textOrKeywordPart; + function textPart(text) { + return displayPart(text, ts.SymbolDisplayPartKind.text); + } + ts.textPart = textPart; + function lineBreakPart() { + return displayPart("\n", ts.SymbolDisplayPartKind.lineBreak); + } + ts.lineBreakPart = lineBreakPart; + function mapToDisplayParts(writeDisplayParts) { + writeDisplayParts(displayPartWriter); + var result = displayPartWriter.displayParts(); + displayPartWriter.clear(); + return result; + } + ts.mapToDisplayParts = mapToDisplayParts; + function typeToDisplayParts(typechecker, type, enclosingDeclaration, flags) { + return mapToDisplayParts(function (writer) { + typechecker.getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + }); + } + ts.typeToDisplayParts = typeToDisplayParts; + function symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration, meaning, flags) { + return mapToDisplayParts(function (writer) { + typeChecker.getSymbolDisplayBuilder().buildSymbolDisplay(symbol, writer, enclosingDeclaration, meaning, flags); + }); + } + ts.symbolToDisplayParts = symbolToDisplayParts; + function signatureToDisplayParts(typechecker, signature, enclosingDeclaration, flags) { + return mapToDisplayParts(function (writer) { + typechecker.getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + }); + } + ts.signatureToDisplayParts = signatureToDisplayParts; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var scanner = ts.createScanner(2, false); + function getFormattingScanner(sourceFile, startPos, endPos) { + scanner.setText(sourceFile.text); + scanner.setTextPos(startPos); + var wasNewLine = true; + var leadingTrivia; + var trailingTrivia; + var savedPos; + var lastScanAction; + var lastTokenInfo; + return { + advance: advance, + readTokenInfo: readTokenInfo, + isOnToken: isOnToken, + lastTrailingTriviaWasNewLine: function () { return wasNewLine; }, + close: function () { + lastTokenInfo = undefined; + scanner.setText(undefined); + } + }; + function advance() { + lastTokenInfo = undefined; + var isStarted = scanner.getStartPos() !== startPos; + if (isStarted) { + if (trailingTrivia) { + ts.Debug.assert(trailingTrivia.length !== 0); + wasNewLine = trailingTrivia[trailingTrivia.length - 1].kind === 4; + } + else { + wasNewLine = false; + } + } + leadingTrivia = undefined; + trailingTrivia = undefined; + if (!isStarted) { + scanner.scan(); + } + var t; + var pos = scanner.getStartPos(); + while (pos < endPos) { + var t_2 = scanner.getToken(); + if (!ts.isTrivia(t_2)) { + break; + } + scanner.scan(); + var item_4 = { + pos: pos, + end: scanner.getStartPos(), + kind: t_2 + }; + pos = scanner.getStartPos(); + if (!leadingTrivia) { + leadingTrivia = []; + } + leadingTrivia.push(item_4); + } + savedPos = scanner.getStartPos(); + } + function shouldRescanGreaterThanToken(node) { + if (node) { + switch (node.kind) { + case 27: + case 60: + case 61: + case 42: + case 41: + return true; + } + } + return false; + } + function shouldRescanSlashToken(container) { + return container.kind === 9; + } + function shouldRescanTemplateToken(container) { + return container.kind === 12 || + container.kind === 13; + } + function startsWithSlashToken(t) { + return t === 36 || t === 57; + } + function readTokenInfo(n) { + if (!isOnToken()) { + return { + leadingTrivia: leadingTrivia, + trailingTrivia: undefined, + token: undefined + }; + } + var expectedScanAction = shouldRescanGreaterThanToken(n) + ? 1 + : shouldRescanSlashToken(n) + ? 2 + : shouldRescanTemplateToken(n) + ? 3 + : 0; + if (lastTokenInfo && expectedScanAction === lastScanAction) { + return fixTokenKind(lastTokenInfo, n); + } + if (scanner.getStartPos() !== savedPos) { + ts.Debug.assert(lastTokenInfo !== undefined); + scanner.setTextPos(savedPos); + scanner.scan(); + } + var currentToken = scanner.getToken(); + if (expectedScanAction === 1 && currentToken === 25) { + currentToken = scanner.reScanGreaterToken(); + ts.Debug.assert(n.kind === currentToken); + lastScanAction = 1; + } + else if (expectedScanAction === 2 && startsWithSlashToken(currentToken)) { + currentToken = scanner.reScanSlashToken(); + ts.Debug.assert(n.kind === currentToken); + lastScanAction = 2; + } + else if (expectedScanAction === 3 && currentToken === 15) { + currentToken = scanner.reScanTemplateToken(); + lastScanAction = 3; + } + else { + lastScanAction = 0; + } + var token = { + pos: scanner.getStartPos(), + end: scanner.getTextPos(), + kind: currentToken + }; + if (trailingTrivia) { + trailingTrivia = undefined; + } + while (scanner.getStartPos() < endPos) { + currentToken = scanner.scan(); + if (!ts.isTrivia(currentToken)) { + break; + } + var trivia = { + pos: scanner.getStartPos(), + end: scanner.getTextPos(), + kind: currentToken + }; + if (!trailingTrivia) { + trailingTrivia = []; + } + trailingTrivia.push(trivia); + if (currentToken === 4) { + scanner.scan(); + break; + } + } + lastTokenInfo = { + leadingTrivia: leadingTrivia, + trailingTrivia: trailingTrivia, + token: token + }; + return fixTokenKind(lastTokenInfo, n); + } + function isOnToken() { + var current = (lastTokenInfo && lastTokenInfo.token.kind) || scanner.getToken(); + var startPos = (lastTokenInfo && lastTokenInfo.token.pos) || scanner.getStartPos(); + return startPos < endPos && current !== 1 && !ts.isTrivia(current); + } + function fixTokenKind(tokenInfo, container) { + if (ts.isToken(container) && tokenInfo.token.kind !== container.kind) { + tokenInfo.token.kind = container.kind; + } + return tokenInfo; + } + } + formatting.getFormattingScanner = getFormattingScanner; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var FormattingContext = (function () { + function FormattingContext(sourceFile, formattingRequestKind) { + this.sourceFile = sourceFile; + this.formattingRequestKind = formattingRequestKind; + } + FormattingContext.prototype.updateContext = function (currentRange, currentTokenParent, nextRange, nextTokenParent, commonParent) { + ts.Debug.assert(currentRange !== undefined, "currentTokenSpan is null"); + ts.Debug.assert(currentTokenParent !== undefined, "currentTokenParent is null"); + ts.Debug.assert(nextRange !== undefined, "nextTokenSpan is null"); + ts.Debug.assert(nextTokenParent !== undefined, "nextTokenParent is null"); + ts.Debug.assert(commonParent !== undefined, "commonParent is null"); + this.currentTokenSpan = currentRange; + this.currentTokenParent = currentTokenParent; + this.nextTokenSpan = nextRange; + this.nextTokenParent = nextTokenParent; + this.contextNode = commonParent; + this.contextNodeAllOnSameLine = undefined; + this.nextNodeAllOnSameLine = undefined; + this.tokensAreOnSameLine = undefined; + this.contextNodeBlockIsOnOneLine = undefined; + this.nextNodeBlockIsOnOneLine = undefined; + }; + FormattingContext.prototype.ContextNodeAllOnSameLine = function () { + if (this.contextNodeAllOnSameLine === undefined) { + this.contextNodeAllOnSameLine = this.NodeIsOnOneLine(this.contextNode); + } + return this.contextNodeAllOnSameLine; + }; + FormattingContext.prototype.NextNodeAllOnSameLine = function () { + if (this.nextNodeAllOnSameLine === undefined) { + this.nextNodeAllOnSameLine = this.NodeIsOnOneLine(this.nextTokenParent); + } + return this.nextNodeAllOnSameLine; + }; + FormattingContext.prototype.TokensAreOnSameLine = function () { + if (this.tokensAreOnSameLine === undefined) { + var startLine = this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line; + var endLine = this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line; + this.tokensAreOnSameLine = (startLine == endLine); + } + return this.tokensAreOnSameLine; + }; + FormattingContext.prototype.ContextNodeBlockIsOnOneLine = function () { + if (this.contextNodeBlockIsOnOneLine === undefined) { + this.contextNodeBlockIsOnOneLine = this.BlockIsOnOneLine(this.contextNode); + } + return this.contextNodeBlockIsOnOneLine; + }; + FormattingContext.prototype.NextNodeBlockIsOnOneLine = function () { + if (this.nextNodeBlockIsOnOneLine === undefined) { + this.nextNodeBlockIsOnOneLine = this.BlockIsOnOneLine(this.nextTokenParent); + } + return this.nextNodeBlockIsOnOneLine; + }; + FormattingContext.prototype.NodeIsOnOneLine = function (node) { + var startLine = this.sourceFile.getLineAndCharacterOfPosition(node.getStart(this.sourceFile)).line; + var endLine = this.sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line; + return startLine == endLine; + }; + FormattingContext.prototype.BlockIsOnOneLine = function (node) { + var openBrace = ts.findChildOfKind(node, 14, this.sourceFile); + var closeBrace = ts.findChildOfKind(node, 15, this.sourceFile); + if (openBrace && closeBrace) { + var startLine = this.sourceFile.getLineAndCharacterOfPosition(openBrace.getEnd()).line; + var endLine = this.sourceFile.getLineAndCharacterOfPosition(closeBrace.getStart(this.sourceFile)).line; + return startLine === endLine; + } + return false; + }; + return FormattingContext; + })(); + formatting.FormattingContext = FormattingContext; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var Rule = (function () { + function Rule(Descriptor, Operation, Flag) { + if (Flag === void 0) { Flag = 0; } + this.Descriptor = Descriptor; + this.Operation = Operation; + this.Flag = Flag; + } + Rule.prototype.toString = function () { + return "[desc=" + this.Descriptor + "," + + "operation=" + this.Operation + "," + + "flag=" + this.Flag + "]"; + }; + return Rule; + })(); + formatting.Rule = Rule; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var RuleDescriptor = (function () { + function RuleDescriptor(LeftTokenRange, RightTokenRange) { + this.LeftTokenRange = LeftTokenRange; + this.RightTokenRange = RightTokenRange; + } + RuleDescriptor.prototype.toString = function () { + return "[leftRange=" + this.LeftTokenRange + "," + + "rightRange=" + this.RightTokenRange + "]"; + }; + RuleDescriptor.create1 = function (left, right) { + return RuleDescriptor.create4(formatting.Shared.TokenRange.FromToken(left), formatting.Shared.TokenRange.FromToken(right)); + }; + RuleDescriptor.create2 = function (left, right) { + return RuleDescriptor.create4(left, formatting.Shared.TokenRange.FromToken(right)); + }; + RuleDescriptor.create3 = function (left, right) { + return RuleDescriptor.create4(formatting.Shared.TokenRange.FromToken(left), right); + }; + RuleDescriptor.create4 = function (left, right) { + return new RuleDescriptor(left, right); + }; + return RuleDescriptor; + })(); + formatting.RuleDescriptor = RuleDescriptor; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var RuleOperation = (function () { + function RuleOperation() { + this.Context = null; + this.Action = null; + } + RuleOperation.prototype.toString = function () { + return "[context=" + this.Context + "," + + "action=" + this.Action + "]"; + }; + RuleOperation.create1 = function (action) { + return RuleOperation.create2(formatting.RuleOperationContext.Any, action); + }; + RuleOperation.create2 = function (context, action) { + var result = new RuleOperation(); + result.Context = context; + result.Action = action; + return result; + }; + return RuleOperation; + })(); + formatting.RuleOperation = RuleOperation; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var RuleOperationContext = (function () { + function RuleOperationContext() { + var funcs = []; + for (var _i = 0; _i < arguments.length; _i++) { + funcs[_i - 0] = arguments[_i]; + } + this.customContextChecks = funcs; + } + RuleOperationContext.prototype.IsAny = function () { + return this == RuleOperationContext.Any; + }; + RuleOperationContext.prototype.InContext = function (context) { + if (this.IsAny()) { + return true; + } + for (var _i = 0, _a = this.customContextChecks; _i < _a.length; _i++) { + var check = _a[_i]; + if (!check(context)) { + return false; + } + } + return true; + }; + RuleOperationContext.Any = new RuleOperationContext(); + return RuleOperationContext; + })(); + formatting.RuleOperationContext = RuleOperationContext; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var Rules = (function () { + function Rules() { + /// + /// Common Rules + /// + this.IgnoreBeforeComment = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.Comments), formatting.RuleOperation.create1(1)); + this.IgnoreAfterLineComment = new formatting.Rule(formatting.RuleDescriptor.create3(2, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create1(1)); + this.NoSpaceBeforeSemicolon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeColon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 51), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.NoSpaceBeforeQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 50), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.SpaceAfterColon = new formatting.Rule(formatting.RuleDescriptor.create3(51, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 2)); + this.SpaceAfterQuestionMarkInConditionalOperator = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsConditionalOperatorContext), 2)); + this.NoSpaceAfterQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterSemicolon = new formatting.Rule(formatting.RuleDescriptor.create3(22, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsAfterCodeBlockContext), 2)); + this.SpaceBetweenCloseBraceAndElse = new formatting.Rule(formatting.RuleDescriptor.create1(15, 76), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBetweenCloseBraceAndWhile = new formatting.Rule(formatting.RuleDescriptor.create1(15, 100), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.FromTokens([17, 19, 23, 22])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeDot = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterDot = new formatting.Rule(formatting.RuleDescriptor.create3(20, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeOpenBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 18), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterOpenBracket = new formatting.Rule(formatting.RuleDescriptor.create3(18, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 19), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; + this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([65, 3]); + this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); + this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([17, 3, 75, 96, 81, 76]); + this.SpaceBeforeOpenBraceInControl = new formatting.Rule(formatting.RuleDescriptor.create2(this.ControlOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); + this.SpaceAfterOpenBrace = new formatting.Rule(formatting.RuleDescriptor.create3(14, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); + this.SpaceBeforeCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); + this.NoSpaceBetweenEmptyBraceBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(14, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsObjectContext), 8)); + this.NewLineAfterOpenBraceInBlockContext = new formatting.Rule(formatting.RuleDescriptor.create3(14, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsMultilineBlockContext), 4)); + this.NewLineBeforeCloseBraceInBlockContext = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.AnyIncludingMultilineComments, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsMultilineBlockContext), 4)); + this.NoSpaceAfterUnaryPrefixOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.UnaryPrefixOperators, formatting.Shared.TokenRange.UnaryPrefixExpressions), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.NoSpaceAfterUnaryPreincrementOperator = new formatting.Rule(formatting.RuleDescriptor.create3(38, formatting.Shared.TokenRange.UnaryPreincrementExpressions), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterUnaryPredecrementOperator = new formatting.Rule(formatting.RuleDescriptor.create3(39, formatting.Shared.TokenRange.UnaryPredecrementExpressions), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeUnaryPostincrementOperator = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.UnaryPostincrementExpressions, 38), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeUnaryPostdecrementOperator = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.UnaryPostdecrementExpressions, 39), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterPostincrementWhenFollowedByAdd = new formatting.Rule(formatting.RuleDescriptor.create1(38, 33), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterAddWhenFollowedByUnaryPlus = new formatting.Rule(formatting.RuleDescriptor.create1(33, 33), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterAddWhenFollowedByPreincrement = new formatting.Rule(formatting.RuleDescriptor.create1(33, 38), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterPostdecrementWhenFollowedBySubtract = new formatting.Rule(formatting.RuleDescriptor.create1(39, 34), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(34, 34), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34, 39), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98, 94, 88, 74, 90, 97]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105, 70]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2)); + this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8)); + this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8)); + this.SpaceAfterVoidOperator = new formatting.Rule(formatting.RuleDescriptor.create3(99, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsVoidOpContext), 2)); + this.NoSpaceBetweenReturnAndSemicolon = new formatting.Rule(formatting.RuleDescriptor.create1(90, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceBetweenStatements = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([17, 75, 76, 67]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotForContext), 2)); + this.SpaceAfterTryFinally = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([96, 81]), 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterGetSetInMember = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([116, 120]), 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.SpaceBeforeBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryKeywordOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryKeywordOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(114, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117, 118]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69, 115, 77, 78, 79, 116, 103, 85, 104, 117, 107, 109, 120, 110]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79, 103])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2)); + this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(32, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterOptionalParameters = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.FromTokens([17, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.NoSpaceBeforeOpenAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.TypeNames, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); + this.NoSpaceBetweenCloseParenAndAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create1(17, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); + this.NoSpaceAfterOpenAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create3(24, formatting.Shared.TokenRange.TypeNames), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); + this.NoSpaceBeforeCloseAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 25), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); + this.NoSpaceAfterCloseAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create3(25, formatting.Shared.TokenRange.FromTokens([16, 18, 25, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); + this.NoSpaceBetweenEmptyInterfaceBraceBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(14, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsObjectTypeContext), 8)); + this.HighPriorityCommonRules = + [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket + ]; + this.LowPriorityCommonRules = + [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, this.NoSpaceAfterOpenBracket, + this.NoSpaceBeforeCloseBracket, this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; + this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.SpaceAfterBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); + this.NoSpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 8)); + this.NoSpaceAfterBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 8)); + this.SpaceAfterKeywordInControl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Keywords, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext), 2)); + this.NoSpaceAfterKeywordInControl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Keywords, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext), 8)); + this.NewLineBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeMultilineBlockContext), 4), 1); + this.NewLineBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsBeforeMultilineBlockContext), 4), 1); + this.NewLineBeforeOpenBraceInControl = new formatting.Rule(formatting.RuleDescriptor.create2(this.ControlOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext, Rules.IsBeforeMultilineBlockContext), 4), 1); + this.SpaceAfterSemicolonInFor = new formatting.Rule(formatting.RuleDescriptor.create3(22, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsForContext), 2)); + this.NoSpaceAfterSemicolonInFor = new formatting.Rule(formatting.RuleDescriptor.create3(22, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsForContext), 8)); + this.SpaceAfterOpenParen = new formatting.Rule(formatting.RuleDescriptor.create3(16, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBeforeCloseParen = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceBetweenParens = new formatting.Rule(formatting.RuleDescriptor.create1(16, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterOpenParen = new formatting.Rule(formatting.RuleDescriptor.create3(16, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceBeforeCloseParen = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); + } + Rules.prototype.getRuleName = function (rule) { + var o = this; + for (var name_19 in o) { + if (o[name_19] === rule) { + return name_19; + } + } + throw new Error("Unknown rule"); + }; + Rules.IsForContext = function (context) { + return context.contextNode.kind === 186; + }; + Rules.IsNotForContext = function (context) { + return !Rules.IsForContext(context); + }; + Rules.IsBinaryOpContext = function (context) { + switch (context.contextNode.kind) { + case 169: + case 170: + return true; + case 208: + case 198: + case 129: + case 226: + case 132: + case 131: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; + case 187: + return context.currentTokenSpan.kind === 86 || context.nextTokenSpan.kind === 86; + case 188: + return context.currentTokenSpan.kind === 125 || context.nextTokenSpan.kind === 125; + case 152: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; + } + return false; + }; + Rules.IsNotBinaryOpContext = function (context) { + return !Rules.IsBinaryOpContext(context); + }; + Rules.IsConditionalOperatorContext = function (context) { + return context.contextNode.kind === 170; + }; + Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { + //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. + //// + //// Ex: + //// if (1) { .... + //// * ) and { are on the same line so apply the rule. Here we don't care whether it's same or multi block context + //// + //// Ex: + //// if (1) + //// { ... } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we don't format. + //// + //// Ex: + //// if (1) + //// { ... + //// } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we format. + return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); + }; + Rules.IsBeforeMultilineBlockContext = function (context) { + return Rules.IsBeforeBlockContext(context) && !(context.NextNodeAllOnSameLine() || context.NextNodeBlockIsOnOneLine()); + }; + Rules.IsMultilineBlockContext = function (context) { + return Rules.IsBlockContext(context) && !(context.ContextNodeAllOnSameLine() || context.ContextNodeBlockIsOnOneLine()); + }; + Rules.IsSingleLineBlockContext = function (context) { + return Rules.IsBlockContext(context) && (context.ContextNodeAllOnSameLine() || context.ContextNodeBlockIsOnOneLine()); + }; + Rules.IsBlockContext = function (context) { + return Rules.NodeIsBlockContext(context.contextNode); + }; + Rules.IsBeforeBlockContext = function (context) { + return Rules.NodeIsBlockContext(context.nextTokenParent); + }; + Rules.NodeIsBlockContext = function (node) { + if (Rules.NodeIsTypeScriptDeclWithBlockContext(node)) { + return true; + } + switch (node.kind) { + case 179: + case 207: + case 154: + case 206: + return true; + } + return false; + }; + Rules.IsFunctionDeclContext = function (context) { + switch (context.contextNode.kind) { + case 200: + case 134: + case 133: + case 136: + case 137: + case 138: + case 162: + case 135: + case 163: + case 202: + return true; + } + return false; + }; + Rules.IsTypeScriptDeclWithBlockContext = function (context) { + return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); + }; + Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { + switch (node.kind) { + case 201: + case 202: + case 204: + case 145: + case 205: + return true; + } + return false; + }; + Rules.IsAfterCodeBlockContext = function (context) { + switch (context.currentTokenParent.kind) { + case 201: + case 205: + case 204: + case 179: + case 223: + case 206: + case 193: + return true; + } + return false; + }; + Rules.IsControlDeclContext = function (context) { + switch (context.contextNode.kind) { + case 183: + case 193: + case 186: + case 187: + case 188: + case 185: + case 196: + case 184: + case 192: + case 223: + return true; + default: + return false; + } + }; + Rules.IsObjectContext = function (context) { + return context.contextNode.kind === 154; + }; + Rules.IsFunctionCallContext = function (context) { + return context.contextNode.kind === 157; + }; + Rules.IsNewContext = function (context) { + return context.contextNode.kind === 158; + }; + Rules.IsFunctionCallOrNewContext = function (context) { + return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); + }; + Rules.IsPreviousTokenNotComma = function (context) { + return context.currentTokenSpan.kind !== 23; + }; + Rules.IsSameLineTokenContext = function (context) { + return context.TokensAreOnSameLine(); + }; + Rules.IsStartOfVariableDeclarationList = function (context) { + return context.currentTokenParent.kind === 199 && + context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; + }; + Rules.IsNotFormatOnEnter = function (context) { + return context.formattingRequestKind != 2; + }; + Rules.IsModuleDeclContext = function (context) { + return context.contextNode.kind === 205; + }; + Rules.IsObjectTypeContext = function (context) { + return context.contextNode.kind === 145; + }; + Rules.IsTypeArgumentOrParameter = function (token, parent) { + if (token.kind !== 24 && token.kind !== 25) { + return false; + } + switch (parent.kind) { + case 141: + case 201: + case 202: + case 200: + case 162: + case 163: + case 134: + case 133: + case 138: + case 139: + case 157: + case 158: + return true; + default: + return false; + } + }; + Rules.IsTypeArgumentOrParameterContext = function (context) { + return Rules.IsTypeArgumentOrParameter(context.currentTokenSpan, context.currentTokenParent) || + Rules.IsTypeArgumentOrParameter(context.nextTokenSpan, context.nextTokenParent); + }; + Rules.IsVoidOpContext = function (context) { + return context.currentTokenSpan.kind === 99 && context.currentTokenParent.kind === 166; + }; + return Rules; + })(); + formatting.Rules = Rules; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var RulesMap = (function () { + function RulesMap() { + this.map = []; + this.mapRowLength = 0; + } + RulesMap.create = function (rules) { + var result = new RulesMap(); + result.Initialize(rules); + return result; + }; + RulesMap.prototype.Initialize = function (rules) { + this.mapRowLength = 125 + 1; + this.map = new Array(this.mapRowLength * this.mapRowLength); + var rulesBucketConstructionStateList = new Array(this.map.length); + this.FillRules(rules, rulesBucketConstructionStateList); + return this.map; + }; + RulesMap.prototype.FillRules = function (rules, rulesBucketConstructionStateList) { + var _this = this; + rules.forEach(function (rule) { + _this.FillRule(rule, rulesBucketConstructionStateList); + }); + }; + RulesMap.prototype.GetRuleBucketIndex = function (row, column) { + var rulesBucketIndex = (row * this.mapRowLength) + column; + return rulesBucketIndex; + }; + RulesMap.prototype.FillRule = function (rule, rulesBucketConstructionStateList) { + var _this = this; + var specificRule = rule.Descriptor.LeftTokenRange != formatting.Shared.TokenRange.Any && + rule.Descriptor.RightTokenRange != formatting.Shared.TokenRange.Any; + rule.Descriptor.LeftTokenRange.GetTokens().forEach(function (left) { + rule.Descriptor.RightTokenRange.GetTokens().forEach(function (right) { + var rulesBucketIndex = _this.GetRuleBucketIndex(left, right); + var rulesBucket = _this.map[rulesBucketIndex]; + if (rulesBucket == undefined) { + rulesBucket = _this.map[rulesBucketIndex] = new RulesBucket(); + } + rulesBucket.AddRule(rule, specificRule, rulesBucketConstructionStateList, rulesBucketIndex); + }); + }); + }; + RulesMap.prototype.GetRule = function (context) { + var bucketIndex = this.GetRuleBucketIndex(context.currentTokenSpan.kind, context.nextTokenSpan.kind); + var bucket = this.map[bucketIndex]; + if (bucket != null) { + for (var _i = 0, _a = bucket.Rules(); _i < _a.length; _i++) { + var rule = _a[_i]; + if (rule.Operation.Context.InContext(context)) { + return rule; + } + } + } + return null; + }; + return RulesMap; + })(); + formatting.RulesMap = RulesMap; + var MaskBitSize = 5; + var Mask = 0x1f; + (function (RulesPosition) { + RulesPosition[RulesPosition["IgnoreRulesSpecific"] = 0] = "IgnoreRulesSpecific"; + RulesPosition[RulesPosition["IgnoreRulesAny"] = MaskBitSize * 1] = "IgnoreRulesAny"; + RulesPosition[RulesPosition["ContextRulesSpecific"] = MaskBitSize * 2] = "ContextRulesSpecific"; + RulesPosition[RulesPosition["ContextRulesAny"] = MaskBitSize * 3] = "ContextRulesAny"; + RulesPosition[RulesPosition["NoContextRulesSpecific"] = MaskBitSize * 4] = "NoContextRulesSpecific"; + RulesPosition[RulesPosition["NoContextRulesAny"] = MaskBitSize * 5] = "NoContextRulesAny"; + })(formatting.RulesPosition || (formatting.RulesPosition = {})); + var RulesPosition = formatting.RulesPosition; + var RulesBucketConstructionState = (function () { + function RulesBucketConstructionState() { + this.rulesInsertionIndexBitmap = 0; + } + RulesBucketConstructionState.prototype.GetInsertionIndex = function (maskPosition) { + var index = 0; + var pos = 0; + var indexBitmap = this.rulesInsertionIndexBitmap; + while (pos <= maskPosition) { + index += (indexBitmap & Mask); + indexBitmap >>= MaskBitSize; + pos += MaskBitSize; + } + return index; + }; + RulesBucketConstructionState.prototype.IncreaseInsertionIndex = function (maskPosition) { + var value = (this.rulesInsertionIndexBitmap >> maskPosition) & Mask; + value++; + ts.Debug.assert((value & Mask) == value, "Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules."); + var temp = this.rulesInsertionIndexBitmap & ~(Mask << maskPosition); + temp |= value << maskPosition; + this.rulesInsertionIndexBitmap = temp; + }; + return RulesBucketConstructionState; + })(); + formatting.RulesBucketConstructionState = RulesBucketConstructionState; + var RulesBucket = (function () { + function RulesBucket() { + this.rules = []; + } + RulesBucket.prototype.Rules = function () { + return this.rules; + }; + RulesBucket.prototype.AddRule = function (rule, specificTokens, constructionState, rulesBucketIndex) { + var position; + if (rule.Operation.Action == 1) { + position = specificTokens ? + RulesPosition.IgnoreRulesSpecific : + RulesPosition.IgnoreRulesAny; + } + else if (!rule.Operation.Context.IsAny()) { + position = specificTokens ? + RulesPosition.ContextRulesSpecific : + RulesPosition.ContextRulesAny; + } + else { + position = specificTokens ? + RulesPosition.NoContextRulesSpecific : + RulesPosition.NoContextRulesAny; + } + var state = constructionState[rulesBucketIndex]; + if (state === undefined) { + state = constructionState[rulesBucketIndex] = new RulesBucketConstructionState(); + } + var index = state.GetInsertionIndex(position); + this.rules.splice(index, 0, rule); + state.IncreaseInsertionIndex(position); + }; + return RulesBucket; + })(); + formatting.RulesBucket = RulesBucket; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var Shared; + (function (Shared) { + var TokenRangeAccess = (function () { + function TokenRangeAccess(from, to, except) { + this.tokens = []; + for (var token = from; token <= to; token++) { + if (except.indexOf(token) < 0) { + this.tokens.push(token); + } + } + } + TokenRangeAccess.prototype.GetTokens = function () { + return this.tokens; + }; + TokenRangeAccess.prototype.Contains = function (token) { + return this.tokens.indexOf(token) >= 0; + }; + return TokenRangeAccess; + })(); + Shared.TokenRangeAccess = TokenRangeAccess; + var TokenValuesAccess = (function () { + function TokenValuesAccess(tks) { + this.tokens = tks && tks.length ? tks : []; + } + TokenValuesAccess.prototype.GetTokens = function () { + return this.tokens; + }; + TokenValuesAccess.prototype.Contains = function (token) { + return this.tokens.indexOf(token) >= 0; + }; + return TokenValuesAccess; + })(); + Shared.TokenValuesAccess = TokenValuesAccess; + var TokenSingleValueAccess = (function () { + function TokenSingleValueAccess(token) { + this.token = token; + } + TokenSingleValueAccess.prototype.GetTokens = function () { + return [this.token]; + }; + TokenSingleValueAccess.prototype.Contains = function (tokenValue) { + return tokenValue == this.token; + }; + return TokenSingleValueAccess; + })(); + Shared.TokenSingleValueAccess = TokenSingleValueAccess; + var TokenAllAccess = (function () { + function TokenAllAccess() { + } + TokenAllAccess.prototype.GetTokens = function () { + var result = []; + for (var token = 0; token <= 125; token++) { + result.push(token); + } + return result; + }; + TokenAllAccess.prototype.Contains = function (tokenValue) { + return true; + }; + TokenAllAccess.prototype.toString = function () { + return "[allTokens]"; + }; + return TokenAllAccess; + })(); + Shared.TokenAllAccess = TokenAllAccess; + var TokenRange = (function () { + function TokenRange(tokenAccess) { + this.tokenAccess = tokenAccess; + } + TokenRange.FromToken = function (token) { + return new TokenRange(new TokenSingleValueAccess(token)); + }; + TokenRange.FromTokens = function (tokens) { + return new TokenRange(new TokenValuesAccess(tokens)); + }; + TokenRange.FromRange = function (f, to, except) { + if (except === void 0) { except = []; } + return new TokenRange(new TokenRangeAccess(f, to, except)); + }; + TokenRange.AllTokens = function () { + return new TokenRange(new TokenAllAccess()); + }; + TokenRange.prototype.GetTokens = function () { + return this.tokenAccess.GetTokens(); + }; + TokenRange.prototype.Contains = function (token) { + return this.tokenAccess.Contains(token); + }; + TokenRange.prototype.toString = function () { + return this.tokenAccess.toString(); + }; + TokenRange.Any = TokenRange.AllTokens(); + TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3])); + TokenRange.Keywords = TokenRange.FromRange(66, 125); + TokenRange.BinaryOperators = TokenRange.FromRange(24, 64); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([86, 87, 125]); + TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([38, 39, 47, 46]); + TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([7, 65, 16, 18, 14, 93, 88]); + TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostincrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); + TokenRange.UnaryPredecrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostdecrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); + TokenRange.Comments = TokenRange.FromTokens([2, 3]); + TokenRange.TypeNames = TokenRange.FromTokens([65, 119, 121, 113, 122, 99, 112]); + return TokenRange; + })(); + Shared.TokenRange = TokenRange; + })(Shared = formatting.Shared || (formatting.Shared = {})); + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var RulesProvider = (function () { + function RulesProvider() { + this.globalRules = new formatting.Rules(); + } + RulesProvider.prototype.getRuleName = function (rule) { + return this.globalRules.getRuleName(rule); + }; + RulesProvider.prototype.getRuleByName = function (name) { + return this.globalRules[name]; + }; + RulesProvider.prototype.getRulesMap = function () { + return this.rulesMap; + }; + RulesProvider.prototype.ensureUpToDate = function (options) { + if (this.options == null || !ts.compareDataObjects(this.options, options)) { + var activeRules = this.createActiveRules(options); + var rulesMap = formatting.RulesMap.create(activeRules); + this.activeRules = activeRules; + this.rulesMap = rulesMap; + this.options = ts.clone(options); + } + }; + RulesProvider.prototype.createActiveRules = function (options) { + var rules = this.globalRules.HighPriorityCommonRules.slice(0); + if (options.InsertSpaceAfterCommaDelimiter) { + rules.push(this.globalRules.SpaceAfterComma); + } + else { + rules.push(this.globalRules.NoSpaceAfterComma); + } + if (options.InsertSpaceAfterFunctionKeywordForAnonymousFunctions) { + rules.push(this.globalRules.SpaceAfterAnonymousFunctionKeyword); + } + else { + rules.push(this.globalRules.NoSpaceAfterAnonymousFunctionKeyword); + } + if (options.InsertSpaceAfterKeywordsInControlFlowStatements) { + rules.push(this.globalRules.SpaceAfterKeywordInControl); + } + else { + rules.push(this.globalRules.NoSpaceAfterKeywordInControl); + } + if (options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis) { + rules.push(this.globalRules.SpaceAfterOpenParen); + rules.push(this.globalRules.SpaceBeforeCloseParen); + rules.push(this.globalRules.NoSpaceBetweenParens); + } + else { + rules.push(this.globalRules.NoSpaceAfterOpenParen); + rules.push(this.globalRules.NoSpaceBeforeCloseParen); + rules.push(this.globalRules.NoSpaceBetweenParens); + } + if (options.InsertSpaceAfterSemicolonInForStatements) { + rules.push(this.globalRules.SpaceAfterSemicolonInFor); + } + else { + rules.push(this.globalRules.NoSpaceAfterSemicolonInFor); + } + if (options.InsertSpaceBeforeAndAfterBinaryOperators) { + rules.push(this.globalRules.SpaceBeforeBinaryOperator); + rules.push(this.globalRules.SpaceAfterBinaryOperator); + } + else { + rules.push(this.globalRules.NoSpaceBeforeBinaryOperator); + rules.push(this.globalRules.NoSpaceAfterBinaryOperator); + } + if (options.PlaceOpenBraceOnNewLineForControlBlocks) { + rules.push(this.globalRules.NewLineBeforeOpenBraceInControl); + } + if (options.PlaceOpenBraceOnNewLineForFunctions) { + rules.push(this.globalRules.NewLineBeforeOpenBraceInFunction); + rules.push(this.globalRules.NewLineBeforeOpenBraceInTypeScriptDeclWithBlock); + } + rules = rules.concat(this.globalRules.LowPriorityCommonRules); + return rules; + }; + return RulesProvider; + })(); + formatting.RulesProvider = RulesProvider; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +/// +/// +/// +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + function formatOnEnter(position, sourceFile, rulesProvider, options) { + var line = sourceFile.getLineAndCharacterOfPosition(position).line; + if (line === 0) { + return []; + } + var span = { + pos: ts.getStartPositionOfLine(line - 1, sourceFile), + end: ts.getEndLinePosition(line, sourceFile) + 1 + }; + return formatSpan(span, sourceFile, options, rulesProvider, 2); + } + formatting.formatOnEnter = formatOnEnter; + function formatOnSemicolon(position, sourceFile, rulesProvider, options) { + return formatOutermostParent(position, 22, sourceFile, options, rulesProvider, 3); + } + formatting.formatOnSemicolon = formatOnSemicolon; + function formatOnClosingCurly(position, sourceFile, rulesProvider, options) { + return formatOutermostParent(position, 15, sourceFile, options, rulesProvider, 4); + } + formatting.formatOnClosingCurly = formatOnClosingCurly; + function formatDocument(sourceFile, rulesProvider, options) { + var span = { + pos: 0, + end: sourceFile.text.length + }; + return formatSpan(span, sourceFile, options, rulesProvider, 0); + } + formatting.formatDocument = formatDocument; + function formatSelection(start, end, sourceFile, rulesProvider, options) { + var span = { + pos: ts.getLineStartPositionForPosition(start, sourceFile), + end: end + }; + return formatSpan(span, sourceFile, options, rulesProvider, 1); + } + formatting.formatSelection = formatSelection; + function formatOutermostParent(position, expectedLastToken, sourceFile, options, rulesProvider, requestKind) { + var parent = findOutermostParent(position, expectedLastToken, sourceFile); + if (!parent) { + return []; + } + var span = { + pos: ts.getLineStartPositionForPosition(parent.getStart(sourceFile), sourceFile), + end: parent.end + }; + return formatSpan(span, sourceFile, options, rulesProvider, requestKind); + } + function findOutermostParent(position, expectedTokenKind, sourceFile) { + var precedingToken = ts.findPrecedingToken(position, sourceFile); + if (!precedingToken || + precedingToken.kind !== expectedTokenKind || + position !== precedingToken.getEnd()) { + return undefined; + } + var current = precedingToken; + while (current && + current.parent && + current.parent.end === precedingToken.end && + !isListElement(current.parent, current)) { + current = current.parent; + } + return current; + } + function isListElement(parent, node) { + switch (parent.kind) { + case 201: + case 202: + return ts.rangeContainsRange(parent.members, node); + case 205: + var body = parent.body; + return body && body.kind === 179 && ts.rangeContainsRange(body.statements, node); + case 227: + case 179: + case 206: + return ts.rangeContainsRange(parent.statements, node); + case 223: + return ts.rangeContainsRange(parent.block.statements, node); + } + return false; + } + function findEnclosingNode(range, sourceFile) { + return find(sourceFile); + function find(n) { + var candidate = ts.forEachChild(n, function (c) { return ts.startEndContainsRange(c.getStart(sourceFile), c.end, range) && c; }); + if (candidate) { + var result = find(candidate); + if (result) { + return result; + } + } + return n; + } + } + function prepareRangeContainsErrorFunction(errors, originalRange) { + if (!errors.length) { + return rangeHasNoErrors; + } + var sorted = errors + .filter(function (d) { return ts.rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length); }) + .sort(function (e1, e2) { return e1.start - e2.start; }); + if (!sorted.length) { + return rangeHasNoErrors; + } + var index = 0; + return function (r) { + while (true) { + if (index >= sorted.length) { + return false; + } + var error = sorted[index]; + if (r.end <= error.start) { + return false; + } + if (ts.startEndOverlapsWithStartEnd(r.pos, r.end, error.start, error.start + error.length)) { + return true; + } + index++; + } + }; + function rangeHasNoErrors(r) { + return false; + } + } + function getScanStartPosition(enclosingNode, originalRange, sourceFile) { + var start = enclosingNode.getStart(sourceFile); + if (start === originalRange.pos && enclosingNode.end === originalRange.end) { + return start; + } + var precedingToken = ts.findPrecedingToken(originalRange.pos, sourceFile); + if (!precedingToken) { + return enclosingNode.pos; + } + if (precedingToken.end >= originalRange.pos) { + return enclosingNode.pos; + } + return precedingToken.end; + } + function getOwnOrInheritedDelta(n, options, sourceFile) { + var previousLine = -1; + var childKind = 0; + while (n) { + var line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; + if (previousLine !== -1 && line !== previousLine) { + break; + } + if (formatting.SmartIndenter.shouldIndentChildNode(n.kind, childKind)) { + return options.IndentSize; + } + previousLine = line; + childKind = n.kind; + n = n.parent; + } + return 0; + } + function formatSpan(originalRange, sourceFile, options, rulesProvider, requestKind) { + var rangeContainsError = prepareRangeContainsErrorFunction(sourceFile.parseDiagnostics, originalRange); + var formattingContext = new formatting.FormattingContext(sourceFile, requestKind); + var enclosingNode = findEnclosingNode(originalRange, sourceFile); + var formattingScanner = formatting.getFormattingScanner(sourceFile, getScanStartPosition(enclosingNode, originalRange, sourceFile), originalRange.end); + var initialIndentation = formatting.SmartIndenter.getIndentationForNode(enclosingNode, originalRange, sourceFile, options); + var previousRangeHasError; + var previousRange; + var previousParent; + var previousRangeStartLine; + var edits = []; + formattingScanner.advance(); + if (formattingScanner.isOnToken()) { + var startLine = sourceFile.getLineAndCharacterOfPosition(enclosingNode.getStart(sourceFile)).line; + var delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); + processNode(enclosingNode, enclosingNode, startLine, initialIndentation, delta); + } + formattingScanner.close(); + return edits; + function tryComputeIndentationForListItem(startPos, endPos, parentStartLine, range, inheritedIndentation) { + if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos)) { + if (inheritedIndentation !== -1) { + return inheritedIndentation; + } + } + else { + var startLine = sourceFile.getLineAndCharacterOfPosition(startPos).line; + var startLinePosition = ts.getLineStartPositionForPosition(startPos, sourceFile); + var column = formatting.SmartIndenter.findFirstNonWhitespaceColumn(startLinePosition, startPos, sourceFile, options); + if (startLine !== parentStartLine || startPos === column) { + return column; + } + } + return -1; + } + function computeIndentation(node, startLine, inheritedIndentation, parent, parentDynamicIndentation, effectiveParentStartLine) { + var indentation = inheritedIndentation; + if (indentation === -1) { + if (isSomeBlock(node.kind)) { + if (isSomeBlock(parent.kind) || + parent.kind === 227 || + parent.kind === 220 || + parent.kind === 221) { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); + } + else { + indentation = parentDynamicIndentation.getIndentation(); + } + } + else { + if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); + } + } + } + var delta = formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0) ? options.IndentSize : 0; + if (effectiveParentStartLine === startLine) { + indentation = parentDynamicIndentation.getIndentation(); + delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta() + delta); + } + return { + indentation: indentation, + delta: delta + }; + } + function getFirstNonDecoratorTokenOfNode(node) { + if (node.modifiers && node.modifiers.length) { + return node.modifiers[0].kind; + } + switch (node.kind) { + case 201: return 69; + case 202: return 104; + case 200: return 83; + case 204: return 204; + case 136: return 116; + case 137: return 120; + case 134: + if (node.asteriskToken) { + return 35; + } + case 132: + case 129: + return node.name.kind; + } + } + function getDynamicIndentation(node, nodeStartLine, indentation, delta) { + return { + getIndentationForComment: function (kind) { + switch (kind) { + case 15: + case 19: + return indentation + delta; + } + return indentation; + }, + getIndentationForToken: function (line, kind) { + if (nodeStartLine !== line && node.decorators) { + if (kind === getFirstNonDecoratorTokenOfNode(node)) { + return indentation; + } + } + switch (kind) { + case 14: + case 15: + case 18: + case 19: + case 76: + case 100: + case 52: + return indentation; + default: + return nodeStartLine !== line ? indentation + delta : indentation; + } + }, + getIndentation: function () { return indentation; }, + getDelta: function () { return delta; }, + recomputeIndentation: function (lineAdded) { + if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent.kind, node.kind)) { + if (lineAdded) { + indentation += options.IndentSize; + } + else { + indentation -= options.IndentSize; + } + if (formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0)) { + delta = options.IndentSize; + } + else { + delta = 0; + } + } + } + }; + } + function processNode(node, contextNode, nodeStartLine, indentation, delta) { + if (!ts.rangeOverlapsWithStartEnd(originalRange, node.getStart(sourceFile), node.getEnd())) { + return; + } + var nodeDynamicIndentation = getDynamicIndentation(node, nodeStartLine, indentation, delta); + var childContextNode = contextNode; + ts.forEachChild(node, function (child) { + processChildNode(child, -1, node, nodeDynamicIndentation, nodeStartLine, false); + }, function (nodes) { + processChildNodes(nodes, node, nodeStartLine, nodeDynamicIndentation); + }); + while (formattingScanner.isOnToken()) { + var tokenInfo = formattingScanner.readTokenInfo(node); + if (tokenInfo.token.end > node.end) { + break; + } + consumeTokenAndAdvanceScanner(tokenInfo, node, nodeDynamicIndentation); + } + function processChildNode(child, inheritedIndentation, parent, parentDynamicIndentation, parentStartLine, isListItem) { + var childStartPos = child.getStart(sourceFile); + var childStart = sourceFile.getLineAndCharacterOfPosition(childStartPos); + var childIndentationAmount = -1; + if (isListItem) { + childIndentationAmount = tryComputeIndentationForListItem(childStartPos, child.end, parentStartLine, originalRange, inheritedIndentation); + if (childIndentationAmount !== -1) { + inheritedIndentation = childIndentationAmount; + } + } + if (!ts.rangeOverlapsWithStartEnd(originalRange, child.pos, child.end)) { + return inheritedIndentation; + } + if (child.getFullWidth() === 0) { + return inheritedIndentation; + } + while (formattingScanner.isOnToken()) { + var tokenInfo = formattingScanner.readTokenInfo(node); + if (tokenInfo.token.end > childStartPos) { + break; + } + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + } + if (!formattingScanner.isOnToken()) { + return inheritedIndentation; + } + if (ts.isToken(child)) { + var tokenInfo = formattingScanner.readTokenInfo(child); + ts.Debug.assert(tokenInfo.token.end === child.end); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + return inheritedIndentation; + } + var childIndentation = computeIndentation(child, childStart.line, childIndentationAmount, node, parentDynamicIndentation, parentStartLine); + processNode(child, childContextNode, childStart.line, childIndentation.indentation, childIndentation.delta); + childContextNode = node; + return inheritedIndentation; + } + function processChildNodes(nodes, parent, parentStartLine, parentDynamicIndentation) { + var listStartToken = getOpenTokenForList(parent, nodes); + var listEndToken = getCloseTokenForOpenToken(listStartToken); + var listDynamicIndentation = parentDynamicIndentation; + var startLine = parentStartLine; + if (listStartToken !== 0) { + while (formattingScanner.isOnToken()) { + var tokenInfo = formattingScanner.readTokenInfo(parent); + if (tokenInfo.token.end > nodes.pos) { + break; + } + else if (tokenInfo.token.kind === listStartToken) { + startLine = sourceFile.getLineAndCharacterOfPosition(tokenInfo.token.pos).line; + var indentation_1 = computeIndentation(tokenInfo.token, startLine, -1, parent, parentDynamicIndentation, startLine); + listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation_1.indentation, indentation_1.delta); + consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation); + } + else { + consumeTokenAndAdvanceScanner(tokenInfo, parent, parentDynamicIndentation); + } + } + } + var inheritedIndentation = -1; + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, true); + } + if (listEndToken !== 0) { + if (formattingScanner.isOnToken()) { + var tokenInfo = formattingScanner.readTokenInfo(parent); + if (tokenInfo.token.kind === listEndToken && ts.rangeContainsRange(parent, tokenInfo.token)) { + consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation); + } + } + } + } + function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation) { + ts.Debug.assert(ts.rangeContainsRange(parent, currentTokenInfo.token)); + var lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); + var indentToken = false; + if (currentTokenInfo.leadingTrivia) { + processTrivia(currentTokenInfo.leadingTrivia, parent, childContextNode, dynamicIndentation); + } + var lineAdded; + var isTokenInRange = ts.rangeContainsRange(originalRange, currentTokenInfo.token); + var tokenStart = sourceFile.getLineAndCharacterOfPosition(currentTokenInfo.token.pos); + if (isTokenInRange) { + var rangeHasError = rangeContainsError(currentTokenInfo.token); + var prevStartLine = previousRangeStartLine; + lineAdded = processRange(currentTokenInfo.token, tokenStart, parent, childContextNode, dynamicIndentation); + if (rangeHasError) { + indentToken = false; + } + else { + if (lineAdded !== undefined) { + indentToken = lineAdded; + } + else { + indentToken = lastTriviaWasNewLine && tokenStart.line !== prevStartLine; + } + } + } + if (currentTokenInfo.trailingTrivia) { + processTrivia(currentTokenInfo.trailingTrivia, parent, childContextNode, dynamicIndentation); + } + if (indentToken) { + var indentNextTokenOrTrivia = true; + if (currentTokenInfo.leadingTrivia) { + for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { + var triviaItem = _a[_i]; + if (!ts.rangeContainsRange(originalRange, triviaItem)) { + continue; + } + var triviaStartLine = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos).line; + switch (triviaItem.kind) { + case 3: + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + indentMultilineComment(triviaItem, commentIndentation, !indentNextTokenOrTrivia); + indentNextTokenOrTrivia = false; + break; + case 2: + if (indentNextTokenOrTrivia) { + var commentIndentation_1 = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + insertIndentation(triviaItem.pos, commentIndentation_1, false); + indentNextTokenOrTrivia = false; + } + break; + case 4: + indentNextTokenOrTrivia = true; + break; + } + } + } + if (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) { + var tokenIndentation = dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind); + insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); + } + } + formattingScanner.advance(); + childContextNode = parent; + } + } + function processTrivia(trivia, parent, contextNode, dynamicIndentation) { + for (var _i = 0; _i < trivia.length; _i++) { + var triviaItem = trivia[_i]; + if (ts.isComment(triviaItem.kind) && ts.rangeContainsRange(originalRange, triviaItem)) { + var triviaItemStart = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos); + processRange(triviaItem, triviaItemStart, parent, contextNode, dynamicIndentation); + } + } + } + function processRange(range, rangeStart, parent, contextNode, dynamicIndentation) { + var rangeHasError = rangeContainsError(range); + var lineAdded; + if (!rangeHasError && !previousRangeHasError) { + if (!previousRange) { + var originalStart = sourceFile.getLineAndCharacterOfPosition(originalRange.pos); + trimTrailingWhitespacesForLines(originalStart.line, rangeStart.line); + } + else { + lineAdded = + processPair(range, rangeStart.line, parent, previousRange, previousRangeStartLine, previousParent, contextNode, dynamicIndentation); + } + } + previousRange = range; + previousParent = parent; + previousRangeStartLine = rangeStart.line; + previousRangeHasError = rangeHasError; + return lineAdded; + } + function processPair(currentItem, currentStartLine, currentParent, previousItem, previousStartLine, previousParent, contextNode, dynamicIndentation) { + formattingContext.updateContext(previousItem, previousParent, currentItem, currentParent, contextNode); + var rule = rulesProvider.getRulesMap().GetRule(formattingContext); + var trimTrailingWhitespaces; + var lineAdded; + if (rule) { + applyRuleEdits(rule, previousItem, previousStartLine, currentItem, currentStartLine); + if (rule.Operation.Action & (2 | 8) && currentStartLine !== previousStartLine) { + lineAdded = false; + if (currentParent.getStart(sourceFile) === currentItem.pos) { + dynamicIndentation.recomputeIndentation(false); + } + } + else if (rule.Operation.Action & 4 && currentStartLine === previousStartLine) { + lineAdded = true; + if (currentParent.getStart(sourceFile) === currentItem.pos) { + dynamicIndentation.recomputeIndentation(true); + } + } + trimTrailingWhitespaces = + (rule.Operation.Action & (4 | 2)) && + rule.Flag !== 1; + } + else { + trimTrailingWhitespaces = true; + } + if (currentStartLine !== previousStartLine && trimTrailingWhitespaces) { + trimTrailingWhitespacesForLines(previousStartLine, currentStartLine, previousItem); + } + return lineAdded; + } + function insertIndentation(pos, indentation, lineAdded) { + var indentationString = getIndentationString(indentation, options); + if (lineAdded) { + recordReplace(pos, 0, indentationString); + } + else { + var tokenStart = sourceFile.getLineAndCharacterOfPosition(pos); + if (indentation !== tokenStart.character) { + var startLinePosition = ts.getStartPositionOfLine(tokenStart.line, sourceFile); + recordReplace(startLinePosition, tokenStart.character, indentationString); + } + } + } + function indentMultilineComment(commentRange, indentation, firstLineIsIndented) { + var startLine = sourceFile.getLineAndCharacterOfPosition(commentRange.pos).line; + var endLine = sourceFile.getLineAndCharacterOfPosition(commentRange.end).line; + var parts; + if (startLine === endLine) { + if (!firstLineIsIndented) { + insertIndentation(commentRange.pos, indentation, false); + } + return; + } + else { + parts = []; + var startPos = commentRange.pos; + for (var line = startLine; line < endLine; ++line) { + var endOfLine = ts.getEndLinePosition(line, sourceFile); + parts.push({ pos: startPos, end: endOfLine }); + startPos = ts.getStartPositionOfLine(line + 1, sourceFile); + } + parts.push({ pos: startPos, end: commentRange.end }); + } + var startLinePos = ts.getStartPositionOfLine(startLine, sourceFile); + var nonWhitespaceColumnInFirstPart = formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(startLinePos, parts[0].pos, sourceFile, options); + if (indentation === nonWhitespaceColumnInFirstPart.column) { + return; + } + var startIndex = 0; + if (firstLineIsIndented) { + startIndex = 1; + startLine++; + } + var delta = indentation - nonWhitespaceColumnInFirstPart.column; + for (var i = startIndex, len = parts.length; i < len; ++i, ++startLine) { + var startLinePos_1 = ts.getStartPositionOfLine(startLine, sourceFile); + var nonWhitespaceCharacterAndColumn = i === 0 + ? nonWhitespaceColumnInFirstPart + : formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(parts[i].pos, parts[i].end, sourceFile, options); + var newIndentation = nonWhitespaceCharacterAndColumn.column + delta; + if (newIndentation > 0) { + var indentationString = getIndentationString(newIndentation, options); + recordReplace(startLinePos_1, nonWhitespaceCharacterAndColumn.character, indentationString); + } + else { + recordDelete(startLinePos_1, nonWhitespaceCharacterAndColumn.character); + } + } + } + function trimTrailingWhitespacesForLines(line1, line2, range) { + for (var line = line1; line < line2; ++line) { + var lineStartPosition = ts.getStartPositionOfLine(line, sourceFile); + var lineEndPosition = ts.getEndLinePosition(line, sourceFile); + if (range && ts.isComment(range.kind) && range.pos <= lineEndPosition && range.end > lineEndPosition) { + continue; + } + var pos = lineEndPosition; + while (pos >= lineStartPosition && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos--; + } + if (pos !== lineEndPosition) { + ts.Debug.assert(pos === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))); + recordDelete(pos + 1, lineEndPosition - pos); + } + } + } + function newTextChange(start, len, newText) { + return { span: ts.createTextSpan(start, len), newText: newText }; + } + function recordDelete(start, len) { + if (len) { + edits.push(newTextChange(start, len, "")); + } + } + function recordReplace(start, len, newText) { + if (len || newText) { + edits.push(newTextChange(start, len, newText)); + } + } + function applyRuleEdits(rule, previousRange, previousStartLine, currentRange, currentStartLine) { + var between; + switch (rule.Operation.Action) { + case 1: + return; + case 8: + if (previousRange.end !== currentRange.pos) { + recordDelete(previousRange.end, currentRange.pos - previousRange.end); + } + break; + case 4: + if (rule.Flag !== 1 && previousStartLine !== currentStartLine) { + return; + } + var lineDelta = currentStartLine - previousStartLine; + if (lineDelta !== 1) { + recordReplace(previousRange.end, currentRange.pos - previousRange.end, options.NewLineCharacter); + } + break; + case 2: + if (rule.Flag !== 1 && previousStartLine !== currentStartLine) { + return; + } + var posDelta = currentRange.pos - previousRange.end; + if (posDelta !== 1 || sourceFile.text.charCodeAt(previousRange.end) !== 32) { + recordReplace(previousRange.end, currentRange.pos - previousRange.end, " "); + } + break; + } + } + } + function isSomeBlock(kind) { + switch (kind) { + case 179: + case 206: + return true; + } + return false; + } + function getOpenTokenForList(node, list) { + switch (node.kind) { + case 135: + case 200: + case 162: + case 134: + case 133: + case 163: + if (node.typeParameters === list) { + return 24; + } + else if (node.parameters === list) { + return 16; + } + break; + case 157: + case 158: + if (node.typeArguments === list) { + return 24; + } + else if (node.arguments === list) { + return 16; + } + break; + case 141: + if (node.typeArguments === list) { + return 24; + } + } + return 0; + } + function getCloseTokenForOpenToken(kind) { + switch (kind) { + case 16: + return 17; + case 24: + return 25; + } + return 0; + } + var internedSizes; + var internedTabsIndentation; + var internedSpacesIndentation; + function getIndentationString(indentation, options) { + var resetInternedStrings = !internedSizes || (internedSizes.tabSize !== options.TabSize || internedSizes.indentSize !== options.IndentSize); + if (resetInternedStrings) { + internedSizes = { tabSize: options.TabSize, indentSize: options.IndentSize }; + internedTabsIndentation = internedSpacesIndentation = undefined; + } + if (!options.ConvertTabsToSpaces) { + var tabs = Math.floor(indentation / options.TabSize); + var spaces = indentation - tabs * options.TabSize; + var tabString; + if (!internedTabsIndentation) { + internedTabsIndentation = []; + } + if (internedTabsIndentation[tabs] === undefined) { + internedTabsIndentation[tabs] = tabString = repeat('\t', tabs); + } + else { + tabString = internedTabsIndentation[tabs]; + } + return spaces ? tabString + repeat(" ", spaces) : tabString; + } + else { + var spacesString; + var quotient = Math.floor(indentation / options.IndentSize); + var remainder = indentation % options.IndentSize; + if (!internedSpacesIndentation) { + internedSpacesIndentation = []; + } + if (internedSpacesIndentation[quotient] === undefined) { + spacesString = repeat(" ", options.IndentSize * quotient); + internedSpacesIndentation[quotient] = spacesString; + } + else { + spacesString = internedSpacesIndentation[quotient]; + } + return remainder ? spacesString + repeat(" ", remainder) : spacesString; + } + function repeat(value, count) { + var s = ""; + for (var i = 0; i < count; ++i) { + s += value; + } + return s; + } + } + formatting.getIndentationString = getIndentationString; + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +/// +var ts; +(function (ts) { + var formatting; + (function (formatting) { + var SmartIndenter; + (function (SmartIndenter) { + function getIndentation(position, sourceFile, options) { + if (position > sourceFile.text.length) { + return 0; + } + var precedingToken = ts.findPrecedingToken(position, sourceFile); + if (!precedingToken) { + return 0; + } + var precedingTokenIsLiteral = precedingToken.kind === 8 || + precedingToken.kind === 9 || + precedingToken.kind === 10 || + precedingToken.kind === 11 || + precedingToken.kind === 12 || + precedingToken.kind === 13; + if (precedingTokenIsLiteral && precedingToken.getStart(sourceFile) <= position && precedingToken.end > position) { + return 0; + } + var lineAtPosition = sourceFile.getLineAndCharacterOfPosition(position).line; + if (precedingToken.kind === 23 && precedingToken.parent.kind !== 169) { + var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); + if (actualIndentation !== -1) { + return actualIndentation; + } + } + var previous; + var current = precedingToken; + var currentStart; + var indentationDelta; + while (current) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { + currentStart = getStartLineAndCharacterForNode(current, sourceFile); + if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { + indentationDelta = 0; + } + else { + indentationDelta = lineAtPosition !== currentStart.line ? options.IndentSize : 0; + } + break; + } + var actualIndentation = getActualIndentationForListItem(current, sourceFile, options); + if (actualIndentation !== -1) { + return actualIndentation; + } + previous = current; + current = current.parent; + } + if (!current) { + return 0; + } + return getIndentationForNodeWorker(current, currentStart, undefined, indentationDelta, sourceFile, options); + } + SmartIndenter.getIndentation = getIndentation; + function getIndentationForNode(n, ignoreActualIndentationRange, sourceFile, options) { + var start = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); + return getIndentationForNodeWorker(n, start, ignoreActualIndentationRange, 0, sourceFile, options); + } + SmartIndenter.getIndentationForNode = getIndentationForNode; + function getIndentationForNodeWorker(current, currentStart, ignoreActualIndentationRange, indentationDelta, sourceFile, options) { + var parent = current.parent; + var parentStart; + while (parent) { + var useActualIndentation = true; + if (ignoreActualIndentationRange) { + var start = current.getStart(sourceFile); + useActualIndentation = start < ignoreActualIndentationRange.pos || start > ignoreActualIndentationRange.end; + } + if (useActualIndentation) { + var actualIndentation = getActualIndentationForListItem(current, sourceFile, options); + if (actualIndentation !== -1) { + return actualIndentation + indentationDelta; + } + } + parentStart = getParentStart(parent, current, sourceFile); + var parentAndChildShareLine = parentStart.line === currentStart.line || + childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); + if (useActualIndentation) { + var actualIndentation = getActualIndentationForNode(current, parent, currentStart, parentAndChildShareLine, sourceFile, options); + if (actualIndentation !== -1) { + return actualIndentation + indentationDelta; + } + } + if (shouldIndentChildNode(parent.kind, current.kind) && !parentAndChildShareLine) { + indentationDelta += options.IndentSize; + } + current = parent; + currentStart = parentStart; + parent = current.parent; + } + return indentationDelta; + } + function getParentStart(parent, child, sourceFile) { + var containingList = getContainingList(child, sourceFile); + if (containingList) { + return sourceFile.getLineAndCharacterOfPosition(containingList.pos); + } + return sourceFile.getLineAndCharacterOfPosition(parent.getStart(sourceFile)); + } + function getActualIndentationForListItemBeforeComma(commaToken, sourceFile, options) { + var commaItemInfo = ts.findListItemInfo(commaToken); + if (commaItemInfo && commaItemInfo.listItemIndex > 0) { + return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + } + else { + return -1; + } + } + function getActualIndentationForNode(current, parent, currentLineAndChar, parentAndChildShareLine, sourceFile, options) { + var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && + (parent.kind === 227 || !parentAndChildShareLine); + if (!useActualIndentation) { + return -1; + } + return findColumnForFirstNonWhitespaceCharacterInLine(currentLineAndChar, sourceFile, options); + } + function nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile) { + var nextToken = ts.findNextToken(precedingToken, current); + if (!nextToken) { + return false; + } + if (nextToken.kind === 14) { + return true; + } + else if (nextToken.kind === 15) { + var nextTokenStartLine = getStartLineAndCharacterForNode(nextToken, sourceFile).line; + return lineAtPosition === nextTokenStartLine; + } + return false; + } + function getStartLineAndCharacterForNode(n, sourceFile) { + return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); + } + function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { + if (parent.kind === 183 && parent.elseStatement === child) { + var elseKeyword = ts.findChildOfKind(parent, 76, sourceFile); + ts.Debug.assert(elseKeyword !== undefined); + var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; + return elseKeywordStartLine === childStartLine; + } + return false; + } + SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement = childStartsOnTheSameLineWithElseInIfStatement; + function getContainingList(node, sourceFile) { + if (node.parent) { + switch (node.parent.kind) { + case 141: + if (node.parent.typeArguments && + ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { + return node.parent.typeArguments; + } + break; + case 154: + return node.parent.properties; + case 153: + return node.parent.elements; + case 200: + case 162: + case 163: + case 134: + case 133: + case 138: + case 139: { + var start = node.getStart(sourceFile); + if (node.parent.typeParameters && + ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { + return node.parent.typeParameters; + } + if (ts.rangeContainsStartEnd(node.parent.parameters, start, node.getEnd())) { + return node.parent.parameters; + } + break; + } + case 158: + case 157: { + var start = node.getStart(sourceFile); + if (node.parent.typeArguments && + ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { + return node.parent.typeArguments; + } + if (node.parent.arguments && + ts.rangeContainsStartEnd(node.parent.arguments, start, node.getEnd())) { + return node.parent.arguments; + } + break; + } + } + } + return undefined; + } + function getActualIndentationForListItem(node, sourceFile, options) { + var containingList = getContainingList(node, sourceFile); + return containingList ? getActualIndentationFromList(containingList) : -1; + function getActualIndentationFromList(list) { + var index = ts.indexOf(list, node); + return index !== -1 ? deriveActualIndentationFromList(list, index, sourceFile, options) : -1; + } + } + function deriveActualIndentationFromList(list, index, sourceFile, options) { + ts.Debug.assert(index >= 0 && index < list.length); + var node = list[index]; + var lineAndCharacter = getStartLineAndCharacterForNode(node, sourceFile); + for (var i = index - 1; i >= 0; --i) { + if (list[i].kind === 23) { + continue; + } + var prevEndLine = sourceFile.getLineAndCharacterOfPosition(list[i].end).line; + if (prevEndLine !== lineAndCharacter.line) { + return findColumnForFirstNonWhitespaceCharacterInLine(lineAndCharacter, sourceFile, options); + } + lineAndCharacter = getStartLineAndCharacterForNode(list[i], sourceFile); + } + return -1; + } + function findColumnForFirstNonWhitespaceCharacterInLine(lineAndCharacter, sourceFile, options) { + var lineStart = sourceFile.getPositionOfLineAndCharacter(lineAndCharacter.line, 0); + return findFirstNonWhitespaceColumn(lineStart, lineStart + lineAndCharacter.character, sourceFile, options); + } + function findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options) { + var character = 0; + var column = 0; + for (var pos = startPos; pos < endPos; ++pos) { + var ch = sourceFile.text.charCodeAt(pos); + if (!ts.isWhiteSpace(ch)) { + break; + } + if (ch === 9) { + column += options.TabSize + (column % options.TabSize); + } + else { + column++; + } + character++; + } + return { column: column, character: character }; + } + SmartIndenter.findFirstNonWhitespaceCharacterAndColumn = findFirstNonWhitespaceCharacterAndColumn; + function findFirstNonWhitespaceColumn(startPos, endPos, sourceFile, options) { + return findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options).column; + } + SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; + function nodeContentIsAlwaysIndented(kind) { + switch (kind) { + case 201: + case 202: + case 204: + case 153: + case 179: + case 206: + case 154: + case 145: + case 147: + case 207: + case 221: + case 220: + case 161: + case 157: + case 158: + case 180: + case 198: + case 214: + case 191: + case 170: + case 151: + case 150: + return true; + } + return false; + } + function shouldIndentChildNode(parent, child) { + if (nodeContentIsAlwaysIndented(parent)) { + return true; + } + switch (parent) { + case 184: + case 185: + case 187: + case 188: + case 186: + case 183: + case 200: + case 162: + case 134: + case 133: + case 138: + case 163: + case 135: + case 136: + case 137: + return child !== 179; + default: + return false; + } + } + SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; + })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); + })(formatting = ts.formatting || (ts.formatting = {})); +})(ts || (ts = {})); +/// +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +/// +/// +/// +/// +/// +/// +/// +/// +/// +var ts; +(function (ts) { + ts.servicesVersion = "0.4"; + var ScriptSnapshot; + (function (ScriptSnapshot) { + var StringScriptSnapshot = (function () { + function StringScriptSnapshot(text) { + this.text = text; + this._lineStartPositions = undefined; + } + StringScriptSnapshot.prototype.getText = function (start, end) { + return this.text.substring(start, end); + }; + StringScriptSnapshot.prototype.getLength = function () { + return this.text.length; + }; + StringScriptSnapshot.prototype.getChangeRange = function (oldSnapshot) { + return undefined; + }; + return StringScriptSnapshot; + })(); + function fromString(text) { + return new StringScriptSnapshot(text); + } + ScriptSnapshot.fromString = fromString; + })(ScriptSnapshot = ts.ScriptSnapshot || (ts.ScriptSnapshot = {})); + var scanner = ts.createScanner(2, true); + var emptyArray = []; + function createNode(kind, pos, end, flags, parent) { + var node = new (ts.getNodeConstructor(kind))(); + node.pos = pos; + node.end = end; + node.flags = flags; + node.parent = parent; + return node; + } + var NodeObject = (function () { + function NodeObject() { + } + NodeObject.prototype.getSourceFile = function () { + return ts.getSourceFileOfNode(this); + }; + NodeObject.prototype.getStart = function (sourceFile) { + return ts.getTokenPosOfNode(this, sourceFile); + }; + NodeObject.prototype.getFullStart = function () { + return this.pos; + }; + NodeObject.prototype.getEnd = function () { + return this.end; + }; + NodeObject.prototype.getWidth = function (sourceFile) { + return this.getEnd() - this.getStart(sourceFile); + }; + NodeObject.prototype.getFullWidth = function () { + return this.end - this.getFullStart(); + }; + NodeObject.prototype.getLeadingTriviaWidth = function (sourceFile) { + return this.getStart(sourceFile) - this.pos; + }; + NodeObject.prototype.getFullText = function (sourceFile) { + return (sourceFile || this.getSourceFile()).text.substring(this.pos, this.end); + }; + NodeObject.prototype.getText = function (sourceFile) { + return (sourceFile || this.getSourceFile()).text.substring(this.getStart(), this.getEnd()); + }; + NodeObject.prototype.addSyntheticNodes = function (nodes, pos, end) { + scanner.setTextPos(pos); + while (pos < end) { + var token = scanner.scan(); + var textPos = scanner.getTextPos(); + nodes.push(createNode(token, pos, textPos, 1024, this)); + pos = textPos; + } + return pos; + }; + NodeObject.prototype.createSyntaxList = function (nodes) { + var list = createNode(228, nodes.pos, nodes.end, 1024, this); + list._children = []; + var pos = nodes.pos; + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + if (pos < node.pos) { + pos = this.addSyntheticNodes(list._children, pos, node.pos); + } + list._children.push(node); + pos = node.end; + } + if (pos < nodes.end) { + this.addSyntheticNodes(list._children, pos, nodes.end); + } + return list; + }; + NodeObject.prototype.createChildren = function (sourceFile) { + var _this = this; + var children; + if (this.kind >= 126) { + scanner.setText((sourceFile || this.getSourceFile()).text); + children = []; + var pos = this.pos; + var processNode = function (node) { + if (pos < node.pos) { + pos = _this.addSyntheticNodes(children, pos, node.pos); + } + children.push(node); + pos = node.end; + }; + var processNodes = function (nodes) { + if (pos < nodes.pos) { + pos = _this.addSyntheticNodes(children, pos, nodes.pos); + } + children.push(_this.createSyntaxList(nodes)); + pos = nodes.end; + }; + ts.forEachChild(this, processNode, processNodes); + if (pos < this.end) { + this.addSyntheticNodes(children, pos, this.end); + } + scanner.setText(undefined); + } + this._children = children || emptyArray; + }; + NodeObject.prototype.getChildCount = function (sourceFile) { + if (!this._children) + this.createChildren(sourceFile); + return this._children.length; + }; + NodeObject.prototype.getChildAt = function (index, sourceFile) { + if (!this._children) + this.createChildren(sourceFile); + return this._children[index]; + }; + NodeObject.prototype.getChildren = function (sourceFile) { + if (!this._children) + this.createChildren(sourceFile); + return this._children; + }; + NodeObject.prototype.getFirstToken = function (sourceFile) { + var children = this.getChildren(); + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; + if (child.kind < 126) { + return child; + } + return child.getFirstToken(sourceFile); + } + }; + NodeObject.prototype.getLastToken = function (sourceFile) { + var children = this.getChildren(sourceFile); + for (var i = children.length - 1; i >= 0; i--) { + var child = children[i]; + if (child.kind < 126) { + return child; + } + return child.getLastToken(sourceFile); + } + }; + return NodeObject; + })(); + var SymbolObject = (function () { + function SymbolObject(flags, name) { + this.flags = flags; + this.name = name; + } + SymbolObject.prototype.getFlags = function () { + return this.flags; + }; + SymbolObject.prototype.getName = function () { + return this.name; + }; + SymbolObject.prototype.getDeclarations = function () { + return this.declarations; + }; + SymbolObject.prototype.getDocumentationComment = function () { + if (this.documentationComment === undefined) { + this.documentationComment = getJsDocCommentsFromDeclarations(this.declarations, this.name, !(this.flags & 4)); + } + return this.documentationComment; + }; + return SymbolObject; + })(); + function getJsDocCommentsFromDeclarations(declarations, name, canUseParsedParamTagComments) { + var documentationComment = []; + var docComments = getJsDocCommentsSeparatedByNewLines(); + ts.forEach(docComments, function (docComment) { + if (documentationComment.length) { + documentationComment.push(ts.lineBreakPart()); + } + documentationComment.push(docComment); + }); + return documentationComment; + function getJsDocCommentsSeparatedByNewLines() { + var paramTag = "@param"; + var jsDocCommentParts = []; + ts.forEach(declarations, function (declaration, indexOfDeclaration) { + if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { + var sourceFileOfDeclaration = ts.getSourceFileOfNode(declaration); + if (canUseParsedParamTagComments && declaration.kind === 129) { + ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); + if (cleanedParamJsDocComment) { + jsDocCommentParts.push.apply(jsDocCommentParts, cleanedParamJsDocComment); + } + }); + } + if (declaration.kind === 205 && declaration.body.kind === 205) { + return; + } + while (declaration.kind === 205 && declaration.parent.kind === 205) { + declaration = declaration.parent; + } + ts.forEach(getJsDocCommentTextRange(declaration.kind === 198 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); + if (cleanedJsDocComment) { + jsDocCommentParts.push.apply(jsDocCommentParts, cleanedJsDocComment); + } + }); + } + }); + return jsDocCommentParts; + function getJsDocCommentTextRange(node, sourceFile) { + return ts.map(ts.getJsDocComments(node, sourceFile), function (jsDocComment) { + return { + pos: jsDocComment.pos + "/*".length, + end: jsDocComment.end - "*/".length + }; + }); + } + function consumeWhiteSpacesOnTheLine(pos, end, sourceFile, maxSpacesToRemove) { + if (maxSpacesToRemove !== undefined) { + end = Math.min(end, pos + maxSpacesToRemove); + } + for (; pos < end; pos++) { + var ch = sourceFile.text.charCodeAt(pos); + if (!ts.isWhiteSpace(ch) || ts.isLineBreak(ch)) { + return pos; + } + } + return end; + } + function consumeLineBreaks(pos, end, sourceFile) { + while (pos < end && ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { + pos++; + } + return pos; + } + function isName(pos, end, sourceFile, name) { + return pos + name.length < end && + sourceFile.text.substr(pos, name.length) === name && + (ts.isWhiteSpace(sourceFile.text.charCodeAt(pos + name.length)) || + ts.isLineBreak(sourceFile.text.charCodeAt(pos + name.length))); + } + function isParamTag(pos, end, sourceFile) { + return isName(pos, end, sourceFile, paramTag); + } + function pushDocCommentLineText(docComments, text, blankLineCount) { + while (blankLineCount--) { + docComments.push(ts.textPart("")); + } + docComments.push(ts.textPart(text)); + } + function getCleanedJsDocComment(pos, end, sourceFile) { + var spacesToRemoveAfterAsterisk; + var docComments = []; + var blankLineCount = 0; + var isInParamTag = false; + while (pos < end) { + var docCommentTextOfLine = ""; + pos = consumeWhiteSpacesOnTheLine(pos, end, sourceFile); + if (pos < end && sourceFile.text.charCodeAt(pos) === 42) { + var lineStartPos = pos + 1; + pos = consumeWhiteSpacesOnTheLine(pos + 1, end, sourceFile, spacesToRemoveAfterAsterisk); + if (spacesToRemoveAfterAsterisk === undefined && pos < end && !ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { + spacesToRemoveAfterAsterisk = pos - lineStartPos; + } + } + else if (spacesToRemoveAfterAsterisk === undefined) { + spacesToRemoveAfterAsterisk = 0; + } + while (pos < end && !ts.isLineBreak(sourceFile.text.charCodeAt(pos))) { + var ch = sourceFile.text.charAt(pos); + if (ch === "@") { + if (isParamTag(pos, end, sourceFile)) { + isInParamTag = true; + pos += paramTag.length; + continue; + } + else { + isInParamTag = false; + } + } + if (!isInParamTag) { + docCommentTextOfLine += ch; + } + pos++; + } + pos = consumeLineBreaks(pos, end, sourceFile); + if (docCommentTextOfLine) { + pushDocCommentLineText(docComments, docCommentTextOfLine, blankLineCount); + blankLineCount = 0; + } + else if (!isInParamTag && docComments.length) { + blankLineCount++; + } + } + return docComments; + } + function getCleanedParamJsDocComment(pos, end, sourceFile) { + var paramHelpStringMargin; + var paramDocComments = []; + while (pos < end) { + if (isParamTag(pos, end, sourceFile)) { + var blankLineCount = 0; + var recordedParamTag = false; + pos = consumeWhiteSpaces(pos + paramTag.length); + if (pos >= end) { + break; + } + if (sourceFile.text.charCodeAt(pos) === 123) { + pos++; + for (var curlies = 1; pos < end; pos++) { + var charCode = sourceFile.text.charCodeAt(pos); + if (charCode === 123) { + curlies++; + continue; + } + if (charCode === 125) { + curlies--; + if (curlies === 0) { + pos++; + break; + } + else { + continue; + } + } + if (charCode === 64) { + break; + } + } + pos = consumeWhiteSpaces(pos); + if (pos >= end) { + break; + } + } + if (isName(pos, end, sourceFile, name)) { + pos = consumeWhiteSpaces(pos + name.length); + if (pos >= end) { + break; + } + var paramHelpString = ""; + var firstLineParamHelpStringPos = pos; + while (pos < end) { + var ch = sourceFile.text.charCodeAt(pos); + if (ts.isLineBreak(ch)) { + if (paramHelpString) { + pushDocCommentLineText(paramDocComments, paramHelpString, blankLineCount); + paramHelpString = ""; + blankLineCount = 0; + recordedParamTag = true; + } + else if (recordedParamTag) { + blankLineCount++; + } + setPosForParamHelpStringOnNextLine(firstLineParamHelpStringPos); + continue; + } + if (ch === 64) { + break; + } + paramHelpString += sourceFile.text.charAt(pos); + pos++; + } + if (paramHelpString) { + pushDocCommentLineText(paramDocComments, paramHelpString, blankLineCount); + } + paramHelpStringMargin = undefined; + } + if (sourceFile.text.charCodeAt(pos) === 64) { + continue; + } + } + pos++; + } + return paramDocComments; + function consumeWhiteSpaces(pos) { + while (pos < end && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos++; + } + return pos; + } + function setPosForParamHelpStringOnNextLine(firstLineParamHelpStringPos) { + pos = consumeLineBreaks(pos, end, sourceFile); + if (pos >= end) { + return; + } + if (paramHelpStringMargin === undefined) { + paramHelpStringMargin = sourceFile.getLineAndCharacterOfPosition(firstLineParamHelpStringPos).character; + } + var startOfLinePos = pos; + pos = consumeWhiteSpacesOnTheLine(pos, end, sourceFile, paramHelpStringMargin); + if (pos >= end) { + return; + } + var consumedSpaces = pos - startOfLinePos; + if (consumedSpaces < paramHelpStringMargin) { + var ch = sourceFile.text.charCodeAt(pos); + if (ch === 42) { + pos = consumeWhiteSpacesOnTheLine(pos + 1, end, sourceFile, paramHelpStringMargin - consumedSpaces - 1); + } + } + } + } + } + } + var TypeObject = (function () { + function TypeObject(checker, flags) { + this.checker = checker; + this.flags = flags; + } + TypeObject.prototype.getFlags = function () { + return this.flags; + }; + TypeObject.prototype.getSymbol = function () { + return this.symbol; + }; + TypeObject.prototype.getProperties = function () { + return this.checker.getPropertiesOfType(this); + }; + TypeObject.prototype.getProperty = function (propertyName) { + return this.checker.getPropertyOfType(this, propertyName); + }; + TypeObject.prototype.getApparentProperties = function () { + return this.checker.getAugmentedPropertiesOfType(this); + }; + TypeObject.prototype.getCallSignatures = function () { + return this.checker.getSignaturesOfType(this, 0); + }; + TypeObject.prototype.getConstructSignatures = function () { + return this.checker.getSignaturesOfType(this, 1); + }; + TypeObject.prototype.getStringIndexType = function () { + return this.checker.getIndexTypeOfType(this, 0); + }; + TypeObject.prototype.getNumberIndexType = function () { + return this.checker.getIndexTypeOfType(this, 1); + }; + return TypeObject; + })(); + var SignatureObject = (function () { + function SignatureObject(checker) { + this.checker = checker; + } + SignatureObject.prototype.getDeclaration = function () { + return this.declaration; + }; + SignatureObject.prototype.getTypeParameters = function () { + return this.typeParameters; + }; + SignatureObject.prototype.getParameters = function () { + return this.parameters; + }; + SignatureObject.prototype.getReturnType = function () { + return this.checker.getReturnTypeOfSignature(this); + }; + SignatureObject.prototype.getDocumentationComment = function () { + if (this.documentationComment === undefined) { + this.documentationComment = this.declaration ? getJsDocCommentsFromDeclarations([this.declaration], undefined, false) : []; + } + return this.documentationComment; + }; + return SignatureObject; + })(); + var SourceFileObject = (function (_super) { + __extends(SourceFileObject, _super); + function SourceFileObject() { + _super.apply(this, arguments); + } + SourceFileObject.prototype.update = function (newText, textChangeRange) { + return ts.updateSourceFile(this, newText, textChangeRange); + }; + SourceFileObject.prototype.getLineAndCharacterOfPosition = function (position) { + return ts.getLineAndCharacterOfPosition(this, position); + }; + SourceFileObject.prototype.getLineStarts = function () { + return ts.getLineStarts(this); + }; + SourceFileObject.prototype.getPositionOfLineAndCharacter = function (line, character) { + return ts.getPositionOfLineAndCharacter(this, line, character); + }; + SourceFileObject.prototype.getNamedDeclarations = function () { + if (!this.namedDeclarations) { + var sourceFile = this; + var namedDeclarations = []; + ts.forEachChild(sourceFile, function visit(node) { + switch (node.kind) { + case 200: + case 134: + case 133: + var functionDeclaration = node; + if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { + var lastDeclaration = namedDeclarations.length > 0 ? + namedDeclarations[namedDeclarations.length - 1] : + undefined; + if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { + if (functionDeclaration.body && !lastDeclaration.body) { + namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; + } + } + else { + namedDeclarations.push(functionDeclaration); + } + ts.forEachChild(node, visit); + } + break; + case 201: + case 202: + case 203: + case 204: + case 205: + case 208: + case 217: + case 213: + case 208: + case 210: + case 211: + case 136: + case 137: + case 145: + if (node.name) { + namedDeclarations.push(node); + } + case 135: + case 180: + case 199: + case 150: + case 151: + case 206: + ts.forEachChild(node, visit); + break; + case 179: + if (ts.isFunctionBlock(node)) { + ts.forEachChild(node, visit); + } + break; + case 129: + if (!(node.flags & 112)) { + break; + } + case 198: + case 152: + if (ts.isBindingPattern(node.name)) { + ts.forEachChild(node.name, visit); + break; + } + case 226: + case 132: + case 131: + namedDeclarations.push(node); + break; + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + namedDeclarations.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + namedDeclarations.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; + } + }); + this.namedDeclarations = namedDeclarations; + } + return this.namedDeclarations; + }; + return SourceFileObject; + })(NodeObject); + var TextChange = (function () { + function TextChange() { + } + return TextChange; + })(); + ts.TextChange = TextChange; + (function (SymbolDisplayPartKind) { + SymbolDisplayPartKind[SymbolDisplayPartKind["aliasName"] = 0] = "aliasName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["className"] = 1] = "className"; + SymbolDisplayPartKind[SymbolDisplayPartKind["enumName"] = 2] = "enumName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["fieldName"] = 3] = "fieldName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["interfaceName"] = 4] = "interfaceName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["keyword"] = 5] = "keyword"; + SymbolDisplayPartKind[SymbolDisplayPartKind["lineBreak"] = 6] = "lineBreak"; + SymbolDisplayPartKind[SymbolDisplayPartKind["numericLiteral"] = 7] = "numericLiteral"; + SymbolDisplayPartKind[SymbolDisplayPartKind["stringLiteral"] = 8] = "stringLiteral"; + SymbolDisplayPartKind[SymbolDisplayPartKind["localName"] = 9] = "localName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["methodName"] = 10] = "methodName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["moduleName"] = 11] = "moduleName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["operator"] = 12] = "operator"; + SymbolDisplayPartKind[SymbolDisplayPartKind["parameterName"] = 13] = "parameterName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["propertyName"] = 14] = "propertyName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["punctuation"] = 15] = "punctuation"; + SymbolDisplayPartKind[SymbolDisplayPartKind["space"] = 16] = "space"; + SymbolDisplayPartKind[SymbolDisplayPartKind["text"] = 17] = "text"; + SymbolDisplayPartKind[SymbolDisplayPartKind["typeParameterName"] = 18] = "typeParameterName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["enumMemberName"] = 19] = "enumMemberName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["functionName"] = 20] = "functionName"; + SymbolDisplayPartKind[SymbolDisplayPartKind["regularExpressionLiteral"] = 21] = "regularExpressionLiteral"; + })(ts.SymbolDisplayPartKind || (ts.SymbolDisplayPartKind = {})); + var SymbolDisplayPartKind = ts.SymbolDisplayPartKind; + (function (TokenClass) { + TokenClass[TokenClass["Punctuation"] = 0] = "Punctuation"; + TokenClass[TokenClass["Keyword"] = 1] = "Keyword"; + TokenClass[TokenClass["Operator"] = 2] = "Operator"; + TokenClass[TokenClass["Comment"] = 3] = "Comment"; + TokenClass[TokenClass["Whitespace"] = 4] = "Whitespace"; + TokenClass[TokenClass["Identifier"] = 5] = "Identifier"; + TokenClass[TokenClass["NumberLiteral"] = 6] = "NumberLiteral"; + TokenClass[TokenClass["StringLiteral"] = 7] = "StringLiteral"; + TokenClass[TokenClass["RegExpLiteral"] = 8] = "RegExpLiteral"; + })(ts.TokenClass || (ts.TokenClass = {})); + var TokenClass = ts.TokenClass; + var ScriptElementKind = (function () { + function ScriptElementKind() { + } + ScriptElementKind.unknown = ""; + ScriptElementKind.keyword = "keyword"; + ScriptElementKind.scriptElement = "script"; + ScriptElementKind.moduleElement = "module"; + ScriptElementKind.classElement = "class"; + ScriptElementKind.interfaceElement = "interface"; + ScriptElementKind.typeElement = "type"; + ScriptElementKind.enumElement = "enum"; + ScriptElementKind.variableElement = "var"; + ScriptElementKind.localVariableElement = "local var"; + ScriptElementKind.functionElement = "function"; + ScriptElementKind.localFunctionElement = "local function"; + ScriptElementKind.memberFunctionElement = "method"; + ScriptElementKind.memberGetAccessorElement = "getter"; + ScriptElementKind.memberSetAccessorElement = "setter"; + ScriptElementKind.memberVariableElement = "property"; + ScriptElementKind.constructorImplementationElement = "constructor"; + ScriptElementKind.callSignatureElement = "call"; + ScriptElementKind.indexSignatureElement = "index"; + ScriptElementKind.constructSignatureElement = "construct"; + ScriptElementKind.parameterElement = "parameter"; + ScriptElementKind.typeParameterElement = "type parameter"; + ScriptElementKind.primitiveType = "primitive type"; + ScriptElementKind.label = "label"; + ScriptElementKind.alias = "alias"; + ScriptElementKind.constElement = "const"; + ScriptElementKind.letElement = "let"; + return ScriptElementKind; + })(); + ts.ScriptElementKind = ScriptElementKind; + var ScriptElementKindModifier = (function () { + function ScriptElementKindModifier() { + } + ScriptElementKindModifier.none = ""; + ScriptElementKindModifier.publicMemberModifier = "public"; + ScriptElementKindModifier.privateMemberModifier = "private"; + ScriptElementKindModifier.protectedMemberModifier = "protected"; + ScriptElementKindModifier.exportedModifier = "export"; + ScriptElementKindModifier.ambientModifier = "declare"; + ScriptElementKindModifier.staticModifier = "static"; + return ScriptElementKindModifier; + })(); + ts.ScriptElementKindModifier = ScriptElementKindModifier; + var ClassificationTypeNames = (function () { + function ClassificationTypeNames() { + } + ClassificationTypeNames.comment = "comment"; + ClassificationTypeNames.identifier = "identifier"; + ClassificationTypeNames.keyword = "keyword"; + ClassificationTypeNames.numericLiteral = "number"; + ClassificationTypeNames.operator = "operator"; + ClassificationTypeNames.stringLiteral = "string"; + ClassificationTypeNames.whiteSpace = "whitespace"; + ClassificationTypeNames.text = "text"; + ClassificationTypeNames.punctuation = "punctuation"; + ClassificationTypeNames.className = "class name"; + ClassificationTypeNames.enumName = "enum name"; + ClassificationTypeNames.interfaceName = "interface name"; + ClassificationTypeNames.moduleName = "module name"; + ClassificationTypeNames.typeParameterName = "type parameter name"; + ClassificationTypeNames.typeAlias = "type alias name"; + return ClassificationTypeNames; + })(); + ts.ClassificationTypeNames = ClassificationTypeNames; + function displayPartsToString(displayParts) { + if (displayParts) { + return ts.map(displayParts, function (displayPart) { return displayPart.text; }).join(""); + } + return ""; + } + ts.displayPartsToString = displayPartsToString; + function isLocalVariableOrFunction(symbol) { + if (symbol.parent) { + return false; + } + return ts.forEach(symbol.declarations, function (declaration) { + if (declaration.kind === 162) { + return true; + } + if (declaration.kind !== 198 && declaration.kind !== 200) { + return false; + } + for (var parent_7 = declaration.parent; !ts.isFunctionBlock(parent_7); parent_7 = parent_7.parent) { + if (parent_7.kind === 227 || parent_7.kind === 206) { + return false; + } + } + return true; + }); + } + function getDefaultCompilerOptions() { + return { + target: 1, + module: 0 + }; + } + ts.getDefaultCompilerOptions = getDefaultCompilerOptions; + var OperationCanceledException = (function () { + function OperationCanceledException() { + } + return OperationCanceledException; + })(); + ts.OperationCanceledException = OperationCanceledException; + var CancellationTokenObject = (function () { + function CancellationTokenObject(cancellationToken) { + this.cancellationToken = cancellationToken; + } + CancellationTokenObject.prototype.isCancellationRequested = function () { + return this.cancellationToken && this.cancellationToken.isCancellationRequested(); + }; + CancellationTokenObject.prototype.throwIfCancellationRequested = function () { + if (this.isCancellationRequested()) { + throw new OperationCanceledException(); + } + }; + CancellationTokenObject.None = new CancellationTokenObject(null); + return CancellationTokenObject; + })(); + ts.CancellationTokenObject = CancellationTokenObject; + var HostCache = (function () { + function HostCache(host) { + this.host = host; + this.fileNameToEntry = {}; + var rootFileNames = host.getScriptFileNames(); + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + this.createEntry(fileName); + } + this._compilationSettings = host.getCompilationSettings() || getDefaultCompilerOptions(); + } + HostCache.prototype.compilationSettings = function () { + return this._compilationSettings; + }; + HostCache.prototype.createEntry = function (fileName) { + var entry; + var scriptSnapshot = this.host.getScriptSnapshot(fileName); + if (scriptSnapshot) { + entry = { + hostFileName: fileName, + version: this.host.getScriptVersion(fileName), + scriptSnapshot: scriptSnapshot + }; + } + return this.fileNameToEntry[ts.normalizeSlashes(fileName)] = entry; + }; + HostCache.prototype.getEntry = function (fileName) { + return ts.lookUp(this.fileNameToEntry, ts.normalizeSlashes(fileName)); + }; + HostCache.prototype.contains = function (fileName) { + return ts.hasProperty(this.fileNameToEntry, ts.normalizeSlashes(fileName)); + }; + HostCache.prototype.getOrCreateEntry = function (fileName) { + if (this.contains(fileName)) { + return this.getEntry(fileName); + } + return this.createEntry(fileName); + }; + HostCache.prototype.getRootFileNames = function () { + var _this = this; + var fileNames = []; + ts.forEachKey(this.fileNameToEntry, function (key) { + if (ts.hasProperty(_this.fileNameToEntry, key) && _this.fileNameToEntry[key]) + fileNames.push(key); + }); + return fileNames; + }; + HostCache.prototype.getVersion = function (fileName) { + var file = this.getEntry(fileName); + return file && file.version; + }; + HostCache.prototype.getScriptSnapshot = function (fileName) { + var file = this.getEntry(fileName); + return file && file.scriptSnapshot; + }; + return HostCache; + })(); + var SyntaxTreeCache = (function () { + function SyntaxTreeCache(host) { + this.host = host; + } + SyntaxTreeCache.prototype.getCurrentSourceFile = function (fileName) { + var scriptSnapshot = this.host.getScriptSnapshot(fileName); + if (!scriptSnapshot) { + throw new Error("Could not find file: '" + fileName + "'."); + } + var version = this.host.getScriptVersion(fileName); + var sourceFile; + if (this.currentFileName !== fileName) { + sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2, version, true); + } + else if (this.currentFileVersion !== version) { + var editRange = scriptSnapshot.getChangeRange(this.currentFileScriptSnapshot); + sourceFile = updateLanguageServiceSourceFile(this.currentSourceFile, scriptSnapshot, version, editRange); + } + if (sourceFile) { + this.currentFileVersion = version; + this.currentFileName = fileName; + this.currentFileScriptSnapshot = scriptSnapshot; + this.currentSourceFile = sourceFile; + } + return this.currentSourceFile; + }; + return SyntaxTreeCache; + })(); + function setSourceFileFields(sourceFile, scriptSnapshot, version) { + sourceFile.version = version; + sourceFile.scriptSnapshot = scriptSnapshot; + } + function transpile(input, compilerOptions, fileName, diagnostics) { + var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions(); + options.separateCompilation = true; + options.allowNonTsExtensions = true; + var inputFileName = fileName || "module.ts"; + var sourceFile = ts.createSourceFile(inputFileName, input, options.target); + if (diagnostics && sourceFile.parseDiagnostics) { + diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics); + } + var outputText; + var compilerHost = { + getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + writeFile: function (name, text, writeByteOrderMark) { + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + outputText = text; + }, + getDefaultLibFileName: function () { return "lib.d.ts"; }, + useCaseSensitiveFileNames: function () { return false; }, + getCanonicalFileName: function (fileName) { return fileName; }, + getCurrentDirectory: function () { return ""; }, + getNewLine: function () { return "\r\n"; } + }; + var program = ts.createProgram([inputFileName], options, compilerHost); + if (diagnostics) { + diagnostics.push.apply(diagnostics, program.getGlobalDiagnostics()); + } + program.emit(); + ts.Debug.assert(outputText !== undefined, "Output generation failed"); + return outputText; + } + ts.transpile = transpile; + function createLanguageServiceSourceFile(fileName, scriptSnapshot, scriptTarget, version, setNodeParents) { + var sourceFile = ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), scriptTarget, setNodeParents); + setSourceFileFields(sourceFile, scriptSnapshot, version); + sourceFile.nameTable = sourceFile.identifiers; + return sourceFile; + } + ts.createLanguageServiceSourceFile = createLanguageServiceSourceFile; + ts.disableIncrementalParsing = false; + function updateLanguageServiceSourceFile(sourceFile, scriptSnapshot, version, textChangeRange, aggressiveChecks) { + if (textChangeRange) { + if (version !== sourceFile.version) { + if (!ts.disableIncrementalParsing) { + var newSourceFile = ts.updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks); + setSourceFileFields(newSourceFile, scriptSnapshot, version); + newSourceFile.nameTable = undefined; + return newSourceFile; + } + } + } + return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, true); + } + ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile; + function createDocumentRegistry() { + var buckets = {}; + function getKeyFromCompilationSettings(settings) { + return "_" + settings.target; + } + function getBucketForCompilationSettings(settings, createIfMissing) { + var key = getKeyFromCompilationSettings(settings); + var bucket = ts.lookUp(buckets, key); + if (!bucket && createIfMissing) { + buckets[key] = bucket = {}; + } + return bucket; + } + function reportStats() { + var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === '_'; }).map(function (name) { + var entries = ts.lookUp(buckets, name); + var sourceFiles = []; + for (var i in entries) { + var entry = entries[i]; + sourceFiles.push({ + name: i, + refCount: entry.languageServiceRefCount, + references: entry.owners.slice(0) + }); + } + sourceFiles.sort(function (x, y) { return y.refCount - x.refCount; }); + return { + bucket: name, + sourceFiles: sourceFiles + }; + }); + return JSON.stringify(bucketInfoArray, null, 2); + } + function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, true); + } + function updateDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, false); + } + function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) { + var bucket = getBucketForCompilationSettings(compilationSettings, true); + var entry = ts.lookUp(bucket, fileName); + if (!entry) { + ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); + var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false); + bucket[fileName] = entry = { + sourceFile: sourceFile, + languageServiceRefCount: 0, + owners: [] + }; + } + else { + if (entry.sourceFile.version !== version) { + entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, scriptSnapshot.getChangeRange(entry.sourceFile.scriptSnapshot)); + } + } + if (acquiring) { + entry.languageServiceRefCount++; + } + return entry.sourceFile; + } + function releaseDocument(fileName, compilationSettings) { + var bucket = getBucketForCompilationSettings(compilationSettings, false); + ts.Debug.assert(bucket !== undefined); + var entry = ts.lookUp(bucket, fileName); + entry.languageServiceRefCount--; + ts.Debug.assert(entry.languageServiceRefCount >= 0); + if (entry.languageServiceRefCount === 0) { + delete bucket[fileName]; + } + } + return { + acquireDocument: acquireDocument, + updateDocument: updateDocument, + releaseDocument: releaseDocument, + reportStats: reportStats + }; + } + ts.createDocumentRegistry = createDocumentRegistry; + function preProcessFile(sourceText, readImportFiles) { + if (readImportFiles === void 0) { readImportFiles = true; } + var referencedFiles = []; + var importedFiles = []; + var isNoDefaultLib = false; + function processTripleSlashDirectives() { + var commentRanges = ts.getLeadingCommentRanges(sourceText, 0); + ts.forEach(commentRanges, function (commentRange) { + var comment = sourceText.substring(commentRange.pos, commentRange.end); + var referencePathMatchResult = ts.getFileReferenceFromReferencePath(comment, commentRange); + if (referencePathMatchResult) { + isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; + var fileReference = referencePathMatchResult.fileReference; + if (fileReference) { + referencedFiles.push(fileReference); + } + } + }); + } + function recordModuleName() { + var importPath = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + importedFiles.push({ + fileName: importPath, + pos: pos, + end: pos + importPath.length + }); + } + function processImport() { + scanner.setText(sourceText); + var token = scanner.scan(); + while (token !== 1) { + if (token === 85) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + continue; + } + else { + if (token === 65) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + continue; + } + } + else if (token === 53) { + token = scanner.scan(); + if (token === 118) { + token = scanner.scan(); + if (token === 16) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + continue; + } + } + } + } + else if (token === 23) { + token = scanner.scan(); + } + else { + continue; + } + } + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 102) { + token = scanner.scan(); + if (token === 65) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + } + } + } + else if (token === 78) { + token = scanner.scan(); + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + token = scanner.scan(); + } + scanner.setText(undefined); + } + if (readImportFiles) { + processImport(); + } + processTripleSlashDirectives(); + return { referencedFiles: referencedFiles, importedFiles: importedFiles, isLibFile: isNoDefaultLib }; + } + ts.preProcessFile = preProcessFile; + function getTargetLabel(referenceNode, labelName) { + while (referenceNode) { + if (referenceNode.kind === 194 && referenceNode.label.text === labelName) { + return referenceNode.label; + } + referenceNode = referenceNode.parent; + } + return undefined; + } + function isJumpStatementTarget(node) { + return node.kind === 65 && + (node.parent.kind === 190 || node.parent.kind === 189) && + node.parent.label === node; + } + function isLabelOfLabeledStatement(node) { + return node.kind === 65 && + node.parent.kind === 194 && + node.parent.label === node; + } + function isLabeledBy(node, labelName) { + for (var owner = node.parent; owner.kind === 194; owner = owner.parent) { + if (owner.label.text === labelName) { + return true; + } + } + return false; + } + function isLabelName(node) { + return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); + } + function isRightSideOfQualifiedName(node) { + return node.parent.kind === 126 && node.parent.right === node; + } + function isRightSideOfPropertyAccess(node) { + return node && node.parent && node.parent.kind === 155 && node.parent.name === node; + } + function isCallExpressionTarget(node) { + if (isRightSideOfPropertyAccess(node)) { + node = node.parent; + } + return node && node.parent && node.parent.kind === 157 && node.parent.expression === node; + } + function isNewExpressionTarget(node) { + if (isRightSideOfPropertyAccess(node)) { + node = node.parent; + } + return node && node.parent && node.parent.kind === 158 && node.parent.expression === node; + } + function isNameOfModuleDeclaration(node) { + return node.parent.kind === 205 && node.parent.name === node; + } + function isNameOfFunctionDeclaration(node) { + return node.kind === 65 && + ts.isFunctionLike(node.parent) && node.parent.name === node; + } + function isNameOfPropertyAssignment(node) { + return (node.kind === 65 || node.kind === 8 || node.kind === 7) && + (node.parent.kind === 224 || node.parent.kind === 225) && node.parent.name === node; + } + function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { + if (node.kind === 8 || node.kind === 7) { + switch (node.parent.kind) { + case 132: + case 131: + case 224: + case 226: + case 134: + case 133: + case 136: + case 137: + case 205: + return node.parent.name === node; + case 156: + return node.parent.argumentExpression === node; + } + } + return false; + } + function isNameOfExternalModuleImportOrDeclaration(node) { + if (node.kind === 8) { + return isNameOfModuleDeclaration(node) || + (ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node); + } + return false; + } + function isInsideComment(sourceFile, token, position) { + return position <= token.getStart(sourceFile) && + (isInsideCommentRange(ts.getTrailingCommentRanges(sourceFile.text, token.getFullStart())) || + isInsideCommentRange(ts.getLeadingCommentRanges(sourceFile.text, token.getFullStart()))); + function isInsideCommentRange(comments) { + return ts.forEach(comments, function (comment) { + if (comment.pos < position && position < comment.end) { + return true; + } + else if (position === comment.end) { + var text = sourceFile.text; + var width = comment.end - comment.pos; + if (width <= 2 || text.charCodeAt(comment.pos + 1) === 47) { + return true; + } + else { + return !(text.charCodeAt(comment.end - 1) === 47 && + text.charCodeAt(comment.end - 2) === 42); + } + } + return false; + }); + } + } + var keywordCompletions = []; + for (var i = 66; i <= 125; i++) { + keywordCompletions.push({ + name: ts.tokenToString(i), + kind: ScriptElementKind.keyword, + kindModifiers: ScriptElementKindModifier.none + }); + } + function getContainerNode(node) { + while (true) { + node = node.parent; + if (!node) { + return undefined; + } + switch (node.kind) { + case 227: + case 134: + case 133: + case 200: + case 162: + case 136: + case 137: + case 201: + case 202: + case 204: + case 205: + return node; + } + } + } + ts.getContainerNode = getContainerNode; + function getNodeKind(node) { + switch (node.kind) { + case 205: return ScriptElementKind.moduleElement; + case 201: return ScriptElementKind.classElement; + case 202: return ScriptElementKind.interfaceElement; + case 203: return ScriptElementKind.typeElement; + case 204: return ScriptElementKind.enumElement; + case 198: + return ts.isConst(node) + ? ScriptElementKind.constElement + : ts.isLet(node) + ? ScriptElementKind.letElement + : ScriptElementKind.variableElement; + case 200: return ScriptElementKind.functionElement; + case 136: return ScriptElementKind.memberGetAccessorElement; + case 137: return ScriptElementKind.memberSetAccessorElement; + case 134: + case 133: + return ScriptElementKind.memberFunctionElement; + case 132: + case 131: + return ScriptElementKind.memberVariableElement; + case 140: return ScriptElementKind.indexSignatureElement; + case 139: return ScriptElementKind.constructSignatureElement; + case 138: return ScriptElementKind.callSignatureElement; + case 135: return ScriptElementKind.constructorImplementationElement; + case 128: return ScriptElementKind.typeParameterElement; + case 226: return ScriptElementKind.variableElement; + case 129: return (node.flags & 112) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 208: + case 213: + case 210: + case 217: + case 211: + return ScriptElementKind.alias; + } + return ScriptElementKind.unknown; + } + ts.getNodeKind = getNodeKind; + function createLanguageService(host, documentRegistry) { + if (documentRegistry === void 0) { documentRegistry = createDocumentRegistry(); } + var syntaxTreeCache = new SyntaxTreeCache(host); + var ruleProvider; + var program; + var typeInfoResolver; + var useCaseSensitivefileNames = false; + var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); + if (!ts.localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) { + ts.localizedDiagnosticMessages = host.getLocalizedDiagnosticMessages(); + } + function log(message) { + if (host.log) { + host.log(message); + } + } + function getCanonicalFileName(fileName) { + return useCaseSensitivefileNames ? fileName : fileName.toLowerCase(); + } + function getValidSourceFile(fileName) { + fileName = ts.normalizeSlashes(fileName); + var sourceFile = program.getSourceFile(getCanonicalFileName(fileName)); + if (!sourceFile) { + throw new Error("Could not find file: '" + fileName + "'."); + } + return sourceFile; + } + function getRuleProvider(options) { + if (!ruleProvider) { + ruleProvider = new ts.formatting.RulesProvider(); + } + ruleProvider.ensureUpToDate(options); + return ruleProvider; + } + function synchronizeHostData() { + var hostCache = new HostCache(host); + if (programUpToDate()) { + return; + } + var oldSettings = program && program.getCompilerOptions(); + var newSettings = hostCache.compilationSettings(); + var changesInCompilationSettingsAffectSyntax = oldSettings && oldSettings.target !== newSettings.target; + var newProgram = ts.createProgram(hostCache.getRootFileNames(), newSettings, { + getSourceFile: getOrCreateSourceFile, + getCancellationToken: function () { return cancellationToken; }, + getCanonicalFileName: function (fileName) { return useCaseSensitivefileNames ? fileName : fileName.toLowerCase(); }, + useCaseSensitiveFileNames: function () { return useCaseSensitivefileNames; }, + getNewLine: function () { return host.getNewLine ? host.getNewLine() : "\r\n"; }, + getDefaultLibFileName: function (options) { return host.getDefaultLibFileName(options); }, + writeFile: function (fileName, data, writeByteOrderMark) { }, + getCurrentDirectory: function () { return host.getCurrentDirectory(); } + }); + if (program) { + var oldSourceFiles = program.getSourceFiles(); + for (var _i = 0; _i < oldSourceFiles.length; _i++) { + var oldSourceFile = oldSourceFiles[_i]; + var fileName = oldSourceFile.fileName; + if (!newProgram.getSourceFile(fileName) || changesInCompilationSettingsAffectSyntax) { + documentRegistry.releaseDocument(fileName, oldSettings); + } + } + } + program = newProgram; + typeInfoResolver = program.getTypeChecker(); + return; + function getOrCreateSourceFile(fileName) { + var hostFileInformation = hostCache.getOrCreateEntry(fileName); + if (!hostFileInformation) { + return undefined; + } + if (!changesInCompilationSettingsAffectSyntax) { + var oldSourceFile = program && program.getSourceFile(fileName); + if (oldSourceFile) { + return documentRegistry.updateDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); + } + } + return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); + } + function sourceFileUpToDate(sourceFile) { + return sourceFile && sourceFile.version === hostCache.getVersion(sourceFile.fileName); + } + function programUpToDate() { + if (!program) { + return false; + } + var rootFileNames = hostCache.getRootFileNames(); + if (program.getSourceFiles().length !== rootFileNames.length) { + return false; + } + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + if (!sourceFileUpToDate(program.getSourceFile(fileName))) { + return false; + } + } + return ts.compareDataObjects(program.getCompilerOptions(), hostCache.compilationSettings()); + } + } + function getProgram() { + synchronizeHostData(); + return program; + } + function cleanupSemanticCache() { + if (program) { + typeInfoResolver = program.getTypeChecker(); + } + } + function dispose() { + if (program) { + ts.forEach(program.getSourceFiles(), function (f) { + return documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); + }); + } + } + function getSyntacticDiagnostics(fileName) { + synchronizeHostData(); + return program.getSyntacticDiagnostics(getValidSourceFile(fileName)); + } + function getSemanticDiagnostics(fileName) { + synchronizeHostData(); + var targetSourceFile = getValidSourceFile(fileName); + var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile); + if (!program.getCompilerOptions().declaration) { + return semanticDiagnostics; + } + var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile); + return ts.concatenate(semanticDiagnostics, declarationDiagnostics); + } + function getCompilerOptionsDiagnostics() { + synchronizeHostData(); + return program.getGlobalDiagnostics(); + } + function getCompletionEntryDisplayName(symbol, target, performCharacterChecks) { + var displayName = symbol.getName(); + if (!displayName) { + return undefined; + } + if (displayName === "default") { + var localSymbol = ts.getLocalSymbolForExportDefault(symbol); + if (localSymbol && localSymbol.name) { + displayName = symbol.valueDeclaration.localSymbol.name; + } + } + var firstCharCode = displayName.charCodeAt(0); + if ((symbol.flags & 1536) && (firstCharCode === 39 || firstCharCode === 34)) { + return undefined; + } + if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && + (firstCharCode === 39 || firstCharCode === 34)) { + displayName = displayName.substring(1, displayName.length - 1); + } + if (!displayName) { + return undefined; + } + if (performCharacterChecks) { + if (!ts.isIdentifierStart(displayName.charCodeAt(0), target)) { + return undefined; + } + for (var i = 1, n = displayName.length; i < n; i++) { + if (!ts.isIdentifierPart(displayName.charCodeAt(i), target)) { + return undefined; + } + } + } + return ts.unescapeIdentifier(displayName); + } + function createCompletionEntry(symbol, typeChecker, location) { + var displayName = getCompletionEntryDisplayName(symbol, program.getCompilerOptions().target, true); + if (!displayName) { + return undefined; + } + return { + name: displayName, + kind: getSymbolKind(symbol, typeChecker, location), + kindModifiers: getSymbolModifiers(symbol) + }; + } + function getCompletionData(fileName, position) { + var syntacticStart = new Date().getTime(); + var sourceFile = getValidSourceFile(fileName); + var start = new Date().getTime(); + var currentToken = ts.getTokenAtPosition(sourceFile, position); + log("getCompletionData: Get current token: " + (new Date().getTime() - start)); + start = new Date().getTime(); + var insideComment = isInsideComment(sourceFile, currentToken, position); + log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); + if (insideComment) { + log("Returning an empty list because completion was inside a comment."); + return undefined; + } + start = new Date().getTime(); + var previousToken = ts.findPrecedingToken(position, sourceFile); + log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); + var contextToken = previousToken; + if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { + var start_1 = new Date().getTime(); + contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_1)); + } + if (contextToken && isCompletionListBlocker(contextToken)) { + log("Returning an empty list because completion was requested in an invalid position."); + return undefined; + } + var node = currentToken; + var isRightOfDot = false; + if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 155) { + node = contextToken.parent.expression; + isRightOfDot = true; + } + else if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 126) { + node = contextToken.parent.left; + isRightOfDot = true; + } + var location = ts.getTouchingPropertyName(sourceFile, position); + var target = program.getCompilerOptions().target; + var semanticStart = new Date().getTime(); + var isMemberCompletion; + var isNewIdentifierLocation; + var symbols; + if (isRightOfDot) { + symbols = []; + isMemberCompletion = true; + isNewIdentifierLocation = false; + if (node.kind === 65 || node.kind === 126 || node.kind === 155) { + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (symbol && symbol.flags & 8388608) { + symbol = typeInfoResolver.getAliasedSymbol(symbol); + } + if (symbol && symbol.flags & 1952) { + ts.forEachValue(symbol.exports, function (symbol) { + if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) { + symbols.push(symbol); + } + }); + } + } + var type = typeInfoResolver.getTypeAtLocation(node); + if (type) { + ts.forEach(type.getApparentProperties(), function (symbol) { + if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) { + symbols.push(symbol); + } + }); + } + } + else { + var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(contextToken); + if (containingObjectLiteral) { + isMemberCompletion = true; + isNewIdentifierLocation = true; + var contextualType = typeInfoResolver.getContextualType(containingObjectLiteral); + if (!contextualType) { + return undefined; + } + var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); + if (contextualTypeMembers && contextualTypeMembers.length > 0) { + symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); + } + } + else if (ts.getAncestor(contextToken, 210)) { + isMemberCompletion = true; + isNewIdentifierLocation = true; + if (showCompletionsInImportsClause(contextToken)) { + var importDeclaration = ts.getAncestor(contextToken, 209); + ts.Debug.assert(importDeclaration !== undefined); + var exports_2 = typeInfoResolver.getExportsOfExternalModule(importDeclaration); + symbols = filterModuleExports(exports_2, importDeclaration); + } + } + else { + isMemberCompletion = false; + isNewIdentifierLocation = isNewIdentifierDefinitionLocation(contextToken); + if (previousToken !== contextToken) { + ts.Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); + } + var adjustedPosition = previousToken !== contextToken ? + previousToken.getStart() : + position; + var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile; + var symbolMeanings = 793056 | 107455 | 1536 | 8388608; + symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings); + } + } + log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart)); + return { symbols: symbols, isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, location: location }; + function getScopeNode(initialToken, position, sourceFile) { + var scope = initialToken; + while (scope && !ts.positionBelongsToNode(scope, position, sourceFile)) { + scope = scope.parent; + } + return scope; + } + function isCompletionListBlocker(previousToken) { + var start = new Date().getTime(); + var result = isInStringOrRegularExpressionOrTemplateLiteral(previousToken) || + isIdentifierDefinitionLocation(previousToken) || + isRightOfIllegalDot(previousToken); + log("getCompletionsAtPosition: isCompletionListBlocker: " + (new Date().getTime() - start)); + return result; + } + function showCompletionsInImportsClause(node) { + if (node) { + if (node.kind === 14 || node.kind === 23) { + return node.parent.kind === 212; + } + } + return false; + } + function isNewIdentifierDefinitionLocation(previousToken) { + if (previousToken) { + var containingNodeKind = previousToken.parent.kind; + switch (previousToken.kind) { + case 23: + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 153 + || containingNodeKind === 169; + case 16: + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 161; + case 18: + return containingNodeKind === 153; + case 117: + return true; + case 20: + return containingNodeKind === 205; + case 14: + return containingNodeKind === 201; + case 53: + return containingNodeKind === 198 + || containingNodeKind === 169; + case 11: + return containingNodeKind === 171; + case 12: + return containingNodeKind === 176; + case 109: + case 107: + case 108: + return containingNodeKind === 132; + } + switch (previousToken.getText()) { + case "public": + case "protected": + case "private": + return true; + } + } + return false; + } + function isInStringOrRegularExpressionOrTemplateLiteral(previousToken) { + if (previousToken.kind === 8 + || previousToken.kind === 9 + || ts.isTemplateLiteralKind(previousToken.kind)) { + var start_2 = previousToken.getStart(); + var end = previousToken.getEnd(); + if (start_2 < position && position < end) { + return true; + } + else if (position === end) { + return !!previousToken.isUnterminated; + } + } + return false; + } + function getContainingObjectLiteralApplicableForCompletion(previousToken) { + // The locations in an object literal expression that are applicable for completion are property name definition locations. + if (previousToken) { + var parent_8 = previousToken.parent; + switch (previousToken.kind) { + case 14: + case 23: + if (parent_8 && parent_8.kind === 154) { + return parent_8; + } + break; + } + } + return undefined; + } + function isFunction(kind) { + switch (kind) { + case 162: + case 163: + case 200: + case 134: + case 133: + case 136: + case 137: + case 138: + case 139: + case 140: + return true; + } + return false; + } + function isIdentifierDefinitionLocation(previousToken) { + if (previousToken) { + var containingNodeKind = previousToken.parent.kind; + switch (previousToken.kind) { + case 23: + return containingNodeKind === 198 || + containingNodeKind === 199 || + containingNodeKind === 180 || + containingNodeKind === 204 || + isFunction(containingNodeKind) || + containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || + containingNodeKind === 151 || + containingNodeKind === 150; + case 20: + return containingNodeKind === 151; + case 18: + return containingNodeKind === 151; + case 16: + return containingNodeKind === 223 || + isFunction(containingNodeKind); + case 14: + return containingNodeKind === 204 || + containingNodeKind === 202 || + containingNodeKind === 145 || + containingNodeKind === 150; + case 22: + return containingNodeKind === 131 && + (previousToken.parent.parent.kind === 202 || + previousToken.parent.parent.kind === 145); + case 24: + return containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || + isFunction(containingNodeKind); + case 110: + return containingNodeKind === 132; + case 21: + return containingNodeKind === 129 || + containingNodeKind === 135 || + (previousToken.parent.parent.kind === 151); + case 109: + case 107: + case 108: + return containingNodeKind === 129; + case 69: + case 77: + case 104: + case 83: + case 98: + case 116: + case 120: + case 85: + case 105: + case 70: + case 111: + return true; + } + switch (previousToken.getText()) { + case "class": + case "interface": + case "enum": + case "function": + case "var": + case "static": + case "let": + case "const": + case "yield": + return true; + } + } + return false; + } + function isRightOfIllegalDot(previousToken) { + if (previousToken && previousToken.kind === 7) { + var text = previousToken.getFullText(); + return text.charAt(text.length - 1) === "."; + } + return false; + } + function filterModuleExports(exports, importDeclaration) { + var exisingImports = {}; + if (!importDeclaration.importClause) { + return exports; + } + if (importDeclaration.importClause.namedBindings && + importDeclaration.importClause.namedBindings.kind === 212) { + ts.forEach(importDeclaration.importClause.namedBindings.elements, function (el) { + var name = el.propertyName || el.name; + exisingImports[name.text] = true; + }); + } + if (ts.isEmpty(exisingImports)) { + return exports; + } + return ts.filter(exports, function (e) { return !ts.lookUp(exisingImports, e.name); }); + } + function filterContextualMembersList(contextualMemberSymbols, existingMembers) { + if (!existingMembers || existingMembers.length === 0) { + return contextualMemberSymbols; + } + var existingMemberNames = {}; + ts.forEach(existingMembers, function (m) { + if (m.kind !== 224 && m.kind !== 225) { + return; + } + if (m.getStart() <= position && position <= m.getEnd()) { + return; + } + existingMemberNames[m.name.text] = true; + }); + var filteredMembers = []; + ts.forEach(contextualMemberSymbols, function (s) { + if (!existingMemberNames[s.name]) { + filteredMembers.push(s); + } + }); + return filteredMembers; + } + } + function getCompletionsAtPosition(fileName, position) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (!completionData) { + return undefined; + } + var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location; + if (!symbols || symbols.length === 0) { + return undefined; + } + var entries = getCompletionEntriesFromSymbols(symbols); + if (!isMemberCompletion) { + ts.addRange(entries, keywordCompletions); + } + return { isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, entries: entries }; + function getCompletionEntriesFromSymbols(symbols) { + var start = new Date().getTime(); + var entries = []; + var nameToSymbol = {}; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; + var entry = createCompletionEntry(symbol, typeInfoResolver, location); + if (entry) { + var id = ts.escapeIdentifier(entry.name); + if (!ts.lookUp(nameToSymbol, id)) { + entries.push(entry); + nameToSymbol[id] = symbol; + } + } + } + log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + return entries; + } + } + function getCompletionEntryDetails(fileName, position, entryName) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (completionData) { + var symbols = completionData.symbols, location_2 = completionData.location; + var target = program.getCompilerOptions().target; + var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayName(s, target, false) === entryName ? s : undefined; }); + if (symbol) { + var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7); + return { + name: entryName, + kind: displayPartsDocumentationsAndSymbolKind.symbolKind, + kindModifiers: getSymbolModifiers(symbol), + displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, + documentation: displayPartsDocumentationsAndSymbolKind.documentation + }; + } + } + var keywordCompletion = ts.forEach(keywordCompletions, function (c) { return c.name === entryName; }); + if (keywordCompletion) { + return { + name: entryName, + kind: ScriptElementKind.keyword, + kindModifiers: ScriptElementKindModifier.none, + displayParts: [ts.displayPart(entryName, SymbolDisplayPartKind.keyword)], + documentation: undefined + }; + } + return undefined; + } + function getSymbolKind(symbol, typeResolver, location) { + var flags = symbol.getFlags(); + if (flags & 32) + return ScriptElementKind.classElement; + if (flags & 384) + return ScriptElementKind.enumElement; + if (flags & 524288) + return ScriptElementKind.typeElement; + if (flags & 64) + return ScriptElementKind.interfaceElement; + if (flags & 262144) + return ScriptElementKind.typeParameterElement; + var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location); + if (result === ScriptElementKind.unknown) { + if (flags & 262144) + return ScriptElementKind.typeParameterElement; + if (flags & 8) + return ScriptElementKind.variableElement; + if (flags & 8388608) + return ScriptElementKind.alias; + if (flags & 1536) + return ScriptElementKind.moduleElement; + } + return result; + } + function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location) { + if (typeResolver.isUndefinedSymbol(symbol)) { + return ScriptElementKind.variableElement; + } + if (typeResolver.isArgumentsSymbol(symbol)) { + return ScriptElementKind.localVariableElement; + } + if (flags & 3) { + if (ts.isFirstDeclarationOfSymbolParameter(symbol)) { + return ScriptElementKind.parameterElement; + } + else if (symbol.valueDeclaration && ts.isConst(symbol.valueDeclaration)) { + return ScriptElementKind.constElement; + } + else if (ts.forEach(symbol.declarations, ts.isLet)) { + return ScriptElementKind.letElement; + } + return isLocalVariableOrFunction(symbol) ? ScriptElementKind.localVariableElement : ScriptElementKind.variableElement; + } + if (flags & 16) + return isLocalVariableOrFunction(symbol) ? ScriptElementKind.localFunctionElement : ScriptElementKind.functionElement; + if (flags & 32768) + return ScriptElementKind.memberGetAccessorElement; + if (flags & 65536) + return ScriptElementKind.memberSetAccessorElement; + if (flags & 8192) + return ScriptElementKind.memberFunctionElement; + if (flags & 16384) + return ScriptElementKind.constructorImplementationElement; + if (flags & 4) { + if (flags & 268435456) { + var unionPropertyKind = ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) { + var rootSymbolFlags = rootSymbol.getFlags(); + if (rootSymbolFlags & (98308 | 3)) { + return ScriptElementKind.memberVariableElement; + } + ts.Debug.assert(!!(rootSymbolFlags & 8192)); + }); + if (!unionPropertyKind) { + var typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location); + if (typeOfUnionProperty.getCallSignatures().length) { + return ScriptElementKind.memberFunctionElement; + } + return ScriptElementKind.memberVariableElement; + } + return unionPropertyKind; + } + return ScriptElementKind.memberVariableElement; + } + return ScriptElementKind.unknown; + } + function getTypeKind(type) { + var flags = type.getFlags(); + if (flags & 128) + return ScriptElementKind.enumElement; + if (flags & 1024) + return ScriptElementKind.classElement; + if (flags & 2048) + return ScriptElementKind.interfaceElement; + if (flags & 512) + return ScriptElementKind.typeParameterElement; + if (flags & 1048703) + return ScriptElementKind.primitiveType; + if (flags & 256) + return ScriptElementKind.primitiveType; + return ScriptElementKind.unknown; + } + function getSymbolModifiers(symbol) { + return symbol && symbol.declarations && symbol.declarations.length > 0 + ? ts.getNodeModifiers(symbol.declarations[0]) + : ScriptElementKindModifier.none; + } + function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location, semanticMeaning) { + if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); } + var displayParts = []; + var documentation; + var symbolFlags = symbol.flags; + var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); + var hasAddedSymbolInfo; + var type; + if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 || symbolFlags & 8388608) { + if (symbolKind === ScriptElementKind.memberGetAccessorElement || symbolKind === ScriptElementKind.memberSetAccessorElement) { + symbolKind = ScriptElementKind.memberVariableElement; + } + var signature; + type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + if (type) { + if (location.parent && location.parent.kind === 155) { + var right = location.parent.name; + if (right === location || (right && right.getFullWidth() === 0)) { + location = location.parent; + } + } + var callExpression; + if (location.kind === 157 || location.kind === 158) { + callExpression = location; + } + else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { + callExpression = location.parent; + } + if (callExpression) { + var candidateSignatures = []; + signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures); + if (!signature && candidateSignatures.length) { + signature = candidateSignatures[0]; + } + var useConstructSignatures = callExpression.kind === 158 || callExpression.expression.kind === 91; + var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); + if (!ts.contains(allSignatures, signature.target || signature)) { + signature = allSignatures.length ? allSignatures[0] : undefined; + } + if (signature) { + if (useConstructSignatures && (symbolFlags & 32)) { + symbolKind = ScriptElementKind.constructorImplementationElement; + addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); + } + else if (symbolFlags & 8388608) { + symbolKind = ScriptElementKind.alias; + pushTypePart(symbolKind); + displayParts.push(ts.spacePart()); + if (useConstructSignatures) { + displayParts.push(ts.keywordPart(88)); + displayParts.push(ts.spacePart()); + } + addFullSymbolName(symbol); + } + else { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + } + switch (symbolKind) { + case ScriptElementKind.memberVariableElement: + case ScriptElementKind.variableElement: + case ScriptElementKind.constElement: + case ScriptElementKind.letElement: + case ScriptElementKind.parameterElement: + case ScriptElementKind.localVariableElement: + displayParts.push(ts.punctuationPart(51)); + displayParts.push(ts.spacePart()); + if (useConstructSignatures) { + displayParts.push(ts.keywordPart(88)); + displayParts.push(ts.spacePart()); + } + if (!(type.flags & 32768)) { + displayParts.push.apply(displayParts, ts.symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, undefined, 1)); + } + addSignatureDisplayParts(signature, allSignatures, 8); + break; + default: + addSignatureDisplayParts(signature, allSignatures); + } + hasAddedSymbolInfo = true; + } + } + else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304)) || + (location.kind === 114 && location.parent.kind === 135)) { + var functionDeclaration = location.parent; + var allSignatures = functionDeclaration.kind === 135 ? type.getConstructSignatures() : type.getCallSignatures(); + if (!typeResolver.isImplementationOfOverload(functionDeclaration)) { + signature = typeResolver.getSignatureFromDeclaration(functionDeclaration); + } + else { + signature = allSignatures[0]; + } + if (functionDeclaration.kind === 135) { + symbolKind = ScriptElementKind.constructorImplementationElement; + addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); + } + else { + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 138 && + !(type.symbol.flags & 2048 || type.symbol.flags & 4096) ? type.symbol : symbol, symbolKind); + } + addSignatureDisplayParts(signature, allSignatures); + hasAddedSymbolInfo = true; + } + } + } + if (symbolFlags & 32 && !hasAddedSymbolInfo) { + displayParts.push(ts.keywordPart(69)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + writeTypeParametersOfSymbol(symbol, sourceFile); + } + if ((symbolFlags & 64) && (semanticMeaning & 2)) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(104)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + writeTypeParametersOfSymbol(symbol, sourceFile); + } + if (symbolFlags & 524288) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(123)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + displayParts.push(ts.spacePart()); + displayParts.push(ts.operatorPart(53)); + displayParts.push(ts.spacePart()); + displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration)); + } + if (symbolFlags & 384) { + addNewLineIfDisplayPartsExist(); + if (ts.forEach(symbol.declarations, ts.isConstEnumDeclaration)) { + displayParts.push(ts.keywordPart(70)); + displayParts.push(ts.spacePart()); + } + displayParts.push(ts.keywordPart(77)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + } + if (symbolFlags & 1536) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(117)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + } + if ((symbolFlags & 262144) && (semanticMeaning & 2)) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.textPart("type parameter")); + displayParts.push(ts.punctuationPart(17)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + displayParts.push(ts.spacePart()); + displayParts.push(ts.keywordPart(86)); + displayParts.push(ts.spacePart()); + if (symbol.parent) { + addFullSymbolName(symbol.parent, enclosingDeclaration); + writeTypeParametersOfSymbol(symbol.parent, enclosingDeclaration); + } + else { + var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128).parent; + var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); + if (signatureDeclaration.kind === 139) { + displayParts.push(ts.keywordPart(88)); + displayParts.push(ts.spacePart()); + } + else if (signatureDeclaration.kind !== 138 && signatureDeclaration.name) { + addFullSymbolName(signatureDeclaration.symbol); + } + displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32)); + } + } + if (symbolFlags & 8) { + addPrefixForAnyFunctionOrVar(symbol, "enum member"); + var declaration = symbol.declarations[0]; + if (declaration.kind === 226) { + var constantValue = typeResolver.getConstantValue(declaration); + if (constantValue !== undefined) { + displayParts.push(ts.spacePart()); + displayParts.push(ts.operatorPart(53)); + displayParts.push(ts.spacePart()); + displayParts.push(ts.displayPart(constantValue.toString(), SymbolDisplayPartKind.numericLiteral)); + } + } + } + if (symbolFlags & 8388608) { + addNewLineIfDisplayPartsExist(); + displayParts.push(ts.keywordPart(85)); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + ts.forEach(symbol.declarations, function (declaration) { + if (declaration.kind === 208) { + var importEqualsDeclaration = declaration; + if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { + displayParts.push(ts.spacePart()); + displayParts.push(ts.operatorPart(53)); + displayParts.push(ts.spacePart()); + displayParts.push(ts.keywordPart(118)); + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.displayPart(ts.getTextOfNode(ts.getExternalModuleImportEqualsDeclarationExpression(importEqualsDeclaration)), SymbolDisplayPartKind.stringLiteral)); + displayParts.push(ts.punctuationPart(17)); + } + else { + var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); + if (internalAliasSymbol) { + displayParts.push(ts.spacePart()); + displayParts.push(ts.operatorPart(53)); + displayParts.push(ts.spacePart()); + addFullSymbolName(internalAliasSymbol, enclosingDeclaration); + } + } + return true; + } + }); + } + if (!hasAddedSymbolInfo) { + if (symbolKind !== ScriptElementKind.unknown) { + if (type) { + addPrefixForAnyFunctionOrVar(symbol, symbolKind); + if (symbolKind === ScriptElementKind.memberVariableElement || + symbolFlags & 3 || + symbolKind === ScriptElementKind.localVariableElement) { + displayParts.push(ts.punctuationPart(51)); + displayParts.push(ts.spacePart()); + if (type.symbol && type.symbol.flags & 262144) { + var typeParameterParts = ts.mapToDisplayParts(function (writer) { + typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration); + }); + displayParts.push.apply(displayParts, typeParameterParts); + } + else { + displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, type, enclosingDeclaration)); + } + } + else if (symbolFlags & 16 || + symbolFlags & 8192 || + symbolFlags & 16384 || + symbolFlags & 131072 || + symbolFlags & 98304 || + symbolKind === ScriptElementKind.memberFunctionElement) { + var allSignatures = type.getCallSignatures(); + addSignatureDisplayParts(allSignatures[0], allSignatures); + } + } + } + else { + symbolKind = getSymbolKind(symbol, typeResolver, location); + } + } + if (!documentation) { + documentation = symbol.getDocumentationComment(); + } + return { displayParts: displayParts, documentation: documentation, symbolKind: symbolKind }; + function addNewLineIfDisplayPartsExist() { + if (displayParts.length) { + displayParts.push(ts.lineBreakPart()); + } + } + function addFullSymbolName(symbol, enclosingDeclaration) { + var fullSymbolDisplayParts = ts.symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, undefined, 1 | 2); + displayParts.push.apply(displayParts, fullSymbolDisplayParts); + } + function addPrefixForAnyFunctionOrVar(symbol, symbolKind) { + addNewLineIfDisplayPartsExist(); + if (symbolKind) { + pushTypePart(symbolKind); + displayParts.push(ts.spacePart()); + addFullSymbolName(symbol); + } + } + function pushTypePart(symbolKind) { + switch (symbolKind) { + case ScriptElementKind.variableElement: + case ScriptElementKind.functionElement: + case ScriptElementKind.letElement: + case ScriptElementKind.constElement: + case ScriptElementKind.constructorImplementationElement: + displayParts.push(ts.textOrKeywordPart(symbolKind)); + return; + default: + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.textOrKeywordPart(symbolKind)); + displayParts.push(ts.punctuationPart(17)); + return; + } + } + function addSignatureDisplayParts(signature, allSignatures, flags) { + displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32)); + if (allSignatures.length > 1) { + displayParts.push(ts.spacePart()); + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.operatorPart(33)); + displayParts.push(ts.displayPart((allSignatures.length - 1).toString(), SymbolDisplayPartKind.numericLiteral)); + displayParts.push(ts.spacePart()); + displayParts.push(ts.textPart(allSignatures.length === 2 ? "overload" : "overloads")); + displayParts.push(ts.punctuationPart(17)); + } + documentation = signature.getDocumentationComment(); + } + function writeTypeParametersOfSymbol(symbol, enclosingDeclaration) { + var typeParameterParts = ts.mapToDisplayParts(function (writer) { + typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration); + }); + displayParts.push.apply(displayParts, typeParameterParts); + } + } + function getQuickInfoAtPosition(fileName, position) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, position); + if (!node) { + return undefined; + } + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (!symbol) { + switch (node.kind) { + case 65: + case 155: + case 126: + case 93: + case 91: + var type = typeInfoResolver.getTypeAtLocation(node); + if (type) { + return { + kind: ScriptElementKind.unknown, + kindModifiers: ScriptElementKindModifier.none, + textSpan: ts.createTextSpan(node.getStart(), node.getWidth()), + displayParts: ts.typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)), + documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined + }; + } + } + return undefined; + } + var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node); + return { + kind: displayPartsDocumentationsAndKind.symbolKind, + kindModifiers: getSymbolModifiers(symbol), + textSpan: ts.createTextSpan(node.getStart(), node.getWidth()), + displayParts: displayPartsDocumentationsAndKind.displayParts, + documentation: displayPartsDocumentationsAndKind.documentation + }; + } + function createDefinitionInfo(node, symbolKind, symbolName, containerName) { + return { + fileName: node.getSourceFile().fileName, + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()), + kind: symbolKind, + name: symbolName, + containerKind: undefined, + containerName: containerName + }; + } + function getDefinitionAtPosition(fileName, position) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, position); + if (!node) { + return undefined; + } + if (isJumpStatementTarget(node)) { + var labelName = node.text; + var label = getTargetLabel(node.parent, node.text); + return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; + } + var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); + if (comment) { + var referenceFile = ts.tryResolveScriptReference(program, sourceFile, comment); + if (referenceFile) { + return [{ + fileName: referenceFile.fileName, + textSpan: ts.createTextSpanFromBounds(0, 0), + kind: ScriptElementKind.scriptElement, + name: comment.fileName, + containerName: undefined, + containerKind: undefined + }]; + } + return undefined; + } + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (!symbol) { + return undefined; + } + if (symbol.flags & 8388608) { + var declaration = symbol.declarations[0]; + if (node.kind === 65 && node.parent === declaration) { + symbol = typeInfoResolver.getAliasedSymbol(symbol); + } + } + if (node.parent.kind === 225) { + var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); + if (!shorthandSymbol) { + return []; + } + var shorthandDeclarations = shorthandSymbol.getDeclarations(); + var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); + var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); + var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); + return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); }); + } + var result = []; + var declarations = symbol.getDeclarations(); + var symbolName = typeInfoResolver.symbolToString(symbol); + var symbolKind = getSymbolKind(symbol, typeInfoResolver, node); + var containerSymbol = symbol.parent; + var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; + if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && + !tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { + ts.forEach(declarations, function (declaration) { + result.push(createDefinitionInfo(declaration, symbolKind, symbolName, containerName)); + }); + } + return result; + function tryAddConstructSignature(symbol, location, symbolKind, symbolName, containerName, result) { + if (isNewExpressionTarget(location) || location.kind === 114) { + if (symbol.flags & 32) { + var classDeclaration = symbol.getDeclarations()[0]; + ts.Debug.assert(classDeclaration && classDeclaration.kind === 201); + return tryAddSignature(classDeclaration.members, true, symbolKind, symbolName, containerName, result); + } + } + return false; + } + function tryAddCallSignature(symbol, location, symbolKind, symbolName, containerName, result) { + if (isCallExpressionTarget(location) || isNewExpressionTarget(location) || isNameOfFunctionDeclaration(location)) { + return tryAddSignature(symbol.declarations, false, symbolKind, symbolName, containerName, result); + } + return false; + } + function tryAddSignature(signatureDeclarations, selectConstructors, symbolKind, symbolName, containerName, result) { + var declarations = []; + var definition; + ts.forEach(signatureDeclarations, function (d) { + if ((selectConstructors && d.kind === 135) || + (!selectConstructors && (d.kind === 200 || d.kind === 134 || d.kind === 133))) { + declarations.push(d); + if (d.body) + definition = d; + } + }); + if (definition) { + result.push(createDefinitionInfo(definition, symbolKind, symbolName, containerName)); + return true; + } + else if (declarations.length) { + result.push(createDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); + return true; + } + return false; + } + } + function getOccurrencesAtPosition(fileName, position) { + var results = getOccurrencesAtPositionCore(fileName, position); + if (results) { + var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName)); + results.forEach(function (value) { + var targetFile = getCanonicalFileName(ts.normalizeSlashes(value.fileName)); + ts.Debug.assert(sourceFile == targetFile, "Unexpected file in results. Found results in " + targetFile + " expected only results in " + sourceFile + "."); + }); + } + return results; + } + function getOccurrencesAtPositionCore(fileName, position) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var node = ts.getTouchingWord(sourceFile, position); + if (!node) { + return undefined; + } + if (node.kind === 65 || node.kind === 93 || node.kind === 91 || + isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { + return convertReferences(getReferencesForNode(node, [sourceFile], true, false, false)); + } + switch (node.kind) { + case 84: + case 76: + if (hasKind(node.parent, 183)) { + return getIfElseOccurrences(node.parent); + } + break; + case 90: + if (hasKind(node.parent, 191)) { + return getReturnOccurrences(node.parent); + } + break; + case 94: + if (hasKind(node.parent, 195)) { + return getThrowOccurrences(node.parent); + } + break; + case 68: + if (hasKind(parent(parent(node)), 196)) { + return getTryCatchFinallyOccurrences(node.parent.parent); + } + break; + case 96: + case 81: + if (hasKind(parent(node), 196)) { + return getTryCatchFinallyOccurrences(node.parent); + } + break; + case 92: + if (hasKind(node.parent, 193)) { + return getSwitchCaseDefaultOccurrences(node.parent); + } + break; + case 67: + case 73: + if (hasKind(parent(parent(parent(node))), 193)) { + return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); + } + break; + case 66: + case 71: + if (hasKind(node.parent, 190) || hasKind(node.parent, 189)) { + return getBreakOrContinueStatementOccurences(node.parent); + } + break; + case 82: + if (hasKind(node.parent, 186) || + hasKind(node.parent, 187) || + hasKind(node.parent, 188)) { + return getLoopBreakContinueOccurrences(node.parent); + } + break; + case 100: + case 75: + if (hasKind(node.parent, 185) || hasKind(node.parent, 184)) { + return getLoopBreakContinueOccurrences(node.parent); + } + break; + case 114: + if (hasKind(node.parent, 135)) { + return getConstructorOccurrences(node.parent); + } + break; + case 116: + case 120: + if (hasKind(node.parent, 136) || hasKind(node.parent, 137)) { + return getGetAndSetOccurrences(node.parent); + } + default: + if (ts.isModifier(node.kind) && node.parent && + (ts.isDeclaration(node.parent) || node.parent.kind === 180)) { + return getModifierOccurrences(node.kind, node.parent); + } + } + return undefined; + function getIfElseOccurrences(ifStatement) { + var keywords = []; + while (hasKind(ifStatement.parent, 183) && ifStatement.parent.elseStatement === ifStatement) { + ifStatement = ifStatement.parent; + } + while (ifStatement) { + var children = ifStatement.getChildren(); + pushKeywordIf(keywords, children[0], 84); + for (var i = children.length - 1; i >= 0; i--) { + if (pushKeywordIf(keywords, children[i], 76)) { + break; + } + } + if (!hasKind(ifStatement.elseStatement, 183)) { + break; + } + ifStatement = ifStatement.elseStatement; + } + var result = []; + for (var i = 0; i < keywords.length; i++) { + if (keywords[i].kind === 76 && i < keywords.length - 1) { + var elseKeyword = keywords[i]; + var ifKeyword = keywords[i + 1]; + var shouldHighlightNextKeyword = true; + for (var j = ifKeyword.getStart() - 1; j >= elseKeyword.end; j--) { + if (!ts.isWhiteSpace(sourceFile.text.charCodeAt(j))) { + shouldHighlightNextKeyword = false; + break; + } + } + if (shouldHighlightNextKeyword) { + result.push({ + fileName: fileName, + textSpan: ts.createTextSpanFromBounds(elseKeyword.getStart(), ifKeyword.end), + isWriteAccess: false + }); + i++; + continue; + } + } + result.push(getReferenceEntryFromNode(keywords[i])); + } + return result; + } + function getReturnOccurrences(returnStatement) { + var func = ts.getContainingFunction(returnStatement); + if (!(func && hasKind(func.body, 179))) { + return undefined; + } + var keywords = []; + ts.forEachReturnStatement(func.body, function (returnStatement) { + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); + }); + ts.forEach(aggregateOwnedThrowStatements(func.body), function (throwStatement) { + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); + }); + return ts.map(keywords, getReferenceEntryFromNode); + } + function getThrowOccurrences(throwStatement) { + var owner = getThrowStatementOwner(throwStatement); + if (!owner) { + return undefined; + } + var keywords = []; + ts.forEach(aggregateOwnedThrowStatements(owner), function (throwStatement) { + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); + }); + if (ts.isFunctionBlock(owner)) { + ts.forEachReturnStatement(owner, function (returnStatement) { + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); + }); + } + return ts.map(keywords, getReferenceEntryFromNode); + } + function aggregateOwnedThrowStatements(node) { + var statementAccumulator = []; + aggregate(node); + return statementAccumulator; + function aggregate(node) { + if (node.kind === 195) { + statementAccumulator.push(node); + } + else if (node.kind === 196) { + var tryStatement = node; + if (tryStatement.catchClause) { + aggregate(tryStatement.catchClause); + } + else { + aggregate(tryStatement.tryBlock); + } + if (tryStatement.finallyBlock) { + aggregate(tryStatement.finallyBlock); + } + } + else if (!ts.isFunctionLike(node)) { + ts.forEachChild(node, aggregate); + } + } + ; + } + function getThrowStatementOwner(throwStatement) { + var child = throwStatement; + while (child.parent) { + var parent_9 = child.parent; + if (ts.isFunctionBlock(parent_9) || parent_9.kind === 227) { + return parent_9; + } + if (parent_9.kind === 196) { + var tryStatement = parent_9; + if (tryStatement.tryBlock === child && tryStatement.catchClause) { + return child; + } + } + child = parent_9; + } + return undefined; + } + function getTryCatchFinallyOccurrences(tryStatement) { + var keywords = []; + pushKeywordIf(keywords, tryStatement.getFirstToken(), 96); + if (tryStatement.catchClause) { + pushKeywordIf(keywords, tryStatement.catchClause.getFirstToken(), 68); + } + if (tryStatement.finallyBlock) { + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); + pushKeywordIf(keywords, finallyKeyword, 81); + } + return ts.map(keywords, getReferenceEntryFromNode); + } + function getLoopBreakContinueOccurrences(loopNode) { + var keywords = []; + if (pushKeywordIf(keywords, loopNode.getFirstToken(), 82, 100, 75)) { + if (loopNode.kind === 184) { + var loopTokens = loopNode.getChildren(); + for (var i = loopTokens.length - 1; i >= 0; i--) { + if (pushKeywordIf(keywords, loopTokens[i], 100)) { + break; + } + } + } + } + var breaksAndContinues = aggregateAllBreakAndContinueStatements(loopNode.statement); + ts.forEach(breaksAndContinues, function (statement) { + if (ownsBreakOrContinueStatement(loopNode, statement)) { + pushKeywordIf(keywords, statement.getFirstToken(), 66, 71); + } + }); + return ts.map(keywords, getReferenceEntryFromNode); + } + function getSwitchCaseDefaultOccurrences(switchStatement) { + var keywords = []; + pushKeywordIf(keywords, switchStatement.getFirstToken(), 92); + ts.forEach(switchStatement.caseBlock.clauses, function (clause) { + pushKeywordIf(keywords, clause.getFirstToken(), 67, 73); + var breaksAndContinues = aggregateAllBreakAndContinueStatements(clause); + ts.forEach(breaksAndContinues, function (statement) { + if (ownsBreakOrContinueStatement(switchStatement, statement)) { + pushKeywordIf(keywords, statement.getFirstToken(), 66); + } + }); + }); + return ts.map(keywords, getReferenceEntryFromNode); + } + function getBreakOrContinueStatementOccurences(breakOrContinueStatement) { + var owner = getBreakOrContinueOwner(breakOrContinueStatement); + if (owner) { + switch (owner.kind) { + case 186: + case 187: + case 188: + case 184: + case 185: + return getLoopBreakContinueOccurrences(owner); + case 193: + return getSwitchCaseDefaultOccurrences(owner); + } + } + return undefined; + } + function aggregateAllBreakAndContinueStatements(node) { + var statementAccumulator = []; + aggregate(node); + return statementAccumulator; + function aggregate(node) { + if (node.kind === 190 || node.kind === 189) { + statementAccumulator.push(node); + } + else if (!ts.isFunctionLike(node)) { + ts.forEachChild(node, aggregate); + } + } + ; + } + function ownsBreakOrContinueStatement(owner, statement) { + var actualOwner = getBreakOrContinueOwner(statement); + return actualOwner && actualOwner === owner; + } + function getBreakOrContinueOwner(statement) { + for (var node_1 = statement.parent; node_1; node_1 = node_1.parent) { + switch (node_1.kind) { + case 193: + if (statement.kind === 189) { + continue; + } + case 186: + case 187: + case 188: + case 185: + case 184: + if (!statement.label || isLabeledBy(node_1, statement.label.text)) { + return node_1; + } + break; + default: + if (ts.isFunctionLike(node_1)) { + return undefined; + } + break; + } + } + return undefined; + } + function getConstructorOccurrences(constructorDeclaration) { + var declarations = constructorDeclaration.symbol.getDeclarations(); + var keywords = []; + ts.forEach(declarations, function (declaration) { + ts.forEach(declaration.getChildren(), function (token) { + return pushKeywordIf(keywords, token, 114); + }); + }); + return ts.map(keywords, getReferenceEntryFromNode); + } + function getGetAndSetOccurrences(accessorDeclaration) { + var keywords = []; + tryPushAccessorKeyword(accessorDeclaration.symbol, 136); + tryPushAccessorKeyword(accessorDeclaration.symbol, 137); + return ts.map(keywords, getReferenceEntryFromNode); + function tryPushAccessorKeyword(accessorSymbol, accessorKind) { + var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); + if (accessor) { + ts.forEach(accessor.getChildren(), function (child) { return pushKeywordIf(keywords, child, 116, 120); }); + } + } + } + function getModifierOccurrences(modifier, declaration) { + var container = declaration.parent; + if (ts.isAccessibilityModifier(modifier)) { + if (!(container.kind === 201 || + (declaration.kind === 129 && hasKind(container, 135)))) { + return undefined; + } + } + else if (modifier === 110) { + if (container.kind !== 201) { + return undefined; + } + } + else if (modifier === 78 || modifier === 115) { + if (!(container.kind === 206 || container.kind === 227)) { + return undefined; + } + } + else { + return undefined; + } + var keywords = []; + var modifierFlag = getFlagFromModifier(modifier); + var nodes; + switch (container.kind) { + case 206: + case 227: + nodes = container.statements; + break; + case 135: + nodes = container.parameters.concat(container.parent.members); + break; + case 201: + nodes = container.members; + if (modifierFlag & 112) { + var constructor = ts.forEach(container.members, function (member) { + return member.kind === 135 && member; + }); + if (constructor) { + nodes = nodes.concat(constructor.parameters); + } + } + break; + default: + ts.Debug.fail("Invalid container kind."); + } + ts.forEach(nodes, function (node) { + if (node.modifiers && node.flags & modifierFlag) { + ts.forEach(node.modifiers, function (child) { return pushKeywordIf(keywords, child, modifier); }); + } + }); + return ts.map(keywords, getReferenceEntryFromNode); + function getFlagFromModifier(modifier) { + switch (modifier) { + case 109: + return 16; + case 107: + return 32; + case 108: + return 64; + case 110: + return 128; + case 78: + return 1; + case 115: + return 2; + default: + ts.Debug.fail(); + } + } + } + function hasKind(node, kind) { + return node !== undefined && node.kind === kind; + } + function parent(node) { + return node && node.parent; + } + function pushKeywordIf(keywordList, token) { + var expected = []; + for (var _i = 2; _i < arguments.length; _i++) { + expected[_i - 2] = arguments[_i]; + } + if (token && ts.contains(expected, token.kind)) { + keywordList.push(token); + return true; + } + return false; + } + } + function convertReferences(referenceSymbols) { + if (!referenceSymbols) { + return undefined; + } + var referenceEntries = []; + for (var _i = 0; _i < referenceSymbols.length; _i++) { + var referenceSymbol = referenceSymbols[_i]; + ts.addRange(referenceEntries, referenceSymbol.references); + } + return referenceEntries; + } + function findRenameLocations(fileName, position, findInStrings, findInComments) { + var referencedSymbols = findReferencedSymbols(fileName, position, findInStrings, findInComments); + return convertReferences(referencedSymbols); + } + function getReferencesAtPosition(fileName, position) { + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return convertReferences(referencedSymbols); + } + function findReferences(fileName, position) { + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return ts.filter(referencedSymbols, function (rs) { return !!rs.definition; }); + } + function findReferencedSymbols(fileName, position, findInStrings, findInComments) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, position); + if (!node) { + return undefined; + } + if (node.kind !== 65 && + !isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && + !isNameOfExternalModuleImportOrDeclaration(node)) { + return undefined; + } + ts.Debug.assert(node.kind === 65 || node.kind === 7 || node.kind === 8); + return getReferencesForNode(node, program.getSourceFiles(), false, findInStrings, findInComments); + } + function getReferencesForNode(node, sourceFiles, searchOnlyInCurrentFile, findInStrings, findInComments) { + if (isLabelName(node)) { + if (isJumpStatementTarget(node)) { + var labelDefinition = getTargetLabel(node.parent, node.text); + return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : undefined; + } + else { + return getLabelReferencesInNode(node.parent, node); + } + } + if (node.kind === 93) { + return getReferencesForThisKeyword(node, sourceFiles); + } + if (node.kind === 91) { + return getReferencesForSuperKeyword(node); + } + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (!symbol) { + return undefined; + } + var declarations = symbol.declarations; + if (!declarations || !declarations.length) { + return undefined; + } + var result; + var searchMeaning = getIntersectingMeaningFromDeclarations(getMeaningFromLocation(node), declarations); + var declaredName = getDeclaredName(symbol, node); + var scope = getSymbolScope(symbol); + var symbolToIndex = []; + if (scope) { + result = []; + getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); + } + else { + if (searchOnlyInCurrentFile) { + ts.Debug.assert(sourceFiles.length === 1); + result = []; + getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); + } + else { + var internedName = getInternedName(symbol, node, declarations); + ts.forEach(sourceFiles, function (sourceFile) { + cancellationToken.throwIfCancellationRequested(); + var nameTable = getNameTable(sourceFile); + if (ts.lookUp(nameTable, internedName)) { + result = result || []; + getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); + } + }); + } + } + return result; + function getDefinition(symbol) { + var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node); + var name = ts.map(info.displayParts, function (p) { return p.text; }).join(""); + var declarations = symbol.declarations; + if (!declarations || declarations.length === 0) { + return undefined; + } + return { + containerKind: "", + containerName: "", + name: name, + kind: info.symbolKind, + fileName: declarations[0].getSourceFile().fileName, + textSpan: ts.createTextSpan(declarations[0].getStart(), 0) + }; + } + function isImportOrExportSpecifierName(location) { + return location.parent && + (location.parent.kind === 213 || location.parent.kind === 217) && + location.parent.propertyName === location; + } + function isImportOrExportSpecifierImportSymbol(symbol) { + return (symbol.flags & 8388608) && ts.forEach(symbol.declarations, function (declaration) { + return declaration.kind === 213 || declaration.kind === 217; + }); + } + function getDeclaredName(symbol, location) { + var functionExpression = ts.forEach(symbol.declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name; + if (functionExpression && functionExpression.name) { + name = functionExpression.name.text; + } + if (isImportOrExportSpecifierName(location)) { + return location.getText(); + } + name = typeInfoResolver.symbolToString(symbol); + return stripQuotes(name); + } + function getInternedName(symbol, location, declarations) { + if (isImportOrExportSpecifierName(location)) { + return location.getText(); + } + var functionExpression = ts.forEach(declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name = functionExpression && functionExpression.name + ? functionExpression.name.text + : symbol.name; + return stripQuotes(name); + } + function stripQuotes(name) { + var length = name.length; + if (length >= 2 && name.charCodeAt(0) === 34 && name.charCodeAt(length - 1) === 34) { + return name.substring(1, length - 1); + } + ; + return name; + } + function getSymbolScope(symbol) { + if (symbol.flags & (4 | 8192)) { + var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 32) ? d : undefined; }); + if (privateDeclaration) { + return ts.getAncestor(privateDeclaration, 201); + } + } + if (symbol.flags & 8388608) { + return undefined; + } + if (symbol.parent || (symbol.flags & 268435456)) { + return undefined; + } + var scope = undefined; + var declarations = symbol.getDeclarations(); + if (declarations) { + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var container = getContainerNode(declaration); + if (!container) { + return undefined; + } + if (scope && scope !== container) { + return undefined; + } + if (container.kind === 227 && !ts.isExternalModule(container)) { + return undefined; + } + scope = container; + } + } + return scope; + } + function getPossibleSymbolReferencePositions(sourceFile, symbolName, start, end) { + var positions = []; + if (!symbolName || !symbolName.length) { + return positions; + } + var text = sourceFile.text; + var sourceLength = text.length; + var symbolNameLength = symbolName.length; + var position = text.indexOf(symbolName, start); + while (position >= 0) { + cancellationToken.throwIfCancellationRequested(); + if (position > end) + break; + var endPosition = position + symbolNameLength; + if ((position === 0 || !ts.isIdentifierPart(text.charCodeAt(position - 1), 2)) && + (endPosition === sourceLength || !ts.isIdentifierPart(text.charCodeAt(endPosition), 2))) { + positions.push(position); + } + position = text.indexOf(symbolName, position + symbolNameLength + 1); + } + return positions; + } + function getLabelReferencesInNode(container, targetLabel) { + var references = []; + var sourceFile = container.getSourceFile(); + var labelName = targetLabel.text; + var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd()); + ts.forEach(possiblePositions, function (position) { + cancellationToken.throwIfCancellationRequested(); + var node = ts.getTouchingWord(sourceFile, position); + if (!node || node.getWidth() !== labelName.length) { + return; + } + if (node === targetLabel || + (isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel)) { + references.push(getReferenceEntryFromNode(node)); + } + }); + var definition = { + containerKind: "", + containerName: "", + fileName: targetLabel.getSourceFile().fileName, + kind: ScriptElementKind.label, + name: labelName, + textSpan: ts.createTextSpanFromBounds(targetLabel.getStart(), targetLabel.getEnd()) + }; + return [{ definition: definition, references: references }]; + } + function isValidReferencePosition(node, searchSymbolName) { + if (node) { + switch (node.kind) { + case 65: + return node.getWidth() === searchSymbolName.length; + case 8: + if (isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || + isNameOfExternalModuleImportOrDeclaration(node)) { + return node.getWidth() === searchSymbolName.length + 2; + } + break; + case 7: + if (isLiteralNameOfPropertyDeclarationOrIndexAccess(node)) { + return node.getWidth() === searchSymbolName.length; + } + break; + } + } + return false; + } + function getReferencesInNode(container, searchSymbol, searchText, searchLocation, searchMeaning, findInStrings, findInComments, result, symbolToIndex) { + var sourceFile = container.getSourceFile(); + var tripleSlashDirectivePrefixRegex = /^\/\/\/\s*= 0) { + var referencedSymbol = getReferencedSymbol(shorthandValueSymbol); + referencedSymbol.references.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); + } + } + }); + } + return; + function getReferencedSymbol(symbol) { + var symbolId = ts.getSymbolId(symbol); + var index = symbolToIndex[symbolId]; + if (index === undefined) { + index = result.length; + symbolToIndex[symbolId] = index; + result.push({ + definition: getDefinition(symbol), + references: [] + }); + } + return result[index]; + } + function isInString(position) { + var token = ts.getTokenAtPosition(sourceFile, position); + return token && token.kind === 8 && position > token.getStart(); + } + function isInComment(position) { + var token = ts.getTokenAtPosition(sourceFile, position); + if (token && position < token.getStart()) { + var commentRanges = ts.getLeadingCommentRanges(sourceFile.text, token.pos); + return ts.forEach(commentRanges, function (c) { + if (c.pos < position && position < c.end) { + var commentText = sourceFile.text.substring(c.pos, c.end); + if (!tripleSlashDirectivePrefixRegex.test(commentText)) { + return true; + } + } + }); + } + return false; + } + } + function getReferencesForSuperKeyword(superKeyword) { + var searchSpaceNode = ts.getSuperContainer(superKeyword, false); + if (!searchSpaceNode) { + return undefined; + } + var staticFlag = 128; + switch (searchSpaceNode.kind) { + case 132: + case 131: + case 134: + case 133: + case 135: + case 136: + case 137: + staticFlag &= searchSpaceNode.flags; + searchSpaceNode = searchSpaceNode.parent; + break; + default: + return undefined; + } + var references = []; + var sourceFile = searchSpaceNode.getSourceFile(); + var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + ts.forEach(possiblePositions, function (position) { + cancellationToken.throwIfCancellationRequested(); + var node = ts.getTouchingWord(sourceFile, position); + if (!node || node.kind !== 91) { + return; + } + var container = ts.getSuperContainer(node, false); + if (container && (128 & container.flags) === staticFlag && container.parent.symbol === searchSpaceNode.symbol) { + references.push(getReferenceEntryFromNode(node)); + } + }); + var definition = getDefinition(searchSpaceNode.symbol); + return [{ definition: definition, references: references }]; + } + function getReferencesForThisKeyword(thisOrSuperKeyword, sourceFiles) { + var searchSpaceNode = ts.getThisContainer(thisOrSuperKeyword, false); + var staticFlag = 128; + switch (searchSpaceNode.kind) { + case 134: + case 133: + if (ts.isObjectLiteralMethod(searchSpaceNode)) { + break; + } + case 132: + case 131: + case 135: + case 136: + case 137: + staticFlag &= searchSpaceNode.flags; + searchSpaceNode = searchSpaceNode.parent; + break; + case 227: + if (ts.isExternalModule(searchSpaceNode)) { + return undefined; + } + case 200: + case 162: + break; + default: + return undefined; + } + var references = []; + var possiblePositions; + if (searchSpaceNode.kind === 227) { + ts.forEach(sourceFiles, function (sourceFile) { + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); + getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); + }); + } + else { + var sourceFile = searchSpaceNode.getSourceFile(); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, references); + } + return [{ + definition: { + containerKind: "", + containerName: "", + fileName: node.getSourceFile().fileName, + kind: ScriptElementKind.variableElement, + name: "this", + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()) + }, + references: references + }]; + function getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result) { + ts.forEach(possiblePositions, function (position) { + cancellationToken.throwIfCancellationRequested(); + var node = ts.getTouchingWord(sourceFile, position); + if (!node || node.kind !== 93) { + return; + } + var container = ts.getThisContainer(node, false); + switch (searchSpaceNode.kind) { + case 162: + case 200: + if (searchSpaceNode.symbol === container.symbol) { + result.push(getReferenceEntryFromNode(node)); + } + break; + case 134: + case 133: + if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { + result.push(getReferenceEntryFromNode(node)); + } + break; + case 201: + if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 128) === staticFlag) { + result.push(getReferenceEntryFromNode(node)); + } + break; + case 227: + if (container.kind === 227 && !ts.isExternalModule(container)) { + result.push(getReferenceEntryFromNode(node)); + } + break; + } + }); + } + } + function populateSearchSymbolSet(symbol, location) { + var result = [symbol]; + if (isImportOrExportSpecifierImportSymbol(symbol)) { + result.push(typeInfoResolver.getAliasedSymbol(symbol)); + } + if (isNameOfPropertyAssignment(location)) { + ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) { + result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol)); + }); + var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent); + if (shorthandValueSymbol) { + result.push(shorthandValueSymbol); + } + } + ts.forEach(typeInfoResolver.getRootSymbols(symbol), function (rootSymbol) { + if (rootSymbol !== symbol) { + result.push(rootSymbol); + } + if (rootSymbol.parent && rootSymbol.parent.flags & (32 | 64)) { + getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result); + } + }); + return result; + } + function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { + if (symbol && symbol.flags & (32 | 64)) { + ts.forEach(symbol.getDeclarations(), function (declaration) { + if (declaration.kind === 201) { + getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); + ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); + } + else if (declaration.kind === 202) { + ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); + } + }); + } + return; + function getPropertySymbolFromTypeReference(typeReference) { + if (typeReference) { + var type = typeInfoResolver.getTypeAtLocation(typeReference); + if (type) { + var propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName); + if (propertySymbol) { + result.push(propertySymbol); + } + getPropertySymbolsFromBaseTypes(type.symbol, propertyName, result); + } + } + } + } + function getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation) { + if (searchSymbols.indexOf(referenceSymbol) >= 0) { + return referenceSymbol; + } + if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) { + var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol); + if (searchSymbols.indexOf(aliasedSymbol) >= 0) { + return aliasedSymbol; + } + } + if (isNameOfPropertyAssignment(referenceLocation)) { + return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) { + return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); + }); + } + return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) { + if (searchSymbols.indexOf(rootSymbol) >= 0) { + return rootSymbol; + } + if (rootSymbol.parent && rootSymbol.parent.flags & (32 | 64)) { + var result_2 = []; + getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2); + return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); + } + return undefined; + }); + } + function getPropertySymbolsFromContextualType(node) { + if (isNameOfPropertyAssignment(node)) { + var objectLiteral = node.parent.parent; + var contextualType = typeInfoResolver.getContextualType(objectLiteral); + var name_20 = node.text; + if (contextualType) { + if (contextualType.flags & 16384) { + var unionProperty = contextualType.getProperty(name_20); + if (unionProperty) { + return [unionProperty]; + } + else { + var result_3 = []; + ts.forEach(contextualType.types, function (t) { + var symbol = t.getProperty(name_20); + if (symbol) { + result_3.push(symbol); + } + }); + return result_3; + } + } + else { + var symbol_1 = contextualType.getProperty(name_20); + if (symbol_1) { + return [symbol_1]; + } + } + } + } + return undefined; + } + function getIntersectingMeaningFromDeclarations(meaning, declarations) { + if (declarations) { + var lastIterationMeaning; + do { + lastIterationMeaning = meaning; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var declarationMeaning = getMeaningFromDeclaration(declaration); + if (declarationMeaning & meaning) { + meaning |= declarationMeaning; + } + } + } while (meaning !== lastIterationMeaning); + } + return meaning; + } + } + function getReferenceEntryFromNode(node) { + var start = node.getStart(); + var end = node.getEnd(); + if (node.kind === 8) { + start += 1; + end -= 1; + } + return { + fileName: node.getSourceFile().fileName, + textSpan: ts.createTextSpanFromBounds(start, end), + isWriteAccess: isWriteAccess(node) + }; + } + function isWriteAccess(node) { + if (node.kind === 65 && ts.isDeclarationName(node)) { + return true; + } + var parent = node.parent; + if (parent) { + if (parent.kind === 168 || parent.kind === 167) { + return true; + } + else if (parent.kind === 169 && parent.left === node) { + var operator = parent.operatorToken.kind; + return 53 <= operator && operator <= 64; + } + } + return false; + } + function getNavigateToItems(searchValue, maxResultCount) { + synchronizeHostData(); + return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); + } + function containErrors(diagnostics) { + return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); + } + function getEmitOutput(fileName) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var outputFiles = []; + function writeFile(fileName, data, writeByteOrderMark) { + outputFiles.push({ + name: fileName, + writeByteOrderMark: writeByteOrderMark, + text: data + }); + } + var emitOutput = program.emit(sourceFile, writeFile); + return { + outputFiles: outputFiles, + emitSkipped: emitOutput.emitSkipped + }; + } + function getMeaningFromDeclaration(node) { + switch (node.kind) { + case 129: + case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + case 223: + return 1; + case 128: + case 202: + case 203: + case 145: + return 2; + case 201: + case 204: + return 1 | 2; + case 205: + if (node.name.kind === 8) { + return 4 | 1; + } + else if (ts.getModuleInstanceState(node) === 1) { + return 4 | 1; + } + else { + return 4; + } + case 212: + case 213: + case 208: + case 209: + case 214: + case 215: + return 1 | 2 | 4; + case 227: + return 4 | 1; + } + return 1 | 2 | 4; + ts.Debug.fail("Unknown declaration type"); + } + function isTypeReference(node) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { + node = node.parent; + } + return node.parent.kind === 141 || node.parent.kind === 177; + } + function isNamespaceReference(node) { + return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); + } + function isPropertyAccessNamespaceReference(node) { + var root = node; + var isLastClause = true; + if (root.parent.kind === 155) { + while (root.parent && root.parent.kind === 155) { + root = root.parent; + } + isLastClause = root.name === node; + } + if (!isLastClause && root.parent.kind === 177 && root.parent.parent.kind === 222) { + var decl = root.parent.parent.parent; + return (decl.kind === 201 && root.parent.parent.token === 103) || + (decl.kind === 202 && root.parent.parent.token === 79); + } + return false; + } + function isQualifiedNameNamespaceReference(node) { + var root = node; + var isLastClause = true; + if (root.parent.kind === 126) { + while (root.parent && root.parent.kind === 126) { + root = root.parent; + } + isLastClause = root.right === node; + } + return root.parent.kind === 141 && !isLastClause; + } + function isInRightSideOfImport(node) { + while (node.parent.kind === 126) { + node = node.parent; + } + return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; + } + function getMeaningFromRightHandSideOfImportEquals(node) { + ts.Debug.assert(node.kind === 65); + if (node.parent.kind === 126 && + node.parent.right === node && + node.parent.parent.kind === 208) { + return 1 | 2 | 4; + } + return 4; + } + function getMeaningFromLocation(node) { + if (node.parent.kind === 214) { + return 1 | 2 | 4; + } + else if (isInRightSideOfImport(node)) { + return getMeaningFromRightHandSideOfImportEquals(node); + } + else if (ts.isDeclarationName(node)) { + return getMeaningFromDeclaration(node.parent); + } + else if (isTypeReference(node)) { + return 2; + } + else if (isNamespaceReference(node)) { + return 4; + } + else { + return 1; + } + } + function getSignatureHelpItems(fileName, position) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); + } + function getSourceFile(fileName) { + return syntaxTreeCache.getCurrentSourceFile(fileName); + } + function getNameOrDottedNameSpan(fileName, startPos, endPos) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, startPos); + if (!node) { + return; + } + switch (node.kind) { + case 155: + case 126: + case 8: + case 80: + case 95: + case 89: + case 91: + case 93: + case 65: + break; + default: + return; + } + var nodeForStartPos = node; + while (true) { + if (isRightSideOfPropertyAccess(nodeForStartPos) || isRightSideOfQualifiedName(nodeForStartPos)) { + nodeForStartPos = nodeForStartPos.parent; + } + else if (isNameOfModuleDeclaration(nodeForStartPos)) { + if (nodeForStartPos.parent.parent.kind === 205 && + nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { + nodeForStartPos = nodeForStartPos.parent.parent.name; + } + else { + break; + } + } + else { + break; + } + } + return ts.createTextSpanFromBounds(nodeForStartPos.getStart(), node.getEnd()); + } + function getBreakpointStatementAtPosition(fileName, position) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.BreakpointResolver.spanInSourceFileAtLocation(sourceFile, position); + } + function getNavigationBarItems(fileName) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.NavigationBar.getNavigationBarItems(sourceFile); + } + function getSemanticClassifications(fileName, span) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var result = []; + processNode(sourceFile); + return result; + function classifySymbol(symbol, meaningAtPosition) { + var flags = symbol.getFlags(); + if (flags & 32) { + return ClassificationTypeNames.className; + } + else if (flags & 384) { + return ClassificationTypeNames.enumName; + } + else if (flags & 524288) { + return ClassificationTypeNames.typeAlias; + } + else if (meaningAtPosition & 2) { + if (flags & 64) { + return ClassificationTypeNames.interfaceName; + } + else if (flags & 262144) { + return ClassificationTypeNames.typeParameterName; + } + } + else if (flags & 1536) { + if (meaningAtPosition & 4 || + (meaningAtPosition & 1 && hasValueSideModule(symbol))) { + return ClassificationTypeNames.moduleName; + } + } + return undefined; + function hasValueSideModule(symbol) { + return ts.forEach(symbol.declarations, function (declaration) { + return declaration.kind === 205 && ts.getModuleInstanceState(declaration) == 1; + }); + } + } + function processNode(node) { + if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) { + if (node.kind === 65 && node.getWidth() > 0) { + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (symbol) { + var type = classifySymbol(symbol, getMeaningFromLocation(node)); + if (type) { + result.push({ + textSpan: ts.createTextSpan(node.getStart(), node.getWidth()), + classificationType: type + }); + } + } + } + ts.forEachChild(node, processNode); + } + } + } + function getSyntacticClassifications(fileName, span) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + var triviaScanner = ts.createScanner(2, false, sourceFile.text); + var mergeConflictScanner = ts.createScanner(2, false, sourceFile.text); + var result = []; + processElement(sourceFile); + return result; + function classifyLeadingTrivia(token) { + var tokenStart = ts.skipTrivia(sourceFile.text, token.pos, false); + if (tokenStart === token.pos) { + return; + } + triviaScanner.setTextPos(token.pos); + while (true) { + var start = triviaScanner.getTextPos(); + var kind = triviaScanner.scan(); + var end = triviaScanner.getTextPos(); + var width = end - start; + if (ts.textSpanIntersectsWith(span, start, width)) { + if (!ts.isTrivia(kind)) { + return; + } + if (ts.isComment(kind)) { + result.push({ + textSpan: ts.createTextSpan(start, width), + classificationType: ClassificationTypeNames.comment + }); + continue; + } + if (kind === 6) { + var text = sourceFile.text; + var ch = text.charCodeAt(start); + if (ch === 60 || ch === 62) { + result.push({ + textSpan: ts.createTextSpan(start, width), + classificationType: ClassificationTypeNames.comment + }); + continue; + } + ts.Debug.assert(ch === 61); + classifyDisabledMergeCode(text, start, end); + } + } + } + } + function classifyDisabledMergeCode(text, start, end) { + for (var i = start; i < end; i++) { + if (ts.isLineBreak(text.charCodeAt(i))) { + break; + } + } + result.push({ + textSpan: ts.createTextSpanFromBounds(start, i), + classificationType: ClassificationTypeNames.comment + }); + mergeConflictScanner.setTextPos(i); + while (mergeConflictScanner.getTextPos() < end) { + classifyDisabledCodeToken(); + } + } + function classifyDisabledCodeToken() { + var start = mergeConflictScanner.getTextPos(); + var tokenKind = mergeConflictScanner.scan(); + var end = mergeConflictScanner.getTextPos(); + var type = classifyTokenType(tokenKind); + if (type) { + result.push({ + textSpan: ts.createTextSpanFromBounds(start, end), + classificationType: type + }); + } + } + function classifyToken(token) { + classifyLeadingTrivia(token); + if (token.getWidth() > 0) { + var type = classifyTokenType(token.kind, token); + if (type) { + result.push({ + textSpan: ts.createTextSpan(token.getStart(), token.getWidth()), + classificationType: type + }); + } + } + } + function classifyTokenType(tokenKind, token) { + if (ts.isKeyword(tokenKind)) { + return ClassificationTypeNames.keyword; + } + if (tokenKind === 24 || tokenKind === 25) { + if (token && ts.getTypeArgumentOrTypeParameterList(token.parent)) { + return ClassificationTypeNames.punctuation; + } + } + if (ts.isPunctuation(tokenKind)) { + if (token) { + if (tokenKind === 53) { + if (token.parent.kind === 198 || + token.parent.kind === 132 || + token.parent.kind === 129) { + return ClassificationTypeNames.operator; + } + } + if (token.parent.kind === 169 || + token.parent.kind === 167 || + token.parent.kind === 168 || + token.parent.kind === 170) { + return ClassificationTypeNames.operator; + } + } + return ClassificationTypeNames.punctuation; + } + else if (tokenKind === 7) { + return ClassificationTypeNames.numericLiteral; + } + else if (tokenKind === 8) { + return ClassificationTypeNames.stringLiteral; + } + else if (tokenKind === 9) { + return ClassificationTypeNames.stringLiteral; + } + else if (ts.isTemplateLiteralKind(tokenKind)) { + return ClassificationTypeNames.stringLiteral; + } + else if (tokenKind === 65) { + if (token) { + switch (token.parent.kind) { + case 201: + if (token.parent.name === token) { + return ClassificationTypeNames.className; + } + return; + case 128: + if (token.parent.name === token) { + return ClassificationTypeNames.typeParameterName; + } + return; + case 202: + if (token.parent.name === token) { + return ClassificationTypeNames.interfaceName; + } + return; + case 204: + if (token.parent.name === token) { + return ClassificationTypeNames.enumName; + } + return; + case 205: + if (token.parent.name === token) { + return ClassificationTypeNames.moduleName; + } + return; + } + } + return ClassificationTypeNames.text; + } + } + function processElement(element) { + if (ts.textSpanIntersectsWith(span, element.getFullStart(), element.getFullWidth())) { + var children = element.getChildren(); + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; + if (ts.isToken(child)) { + classifyToken(child); + } + else { + processElement(child); + } + } + } + } + } + function getOutliningSpans(fileName) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.OutliningElementsCollector.collectElements(sourceFile); + } + function getBraceMatchingAtPosition(fileName, position) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + var result = []; + var token = ts.getTouchingToken(sourceFile, position); + if (token.getStart(sourceFile) === position) { + var matchKind = getMatchingTokenKind(token); + if (matchKind) { + var parentElement = token.parent; + var childNodes = parentElement.getChildren(sourceFile); + for (var _i = 0; _i < childNodes.length; _i++) { + var current = childNodes[_i]; + if (current.kind === matchKind) { + var range1 = ts.createTextSpan(token.getStart(sourceFile), token.getWidth(sourceFile)); + var range2 = ts.createTextSpan(current.getStart(sourceFile), current.getWidth(sourceFile)); + if (range1.start < range2.start) { + result.push(range1, range2); + } + else { + result.push(range2, range1); + } + break; + } + } + } + } + return result; + function getMatchingTokenKind(token) { + switch (token.kind) { + case 14: return 15; + case 16: return 17; + case 18: return 19; + case 24: return 25; + case 15: return 14; + case 17: return 16; + case 19: return 18; + case 25: return 24; + } + return undefined; + } + } + function getIndentationAtPosition(fileName, position, editorOptions) { + var start = new Date().getTime(); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + log("getIndentationAtPosition: getCurrentSourceFile: " + (new Date().getTime() - start)); + start = new Date().getTime(); + var result = ts.formatting.SmartIndenter.getIndentation(position, sourceFile, editorOptions); + log("getIndentationAtPosition: computeIndentation : " + (new Date().getTime() - start)); + return result; + } + function getFormattingEditsForRange(fileName, start, end, options) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.formatting.formatSelection(start, end, sourceFile, getRuleProvider(options), options); + } + function getFormattingEditsForDocument(fileName, options) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.formatting.formatDocument(sourceFile, getRuleProvider(options), options); + } + function getFormattingEditsAfterKeystroke(fileName, position, key, options) { + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + if (key === "}") { + return ts.formatting.formatOnClosingCurly(position, sourceFile, getRuleProvider(options), options); + } + else if (key === ";") { + return ts.formatting.formatOnSemicolon(position, sourceFile, getRuleProvider(options), options); + } + else if (key === "\n") { + return ts.formatting.formatOnEnter(position, sourceFile, getRuleProvider(options), options); + } + return []; + } + function getTodoComments(fileName, descriptors) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + cancellationToken.throwIfCancellationRequested(); + var fileContents = sourceFile.text; + var result = []; + if (descriptors.length > 0) { + var regExp = getTodoCommentsRegExp(); + var matchArray; + while (matchArray = regExp.exec(fileContents)) { + cancellationToken.throwIfCancellationRequested(); + var firstDescriptorCaptureIndex = 3; + ts.Debug.assert(matchArray.length === descriptors.length + firstDescriptorCaptureIndex); + var preamble = matchArray[1]; + var matchPosition = matchArray.index + preamble.length; + var token = ts.getTokenAtPosition(sourceFile, matchPosition); + if (!isInsideComment(sourceFile, token, matchPosition)) { + continue; + } + var descriptor = undefined; + for (var i = 0, n = descriptors.length; i < n; i++) { + if (matchArray[i + firstDescriptorCaptureIndex]) { + descriptor = descriptors[i]; + } + } + ts.Debug.assert(descriptor !== undefined); + if (isLetterOrDigit(fileContents.charCodeAt(matchPosition + descriptor.text.length))) { + continue; + } + var message = matchArray[2]; + result.push({ + descriptor: descriptor, + message: message, + position: matchPosition + }); + } + } + return result; + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + function getTodoCommentsRegExp() { + // NOTE: ?: means 'non-capture group'. It allows us to have groups without having to + // filter them out later in the final result array. + var singleLineCommentStart = /(?:\/\/+\s*)/.source; + var multiLineCommentStart = /(?:\/\*+\s*)/.source; + var anyNumberOfSpacesAndAsterixesAtStartOfLine = /(?:^(?:\s|\*)*)/.source; + var preamble = "(" + anyNumberOfSpacesAndAsterixesAtStartOfLine + "|" + singleLineCommentStart + "|" + multiLineCommentStart + ")"; + var literals = "(?:" + ts.map(descriptors, function (d) { return "(" + escapeRegExp(d.text) + ")"; }).join("|") + ")"; + var endOfLineOrEndOfComment = /(?:$|\*\/)/.source; + var messageRemainder = /(?:.*?)/.source; + var messagePortion = "(" + literals + messageRemainder + ")"; + var regExpString = preamble + messagePortion + endOfLineOrEndOfComment; + return new RegExp(regExpString, "gim"); + } + function isLetterOrDigit(char) { + return (char >= 97 && char <= 122) || + (char >= 65 && char <= 90) || + (char >= 48 && char <= 57); + } + } + function getRenameInfo(fileName, position) { + synchronizeHostData(); + var sourceFile = getValidSourceFile(fileName); + var node = ts.getTouchingWord(sourceFile, position); + if (node && node.kind === 65) { + var symbol = typeInfoResolver.getSymbolAtLocation(node); + if (symbol) { + var declarations = symbol.getDeclarations(); + if (declarations && declarations.length > 0) { + var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); + if (defaultLibFileName) { + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var sourceFile_1 = current.getSourceFile(); + if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key)); + } + } + } + var kind = getSymbolKind(symbol, typeInfoResolver, node); + if (kind) { + return { + canRename: true, + localizedErrorMessage: undefined, + displayName: symbol.name, + fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol), + kind: kind, + kindModifiers: getSymbolModifiers(symbol), + triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth()) + }; + } + } + } + } + return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_this_element.key)); + function getRenameInfoError(localizedErrorMessage) { + return { + canRename: false, + localizedErrorMessage: localizedErrorMessage, + displayName: undefined, + fullDisplayName: undefined, + kind: undefined, + kindModifiers: undefined, + triggerSpan: undefined + }; + } + } + return { + dispose: dispose, + cleanupSemanticCache: cleanupSemanticCache, + getSyntacticDiagnostics: getSyntacticDiagnostics, + getSemanticDiagnostics: getSemanticDiagnostics, + getCompilerOptionsDiagnostics: getCompilerOptionsDiagnostics, + getSyntacticClassifications: getSyntacticClassifications, + getSemanticClassifications: getSemanticClassifications, + getCompletionsAtPosition: getCompletionsAtPosition, + getCompletionEntryDetails: getCompletionEntryDetails, + getSignatureHelpItems: getSignatureHelpItems, + getQuickInfoAtPosition: getQuickInfoAtPosition, + getDefinitionAtPosition: getDefinitionAtPosition, + getReferencesAtPosition: getReferencesAtPosition, + findReferences: findReferences, + getOccurrencesAtPosition: getOccurrencesAtPosition, + getNameOrDottedNameSpan: getNameOrDottedNameSpan, + getBreakpointStatementAtPosition: getBreakpointStatementAtPosition, + getNavigateToItems: getNavigateToItems, + getRenameInfo: getRenameInfo, + findRenameLocations: findRenameLocations, + getNavigationBarItems: getNavigationBarItems, + getOutliningSpans: getOutliningSpans, + getTodoComments: getTodoComments, + getBraceMatchingAtPosition: getBraceMatchingAtPosition, + getIndentationAtPosition: getIndentationAtPosition, + getFormattingEditsForRange: getFormattingEditsForRange, + getFormattingEditsForDocument: getFormattingEditsForDocument, + getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, + getEmitOutput: getEmitOutput, + getSourceFile: getSourceFile, + getProgram: getProgram + }; + } + ts.createLanguageService = createLanguageService; + function getNameTable(sourceFile) { + if (!sourceFile.nameTable) { + initializeNameTable(sourceFile); + } + return sourceFile.nameTable; + } + ts.getNameTable = getNameTable; + function initializeNameTable(sourceFile) { + var nameTable = {}; + walk(sourceFile); + sourceFile.nameTable = nameTable; + function walk(node) { + switch (node.kind) { + case 65: + nameTable[node.text] = node.text; + break; + case 8: + case 7: + if (ts.isDeclarationName(node) || + node.parent.kind === 219 || + isArgumentOfElementAccessExpression(node)) { + nameTable[node.text] = node.text; + } + break; + default: + ts.forEachChild(node, walk); + } + } + } + function isArgumentOfElementAccessExpression(node) { + return node && + node.parent && + node.parent.kind === 156 && + node.parent.argumentExpression === node; + } + function createClassifier() { + var scanner = ts.createScanner(2, false); + var noRegexTable = []; + noRegexTable[65] = true; + noRegexTable[8] = true; + noRegexTable[7] = true; + noRegexTable[9] = true; + noRegexTable[93] = true; + noRegexTable[38] = true; + noRegexTable[39] = true; + noRegexTable[17] = true; + noRegexTable[19] = true; + noRegexTable[15] = true; + noRegexTable[95] = true; + noRegexTable[80] = true; + var templateStack = []; + function canFollow(keyword1, keyword2) { + if (ts.isAccessibilityModifier(keyword1)) { + if (keyword2 === 116 || + keyword2 === 120 || + keyword2 === 114 || + keyword2 === 110) { + return true; + } + return false; + } + return true; + } + function getClassificationsForLine(text, lexState, syntacticClassifierAbsent) { + var offset = 0; + var token = 0; + var lastNonTriviaToken = 0; + while (templateStack.length > 0) { + templateStack.pop(); + } + switch (lexState) { + case 3: + text = '"\\\n' + text; + offset = 3; + break; + case 2: + text = "'\\\n" + text; + offset = 3; + break; + case 1: + text = "/*\n" + text; + offset = 3; + break; + case 4: + text = "`\n" + text; + offset = 2; + break; + case 5: + text = "}\n" + text; + offset = 2; + case 6: + templateStack.push(11); + break; + } + scanner.setText(text); + var result = { + finalLexState: 0, + entries: [] + }; + var angleBracketStack = 0; + do { + token = scanner.scan(); + if (!ts.isTrivia(token)) { + if ((token === 36 || token === 57) && !noRegexTable[lastNonTriviaToken]) { + if (scanner.reScanSlashToken() === 9) { + token = 9; + } + } + else if (lastNonTriviaToken === 20 && isKeyword(token)) { + token = 65; + } + else if (isKeyword(lastNonTriviaToken) && isKeyword(token) && !canFollow(lastNonTriviaToken, token)) { + token = 65; + } + else if (lastNonTriviaToken === 65 && + token === 24) { + angleBracketStack++; + } + else if (token === 25 && angleBracketStack > 0) { + angleBracketStack--; + } + else if (token === 112 || + token === 121 || + token === 119 || + token === 113 || + token === 122) { + if (angleBracketStack > 0 && !syntacticClassifierAbsent) { + token = 65; + } + } + else if (token === 11) { + templateStack.push(token); + } + else if (token === 14) { + if (templateStack.length > 0) { + templateStack.push(token); + } + } + else if (token === 15) { + if (templateStack.length > 0) { + var lastTemplateStackToken = ts.lastOrUndefined(templateStack); + if (lastTemplateStackToken === 11) { + token = scanner.reScanTemplateToken(); + if (token === 13) { + templateStack.pop(); + } + else { + ts.Debug.assert(token === 12, "Should have been a template middle. Was " + token); + } + } + else { + ts.Debug.assert(lastTemplateStackToken === 14, "Should have been an open brace. Was: " + token); + templateStack.pop(); + } + } + } + lastNonTriviaToken = token; + } + processToken(); + } while (token !== 1); + return result; + function processToken() { + var start = scanner.getTokenPos(); + var end = scanner.getTextPos(); + addResult(end - start, classFromKind(token)); + if (end >= text.length) { + if (token === 8) { + var tokenText = scanner.getTokenText(); + if (scanner.isUnterminated()) { + var lastCharIndex = tokenText.length - 1; + var numBackslashes = 0; + while (tokenText.charCodeAt(lastCharIndex - numBackslashes) === 92) { + numBackslashes++; + } + if (numBackslashes & 1) { + var quoteChar = tokenText.charCodeAt(0); + result.finalLexState = quoteChar === 34 + ? 3 + : 2; + } + } + } + else if (token === 3) { + if (scanner.isUnterminated()) { + result.finalLexState = 1; + } + } + else if (ts.isTemplateLiteralKind(token)) { + if (scanner.isUnterminated()) { + if (token === 13) { + result.finalLexState = 5; + } + else if (token === 10) { + result.finalLexState = 4; + } + else { + ts.Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #" + token); + } + } + } + else if (templateStack.length > 0 && ts.lastOrUndefined(templateStack) === 11) { + result.finalLexState = 6; + } + } + } + function addResult(length, classification) { + if (length > 0) { + if (result.entries.length === 0) { + length -= offset; + } + result.entries.push({ length: length, classification: classification }); + } + } + } + function isBinaryExpressionOperatorToken(token) { + switch (token) { + case 35: + case 36: + case 37: + case 33: + case 34: + case 40: + case 41: + case 42: + case 24: + case 25: + case 26: + case 27: + case 87: + case 86: + case 28: + case 29: + case 30: + case 31: + case 43: + case 45: + case 44: + case 48: + case 49: + case 63: + case 62: + case 64: + case 59: + case 60: + case 61: + case 54: + case 55: + case 56: + case 57: + case 58: + case 53: + case 23: + return true; + default: + return false; + } + } + function isPrefixUnaryExpressionOperatorToken(token) { + switch (token) { + case 33: + case 34: + case 47: + case 46: + case 38: + case 39: + return true; + default: + return false; + } + } + function isKeyword(token) { + return token >= 66 && token <= 125; + } + function classFromKind(token) { + if (isKeyword(token)) { + return TokenClass.Keyword; + } + else if (isBinaryExpressionOperatorToken(token) || isPrefixUnaryExpressionOperatorToken(token)) { + return TokenClass.Operator; + } + else if (token >= 14 && token <= 64) { + return TokenClass.Punctuation; + } + switch (token) { + case 7: + return TokenClass.NumberLiteral; + case 8: + return TokenClass.StringLiteral; + case 9: + return TokenClass.RegExpLiteral; + case 6: + case 3: + case 2: + return TokenClass.Comment; + case 5: + case 4: + return TokenClass.Whitespace; + case 65: + default: + if (ts.isTemplateLiteralKind(token)) { + return TokenClass.StringLiteral; + } + return TokenClass.Identifier; + } + } + return { getClassificationsForLine: getClassificationsForLine }; + } + ts.createClassifier = createClassifier; + function getDefaultLibFilePath(options) { + if (typeof __dirname !== "undefined") { + return __dirname + ts.directorySeparator + ts.getDefaultLibFileName(options); + } + throw new Error("getDefaultLibFilePath is only supported when consumed as a node module. "); + } + ts.getDefaultLibFilePath = getDefaultLibFilePath; + function initializeServices() { + ts.objectAllocator = { + getNodeConstructor: function (kind) { + function Node() { + } + var proto = kind === 227 ? new SourceFileObject() : new NodeObject(); + proto.kind = kind; + proto.pos = 0; + proto.end = 0; + proto.flags = 0; + proto.parent = undefined; + Node.prototype = proto; + return Node; + }, + getSymbolConstructor: function () { return SymbolObject; }, + getTypeConstructor: function () { return TypeObject; }, + getSignatureConstructor: function () { return SignatureObject; } + }; + } + initializeServices(); +})(ts || (ts = {})); +/// +/// +/// +/// +/// +var ts; +(function (ts) { + var server; + (function (server) { + var spaceCache = []; + function generateSpaces(n) { + if (!spaceCache[n]) { + var strBuilder = ""; + for (var i = 0; i < n; i++) { + strBuilder += " "; + } + spaceCache[n] = strBuilder; + } + return spaceCache[n]; + } + server.generateSpaces = generateSpaces; + function compareNumber(a, b) { + if (a < b) { + return -1; + } + else if (a == b) { + return 0; + } + else + return 1; + } + function compareFileStart(a, b) { + if (a.file < b.file) { + return -1; + } + else if (a.file == b.file) { + var n = compareNumber(a.start.line, b.start.line); + if (n == 0) { + return compareNumber(a.start.offset, b.start.offset); + } + else + return n; + } + else { + return 1; + } + } + function formatDiag(fileName, project, diag) { + return { + start: project.compilerService.host.positionToLineOffset(fileName, diag.start), + end: project.compilerService.host.positionToLineOffset(fileName, diag.start + diag.length), + text: ts.flattenDiagnosticMessageText(diag.messageText, "\n") + }; + } + function allEditsBeforePos(edits, pos) { + for (var i = 0, len = edits.length; i < len; i++) { + if (ts.textSpanEnd(edits[i].span) >= pos) { + return false; + } + } + return true; + } + var CommandNames; + (function (CommandNames) { + CommandNames.Change = "change"; + CommandNames.Close = "close"; + CommandNames.Completions = "completions"; + CommandNames.CompletionDetails = "completionEntryDetails"; + CommandNames.SignatureHelp = "signatureHelp"; + CommandNames.Configure = "configure"; + CommandNames.Definition = "definition"; + CommandNames.Format = "format"; + CommandNames.Formatonkey = "formatonkey"; + CommandNames.Geterr = "geterr"; + CommandNames.NavBar = "navbar"; + CommandNames.Navto = "navto"; + CommandNames.Open = "open"; + CommandNames.Quickinfo = "quickinfo"; + CommandNames.References = "references"; + CommandNames.Reload = "reload"; + CommandNames.Rename = "rename"; + CommandNames.Saveto = "saveto"; + CommandNames.Brace = "brace"; + CommandNames.Unknown = "unknown"; + })(CommandNames = server.CommandNames || (server.CommandNames = {})); + var Errors; + (function (Errors) { + Errors.NoProject = new Error("No Project."); + })(Errors || (Errors = {})); + var Session = (function () { + function Session(host, logger) { + var _this = this; + this.host = host; + this.logger = logger; + this.pendingOperation = false; + this.fileHash = {}; + this.nextFileId = 1; + this.changeSeq = 0; + this.projectService = + new server.ProjectService(host, logger, function (eventName, project, fileName) { + _this.handleEvent(eventName, project, fileName); + }); + } + Session.prototype.handleEvent = function (eventName, project, fileName) { + var _this = this; + if (eventName == "context") { + this.projectService.log("got context event, updating diagnostics for" + fileName, "Info"); + this.updateErrorCheck([{ fileName: fileName, project: project }], this.changeSeq, function (n) { return n == _this.changeSeq; }, 100); + } + }; + Session.prototype.logError = function (err, cmd) { + var typedErr = err; + var msg = "Exception on executing command " + cmd; + if (typedErr.message) { + msg += ":\n" + typedErr.message; + if (typedErr.stack) { + msg += "\n" + typedErr.stack; + } + } + this.projectService.log(msg); + }; + Session.prototype.sendLineToClient = function (line) { + this.host.write(line + this.host.newLine); + }; + Session.prototype.send = function (msg) { + var json = JSON.stringify(msg); + if (this.logger.isVerbose()) { + this.logger.info(msg.type + ": " + json); + } + this.sendLineToClient('Content-Length: ' + (1 + Buffer.byteLength(json, 'utf8')) + + '\r\n\r\n' + json); + }; + Session.prototype.event = function (info, eventName) { + var ev = { + seq: 0, + type: "event", + event: eventName, + body: info + }; + this.send(ev); + }; + Session.prototype.response = function (info, cmdName, reqSeq, errorMsg) { + if (reqSeq === void 0) { reqSeq = 0; } + var res = { + seq: 0, + type: "response", + command: cmdName, + request_seq: reqSeq, + success: !errorMsg + }; + if (!errorMsg) { + res.body = info; + } + else { + res.message = errorMsg; + } + this.send(res); + }; + Session.prototype.output = function (body, commandName, requestSequence, errorMessage) { + if (requestSequence === void 0) { requestSequence = 0; } + this.response(body, commandName, requestSequence, errorMessage); + }; + Session.prototype.semanticCheck = function (file, project) { + try { + var diags = project.compilerService.languageService.getSemanticDiagnostics(file); + if (diags) { + var bakedDiags = diags.map(function (diag) { return formatDiag(file, project, diag); }); + this.event({ file: file, diagnostics: bakedDiags }, "semanticDiag"); + } + } + catch (err) { + this.logError(err, "semantic check"); + } + }; + Session.prototype.syntacticCheck = function (file, project) { + try { + var diags = project.compilerService.languageService.getSyntacticDiagnostics(file); + if (diags) { + var bakedDiags = diags.map(function (diag) { return formatDiag(file, project, diag); }); + this.event({ file: file, diagnostics: bakedDiags }, "syntaxDiag"); + } + } + catch (err) { + this.logError(err, "syntactic check"); + } + }; + Session.prototype.errorCheck = function (file, project) { + this.syntacticCheck(file, project); + this.semanticCheck(file, project); + }; + Session.prototype.updateProjectStructure = function (seq, matchSeq, ms) { + var _this = this; + if (ms === void 0) { ms = 1500; } + setTimeout(function () { + if (matchSeq(seq)) { + _this.projectService.updateProjectStructure(); + } + }, ms); + }; + Session.prototype.updateErrorCheck = function (checkList, seq, matchSeq, ms, followMs) { + var _this = this; + if (ms === void 0) { ms = 1500; } + if (followMs === void 0) { followMs = 200; } + if (followMs > ms) { + followMs = ms; + } + if (this.errorTimer) { + clearTimeout(this.errorTimer); + } + if (this.immediateId) { + clearImmediate(this.immediateId); + this.immediateId = undefined; + } + var index = 0; + var checkOne = function () { + if (matchSeq(seq)) { + var checkSpec = checkList[index++]; + if (checkSpec.project.getSourceFileFromName(checkSpec.fileName, true)) { + _this.syntacticCheck(checkSpec.fileName, checkSpec.project); + _this.immediateId = setImmediate(function () { + _this.semanticCheck(checkSpec.fileName, checkSpec.project); + _this.immediateId = undefined; + if (checkList.length > index) { + _this.errorTimer = setTimeout(checkOne, followMs); + } + else { + _this.errorTimer = undefined; + } + }); + } + } + }; + if ((checkList.length > index) && (matchSeq(seq))) { + this.errorTimer = setTimeout(checkOne, ms); + } + }; + Session.prototype.getDefinition = function (line, offset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var definitions = compilerService.languageService.getDefinitionAtPosition(file, position); + if (!definitions) { + return undefined; + } + return definitions.map(function (def) { return ({ + file: def.fileName, + start: compilerService.host.positionToLineOffset(def.fileName, def.textSpan.start), + end: compilerService.host.positionToLineOffset(def.fileName, ts.textSpanEnd(def.textSpan)) + }); }); + }; + Session.prototype.getRenameLocations = function (line, offset, fileName, findInComments, findInStrings) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var renameInfo = compilerService.languageService.getRenameInfo(file, position); + if (!renameInfo) { + return undefined; + } + if (!renameInfo.canRename) { + return { + info: renameInfo, + locs: [] + }; + } + var renameLocations = compilerService.languageService.findRenameLocations(file, position, findInStrings, findInComments); + if (!renameLocations) { + return undefined; + } + var bakedRenameLocs = renameLocations.map(function (location) { return ({ + file: location.fileName, + start: compilerService.host.positionToLineOffset(location.fileName, location.textSpan.start), + end: compilerService.host.positionToLineOffset(location.fileName, ts.textSpanEnd(location.textSpan)) + }); }).sort(function (a, b) { + if (a.file < b.file) { + return -1; + } + else if (a.file > b.file) { + return 1; + } + else { + if (a.start.line < b.start.line) { + return 1; + } + else if (a.start.line > b.start.line) { + return -1; + } + else { + return b.start.offset - a.start.offset; + } + } + }).reduce(function (accum, cur) { + var curFileAccum; + if (accum.length > 0) { + curFileAccum = accum[accum.length - 1]; + if (curFileAccum.file != cur.file) { + curFileAccum = undefined; + } + } + if (!curFileAccum) { + curFileAccum = { file: cur.file, locs: [] }; + accum.push(curFileAccum); + } + curFileAccum.locs.push({ start: cur.start, end: cur.end }); + return accum; + }, []); + return { info: renameInfo, locs: bakedRenameLocs }; + }; + Session.prototype.getReferences = function (line, offset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var references = compilerService.languageService.getReferencesAtPosition(file, position); + if (!references) { + return undefined; + } + var nameInfo = compilerService.languageService.getQuickInfoAtPosition(file, position); + if (!nameInfo) { + return undefined; + } + var displayString = ts.displayPartsToString(nameInfo.displayParts); + var nameSpan = nameInfo.textSpan; + var nameColStart = compilerService.host.positionToLineOffset(file, nameSpan.start).offset; + var nameText = compilerService.host.getScriptSnapshot(file).getText(nameSpan.start, ts.textSpanEnd(nameSpan)); + var bakedRefs = references.map(function (ref) { + var start = compilerService.host.positionToLineOffset(ref.fileName, ref.textSpan.start); + var refLineSpan = compilerService.host.lineToTextSpan(ref.fileName, start.line - 1); + var snap = compilerService.host.getScriptSnapshot(ref.fileName); + var lineText = snap.getText(refLineSpan.start, ts.textSpanEnd(refLineSpan)).replace(/\r|\n/g, ""); + return { + file: ref.fileName, + start: start, + lineText: lineText, + end: compilerService.host.positionToLineOffset(ref.fileName, ts.textSpanEnd(ref.textSpan)), + isWriteAccess: ref.isWriteAccess + }; + }).sort(compareFileStart); + return { + refs: bakedRefs, + symbolName: nameText, + symbolStartOffset: nameColStart, + symbolDisplayString: displayString + }; + }; + Session.prototype.openClientFile = function (fileName) { + var file = ts.normalizePath(fileName); + this.projectService.openClientFile(file); + }; + Session.prototype.getQuickInfo = function (line, offset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var quickInfo = compilerService.languageService.getQuickInfoAtPosition(file, position); + if (!quickInfo) { + return undefined; + } + var displayString = ts.displayPartsToString(quickInfo.displayParts); + var docString = ts.displayPartsToString(quickInfo.documentation); + return { + kind: quickInfo.kind, + kindModifiers: quickInfo.kindModifiers, + start: compilerService.host.positionToLineOffset(file, quickInfo.textSpan.start), + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(quickInfo.textSpan)), + displayString: displayString, + documentation: docString + }; + }; + Session.prototype.getFormattingEditsForRange = function (line, offset, endLine, endOffset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var startPosition = compilerService.host.lineOffsetToPosition(file, line, offset); + var endPosition = compilerService.host.lineOffsetToPosition(file, endLine, endOffset); + var edits = compilerService.languageService.getFormattingEditsForRange(file, startPosition, endPosition, this.projectService.getFormatCodeOptions(file)); + if (!edits) { + return undefined; + } + return edits.map(function (edit) { + return { + start: compilerService.host.positionToLineOffset(file, edit.span.start), + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(edit.span)), + newText: edit.newText ? edit.newText : "" + }; + }); + }; + Session.prototype.getFormattingEditsAfterKeystroke = function (line, offset, key, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var formatOptions = this.projectService.getFormatCodeOptions(file); + var edits = compilerService.languageService.getFormattingEditsAfterKeystroke(file, position, key, formatOptions); + if ((key == "\n") && ((!edits) || (edits.length == 0) || allEditsBeforePos(edits, position))) { + var scriptInfo = compilerService.host.getScriptInfo(file); + if (scriptInfo) { + var lineInfo = scriptInfo.getLineInfo(line); + if (lineInfo && (lineInfo.leaf) && (lineInfo.leaf.text)) { + var lineText = lineInfo.leaf.text; + if (lineText.search("\\S") < 0) { + var editorOptions = { + IndentSize: formatOptions.IndentSize, + TabSize: formatOptions.TabSize, + NewLineCharacter: "\n", + ConvertTabsToSpaces: true + }; + var indentPosition = compilerService.languageService.getIndentationAtPosition(file, position, editorOptions); + for (var i = 0, len = lineText.length; i < len; i++) { + if (lineText.charAt(i) == " ") { + indentPosition--; + } + else { + break; + } + } + if (indentPosition > 0) { + var spaces = generateSpaces(indentPosition); + edits.push({ span: ts.createTextSpanFromBounds(position, position), newText: spaces }); + } + else if (indentPosition < 0) { + edits.push({ + span: ts.createTextSpanFromBounds(position, position - indentPosition), + newText: "" + }); + } + } + } + } + } + if (!edits) { + return undefined; + } + return edits.map(function (edit) { + return { + start: compilerService.host.positionToLineOffset(file, edit.span.start), + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(edit.span)), + newText: edit.newText ? edit.newText : "" + }; + }); + }; + Session.prototype.getCompletions = function (line, offset, prefix, fileName) { + if (!prefix) { + prefix = ""; + } + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var completions = compilerService.languageService.getCompletionsAtPosition(file, position); + if (!completions) { + return undefined; + } + return completions.entries.reduce(function (result, entry) { + if (completions.isMemberCompletion || (entry.name.toLowerCase().indexOf(prefix.toLowerCase()) == 0)) { + result.push(entry); + } + return result; + }, []).sort(function (a, b) { return a.name.localeCompare(b.name); }); + }; + Session.prototype.getCompletionEntryDetails = function (line, offset, entryNames, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + return entryNames.reduce(function (accum, entryName) { + var details = compilerService.languageService.getCompletionEntryDetails(file, position, entryName); + if (details) { + accum.push(details); + } + return accum; + }, []); + }; + Session.prototype.getSignatureHelpItems = function (line, offset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var helpItems = compilerService.languageService.getSignatureHelpItems(file, position); + if (!helpItems) { + return undefined; + } + var span = helpItems.applicableSpan; + var result = { + items: helpItems.items, + applicableSpan: { + start: compilerService.host.positionToLineOffset(file, span.start), + end: compilerService.host.positionToLineOffset(file, span.start + span.length) + }, + selectedItemIndex: helpItems.selectedItemIndex, + argumentIndex: helpItems.argumentIndex, + argumentCount: helpItems.argumentCount + }; + return result; + }; + Session.prototype.getDiagnostics = function (delay, fileNames) { + var _this = this; + var checkList = fileNames.reduce(function (accum, fileName) { + fileName = ts.normalizePath(fileName); + var project = _this.projectService.getProjectForFile(fileName); + if (project) { + accum.push({ fileName: fileName, project: project }); + } + return accum; + }, []); + if (checkList.length > 0) { + this.updateErrorCheck(checkList, this.changeSeq, function (n) { return n == _this.changeSeq; }, delay); + } + }; + Session.prototype.change = function (line, offset, endLine, endOffset, insertString, fileName) { + var _this = this; + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (project) { + var compilerService = project.compilerService; + var start = compilerService.host.lineOffsetToPosition(file, line, offset); + var end = compilerService.host.lineOffsetToPosition(file, endLine, endOffset); + if (start >= 0) { + compilerService.host.editScript(file, start, end, insertString); + this.changeSeq++; + } + this.updateProjectStructure(this.changeSeq, function (n) { return n == _this.changeSeq; }); + } + }; + Session.prototype.reload = function (fileName, tempFileName, reqSeq) { + var _this = this; + if (reqSeq === void 0) { reqSeq = 0; } + var file = ts.normalizePath(fileName); + var tmpfile = ts.normalizePath(tempFileName); + var project = this.projectService.getProjectForFile(file); + if (project) { + this.changeSeq++; + project.compilerService.host.reloadScript(file, tmpfile, function () { + _this.output(undefined, CommandNames.Reload, reqSeq); + }); + } + }; + Session.prototype.saveToTmp = function (fileName, tempFileName) { + var file = ts.normalizePath(fileName); + var tmpfile = ts.normalizePath(tempFileName); + var project = this.projectService.getProjectForFile(file); + if (project) { + project.compilerService.host.saveTo(file, tmpfile); + } + }; + Session.prototype.closeClientFile = function (fileName) { + var file = ts.normalizePath(fileName); + this.projectService.closeClientFile(file); + }; + Session.prototype.decorateNavigationBarItem = function (project, fileName, items) { + var _this = this; + if (!items) { + return undefined; + } + var compilerService = project.compilerService; + return items.map(function (item) { return ({ + text: item.text, + kind: item.kind, + kindModifiers: item.kindModifiers, + spans: item.spans.map(function (span) { return ({ + start: compilerService.host.positionToLineOffset(fileName, span.start), + end: compilerService.host.positionToLineOffset(fileName, ts.textSpanEnd(span)) + }); }), + childItems: _this.decorateNavigationBarItem(project, fileName, item.childItems) + }); }); + }; + Session.prototype.getNavigationBarItems = function (fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var items = compilerService.languageService.getNavigationBarItems(file); + if (!items) { + return undefined; + } + return this.decorateNavigationBarItem(project, fileName, items); + }; + Session.prototype.getNavigateToItems = function (searchValue, fileName, maxResultCount) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var navItems = compilerService.languageService.getNavigateToItems(searchValue, maxResultCount); + if (!navItems) { + return undefined; + } + return navItems.map(function (navItem) { + var start = compilerService.host.positionToLineOffset(navItem.fileName, navItem.textSpan.start); + var end = compilerService.host.positionToLineOffset(navItem.fileName, ts.textSpanEnd(navItem.textSpan)); + var bakedItem = { + name: navItem.name, + kind: navItem.kind, + file: navItem.fileName, + start: start, + end: end + }; + if (navItem.kindModifiers && (navItem.kindModifiers != "")) { + bakedItem.kindModifiers = navItem.kindModifiers; + } + if (navItem.matchKind != 'none') { + bakedItem.matchKind = navItem.matchKind; + } + if (navItem.containerName && (navItem.containerName.length > 0)) { + bakedItem.containerName = navItem.containerName; + } + if (navItem.containerKind && (navItem.containerKind.length > 0)) { + bakedItem.containerKind = navItem.containerKind; + } + return bakedItem; + }); + }; + Session.prototype.getBraceMatching = function (line, offset, fileName) { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var spans = compilerService.languageService.getBraceMatchingAtPosition(file, position); + if (!spans) { + return undefined; + } + return spans.map(function (span) { return ({ + start: compilerService.host.positionToLineOffset(file, span.start), + end: compilerService.host.positionToLineOffset(file, span.start + span.length) + }); }); + }; + Session.prototype.onMessage = function (message) { + if (this.logger.isVerbose()) { + this.logger.info("request: " + message); + var start = process.hrtime(); + } + try { + var request = JSON.parse(message); + var response; + var errorMessage; + var responseRequired = true; + switch (request.command) { + case CommandNames.Definition: { + var defArgs = request.arguments; + response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file); + break; + } + case CommandNames.References: { + var refArgs = request.arguments; + response = this.getReferences(refArgs.line, refArgs.offset, refArgs.file); + break; + } + case CommandNames.Rename: { + var renameArgs = request.arguments; + response = this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings); + break; + } + case CommandNames.Open: { + var openArgs = request.arguments; + this.openClientFile(openArgs.file); + responseRequired = false; + break; + } + case CommandNames.Quickinfo: { + var quickinfoArgs = request.arguments; + response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file); + break; + } + case CommandNames.Format: { + var formatArgs = request.arguments; + response = this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file); + break; + } + case CommandNames.Formatonkey: { + var formatOnKeyArgs = request.arguments; + response = this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file); + break; + } + case CommandNames.Completions: { + var completionsArgs = request.arguments; + response = this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file); + break; + } + case CommandNames.CompletionDetails: { + var completionDetailsArgs = request.arguments; + response = + this.getCompletionEntryDetails(completionDetailsArgs.line, completionDetailsArgs.offset, completionDetailsArgs.entryNames, completionDetailsArgs.file); + break; + } + case CommandNames.SignatureHelp: { + var signatureHelpArgs = request.arguments; + response = this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file); + break; + } + case CommandNames.Geterr: { + var geterrArgs = request.arguments; + response = this.getDiagnostics(geterrArgs.delay, geterrArgs.files); + responseRequired = false; + break; + } + case CommandNames.Change: { + var changeArgs = request.arguments; + this.change(changeArgs.line, changeArgs.offset, changeArgs.endLine, changeArgs.endOffset, changeArgs.insertString, changeArgs.file); + responseRequired = false; + break; + } + case CommandNames.Configure: { + var configureArgs = request.arguments; + this.projectService.setHostConfiguration(configureArgs); + this.output(undefined, CommandNames.Configure, request.seq); + responseRequired = false; + break; + } + case CommandNames.Reload: { + var reloadArgs = request.arguments; + this.reload(reloadArgs.file, reloadArgs.tmpfile, request.seq); + responseRequired = false; + break; + } + case CommandNames.Saveto: { + var savetoArgs = request.arguments; + this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile); + responseRequired = false; + break; + } + case CommandNames.Close: { + var closeArgs = request.arguments; + this.closeClientFile(closeArgs.file); + responseRequired = false; + break; + } + case CommandNames.Navto: { + var navtoArgs = request.arguments; + response = this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount); + break; + } + case CommandNames.Brace: { + var braceArguments = request.arguments; + response = this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file); + break; + } + case CommandNames.NavBar: { + var navBarArgs = request.arguments; + response = this.getNavigationBarItems(navBarArgs.file); + break; + } + default: { + this.projectService.log("Unrecognized JSON command: " + message); + this.output(undefined, CommandNames.Unknown, request.seq, "Unrecognized JSON command: " + request.command); + break; + } + } + if (this.logger.isVerbose()) { + var elapsed = process.hrtime(start); + var seconds = elapsed[0]; + var nanoseconds = elapsed[1]; + var elapsedMs = ((1e9 * seconds) + nanoseconds) / 1000000.0; + var leader = "Elapsed time (in milliseconds)"; + if (!responseRequired) { + leader = "Async elapsed time (in milliseconds)"; + } + this.logger.msg(leader + ": " + elapsedMs.toFixed(4).toString(), "Perf"); + } + if (response) { + this.output(response, request.command, request.seq); + } + else if (responseRequired) { + this.output(undefined, request.command, request.seq, "No content available."); + } + } + catch (err) { + if (err instanceof ts.OperationCanceledException) { + } + this.logError(err, message); + this.output(undefined, request ? request.command : CommandNames.Unknown, request ? request.seq : 0, "Error processing request. " + err.message); + } + }; + return Session; + })(); + server.Session = Session; + })(server = ts.server || (ts.server = {})); +})(ts || (ts = {})); +/// +/// +/// +/// +/// +var ts; +(function (ts) { + var server; + (function (server) { + var lineCollectionCapacity = 4; + function mergeFormatOptions(formatCodeOptions, formatOptions) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + Object.keys(formatOptions).forEach(function (key) { + var codeKey = key.charAt(0).toUpperCase() + key.substring(1); + if (hasOwnProperty.call(formatCodeOptions, codeKey)) { + formatCodeOptions[codeKey] = formatOptions[key]; + } + }); + } + var ScriptInfo = (function () { + function ScriptInfo(host, fileName, content, isOpen) { + if (isOpen === void 0) { isOpen = false; } + this.host = host; + this.fileName = fileName; + this.content = content; + this.isOpen = isOpen; + this.children = []; + this.formatCodeOptions = ts.clone(CompilerService.defaultFormatCodeOptions); + this.svc = ScriptVersionCache.fromString(content); + } + ScriptInfo.prototype.setFormatOptions = function (formatOptions) { + if (formatOptions) { + mergeFormatOptions(this.formatCodeOptions, formatOptions); + } + }; + ScriptInfo.prototype.close = function () { + this.isOpen = false; + }; + ScriptInfo.prototype.addChild = function (childInfo) { + this.children.push(childInfo); + }; + ScriptInfo.prototype.snap = function () { + return this.svc.getSnapshot(); + }; + ScriptInfo.prototype.getText = function () { + var snap = this.snap(); + return snap.getText(0, snap.getLength()); + }; + ScriptInfo.prototype.getLineInfo = function (line) { + var snap = this.snap(); + return snap.index.lineNumberToInfo(line); + }; + ScriptInfo.prototype.editContent = function (start, end, newText) { + this.svc.edit(start, end - start, newText); + }; + ScriptInfo.prototype.getTextChangeRangeBetweenVersions = function (startVersion, endVersion) { + return this.svc.getTextChangesBetweenVersions(startVersion, endVersion); + }; + ScriptInfo.prototype.getChangeRange = function (oldSnapshot) { + return this.snap().getChangeRange(oldSnapshot); + }; + return ScriptInfo; + })(); + var LSHost = (function () { + function LSHost(host, project) { + this.host = host; + this.project = project; + this.ls = null; + this.filenameToScript = {}; + this.roots = []; + } + LSHost.prototype.getDefaultLibFileName = function () { + var nodeModuleBinDir = ts.getDirectoryPath(ts.normalizePath(this.host.getExecutingFilePath())); + return ts.combinePaths(nodeModuleBinDir, ts.getDefaultLibFileName(this.compilationSettings)); + }; + LSHost.prototype.getScriptSnapshot = function (filename) { + var scriptInfo = this.getScriptInfo(filename); + if (scriptInfo) { + return scriptInfo.snap(); + } + }; + LSHost.prototype.setCompilationSettings = function (opt) { + this.compilationSettings = opt; + }; + LSHost.prototype.lineAffectsRefs = function (filename, line) { + var info = this.getScriptInfo(filename); + var lineInfo = info.getLineInfo(line); + if (lineInfo && lineInfo.text) { + var regex = /reference|import|\/\*|\*\//; + return regex.test(lineInfo.text); + } + }; + LSHost.prototype.getCompilationSettings = function () { + return this.compilationSettings; + }; + LSHost.prototype.getScriptFileNames = function () { + return this.roots.map(function (root) { return root.fileName; }); + }; + LSHost.prototype.getScriptVersion = function (filename) { + return this.getScriptInfo(filename).svc.latestVersion().toString(); + }; + LSHost.prototype.getCurrentDirectory = function () { + return ""; + }; + LSHost.prototype.getScriptIsOpen = function (filename) { + return this.getScriptInfo(filename).isOpen; + }; + LSHost.prototype.removeReferencedFile = function (info) { + if (!info.isOpen) { + this.filenameToScript[info.fileName] = undefined; + } + }; + LSHost.prototype.getScriptInfo = function (filename) { + var scriptInfo = ts.lookUp(this.filenameToScript, filename); + if (!scriptInfo) { + scriptInfo = this.project.openReferencedFile(filename); + if (scriptInfo) { + this.filenameToScript[scriptInfo.fileName] = scriptInfo; + } + } + else { + } + return scriptInfo; + }; + LSHost.prototype.addRoot = function (info) { + var scriptInfo = ts.lookUp(this.filenameToScript, info.fileName); + if (!scriptInfo) { + this.filenameToScript[info.fileName] = info; + this.roots.push(info); + } + }; + LSHost.prototype.saveTo = function (filename, tmpfilename) { + var script = this.getScriptInfo(filename); + if (script) { + var snap = script.snap(); + this.host.writeFile(tmpfilename, snap.getText(0, snap.getLength())); + } + }; + LSHost.prototype.reloadScript = function (filename, tmpfilename, cb) { + var script = this.getScriptInfo(filename); + if (script) { + script.svc.reloadFromFile(tmpfilename, cb); + } + }; + LSHost.prototype.editScript = function (filename, start, end, newText) { + var script = this.getScriptInfo(filename); + if (script) { + script.editContent(start, end, newText); + return; + } + throw new Error("No script with name '" + filename + "'"); + }; + LSHost.prototype.resolvePath = function (path) { + var start = new Date().getTime(); + var result = this.host.resolvePath(path); + return result; + }; + LSHost.prototype.fileExists = function (path) { + var start = new Date().getTime(); + var result = this.host.fileExists(path); + return result; + }; + LSHost.prototype.directoryExists = function (path) { + return this.host.directoryExists(path); + }; + LSHost.prototype.lineToTextSpan = function (filename, line) { + var script = this.filenameToScript[filename]; + var index = script.snap().index; + var lineInfo = index.lineNumberToInfo(line + 1); + var len; + if (lineInfo.leaf) { + len = lineInfo.leaf.text.length; + } + else { + var nextLineInfo = index.lineNumberToInfo(line + 2); + len = nextLineInfo.offset - lineInfo.offset; + } + return ts.createTextSpan(lineInfo.offset, len); + }; + LSHost.prototype.lineOffsetToPosition = function (filename, line, offset) { + var script = this.filenameToScript[filename]; + var index = script.snap().index; + var lineInfo = index.lineNumberToInfo(line); + return (lineInfo.offset + offset - 1); + }; + LSHost.prototype.positionToLineOffset = function (filename, position) { + var script = this.filenameToScript[filename]; + var index = script.snap().index; + var lineOffset = index.charOffsetToLineNumberAndPos(position); + return { line: lineOffset.line, offset: lineOffset.offset + 1 }; + }; + return LSHost; + })(); + function getAbsolutePath(filename, directory) { + var rootLength = ts.getRootLength(filename); + if (rootLength > 0) { + return filename; + } + else { + var splitFilename = filename.split('/'); + var splitDir = directory.split('/'); + var i = 0; + var dirTail = 0; + var sflen = splitFilename.length; + while ((i < sflen) && (splitFilename[i].charAt(0) == '.')) { + var dots = splitFilename[i]; + if (dots == '..') { + dirTail++; + } + else if (dots != '.') { + return undefined; + } + i++; + } + return splitDir.slice(0, splitDir.length - dirTail).concat(splitFilename.slice(i)).join('/'); + } + } + var Project = (function () { + function Project(projectService, projectOptions) { + this.projectService = projectService; + this.projectOptions = projectOptions; + this.filenameToSourceFile = {}; + this.updateGraphSeq = 0; + this.openRefCount = 0; + this.compilerService = new CompilerService(this, projectOptions && projectOptions.compilerOptions); + } + Project.prototype.addOpenRef = function () { + this.openRefCount++; + }; + Project.prototype.deleteOpenRef = function () { + this.openRefCount--; + return this.openRefCount; + }; + Project.prototype.openReferencedFile = function (filename) { + return this.projectService.openFile(filename, false); + }; + Project.prototype.getSourceFile = function (info) { + return this.filenameToSourceFile[info.fileName]; + }; + Project.prototype.getSourceFileFromName = function (filename, requireOpen) { + var info = this.projectService.getScriptInfo(filename); + if (info) { + if ((!requireOpen) || info.isOpen) { + return this.getSourceFile(info); + } + } + }; + Project.prototype.isRoot = function (info) { + return this.compilerService.host.roots.some(function (root) { return root === info; }); + }; + Project.prototype.removeReferencedFile = function (info) { + this.compilerService.host.removeReferencedFile(info); + this.updateGraph(); + }; + Project.prototype.updateFileMap = function () { + this.filenameToSourceFile = {}; + var sourceFiles = this.program.getSourceFiles(); + for (var i = 0, len = sourceFiles.length; i < len; i++) { + var normFilename = ts.normalizePath(sourceFiles[i].fileName); + this.filenameToSourceFile[normFilename] = sourceFiles[i]; + } + }; + Project.prototype.finishGraph = function () { + this.updateGraph(); + this.compilerService.languageService.getNavigateToItems(".*"); + }; + Project.prototype.updateGraph = function () { + this.program = this.compilerService.languageService.getProgram(); + this.updateFileMap(); + }; + Project.prototype.isConfiguredProject = function () { + return this.projectFilename; + }; + Project.prototype.addRoot = function (info) { + info.defaultProject = this; + this.compilerService.host.addRoot(info); + }; + Project.prototype.filesToString = function () { + var strBuilder = ""; + ts.forEachValue(this.filenameToSourceFile, function (sourceFile) { strBuilder += sourceFile.fileName + "\n"; }); + return strBuilder; + }; + Project.prototype.setProjectOptions = function (projectOptions) { + this.projectOptions = projectOptions; + if (projectOptions.compilerOptions) { + this.compilerService.setCompilerOptions(projectOptions.compilerOptions); + } + }; + return Project; + })(); + server.Project = Project; + function copyListRemovingItem(item, list) { + var copiedList = []; + for (var i = 0, len = list.length; i < len; i++) { + if (list[i] != item) { + copiedList.push(list[i]); + } + } + return copiedList; + } + var ProjectService = (function () { + function ProjectService(host, psLogger, eventHandler) { + this.host = host; + this.psLogger = psLogger; + this.eventHandler = eventHandler; + this.filenameToScriptInfo = {}; + this.openFileRoots = []; + this.inferredProjects = []; + this.configuredProjects = []; + this.openFilesReferenced = []; + this.openFileRootsConfigured = []; + this.addDefaultHostConfiguration(); + } + ProjectService.prototype.addDefaultHostConfiguration = function () { + this.hostConfiguration = { + formatCodeOptions: ts.clone(CompilerService.defaultFormatCodeOptions), + hostInfo: "Unknown host" + }; + }; + ProjectService.prototype.getFormatCodeOptions = function (file) { + if (file) { + var info = this.filenameToScriptInfo[file]; + if (info) { + return info.formatCodeOptions; + } + } + return this.hostConfiguration.formatCodeOptions; + }; + ProjectService.prototype.watchedFileChanged = function (fileName) { + var info = this.filenameToScriptInfo[fileName]; + if (!info) { + this.psLogger.info("Error: got watch notification for unknown file: " + fileName); + } + if (!this.host.fileExists(fileName)) { + this.fileDeletedInFilesystem(info); + } + else { + if (info && (!info.isOpen)) { + info.svc.reloadFromFile(info.fileName); + } + } + }; + ProjectService.prototype.log = function (msg, type) { + if (type === void 0) { type = "Err"; } + this.psLogger.msg(msg, type); + }; + ProjectService.prototype.setHostConfiguration = function (args) { + if (args.file) { + var info = this.filenameToScriptInfo[args.file]; + if (info) { + info.setFormatOptions(args.formatOptions); + this.log("Host configuration update for file " + args.file); + } + } + else { + if (args.hostInfo !== undefined) { + this.hostConfiguration.hostInfo = args.hostInfo; + this.log("Host information " + args.hostInfo, "Info"); + } + if (args.formatOptions) { + mergeFormatOptions(this.hostConfiguration.formatCodeOptions, args.formatOptions); + this.log("Format host information updated", "Info"); + } + } + }; + ProjectService.prototype.closeLog = function () { + this.psLogger.close(); + }; + ProjectService.prototype.createInferredProject = function (root) { + var iproj = new Project(this); + iproj.addRoot(root); + iproj.finishGraph(); + this.inferredProjects.push(iproj); + return iproj; + }; + ProjectService.prototype.fileDeletedInFilesystem = function (info) { + this.psLogger.info(info.fileName + " deleted"); + if (info.fileWatcher) { + info.fileWatcher.close(); + info.fileWatcher = undefined; + } + if (!info.isOpen) { + this.filenameToScriptInfo[info.fileName] = undefined; + var referencingProjects = this.findReferencingProjects(info); + for (var i = 0, len = referencingProjects.length; i < len; i++) { + referencingProjects[i].removeReferencedFile(info); + } + for (var j = 0, flen = this.openFileRoots.length; j < flen; j++) { + var openFile = this.openFileRoots[j]; + if (this.eventHandler) { + this.eventHandler("context", openFile.defaultProject, openFile.fileName); + } + } + for (var j = 0, flen = this.openFilesReferenced.length; j < flen; j++) { + var openFile = this.openFilesReferenced[j]; + if (this.eventHandler) { + this.eventHandler("context", openFile.defaultProject, openFile.fileName); + } + } + } + this.printProjects(); + }; + ProjectService.prototype.updateConfiguredProjectList = function () { + var configuredProjects = []; + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + if (this.configuredProjects[i].openRefCount > 0) { + configuredProjects.push(this.configuredProjects[i]); + } + } + this.configuredProjects = configuredProjects; + }; + ProjectService.prototype.setConfiguredProjectRoot = function (info) { + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + var configuredProject = this.configuredProjects[i]; + if (configuredProject.isRoot(info)) { + info.defaultProject = configuredProject; + configuredProject.addOpenRef(); + return true; + } + } + return false; + }; + ProjectService.prototype.addOpenFile = function (info) { + if (this.setConfiguredProjectRoot(info)) { + this.openFileRootsConfigured.push(info); + } + else { + this.findReferencingProjects(info); + if (info.defaultProject) { + this.openFilesReferenced.push(info); + } + else { + info.defaultProject = this.createInferredProject(info); + var openFileRoots = []; + for (var i = 0, len = this.openFileRoots.length; i < len; i++) { + var r = this.openFileRoots[i]; + if (info.defaultProject.getSourceFile(r)) { + this.inferredProjects = + copyListRemovingItem(r.defaultProject, this.inferredProjects); + this.openFilesReferenced.push(r); + r.defaultProject = info.defaultProject; + } + else { + openFileRoots.push(r); + } + } + this.openFileRoots = openFileRoots; + this.openFileRoots.push(info); + } + } + this.updateConfiguredProjectList(); + }; + ProjectService.prototype.closeOpenFile = function (info) { + var openFileRoots = []; + var removedProject; + for (var i = 0, len = this.openFileRoots.length; i < len; i++) { + if (info === this.openFileRoots[i]) { + removedProject = info.defaultProject; + } + else { + openFileRoots.push(this.openFileRoots[i]); + } + } + this.openFileRoots = openFileRoots; + if (!removedProject) { + var openFileRootsConfigured = []; + for (var i = 0, len = this.openFileRootsConfigured.length; i < len; i++) { + if (info === this.openFileRootsConfigured[i]) { + if (info.defaultProject.deleteOpenRef() === 0) { + removedProject = info.defaultProject; + } + } + else { + openFileRootsConfigured.push(this.openFileRootsConfigured[i]); + } + } + this.openFileRootsConfigured = openFileRootsConfigured; + } + if (removedProject) { + if (removedProject.isConfiguredProject()) { + this.configuredProjects = copyListRemovingItem(removedProject, this.configuredProjects); + } + else { + this.inferredProjects = copyListRemovingItem(removedProject, this.inferredProjects); + } + var openFilesReferenced = []; + var orphanFiles = []; + for (var i = 0, len = this.openFilesReferenced.length; i < len; i++) { + var f = this.openFilesReferenced[i]; + if (f.defaultProject == removedProject) { + f.defaultProject = undefined; + orphanFiles.push(f); + } + else { + openFilesReferenced.push(f); + } + } + this.openFilesReferenced = openFilesReferenced; + for (var i = 0, len = orphanFiles.length; i < len; i++) { + this.addOpenFile(orphanFiles[i]); + } + } + else { + this.openFilesReferenced = copyListRemovingItem(info, this.openFilesReferenced); + } + info.close(); + }; + ProjectService.prototype.findReferencingProjects = function (info, excludedProject) { + var referencingProjects = []; + info.defaultProject = undefined; + for (var i = 0, len = this.inferredProjects.length; i < len; i++) { + var inferredProject = this.inferredProjects[i]; + inferredProject.updateGraph(); + if (inferredProject != excludedProject) { + if (inferredProject.getSourceFile(info)) { + info.defaultProject = inferredProject; + referencingProjects.push(inferredProject); + } + } + } + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + var configuredProject = this.configuredProjects[i]; + configuredProject.updateGraph(); + if (configuredProject.getSourceFile(info)) { + info.defaultProject = configuredProject; + } + } + return referencingProjects; + }; + ProjectService.prototype.updateProjectStructure = function () { + this.log("updating project structure from ...", "Info"); + this.printProjects(); + var openFilesReferenced = []; + var unattachedOpenFiles = []; + for (var i = 0, len = this.openFilesReferenced.length; i < len; i++) { + var referencedFile = this.openFilesReferenced[i]; + referencedFile.defaultProject.updateGraph(); + var sourceFile = referencedFile.defaultProject.getSourceFile(referencedFile); + if (sourceFile) { + openFilesReferenced.push(referencedFile); + } + else { + unattachedOpenFiles.push(referencedFile); + } + } + this.openFilesReferenced = openFilesReferenced; + var openFileRoots = []; + for (var i = 0, len = this.openFileRoots.length; i < len; i++) { + var rootFile = this.openFileRoots[i]; + var rootedProject = rootFile.defaultProject; + var referencingProjects = this.findReferencingProjects(rootFile, rootedProject); + if (referencingProjects.length == 0) { + rootFile.defaultProject = rootedProject; + openFileRoots.push(rootFile); + } + else { + this.inferredProjects = copyListRemovingItem(rootedProject, this.inferredProjects); + this.openFilesReferenced.push(rootFile); + } + } + this.openFileRoots = openFileRoots; + for (var i = 0, len = unattachedOpenFiles.length; i < len; i++) { + this.addOpenFile(unattachedOpenFiles[i]); + } + this.printProjects(); + }; + ProjectService.prototype.getScriptInfo = function (filename) { + filename = ts.normalizePath(filename); + return ts.lookUp(this.filenameToScriptInfo, filename); + }; + ProjectService.prototype.openFile = function (fileName, openedByClient) { + var _this = this; + fileName = ts.normalizePath(fileName); + var info = ts.lookUp(this.filenameToScriptInfo, fileName); + if (!info) { + var content; + if (this.host.fileExists(fileName)) { + content = this.host.readFile(fileName); + } + if (!content) { + if (openedByClient) { + content = ""; + } + } + if (content !== undefined) { + var indentSize; + info = new ScriptInfo(this.host, fileName, content, openedByClient); + this.filenameToScriptInfo[fileName] = info; + if (!info.isOpen) { + info.fileWatcher = this.host.watchFile(fileName, function (_) { _this.watchedFileChanged(fileName); }); + } + } + } + if (info) { + if (openedByClient) { + info.isOpen = true; + } + } + return info; + }; + ProjectService.prototype.findConfigFile = function (searchPath) { + while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); + if (ts.sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + } + return undefined; + }; + ProjectService.prototype.openClientFile = function (fileName) { + var searchPath = ts.normalizePath(ts.getDirectoryPath(fileName)); + this.log("Search path: " + searchPath, "Info"); + var configFileName = this.findConfigFile(searchPath); + if (configFileName) { + this.log("Config file name: " + configFileName, "Info"); + } + else { + this.log("no config file"); + } + if (configFileName) { + configFileName = getAbsolutePath(configFileName, searchPath); + } + if (configFileName && (!this.configProjectIsActive(configFileName))) { + var configResult = this.openConfigFile(configFileName, fileName); + if (!configResult.success) { + this.log("Error opening config file " + configFileName + " " + configResult.errorMsg); + } + else { + this.log("Opened configuration file " + configFileName, "Info"); + this.configuredProjects.push(configResult.project); + } + } + var info = this.openFile(fileName, true); + this.addOpenFile(info); + this.printProjects(); + return info; + }; + ProjectService.prototype.closeClientFile = function (filename) { + var info = ts.lookUp(this.filenameToScriptInfo, filename); + if (info) { + this.closeOpenFile(info); + info.isOpen = false; + } + this.printProjects(); + }; + ProjectService.prototype.getProjectForFile = function (filename) { + var scriptInfo = ts.lookUp(this.filenameToScriptInfo, filename); + if (scriptInfo) { + return scriptInfo.defaultProject; + } + }; + ProjectService.prototype.printProjectsForFile = function (filename) { + var scriptInfo = ts.lookUp(this.filenameToScriptInfo, filename); + if (scriptInfo) { + this.psLogger.startGroup(); + this.psLogger.info("Projects for " + filename); + var projects = this.findReferencingProjects(scriptInfo); + for (var i = 0, len = projects.length; i < len; i++) { + this.psLogger.info("Project " + i.toString()); + } + this.psLogger.endGroup(); + } + else { + this.psLogger.info(filename + " not in any project"); + } + }; + ProjectService.prototype.printProjects = function () { + this.psLogger.startGroup(); + for (var i = 0, len = this.inferredProjects.length; i < len; i++) { + var project = this.inferredProjects[i]; + project.updateGraph(); + this.psLogger.info("Project " + i.toString()); + this.psLogger.info(project.filesToString()); + this.psLogger.info("-----------------------------------------------"); + } + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + var project = this.configuredProjects[i]; + project.updateGraph(); + this.psLogger.info("Project (configured) " + (i + this.inferredProjects.length).toString()); + this.psLogger.info(project.filesToString()); + this.psLogger.info("-----------------------------------------------"); + } + this.psLogger.info("Open file roots of inferred projects: "); + for (var i = 0, len = this.openFileRoots.length; i < len; i++) { + this.psLogger.info(this.openFileRoots[i].fileName); + } + this.psLogger.info("Open files referenced by inferred or configured projects: "); + for (var i = 0, len = this.openFilesReferenced.length; i < len; i++) { + var fileInfo = this.openFilesReferenced[i].fileName; + if (this.openFilesReferenced[i].defaultProject.isConfiguredProject()) { + fileInfo += " (configured)"; + } + this.psLogger.info(fileInfo); + } + this.psLogger.info("Open file roots of configured projects: "); + for (var i = 0, len = this.openFileRootsConfigured.length; i < len; i++) { + this.psLogger.info(this.openFileRootsConfigured[i].fileName); + } + this.psLogger.endGroup(); + }; + ProjectService.prototype.configProjectIsActive = function (fileName) { + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + if (this.configuredProjects[i].projectFilename == fileName) { + return true; + } + } + return false; + }; + ProjectService.prototype.openConfigFile = function (configFilename, clientFileName) { + configFilename = ts.normalizePath(configFilename); + var dirPath = ts.getDirectoryPath(configFilename); + var rawConfig = ts.readConfigFile(configFilename); + if (!rawConfig) { + return { errorMsg: "tsconfig syntax error" }; + } + else { + var parsedCommandLine = ts.parseConfigFile(rawConfig, dirPath); + if (parsedCommandLine.errors && (parsedCommandLine.errors.length > 0)) { + return { errorMsg: "tsconfig option errors" }; + } + else if (parsedCommandLine.fileNames) { + var projectOptions = { + files: parsedCommandLine.fileNames, + compilerOptions: parsedCommandLine.options + }; + var proj = this.createProject(configFilename, projectOptions); + for (var i = 0, len = parsedCommandLine.fileNames.length; i < len; i++) { + var rootFilename = parsedCommandLine.fileNames[i]; + if (ts.sys.fileExists(rootFilename)) { + var info = this.openFile(rootFilename, clientFileName == rootFilename); + proj.addRoot(info); + } + else { + return { errorMsg: "specified file " + rootFilename + " not found" }; + } + } + proj.finishGraph(); + return { success: true, project: proj }; + } + else { + return { errorMsg: "no files found" }; + } + } + }; + ProjectService.prototype.createProject = function (projectFilename, projectOptions) { + var project = new Project(this, projectOptions); + project.projectFilename = projectFilename; + return project; + }; + return ProjectService; + })(); + server.ProjectService = ProjectService; + var CompilerService = (function () { + function CompilerService(project, opt) { + this.project = project; + this.documentRegistry = ts.createDocumentRegistry(); + this.host = new LSHost(project.projectService.host, project); + if (opt) { + this.setCompilerOptions(opt); + } + else { + this.setCompilerOptions(ts.getDefaultCompilerOptions()); + } + this.languageService = ts.createLanguageService(this.host, this.documentRegistry); + this.classifier = ts.createClassifier(); + } + CompilerService.prototype.setCompilerOptions = function (opt) { + this.settings = opt; + this.host.setCompilationSettings(opt); + }; + CompilerService.prototype.isExternalModule = function (filename) { + var sourceFile = this.languageService.getSourceFile(filename); + return ts.isExternalModule(sourceFile); + }; + CompilerService.defaultFormatCodeOptions = { + IndentSize: 4, + TabSize: 4, + NewLineCharacter: ts.sys.newLine, + ConvertTabsToSpaces: true, + InsertSpaceAfterCommaDelimiter: true, + InsertSpaceAfterSemicolonInForStatements: true, + InsertSpaceBeforeAndAfterBinaryOperators: true, + InsertSpaceAfterKeywordsInControlFlowStatements: true, + InsertSpaceAfterFunctionKeywordForAnonymousFunctions: false, + InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, + PlaceOpenBraceOnNewLineForFunctions: false, + PlaceOpenBraceOnNewLineForControlBlocks: false + }; + return CompilerService; + })(); + var CharRangeSection; + (function (CharRangeSection) { + CharRangeSection[CharRangeSection["PreStart"] = 0] = "PreStart"; + CharRangeSection[CharRangeSection["Start"] = 1] = "Start"; + CharRangeSection[CharRangeSection["Entire"] = 2] = "Entire"; + CharRangeSection[CharRangeSection["Mid"] = 3] = "Mid"; + CharRangeSection[CharRangeSection["End"] = 4] = "End"; + CharRangeSection[CharRangeSection["PostEnd"] = 5] = "PostEnd"; + })(CharRangeSection || (CharRangeSection = {})); + var BaseLineIndexWalker = (function () { + function BaseLineIndexWalker() { + this.goSubtree = true; + this.done = false; + } + BaseLineIndexWalker.prototype.leaf = function (rangeStart, rangeLength, ll) { + }; + return BaseLineIndexWalker; + })(); + var EditWalker = (function (_super) { + __extends(EditWalker, _super); + function EditWalker() { + _super.call(this); + this.lineIndex = new LineIndex(); + this.endBranch = []; + this.state = CharRangeSection.Entire; + this.initialText = ""; + this.trailingText = ""; + this.suppressTrailingText = false; + this.lineIndex.root = new LineNode(); + this.startPath = [this.lineIndex.root]; + this.stack = [this.lineIndex.root]; + } + EditWalker.prototype.insertLines = function (insertedText) { + if (this.suppressTrailingText) { + this.trailingText = ""; + } + if (insertedText) { + insertedText = this.initialText + insertedText + this.trailingText; + } + else { + insertedText = this.initialText + this.trailingText; + } + var lm = LineIndex.linesFromText(insertedText); + var lines = lm.lines; + if (lines.length > 1) { + if (lines[lines.length - 1] == "") { + lines.length--; + } + } + var branchParent; + var lastZeroCount; + for (var k = this.endBranch.length - 1; k >= 0; k--) { + this.endBranch[k].updateCounts(); + if (this.endBranch[k].charCount() == 0) { + lastZeroCount = this.endBranch[k]; + if (k > 0) { + branchParent = this.endBranch[k - 1]; + } + else { + branchParent = this.branchNode; + } + } + } + if (lastZeroCount) { + branchParent.remove(lastZeroCount); + } + var insertionNode = this.startPath[this.startPath.length - 2]; + var leafNode = this.startPath[this.startPath.length - 1]; + var len = lines.length; + if (len > 0) { + leafNode.text = lines[0]; + if (len > 1) { + var insertedNodes = new Array(len - 1); + var startNode = leafNode; + for (var i = 1, len = lines.length; i < len; i++) { + insertedNodes[i - 1] = new LineLeaf(lines[i]); + } + var pathIndex = this.startPath.length - 2; + while (pathIndex >= 0) { + insertionNode = this.startPath[pathIndex]; + insertedNodes = insertionNode.insertAt(startNode, insertedNodes); + pathIndex--; + startNode = insertionNode; + } + var insertedNodesLen = insertedNodes.length; + while (insertedNodesLen > 0) { + var newRoot = new LineNode(); + newRoot.add(this.lineIndex.root); + insertedNodes = newRoot.insertAt(this.lineIndex.root, insertedNodes); + insertedNodesLen = insertedNodes.length; + this.lineIndex.root = newRoot; + } + this.lineIndex.root.updateCounts(); + } + else { + for (var j = this.startPath.length - 2; j >= 0; j--) { + this.startPath[j].updateCounts(); + } + } + } + else { + insertionNode.remove(leafNode); + for (var j = this.startPath.length - 2; j >= 0; j--) { + this.startPath[j].updateCounts(); + } + } + return this.lineIndex; + }; + EditWalker.prototype.post = function (relativeStart, relativeLength, lineCollection, parent, nodeType) { + if (lineCollection == this.lineCollectionAtBranch) { + this.state = CharRangeSection.End; + } + this.stack.length--; + return undefined; + }; + EditWalker.prototype.pre = function (relativeStart, relativeLength, lineCollection, parent, nodeType) { + var currentNode = this.stack[this.stack.length - 1]; + if ((this.state == CharRangeSection.Entire) && (nodeType == CharRangeSection.Start)) { + this.state = CharRangeSection.Start; + this.branchNode = currentNode; + this.lineCollectionAtBranch = lineCollection; + } + var child; + function fresh(node) { + if (node.isLeaf()) { + return new LineLeaf(""); + } + else + return new LineNode(); + } + switch (nodeType) { + case CharRangeSection.PreStart: + this.goSubtree = false; + if (this.state != CharRangeSection.End) { + currentNode.add(lineCollection); + } + break; + case CharRangeSection.Start: + if (this.state == CharRangeSection.End) { + this.goSubtree = false; + } + else { + child = fresh(lineCollection); + currentNode.add(child); + this.startPath[this.startPath.length] = child; + } + break; + case CharRangeSection.Entire: + if (this.state != CharRangeSection.End) { + child = fresh(lineCollection); + currentNode.add(child); + this.startPath[this.startPath.length] = child; + } + else { + if (!lineCollection.isLeaf()) { + child = fresh(lineCollection); + currentNode.add(child); + this.endBranch[this.endBranch.length] = child; + } + } + break; + case CharRangeSection.Mid: + this.goSubtree = false; + break; + case CharRangeSection.End: + if (this.state != CharRangeSection.End) { + this.goSubtree = false; + } + else { + if (!lineCollection.isLeaf()) { + child = fresh(lineCollection); + currentNode.add(child); + this.endBranch[this.endBranch.length] = child; + } + } + break; + case CharRangeSection.PostEnd: + this.goSubtree = false; + if (this.state != CharRangeSection.Start) { + currentNode.add(lineCollection); + } + break; + } + if (this.goSubtree) { + this.stack[this.stack.length] = child; + } + return lineCollection; + }; + EditWalker.prototype.leaf = function (relativeStart, relativeLength, ll) { + if (this.state == CharRangeSection.Start) { + this.initialText = ll.text.substring(0, relativeStart); + } + else if (this.state == CharRangeSection.Entire) { + this.initialText = ll.text.substring(0, relativeStart); + this.trailingText = ll.text.substring(relativeStart + relativeLength); + } + else { + this.trailingText = ll.text.substring(relativeStart + relativeLength); + } + }; + return EditWalker; + })(BaseLineIndexWalker); + var TextChange = (function () { + function TextChange(pos, deleteLen, insertedText) { + this.pos = pos; + this.deleteLen = deleteLen; + this.insertedText = insertedText; + } + TextChange.prototype.getTextChangeRange = function () { + return ts.createTextChangeRange(ts.createTextSpan(this.pos, this.deleteLen), this.insertedText ? this.insertedText.length : 0); + }; + return TextChange; + })(); + var ScriptVersionCache = (function () { + function ScriptVersionCache() { + this.changes = []; + this.versions = []; + this.minVersion = 0; + this.currentVersion = 0; + } + ScriptVersionCache.prototype.edit = function (pos, deleteLen, insertedText) { + this.changes[this.changes.length] = new TextChange(pos, deleteLen, insertedText); + if ((this.changes.length > ScriptVersionCache.changeNumberThreshold) || + (deleteLen > ScriptVersionCache.changeLengthThreshold) || + (insertedText && (insertedText.length > ScriptVersionCache.changeLengthThreshold))) { + this.getSnapshot(); + } + }; + ScriptVersionCache.prototype.latest = function () { + return this.versions[this.currentVersion]; + }; + ScriptVersionCache.prototype.latestVersion = function () { + if (this.changes.length > 0) { + this.getSnapshot(); + } + return this.currentVersion; + }; + ScriptVersionCache.prototype.reloadFromFile = function (filename, cb) { + var content = ts.sys.readFile(filename); + this.reload(content); + if (cb) + cb(); + }; + ScriptVersionCache.prototype.reload = function (script) { + this.currentVersion++; + this.changes = []; + var snap = new LineIndexSnapshot(this.currentVersion, this); + this.versions[this.currentVersion] = snap; + snap.index = new LineIndex(); + var lm = LineIndex.linesFromText(script); + snap.index.load(lm.lines); + for (var i = this.minVersion; i < this.currentVersion; i++) { + this.versions[i] = undefined; + } + this.minVersion = this.currentVersion; + }; + ScriptVersionCache.prototype.getSnapshot = function () { + var snap = this.versions[this.currentVersion]; + if (this.changes.length > 0) { + var snapIndex = this.latest().index; + for (var i = 0, len = this.changes.length; i < len; i++) { + var change = this.changes[i]; + snapIndex = snapIndex.edit(change.pos, change.deleteLen, change.insertedText); + } + snap = new LineIndexSnapshot(this.currentVersion + 1, this); + snap.index = snapIndex; + snap.changesSincePreviousVersion = this.changes; + this.currentVersion = snap.version; + this.versions[snap.version] = snap; + this.changes = []; + if ((this.currentVersion - this.minVersion) >= ScriptVersionCache.maxVersions) { + var oldMin = this.minVersion; + this.minVersion = (this.currentVersion - ScriptVersionCache.maxVersions) + 1; + for (var j = oldMin; j < this.minVersion; j++) { + this.versions[j] = undefined; + } + } + } + return snap; + }; + ScriptVersionCache.prototype.getTextChangesBetweenVersions = function (oldVersion, newVersion) { + if (oldVersion < newVersion) { + if (oldVersion >= this.minVersion) { + var textChangeRanges = []; + for (var i = oldVersion + 1; i <= newVersion; i++) { + var snap = this.versions[i]; + for (var j = 0, len = snap.changesSincePreviousVersion.length; j < len; j++) { + var textChange = snap.changesSincePreviousVersion[j]; + textChangeRanges[textChangeRanges.length] = textChange.getTextChangeRange(); + } + } + return ts.collapseTextChangeRangesAcrossMultipleVersions(textChangeRanges); + } + else { + return undefined; + } + } + else { + return ts.unchangedTextChangeRange; + } + }; + ScriptVersionCache.fromString = function (script) { + var svc = new ScriptVersionCache(); + var snap = new LineIndexSnapshot(0, svc); + svc.versions[svc.currentVersion] = snap; + snap.index = new LineIndex(); + var lm = LineIndex.linesFromText(script); + snap.index.load(lm.lines); + return svc; + }; + ScriptVersionCache.changeNumberThreshold = 8; + ScriptVersionCache.changeLengthThreshold = 256; + ScriptVersionCache.maxVersions = 8; + return ScriptVersionCache; + })(); + server.ScriptVersionCache = ScriptVersionCache; + var LineIndexSnapshot = (function () { + function LineIndexSnapshot(version, cache) { + this.version = version; + this.cache = cache; + this.changesSincePreviousVersion = []; + } + LineIndexSnapshot.prototype.getText = function (rangeStart, rangeEnd) { + return this.index.getText(rangeStart, rangeEnd - rangeStart); + }; + LineIndexSnapshot.prototype.getLength = function () { + return this.index.root.charCount(); + }; + LineIndexSnapshot.prototype.getLineStartPositions = function () { + var starts = [-1]; + var count = 1; + var pos = 0; + this.index.every(function (ll, s, len) { + starts[count++] = pos; + pos += ll.text.length; + return true; + }, 0); + return starts; + }; + LineIndexSnapshot.prototype.getLineMapper = function () { + var _this = this; + return (function (line) { + return _this.index.lineNumberToInfo(line).offset; + }); + }; + LineIndexSnapshot.prototype.getTextChangeRangeSinceVersion = function (scriptVersion) { + if (this.version <= scriptVersion) { + return ts.unchangedTextChangeRange; + } + else { + return this.cache.getTextChangesBetweenVersions(scriptVersion, this.version); + } + }; + LineIndexSnapshot.prototype.getChangeRange = function (oldSnapshot) { + var oldSnap = oldSnapshot; + return this.getTextChangeRangeSinceVersion(oldSnap.version); + }; + return LineIndexSnapshot; + })(); + var LineIndex = (function () { + function LineIndex() { + this.checkEdits = false; + } + LineIndex.prototype.charOffsetToLineNumberAndPos = function (charOffset) { + return this.root.charOffsetToLineNumberAndPos(1, charOffset); + }; + LineIndex.prototype.lineNumberToInfo = function (lineNumber) { + var lineCount = this.root.lineCount(); + if (lineNumber <= lineCount) { + var lineInfo = this.root.lineNumberToInfo(lineNumber, 0); + lineInfo.line = lineNumber; + return lineInfo; + } + else { + return { + line: lineNumber, + offset: this.root.charCount() + }; + } + }; + LineIndex.prototype.load = function (lines) { + if (lines.length > 0) { + var leaves = []; + for (var i = 0, len = lines.length; i < len; i++) { + leaves[i] = new LineLeaf(lines[i]); + } + this.root = LineIndex.buildTreeFromBottom(leaves); + } + else { + this.root = new LineNode(); + } + }; + LineIndex.prototype.walk = function (rangeStart, rangeLength, walkFns) { + this.root.walk(rangeStart, rangeLength, walkFns); + }; + LineIndex.prototype.getText = function (rangeStart, rangeLength) { + var accum = ""; + if ((rangeLength > 0) && (rangeStart < this.root.charCount())) { + this.walk(rangeStart, rangeLength, { + goSubtree: true, + done: false, + leaf: function (relativeStart, relativeLength, ll) { + accum = accum.concat(ll.text.substring(relativeStart, relativeStart + relativeLength)); + } + }); + } + return accum; + }; + LineIndex.prototype.every = function (f, rangeStart, rangeEnd) { + if (!rangeEnd) { + rangeEnd = this.root.charCount(); + } + var walkFns = { + goSubtree: true, + done: false, + leaf: function (relativeStart, relativeLength, ll) { + if (!f(ll, relativeStart, relativeLength)) { + this.done = true; + } + } + }; + this.walk(rangeStart, rangeEnd - rangeStart, walkFns); + return !walkFns.done; + }; + LineIndex.prototype.edit = function (pos, deleteLength, newText) { + function editFlat(source, s, dl, nt) { + if (nt === void 0) { nt = ""; } + return source.substring(0, s) + nt + source.substring(s + dl, source.length); + } + if (this.root.charCount() == 0) { + if (newText) { + this.load(LineIndex.linesFromText(newText).lines); + return this; + } + } + else { + if (this.checkEdits) { + var checkText = editFlat(this.getText(0, this.root.charCount()), pos, deleteLength, newText); + } + var walker = new EditWalker(); + if (pos >= this.root.charCount()) { + pos = this.root.charCount() - 1; + var endString = this.getText(pos, 1); + if (newText) { + newText = endString + newText; + } + else { + newText = endString; + } + deleteLength = 0; + walker.suppressTrailingText = true; + } + else if (deleteLength > 0) { + var e = pos + deleteLength; + var lineInfo = this.charOffsetToLineNumberAndPos(e); + if ((lineInfo && (lineInfo.offset == 0))) { + deleteLength += lineInfo.text.length; + if (newText) { + newText = newText + lineInfo.text; + } + else { + newText = lineInfo.text; + } + } + } + if (pos < this.root.charCount()) { + this.root.walk(pos, deleteLength, walker); + walker.insertLines(newText); + } + if (this.checkEdits) { + var updatedText = this.getText(0, this.root.charCount()); + ts.Debug.assert(checkText == updatedText, "buffer edit mismatch"); + } + return walker.lineIndex; + } + }; + LineIndex.buildTreeFromBottom = function (nodes) { + var nodeCount = Math.ceil(nodes.length / lineCollectionCapacity); + var interiorNodes = []; + var nodeIndex = 0; + for (var i = 0; i < nodeCount; i++) { + interiorNodes[i] = new LineNode(); + var charCount = 0; + var lineCount = 0; + for (var j = 0; j < lineCollectionCapacity; j++) { + if (nodeIndex < nodes.length) { + interiorNodes[i].add(nodes[nodeIndex]); + charCount += nodes[nodeIndex].charCount(); + lineCount += nodes[nodeIndex].lineCount(); + } + else { + break; + } + nodeIndex++; + } + interiorNodes[i].totalChars = charCount; + interiorNodes[i].totalLines = lineCount; + } + if (interiorNodes.length == 1) { + return interiorNodes[0]; + } + else { + return this.buildTreeFromBottom(interiorNodes); + } + }; + LineIndex.linesFromText = function (text) { + var lineStarts = ts.computeLineStarts(text); + if (lineStarts.length == 0) { + return { lines: [], lineMap: lineStarts }; + } + var lines = new Array(lineStarts.length); + var lc = lineStarts.length - 1; + for (var lmi = 0; lmi < lc; lmi++) { + lines[lmi] = text.substring(lineStarts[lmi], lineStarts[lmi + 1]); + } + var endText = text.substring(lineStarts[lc]); + if (endText.length > 0) { + lines[lc] = endText; + } + else { + lines.length--; + } + return { lines: lines, lineMap: lineStarts }; + }; + return LineIndex; + })(); + server.LineIndex = LineIndex; + var LineNode = (function () { + function LineNode() { + this.totalChars = 0; + this.totalLines = 0; + this.children = []; + } + LineNode.prototype.isLeaf = function () { + return false; + }; + LineNode.prototype.updateCounts = function () { + this.totalChars = 0; + this.totalLines = 0; + for (var i = 0, len = this.children.length; i < len; i++) { + var child = this.children[i]; + this.totalChars += child.charCount(); + this.totalLines += child.lineCount(); + } + }; + LineNode.prototype.execWalk = function (rangeStart, rangeLength, walkFns, childIndex, nodeType) { + if (walkFns.pre) { + walkFns.pre(rangeStart, rangeLength, this.children[childIndex], this, nodeType); + } + if (walkFns.goSubtree) { + this.children[childIndex].walk(rangeStart, rangeLength, walkFns); + if (walkFns.post) { + walkFns.post(rangeStart, rangeLength, this.children[childIndex], this, nodeType); + } + } + else { + walkFns.goSubtree = true; + } + return walkFns.done; + }; + LineNode.prototype.skipChild = function (relativeStart, relativeLength, childIndex, walkFns, nodeType) { + if (walkFns.pre && (!walkFns.done)) { + walkFns.pre(relativeStart, relativeLength, this.children[childIndex], this, nodeType); + walkFns.goSubtree = true; + } + }; + LineNode.prototype.walk = function (rangeStart, rangeLength, walkFns) { + var childIndex = 0; + var child = this.children[0]; + var childCharCount = child.charCount(); + var adjustedStart = rangeStart; + while (adjustedStart >= childCharCount) { + this.skipChild(adjustedStart, rangeLength, childIndex, walkFns, CharRangeSection.PreStart); + adjustedStart -= childCharCount; + child = this.children[++childIndex]; + childCharCount = child.charCount(); + } + if ((adjustedStart + rangeLength) <= childCharCount) { + if (this.execWalk(adjustedStart, rangeLength, walkFns, childIndex, CharRangeSection.Entire)) { + return; + } + } + else { + if (this.execWalk(adjustedStart, childCharCount - adjustedStart, walkFns, childIndex, CharRangeSection.Start)) { + return; + } + var adjustedLength = rangeLength - (childCharCount - adjustedStart); + child = this.children[++childIndex]; + childCharCount = child.charCount(); + while (adjustedLength > childCharCount) { + if (this.execWalk(0, childCharCount, walkFns, childIndex, CharRangeSection.Mid)) { + return; + } + adjustedLength -= childCharCount; + child = this.children[++childIndex]; + childCharCount = child.charCount(); + } + if (adjustedLength > 0) { + if (this.execWalk(0, adjustedLength, walkFns, childIndex, CharRangeSection.End)) { + return; + } + } + } + if (walkFns.pre) { + var clen = this.children.length; + if (childIndex < (clen - 1)) { + for (var ej = childIndex + 1; ej < clen; ej++) { + this.skipChild(0, 0, ej, walkFns, CharRangeSection.PostEnd); + } + } + } + }; + LineNode.prototype.charOffsetToLineNumberAndPos = function (lineNumber, charOffset) { + var childInfo = this.childFromCharOffset(lineNumber, charOffset); + if (!childInfo.child) { + return { + line: lineNumber, + offset: charOffset + }; + } + else if (childInfo.childIndex < this.children.length) { + if (childInfo.child.isLeaf()) { + return { + line: childInfo.lineNumber, + offset: childInfo.charOffset, + text: (childInfo.child).text, + leaf: (childInfo.child) + }; + } + else { + var lineNode = (childInfo.child); + return lineNode.charOffsetToLineNumberAndPos(childInfo.lineNumber, childInfo.charOffset); + } + } + else { + var lineInfo = this.lineNumberToInfo(this.lineCount(), 0); + return { line: this.lineCount(), offset: lineInfo.leaf.charCount() }; + } + }; + LineNode.prototype.lineNumberToInfo = function (lineNumber, charOffset) { + var childInfo = this.childFromLineNumber(lineNumber, charOffset); + if (!childInfo.child) { + return { + line: lineNumber, + offset: charOffset + }; + } + else if (childInfo.child.isLeaf()) { + return { + line: lineNumber, + offset: childInfo.charOffset, + text: (childInfo.child).text, + leaf: (childInfo.child) + }; + } + else { + var lineNode = (childInfo.child); + return lineNode.lineNumberToInfo(childInfo.relativeLineNumber, childInfo.charOffset); + } + }; + LineNode.prototype.childFromLineNumber = function (lineNumber, charOffset) { + var child; + var relativeLineNumber = lineNumber; + for (var i = 0, len = this.children.length; i < len; i++) { + child = this.children[i]; + var childLineCount = child.lineCount(); + if (childLineCount >= relativeLineNumber) { + break; + } + else { + relativeLineNumber -= childLineCount; + charOffset += child.charCount(); + } + } + return { + child: child, + childIndex: i, + relativeLineNumber: relativeLineNumber, + charOffset: charOffset + }; + }; + LineNode.prototype.childFromCharOffset = function (lineNumber, charOffset) { + var child; + for (var i = 0, len = this.children.length; i < len; i++) { + child = this.children[i]; + if (child.charCount() > charOffset) { + break; + } + else { + charOffset -= child.charCount(); + lineNumber += child.lineCount(); + } + } + return { + child: child, + childIndex: i, + charOffset: charOffset, + lineNumber: lineNumber + }; + }; + LineNode.prototype.splitAfter = function (childIndex) { + var splitNode; + var clen = this.children.length; + childIndex++; + var endLength = childIndex; + if (childIndex < clen) { + splitNode = new LineNode(); + while (childIndex < clen) { + splitNode.add(this.children[childIndex++]); + } + splitNode.updateCounts(); + } + this.children.length = endLength; + return splitNode; + }; + LineNode.prototype.remove = function (child) { + var childIndex = this.findChildIndex(child); + var clen = this.children.length; + if (childIndex < (clen - 1)) { + for (var i = childIndex; i < (clen - 1); i++) { + this.children[i] = this.children[i + 1]; + } + } + this.children.length--; + }; + LineNode.prototype.findChildIndex = function (child) { + var childIndex = 0; + var clen = this.children.length; + while ((this.children[childIndex] != child) && (childIndex < clen)) + childIndex++; + return childIndex; + }; + LineNode.prototype.insertAt = function (child, nodes) { + var childIndex = this.findChildIndex(child); + var clen = this.children.length; + var nodeCount = nodes.length; + if ((clen < lineCollectionCapacity) && (childIndex == (clen - 1)) && (nodeCount == 1)) { + this.add(nodes[0]); + this.updateCounts(); + return []; + } + else { + var shiftNode = this.splitAfter(childIndex); + var nodeIndex = 0; + childIndex++; + while ((childIndex < lineCollectionCapacity) && (nodeIndex < nodeCount)) { + this.children[childIndex++] = nodes[nodeIndex++]; + } + var splitNodes = []; + var splitNodeCount = 0; + if (nodeIndex < nodeCount) { + splitNodeCount = Math.ceil((nodeCount - nodeIndex) / lineCollectionCapacity); + splitNodes = new Array(splitNodeCount); + var splitNodeIndex = 0; + for (var i = 0; i < splitNodeCount; i++) { + splitNodes[i] = new LineNode(); + } + var splitNode = splitNodes[0]; + while (nodeIndex < nodeCount) { + splitNode.add(nodes[nodeIndex++]); + if (splitNode.children.length == lineCollectionCapacity) { + splitNodeIndex++; + splitNode = splitNodes[splitNodeIndex]; + } + } + for (i = splitNodes.length - 1; i >= 0; i--) { + if (splitNodes[i].children.length == 0) { + splitNodes.length--; + } + } + } + if (shiftNode) { + splitNodes[splitNodes.length] = shiftNode; + } + this.updateCounts(); + for (i = 0; i < splitNodeCount; i++) { + splitNodes[i].updateCounts(); + } + return splitNodes; + } + }; + LineNode.prototype.add = function (collection) { + this.children[this.children.length] = collection; + return (this.children.length < lineCollectionCapacity); + }; + LineNode.prototype.charCount = function () { + return this.totalChars; + }; + LineNode.prototype.lineCount = function () { + return this.totalLines; + }; + return LineNode; + })(); + var LineLeaf = (function () { + function LineLeaf(text) { + this.text = text; + } + LineLeaf.prototype.setUdata = function (data) { + this.udata = data; + }; + LineLeaf.prototype.getUdata = function () { + return this.udata; + }; + LineLeaf.prototype.isLeaf = function () { + return true; + }; + LineLeaf.prototype.walk = function (rangeStart, rangeLength, walkFns) { + walkFns.leaf(rangeStart, rangeLength, this); + }; + LineLeaf.prototype.charCount = function () { + return this.text.length; + }; + LineLeaf.prototype.lineCount = function () { + return 1; + }; + return LineLeaf; + })(); + })(server = ts.server || (ts.server = {})); +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + var server; + (function (server) { + var nodeproto = require('_debugger'); + var readline = require('readline'); + var path = require('path'); + var fs = require('fs'); + var rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + terminal: false + }); + var Logger = (function () { + function Logger(logFilename, level) { + this.logFilename = logFilename; + this.level = level; + this.fd = -1; + this.seq = 0; + this.inGroup = false; + this.firstInGroup = true; + } + Logger.padStringRight = function (str, padding) { + return (str + padding).slice(0, padding.length); + }; + Logger.prototype.close = function () { + if (this.fd >= 0) { + fs.close(this.fd); + } + }; + Logger.prototype.perftrc = function (s) { + this.msg(s, "Perf"); + }; + Logger.prototype.info = function (s) { + this.msg(s, "Info"); + }; + Logger.prototype.startGroup = function () { + this.inGroup = true; + this.firstInGroup = true; + }; + Logger.prototype.endGroup = function () { + this.inGroup = false; + this.seq++; + this.firstInGroup = true; + }; + Logger.prototype.loggingEnabled = function () { + return !!this.logFilename; + }; + Logger.prototype.isVerbose = function () { + return this.loggingEnabled() && (this.level == "verbose"); + }; + Logger.prototype.msg = function (s, type) { + if (type === void 0) { type = "Err"; } + if (this.fd < 0) { + if (this.logFilename) { + this.fd = fs.openSync(this.logFilename, "w"); + } + } + if (this.fd >= 0) { + s = s + "\n"; + var prefix = Logger.padStringRight(type + " " + this.seq.toString(), " "); + if (this.firstInGroup) { + s = prefix + s; + this.firstInGroup = false; + } + if (!this.inGroup) { + this.seq++; + this.firstInGroup = true; + } + var buf = new Buffer(s); + fs.writeSync(this.fd, buf, 0, buf.length, null); + } + }; + return Logger; + })(); + var WatchedFileSet = (function () { + function WatchedFileSet(interval, chunkSize) { + if (interval === void 0) { interval = 2500; } + if (chunkSize === void 0) { chunkSize = 30; } + this.interval = interval; + this.chunkSize = chunkSize; + this.watchedFiles = []; + this.nextFileToCheck = 0; + } + WatchedFileSet.copyListRemovingItem = function (item, list) { + var copiedList = []; + for (var i = 0, len = list.length; i < len; i++) { + if (list[i] != item) { + copiedList.push(list[i]); + } + } + return copiedList; + }; + WatchedFileSet.getModifiedTime = function (fileName) { + return fs.statSync(fileName).mtime; + }; + WatchedFileSet.prototype.poll = function (checkedIndex) { + var watchedFile = this.watchedFiles[checkedIndex]; + if (!watchedFile) { + return; + } + fs.stat(watchedFile.fileName, function (err, stats) { + if (err) { + watchedFile.callback(watchedFile.fileName); + } + else if (watchedFile.mtime.getTime() != stats.mtime.getTime()) { + watchedFile.mtime = WatchedFileSet.getModifiedTime(watchedFile.fileName); + watchedFile.callback(watchedFile.fileName); + } + }); + }; + WatchedFileSet.prototype.startWatchTimer = function () { + var _this = this; + this.watchTimer = setInterval(function () { + var count = 0; + var nextToCheck = _this.nextFileToCheck; + var firstCheck = -1; + while ((count < _this.chunkSize) && (nextToCheck != firstCheck)) { + _this.poll(nextToCheck); + if (firstCheck < 0) { + firstCheck = nextToCheck; + } + nextToCheck++; + if (nextToCheck === _this.watchedFiles.length) { + nextToCheck = 0; + } + count++; + } + _this.nextFileToCheck = nextToCheck; + }, this.interval); + }; + WatchedFileSet.prototype.addFile = function (fileName, callback) { + var file = { + fileName: fileName, + callback: callback, + mtime: WatchedFileSet.getModifiedTime(fileName) + }; + this.watchedFiles.push(file); + if (this.watchedFiles.length === 1) { + this.startWatchTimer(); + } + return file; + }; + WatchedFileSet.prototype.removeFile = function (file) { + this.watchedFiles = WatchedFileSet.copyListRemovingItem(file, this.watchedFiles); + }; + return WatchedFileSet; + })(); + var IOSession = (function (_super) { + __extends(IOSession, _super); + function IOSession(host, logger) { + _super.call(this, host, logger); + } + IOSession.prototype.listen = function () { + var _this = this; + rl.on('line', function (input) { + var message = input.trim(); + _this.onMessage(message); + }); + rl.on('close', function () { + _this.projectService.log("Exiting..."); + _this.projectService.closeLog(); + process.exit(0); + }); + }; + return IOSession; + })(server.Session); + function parseLoggingEnvironmentString(logEnvStr) { + var logEnv = {}; + var args = logEnvStr.split(' '); + for (var i = 0, len = args.length; i < (len - 1); i += 2) { + var option = args[i]; + var value = args[i + 1]; + if (option && value) { + switch (option) { + case "-file": + logEnv.file = value; + break; + case "-level": + logEnv.detailLevel = value; + break; + } + } + } + return logEnv; + } + function createLoggerFromEnv() { + var fileName = undefined; + var detailLevel = "normal"; + var logEnvStr = process.env["TSS_LOG"]; + if (logEnvStr) { + var logEnv = parseLoggingEnvironmentString(logEnvStr); + if (logEnv.file) { + fileName = logEnv.file; + } + else { + fileName = __dirname + "/.log" + process.pid.toString(); + } + if (logEnv.detailLevel) { + detailLevel = logEnv.detailLevel; + } + } + return new Logger(fileName, detailLevel); + } + var logger = createLoggerFromEnv(); + var watchedFileSet = new WatchedFileSet(); + ts.sys.watchFile = function (fileName, callback) { + var watchedFile = watchedFileSet.addFile(fileName, callback); + return { + close: function () { return watchedFileSet.removeFile(watchedFile); } + }; + }; + var ioSession = new IOSession(ts.sys, logger); + process.on('uncaughtException', function (err) { + ioSession.logError(err, "unknown"); + }); + ioSession.listen(); + })(server = ts.server || (ts.server = {})); +})(ts || (ts = {})); diff --git a/bin/typescript.d.ts b/bin/typescript.d.ts index b0cc19c87d3..e817dfb54ae 100644 --- a/bin/typescript.d.ts +++ b/bin/typescript.d.ts @@ -74,181 +74,198 @@ declare module "typescript" { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - ImplementsKeyword = 101, - InterfaceKeyword = 102, - LetKeyword = 103, - PackageKeyword = 104, - PrivateKeyword = 105, - ProtectedKeyword = 106, - PublicKeyword = 107, - StaticKeyword = 108, - YieldKeyword = 109, - AnyKeyword = 110, - BooleanKeyword = 111, - ConstructorKeyword = 112, - DeclareKeyword = 113, - GetKeyword = 114, - ModuleKeyword = 115, - RequireKeyword = 116, - NumberKeyword = 117, - SetKeyword = 118, - StringKeyword = 119, - SymbolKeyword = 120, - TypeKeyword = 121, - OfKeyword = 122, - QualifiedName = 123, - ComputedPropertyName = 124, - TypeParameter = 125, - Parameter = 126, - PropertySignature = 127, - PropertyDeclaration = 128, - MethodSignature = 129, - MethodDeclaration = 130, - Constructor = 131, - GetAccessor = 132, - SetAccessor = 133, - CallSignature = 134, - ConstructSignature = 135, - IndexSignature = 136, - TypeReference = 137, - FunctionType = 138, - ConstructorType = 139, - TypeQuery = 140, - TypeLiteral = 141, - ArrayType = 142, - TupleType = 143, - UnionType = 144, - ParenthesizedType = 145, - ObjectBindingPattern = 146, - ArrayBindingPattern = 147, - BindingElement = 148, - ArrayLiteralExpression = 149, - ObjectLiteralExpression = 150, - PropertyAccessExpression = 151, - ElementAccessExpression = 152, - CallExpression = 153, - NewExpression = 154, - TaggedTemplateExpression = 155, - TypeAssertionExpression = 156, - ParenthesizedExpression = 157, - FunctionExpression = 158, - ArrowFunction = 159, - DeleteExpression = 160, - TypeOfExpression = 161, - VoidExpression = 162, - PrefixUnaryExpression = 163, - PostfixUnaryExpression = 164, - BinaryExpression = 165, - ConditionalExpression = 166, - TemplateExpression = 167, - YieldExpression = 168, - SpreadElementExpression = 169, - OmittedExpression = 170, - TemplateSpan = 171, - Block = 172, - VariableStatement = 173, - EmptyStatement = 174, - ExpressionStatement = 175, - IfStatement = 176, - DoStatement = 177, - WhileStatement = 178, - ForStatement = 179, - ForInStatement = 180, - ForOfStatement = 181, - ContinueStatement = 182, - BreakStatement = 183, - ReturnStatement = 184, - WithStatement = 185, - SwitchStatement = 186, - LabeledStatement = 187, - ThrowStatement = 188, - TryStatement = 189, - DebuggerStatement = 190, - VariableDeclaration = 191, - VariableDeclarationList = 192, - FunctionDeclaration = 193, - ClassDeclaration = 194, - InterfaceDeclaration = 195, - TypeAliasDeclaration = 196, - EnumDeclaration = 197, - ModuleDeclaration = 198, - ModuleBlock = 199, - ImportDeclaration = 200, - ExportAssignment = 201, - ExternalModuleReference = 202, - CaseClause = 203, - DefaultClause = 204, - HeritageClause = 205, - CatchClause = 206, - PropertyAssignment = 207, - ShorthandPropertyAssignment = 208, - EnumMember = 209, - SourceFile = 210, - SyntaxList = 211, - Count = 212, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 122, - FirstFutureReservedWord = 101, - LastFutureReservedWord = 109, - FirstTypeNode = 137, - LastTypeNode = 145, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, + ImplementsKeyword = 103, + InterfaceKeyword = 104, + LetKeyword = 105, + PackageKeyword = 106, + PrivateKeyword = 107, + ProtectedKeyword = 108, + PublicKeyword = 109, + StaticKeyword = 110, + YieldKeyword = 111, + AnyKeyword = 112, + BooleanKeyword = 113, + ConstructorKeyword = 114, + DeclareKeyword = 115, + GetKeyword = 116, + ModuleKeyword = 117, + RequireKeyword = 118, + NumberKeyword = 119, + SetKeyword = 120, + StringKeyword = 121, + SymbolKeyword = 122, + TypeKeyword = 123, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, + FirstFutureReservedWord = 103, + LastFutureReservedWord = 111, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 122, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -256,8 +273,8 @@ declare module "typescript" { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 123, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -266,25 +283,28 @@ declare module "typescript" { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -295,13 +315,14 @@ declare module "typescript" { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; + modifiers?: ModifiersArray; id?: number; parent?: Node; symbol?: Symbol; locals?: SymbolTable; nextContainer?: Node; localSymbol?: Symbol; - modifiers?: ModifiersArray; } interface NodeArray extends Array, TextRange { hasTrailingComma?: boolean; @@ -325,6 +346,9 @@ declare module "typescript" { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -402,7 +426,7 @@ declare module "typescript" { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -411,6 +435,9 @@ declare module "typescript" { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -495,16 +522,22 @@ declare module "typescript" { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -531,6 +564,7 @@ declare module "typescript" { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -542,6 +576,10 @@ declare module "typescript" { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -604,6 +642,9 @@ declare module "typescript" { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -626,20 +667,23 @@ declare module "typescript" { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -651,7 +695,7 @@ declare module "typescript" { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -672,15 +716,43 @@ declare module "typescript" { interface ModuleBlock extends Node, ModuleElement { statements: NodeArray; } - interface ImportDeclaration extends Declaration, ModuleElement { + interface ImportEqualsDeclaration extends Declaration, ModuleElement { name: Identifier; moduleReference: EntityName | ExternalModuleReference; } interface ExternalModuleReference extends Node { expression?: Expression; } - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ImportDeclaration extends Statement, ModuleElement { + importClause?: ImportClause; + moduleSpecifier: Expression; + } + interface ImportClause extends Declaration { + name?: Identifier; + namedBindings?: NamespaceImport | NamedImports; + } + interface NamespaceImport extends Declaration { + name: Identifier; + } + interface ExportDeclaration extends Declaration, ModuleElement { + exportClause?: NamedExports; + moduleSpecifier?: Expression; + } + interface NamedImportsOrExports extends Node { + elements: NodeArray; + } + type NamedImports = NamedImportsOrExports; + type NamedExports = NamedImportsOrExports; + interface ImportOrExportSpecifier extends Declaration { + propertyName?: Identifier; + name: Identifier; + } + type ImportSpecifier = ImportOrExportSpecifier; + type ExportSpecifier = ImportOrExportSpecifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -715,14 +787,14 @@ declare module "typescript" { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -793,6 +865,7 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfExternalModule(node: ImportDeclaration): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -840,9 +913,10 @@ declare module "typescript" { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -850,20 +924,23 @@ declare module "typescript" { errorModuleName?: string; } interface EmitResolver { - getLocalNameOfContainer(container: ModuleDeclaration | EnumDeclaration): string; - getExpressionNamePrefix(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: ImportDeclaration): boolean; - isTopLevelValueImportWithEntityName(node: ImportDeclaration): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -889,13 +966,14 @@ declare module "typescript" { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -920,7 +998,7 @@ declare module "typescript" { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -949,8 +1027,9 @@ declare module "typescript" { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignSymbol?: Symbol; unionType?: UnionType; + resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -966,6 +1045,8 @@ declare module "typescript" { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -975,7 +1056,8 @@ declare module "typescript" { enumMemberValue?: number; isIllegalTypeReferenceInConstraint?: boolean; isVisible?: boolean; - localModuleName?: string; + generatedName?: string; + generatedNames?: Map; assignmentChecks?: Map; hasReportedStatementInAmbientContext?: boolean; importOnRightSide?: Symbol; @@ -1084,17 +1166,6 @@ declare module "typescript" { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1122,7 +1193,6 @@ declare module "typescript" { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1136,7 +1206,6 @@ declare module "typescript" { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1149,7 +1218,7 @@ declare module "typescript" { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1341,6 +1410,7 @@ declare module "typescript" { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1389,13 +1459,31 @@ declare module "typescript" { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1437,9 +1525,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1505,6 +1590,7 @@ declare module "typescript" { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1560,6 +1646,7 @@ declare module "typescript" { kind: string; kindModifiers: string; matchKind: string; + isCaseSensitive: boolean; fileName: string; textSpan: TextSpan; containerName: string; @@ -1590,6 +1677,10 @@ declare module "typescript" { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1792,25 +1883,17 @@ declare module "typescript" { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1891,8 +1974,9 @@ declare module "typescript" { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; diff --git a/bin/typescript.js b/bin/typescript.js index 1d2c9f37ac8..0ea54239508 100644 --- a/bin/typescript.js +++ b/bin/typescript.js @@ -68,181 +68,198 @@ var ts; SyntaxKind[SyntaxKind["BarBarToken"] = 49] = "BarBarToken"; SyntaxKind[SyntaxKind["QuestionToken"] = 50] = "QuestionToken"; SyntaxKind[SyntaxKind["ColonToken"] = 51] = "ColonToken"; - SyntaxKind[SyntaxKind["EqualsToken"] = 52] = "EqualsToken"; - SyntaxKind[SyntaxKind["PlusEqualsToken"] = 53] = "PlusEqualsToken"; - SyntaxKind[SyntaxKind["MinusEqualsToken"] = 54] = "MinusEqualsToken"; - SyntaxKind[SyntaxKind["AsteriskEqualsToken"] = 55] = "AsteriskEqualsToken"; - SyntaxKind[SyntaxKind["SlashEqualsToken"] = 56] = "SlashEqualsToken"; - SyntaxKind[SyntaxKind["PercentEqualsToken"] = 57] = "PercentEqualsToken"; - SyntaxKind[SyntaxKind["LessThanLessThanEqualsToken"] = 58] = "LessThanLessThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanEqualsToken"] = 59] = "GreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanEqualsToken"] = 60] = "GreaterThanGreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["AmpersandEqualsToken"] = 61] = "AmpersandEqualsToken"; - SyntaxKind[SyntaxKind["BarEqualsToken"] = 62] = "BarEqualsToken"; - SyntaxKind[SyntaxKind["CaretEqualsToken"] = 63] = "CaretEqualsToken"; - SyntaxKind[SyntaxKind["Identifier"] = 64] = "Identifier"; - SyntaxKind[SyntaxKind["BreakKeyword"] = 65] = "BreakKeyword"; - SyntaxKind[SyntaxKind["CaseKeyword"] = 66] = "CaseKeyword"; - SyntaxKind[SyntaxKind["CatchKeyword"] = 67] = "CatchKeyword"; - SyntaxKind[SyntaxKind["ClassKeyword"] = 68] = "ClassKeyword"; - SyntaxKind[SyntaxKind["ConstKeyword"] = 69] = "ConstKeyword"; - SyntaxKind[SyntaxKind["ContinueKeyword"] = 70] = "ContinueKeyword"; - SyntaxKind[SyntaxKind["DebuggerKeyword"] = 71] = "DebuggerKeyword"; - SyntaxKind[SyntaxKind["DefaultKeyword"] = 72] = "DefaultKeyword"; - SyntaxKind[SyntaxKind["DeleteKeyword"] = 73] = "DeleteKeyword"; - SyntaxKind[SyntaxKind["DoKeyword"] = 74] = "DoKeyword"; - SyntaxKind[SyntaxKind["ElseKeyword"] = 75] = "ElseKeyword"; - SyntaxKind[SyntaxKind["EnumKeyword"] = 76] = "EnumKeyword"; - SyntaxKind[SyntaxKind["ExportKeyword"] = 77] = "ExportKeyword"; - SyntaxKind[SyntaxKind["ExtendsKeyword"] = 78] = "ExtendsKeyword"; - SyntaxKind[SyntaxKind["FalseKeyword"] = 79] = "FalseKeyword"; - SyntaxKind[SyntaxKind["FinallyKeyword"] = 80] = "FinallyKeyword"; - SyntaxKind[SyntaxKind["ForKeyword"] = 81] = "ForKeyword"; - SyntaxKind[SyntaxKind["FunctionKeyword"] = 82] = "FunctionKeyword"; - SyntaxKind[SyntaxKind["IfKeyword"] = 83] = "IfKeyword"; - SyntaxKind[SyntaxKind["ImportKeyword"] = 84] = "ImportKeyword"; - SyntaxKind[SyntaxKind["InKeyword"] = 85] = "InKeyword"; - SyntaxKind[SyntaxKind["InstanceOfKeyword"] = 86] = "InstanceOfKeyword"; - SyntaxKind[SyntaxKind["NewKeyword"] = 87] = "NewKeyword"; - SyntaxKind[SyntaxKind["NullKeyword"] = 88] = "NullKeyword"; - SyntaxKind[SyntaxKind["ReturnKeyword"] = 89] = "ReturnKeyword"; - SyntaxKind[SyntaxKind["SuperKeyword"] = 90] = "SuperKeyword"; - SyntaxKind[SyntaxKind["SwitchKeyword"] = 91] = "SwitchKeyword"; - SyntaxKind[SyntaxKind["ThisKeyword"] = 92] = "ThisKeyword"; - SyntaxKind[SyntaxKind["ThrowKeyword"] = 93] = "ThrowKeyword"; - SyntaxKind[SyntaxKind["TrueKeyword"] = 94] = "TrueKeyword"; - SyntaxKind[SyntaxKind["TryKeyword"] = 95] = "TryKeyword"; - SyntaxKind[SyntaxKind["TypeOfKeyword"] = 96] = "TypeOfKeyword"; - SyntaxKind[SyntaxKind["VarKeyword"] = 97] = "VarKeyword"; - SyntaxKind[SyntaxKind["VoidKeyword"] = 98] = "VoidKeyword"; - SyntaxKind[SyntaxKind["WhileKeyword"] = 99] = "WhileKeyword"; - SyntaxKind[SyntaxKind["WithKeyword"] = 100] = "WithKeyword"; - SyntaxKind[SyntaxKind["ImplementsKeyword"] = 101] = "ImplementsKeyword"; - SyntaxKind[SyntaxKind["InterfaceKeyword"] = 102] = "InterfaceKeyword"; - SyntaxKind[SyntaxKind["LetKeyword"] = 103] = "LetKeyword"; - SyntaxKind[SyntaxKind["PackageKeyword"] = 104] = "PackageKeyword"; - SyntaxKind[SyntaxKind["PrivateKeyword"] = 105] = "PrivateKeyword"; - SyntaxKind[SyntaxKind["ProtectedKeyword"] = 106] = "ProtectedKeyword"; - SyntaxKind[SyntaxKind["PublicKeyword"] = 107] = "PublicKeyword"; - SyntaxKind[SyntaxKind["StaticKeyword"] = 108] = "StaticKeyword"; - SyntaxKind[SyntaxKind["YieldKeyword"] = 109] = "YieldKeyword"; - SyntaxKind[SyntaxKind["AnyKeyword"] = 110] = "AnyKeyword"; - SyntaxKind[SyntaxKind["BooleanKeyword"] = 111] = "BooleanKeyword"; - SyntaxKind[SyntaxKind["ConstructorKeyword"] = 112] = "ConstructorKeyword"; - SyntaxKind[SyntaxKind["DeclareKeyword"] = 113] = "DeclareKeyword"; - SyntaxKind[SyntaxKind["GetKeyword"] = 114] = "GetKeyword"; - SyntaxKind[SyntaxKind["ModuleKeyword"] = 115] = "ModuleKeyword"; - SyntaxKind[SyntaxKind["RequireKeyword"] = 116] = "RequireKeyword"; - SyntaxKind[SyntaxKind["NumberKeyword"] = 117] = "NumberKeyword"; - SyntaxKind[SyntaxKind["SetKeyword"] = 118] = "SetKeyword"; - SyntaxKind[SyntaxKind["StringKeyword"] = 119] = "StringKeyword"; - SyntaxKind[SyntaxKind["SymbolKeyword"] = 120] = "SymbolKeyword"; - SyntaxKind[SyntaxKind["TypeKeyword"] = 121] = "TypeKeyword"; - SyntaxKind[SyntaxKind["OfKeyword"] = 122] = "OfKeyword"; - SyntaxKind[SyntaxKind["QualifiedName"] = 123] = "QualifiedName"; - SyntaxKind[SyntaxKind["ComputedPropertyName"] = 124] = "ComputedPropertyName"; - SyntaxKind[SyntaxKind["TypeParameter"] = 125] = "TypeParameter"; - SyntaxKind[SyntaxKind["Parameter"] = 126] = "Parameter"; - SyntaxKind[SyntaxKind["PropertySignature"] = 127] = "PropertySignature"; - SyntaxKind[SyntaxKind["PropertyDeclaration"] = 128] = "PropertyDeclaration"; - SyntaxKind[SyntaxKind["MethodSignature"] = 129] = "MethodSignature"; - SyntaxKind[SyntaxKind["MethodDeclaration"] = 130] = "MethodDeclaration"; - SyntaxKind[SyntaxKind["Constructor"] = 131] = "Constructor"; - SyntaxKind[SyntaxKind["GetAccessor"] = 132] = "GetAccessor"; - SyntaxKind[SyntaxKind["SetAccessor"] = 133] = "SetAccessor"; - SyntaxKind[SyntaxKind["CallSignature"] = 134] = "CallSignature"; - SyntaxKind[SyntaxKind["ConstructSignature"] = 135] = "ConstructSignature"; - SyntaxKind[SyntaxKind["IndexSignature"] = 136] = "IndexSignature"; - SyntaxKind[SyntaxKind["TypeReference"] = 137] = "TypeReference"; - SyntaxKind[SyntaxKind["FunctionType"] = 138] = "FunctionType"; - SyntaxKind[SyntaxKind["ConstructorType"] = 139] = "ConstructorType"; - SyntaxKind[SyntaxKind["TypeQuery"] = 140] = "TypeQuery"; - SyntaxKind[SyntaxKind["TypeLiteral"] = 141] = "TypeLiteral"; - SyntaxKind[SyntaxKind["ArrayType"] = 142] = "ArrayType"; - SyntaxKind[SyntaxKind["TupleType"] = 143] = "TupleType"; - SyntaxKind[SyntaxKind["UnionType"] = 144] = "UnionType"; - SyntaxKind[SyntaxKind["ParenthesizedType"] = 145] = "ParenthesizedType"; - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 146] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 147] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 148] = "BindingElement"; - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 149] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 150] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 151] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 152] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 153] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 154] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 155] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 156] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 157] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 158] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 159] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 160] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 161] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 162] = "VoidExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 163] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 164] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 165] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 166] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 167] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 168] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 169] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 170] = "OmittedExpression"; - SyntaxKind[SyntaxKind["TemplateSpan"] = 171] = "TemplateSpan"; - SyntaxKind[SyntaxKind["Block"] = 172] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 173] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 174] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 175] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 176] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 177] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 178] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 179] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 180] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 181] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 182] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 183] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 184] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 185] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 186] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 187] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 188] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 189] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 190] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 191] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 192] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 193] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 194] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 195] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 196] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 197] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 198] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 199] = "ModuleBlock"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 200] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 201] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 202] = "ExternalModuleReference"; - SyntaxKind[SyntaxKind["CaseClause"] = 203] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 204] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 205] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 206] = "CatchClause"; - SyntaxKind[SyntaxKind["PropertyAssignment"] = 207] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 208] = "ShorthandPropertyAssignment"; - SyntaxKind[SyntaxKind["EnumMember"] = 209] = "EnumMember"; - SyntaxKind[SyntaxKind["SourceFile"] = 210] = "SourceFile"; - SyntaxKind[SyntaxKind["SyntaxList"] = 211] = "SyntaxList"; - SyntaxKind[SyntaxKind["Count"] = 212] = "Count"; - SyntaxKind[SyntaxKind["FirstAssignment"] = 52] = "FirstAssignment"; - SyntaxKind[SyntaxKind["LastAssignment"] = 63] = "LastAssignment"; - SyntaxKind[SyntaxKind["FirstReservedWord"] = 65] = "FirstReservedWord"; - SyntaxKind[SyntaxKind["LastReservedWord"] = 100] = "LastReservedWord"; - SyntaxKind[SyntaxKind["FirstKeyword"] = 65] = "FirstKeyword"; - SyntaxKind[SyntaxKind["LastKeyword"] = 122] = "LastKeyword"; - SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 101] = "FirstFutureReservedWord"; - SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 109] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 137] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 145] = "LastTypeNode"; + SyntaxKind[SyntaxKind["AtToken"] = 52] = "AtToken"; + SyntaxKind[SyntaxKind["EqualsToken"] = 53] = "EqualsToken"; + SyntaxKind[SyntaxKind["PlusEqualsToken"] = 54] = "PlusEqualsToken"; + SyntaxKind[SyntaxKind["MinusEqualsToken"] = 55] = "MinusEqualsToken"; + SyntaxKind[SyntaxKind["AsteriskEqualsToken"] = 56] = "AsteriskEqualsToken"; + SyntaxKind[SyntaxKind["SlashEqualsToken"] = 57] = "SlashEqualsToken"; + SyntaxKind[SyntaxKind["PercentEqualsToken"] = 58] = "PercentEqualsToken"; + SyntaxKind[SyntaxKind["LessThanLessThanEqualsToken"] = 59] = "LessThanLessThanEqualsToken"; + SyntaxKind[SyntaxKind["GreaterThanGreaterThanEqualsToken"] = 60] = "GreaterThanGreaterThanEqualsToken"; + SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanEqualsToken"] = 61] = "GreaterThanGreaterThanGreaterThanEqualsToken"; + SyntaxKind[SyntaxKind["AmpersandEqualsToken"] = 62] = "AmpersandEqualsToken"; + SyntaxKind[SyntaxKind["BarEqualsToken"] = 63] = "BarEqualsToken"; + SyntaxKind[SyntaxKind["CaretEqualsToken"] = 64] = "CaretEqualsToken"; + SyntaxKind[SyntaxKind["Identifier"] = 65] = "Identifier"; + SyntaxKind[SyntaxKind["BreakKeyword"] = 66] = "BreakKeyword"; + SyntaxKind[SyntaxKind["CaseKeyword"] = 67] = "CaseKeyword"; + SyntaxKind[SyntaxKind["CatchKeyword"] = 68] = "CatchKeyword"; + SyntaxKind[SyntaxKind["ClassKeyword"] = 69] = "ClassKeyword"; + SyntaxKind[SyntaxKind["ConstKeyword"] = 70] = "ConstKeyword"; + SyntaxKind[SyntaxKind["ContinueKeyword"] = 71] = "ContinueKeyword"; + SyntaxKind[SyntaxKind["DebuggerKeyword"] = 72] = "DebuggerKeyword"; + SyntaxKind[SyntaxKind["DefaultKeyword"] = 73] = "DefaultKeyword"; + SyntaxKind[SyntaxKind["DeleteKeyword"] = 74] = "DeleteKeyword"; + SyntaxKind[SyntaxKind["DoKeyword"] = 75] = "DoKeyword"; + SyntaxKind[SyntaxKind["ElseKeyword"] = 76] = "ElseKeyword"; + SyntaxKind[SyntaxKind["EnumKeyword"] = 77] = "EnumKeyword"; + SyntaxKind[SyntaxKind["ExportKeyword"] = 78] = "ExportKeyword"; + SyntaxKind[SyntaxKind["ExtendsKeyword"] = 79] = "ExtendsKeyword"; + SyntaxKind[SyntaxKind["FalseKeyword"] = 80] = "FalseKeyword"; + SyntaxKind[SyntaxKind["FinallyKeyword"] = 81] = "FinallyKeyword"; + SyntaxKind[SyntaxKind["ForKeyword"] = 82] = "ForKeyword"; + SyntaxKind[SyntaxKind["FunctionKeyword"] = 83] = "FunctionKeyword"; + SyntaxKind[SyntaxKind["IfKeyword"] = 84] = "IfKeyword"; + SyntaxKind[SyntaxKind["ImportKeyword"] = 85] = "ImportKeyword"; + SyntaxKind[SyntaxKind["InKeyword"] = 86] = "InKeyword"; + SyntaxKind[SyntaxKind["InstanceOfKeyword"] = 87] = "InstanceOfKeyword"; + SyntaxKind[SyntaxKind["NewKeyword"] = 88] = "NewKeyword"; + SyntaxKind[SyntaxKind["NullKeyword"] = 89] = "NullKeyword"; + SyntaxKind[SyntaxKind["ReturnKeyword"] = 90] = "ReturnKeyword"; + SyntaxKind[SyntaxKind["SuperKeyword"] = 91] = "SuperKeyword"; + SyntaxKind[SyntaxKind["SwitchKeyword"] = 92] = "SwitchKeyword"; + SyntaxKind[SyntaxKind["ThisKeyword"] = 93] = "ThisKeyword"; + SyntaxKind[SyntaxKind["ThrowKeyword"] = 94] = "ThrowKeyword"; + SyntaxKind[SyntaxKind["TrueKeyword"] = 95] = "TrueKeyword"; + SyntaxKind[SyntaxKind["TryKeyword"] = 96] = "TryKeyword"; + SyntaxKind[SyntaxKind["TypeOfKeyword"] = 97] = "TypeOfKeyword"; + SyntaxKind[SyntaxKind["VarKeyword"] = 98] = "VarKeyword"; + SyntaxKind[SyntaxKind["VoidKeyword"] = 99] = "VoidKeyword"; + SyntaxKind[SyntaxKind["WhileKeyword"] = 100] = "WhileKeyword"; + SyntaxKind[SyntaxKind["WithKeyword"] = 101] = "WithKeyword"; + SyntaxKind[SyntaxKind["AsKeyword"] = 102] = "AsKeyword"; + SyntaxKind[SyntaxKind["ImplementsKeyword"] = 103] = "ImplementsKeyword"; + SyntaxKind[SyntaxKind["InterfaceKeyword"] = 104] = "InterfaceKeyword"; + SyntaxKind[SyntaxKind["LetKeyword"] = 105] = "LetKeyword"; + SyntaxKind[SyntaxKind["PackageKeyword"] = 106] = "PackageKeyword"; + SyntaxKind[SyntaxKind["PrivateKeyword"] = 107] = "PrivateKeyword"; + SyntaxKind[SyntaxKind["ProtectedKeyword"] = 108] = "ProtectedKeyword"; + SyntaxKind[SyntaxKind["PublicKeyword"] = 109] = "PublicKeyword"; + SyntaxKind[SyntaxKind["StaticKeyword"] = 110] = "StaticKeyword"; + SyntaxKind[SyntaxKind["YieldKeyword"] = 111] = "YieldKeyword"; + SyntaxKind[SyntaxKind["AnyKeyword"] = 112] = "AnyKeyword"; + SyntaxKind[SyntaxKind["BooleanKeyword"] = 113] = "BooleanKeyword"; + SyntaxKind[SyntaxKind["ConstructorKeyword"] = 114] = "ConstructorKeyword"; + SyntaxKind[SyntaxKind["DeclareKeyword"] = 115] = "DeclareKeyword"; + SyntaxKind[SyntaxKind["GetKeyword"] = 116] = "GetKeyword"; + SyntaxKind[SyntaxKind["ModuleKeyword"] = 117] = "ModuleKeyword"; + SyntaxKind[SyntaxKind["RequireKeyword"] = 118] = "RequireKeyword"; + SyntaxKind[SyntaxKind["NumberKeyword"] = 119] = "NumberKeyword"; + SyntaxKind[SyntaxKind["SetKeyword"] = 120] = "SetKeyword"; + SyntaxKind[SyntaxKind["StringKeyword"] = 121] = "StringKeyword"; + SyntaxKind[SyntaxKind["SymbolKeyword"] = 122] = "SymbolKeyword"; + SyntaxKind[SyntaxKind["TypeKeyword"] = 123] = "TypeKeyword"; + SyntaxKind[SyntaxKind["FromKeyword"] = 124] = "FromKeyword"; + SyntaxKind[SyntaxKind["OfKeyword"] = 125] = "OfKeyword"; + SyntaxKind[SyntaxKind["QualifiedName"] = 126] = "QualifiedName"; + SyntaxKind[SyntaxKind["ComputedPropertyName"] = 127] = "ComputedPropertyName"; + SyntaxKind[SyntaxKind["TypeParameter"] = 128] = "TypeParameter"; + SyntaxKind[SyntaxKind["Parameter"] = 129] = "Parameter"; + SyntaxKind[SyntaxKind["Decorator"] = 130] = "Decorator"; + SyntaxKind[SyntaxKind["PropertySignature"] = 131] = "PropertySignature"; + SyntaxKind[SyntaxKind["PropertyDeclaration"] = 132] = "PropertyDeclaration"; + SyntaxKind[SyntaxKind["MethodSignature"] = 133] = "MethodSignature"; + SyntaxKind[SyntaxKind["MethodDeclaration"] = 134] = "MethodDeclaration"; + SyntaxKind[SyntaxKind["Constructor"] = 135] = "Constructor"; + SyntaxKind[SyntaxKind["GetAccessor"] = 136] = "GetAccessor"; + SyntaxKind[SyntaxKind["SetAccessor"] = 137] = "SetAccessor"; + SyntaxKind[SyntaxKind["CallSignature"] = 138] = "CallSignature"; + SyntaxKind[SyntaxKind["ConstructSignature"] = 139] = "ConstructSignature"; + SyntaxKind[SyntaxKind["IndexSignature"] = 140] = "IndexSignature"; + SyntaxKind[SyntaxKind["TypeReference"] = 141] = "TypeReference"; + SyntaxKind[SyntaxKind["FunctionType"] = 142] = "FunctionType"; + SyntaxKind[SyntaxKind["ConstructorType"] = 143] = "ConstructorType"; + SyntaxKind[SyntaxKind["TypeQuery"] = 144] = "TypeQuery"; + SyntaxKind[SyntaxKind["TypeLiteral"] = 145] = "TypeLiteral"; + SyntaxKind[SyntaxKind["ArrayType"] = 146] = "ArrayType"; + SyntaxKind[SyntaxKind["TupleType"] = 147] = "TupleType"; + SyntaxKind[SyntaxKind["UnionType"] = 148] = "UnionType"; + SyntaxKind[SyntaxKind["ParenthesizedType"] = 149] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 150] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 151] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 152] = "BindingElement"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 153] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 154] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 155] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 156] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 157] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 158] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 159] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 160] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 161] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 162] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 163] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 164] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 165] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 166] = "VoidExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 167] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 168] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 169] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 170] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 171] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 172] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 173] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 174] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 175] = "OmittedExpression"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 176] = "TemplateSpan"; + SyntaxKind[SyntaxKind["HeritageClauseElement"] = 177] = "HeritageClauseElement"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 178] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["Block"] = 179] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 180] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 181] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 182] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 183] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 184] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 185] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 186] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 187] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 188] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 189] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 190] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 191] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 192] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 193] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 194] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 195] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 196] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 197] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 198] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 199] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 200] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 201] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 202] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 203] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 204] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 205] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 206] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 207] = "CaseBlock"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 208] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 209] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 210] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 211] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 212] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 213] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 214] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 215] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 216] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 217] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 218] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 219] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["CaseClause"] = 220] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 221] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 222] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 223] = "CatchClause"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 224] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 225] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["EnumMember"] = 226] = "EnumMember"; + SyntaxKind[SyntaxKind["SourceFile"] = 227] = "SourceFile"; + SyntaxKind[SyntaxKind["SyntaxList"] = 228] = "SyntaxList"; + SyntaxKind[SyntaxKind["Count"] = 229] = "Count"; + SyntaxKind[SyntaxKind["FirstAssignment"] = 53] = "FirstAssignment"; + SyntaxKind[SyntaxKind["LastAssignment"] = 64] = "LastAssignment"; + SyntaxKind[SyntaxKind["FirstReservedWord"] = 66] = "FirstReservedWord"; + SyntaxKind[SyntaxKind["LastReservedWord"] = 101] = "LastReservedWord"; + SyntaxKind[SyntaxKind["FirstKeyword"] = 66] = "FirstKeyword"; + SyntaxKind[SyntaxKind["LastKeyword"] = 125] = "LastKeyword"; + SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 103] = "FirstFutureReservedWord"; + SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 111] = "LastFutureReservedWord"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 141] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 149] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 14] = "FirstPunctuation"; - SyntaxKind[SyntaxKind["LastPunctuation"] = 63] = "LastPunctuation"; + SyntaxKind[SyntaxKind["LastPunctuation"] = 64] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; - SyntaxKind[SyntaxKind["LastToken"] = 122] = "LastToken"; + SyntaxKind[SyntaxKind["LastToken"] = 125] = "LastToken"; SyntaxKind[SyntaxKind["FirstTriviaToken"] = 2] = "FirstTriviaToken"; SyntaxKind[SyntaxKind["LastTriviaToken"] = 6] = "LastTriviaToken"; SyntaxKind[SyntaxKind["FirstLiteralToken"] = 7] = "FirstLiteralToken"; @@ -250,8 +267,8 @@ var ts; SyntaxKind[SyntaxKind["FirstTemplateToken"] = 10] = "FirstTemplateToken"; SyntaxKind[SyntaxKind["LastTemplateToken"] = 13] = "LastTemplateToken"; SyntaxKind[SyntaxKind["FirstBinaryOperator"] = 24] = "FirstBinaryOperator"; - SyntaxKind[SyntaxKind["LastBinaryOperator"] = 63] = "LastBinaryOperator"; - SyntaxKind[SyntaxKind["FirstNode"] = 123] = "FirstNode"; + SyntaxKind[SyntaxKind["LastBinaryOperator"] = 64] = "LastBinaryOperator"; + SyntaxKind[SyntaxKind["FirstNode"] = 126] = "FirstNode"; })(ts.SyntaxKind || (ts.SyntaxKind = {})); var SyntaxKind = ts.SyntaxKind; (function (NodeFlags) { @@ -261,15 +278,17 @@ var ts; NodeFlags[NodeFlags["Private"] = 32] = "Private"; NodeFlags[NodeFlags["Protected"] = 64] = "Protected"; NodeFlags[NodeFlags["Static"] = 128] = "Static"; - NodeFlags[NodeFlags["MultiLine"] = 256] = "MultiLine"; - NodeFlags[NodeFlags["Synthetic"] = 512] = "Synthetic"; - NodeFlags[NodeFlags["DeclarationFile"] = 1024] = "DeclarationFile"; - NodeFlags[NodeFlags["Let"] = 2048] = "Let"; - NodeFlags[NodeFlags["Const"] = 4096] = "Const"; - NodeFlags[NodeFlags["OctalLiteral"] = 8192] = "OctalLiteral"; - NodeFlags[NodeFlags["Modifier"] = 243] = "Modifier"; + NodeFlags[NodeFlags["Default"] = 256] = "Default"; + NodeFlags[NodeFlags["MultiLine"] = 512] = "MultiLine"; + NodeFlags[NodeFlags["Synthetic"] = 1024] = "Synthetic"; + NodeFlags[NodeFlags["DeclarationFile"] = 2048] = "DeclarationFile"; + NodeFlags[NodeFlags["Let"] = 4096] = "Let"; + NodeFlags[NodeFlags["Const"] = 8192] = "Const"; + NodeFlags[NodeFlags["OctalLiteral"] = 16384] = "OctalLiteral"; + NodeFlags[NodeFlags["ExportContext"] = 32768] = "ExportContext"; + NodeFlags[NodeFlags["Modifier"] = 499] = "Modifier"; NodeFlags[NodeFlags["AccessibilityModifier"] = 112] = "AccessibilityModifier"; - NodeFlags[NodeFlags["BlockScoped"] = 6144] = "BlockScoped"; + NodeFlags[NodeFlags["BlockScoped"] = 12288] = "BlockScoped"; })(ts.NodeFlags || (ts.NodeFlags = {})); var NodeFlags = ts.NodeFlags; (function (ParserContextFlags) { @@ -277,10 +296,11 @@ var ts; ParserContextFlags[ParserContextFlags["DisallowIn"] = 2] = "DisallowIn"; ParserContextFlags[ParserContextFlags["Yield"] = 4] = "Yield"; ParserContextFlags[ParserContextFlags["GeneratorParameter"] = 8] = "GeneratorParameter"; - ParserContextFlags[ParserContextFlags["ThisNodeHasError"] = 16] = "ThisNodeHasError"; - ParserContextFlags[ParserContextFlags["ParserGeneratedFlags"] = 31] = "ParserGeneratedFlags"; - ParserContextFlags[ParserContextFlags["ThisNodeOrAnySubNodesHasError"] = 32] = "ThisNodeOrAnySubNodesHasError"; - ParserContextFlags[ParserContextFlags["HasAggregatedChildData"] = 64] = "HasAggregatedChildData"; + ParserContextFlags[ParserContextFlags["Decorator"] = 16] = "Decorator"; + ParserContextFlags[ParserContextFlags["ThisNodeHasError"] = 32] = "ThisNodeHasError"; + ParserContextFlags[ParserContextFlags["ParserGeneratedFlags"] = 63] = "ParserGeneratedFlags"; + ParserContextFlags[ParserContextFlags["ThisNodeOrAnySubNodesHasError"] = 64] = "ThisNodeOrAnySubNodesHasError"; + ParserContextFlags[ParserContextFlags["HasAggregatedChildData"] = 128] = "HasAggregatedChildData"; })(ts.ParserContextFlags || (ts.ParserContextFlags = {})); var ParserContextFlags = ts.ParserContextFlags; (function (RelationComparisonResult) { @@ -343,13 +363,14 @@ var ts; SymbolFlags[SymbolFlags["ExportValue"] = 1048576] = "ExportValue"; SymbolFlags[SymbolFlags["ExportType"] = 2097152] = "ExportType"; SymbolFlags[SymbolFlags["ExportNamespace"] = 4194304] = "ExportNamespace"; - SymbolFlags[SymbolFlags["Import"] = 8388608] = "Import"; + SymbolFlags[SymbolFlags["Alias"] = 8388608] = "Alias"; SymbolFlags[SymbolFlags["Instantiated"] = 16777216] = "Instantiated"; SymbolFlags[SymbolFlags["Merged"] = 33554432] = "Merged"; SymbolFlags[SymbolFlags["Transient"] = 67108864] = "Transient"; SymbolFlags[SymbolFlags["Prototype"] = 134217728] = "Prototype"; SymbolFlags[SymbolFlags["UnionProperty"] = 268435456] = "UnionProperty"; SymbolFlags[SymbolFlags["Optional"] = 536870912] = "Optional"; + SymbolFlags[SymbolFlags["ExportStar"] = 1073741824] = "ExportStar"; SymbolFlags[SymbolFlags["Enum"] = 384] = "Enum"; SymbolFlags[SymbolFlags["Variable"] = 3] = "Variable"; SymbolFlags[SymbolFlags["Value"] = 107455] = "Value"; @@ -374,7 +395,7 @@ var ts; SymbolFlags[SymbolFlags["SetAccessorExcludes"] = 74687] = "SetAccessorExcludes"; SymbolFlags[SymbolFlags["TypeParameterExcludes"] = 530912] = "TypeParameterExcludes"; SymbolFlags[SymbolFlags["TypeAliasExcludes"] = 793056] = "TypeAliasExcludes"; - SymbolFlags[SymbolFlags["ImportExcludes"] = 8388608] = "ImportExcludes"; + SymbolFlags[SymbolFlags["AliasExcludes"] = 8388608] = "AliasExcludes"; SymbolFlags[SymbolFlags["ModuleMember"] = 8914931] = "ModuleMember"; SymbolFlags[SymbolFlags["ExportHasLocal"] = 944] = "ExportHasLocal"; SymbolFlags[SymbolFlags["HasLocals"] = 255504] = "HasLocals"; @@ -394,6 +415,8 @@ var ts; NodeCheckFlags[NodeCheckFlags["SuperStatic"] = 32] = "SuperStatic"; NodeCheckFlags[NodeCheckFlags["ContextChecked"] = 64] = "ContextChecked"; NodeCheckFlags[NodeCheckFlags["EnumValuesComputed"] = 128] = "EnumValuesComputed"; + NodeCheckFlags[NodeCheckFlags["BlockScopedBindingInLoop"] = 256] = "BlockScopedBindingInLoop"; + NodeCheckFlags[NodeCheckFlags["EmitDecorate"] = 512] = "EmitDecorate"; })(ts.NodeCheckFlags || (ts.NodeCheckFlags = {})); var NodeCheckFlags = ts.NodeCheckFlags; (function (TypeFlags) { @@ -583,6 +606,7 @@ var ts; })(ts.CharacterCodes || (ts.CharacterCodes = {})); var CharacterCodes = ts.CharacterCodes; })(ts || (ts = {})); +/// var ts; (function (ts) { (function (Ternary) { @@ -611,8 +635,9 @@ var ts; ts.forEach = forEach; function contains(array, value) { if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (v === value) { return true; } } @@ -634,8 +659,9 @@ var ts; function countWhere(array, predicate) { var count = 0; if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (predicate(array[i])) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (predicate(v)) { count++; } } @@ -644,12 +670,13 @@ var ts; } ts.countWhere = countWhere; function filter(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (f(item)) { - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_1 = array[_i]; + if (f(item_1)) { + result.push(item_1); } } } @@ -657,10 +684,12 @@ var ts; } ts.filter = filter; function map(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - result.push(f(array[i])); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result.push(f(v)); } } return result; @@ -675,12 +704,14 @@ var ts; } ts.concatenate = concatenate; function deduplicate(array) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (!contains(result, item)) - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_2 = array[_i]; + if (!contains(result, item_2)) { + result.push(item_2); + } } } return result; @@ -688,15 +719,19 @@ var ts; ts.deduplicate = deduplicate; function sum(array, prop) { var result = 0; - for (var i = 0; i < array.length; i++) { - result += array[i][prop]; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result += v[prop]; } return result; } ts.sum = sum; function addRange(to, from) { - for (var i = 0, n = from.length; i < n; i++) { - to.push(from[i]); + if (to && from) { + for (var _i = 0; _i < from.length; _i++) { + var v = from[_i]; + to.push(v); + } } } ts.addRange = addRange; @@ -726,6 +761,35 @@ var ts; return ~low; } ts.binarySearch = binarySearch; + function reduceLeft(array, f, initial) { + if (array) { + var count = array.length; + if (count > 0) { + var pos = 0; + var result = arguments.length <= 2 ? array[pos++] : initial; + while (pos < count) { + result = f(result, array[pos++]); + } + return result; + } + } + return initial; + } + ts.reduceLeft = reduceLeft; + function reduceRight(array, f, initial) { + if (array) { + var pos = array.length - 1; + if (pos >= 0) { + var result = arguments.length <= 2 ? array[pos--] : initial; + while (pos >= 0) { + result = f(result, array[pos--]); + } + return result; + } + } + return initial; + } + ts.reduceRight = reduceRight; var hasOwnProperty = Object.prototype.hasOwnProperty; function hasProperty(map, key) { return hasOwnProperty.call(map, key); @@ -787,14 +851,6 @@ var ts; return hasProperty(map, key) ? map[key] : undefined; } ts.lookUp = lookUp; - function mapToArray(map) { - var result = []; - for (var id in map) { - result.push(map[id]); - } - return result; - } - ts.mapToArray = mapToArray; function copyMap(source, target) { for (var p in source) { target[p] = source[p]; @@ -815,12 +871,17 @@ var ts; } ts.localizedDiagnosticMessages = undefined; function getLocaleSpecificMessage(message) { - return ts.localizedDiagnosticMessages && ts.localizedDiagnosticMessages[message] ? ts.localizedDiagnosticMessages[message] : message; + return ts.localizedDiagnosticMessages && ts.localizedDiagnosticMessages[message] + ? ts.localizedDiagnosticMessages[message] + : message; } ts.getLocaleSpecificMessage = getLocaleSpecificMessage; function createFileDiagnostic(file, start, length, message) { + var end = start + length; Debug.assert(start >= 0, "start must be non-negative, is " + start); Debug.assert(length >= 0, "length must be non-negative, is " + length); + Debug.assert(start <= file.text.length, "start must be within the bounds of the file. " + start + " > " + file.text.length); + Debug.assert(end <= file.text.length, "end must be the bounds of the file. " + end + " > " + file.text.length); var text = getLocaleSpecificMessage(message.key); if (arguments.length > 4) { text = formatStringFromArgs(text, arguments, 4); @@ -956,21 +1017,23 @@ var ts; function getNormalizedParts(normalizedSlashedPath, rootLength) { var parts = normalizedSlashedPath.substr(rootLength).split(ts.directorySeparator); var normalized = []; - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; + for (var _i = 0; _i < parts.length; _i++) { + var part = parts[_i]; if (part !== ".") { if (part === ".." && normalized.length > 0 && normalized[normalized.length - 1] !== "..") { normalized.pop(); } else { - normalized.push(part); + if (part) { + normalized.push(part); + } } } } return normalized; } function normalizePath(path) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); var normalized = getNormalizedParts(path, rootLength); return path.substr(0, rootLength) + normalized.join(ts.directorySeparator); @@ -993,7 +1056,7 @@ var ts; return [path.substr(0, rootLength)].concat(normalizedParts); } function getNormalizedPathComponents(path, currentDirectory) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); if (rootLength == 0) { path = combinePaths(normalizeSlashes(currentDirectory), path); @@ -1013,6 +1076,9 @@ var ts; } ts.getNormalizedPathFromPathComponents = getNormalizedPathFromPathComponents; function getNormalizedPathComponentsOfUrl(url) { + // Get root length of http://www.website.com/folder1/foler2/ + // In this example the root is: http://www.website.com/ + // normalized path components should be ["http://www.website.com/", "folder1", "folder2"] var urlLength = url.length; var rootLength = url.indexOf("://") + "://".length; while (rootLength < urlLength) { @@ -1096,8 +1162,8 @@ var ts; ts.fileExtensionIs = fileExtensionIs; var supportedExtensions = [".d.ts", ".ts", ".js"]; function removeFileExtension(path) { - for (var i = 0; i < supportedExtensions.length; i++) { - var ext = supportedExtensions[i]; + for (var _i = 0; _i < supportedExtensions.length; _i++) { + var ext = supportedExtensions[_i]; if (fileExtensionIs(path, ext)) { return path.substr(0, path.length - ext.length); } @@ -1106,7 +1172,7 @@ var ts; } ts.removeFileExtension = removeFileExtension; var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\0-\19\t\v\f\b\0\r\n\u2028\u2029\u0085]/g; + var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; var escapedCharsMap = { "\0": "\\0", "\t": "\\t", @@ -1121,20 +1187,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" }; - function escapeString(s) { - s = backslashOrDoubleQuote.test(s) ? s.replace(backslashOrDoubleQuote, getReplacement) : s; - s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; - return s; - function getReplacement(c) { - return escapedCharsMap[c] || unicodeEscape(c); - } - function unicodeEscape(c) { - var hexCharCode = c.charCodeAt(0).toString(16); - var paddedHexCode = ("0000" + hexCharCode).slice(-4); - return "\\u" + paddedHexCode; - } - } - ts.escapeString = escapeString; function getDefaultLibFileName(options) { return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; } @@ -1196,6 +1248,7 @@ var ts; Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.sys = (function () { @@ -1269,15 +1322,16 @@ var ts; function visitDirectory(path) { var folder = fso.GetFolder(path || "."); var files = getNames(folder.files); - for (var i = 0; i < files.length; i++) { - var name = files[i]; - if (!extension || ts.fileExtensionIs(name, extension)) { - result.push(ts.combinePaths(path, name)); + for (var _i = 0; _i < files.length; _i++) { + var name_1 = files[_i]; + if (!extension || ts.fileExtensionIs(name_1, extension)) { + result.push(ts.combinePaths(path, name_1)); } } var subfolders = getNames(folder.subfolders); - for (var i = 0; i < subfolders.length; i++) { - visitDirectory(ts.combinePaths(path, subfolders[i])); + for (var _a = 0; _a < subfolders.length; _a++) { + var current = subfolders[_a]; + visitDirectory(ts.combinePaths(path, current)); } } } @@ -1362,8 +1416,9 @@ var ts; function visitDirectory(path) { var files = _fs.readdirSync(path || ".").sort(); var directories = []; - for (var i = 0; i < files.length; i++) { - var name = ts.combinePaths(path, files[i]); + for (var _i = 0; _i < files.length; _i++) { + var current = files[_i]; + var name = ts.combinePaths(path, current); var stat = _fs.lstatSync(name); if (stat.isFile()) { if (!extension || ts.fileExtensionIs(name, extension)) { @@ -1374,8 +1429,9 @@ var ts; directories.push(name); } } - for (var i = 0; i < directories.length; i++) { - visitDirectory(directories[i]); + for (var _a = 0; _a < directories.length; _a++) { + var current = directories[_a]; + visitDirectory(current); } } } @@ -1444,538 +1500,585 @@ var ts; } })(); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.Diagnostics = { - Unterminated_string_literal: { code: 1002, category: 1, key: "Unterminated string literal." }, - Identifier_expected: { code: 1003, category: 1, key: "Identifier expected." }, - _0_expected: { code: 1005, category: 1, key: "'{0}' expected." }, - A_file_cannot_have_a_reference_to_itself: { code: 1006, category: 1, key: "A file cannot have a reference to itself." }, - Trailing_comma_not_allowed: { code: 1009, category: 1, key: "Trailing comma not allowed." }, - Asterisk_Slash_expected: { code: 1010, category: 1, key: "'*/' expected." }, - Unexpected_token: { code: 1012, category: 1, key: "Unexpected token." }, - Catch_clause_parameter_cannot_have_a_type_annotation: { code: 1013, category: 1, key: "Catch clause parameter cannot have a type annotation." }, - A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: 1, key: "A rest parameter must be last in a parameter list." }, - Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: 1, key: "Parameter cannot have question mark and initializer." }, - A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: 1, key: "A required parameter cannot follow an optional parameter." }, - An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: 1, key: "An index signature cannot have a rest parameter." }, - An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: 1, key: "An index signature parameter cannot have an accessibility modifier." }, - An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: 1, key: "An index signature parameter cannot have a question mark." }, - An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: 1, key: "An index signature parameter cannot have an initializer." }, - An_index_signature_must_have_a_type_annotation: { code: 1021, category: 1, key: "An index signature must have a type annotation." }, - An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: 1, key: "An index signature parameter must have a type annotation." }, - An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: 1, key: "An index signature parameter type must be 'string' or 'number'." }, - A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: 1, key: "A class or interface declaration can only have one 'extends' clause." }, - An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: 1, key: "An 'extends' clause must precede an 'implements' clause." }, - A_class_can_only_extend_a_single_class: { code: 1026, category: 1, key: "A class can only extend a single class." }, - A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: 1, key: "A class declaration can only have one 'implements' clause." }, - Accessibility_modifier_already_seen: { code: 1028, category: 1, key: "Accessibility modifier already seen." }, - _0_modifier_must_precede_1_modifier: { code: 1029, category: 1, key: "'{0}' modifier must precede '{1}' modifier." }, - _0_modifier_already_seen: { code: 1030, category: 1, key: "'{0}' modifier already seen." }, - _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: 1, key: "'{0}' modifier cannot appear on a class element." }, - An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: 1, key: "An interface declaration cannot have an 'implements' clause." }, - super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: 1, key: "'super' must be followed by an argument list or member access." }, - Only_ambient_modules_can_use_quoted_names: { code: 1035, category: 1, key: "Only ambient modules can use quoted names." }, - Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: 1, key: "Statements are not allowed in ambient contexts." }, - A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: 1, key: "A 'declare' modifier cannot be used in an already ambient context." }, - Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: 1, key: "Initializers are not allowed in ambient contexts." }, - _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: 1, key: "'{0}' modifier cannot appear on a module element." }, - A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: 1, key: "A 'declare' modifier cannot be used with an interface declaration." }, - A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: 1, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, - A_rest_parameter_cannot_be_optional: { code: 1047, category: 1, key: "A rest parameter cannot be optional." }, - A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: 1, key: "A rest parameter cannot have an initializer." }, - A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: 1, key: "A 'set' accessor must have exactly one parameter." }, - A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: 1, key: "A 'set' accessor cannot have an optional parameter." }, - A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: 1, key: "A 'set' accessor parameter cannot have an initializer." }, - A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: 1, key: "A 'set' accessor cannot have rest parameter." }, - A_get_accessor_cannot_have_parameters: { code: 1054, category: 1, key: "A 'get' accessor cannot have parameters." }, - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: 1, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, - Enum_member_must_have_initializer: { code: 1061, category: 1, key: "Enum member must have initializer." }, - An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: 1, key: "An export assignment cannot be used in an internal module." }, - Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: 1, key: "Ambient enum elements can only have integer literal initializers." }, - Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: 1, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, - A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: 1, key: "A 'declare' modifier cannot be used with an import declaration." }, - Invalid_reference_directive_syntax: { code: 1084, category: 1, key: "Invalid 'reference' directive syntax." }, - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: 1, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, - An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: 1, key: "An accessor cannot be declared in an ambient context." }, - _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: 1, key: "'{0}' modifier cannot appear on a constructor declaration." }, - _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: 1, key: "'{0}' modifier cannot appear on a parameter." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: 1, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, - Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: 1, key: "Type parameters cannot appear on a constructor declaration." }, - Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: 1, key: "Type annotation cannot appear on a constructor declaration." }, - An_accessor_cannot_have_type_parameters: { code: 1094, category: 1, key: "An accessor cannot have type parameters." }, - A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: 1, key: "A 'set' accessor cannot have a return type annotation." }, - An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: 1, key: "An index signature must have exactly one parameter." }, - _0_list_cannot_be_empty: { code: 1097, category: 1, key: "'{0}' list cannot be empty." }, - Type_parameter_list_cannot_be_empty: { code: 1098, category: 1, key: "Type parameter list cannot be empty." }, - Type_argument_list_cannot_be_empty: { code: 1099, category: 1, key: "Type argument list cannot be empty." }, - Invalid_use_of_0_in_strict_mode: { code: 1100, category: 1, key: "Invalid use of '{0}' in strict mode." }, - with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: 1, key: "'with' statements are not allowed in strict mode." }, - delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: 1, key: "'delete' cannot be called on an identifier in strict mode." }, - A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: 1, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, - A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: 1, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, - Jump_target_cannot_cross_function_boundary: { code: 1107, category: 1, key: "Jump target cannot cross function boundary." }, - A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: 1, key: "A 'return' statement can only be used within a function body." }, - Expression_expected: { code: 1109, category: 1, key: "Expression expected." }, - Type_expected: { code: 1110, category: 1, key: "Type expected." }, - A_class_member_cannot_be_declared_optional: { code: 1112, category: 1, key: "A class member cannot be declared optional." }, - A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: 1, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, - Duplicate_label_0: { code: 1114, category: 1, key: "Duplicate label '{0}'" }, - A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: 1, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, - A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: 1, key: "A 'break' statement can only jump to a label of an enclosing statement." }, - An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: 1, key: "An object literal cannot have multiple properties with the same name in strict mode." }, - An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: 1, key: "An object literal cannot have multiple get/set accessors with the same name." }, - An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: 1, key: "An object literal cannot have property and accessor with the same name." }, - An_export_assignment_cannot_have_modifiers: { code: 1120, category: 1, key: "An export assignment cannot have modifiers." }, - Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: 1, key: "Octal literals are not allowed in strict mode." }, - A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: 1, key: "A tuple type element list cannot be empty." }, - Variable_declaration_list_cannot_be_empty: { code: 1123, category: 1, key: "Variable declaration list cannot be empty." }, - Digit_expected: { code: 1124, category: 1, key: "Digit expected." }, - Hexadecimal_digit_expected: { code: 1125, category: 1, key: "Hexadecimal digit expected." }, - Unexpected_end_of_text: { code: 1126, category: 1, key: "Unexpected end of text." }, - Invalid_character: { code: 1127, category: 1, key: "Invalid character." }, - Declaration_or_statement_expected: { code: 1128, category: 1, key: "Declaration or statement expected." }, - Statement_expected: { code: 1129, category: 1, key: "Statement expected." }, - case_or_default_expected: { code: 1130, category: 1, key: "'case' or 'default' expected." }, - Property_or_signature_expected: { code: 1131, category: 1, key: "Property or signature expected." }, - Enum_member_expected: { code: 1132, category: 1, key: "Enum member expected." }, - Type_reference_expected: { code: 1133, category: 1, key: "Type reference expected." }, - Variable_declaration_expected: { code: 1134, category: 1, key: "Variable declaration expected." }, - Argument_expression_expected: { code: 1135, category: 1, key: "Argument expression expected." }, - Property_assignment_expected: { code: 1136, category: 1, key: "Property assignment expected." }, - Expression_or_comma_expected: { code: 1137, category: 1, key: "Expression or comma expected." }, - Parameter_declaration_expected: { code: 1138, category: 1, key: "Parameter declaration expected." }, - Type_parameter_declaration_expected: { code: 1139, category: 1, key: "Type parameter declaration expected." }, - Type_argument_expected: { code: 1140, category: 1, key: "Type argument expected." }, - String_literal_expected: { code: 1141, category: 1, key: "String literal expected." }, - Line_break_not_permitted_here: { code: 1142, category: 1, key: "Line break not permitted here." }, - or_expected: { code: 1144, category: 1, key: "'{' or ';' expected." }, - Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: 1, key: "Modifiers not permitted on index signature members." }, - Declaration_expected: { code: 1146, category: 1, key: "Declaration expected." }, - Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: 1, key: "Import declarations in an internal module cannot reference an external module." }, - Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: 1, key: "Cannot compile external modules unless the '--module' flag is provided." }, - File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: 1, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, - new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: 1, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, - var_let_or_const_expected: { code: 1152, category: 1, key: "'var', 'let' or 'const' expected." }, - let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: 1, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: 1, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_must_be_initialized: { code: 1155, category: 1, key: "'const' declarations must be initialized" }, - const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: 1, key: "'const' declarations can only be declared inside a block." }, - let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: 1, key: "'let' declarations can only be declared inside a block." }, - Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1159, category: 1, key: "Tagged templates are only available when targeting ECMAScript 6 and higher." }, - Unterminated_template_literal: { code: 1160, category: 1, key: "Unterminated template literal." }, - Unterminated_regular_expression_literal: { code: 1161, category: 1, key: "Unterminated regular expression literal." }, - An_object_member_cannot_be_declared_optional: { code: 1162, category: 1, key: "An object member cannot be declared optional." }, - yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: 1, key: "'yield' expression must be contained_within a generator declaration." }, - Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: 1, key: "Computed property names are not allowed in enums." }, - A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: 1, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: 1, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, - Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: 1, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, - A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: 1, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, - A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: 1, key: "A computed property name in an interface must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: 1, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, - A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: 1, key: "A comma expression is not allowed in a computed property name." }, - extends_clause_already_seen: { code: 1172, category: 1, key: "'extends' clause already seen." }, - extends_clause_must_precede_implements_clause: { code: 1173, category: 1, key: "'extends' clause must precede 'implements' clause." }, - Classes_can_only_extend_a_single_class: { code: 1174, category: 1, key: "Classes can only extend a single class." }, - implements_clause_already_seen: { code: 1175, category: 1, key: "'implements' clause already seen." }, - Interface_declaration_cannot_have_implements_clause: { code: 1176, category: 1, key: "Interface declaration cannot have 'implements' clause." }, - Binary_digit_expected: { code: 1177, category: 1, key: "Binary digit expected." }, - Octal_digit_expected: { code: 1178, category: 1, key: "Octal digit expected." }, - Unexpected_token_expected: { code: 1179, category: 1, key: "Unexpected token. '{' expected." }, - Property_destructuring_pattern_expected: { code: 1180, category: 1, key: "Property destructuring pattern expected." }, - Array_element_destructuring_pattern_expected: { code: 1181, category: 1, key: "Array element destructuring pattern expected." }, - A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: 1, key: "A destructuring declaration must have an initializer." }, - Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: 1, key: "Destructuring declarations are not allowed in ambient contexts." }, - An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: 1, key: "An implementation cannot be declared in ambient contexts." }, - Modifiers_cannot_appear_here: { code: 1184, category: 1, key: "Modifiers cannot appear here." }, - Merge_conflict_marker_encountered: { code: 1185, category: 1, key: "Merge conflict marker encountered." }, - A_rest_element_cannot_have_an_initializer: { code: 1186, category: 1, key: "A rest element cannot have an initializer." }, - A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: 1, key: "A parameter property may not be a binding pattern." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: 1, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, - The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: 1, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, - The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: 1, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, - Duplicate_identifier_0: { code: 2300, category: 1, key: "Duplicate identifier '{0}'." }, - Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: 1, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, - Static_members_cannot_reference_class_type_parameters: { code: 2302, category: 1, key: "Static members cannot reference class type parameters." }, - Circular_definition_of_import_alias_0: { code: 2303, category: 1, key: "Circular definition of import alias '{0}'." }, - Cannot_find_name_0: { code: 2304, category: 1, key: "Cannot find name '{0}'." }, - Module_0_has_no_exported_member_1: { code: 2305, category: 1, key: "Module '{0}' has no exported member '{1}'." }, - File_0_is_not_an_external_module: { code: 2306, category: 1, key: "File '{0}' is not an external module." }, - Cannot_find_external_module_0: { code: 2307, category: 1, key: "Cannot find external module '{0}'." }, - A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: 1, key: "A module cannot have more than one export assignment." }, - An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: 1, key: "An export assignment cannot be used in a module with other exported elements." }, - Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: 1, key: "Type '{0}' recursively references itself as a base type." }, - A_class_may_only_extend_another_class: { code: 2311, category: 1, key: "A class may only extend another class." }, - An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: 1, key: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: 1, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, - Generic_type_0_requires_1_type_argument_s: { code: 2314, category: 1, key: "Generic type '{0}' requires {1} type argument(s)." }, - Type_0_is_not_generic: { code: 2315, category: 1, key: "Type '{0}' is not generic." }, - Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: 1, key: "Global type '{0}' must be a class or interface type." }, - Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: 1, key: "Global type '{0}' must have {1} type parameter(s)." }, - Cannot_find_global_type_0: { code: 2318, category: 1, key: "Cannot find global type '{0}'." }, - Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: 1, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, - Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: 1, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, - Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: 1, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, - Type_0_is_not_assignable_to_type_1: { code: 2322, category: 1, key: "Type '{0}' is not assignable to type '{1}'." }, - Property_0_is_missing_in_type_1: { code: 2324, category: 1, key: "Property '{0}' is missing in type '{1}'." }, - Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: 1, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, - Types_of_property_0_are_incompatible: { code: 2326, category: 1, key: "Types of property '{0}' are incompatible." }, - Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: 1, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, - Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: 1, key: "Types of parameters '{0}' and '{1}' are incompatible." }, - Index_signature_is_missing_in_type_0: { code: 2329, category: 1, key: "Index signature is missing in type '{0}'." }, - Index_signatures_are_incompatible: { code: 2330, category: 1, key: "Index signatures are incompatible." }, - this_cannot_be_referenced_in_a_module_body: { code: 2331, category: 1, key: "'this' cannot be referenced in a module body." }, - this_cannot_be_referenced_in_current_location: { code: 2332, category: 1, key: "'this' cannot be referenced in current location." }, - this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: 1, key: "'this' cannot be referenced in constructor arguments." }, - this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: 1, key: "'this' cannot be referenced in a static property initializer." }, - super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: 1, key: "'super' can only be referenced in a derived class." }, - super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: 1, key: "'super' cannot be referenced in constructor arguments." }, - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: 1, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, - super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: 1, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, - Property_0_does_not_exist_on_type_1: { code: 2339, category: 1, key: "Property '{0}' does not exist on type '{1}'." }, - Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: 1, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, - Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: 1, key: "Property '{0}' is private and only accessible within class '{1}'." }, - An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: 1, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, - Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: 1, key: "Type '{0}' does not satisfy the constraint '{1}'." }, - Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: 1, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, - Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: 1, key: "Supplied parameters do not match any signature of call target." }, - Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: 1, key: "Untyped function calls may not accept type arguments." }, - Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: 1, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: 1, key: "Cannot invoke an expression whose type lacks a call signature." }, - Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: 1, key: "Only a void function can be called with the 'new' keyword." }, - Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: 1, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: 1, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, - No_best_common_type_exists_among_return_expressions: { code: 2354, category: 1, key: "No best common type exists among return expressions." }, - A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: 1, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, - An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: 1, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: 1, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, - The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: 1, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, - The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: 1, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, - The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: 1, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, - The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: 1, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, - The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: 1, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: 1, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: 1, key: "Invalid left-hand side of assignment expression." }, - Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: 1, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, - Type_parameter_name_cannot_be_0: { code: 2368, category: 1, key: "Type parameter name cannot be '{0}'" }, - A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: 1, key: "A parameter property is only allowed in a constructor implementation." }, - A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: 1, key: "A rest parameter must be of an array type." }, - A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: 1, key: "A parameter initializer is only allowed in a function or constructor implementation." }, - Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: 1, key: "Parameter '{0}' cannot be referenced in its initializer." }, - Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: 1, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, - Duplicate_string_index_signature: { code: 2374, category: 1, key: "Duplicate string index signature." }, - Duplicate_number_index_signature: { code: 2375, category: 1, key: "Duplicate number index signature." }, - A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: 1, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, - Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: 1, key: "Constructors for derived classes must contain a 'super' call." }, - A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: 1, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, - Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: 1, key: "Getter and setter accessors do not agree in visibility." }, - get_and_set_accessor_must_have_the_same_type: { code: 2380, category: 1, key: "'get' and 'set' accessor must have the same type." }, - A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: 1, key: "A signature with an implementation cannot use a string literal type." }, - Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: 1, key: "Specialized overload signature is not assignable to any non-specialized signature." }, - Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: 1, key: "Overload signatures must all be exported or not exported." }, - Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: 1, key: "Overload signatures must all be ambient or non-ambient." }, - Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: 1, key: "Overload signatures must all be public, private or protected." }, - Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: 1, key: "Overload signatures must all be optional or required." }, - Function_overload_must_be_static: { code: 2387, category: 1, key: "Function overload must be static." }, - Function_overload_must_not_be_static: { code: 2388, category: 1, key: "Function overload must not be static." }, - Function_implementation_name_must_be_0: { code: 2389, category: 1, key: "Function implementation name must be '{0}'." }, - Constructor_implementation_is_missing: { code: 2390, category: 1, key: "Constructor implementation is missing." }, - Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: 1, key: "Function implementation is missing or not immediately following the declaration." }, - Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: 1, key: "Multiple constructor implementations are not allowed." }, - Duplicate_function_implementation: { code: 2393, category: 1, key: "Duplicate function implementation." }, - Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: 1, key: "Overload signature is not compatible with function implementation." }, - Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: 1, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, - Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: 1, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, - Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: 1, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, - Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: 1, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, - Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: 1, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, - Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: 1, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, - Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: 1, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, - The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: 1, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, - The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: 1, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, - Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: 1, key: "Invalid left-hand side in 'for...in' statement." }, - The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: 1, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, - Setters_cannot_return_a_value: { code: 2408, category: 1, key: "Setters cannot return a value." }, - Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: 1, key: "Return type of constructor signature must be assignable to the instance type of the class" }, - All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: 1, key: "All symbols within a 'with' block will be resolved to 'any'." }, - Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: 1, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, - Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: 1, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, - Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: 1, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, - Class_name_cannot_be_0: { code: 2414, category: 1, key: "Class name cannot be '{0}'" }, - Class_0_incorrectly_extends_base_class_1: { code: 2415, category: 1, key: "Class '{0}' incorrectly extends base class '{1}'." }, - Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: 1, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, - Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: 1, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, - Class_0_incorrectly_implements_interface_1: { code: 2420, category: 1, key: "Class '{0}' incorrectly implements interface '{1}'." }, - A_class_may_only_implement_another_class_or_interface: { code: 2422, category: 1, key: "A class may only implement another class or interface." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, - Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: 1, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, - Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: 1, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, - Interface_name_cannot_be_0: { code: 2427, category: 1, key: "Interface name cannot be '{0}'" }, - All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: 1, key: "All declarations of an interface must have identical type parameters." }, - Interface_0_incorrectly_extends_interface_1: { code: 2430, category: 1, key: "Interface '{0}' incorrectly extends interface '{1}'." }, - Enum_name_cannot_be_0: { code: 2431, category: 1, key: "Enum name cannot be '{0}'" }, - In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: 1, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, - A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: 1, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, - A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: 1, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, - Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: 1, key: "Ambient external modules cannot be nested in other modules." }, - Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: 1, key: "Ambient external module declaration cannot specify relative module name." }, - Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: 1, key: "Module '{0}' is hidden by a local declaration with the same name" }, - Import_name_cannot_be_0: { code: 2438, category: 1, key: "Import name cannot be '{0}'" }, - Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: 1, key: "Import declaration in an ambient external module declaration cannot reference external module through relative external module name." }, - Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: 1, key: "Import declaration conflicts with local declaration of '{0}'" }, - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: 1, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, - Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: 1, key: "Types have separate declarations of a private property '{0}'." }, - Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: 1, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, - Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: 1, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, - Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: 1, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, - Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: 1, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, - The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: 1, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, - Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: 1, key: "Block-scoped variable '{0}' used before its declaration." }, - The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: 1, key: "The operand of an increment or decrement operator cannot be a constant." }, - Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: 1, key: "Left-hand side of assignment expression cannot be a constant." }, - Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: 1, key: "Cannot redeclare block-scoped variable '{0}'." }, - An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: 1, key: "An enum member cannot have a numeric name." }, - The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: 1, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, - Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: 1, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, - Type_alias_0_circularly_references_itself: { code: 2456, category: 1, key: "Type alias '{0}' circularly references itself." }, - Type_alias_name_cannot_be_0: { code: 2457, category: 1, key: "Type alias name cannot be '{0}'" }, - An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: 1, key: "An AMD module cannot have multiple name assignments." }, - Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: 1, key: "Type '{0}' has no property '{1}' and no string index signature." }, - Type_0_has_no_property_1: { code: 2460, category: 1, key: "Type '{0}' has no property '{1}'." }, - Type_0_is_not_an_array_type: { code: 2461, category: 1, key: "Type '{0}' is not an array type." }, - A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: 1, key: "A rest element must be last in an array destructuring pattern" }, - A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: 1, key: "A binding pattern parameter cannot be optional in an implementation signature." }, - A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: 1, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, - this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: 1, key: "'this' cannot be referenced in a computed property name." }, - super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: 1, key: "'super' cannot be referenced in a computed property name." }, - A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: 1, key: "A computed property name cannot reference a type parameter from its containing type." }, - Cannot_find_global_value_0: { code: 2468, category: 1, key: "Cannot find global value '{0}'." }, - The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: 1, key: "The '{0}' operator cannot be applied to type 'symbol'." }, - Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: 1, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, - A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: 1, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, - Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: 1, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, - Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: 1, key: "Enum declarations must all be const or non-const." }, - In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: 1, key: "In 'const' enum declarations member initializer must be constant expression." }, - const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: 1, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, - A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: 1, key: "A const enum member can only be accessed using a string literal." }, - const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: 1, key: "'const' enum member initializer was evaluated to a non-finite value." }, - const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: 1, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, - Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: 1, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, - let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: 1, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, - Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: 1, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, - for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher: { code: 2482, category: 1, key: "'for...of' statements are only available when targeting ECMAScript 6 or higher." }, - The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: 1, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, - Import_declaration_0_is_using_private_name_1: { code: 4000, category: 1, key: "Import declaration '{0}' is using private name '{1}'." }, - Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: 1, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, - Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: 1, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: 1, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: 1, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: 1, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: 1, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: 1, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: 1, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, - Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: 1, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: 1, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: 1, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, - Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, - Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, - Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: 1, key: "Exported variable '{0}' has or is using private name '{1}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: 1, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: 1, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, - Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: 1, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, - Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: 1, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: 1, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: 1, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: 1, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: 1, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: 1, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: 1, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: 1, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: 1, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: 1, key: "Return type of public static method from exported class has or is using private name '{0}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: 1, key: "Return type of public method from exported class has or is using private name '{0}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: 1, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: 1, key: "Return type of method from exported interface has or is using private name '{0}'." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: 1, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: 1, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, - Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: 1, key: "Return type of exported function has or is using private name '{0}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: 1, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: 1, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: 1, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: 1, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, - Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: 1, key: "Exported type alias '{0}' has or is using private name '{1}'." }, - The_current_host_does_not_support_the_0_option: { code: 5001, category: 1, key: "The current host does not support the '{0}' option." }, - Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: 1, key: "Cannot find the common subdirectory path for the input files." }, - Cannot_read_file_0_Colon_1: { code: 5012, category: 1, key: "Cannot read file '{0}': {1}" }, - Unsupported_file_encoding: { code: 5013, category: 1, key: "Unsupported file encoding." }, - Unknown_compiler_option_0: { code: 5023, category: 1, key: "Unknown compiler option '{0}'." }, - Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: 1, key: "Compiler option '{0}' requires a value of type {1}." }, - Could_not_write_file_0_Colon_1: { code: 5033, category: 1, key: "Could not write file '{0}': {1}" }, - Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: 1, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: 1, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: 1, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, - Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: 1, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, - Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: 1, key: "Option 'project' cannot be mixed with source files on a command line." }, - Concatenate_and_emit_output_to_single_file: { code: 6001, category: 2, key: "Concatenate and emit output to single file." }, - Generates_corresponding_d_ts_file: { code: 6002, category: 2, key: "Generates corresponding '.d.ts' file." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: 2, key: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: 2, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, - Watch_input_files: { code: 6005, category: 2, key: "Watch input files." }, - Redirect_output_structure_to_the_directory: { code: 6006, category: 2, key: "Redirect output structure to the directory." }, - Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: 2, key: "Do not erase const enum declarations in generated code." }, - Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: 2, key: "Do not emit outputs if any type checking errors were reported." }, - Do_not_emit_comments_to_output: { code: 6009, category: 2, key: "Do not emit comments to output." }, - Do_not_emit_outputs: { code: 6010, category: 2, key: "Do not emit outputs." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: 2, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, - Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: 2, key: "Specify module code generation: 'commonjs' or 'amd'" }, - Print_this_message: { code: 6017, category: 2, key: "Print this message." }, - Print_the_compiler_s_version: { code: 6019, category: 2, key: "Print the compiler's version." }, - Compile_the_project_in_the_given_directory: { code: 6020, category: 2, key: "Compile the project in the given directory." }, - Syntax_Colon_0: { code: 6023, category: 2, key: "Syntax: {0}" }, - options: { code: 6024, category: 2, key: "options" }, - file: { code: 6025, category: 2, key: "file" }, - Examples_Colon_0: { code: 6026, category: 2, key: "Examples: {0}" }, - Options_Colon: { code: 6027, category: 2, key: "Options:" }, - Version_0: { code: 6029, category: 2, key: "Version {0}" }, - Insert_command_line_options_and_files_from_a_file: { code: 6030, category: 2, key: "Insert command line options and files from a file." }, - File_change_detected_Starting_incremental_compilation: { code: 6032, category: 2, key: "File change detected. Starting incremental compilation..." }, - KIND: { code: 6034, category: 2, key: "KIND" }, - FILE: { code: 6035, category: 2, key: "FILE" }, - VERSION: { code: 6036, category: 2, key: "VERSION" }, - LOCATION: { code: 6037, category: 2, key: "LOCATION" }, - DIRECTORY: { code: 6038, category: 2, key: "DIRECTORY" }, - Compilation_complete_Watching_for_file_changes: { code: 6042, category: 2, key: "Compilation complete. Watching for file changes." }, - Generates_corresponding_map_file: { code: 6043, category: 2, key: "Generates corresponding '.map' file." }, - Compiler_option_0_expects_an_argument: { code: 6044, category: 1, key: "Compiler option '{0}' expects an argument." }, - Unterminated_quoted_string_in_response_file_0: { code: 6045, category: 1, key: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: 1, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, - Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: 1, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, - Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: 1, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, - Unsupported_locale_0: { code: 6049, category: 1, key: "Unsupported locale '{0}'." }, - Unable_to_open_file_0: { code: 6050, category: 1, key: "Unable to open file '{0}'." }, - Corrupted_locale_file_0: { code: 6051, category: 1, key: "Corrupted locale file {0}." }, - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: 2, key: "Raise error on expressions and declarations with an implied 'any' type." }, - File_0_not_found: { code: 6053, category: 1, key: "File '{0}' not found." }, - File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: 1, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, - Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: 2, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, - Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: 2, key: "Do not emit declarations for code that has an '@internal' annotation." }, - Variable_0_implicitly_has_an_1_type: { code: 7005, category: 1, key: "Variable '{0}' implicitly has an '{1}' type." }, - Parameter_0_implicitly_has_an_1_type: { code: 7006, category: 1, key: "Parameter '{0}' implicitly has an '{1}' type." }, - Member_0_implicitly_has_an_1_type: { code: 7008, category: 1, key: "Member '{0}' implicitly has an '{1}' type." }, - new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: 1, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, - _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: 1, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, - Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: 1, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, - Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: 1, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: 1, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, - Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: 1, key: "Index signature of object type implicitly has an 'any' type." }, - Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: 1, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, - Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: 1, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, - Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: 1, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: 1, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, - _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: 1, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, - _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: 1, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: 1, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - You_cannot_rename_this_element: { code: 8000, category: 1, key: "You cannot rename this element." }, - You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: 1, key: "You cannot rename elements that are defined in the standard TypeScript library." }, - yield_expressions_are_not_currently_supported: { code: 9000, category: 1, key: "'yield' expressions are not currently supported." }, - Generators_are_not_currently_supported: { code: 9001, category: 1, key: "Generators are not currently supported." }, - The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 9002, category: 1, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, - for_of_statements_are_not_currently_supported: { code: 9003, category: 1, key: "'for...of' statements are not currently supported." } + Unterminated_string_literal: { code: 1002, category: ts.DiagnosticCategory.Error, key: "Unterminated string literal." }, + Identifier_expected: { code: 1003, category: ts.DiagnosticCategory.Error, key: "Identifier expected." }, + _0_expected: { code: 1005, category: ts.DiagnosticCategory.Error, key: "'{0}' expected." }, + A_file_cannot_have_a_reference_to_itself: { code: 1006, category: ts.DiagnosticCategory.Error, key: "A file cannot have a reference to itself." }, + Trailing_comma_not_allowed: { code: 1009, category: ts.DiagnosticCategory.Error, key: "Trailing comma not allowed." }, + Asterisk_Slash_expected: { code: 1010, category: ts.DiagnosticCategory.Error, key: "'*/' expected." }, + Unexpected_token: { code: 1012, category: ts.DiagnosticCategory.Error, key: "Unexpected token." }, + A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be last in a parameter list." }, + Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: ts.DiagnosticCategory.Error, key: "Parameter cannot have question mark and initializer." }, + A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: ts.DiagnosticCategory.Error, key: "A required parameter cannot follow an optional parameter." }, + An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: ts.DiagnosticCategory.Error, key: "An index signature cannot have a rest parameter." }, + An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an accessibility modifier." }, + An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have a question mark." }, + An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an initializer." }, + An_index_signature_must_have_a_type_annotation: { code: 1021, category: ts.DiagnosticCategory.Error, key: "An index signature must have a type annotation." }, + An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: ts.DiagnosticCategory.Error, key: "An index signature parameter must have a type annotation." }, + An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: ts.DiagnosticCategory.Error, key: "An index signature parameter type must be 'string' or 'number'." }, + A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: ts.DiagnosticCategory.Error, key: "A class or interface declaration can only have one 'extends' clause." }, + An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: ts.DiagnosticCategory.Error, key: "An 'extends' clause must precede an 'implements' clause." }, + A_class_can_only_extend_a_single_class: { code: 1026, category: ts.DiagnosticCategory.Error, key: "A class can only extend a single class." }, + A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: ts.DiagnosticCategory.Error, key: "A class declaration can only have one 'implements' clause." }, + Accessibility_modifier_already_seen: { code: 1028, category: ts.DiagnosticCategory.Error, key: "Accessibility modifier already seen." }, + _0_modifier_must_precede_1_modifier: { code: 1029, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier must precede '{1}' modifier." }, + _0_modifier_already_seen: { code: 1030, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier already seen." }, + _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a class element." }, + An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: ts.DiagnosticCategory.Error, key: "An interface declaration cannot have an 'implements' clause." }, + super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: ts.DiagnosticCategory.Error, key: "'super' must be followed by an argument list or member access." }, + Only_ambient_modules_can_use_quoted_names: { code: 1035, category: ts.DiagnosticCategory.Error, key: "Only ambient modules can use quoted names." }, + Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: ts.DiagnosticCategory.Error, key: "Statements are not allowed in ambient contexts." }, + A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used in an already ambient context." }, + Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: ts.DiagnosticCategory.Error, key: "Initializers are not allowed in ambient contexts." }, + _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a module element." }, + A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an interface declaration." }, + A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, + A_rest_parameter_cannot_be_optional: { code: 1047, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot be optional." }, + A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot have an initializer." }, + A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor must have exactly one parameter." }, + A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have an optional parameter." }, + A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor parameter cannot have an initializer." }, + A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have rest parameter." }, + A_get_accessor_cannot_have_parameters: { code: 1054, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor cannot have parameters." }, + Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: ts.DiagnosticCategory.Error, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, + Enum_member_must_have_initializer: { code: 1061, category: ts.DiagnosticCategory.Error, key: "Enum member must have initializer." }, + An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in an internal module." }, + Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: ts.DiagnosticCategory.Error, key: "Ambient enum elements can only have integer literal initializers." }, + Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: ts.DiagnosticCategory.Error, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, + A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an import declaration." }, + Invalid_reference_directive_syntax: { code: 1084, category: ts.DiagnosticCategory.Error, key: "Invalid 'reference' directive syntax." }, + Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: ts.DiagnosticCategory.Error, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, + An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: ts.DiagnosticCategory.Error, key: "An accessor cannot be declared in an ambient context." }, + _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a constructor declaration." }, + _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a parameter." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, + Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: ts.DiagnosticCategory.Error, key: "Type parameters cannot appear on a constructor declaration." }, + Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: ts.DiagnosticCategory.Error, key: "Type annotation cannot appear on a constructor declaration." }, + An_accessor_cannot_have_type_parameters: { code: 1094, category: ts.DiagnosticCategory.Error, key: "An accessor cannot have type parameters." }, + A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have a return type annotation." }, + An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: ts.DiagnosticCategory.Error, key: "An index signature must have exactly one parameter." }, + _0_list_cannot_be_empty: { code: 1097, category: ts.DiagnosticCategory.Error, key: "'{0}' list cannot be empty." }, + Type_parameter_list_cannot_be_empty: { code: 1098, category: ts.DiagnosticCategory.Error, key: "Type parameter list cannot be empty." }, + Type_argument_list_cannot_be_empty: { code: 1099, category: ts.DiagnosticCategory.Error, key: "Type argument list cannot be empty." }, + Invalid_use_of_0_in_strict_mode: { code: 1100, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}' in strict mode." }, + with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: ts.DiagnosticCategory.Error, key: "'with' statements are not allowed in strict mode." }, + delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: ts.DiagnosticCategory.Error, key: "'delete' cannot be called on an identifier in strict mode." }, + A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, + A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, + Jump_target_cannot_cross_function_boundary: { code: 1107, category: ts.DiagnosticCategory.Error, key: "Jump target cannot cross function boundary." }, + A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: ts.DiagnosticCategory.Error, key: "A 'return' statement can only be used within a function body." }, + Expression_expected: { code: 1109, category: ts.DiagnosticCategory.Error, key: "Expression expected." }, + Type_expected: { code: 1110, category: ts.DiagnosticCategory.Error, key: "Type expected." }, + A_class_member_cannot_be_declared_optional: { code: 1112, category: ts.DiagnosticCategory.Error, key: "A class member cannot be declared optional." }, + A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: ts.DiagnosticCategory.Error, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, + Duplicate_label_0: { code: 1114, category: ts.DiagnosticCategory.Error, key: "Duplicate label '{0}'" }, + A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, + A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only jump to a label of an enclosing statement." }, + An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple properties with the same name in strict mode." }, + An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple get/set accessors with the same name." }, + An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have property and accessor with the same name." }, + An_export_assignment_cannot_have_modifiers: { code: 1120, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot have modifiers." }, + Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: ts.DiagnosticCategory.Error, key: "Octal literals are not allowed in strict mode." }, + A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: ts.DiagnosticCategory.Error, key: "A tuple type element list cannot be empty." }, + Variable_declaration_list_cannot_be_empty: { code: 1123, category: ts.DiagnosticCategory.Error, key: "Variable declaration list cannot be empty." }, + Digit_expected: { code: 1124, category: ts.DiagnosticCategory.Error, key: "Digit expected." }, + Hexadecimal_digit_expected: { code: 1125, category: ts.DiagnosticCategory.Error, key: "Hexadecimal digit expected." }, + Unexpected_end_of_text: { code: 1126, category: ts.DiagnosticCategory.Error, key: "Unexpected end of text." }, + Invalid_character: { code: 1127, category: ts.DiagnosticCategory.Error, key: "Invalid character." }, + Declaration_or_statement_expected: { code: 1128, category: ts.DiagnosticCategory.Error, key: "Declaration or statement expected." }, + Statement_expected: { code: 1129, category: ts.DiagnosticCategory.Error, key: "Statement expected." }, + case_or_default_expected: { code: 1130, category: ts.DiagnosticCategory.Error, key: "'case' or 'default' expected." }, + Property_or_signature_expected: { code: 1131, category: ts.DiagnosticCategory.Error, key: "Property or signature expected." }, + Enum_member_expected: { code: 1132, category: ts.DiagnosticCategory.Error, key: "Enum member expected." }, + Type_reference_expected: { code: 1133, category: ts.DiagnosticCategory.Error, key: "Type reference expected." }, + Variable_declaration_expected: { code: 1134, category: ts.DiagnosticCategory.Error, key: "Variable declaration expected." }, + Argument_expression_expected: { code: 1135, category: ts.DiagnosticCategory.Error, key: "Argument expression expected." }, + Property_assignment_expected: { code: 1136, category: ts.DiagnosticCategory.Error, key: "Property assignment expected." }, + Expression_or_comma_expected: { code: 1137, category: ts.DiagnosticCategory.Error, key: "Expression or comma expected." }, + Parameter_declaration_expected: { code: 1138, category: ts.DiagnosticCategory.Error, key: "Parameter declaration expected." }, + Type_parameter_declaration_expected: { code: 1139, category: ts.DiagnosticCategory.Error, key: "Type parameter declaration expected." }, + Type_argument_expected: { code: 1140, category: ts.DiagnosticCategory.Error, key: "Type argument expected." }, + String_literal_expected: { code: 1141, category: ts.DiagnosticCategory.Error, key: "String literal expected." }, + Line_break_not_permitted_here: { code: 1142, category: ts.DiagnosticCategory.Error, key: "Line break not permitted here." }, + or_expected: { code: 1144, category: ts.DiagnosticCategory.Error, key: "'{' or ';' expected." }, + Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members." }, + Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration expected." }, + Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import declarations in an internal module cannot reference an external module." }, + Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules unless the '--module' flag is provided." }, + File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, + new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, + var_let_or_const_expected: { code: 1152, category: ts.DiagnosticCategory.Error, key: "'var', 'let' or 'const' expected." }, + let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: ts.DiagnosticCategory.Error, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: ts.DiagnosticCategory.Error, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "'const' declarations must be initialized" }, + const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: ts.DiagnosticCategory.Error, key: "'const' declarations can only be declared inside a block." }, + let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: ts.DiagnosticCategory.Error, key: "'let' declarations can only be declared inside a block." }, + Unterminated_template_literal: { code: 1160, category: ts.DiagnosticCategory.Error, key: "Unterminated template literal." }, + Unterminated_regular_expression_literal: { code: 1161, category: ts.DiagnosticCategory.Error, key: "Unterminated regular expression literal." }, + An_object_member_cannot_be_declared_optional: { code: 1162, category: ts.DiagnosticCategory.Error, key: "An object member cannot be declared optional." }, + yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: ts.DiagnosticCategory.Error, key: "'yield' expression must be contained_within a generator declaration." }, + Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: ts.DiagnosticCategory.Error, key: "Computed property names are not allowed in enums." }, + A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: ts.DiagnosticCategory.Error, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: ts.DiagnosticCategory.Error, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, + Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: ts.DiagnosticCategory.Error, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, + A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: ts.DiagnosticCategory.Error, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, + A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: ts.DiagnosticCategory.Error, key: "A computed property name in an interface must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: ts.DiagnosticCategory.Error, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, + A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: ts.DiagnosticCategory.Error, key: "A comma expression is not allowed in a computed property name." }, + extends_clause_already_seen: { code: 1172, category: ts.DiagnosticCategory.Error, key: "'extends' clause already seen." }, + extends_clause_must_precede_implements_clause: { code: 1173, category: ts.DiagnosticCategory.Error, key: "'extends' clause must precede 'implements' clause." }, + Classes_can_only_extend_a_single_class: { code: 1174, category: ts.DiagnosticCategory.Error, key: "Classes can only extend a single class." }, + implements_clause_already_seen: { code: 1175, category: ts.DiagnosticCategory.Error, key: "'implements' clause already seen." }, + Interface_declaration_cannot_have_implements_clause: { code: 1176, category: ts.DiagnosticCategory.Error, key: "Interface declaration cannot have 'implements' clause." }, + Binary_digit_expected: { code: 1177, category: ts.DiagnosticCategory.Error, key: "Binary digit expected." }, + Octal_digit_expected: { code: 1178, category: ts.DiagnosticCategory.Error, key: "Octal digit expected." }, + Unexpected_token_expected: { code: 1179, category: ts.DiagnosticCategory.Error, key: "Unexpected token. '{' expected." }, + Property_destructuring_pattern_expected: { code: 1180, category: ts.DiagnosticCategory.Error, key: "Property destructuring pattern expected." }, + Array_element_destructuring_pattern_expected: { code: 1181, category: ts.DiagnosticCategory.Error, key: "Array element destructuring pattern expected." }, + A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: ts.DiagnosticCategory.Error, key: "A destructuring declaration must have an initializer." }, + Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: ts.DiagnosticCategory.Error, key: "Destructuring declarations are not allowed in ambient contexts." }, + An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: ts.DiagnosticCategory.Error, key: "An implementation cannot be declared in ambient contexts." }, + Modifiers_cannot_appear_here: { code: 1184, category: ts.DiagnosticCategory.Error, key: "Modifiers cannot appear here." }, + Merge_conflict_marker_encountered: { code: 1185, category: ts.DiagnosticCategory.Error, key: "Merge conflict marker encountered." }, + A_rest_element_cannot_have_an_initializer: { code: 1186, category: ts.DiagnosticCategory.Error, key: "A rest element cannot have an initializer." }, + A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: ts.DiagnosticCategory.Error, key: "A parameter property may not be a binding pattern." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, + The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, + The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, + An_import_declaration_cannot_have_modifiers: { code: 1191, category: ts.DiagnosticCategory.Error, key: "An import declaration cannot have modifiers." }, + External_module_0_has_no_default_export: { code: 1192, category: ts.DiagnosticCategory.Error, key: "External module '{0}' has no default export." }, + An_export_declaration_cannot_have_modifiers: { code: 1193, category: ts.DiagnosticCategory.Error, key: "An export declaration cannot have modifiers." }, + Export_declarations_are_not_permitted_in_an_internal_module: { code: 1194, category: ts.DiagnosticCategory.Error, key: "Export declarations are not permitted in an internal module." }, + Catch_clause_variable_name_must_be_an_identifier: { code: 1195, category: ts.DiagnosticCategory.Error, key: "Catch clause variable name must be an identifier." }, + Catch_clause_variable_cannot_have_a_type_annotation: { code: 1196, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have a type annotation." }, + Catch_clause_variable_cannot_have_an_initializer: { code: 1197, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have an initializer." }, + An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: { code: 1198, category: ts.DiagnosticCategory.Error, key: "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive." }, + Unterminated_Unicode_escape_sequence: { code: 1199, category: ts.DiagnosticCategory.Error, key: "Unterminated Unicode escape sequence." }, + Line_terminator_not_permitted_before_arrow: { code: 1200, category: ts.DiagnosticCategory.Error, key: "Line terminator not permitted before arrow." }, + A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration: { code: 1201, category: ts.DiagnosticCategory.Error, key: "A type annotation on an export statement is only allowed in an ambient external module declaration." }, + Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { code: 1202, category: ts.DiagnosticCategory.Error, key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." }, + Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { code: 1203, category: ts.DiagnosticCategory.Error, key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." }, + Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { code: 1204, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." }, + Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." }, + Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." }, + Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." }, + Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile non-external modules when the '--separateCompilation' flag is provided." }, + Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, + Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, + Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, + Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, + Circular_definition_of_import_alias_0: { code: 2303, category: ts.DiagnosticCategory.Error, key: "Circular definition of import alias '{0}'." }, + Cannot_find_name_0: { code: 2304, category: ts.DiagnosticCategory.Error, key: "Cannot find name '{0}'." }, + Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module '{0}' has no exported member '{1}'." }, + File_0_is_not_an_external_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File '{0}' is not an external module." }, + Cannot_find_external_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot find external module '{0}'." }, + A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: ts.DiagnosticCategory.Error, key: "A module cannot have more than one export assignment." }, + An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in a module with other exported elements." }, + Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type '{0}' recursively references itself as a base type." }, + A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A class may only extend another class." }, + An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An interface may only extend a class or another interface." }, + Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic type '{0}' requires {1} type argument(s)." }, + Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not generic." }, + Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must be a class or interface type." }, + Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must have {1} type parameter(s)." }, + Cannot_find_global_type_0: { code: 2318, category: ts.DiagnosticCategory.Error, key: "Cannot find global type '{0}'." }, + Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: ts.DiagnosticCategory.Error, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, + Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, + Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, + Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}'." }, + Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is missing in type '{1}'." }, + Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, + Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible." }, + Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, + Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: ts.DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible." }, + Index_signature_is_missing_in_type_0: { code: 2329, category: ts.DiagnosticCategory.Error, key: "Index signature is missing in type '{0}'." }, + Index_signatures_are_incompatible: { code: 2330, category: ts.DiagnosticCategory.Error, key: "Index signatures are incompatible." }, + this_cannot_be_referenced_in_a_module_body: { code: 2331, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a module body." }, + this_cannot_be_referenced_in_current_location: { code: 2332, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in current location." }, + this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in constructor arguments." }, + this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a static property initializer." }, + super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: ts.DiagnosticCategory.Error, key: "'super' can only be referenced in a derived class." }, + super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in constructor arguments." }, + Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: ts.DiagnosticCategory.Error, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, + super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: ts.DiagnosticCategory.Error, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, + Property_0_does_not_exist_on_type_1: { code: 2339, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on type '{1}'." }, + Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: ts.DiagnosticCategory.Error, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, + Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private and only accessible within class '{1}'." }, + An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: ts.DiagnosticCategory.Error, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, + Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: ts.DiagnosticCategory.Error, key: "Type '{0}' does not satisfy the constraint '{1}'." }, + Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: ts.DiagnosticCategory.Error, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, + Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: ts.DiagnosticCategory.Error, key: "Supplied parameters do not match any signature of call target." }, + Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: ts.DiagnosticCategory.Error, key: "Untyped function calls may not accept type arguments." }, + Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: ts.DiagnosticCategory.Error, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, + Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot invoke an expression whose type lacks a call signature." }, + Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only a void function can be called with the 'new' keyword." }, + Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, + Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No best common type exists among return expressions." }, + A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, + An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: ts.DiagnosticCategory.Error, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, + The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, + The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, + The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, + The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, + The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, + The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side of assignment expression." }, + Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type parameter name cannot be '{0}'" }, + A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A parameter property is only allowed in a constructor implementation." }, + A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be of an array type." }, + A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: ts.DiagnosticCategory.Error, key: "A parameter initializer is only allowed in a function or constructor implementation." }, + Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' cannot be referenced in its initializer." }, + Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: ts.DiagnosticCategory.Error, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, + Duplicate_string_index_signature: { code: 2374, category: ts.DiagnosticCategory.Error, key: "Duplicate string index signature." }, + Duplicate_number_index_signature: { code: 2375, category: ts.DiagnosticCategory.Error, key: "Duplicate number index signature." }, + A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: ts.DiagnosticCategory.Error, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, + Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: ts.DiagnosticCategory.Error, key: "Constructors for derived classes must contain a 'super' call." }, + A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, + Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: ts.DiagnosticCategory.Error, key: "Getter and setter accessors do not agree in visibility." }, + get_and_set_accessor_must_have_the_same_type: { code: 2380, category: ts.DiagnosticCategory.Error, key: "'get' and 'set' accessor must have the same type." }, + A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: ts.DiagnosticCategory.Error, key: "A signature with an implementation cannot use a string literal type." }, + Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: ts.DiagnosticCategory.Error, key: "Specialized overload signature is not assignable to any non-specialized signature." }, + Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be exported or not exported." }, + Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be ambient or non-ambient." }, + Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be public, private or protected." }, + Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be optional or required." }, + Function_overload_must_be_static: { code: 2387, category: ts.DiagnosticCategory.Error, key: "Function overload must be static." }, + Function_overload_must_not_be_static: { code: 2388, category: ts.DiagnosticCategory.Error, key: "Function overload must not be static." }, + Function_implementation_name_must_be_0: { code: 2389, category: ts.DiagnosticCategory.Error, key: "Function implementation name must be '{0}'." }, + Constructor_implementation_is_missing: { code: 2390, category: ts.DiagnosticCategory.Error, key: "Constructor implementation is missing." }, + Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: ts.DiagnosticCategory.Error, key: "Function implementation is missing or not immediately following the declaration." }, + Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: ts.DiagnosticCategory.Error, key: "Multiple constructor implementations are not allowed." }, + Duplicate_function_implementation: { code: 2393, category: ts.DiagnosticCategory.Error, key: "Duplicate function implementation." }, + Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload signature is not compatible with function implementation." }, + Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, + Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, + Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, + Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, + Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: ts.DiagnosticCategory.Error, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, + Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: ts.DiagnosticCategory.Error, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, + The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, + The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, + Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...in' statement." }, + The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, + Setters_cannot_return_a_value: { code: 2408, category: ts.DiagnosticCategory.Error, key: "Setters cannot return a value." }, + Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature must be assignable to the instance type of the class" }, + All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: ts.DiagnosticCategory.Error, key: "All symbols within a 'with' block will be resolved to 'any'." }, + Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, + Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, + Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: ts.DiagnosticCategory.Error, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, + Class_name_cannot_be_0: { code: 2414, category: ts.DiagnosticCategory.Error, key: "Class name cannot be '{0}'" }, + Class_0_incorrectly_extends_base_class_1: { code: 2415, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}'." }, + Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: ts.DiagnosticCategory.Error, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, + Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: ts.DiagnosticCategory.Error, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, + Class_0_incorrectly_implements_interface_1: { code: 2420, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}'." }, + A_class_may_only_implement_another_class_or_interface: { code: 2422, category: ts.DiagnosticCategory.Error, key: "A class may only implement another class or interface." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, + Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, + Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, + Interface_name_cannot_be_0: { code: 2427, category: ts.DiagnosticCategory.Error, key: "Interface name cannot be '{0}'" }, + All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: ts.DiagnosticCategory.Error, key: "All declarations of an interface must have identical type parameters." }, + Interface_0_incorrectly_extends_interface_1: { code: 2430, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}'." }, + Enum_name_cannot_be_0: { code: 2431, category: ts.DiagnosticCategory.Error, key: "Enum name cannot be '{0}'" }, + In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: ts.DiagnosticCategory.Error, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, + A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, + A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, + Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: ts.DiagnosticCategory.Error, key: "Ambient external modules cannot be nested in other modules." }, + Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: ts.DiagnosticCategory.Error, key: "Ambient external module declaration cannot specify relative module name." }, + Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: ts.DiagnosticCategory.Error, key: "Module '{0}' is hidden by a local declaration with the same name" }, + Import_name_cannot_be_0: { code: 2438, category: ts.DiagnosticCategory.Error, key: "Import name cannot be '{0}'" }, + Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: ts.DiagnosticCategory.Error, key: "Import or export declaration in an ambient external module declaration cannot reference external module through relative external module name." }, + Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: ts.DiagnosticCategory.Error, key: "Import declaration conflicts with local declaration of '{0}'" }, + Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, + Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: ts.DiagnosticCategory.Error, key: "Types have separate declarations of a private property '{0}'." }, + Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, + Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, + Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, + Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, + The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, + Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: ts.DiagnosticCategory.Error, key: "Block-scoped variable '{0}' used before its declaration." }, + The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator cannot be a constant." }, + Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: ts.DiagnosticCategory.Error, key: "Left-hand side of assignment expression cannot be a constant." }, + Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare block-scoped variable '{0}'." }, + An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An enum member cannot have a numeric name." }, + The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, + Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type alias '{0}' circularly references itself." }, + Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type alias name cannot be '{0}'" }, + An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: ts.DiagnosticCategory.Error, key: "An AMD module cannot have multiple name assignments." }, + Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}' and no string index signature." }, + Type_0_has_no_property_1: { code: 2460, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}'." }, + Type_0_is_not_an_array_type: { code: 2461, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type." }, + A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: ts.DiagnosticCategory.Error, key: "A rest element must be last in an array destructuring pattern" }, + A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: ts.DiagnosticCategory.Error, key: "A binding pattern parameter cannot be optional in an implementation signature." }, + A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: ts.DiagnosticCategory.Error, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, + this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a computed property name." }, + super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in a computed property name." }, + A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: ts.DiagnosticCategory.Error, key: "A computed property name cannot reference a type parameter from its containing type." }, + Cannot_find_global_value_0: { code: 2468, category: ts.DiagnosticCategory.Error, key: "Cannot find global value '{0}'." }, + The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator cannot be applied to type 'symbol'." }, + Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: ts.DiagnosticCategory.Error, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, + A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: ts.DiagnosticCategory.Error, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, + Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: ts.DiagnosticCategory.Error, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, + Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: ts.DiagnosticCategory.Error, key: "Enum declarations must all be const or non-const." }, + In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: ts.DiagnosticCategory.Error, key: "In 'const' enum declarations member initializer must be constant expression." }, + const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: ts.DiagnosticCategory.Error, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, + A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: ts.DiagnosticCategory.Error, key: "A const enum member can only be accessed using a string literal." }, + const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to a non-finite value." }, + const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, + Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, + let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: ts.DiagnosticCategory.Error, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, + Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: ts.DiagnosticCategory.Error, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, + The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, + Export_declaration_conflicts_with_exported_declaration_of_0: { code: 2484, category: ts.DiagnosticCategory.Error, key: "Export declaration conflicts with exported declaration of '{0}'" }, + The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant: { code: 2485, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot be a previously defined constant." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant: { code: 2486, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a previously defined constant." }, + Invalid_left_hand_side_in_for_of_statement: { code: 2487, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...of' statement." }, + The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { code: 2488, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator." }, + The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method: { code: 2489, category: ts.DiagnosticCategory.Error, key: "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method." }, + The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property: { code: 2490, category: ts.DiagnosticCategory.Error, key: "The type returned by the 'next()' method of an iterator must have a 'value' property." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: { code: 2491, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a destructuring pattern." }, + Cannot_redeclare_identifier_0_in_catch_clause: { code: 2492, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare identifier '{0}' in catch clause" }, + Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2: { code: 2493, category: ts.DiagnosticCategory.Error, key: "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'." }, + Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: { code: 2494, category: ts.DiagnosticCategory.Error, key: "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher." }, + Type_0_is_not_an_array_type_or_a_string_type: { code: 2495, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type or a string type." }, + The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 2496, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, + External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { code: 2497, category: ts.DiagnosticCategory.Error, key: "External module '{0}' resolves to a non-module entity and cannot be imported using this construct." }, + External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { code: 2498, category: ts.DiagnosticCategory.Error, key: "External module '{0}' uses 'export =' and cannot be used with 'export *'." }, + An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2499, category: ts.DiagnosticCategory.Error, key: "An interface can only extend an identifier/qualified-name with optional type arguments." }, + A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2500, category: ts.DiagnosticCategory.Error, key: "A class can only implement an identifier/qualified-name with optional type arguments." }, + Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, + Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, + Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, + Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: ts.DiagnosticCategory.Error, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, + Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, + Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, + Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using private name '{1}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, + Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, + Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using private name '{0}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using private name '{0}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using private name '{0}'." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, + Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using private name '{0}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, + Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported type alias '{0}' has or is using private name '{1}'." }, + Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default export of the module has or is using private name '{0}'." }, + Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher: { code: 4091, category: ts.DiagnosticCategory.Error, key: "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher." }, + The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The current host does not support the '{0}' option." }, + Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot find the common subdirectory path for the input files." }, + Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot read file '{0}': {1}" }, + Unsupported_file_encoding: { code: 5013, category: ts.DiagnosticCategory.Error, key: "Unsupported file encoding." }, + Unknown_compiler_option_0: { code: 5023, category: ts.DiagnosticCategory.Error, key: "Unknown compiler option '{0}'." }, + Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' requires a value of type {1}." }, + Could_not_write_file_0_Colon_1: { code: 5033, category: ts.DiagnosticCategory.Error, key: "Could not write file '{0}': {1}" }, + Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, + Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, + Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." }, + Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." }, + Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." }, + Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." }, + Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." }, + Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." }, + Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate and emit output to single file." }, + Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.d.ts' file." }, + Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate map files instead of generated locations." }, + Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch input files." }, + Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect output structure to the directory." }, + Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do not erase const enum declarations in generated code." }, + Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs if any type checking errors were reported." }, + Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do not emit comments to output." }, + Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs." }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, + Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs' or 'amd'" }, + Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print this message." }, + Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print the compiler's version." }, + Compile_the_project_in_the_given_directory: { code: 6020, category: ts.DiagnosticCategory.Message, key: "Compile the project in the given directory." }, + Syntax_Colon_0: { code: 6023, category: ts.DiagnosticCategory.Message, key: "Syntax: {0}" }, + options: { code: 6024, category: ts.DiagnosticCategory.Message, key: "options" }, + file: { code: 6025, category: ts.DiagnosticCategory.Message, key: "file" }, + Examples_Colon_0: { code: 6026, category: ts.DiagnosticCategory.Message, key: "Examples: {0}" }, + Options_Colon: { code: 6027, category: ts.DiagnosticCategory.Message, key: "Options:" }, + Version_0: { code: 6029, category: ts.DiagnosticCategory.Message, key: "Version {0}" }, + Insert_command_line_options_and_files_from_a_file: { code: 6030, category: ts.DiagnosticCategory.Message, key: "Insert command line options and files from a file." }, + File_change_detected_Starting_incremental_compilation: { code: 6032, category: ts.DiagnosticCategory.Message, key: "File change detected. Starting incremental compilation..." }, + KIND: { code: 6034, category: ts.DiagnosticCategory.Message, key: "KIND" }, + FILE: { code: 6035, category: ts.DiagnosticCategory.Message, key: "FILE" }, + VERSION: { code: 6036, category: ts.DiagnosticCategory.Message, key: "VERSION" }, + LOCATION: { code: 6037, category: ts.DiagnosticCategory.Message, key: "LOCATION" }, + DIRECTORY: { code: 6038, category: ts.DiagnosticCategory.Message, key: "DIRECTORY" }, + Compilation_complete_Watching_for_file_changes: { code: 6042, category: ts.DiagnosticCategory.Message, key: "Compilation complete. Watching for file changes." }, + Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.map' file." }, + Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' expects an argument." }, + Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated quoted string in response file '{0}'." }, + Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, + Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, + Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, + Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported locale '{0}'." }, + Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable to open file '{0}'." }, + Corrupted_locale_file_0: { code: 6051, category: ts.DiagnosticCategory.Error, key: "Corrupted locale file {0}." }, + Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: ts.DiagnosticCategory.Message, key: "Raise error on expressions and declarations with an implied 'any' type." }, + File_0_not_found: { code: 6053, category: ts.DiagnosticCategory.Error, key: "File '{0}' not found." }, + File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, + Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, + Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do not emit declarations for code that has an '@internal' annotation." }, + Preserve_new_lines_when_emitting_code: { code: 6057, category: ts.DiagnosticCategory.Message, key: "Preserve new-lines when emitting code." }, + Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." }, + Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." }, + Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member '{0}' implicitly has an '{1}' type." }, + new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: ts.DiagnosticCategory.Error, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, + _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: ts.DiagnosticCategory.Error, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, + Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: ts.DiagnosticCategory.Error, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, + Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: ts.DiagnosticCategory.Error, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: ts.DiagnosticCategory.Error, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, + Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: ts.DiagnosticCategory.Error, key: "Index signature of object type implicitly has an 'any' type." }, + Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: ts.DiagnosticCategory.Error, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, + Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: ts.DiagnosticCategory.Error, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, + Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: ts.DiagnosticCategory.Error, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, + _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, + _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: ts.DiagnosticCategory.Error, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You cannot rename this element." }, + You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You cannot rename elements that are defined in the standard TypeScript library." }, + yield_expressions_are_not_currently_supported: { code: 9000, category: ts.DiagnosticCategory.Error, key: "'yield' expressions are not currently supported." }, + Generators_are_not_currently_supported: { code: 9001, category: ts.DiagnosticCategory.Error, key: "Generators are not currently supported." }, + Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { code: 9002, category: ts.DiagnosticCategory.Error, key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." }, + class_expressions_are_not_currently_supported: { code: 9003, category: ts.DiagnosticCategory.Error, key: "'class' expressions are not currently supported." }, + class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration: { code: 9004, category: ts.DiagnosticCategory.Error, key: "'class' declarations are only supported directly inside a module or as a top level declaration." } }; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { var textToToken = { - "any": 110, - "boolean": 111, - "break": 65, - "case": 66, - "catch": 67, - "class": 68, - "continue": 70, - "const": 69, - "constructor": 112, - "debugger": 71, - "declare": 113, - "default": 72, - "delete": 73, - "do": 74, - "else": 75, - "enum": 76, - "export": 77, - "extends": 78, - "false": 79, - "finally": 80, - "for": 81, - "function": 82, - "get": 114, - "if": 83, - "implements": 101, - "import": 84, - "in": 85, - "instanceof": 86, - "interface": 102, - "let": 103, - "module": 115, - "new": 87, - "null": 88, - "number": 117, - "package": 104, - "private": 105, - "protected": 106, - "public": 107, - "require": 116, - "return": 89, - "set": 118, - "static": 108, - "string": 119, - "super": 90, - "switch": 91, - "symbol": 120, - "this": 92, - "throw": 93, - "true": 94, - "try": 95, - "type": 121, - "typeof": 96, - "var": 97, - "void": 98, - "while": 99, - "with": 100, - "yield": 109, - "of": 122, + "any": 112, + "as": 102, + "boolean": 113, + "break": 66, + "case": 67, + "catch": 68, + "class": 69, + "continue": 71, + "const": 70, + "constructor": 114, + "debugger": 72, + "declare": 115, + "default": 73, + "delete": 74, + "do": 75, + "else": 76, + "enum": 77, + "export": 78, + "extends": 79, + "false": 80, + "finally": 81, + "for": 82, + "from": 124, + "function": 83, + "get": 116, + "if": 84, + "implements": 103, + "import": 85, + "in": 86, + "instanceof": 87, + "interface": 104, + "let": 105, + "module": 117, + "new": 88, + "null": 89, + "number": 119, + "package": 106, + "private": 107, + "protected": 108, + "public": 109, + "require": 118, + "return": 90, + "set": 120, + "static": 110, + "string": 121, + "super": 91, + "switch": 92, + "symbol": 122, + "this": 93, + "throw": 94, + "true": 95, + "try": 96, + "type": 123, + "typeof": 97, + "var": 98, + "void": 99, + "while": 100, + "with": 101, + "yield": 111, + "of": 125, "{": 14, "}": 15, "(": 16, @@ -2014,18 +2117,19 @@ var ts; "||": 49, "?": 50, ":": 51, - "=": 52, - "+=": 53, - "-=": 54, - "*=": 55, - "/=": 56, - "%=": 57, - "<<=": 58, - ">>=": 59, - ">>>=": 60, - "&=": 61, - "|=": 62, - "^=": 63 + "=": 53, + "+=": 54, + "-=": 55, + "*=": 56, + "/=": 57, + "%=": 58, + "<<=": 59, + ">>=": 60, + ">>>=": 61, + "&=": 62, + "|=": 63, + "^=": 64, + "@": 52 }; var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; @@ -2054,17 +2158,21 @@ var ts; return false; } function isUnicodeIdentifierStart(code, languageVersion) { - return languageVersion >= 1 ? lookupInUnicodeMap(code, unicodeES5IdentifierStart) : lookupInUnicodeMap(code, unicodeES3IdentifierStart); + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierStart) : + lookupInUnicodeMap(code, unicodeES3IdentifierStart); } ts.isUnicodeIdentifierStart = isUnicodeIdentifierStart; function isUnicodeIdentifierPart(code, languageVersion) { - return languageVersion >= 1 ? lookupInUnicodeMap(code, unicodeES5IdentifierPart) : lookupInUnicodeMap(code, unicodeES3IdentifierPart); + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierPart) : + lookupInUnicodeMap(code, unicodeES3IdentifierPart); } function makeReverseMap(source) { var result = []; - for (var name in source) { - if (source.hasOwnProperty(name)) { - result[source[name]] = name; + for (var name_2 in source) { + if (source.hasOwnProperty(name_2)) { + result[source[name_2]] = name_2; } } return result; @@ -2074,6 +2182,10 @@ var ts; return tokenStrings[t]; } ts.tokenToString = tokenToString; + function stringToToken(s) { + return textToToken[s]; + } + ts.stringToToken = stringToToken; function computeLineStarts(text) { var result = new Array(); var pos = 0; @@ -2131,13 +2243,35 @@ var ts; ts.getLineAndCharacterOfPosition = getLineAndCharacterOfPosition; var hasOwnProperty = Object.prototype.hasOwnProperty; function isWhiteSpace(ch) { - return ch === 32 || ch === 9 || ch === 11 || ch === 12 || - ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || - ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279; + return ch === 32 || + ch === 9 || + ch === 11 || + ch === 12 || + ch === 160 || + ch === 133 || + ch === 5760 || + ch >= 8192 && ch <= 8203 || + ch === 8239 || + ch === 8287 || + ch === 12288 || + ch === 65279; } ts.isWhiteSpace = isWhiteSpace; function isLineBreak(ch) { - return ch === 10 || ch === 13 || ch === 8232 || ch === 8233 || ch === 133; + // ES5 7.3: + // The ECMAScript line terminator characters are listed in Table 3. + // Table 3 � Line Terminator Characters + // Code Unit Value Name Formal Name + // \u000A Line Feed + // \u000D Carriage Return + // \u2028 Line separator + // \u2029 Paragraph separator + // Only the characters in Table 3 are treated as line terminators. Other new line or line + // breaking characters are treated as white space but not as line terminators. + return ch === 10 || + ch === 13 || + ch === 8232 || + ch === 8233; } ts.isLineBreak = isLineBreak; function isDigit(ch) { @@ -2240,8 +2374,8 @@ var ts; else { ts.Debug.assert(ch === 61); while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 62 && isConflictMarkerTrivia(text, pos)) { + var ch_1 = text.charCodeAt(pos); + if (ch_1 === 62 && isConflictMarkerTrivia(text, pos)) { break; } pos++; @@ -2256,8 +2390,9 @@ var ts; var ch = text.charCodeAt(pos); switch (ch) { case 13: - if (text.charCodeAt(pos + 1) === 10) + if (text.charCodeAt(pos + 1) === 10) { pos++; + } case 10: pos++; if (trailing) { @@ -2299,8 +2434,9 @@ var ts; } } if (collecting) { - if (!result) + if (!result) { result = []; + } result.push({ pos: startPos, end: pos, hasTrailingNewLine: hasTrailingNewLine }); } continue; @@ -2347,6 +2483,7 @@ var ts; var token; var tokenValue; var precedingLineBreak; + var hasExtendedUnicodeEscape; var tokenIsUnterminated; function error(message, length) { if (onError) { @@ -2396,10 +2533,16 @@ var ts; } return +(text.substring(start, pos)); } - function scanHexDigits(count, mustMatchCount) { + function scanExactNumberOfHexDigits(count) { + return scanHexDigits(count, false); + } + function scanMinimumNumberOfHexDigits(count) { + return scanHexDigits(count, true); + } + function scanHexDigits(minCount, scanAsManyAsPossible) { var digits = 0; var value = 0; - while (digits < count || !mustMatchCount) { + while (digits < minCount || scanAsManyAsPossible) { var ch = text.charCodeAt(pos); if (ch >= 48 && ch <= 57) { value = value * 16 + ch - 48; @@ -2416,7 +2559,7 @@ var ts; pos++; digits++; } - if (digits < count) { + if (digits < minCount) { value = -1; } return value; @@ -2529,16 +2672,15 @@ var ts; return "\'"; case 34: return "\""; - case 120: case 117: - var ch = scanHexDigits(ch === 120 ? 2 : 4, true); - if (ch >= 0) { - return String.fromCharCode(ch); - } - else { - error(ts.Diagnostics.Hexadecimal_digit_expected); - return ""; + if (pos < len && text.charCodeAt(pos) === 123) { + hasExtendedUnicodeEscape = true; + pos++; + return scanExtendedUnicodeEscape(); } + return scanHexadecimalEscape(4); + case 120: + return scanHexadecimalEscape(2); case 13: if (pos < len && text.charCodeAt(pos) === 10) { pos++; @@ -2551,11 +2693,57 @@ var ts; return String.fromCharCode(ch); } } + function scanHexadecimalEscape(numDigits) { + var escapedValue = scanExactNumberOfHexDigits(numDigits); + if (escapedValue >= 0) { + return String.fromCharCode(escapedValue); + } + else { + error(ts.Diagnostics.Hexadecimal_digit_expected); + return ""; + } + } + function scanExtendedUnicodeEscape() { + var escapedValue = scanMinimumNumberOfHexDigits(1); + var isInvalidExtendedEscape = false; + if (escapedValue < 0) { + error(ts.Diagnostics.Hexadecimal_digit_expected); + isInvalidExtendedEscape = true; + } + else if (escapedValue > 0x10FFFF) { + error(ts.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive); + isInvalidExtendedEscape = true; + } + if (pos >= len) { + error(ts.Diagnostics.Unexpected_end_of_text); + isInvalidExtendedEscape = true; + } + else if (text.charCodeAt(pos) == 125) { + pos++; + } + else { + error(ts.Diagnostics.Unterminated_Unicode_escape_sequence); + isInvalidExtendedEscape = true; + } + if (isInvalidExtendedEscape) { + return ""; + } + return utf16EncodeAsString(escapedValue); + } + function utf16EncodeAsString(codePoint) { + ts.Debug.assert(0x0 <= codePoint && codePoint <= 0x10FFFF); + if (codePoint <= 65535) { + return String.fromCharCode(codePoint); + } + var codeUnit1 = Math.floor((codePoint - 65536) / 1024) + 0xD800; + var codeUnit2 = ((codePoint - 65536) % 1024) + 0xDC00; + return String.fromCharCode(codeUnit1, codeUnit2); + } function peekUnicodeEscape() { if (pos + 5 < len && text.charCodeAt(pos + 1) === 117) { var start = pos; pos += 2; - var value = scanHexDigits(4, true); + var value = scanExactNumberOfHexDigits(4); pos = start; return value; } @@ -2594,7 +2782,7 @@ var ts; return token = textToToken[tokenValue]; } } - return token = 64; + return token = 65; } function scanBinaryOrOctalDigits(base) { ts.Debug.assert(base !== 2 || base !== 8, "Expected either base 2 or base 8"); @@ -2617,6 +2805,7 @@ var ts; } function scan() { startPos = pos; + hasExtendedUnicodeEscape = false; precedingLineBreak = false; tokenIsUnterminated = false; while (true) { @@ -2672,7 +2861,7 @@ var ts; return token = scanTemplateAndSetTokenValue(); case 37: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 57; + return pos += 2, token = 58; } return pos++, token = 37; case 38: @@ -2680,7 +2869,7 @@ var ts; return pos += 2, token = 48; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 61; + return pos += 2, token = 62; } return pos++, token = 43; case 40: @@ -2689,7 +2878,7 @@ var ts; return pos++, token = 17; case 42: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 55; + return pos += 2, token = 56; } return pos++, token = 35; case 43: @@ -2697,7 +2886,7 @@ var ts; return pos += 2, token = 38; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 53; + return pos += 2, token = 54; } return pos++, token = 33; case 44: @@ -2707,7 +2896,7 @@ var ts; return pos += 2, token = 39; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 54; + return pos += 2, token = 55; } return pos++, token = 34; case 46: @@ -2739,13 +2928,13 @@ var ts; pos += 2; var commentClosed = false; while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 42 && text.charCodeAt(pos + 1) === 47) { + var ch_2 = text.charCodeAt(pos); + if (ch_2 === 42 && text.charCodeAt(pos + 1) === 47) { pos += 2; commentClosed = true; break; } - if (isLineBreak(ch)) { + if (isLineBreak(ch_2)) { precedingLineBreak = true; } pos++; @@ -2762,13 +2951,13 @@ var ts; } } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 56; + return pos += 2, token = 57; } return pos++, token = 36; case 48: if (pos + 2 < len && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { pos += 2; - var value = scanHexDigits(1, false); + var value = scanMinimumNumberOfHexDigits(1); if (value < 0) { error(ts.Diagnostics.Hexadecimal_digit_expected); value = 0; @@ -2827,7 +3016,7 @@ var ts; } if (text.charCodeAt(pos + 1) === 60) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 58; + return pos += 3, token = 59; } return pos += 2, token = 40; } @@ -2854,7 +3043,7 @@ var ts; if (text.charCodeAt(pos + 1) === 62) { return pos += 2, token = 32; } - return pos++, token = 52; + return pos++, token = 53; case 62: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2874,7 +3063,7 @@ var ts; return pos++, token = 19; case 94: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 63; + return pos += 2, token = 64; } return pos++, token = 45; case 123: @@ -2884,18 +3073,20 @@ var ts; return pos += 2, token = 49; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 62; + return pos += 2, token = 63; } return pos++, token = 44; case 125: return pos++, token = 15; case 126: return pos++, token = 47; + case 64: + return pos++, token = 52; case 92: - var ch = peekUnicodeEscape(); - if (ch >= 0 && isIdentifierStart(ch)) { + var cookedChar = peekUnicodeEscape(); + if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { pos += 6; - tokenValue = String.fromCharCode(ch) + scanIdentifierParts(); + tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); @@ -2930,12 +3121,12 @@ var ts; if (text.charCodeAt(pos) === 62) { if (text.charCodeAt(pos + 1) === 62) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 60; + return pos += 3, token = 61; } return pos += 2, token = 42; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 59; + return pos += 2, token = 60; } return pos++, token = 41; } @@ -2946,7 +3137,7 @@ var ts; return token; } function reScanSlashToken() { - if (token === 36 || token === 56) { + if (token === 36 || token === 57) { var p = tokenPos + 1; var inEscape = false; var inCharacterClass = false; @@ -3038,9 +3229,10 @@ var ts; getTokenPos: function () { return tokenPos; }, getTokenText: function () { return text.substring(tokenPos, pos); }, getTokenValue: function () { return tokenValue; }, + hasExtendedUnicodeEscape: function () { return hasExtendedUnicodeEscape; }, hasPrecedingLineBreak: function () { return precedingLineBreak; }, - isIdentifier: function () { return token === 64 || token > 100; }, - isReservedWord: function () { return token >= 65 && token <= 100; }, + isIdentifier: function () { return token === 65 || token > 101; }, + isReservedWord: function () { return token >= 66 && token <= 101; }, isUnterminated: function () { return tokenIsUnterminated; }, reScanGreaterToken: reScanGreaterToken, reScanSlashToken: reScanSlashToken, @@ -3054,12 +3246,525 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.bindTime = 0; + (function (ModuleInstanceState) { + ModuleInstanceState[ModuleInstanceState["NonInstantiated"] = 0] = "NonInstantiated"; + ModuleInstanceState[ModuleInstanceState["Instantiated"] = 1] = "Instantiated"; + ModuleInstanceState[ModuleInstanceState["ConstEnumOnly"] = 2] = "ConstEnumOnly"; + })(ts.ModuleInstanceState || (ts.ModuleInstanceState = {})); + var ModuleInstanceState = ts.ModuleInstanceState; + function getModuleInstanceState(node) { + if (node.kind === 202 || node.kind === 203) { + return 0; + } + else if (ts.isConstEnumDeclaration(node)) { + return 2; + } + else if ((node.kind === 209 || node.kind === 208) && !(node.flags & 1)) { + return 0; + } + else if (node.kind === 206) { + var state = 0; + ts.forEachChild(node, function (n) { + switch (getModuleInstanceState(n)) { + case 0: + return false; + case 2: + state = 2; + return false; + case 1: + state = 1; + return true; + } + }); + return state; + } + else if (node.kind === 205) { + return getModuleInstanceState(node.body); + } + else { + return 1; + } + } + ts.getModuleInstanceState = getModuleInstanceState; + function bindSourceFile(file) { + var start = new Date().getTime(); + bindSourceFileWorker(file); + ts.bindTime += new Date().getTime() - start; + } + ts.bindSourceFile = bindSourceFile; + function bindSourceFileWorker(file) { + var parent; + var container; + var blockScopeContainer; + var lastContainer; + var symbolCount = 0; + var Symbol = ts.objectAllocator.getSymbolConstructor(); + if (!file.locals) { + file.locals = {}; + container = file; + setBlockScopeContainer(file, false); + bind(file); + file.symbolCount = symbolCount; + } + function createSymbol(flags, name) { + symbolCount++; + return new Symbol(flags, name); + } + function setBlockScopeContainer(node, cleanLocals) { + blockScopeContainer = node; + if (cleanLocals) { + blockScopeContainer.locals = undefined; + } + } + function addDeclarationToSymbol(symbol, node, symbolKind) { + symbol.flags |= symbolKind; + if (!symbol.declarations) + symbol.declarations = []; + symbol.declarations.push(node); + if (symbolKind & 1952 && !symbol.exports) + symbol.exports = {}; + if (symbolKind & 6240 && !symbol.members) + symbol.members = {}; + node.symbol = symbol; + if (symbolKind & 107455 && !symbol.valueDeclaration) + symbol.valueDeclaration = node; + } + function getDeclarationName(node) { + if (node.name) { + if (node.kind === 205 && node.name.kind === 8) { + return '"' + node.name.text + '"'; + } + if (node.name.kind === 127) { + var nameExpression = node.name.expression; + ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); + return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); + } + return node.name.text; + } + switch (node.kind) { + case 143: + case 135: + return "__constructor"; + case 142: + case 138: + return "__call"; + case 139: + return "__new"; + case 140: + return "__index"; + case 215: + return "__export"; + case 214: + return node.isExportEquals ? "export=" : "default"; + case 200: + case 201: + return node.flags & 256 ? "default" : undefined; + } + } + function getDisplayName(node) { + return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); + } + function declareSymbol(symbols, parent, node, includes, excludes) { + ts.Debug.assert(!ts.hasDynamicName(node)); + var name = node.flags & 256 && parent ? "default" : getDeclarationName(node); + var symbol; + if (name !== undefined) { + symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); + if (symbol.flags & excludes) { + if (node.name) { + node.name.parent = node; + } + var message = symbol.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 + : ts.Diagnostics.Duplicate_identifier_0; + ts.forEach(symbol.declarations, function (declaration) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); + }); + file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message, getDisplayName(node))); + symbol = createSymbol(0, name); + } + } + else { + symbol = createSymbol(0, "__missing"); + } + addDeclarationToSymbol(symbol, node, includes); + symbol.parent = parent; + if ((node.kind === 201 || node.kind === 174) && symbol.exports) { + var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); + if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { + if (node.name) { + node.name.parent = node; + } + file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); + } + symbol.exports[prototypeSymbol.name] = prototypeSymbol; + prototypeSymbol.parent = symbol; + } + return symbol; + } + function declareModuleMember(node, symbolKind, symbolExcludes) { + var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; + if (symbolKind & 8388608) { + if (node.kind === 217 || (node.kind === 208 && hasExportModifier)) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + else { + if (hasExportModifier || container.flags & 32768) { + var exportKind = (symbolKind & 107455 ? 1048576 : 0) | + (symbolKind & 793056 ? 2097152 : 0) | + (symbolKind & 1536 ? 4194304 : 0); + var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); + local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + node.localSymbol = local; + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + } + function bindChildren(node, symbolKind, isBlockScopeContainer) { + if (symbolKind & 255504) { + node.locals = {}; + } + var saveParent = parent; + var saveContainer = container; + var savedBlockScopeContainer = blockScopeContainer; + parent = node; + if (symbolKind & 262128) { + container = node; + if (lastContainer) { + lastContainer.nextContainer = container; + } + lastContainer = container; + } + if (isBlockScopeContainer) { + setBlockScopeContainer(node, (symbolKind & 255504) === 0 && node.kind !== 227); + } + ts.forEachChild(node, bind); + container = saveContainer; + parent = saveParent; + blockScopeContainer = savedBlockScopeContainer; + } + function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + switch (container.kind) { + case 205: + declareModuleMember(node, symbolKind, symbolExcludes); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, symbolKind, symbolExcludes); + break; + } + case 142: + case 143: + case 138: + case 139: + case 140: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + break; + case 174: + case 201: + if (node.flags & 128) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + case 145: + case 154: + case 202: + declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); + break; + case 204: + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function isAmbientContext(node) { + while (node) { + if (node.flags & 2) + return true; + node = node.parent; + } + return false; + } + function hasExportDeclarations(node) { + var body = node.kind === 227 ? node : node.body; + if (body.kind === 227 || body.kind === 206) { + for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { + var stat = _a[_i]; + if (stat.kind === 215 || stat.kind === 214) { + return true; + } + } + } + return false; + } + function setExportContextFlag(node) { + if (isAmbientContext(node) && !hasExportDeclarations(node)) { + node.flags |= 32768; + } + else { + node.flags &= ~32768; + } + } + function bindModuleDeclaration(node) { + setExportContextFlag(node); + if (node.name.kind === 8) { + bindDeclaration(node, 512, 106639, true); + } + else { + var state = getModuleInstanceState(node); + if (state === 0) { + bindDeclaration(node, 1024, 0, true); + } + else { + bindDeclaration(node, 512, 106639, true); + var currentModuleIsConstEnumOnly = state === 2; + if (node.symbol.constEnumOnlyModule === undefined) { + node.symbol.constEnumOnlyModule = currentModuleIsConstEnumOnly; + } + else { + node.symbol.constEnumOnlyModule = node.symbol.constEnumOnlyModule && currentModuleIsConstEnumOnly; + } + } + } + } + function bindFunctionOrConstructorType(node) { + // For a given function symbol "<...>(...) => T" we want to generate a symbol identical + // to the one we would get for: { <...>(...): T } + // + // We do that by making an anonymous type literal symbol, and then setting the function + // symbol as its sole member. To the rest of the system, this symbol will be indistinguishable + // from an actual type literal symbol you would have gotten had you used the long form. + var symbol = createSymbol(131072, getDeclarationName(node)); + addDeclarationToSymbol(symbol, node, 131072); + bindChildren(node, 131072, false); + var typeLiteralSymbol = createSymbol(2048, "__type"); + addDeclarationToSymbol(typeLiteralSymbol, node, 2048); + typeLiteralSymbol.members = {}; + typeLiteralSymbol.members[node.kind === 142 ? "__call" : "__new"] = symbol; + } + function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { + var symbol = createSymbol(symbolKind, name); + addDeclarationToSymbol(symbol, node, symbolKind); + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function bindCatchVariableDeclaration(node) { + bindChildren(node, 0, true); + } + function bindBlockScopedVariableDeclaration(node) { + switch (blockScopeContainer.kind) { + case 205: + declareModuleMember(node, 2, 107455); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, 2, 107455); + break; + } + default: + if (!blockScopeContainer.locals) { + blockScopeContainer.locals = {}; + } + declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); + } + bindChildren(node, 2, false); + } + function getDestructuringParameterName(node) { + return "__" + ts.indexOf(node.parent.parameters, node); + } + function bind(node) { + node.parent = parent; + switch (node.kind) { + case 128: + bindDeclaration(node, 262144, 530912, false); + break; + case 129: + bindParameter(node); + break; + case 198: + case 152: + if (ts.isBindingPattern(node.name)) { + bindChildren(node, 0, false); + } + else if (ts.isBlockOrCatchScoped(node)) { + bindBlockScopedVariableDeclaration(node); + } + else { + bindDeclaration(node, 1, 107454, false); + } + break; + case 132: + case 131: + bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); + break; + case 224: + case 225: + bindPropertyOrMethodOrAccessor(node, 4, 107455, false); + break; + case 226: + bindPropertyOrMethodOrAccessor(node, 8, 107455, false); + break; + case 138: + case 139: + case 140: + bindDeclaration(node, 131072, 0, false); + break; + case 134: + case 133: + bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); + break; + case 200: + bindDeclaration(node, 16, 106927, true); + break; + case 135: + bindDeclaration(node, 16384, 0, true); + break; + case 136: + bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); + break; + case 137: + bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); + break; + case 142: + case 143: + bindFunctionOrConstructorType(node); + break; + case 145: + bindAnonymousDeclaration(node, 2048, "__type", false); + break; + case 154: + bindAnonymousDeclaration(node, 4096, "__object", false); + break; + case 162: + case 163: + bindAnonymousDeclaration(node, 16, "__function", true); + break; + case 174: + bindAnonymousDeclaration(node, 32, "__class", false); + break; + case 223: + bindCatchVariableDeclaration(node); + break; + case 201: + bindDeclaration(node, 32, 899583, false); + break; + case 202: + bindDeclaration(node, 64, 792992, false); + break; + case 203: + bindDeclaration(node, 524288, 793056, false); + break; + case 204: + if (ts.isConst(node)) { + bindDeclaration(node, 128, 899967, false); + } + else { + bindDeclaration(node, 256, 899327, false); + } + break; + case 205: + bindModuleDeclaration(node); + break; + case 208: + case 211: + case 213: + case 217: + bindDeclaration(node, 8388608, 8388608, false); + break; + case 210: + if (node.name) { + bindDeclaration(node, 8388608, 8388608, false); + } + else { + bindChildren(node, 0, false); + } + break; + case 215: + if (!node.exportClause) { + declareSymbol(container.symbol.exports, container.symbol, node, 1073741824, 0); + } + bindChildren(node, 0, false); + break; + case 214: + if (node.expression && node.expression.kind === 65) { + declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); + } + else { + declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); + } + bindChildren(node, 0, false); + break; + case 227: + setExportContextFlag(node); + if (ts.isExternalModule(node)) { + bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); + break; + } + case 179: + bindChildren(node, 0, !ts.isFunctionLike(node.parent)); + break; + case 223: + case 186: + case 187: + case 188: + case 207: + bindChildren(node, 0, true); + break; + default: + var saveParent = parent; + parent = node; + ts.forEachChild(node, bind); + parent = saveParent; + } + } + function bindParameter(node) { + if (ts.isBindingPattern(node.name)) { + bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); + } + else { + bindDeclaration(node, 1, 107455, false); + } + if (node.flags & 112 && + node.parent.kind === 135 && + (node.parent.parent.kind === 201 || node.parent.parent.kind === 174)) { + var classDeclaration = node.parent.parent; + declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); + } + } + function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + if (ts.hasDynamicName(node)) { + bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); + } + else { + bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); + } + } + } +})(ts || (ts = {})); +/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; if (declaration.kind === kind) { return declaration; } @@ -3102,21 +3807,21 @@ var ts; ts.getFullWidth = getFullWidth; function containsParseError(node) { aggregateChildData(node); - return (node.parserContextFlags & 32) !== 0; + return (node.parserContextFlags & 64) !== 0; } ts.containsParseError = containsParseError; function aggregateChildData(node) { - if (!(node.parserContextFlags & 64)) { - var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 16) !== 0) || + if (!(node.parserContextFlags & 128)) { + var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 32) !== 0) || ts.forEachChild(node, containsParseError); if (thisNodeOrAnySubNodesHasError) { - node.parserContextFlags |= 32; + node.parserContextFlags |= 64; } - node.parserContextFlags |= 64; + node.parserContextFlags |= 128; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 210) { + while (node && node.kind !== 227) { node = node.parent; } return node; @@ -3182,47 +3887,106 @@ var ts; return identifier.length >= 3 && identifier.charCodeAt(0) === 95 && identifier.charCodeAt(1) === 95 && identifier.charCodeAt(2) === 95 ? identifier.substr(1) : identifier; } ts.unescapeIdentifier = unescapeIdentifier; + function makeIdentifierFromModuleName(moduleName) { + return ts.getBaseFileName(moduleName).replace(/\W/g, "_"); + } + ts.makeIdentifierFromModuleName = makeIdentifierFromModuleName; + function isBlockOrCatchScoped(declaration) { + return (getCombinedNodeFlags(declaration) & 12288) !== 0 || + isCatchClauseVariableDeclaration(declaration); + } + ts.isBlockOrCatchScoped = isBlockOrCatchScoped; + function getEnclosingBlockScopeContainer(node) { + var current = node; + while (current) { + if (isFunctionLike(current)) { + return current; + } + switch (current.kind) { + case 227: + case 207: + case 223: + case 205: + case 186: + case 187: + case 188: + return current; + case 179: + if (!isFunctionLike(current.parent)) { + return current; + } + } + current = current.parent; + } + } + ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; + function isCatchClauseVariableDeclaration(declaration) { + return declaration && + declaration.kind === 198 && + declaration.parent && + declaration.parent.kind === 223; + } + ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name); } ts.declarationNameToString = declarationNameToString; function createDiagnosticForNode(node, message, arg0, arg1, arg2) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = getTokenPosOfNode(node, file); - var length = node.end - start; - return ts.createFileDiagnostic(file, start, length, message, arg0, arg1, arg2); + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); + return ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2); } ts.createDiagnosticForNode = createDiagnosticForNode; function createDiagnosticForNodeFromMessageChain(node, messageChain) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = ts.skipTrivia(file.text, node.pos); - var length = node.end - start; + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); return { - file: file, - start: start, - length: length, + file: sourceFile, + start: span.start, + length: span.length, code: messageChain.code, category: messageChain.category, messageText: messageChain.next ? messageChain : messageChain.messageText }; } ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; - function getErrorSpanForNode(node) { - var errorSpan; + function getSpanOfTokenAtPosition(sourceFile, pos) { + var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); + scanner.setTextPos(pos); + scanner.scan(); + var start = scanner.getTokenPos(); + return createTextSpanFromBounds(start, scanner.getTextPos()); + } + ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForNode(sourceFile, node) { + var errorNode = node; switch (node.kind) { - case 191: - case 148: - case 194: - case 195: + case 227: + var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); + if (pos_1 === sourceFile.text.length) { + return createTextSpan(0, 0); + } + return getSpanOfTokenAtPosition(sourceFile, pos_1); case 198: - case 197: - case 209: - errorSpan = node.name; + case 152: + case 201: + case 174: + case 202: + case 205: + case 204: + case 226: + case 200: + case 162: + errorNode = node.name; break; } - return errorSpan && errorSpan.pos < errorSpan.end ? errorSpan : node; + if (errorNode === undefined) { + return getSpanOfTokenAtPosition(sourceFile, node.pos); + } + var pos = nodeIsMissing(errorNode) + ? errorNode.pos + : ts.skipTrivia(sourceFile.text, errorNode.pos); + return createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -3230,15 +3994,15 @@ var ts; } ts.isExternalModule = isExternalModule; function isDeclarationFile(file) { - return (file.flags & 1024) !== 0; + return (file.flags & 2048) !== 0; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 197 && isConst(node); + return node.kind === 204 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 148 || isBindingPattern(node))) { + while (node && (node.kind === 152 || isBindingPattern(node))) { node = node.parent; } return node; @@ -3246,34 +4010,33 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 191) { + if (node.kind === 198) { node = node.parent; } - if (node && node.kind === 192) { + if (node && node.kind === 199) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 173) { + if (node && node.kind === 180) { flags |= node.flags; } return flags; } ts.getCombinedNodeFlags = getCombinedNodeFlags; function isConst(node) { - return !!(getCombinedNodeFlags(node) & 4096); + return !!(getCombinedNodeFlags(node) & 8192); } ts.isConst = isConst; function isLet(node) { - return !!(getCombinedNodeFlags(node) & 2048); + return !!(getCombinedNodeFlags(node) & 4096); } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 175 && node.expression.kind === 8; + return node.kind === 182 && node.expression.kind === 8; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { - sourceFileOfNode = sourceFileOfNode || getSourceFileOfNode(node); - if (node.kind === 126 || node.kind === 125) { + if (node.kind === 129 || node.kind === 128) { return ts.concatenate(ts.getTrailingCommentRanges(sourceFileOfNode.text, node.pos), ts.getLeadingCommentRanges(sourceFileOfNode.text, node.pos)); } else { @@ -3295,64 +4058,82 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184: + case 191: return visitor(node); - case 172: - case 176: - case 177: - case 178: + case 207: case 179: - case 180: - case 181: + case 183: + case 184: case 185: case 186: - case 203: - case 204: case 187: - case 189: - case 206: + case 188: + case 192: + case 193: + case 220: + case 221: + case 194: + case 196: + case 223: return ts.forEachChild(node, traverse); } } } ts.forEachReturnStatement = forEachReturnStatement; - function isAnyFunction(node) { + function isVariableLike(node) { if (node) { switch (node.kind) { - case 131: - case 158: - case 193: - case 159: - case 130: + case 152: + case 226: case 129: + case 224: case 132: - case 133: - case 134: - case 135: - case 136: - case 138: - case 139: - case 158: - case 159: - case 193: + case 131: + case 225: + case 198: return true; } } return false; } - ts.isAnyFunction = isAnyFunction; + ts.isVariableLike = isVariableLike; + function isFunctionLike(node) { + if (node) { + switch (node.kind) { + case 135: + case 162: + case 200: + case 163: + case 134: + case 133: + case 136: + case 137: + case 138: + case 139: + case 140: + case 142: + case 143: + case 162: + case 163: + case 200: + return true; + } + } + return false; + } + ts.isFunctionLike = isFunctionLike; function isFunctionBlock(node) { - return node && node.kind === 172 && isAnyFunction(node.parent); + return node && node.kind === 179 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 130 && node.parent.kind === 150; + return node && node.kind === 134 && node.parent.kind === 154; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function getContainingFunction(node) { while (true) { node = node.parent; - if (!node || isAnyFunction(node)) { + if (!node || isFunctionLike(node)) { return node; } } @@ -3365,28 +4146,28 @@ var ts; return undefined; } switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 159: + case 163: if (!includeArrowFunctions) { continue; } - case 193: - case 158: - case 198: - case 128: - case 127: - case 130: - case 129: - case 131: + case 200: + case 162: + case 205: case 132: + case 131: + case 134: case 133: - case 197: - case 210: + case 135: + case 136: + case 137: + case 204: + case 227: return node; } } @@ -3398,49 +4179,104 @@ var ts; if (!node) return node; switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 193: - case 158: - case 159: + case 200: + case 162: + case 163: if (!includeFunctions) { continue; } - case 128: - case 127: - case 130: - case 129: - case 131: case 132: + case 131: + case 134: case 133: + case 135: + case 136: + case 137: return node; } } } ts.getSuperContainer = getSuperContainer; function getInvokedExpression(node) { - if (node.kind === 155) { + if (node.kind === 159) { return node.tag; } return node.expression; } ts.getInvokedExpression = getInvokedExpression; + function nodeCanBeDecorated(node) { + switch (node.kind) { + case 201: + return true; + case 132: + return node.parent.kind === 201; + case 129: + return node.parent.body && node.parent.parent.kind === 201; + case 136: + case 137: + case 134: + return node.body && node.parent.kind === 201; + } + return false; + } + ts.nodeCanBeDecorated = nodeCanBeDecorated; + function nodeIsDecorated(node) { + switch (node.kind) { + case 201: + if (node.decorators) { + return true; + } + return false; + case 132: + case 129: + if (node.decorators) { + return true; + } + return false; + case 136: + if (node.body && node.decorators) { + return true; + } + return false; + case 134: + case 137: + if (node.body && node.decorators) { + return true; + } + return false; + } + return false; + } + ts.nodeIsDecorated = nodeIsDecorated; + function childIsDecorated(node) { + switch (node.kind) { + case 201: + return ts.forEach(node.members, nodeOrChildIsDecorated); + case 134: + case 137: + return ts.forEach(node.parameters, nodeIsDecorated); + } + return false; + } + ts.childIsDecorated = childIsDecorated; + function nodeOrChildIsDecorated(node) { + return nodeIsDecorated(node) || childIsDecorated(node); + } + ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isExpression(node) { switch (node.kind) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 9: - case 149: - case 150: - case 151: - case 152: case 153: case 154: case 155: @@ -3448,68 +4284,73 @@ var ts; case 157: case 158: case 159: - case 162: case 160: case 161: + case 162: + case 174: case 163: + case 166: case 164: case 165: - case 166: - case 169: case 167: - case 10: + case 168: + case 169: case 170: + case 173: + case 171: + case 10: + case 175: return true; - case 123: - while (node.parent.kind === 123) { + case 126: + while (node.parent.kind === 126) { node = node.parent; } - return node.parent.kind === 140; - case 64: - if (node.parent.kind === 140) { + return node.parent.kind === 144; + case 65: + if (node.parent.kind === 144) { return true; } case 7: case 8: - var parent = node.parent; - switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 209: - case 207: - case 148: - return parent.initializer === node; - case 175: - case 176: - case 177: - case 178: + var parent_1 = node.parent; + switch (parent_1.kind) { + case 198: + case 129: + case 132: + case 131: + case 226: + case 224: + case 152: + return parent_1.initializer === node; + case 182: + case 183: case 184: case 185: + case 191: + case 192: + case 193: + case 220: + case 195: + case 193: + return parent_1.expression === node; case 186: - case 203: - case 188: - case 186: - return parent.expression === node; - case 179: - var forStatement = parent; - return (forStatement.initializer === node && forStatement.initializer.kind !== 192) || + var forStatement = parent_1; + return (forStatement.initializer === node && forStatement.initializer.kind !== 199) || forStatement.condition === node || forStatement.iterator === node; - case 180: - case 181: - var forInStatement = parent; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 192) || + case 187: + case 188: + var forInStatement = parent_1; + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 199) || forInStatement.expression === node; - case 156: - return node === parent.expression; - case 171: - return node === parent.expression; - case 124: - return node === parent.expression; + case 160: + return node === parent_1.expression; + case 176: + return node === parent_1.expression; + case 127: + return node === parent_1.expression; default: - if (isExpression(parent)) { + if (isExpression(parent_1)) { return true; } } @@ -3523,35 +4364,50 @@ var ts; (preserveConstEnums && moduleState === 2); } ts.isInstantiatedModule = isInstantiatedModule; - function isExternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind === 202; + function isExternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind === 219; } - ts.isExternalModuleImportDeclaration = isExternalModuleImportDeclaration; - function getExternalModuleImportDeclarationExpression(node) { - ts.Debug.assert(isExternalModuleImportDeclaration(node)); + ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; + function getExternalModuleImportEqualsDeclarationExpression(node) { + ts.Debug.assert(isExternalModuleImportEqualsDeclaration(node)); return node.moduleReference.expression; } - ts.getExternalModuleImportDeclarationExpression = getExternalModuleImportDeclarationExpression; - function isInternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind !== 202; + ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; + function isInternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind !== 219; } - ts.isInternalModuleImportDeclaration = isInternalModuleImportDeclaration; + ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; + function getExternalModuleName(node) { + if (node.kind === 209) { + return node.moduleSpecifier; + } + if (node.kind === 208) { + var reference = node.moduleReference; + if (reference.kind === 219) { + return reference.expression; + } + } + if (node.kind === 215) { + return node.moduleSpecifier; + } + } + ts.getExternalModuleName = getExternalModuleName; function hasDotDotDotToken(node) { - return node && node.kind === 126 && node.dotDotDotToken !== undefined; + return node && node.kind === 129 && node.dotDotDotToken !== undefined; } ts.hasDotDotDotToken = hasDotDotDotToken; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 126: - return node.questionToken !== undefined; - case 130: case 129: return node.questionToken !== undefined; - case 208: - case 207: - case 128: - case 127: + case 134: + case 133: + return node.questionToken !== undefined; + case 225: + case 224: + case 132: + case 131: return node.questionToken !== undefined; } } @@ -3575,12 +4431,12 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return node.kind === 147 || node.kind === 146; + return !!node && (node.kind === 151 || node.kind === 150); } ts.isBindingPattern = isBindingPattern; function isInAmbientContext(node) { while (node) { - if (node.flags & (2 | 1024)) { + if (node.flags & (2 | 2048)) { return true; } node = node.parent; @@ -3590,27 +4446,33 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 125: - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: - case 129: - case 193: - case 132: - case 133: - case 131: - case 194: - case 195: - case 196: - case 197: - case 198: + case 163: + case 152: + case 201: + case 135: + case 204: + case 226: + case 217: case 200: + case 162: + case 136: + case 210: + case 208: + case 213: + case 202: + case 134: + case 133: + case 205: + case 211: + case 129: + case 224: + case 132: + case 131: + case 137: + case 225: + case 203: + case 128: + case 198: return true; } return false; @@ -3618,65 +4480,91 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 183: - case 182: case 190: - case 177: - case 175: - case 174: - case 180: - case 181: - case 179: - case 176: - case 187: - case 184: - case 186: - case 93: case 189: - case 173: - case 178: + case 197: + case 184: + case 182: + case 181: + case 187: + case 188: + case 186: + case 183: + case 194: + case 191: + case 193: + case 94: + case 196: + case 180: case 185: - case 201: + case 192: + case 214: return true; default: return false; } } ts.isStatement = isStatement; - function isDeclarationOrFunctionExpressionOrCatchVariableName(name) { - if (name.kind !== 64 && name.kind !== 8 && name.kind !== 7) { + function isClassElement(n) { + switch (n.kind) { + case 135: + case 132: + case 134: + case 136: + case 137: + case 140: + return true; + default: + return false; + } + } + ts.isClassElement = isClassElement; + function isDeclarationName(name) { + if (name.kind !== 65 && name.kind !== 8 && name.kind !== 7) { return false; } var parent = name.parent; - if (isDeclaration(parent) || parent.kind === 158) { - return parent.name === name; + if (parent.kind === 213 || parent.kind === 217) { + if (parent.propertyName) { + return true; + } } - if (parent.kind === 206) { + if (isDeclaration(parent)) { return parent.name === name; } return false; } - ts.isDeclarationOrFunctionExpressionOrCatchVariableName = isDeclarationOrFunctionExpressionOrCatchVariableName; - function getClassBaseTypeNode(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + ts.isDeclarationName = isDeclarationName; + function isAliasSymbolDeclaration(node) { + return node.kind === 208 || + node.kind === 210 && !!node.name || + node.kind === 211 || + node.kind === 213 || + node.kind === 217 || + node.kind === 214 && node.expression.kind === 65; + } + ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; + function getClassExtendsHeritageClauseElement(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause && heritageClause.types.length > 0 ? heritageClause.types[0] : undefined; } - ts.getClassBaseTypeNode = getClassBaseTypeNode; - function getClassImplementedTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 101); + ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement; + function getClassImplementsHeritageClauseElements(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 103); return heritageClause ? heritageClause.types : undefined; } - ts.getClassImplementedTypeNodes = getClassImplementedTypeNodes; + ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements; function getInterfaceBaseTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause ? heritageClause.types : undefined; } ts.getInterfaceBaseTypeNodes = getInterfaceBaseTypeNodes; function getHeritageClause(clauses, kind) { if (clauses) { - for (var i = 0, n = clauses.length; i < n; i++) { - if (clauses[i].token === kind) { - return clauses[i]; + for (var _i = 0; _i < clauses.length; _i++) { + var clause = clauses[_i]; + if (clause.token === kind) { + return clause; } } } @@ -3692,32 +4580,11 @@ var ts; } ts.tryResolveScriptReference = tryResolveScriptReference; function getAncestor(node, kind) { - switch (kind) { - case 194: - while (node) { - switch (node.kind) { - case 194: - return node; - case 197: - case 195: - case 196: - case 198: - case 200: - return undefined; - default: - node = node.parent; - continue; - } - } - break; - default: - while (node) { - if (node.kind === kind) { - return node; - } - node = node.parent; - } - break; + while (node) { + if (node.kind === kind) { + return node; + } + node = node.parent; } return undefined; } @@ -3757,7 +4624,7 @@ var ts; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 65 <= token && token <= 122; + return 66 <= token && token <= 125; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -3766,19 +4633,19 @@ var ts; ts.isTrivia = isTrivia; function hasDynamicName(declaration) { return declaration.name && - declaration.name.kind === 124 && + declaration.name.kind === 127 && !isWellKnownSymbolSyntactically(declaration.name.expression); } ts.hasDynamicName = hasDynamicName; function isWellKnownSymbolSyntactically(node) { - return node.kind === 151 && isESSymbolIdentifier(node.expression); + return node.kind === 155 && isESSymbolIdentifier(node.expression); } ts.isWellKnownSymbolSyntactically = isWellKnownSymbolSyntactically; function getPropertyNameForPropertyNameNode(name) { - if (name.kind === 64 || name.kind === 8 || name.kind === 7) { + if (name.kind === 65 || name.kind === 8 || name.kind === 7) { return name.text; } - if (name.kind === 124) { + if (name.kind === 127) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -3793,18 +4660,19 @@ var ts; } ts.getPropertyNameForKnownSymbolName = getPropertyNameForKnownSymbolName; function isESSymbolIdentifier(node) { - return node.kind === 64 && node.text === "Symbol"; + return node.kind === 65 && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; function isModifier(token) { switch (token) { + case 109: case 107: - case 105: - case 106: case 108: - case 77: - case 113: - case 69: + case 110: + case 78: + case 115: + case 70: + case 73: return true; } return false; @@ -3919,6 +4787,22 @@ var ts; return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; + function nodeStartsNewLexicalEnvironment(n) { + return isFunctionLike(n) || n.kind === 205 || n.kind === 227; + } + ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; + function nodeIsSynthesized(node) { + return node.pos === -1; + } + ts.nodeIsSynthesized = nodeIsSynthesized; + function createSynthesizedNode(kind, startsOnNewLine) { + var node = ts.createNode(kind); + node.pos = -1; + node.end = -1; + node.startsOnNewLine = startsOnNewLine; + return node; + } + ts.createSynthesizedNode = createSynthesizedNode; function createDiagnosticCollection() { var nonFileDiagnostics = []; var fileDiagnostics = {}; @@ -3984,10 +4868,326 @@ var ts; } } ts.createDiagnosticCollection = createDiagnosticCollection; + var escapedCharsRegExp = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + var escapedCharsMap = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", + "\u2029": "\\u2029", + "\u0085": "\\u0085" + }; + function escapeString(s) { + s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; + return s; + function getReplacement(c) { + return escapedCharsMap[c] || get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + } + } + ts.escapeString = escapeString; + function get16BitUnicodeEscapeSequence(charCode) { + var hexCharCode = charCode.toString(16).toUpperCase(); + var paddedHexCode = ("0000" + hexCharCode).slice(-4); + return "\\u" + paddedHexCode; + } + var nonAsciiCharacters = /[^\u0000-\u007F]/g; + function escapeNonAsciiCharacters(s) { + return nonAsciiCharacters.test(s) ? + s.replace(nonAsciiCharacters, function (c) { return get16BitUnicodeEscapeSequence(c.charCodeAt(0)); }) : + s; + } + ts.escapeNonAsciiCharacters = escapeNonAsciiCharacters; + var indentStrings = ["", " "]; + function getIndentString(level) { + if (indentStrings[level] === undefined) { + indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; + } + return indentStrings[level]; + } + ts.getIndentString = getIndentString; + function getIndentSize() { + return indentStrings[1].length; + } + ts.getIndentSize = getIndentSize; + function createTextWriter(newLine) { + var output = ""; + var indent = 0; + var lineStart = true; + var lineCount = 0; + var linePos = 0; + function write(s) { + if (s && s.length) { + if (lineStart) { + output += getIndentString(indent); + lineStart = false; + } + output += s; + } + } + function rawWrite(s) { + if (s !== undefined) { + if (lineStart) { + lineStart = false; + } + output += s; + } + } + function writeLiteral(s) { + if (s && s.length) { + write(s); + var lineStartsOfS = ts.computeLineStarts(s); + if (lineStartsOfS.length > 1) { + lineCount = lineCount + lineStartsOfS.length - 1; + linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; + } + } + } + function writeLine() { + if (!lineStart) { + output += newLine; + lineCount++; + linePos = output.length; + lineStart = true; + } + } + function writeTextOfNode(sourceFile, node) { + write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); + } + return { + write: write, + rawWrite: rawWrite, + writeTextOfNode: writeTextOfNode, + writeLiteral: writeLiteral, + writeLine: writeLine, + increaseIndent: function () { return indent++; }, + decreaseIndent: function () { return indent--; }, + getIndent: function () { return indent; }, + getTextPos: function () { return output.length; }, + getLine: function () { return lineCount + 1; }, + getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, + getText: function () { return output; } + }; + } + ts.createTextWriter = createTextWriter; + function getOwnEmitOutputFilePath(sourceFile, host, extension) { + var compilerOptions = host.getCompilerOptions(); + var emitOutputFilePathWithoutExtension; + if (compilerOptions.outDir) { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); + } + else { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); + } + return emitOutputFilePathWithoutExtension + extension; + } + ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { + var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); + sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); + return ts.combinePaths(newDirPath, sourceFilePath); + } + ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { + diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + }); + } + ts.writeFile = writeFile; + function getLineOfLocalPosition(currentSourceFile, pos) { + return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; + } + ts.getLineOfLocalPosition = getLineOfLocalPosition; + function getFirstConstructorWithBody(node) { + return ts.forEach(node.members, function (member) { + if (member.kind === 135 && nodeIsPresent(member.body)) { + return member; + } + }); + } + ts.getFirstConstructorWithBody = getFirstConstructorWithBody; + function shouldEmitToOwnFile(sourceFile, compilerOptions) { + if (!isDeclarationFile(sourceFile)) { + if ((isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + return true; + } + return false; + } + return false; + } + ts.shouldEmitToOwnFile = shouldEmitToOwnFile; + function getAllAccessorDeclarations(declarations, accessor) { + var firstAccessor; + var secondAccessor; + var getAccessor; + var setAccessor; + if (hasDynamicName(accessor)) { + firstAccessor = accessor; + if (accessor.kind === 136) { + getAccessor = accessor; + } + else if (accessor.kind === 137) { + setAccessor = accessor; + } + else { + ts.Debug.fail("Accessor has wrong kind"); + } + } + else { + ts.forEach(declarations, function (member) { + if ((member.kind === 136 || member.kind === 137) + && (member.flags & 128) === (accessor.flags & 128)) { + var memberName = getPropertyNameForPropertyNameNode(member.name); + var accessorName = getPropertyNameForPropertyNameNode(accessor.name); + if (memberName === accessorName) { + if (!firstAccessor) { + firstAccessor = member; + } + else if (!secondAccessor) { + secondAccessor = member; + } + if (member.kind === 136 && !getAccessor) { + getAccessor = member; + } + if (member.kind === 137 && !setAccessor) { + setAccessor = member; + } + } + } + }); + } + return { + firstAccessor: firstAccessor, + secondAccessor: secondAccessor, + getAccessor: getAccessor, + setAccessor: setAccessor + }; + } + ts.getAllAccessorDeclarations = getAllAccessorDeclarations; + function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { + if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && + getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { + writer.writeLine(); + } + } + ts.emitNewLineBeforeLeadingComments = emitNewLineBeforeLeadingComments; + function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { + var emitLeadingSpace = !trailingSeparator; + ts.forEach(comments, function (comment) { + if (emitLeadingSpace) { + writer.write(" "); + emitLeadingSpace = false; + } + writeComment(currentSourceFile, writer, comment, newLine); + if (comment.hasTrailingNewLine) { + writer.writeLine(); + } + else if (trailingSeparator) { + writer.write(" "); + } + else { + emitLeadingSpace = true; + } + }); + } + ts.emitComments = emitComments; + function writeCommentRange(currentSourceFile, writer, comment, newLine) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); + var lineCount = ts.getLineStarts(currentSourceFile).length; + var firstCommentLineIndent; + for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { + var nextLineStart = (currentLine + 1) === lineCount + ? currentSourceFile.text.length + 1 + : getStartPositionOfLine(currentLine + 1, currentSourceFile); + if (pos !== comment.pos) { + if (firstCommentLineIndent === undefined) { + firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); + } + var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); + var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); + if (spacesToEmit > 0) { + var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); + var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); + writer.rawWrite(indentSizeSpaceString); + while (numberOfSingleSpacesToEmit) { + writer.rawWrite(" "); + numberOfSingleSpacesToEmit--; + } + } + else { + writer.rawWrite(""); + } + } + writeTrimmedCurrentLine(pos, nextLineStart); + pos = nextLineStart; + } + } + else { + writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); + } + function writeTrimmedCurrentLine(pos, nextLineStart) { + var end = Math.min(comment.end, nextLineStart - 1); + var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); + if (currentLineText) { + writer.write(currentLineText); + if (end !== comment.end) { + writer.writeLine(); + } + } + else { + writer.writeLiteral(newLine); + } + } + function calculateIndent(pos, end) { + var currentLineIndent = 0; + for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { + if (currentSourceFile.text.charCodeAt(pos) === 9) { + currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); + } + else { + currentLineIndent++; + } + } + return currentLineIndent; + } + } + ts.writeCommentRange = writeCommentRange; + function isSupportedHeritageClauseElement(node) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + ts.isSupportedHeritageClauseElement = isSupportedHeritageClauseElement; + function isSupportedHeritageClauseElementExpression(node) { + if (node.kind === 65) { + return true; + } + else if (node.kind === 155) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + else { + return false; + } + } + function isRightSideOfQualifiedNameOrPropertyAccess(node) { + return (node.parent.kind === 126 && node.parent.right === node) || + (node.parent.kind === 155 && node.parent.name === node); + } + ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; + function getLocalSymbolForExportDefault(symbol) { + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & 256) ? symbol.valueDeclaration.localSymbol : undefined; + } + ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { - var nodeConstructors = new Array(212); + var nodeConstructors = new Array(229); ts.parseTime = 0; function getNodeConstructor(kind) { return nodeConstructors[kind] || (nodeConstructors[kind] = ts.objectAllocator.getNodeConstructor(kind)); @@ -4009,8 +5209,9 @@ var ts; } function visitEachNode(cbNode, nodes) { if (nodes) { - for (var i = 0, len = nodes.length; i < len; i++) { - var result = cbNode(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + var result = cbNode(node); if (result) { return result; } @@ -4024,225 +5225,272 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 123: + case 126: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 125: + case 128: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 126: - case 128: - case 127: - case 207: - case 208: - case 191: - case 148: - return visitNodes(cbNodes, node.modifiers) || + case 129: + case 132: + case 131: + case 224: + case 225: + case 198: + case 152: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.dotDotDotToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); + case 142: + case 143: case 138: case 139: - case 134: - case 135: - case 136: - return visitNodes(cbNodes, node.modifiers) || + case 140: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 130: - case 129: - case 131: - case 132: + case 134: case 133: - case 158: - case 193: - case 159: - return visitNodes(cbNodes, node.modifiers) || + case 135: + case 136: + case 137: + case 162: + case 200: + case 163: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type) || + visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 137: + case 141: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 140: - return visitNode(cbNode, node.exprName); - case 141: - return visitNodes(cbNodes, node.members); - case 142: - return visitNode(cbNode, node.elementType); - case 143: - return visitNodes(cbNodes, node.elementTypes); case 144: - return visitNodes(cbNodes, node.types); + return visitNode(cbNode, node.exprName); case 145: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.members); case 146: + return visitNode(cbNode, node.elementType); case 147: - return visitNodes(cbNodes, node.elements); + return visitNodes(cbNodes, node.elementTypes); + case 148: + return visitNodes(cbNodes, node.types); case 149: - return visitNodes(cbNodes, node.elements); + return visitNode(cbNode, node.type); case 150: - return visitNodes(cbNodes, node.properties); case 151: + return visitNodes(cbNodes, node.elements); + case 153: + return visitNodes(cbNodes, node.elements); + case 154: + return visitNodes(cbNodes, node.properties); + case 155: return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 152: + case 156: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 153: - case 154: + case 157: + case 158: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 155: + case 159: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 156: + case 160: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 157: - return visitNode(cbNode, node.expression); - case 160: - return visitNode(cbNode, node.expression); case 161: return visitNode(cbNode, node.expression); - case 162: + case 164: return visitNode(cbNode, node.expression); - case 163: + case 165: + return visitNode(cbNode, node.expression); + case 166: + return visitNode(cbNode, node.expression); + case 167: return visitNode(cbNode, node.operand); - case 168: + case 172: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 164: + case 168: return visitNode(cbNode, node.operand); - case 165: + case 169: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 166: + case 170: return visitNode(cbNode, node.condition) || + visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || + visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 169: + case 173: return visitNode(cbNode, node.expression); - case 172: - case 199: + case 179: + case 206: return visitNodes(cbNodes, node.statements); - case 210: + case 227: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 173: - return visitNodes(cbNodes, node.modifiers) || + case 180: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 192: + case 199: return visitNodes(cbNodes, node.declarations); - case 175: + case 182: return visitNode(cbNode, node.expression); - case 176: + case 183: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 177: + case 184: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 178: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 179: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.condition) || - visitNode(cbNode, node.iterator) || - visitNode(cbNode, node.statement); - case 180: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 181: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 182: - case 183: - return visitNode(cbNode, node.label); - case 184: - return visitNode(cbNode, node.expression); case 185: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 186: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.clauses); - case 203: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 204: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.condition) || + visitNode(cbNode, node.iterator) || + visitNode(cbNode, node.statement); case 187: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 188: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); case 189: + case 190: + return visitNode(cbNode, node.label); + case 191: + return visitNode(cbNode, node.expression); + case 192: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 193: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 207: + return visitNodes(cbNodes, node.clauses); + case 220: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 221: + return visitNodes(cbNodes, node.statements); + case 194: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 195: + return visitNode(cbNode, node.expression); + case 196: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 206: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.type) || + case 223: + return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 194: - return visitNodes(cbNodes, node.modifiers) || + case 130: + return visitNode(cbNode, node.expression); + case 201: + case 174: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 195: - return visitNodes(cbNodes, node.modifiers) || + case 202: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 196: - return visitNodes(cbNodes, node.modifiers) || + case 203: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 197: - return visitNodes(cbNodes, node.modifiers) || + case 204: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 209: + case 226: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 198: - return visitNodes(cbNodes, node.modifiers) || + case 205: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 200: - return visitNodes(cbNodes, node.modifiers) || + case 208: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 201: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.exportName); - case 167: - return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 209: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.importClause) || + visitNode(cbNode, node.moduleSpecifier); + case 210: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.namedBindings); + case 211: + return visitNode(cbNode, node.name); + case 212: + case 216: + return visitNodes(cbNodes, node.elements); + case 215: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.exportClause) || + visitNode(cbNode, node.moduleSpecifier); + case 213: + case 217: + return visitNode(cbNode, node.propertyName) || + visitNode(cbNode, node.name); + case 214: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.type); case 171: + return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 176: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 124: + case 127: return visitNode(cbNode, node.expression); - case 205: + case 222: return visitNodes(cbNodes, node.types); - case 202: + case 177: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.typeArguments); + case 219: return visitNode(cbNode, node.expression); + case 218: + return visitNodes(cbNodes, node.decorators); } } ts.forEachChild = forEachChild; @@ -4256,7 +5504,7 @@ var ts; ParsingContext[ParsingContext["TypeMembers"] = 5] = "TypeMembers"; ParsingContext[ParsingContext["ClassMembers"] = 6] = "ClassMembers"; ParsingContext[ParsingContext["EnumMembers"] = 7] = "EnumMembers"; - ParsingContext[ParsingContext["TypeReferences"] = 8] = "TypeReferences"; + ParsingContext[ParsingContext["HeritageClauseElement"] = 8] = "HeritageClauseElement"; ParsingContext[ParsingContext["VariableDeclarations"] = 9] = "VariableDeclarations"; ParsingContext[ParsingContext["ObjectBindingElements"] = 10] = "ObjectBindingElements"; ParsingContext[ParsingContext["ArrayBindingElements"] = 11] = "ArrayBindingElements"; @@ -4268,7 +5516,8 @@ var ts; ParsingContext[ParsingContext["TypeArguments"] = 17] = "TypeArguments"; ParsingContext[ParsingContext["TupleElementTypes"] = 18] = "TupleElementTypes"; ParsingContext[ParsingContext["HeritageClauses"] = 19] = "HeritageClauses"; - ParsingContext[ParsingContext["Count"] = 20] = "Count"; + ParsingContext[ParsingContext["ImportOrExportSpecifiers"] = 20] = "ImportOrExportSpecifiers"; + ParsingContext[ParsingContext["Count"] = 21] = "Count"; })(ParsingContext || (ParsingContext = {})); var Tristate; (function (Tristate) { @@ -4286,7 +5535,7 @@ var ts; case 5: return ts.Diagnostics.Property_or_signature_expected; case 6: return ts.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; case 7: return ts.Diagnostics.Enum_member_expected; - case 8: return ts.Diagnostics.Type_reference_expected; + case 8: return ts.Diagnostics.Expression_expected; case 9: return ts.Diagnostics.Variable_declaration_expected; case 10: return ts.Diagnostics.Property_destructuring_pattern_expected; case 11: return ts.Diagnostics.Array_element_destructuring_pattern_expected; @@ -4298,23 +5547,29 @@ var ts; case 17: return ts.Diagnostics.Type_argument_expected; case 18: return ts.Diagnostics.Type_expected; case 19: return ts.Diagnostics.Unexpected_token_expected; + case 20: return ts.Diagnostics.Identifier_expected; } } ; function modifierToFlag(token) { switch (token) { - case 108: return 128; - case 107: return 16; - case 106: return 64; - case 105: return 32; - case 77: return 1; - case 113: return 2; - case 69: return 4096; + case 110: return 128; + case 109: return 16; + case 108: return 64; + case 107: return 32; + case 78: return 1; + case 115: return 2; + case 70: return 8192; + case 73: return 256; } return 0; } ts.modifierToFlag = modifierToFlag; function fixupParentReferences(sourceFile) { + // normally parent references are set during binding. However, for clients that only need + // a syntax tree, and no semantic features, then the binding process is an unnecessary + // overhead. This functions allows us to set all the parents, without all the expense of + // binding. var parent = sourceFile; forEachChild(sourceFile, visitNode); return; @@ -4332,7 +5587,7 @@ var ts; switch (node.kind) { case 8: case 7: - case 64: + case 65: return true; } return false; @@ -4362,8 +5617,9 @@ var ts; array._children = undefined; array.pos += delta; array.end += delta; - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } } } @@ -4425,8 +5681,9 @@ var ts; array.intersectsChange = true; array._children = undefined; adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } return; } @@ -4540,7 +5797,7 @@ var ts; } ts.updateSourceFile = updateSourceFile; function isEvalOrArgumentsIdentifier(node) { - return node.kind === 64 && + return node.kind === 65 && (node.text === "eval" || node.text === "arguments"); } ts.isEvalOrArgumentsIdentifier = isEvalOrArgumentsIdentifier; @@ -4622,12 +5879,13 @@ var ts; ts.createSourceFile = createSourceFile; function parseSourceFile(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes) { if (setParentNodes === void 0) { setParentNodes = false; } + var disallowInAndDecoratorContext = 2 | 16; var parsingContext = 0; var identifiers = {}; var identifierCount = 0; var nodeCount = 0; var token; - var sourceFile = createNode(210, 0); + var sourceFile = createNode(227, 0); sourceFile.pos = 0; sourceFile.end = sourceText.length; sourceFile.text = sourceText; @@ -4635,7 +5893,7 @@ var ts; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); - sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 1024 : 0; + sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 2048 : 0; var contextFlags = 0; var parseErrorBeforeNextFinishedNode = false; var scanner = ts.createScanner(languageVersion, true, sourceText, scanError); @@ -4673,6 +5931,19 @@ var ts; function setGeneratorParameterContext(val) { setContextFlag(val, 8); } + function setDecoratorContext(val) { + setContextFlag(val, 16); + } + function doOutsideOfContext(flags, func) { + var currentContextFlags = contextFlags & flags; + if (currentContextFlags) { + setContextFlag(false, currentContextFlags); + var result = func(); + setContextFlag(true, currentContextFlags); + return result; + } + return func(); + } function allowInAnd(func) { if (contextFlags & 2) { setDisallowInContext(false); @@ -4709,6 +5980,15 @@ var ts; } return func(); } + function doInDecoratorContext(func) { + if (contextFlags & 16) { + return func(); + } + setDecoratorContext(true); + var result = func(); + setDecoratorContext(false); + return result; + } function inYieldContext() { return (contextFlags & 4) !== 0; } @@ -4721,6 +6001,9 @@ var ts; function inDisallowInContext() { return (contextFlags & 2) !== 0; } + function inDecoratorContext() { + return (contextFlags & 16) !== 0; + } function parseErrorAtCurrentToken(message, arg0) { var start = scanner.getTokenPos(); var length = scanner.getTextPos() - start; @@ -4763,7 +6046,9 @@ var ts; var saveParseDiagnosticsLength = sourceFile.parseDiagnostics.length; var saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode; var saveContextFlags = contextFlags; - var result = isLookAhead ? scanner.lookAhead(callback) : scanner.tryScan(callback); + var result = isLookAhead + ? scanner.lookAhead(callback) + : scanner.tryScan(callback); ts.Debug.assert(saveContextFlags === contextFlags); if (!result || isLookAhead) { token = saveToken; @@ -4779,13 +6064,13 @@ var ts; return speculationHelper(callback, false); } function isIdentifier() { - if (token === 64) { + if (token === 65) { return true; } - if (token === 109 && inYieldContext()) { + if (token === 111 && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 109 : token > 100; + return inStrictModeContext() ? token > 111 : token > 101; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -4809,12 +6094,14 @@ var ts; } function parseOptionalToken(t) { if (token === t) { - var node = createNode(t); - nextToken(); - return finishNode(node); + return parseTokenNode(); } return undefined; } + function parseExpectedToken(t, reportAtCurrentPosition, diagnosticMessage, arg0) { + return parseOptionalToken(t) || + createMissingNode(t, reportAtCurrentPosition, diagnosticMessage, arg0); + } function parseTokenNode() { var node = createNode(token); nextToken(); @@ -4854,7 +6141,7 @@ var ts; } if (parseErrorBeforeNextFinishedNode) { parseErrorBeforeNextFinishedNode = false; - node.parserContextFlags |= 16; + node.parserContextFlags |= 32; } return node; } @@ -4876,12 +6163,12 @@ var ts; function createIdentifier(isIdentifier, diagnosticMessage) { identifierCount++; if (isIdentifier) { - var node = createNode(64); + var node = createNode(65); node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); } - return createMissingNode(64, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); + return createMissingNode(65, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); } function parseIdentifier(diagnosticMessage) { return createIdentifier(isIdentifier(), diagnosticMessage); @@ -4904,7 +6191,7 @@ var ts; return parseIdentifierName(); } function parseComputedPropertyName() { - var node = createNode(124); + var node = createNode(127); parseExpected(18); var yieldContext = inYieldContext(); if (inGeneratorParameterContext()) { @@ -4928,14 +6215,31 @@ var ts; return ts.isModifier(token) && tryParse(nextTokenCanFollowContextualModifier); } function nextTokenCanFollowContextualModifier() { - if (token === 69) { - return nextToken() === 76; + if (token === 70) { + return nextToken() === 77; + } + if (token === 78) { + nextToken(); + if (token === 73) { + return lookAhead(nextTokenIsClassOrFunction); + } + return token !== 35 && token !== 14 && canFollowModifier(); + } + if (token === 73) { + return nextTokenIsClassOrFunction(); } nextToken(); return canFollowModifier(); } function canFollowModifier() { - return token === 18 || token === 14 || token === 35 || isLiteralPropertyName(); + return token === 18 + || token === 14 + || token === 35 + || isLiteralPropertyName(); + } + function nextTokenIsClassOrFunction() { + nextToken(); + return token === 69 || token === 83; } function isListElement(parsingContext, inErrorRecovery) { var node = currentNode(parsingContext); @@ -4950,11 +6254,11 @@ var ts; case 4: return isStartOfStatement(inErrorRecovery); case 3: - return token === 66 || token === 72; + return token === 67 || token === 73; case 5: return isStartOfTypeMember(); case 6: - return lookAhead(isClassMemberStart); + return lookAhead(isClassMemberStart) || (token === 22 && !inErrorRecovery); case 7: return token === 18 || isLiteralPropertyName(); case 13: @@ -4962,7 +6266,15 @@ var ts; case 10: return isLiteralPropertyName(); case 8: - return isIdentifier() && !isNotHeritageClauseTypeName(); + if (token === 14) { + return lookAhead(isValidHeritageClauseObjectLiteral); + } + if (!inErrorRecovery) { + return isStartOfLeftHandSideExpression() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + else { + return isIdentifier() && !isHeritageClauseExtendsOrImplementsKeyword(); + } case 9: return isIdentifierOrPattern(); case 11: @@ -4979,20 +6291,34 @@ var ts; return token === 23 || isStartOfType(); case 19: return isHeritageClause(); + case 20: + return isIdentifierOrKeyword(); } ts.Debug.fail("Non-exhaustive case in 'isListElement'."); } + function isValidHeritageClauseObjectLiteral() { + ts.Debug.assert(token === 14); + if (nextToken() === 15) { + var next = nextToken(); + return next === 23 || next === 14 || next === 79 || next === 103; + } + return true; + } function nextTokenIsIdentifier() { nextToken(); return isIdentifier(); } - function isNotHeritageClauseTypeName() { - if (token === 101 || - token === 78) { - return lookAhead(nextTokenIsIdentifier); + function isHeritageClauseExtendsOrImplementsKeyword() { + if (token === 103 || + token === 79) { + return lookAhead(nextTokenIsStartOfExpression); } return false; } + function nextTokenIsStartOfExpression() { + nextToken(); + return isStartOfExpression(); + } function isListTerminator(kind) { if (token === 1) { return true; @@ -5006,15 +6332,16 @@ var ts; case 7: case 13: case 10: + case 20: return token === 15; case 4: - return token === 15 || token === 66 || token === 72; + return token === 15 || token === 67 || token === 73; case 8: - return token === 14 || token === 78 || token === 101; + return token === 14 || token === 79 || token === 103; case 9: return isVariableDeclaratorListTerminator(); case 16: - return token === 25 || token === 16 || token === 14 || token === 78 || token === 101; + return token === 25 || token === 16 || token === 14 || token === 79 || token === 103; case 12: return token === 17 || token === 22; case 14: @@ -5042,7 +6369,7 @@ var ts; return false; } function isInSomeParsingContext() { - for (var kind = 0; kind < 20; kind++) { + for (var kind = 0; kind < 21; kind++) { if (parsingContext & (1 << kind)) { if (isListElement(kind, true) || isListTerminator(kind)) { return true; @@ -5107,7 +6434,7 @@ var ts; if (ts.containsParseError(node)) { return undefined; } - var nodeContextFlags = node.parserContextFlags & 31; + var nodeContextFlags = node.parserContextFlags & 63; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -5141,24 +6468,26 @@ var ts; case 15: return isReusableParameter(node); case 19: - case 8: case 16: case 18: case 17: case 12: case 13: + case 8: } return false; } function isReusableModuleElement(node) { if (node) { switch (node.kind) { - case 200: + case 209: + case 208: + case 215: + case 214: case 201: - case 194: - case 195: - case 198: - case 197: + case 202: + case 205: + case 204: return true; } return isReusableStatement(node); @@ -5168,12 +6497,13 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 131: + case 135: + case 140: + case 134: case 136: - case 130: + case 137: case 132: - case 133: - case 128: + case 178: return true; } } @@ -5182,8 +6512,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 203: - case 204: + case 220: + case 221: return true; } } @@ -5192,56 +6522,56 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 193: - case 173: - case 172: - case 176: - case 175: - case 188: - case 184: - case 186: + case 200: + case 180: + case 179: case 183: case 182: - case 180: - case 181: - case 179: - case 178: - case 185: - case 174: + case 195: + case 191: + case 193: + case 190: case 189: case 187: - case 177: - case 190: + case 188: + case 186: + case 185: + case 192: + case 181: + case 196: + case 194: + case 184: + case 197: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 209; + return node.kind === 226; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 135: - case 129: - case 136: - case 127: - case 134: + case 139: + case 133: + case 140: + case 131: + case 138: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 191) { + if (node.kind !== 198) { return false; } var variableDeclarator = node; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 126) { + if (node.kind !== 129) { return false; } var parameter = node; @@ -5310,7 +6640,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(20)) { - var node = createNode(123, entity.pos); + var node = createNode(126, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -5321,13 +6651,13 @@ var ts; if (scanner.hasPrecedingLineBreak() && scanner.isReservedWord()) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { - return createMissingNode(64, true, ts.Diagnostics.Identifier_expected); + return createMissingNode(65, true, ts.Diagnostics.Identifier_expected); } } return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(167); + var template = createNode(171); template.head = parseLiteralNode(); ts.Debug.assert(template.head.kind === 11, "Template head has wrong token kind"); var templateSpans = []; @@ -5340,7 +6670,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(171); + var span = createNode(176); span.expression = allowInAnd(parseExpression); var literal; if (token === 15) { @@ -5348,7 +6678,7 @@ var ts; literal = parseLiteralNode(); } else { - literal = createMissingNode(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); + literal = parseExpectedToken(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); } span.literal = literal; return finishNode(span); @@ -5357,19 +6687,24 @@ var ts; var node = createNode(token); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; + if (scanner.hasExtendedUnicodeEscape()) { + node.hasExtendedUnicodeEscape = true; + } if (scanner.isUnterminated()) { node.isUnterminated = true; } var tokenPos = scanner.getTokenPos(); nextToken(); finishNode(node); - if (node.kind === 7 && sourceText.charCodeAt(tokenPos) === 48 && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { - node.flags |= 8192; + if (node.kind === 7 + && sourceText.charCodeAt(tokenPos) === 48 + && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { + node.flags |= 16384; } return node; } function parseTypeReference() { - var node = createNode(137); + var node = createNode(141); node.typeName = parseEntityName(false, ts.Diagnostics.Type_expected); if (!scanner.hasPrecedingLineBreak() && token === 24) { node.typeArguments = parseBracketedList(17, parseType, 24, 25); @@ -5377,15 +6712,15 @@ var ts; return finishNode(node); } function parseTypeQuery() { - var node = createNode(140); - parseExpected(96); + var node = createNode(144); + parseExpected(97); node.exprName = parseEntityName(true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(125); + var node = createNode(128); node.name = parseIdentifier(); - if (parseOptional(78)) { + if (parseOptional(79)) { if (isStartOfType() || !isStartOfExpression()) { node.constraint = parseType(); } @@ -5402,12 +6737,14 @@ var ts; } function parseParameterType() { if (parseOptional(51)) { - return token === 8 ? parseLiteralNode(true) : parseType(); + return token === 8 + ? parseLiteralNode(true) + : parseType(); } return undefined; } function isStartOfParameter() { - return token === 21 || isIdentifierOrPattern() || ts.isModifier(token); + return token === 21 || isIdentifierOrPattern() || ts.isModifier(token) || token === 52; } function setModifiers(node, modifiers) { if (modifiers) { @@ -5416,7 +6753,8 @@ var ts; } } function parseParameter() { - var node = createNode(126); + var node = createNode(129); + node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(21); node.name = inGeneratorParameterContext() ? doInYieldContext(parseIdentifierOrPattern) : parseIdentifierOrPattern(); @@ -5460,15 +6798,15 @@ var ts; return requireCompleteParameterList ? undefined : createMissingList(); } function parseTypeMemberSemicolon() { - if (parseSemicolon()) { + if (parseOptional(23)) { return; } - parseOptional(23); + parseSemicolon(); } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 135) { - parseExpected(87); + if (kind === 139) { + parseExpected(88); } fillSignature(51, false, false, node); parseTypeMemberSemicolon(); @@ -5506,9 +6844,9 @@ var ts; nextToken(); return token === 51 || token === 23 || token === 19; } - function parseIndexSignatureDeclaration(modifiers) { - var fullStart = modifiers ? modifiers.pos : scanner.getStartPos(); - var node = createNode(136, fullStart); + function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { + var node = createNode(140, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(15, parseParameter, 18, 19); node.type = parseTypeAnnotation(); @@ -5520,7 +6858,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (token === 16 || token === 24) { - var method = createNode(129, fullStart); + var method = createNode(133, fullStart); method.name = name; method.questionToken = questionToken; fillSignature(51, false, false, method); @@ -5528,7 +6866,7 @@ var ts; return finishNode(method); } else { - var property = createNode(127, fullStart); + var property = createNode(131, fullStart); property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); @@ -5570,12 +6908,14 @@ var ts; switch (token) { case 16: case 24: - return parseSignatureMember(134); + return parseSignatureMember(138); case 18: - return isIndexSignature() ? parseIndexSignatureDeclaration(undefined) : parsePropertyOrMethodSignature(); - case 87: + return isIndexSignature() + ? parseIndexSignatureDeclaration(scanner.getStartPos(), undefined, undefined) + : parsePropertyOrMethodSignature(); + case 88: if (lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(135); + return parseSignatureMember(139); } case 8: case 7: @@ -5593,15 +6933,19 @@ var ts; } } function parseIndexSignatureWithModifiers() { + var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - return isIndexSignature() ? parseIndexSignatureDeclaration(modifiers) : undefined; + return isIndexSignature() + ? parseIndexSignatureDeclaration(fullStart, decorators, modifiers) + : undefined; } function isStartOfConstructSignature() { nextToken(); return token === 16 || token === 24; } function parseTypeLiteral() { - var node = createNode(141); + var node = createNode(145); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -5617,12 +6961,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(143); + var node = createNode(147); node.elementTypes = parseBracketedList(18, parseType, 18, 19); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(145); + var node = createNode(149); parseExpected(16); node.type = parseType(); parseExpected(17); @@ -5630,8 +6974,8 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 139) { - parseExpected(87); + if (kind === 143) { + parseExpected(88); } fillSignature(32, false, false, node); return finishNode(node); @@ -5642,16 +6986,16 @@ var ts; } function parseNonArrayType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: + case 113: + case 122: var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); - case 98: + case 99: return parseTokenNode(); - case 96: + case 97: return parseTypeQuery(); case 14: return parseTypeLiteral(); @@ -5665,17 +7009,17 @@ var ts; } function isStartOfType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: - case 96: + case 113: + case 122: + case 99: + case 97: case 14: case 18: case 24: - case 87: + case 88: return true; case 16: return lookAhead(isStartOfParenthesizedOrFunctionType); @@ -5691,7 +7035,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(18)) { parseExpected(19); - var node = createNode(142, type.pos); + var node = createNode(146, type.pos); node.elementType = type; type = finishNode(node); } @@ -5706,7 +7050,7 @@ var ts; types.push(parseArrayTypeOrHigher()); } types.end = getNodeEnd(); - var node = createNode(144, type.pos); + var node = createNode(148, type.pos); node.types = types; type = finishNode(node); } @@ -5726,7 +7070,7 @@ var ts; if (isIdentifier() || ts.isModifier(token)) { nextToken(); if (token === 51 || token === 23 || - token === 50 || token === 52 || + token === 50 || token === 53 || isIdentifier() || ts.isModifier(token)) { return true; } @@ -5751,23 +7095,23 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(138); + return parseFunctionOrConstructorType(142); } - if (token === 87) { - return parseFunctionOrConstructorType(139); + if (token === 88) { + return parseFunctionOrConstructorType(143); } return parseUnionTypeOrHigher(); } function parseTypeAnnotation() { return parseOptional(51) ? parseType() : undefined; } - function isStartOfExpression() { + function isStartOfLeftHandSideExpression() { switch (token) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 7: case 8: case 10: @@ -5775,22 +7119,33 @@ var ts; case 16: case 18: case 14: - case 82: - case 87: + case 83: + case 69: + case 88: case 36: - case 56: + case 57: + case 65: + return true; + default: + return isIdentifier(); + } + } + function isStartOfExpression() { + if (isStartOfLeftHandSideExpression()) { + return true; + } + switch (token) { case 33: case 34: case 47: case 46: - case 73: - case 96: - case 98: + case 74: + case 97: + case 99: case 38: case 39: case 24: - case 64: - case 109: + case 111: return true; default: if (isBinaryOperator()) { @@ -5800,26 +7155,49 @@ var ts; } } function isStartOfExpressionStatement() { - return token !== 14 && token !== 82 && isStartOfExpression(); + return token !== 14 && + token !== 83 && + token !== 69 && + token !== 52 && + isStartOfExpression(); } function parseExpression() { + // Expression[in]: + // AssignmentExpression[in] + // Expression[in] , AssignmentExpression[in] + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var expr = parseAssignmentExpressionOrHigher(); var operatorToken; while ((operatorToken = parseOptionalToken(23))) { expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } + if (saveDecoratorContext) { + setDecoratorContext(true); + } return expr; } function parseInitializer(inParameter) { - if (token !== 52) { + if (token !== 53) { if (scanner.hasPrecedingLineBreak() || (inParameter && token === 14) || !isStartOfExpression()) { return undefined; } } - parseExpected(52); + parseExpected(53); return parseAssignmentExpressionOrHigher(); } function parseAssignmentExpressionOrHigher() { + // AssignmentExpression[in,yield]: + // 1) ConditionalExpression[?in,?yield] + // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield] + // 3) LeftHandSideExpression AssignmentOperator AssignmentExpression[?in,?yield] + // 4) ArrowFunctionExpression[?in,?yield] + // 5) [+Yield] YieldExpression[?In] + // + // Note: for ease of implementation we treat productions '2' and '3' as the same thing. + // (i.e. they're both BinaryExpressions with an assignment operator in it). if (isYieldExpression()) { return parseYieldExpression(); } @@ -5828,7 +7206,7 @@ var ts; return arrowExpression; } var expr = parseBinaryExpressionOrHigher(0); - if (expr.kind === 64 && token === 32) { + if (expr.kind === 65 && token === 32) { return parseSimpleArrowFunctionExpression(expr); } if (isLeftHandSideExpression(expr) && isAssignmentOperator(reScanGreaterToken())) { @@ -5837,7 +7215,7 @@ var ts; return parseConditionalExpressionRest(expr); } function isYieldExpression() { - if (token === 109) { + if (token === 111) { if (inYieldContext()) { return true; } @@ -5852,8 +7230,13 @@ var ts; nextToken(); return !scanner.hasPrecedingLineBreak() && isIdentifier(); } + function nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine() { + nextToken(); + return !scanner.hasPrecedingLineBreak() && + (isIdentifier() || token === 14 || token === 18); + } function parseYieldExpression() { - var node = createNode(168); + var node = createNode(172); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 35 || isStartOfExpression())) { @@ -5867,14 +7250,14 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 32, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(159, identifier.pos); - var parameter = createNode(126, identifier.pos); + var node = createNode(163, identifier.pos); + var parameter = createNode(129, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - parseExpected(32); + node.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(); return finishNode(node); } @@ -5883,16 +7266,17 @@ var ts; if (triState === 0) { return undefined; } - var arrowFunction = triState === 1 ? parseParenthesizedArrowFunctionExpressionHead(true) : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); + var arrowFunction = triState === 1 + ? parseParenthesizedArrowFunctionExpressionHead(true) + : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); if (!arrowFunction) { return undefined; } - if (parseExpected(32) || token === 14) { - arrowFunction.body = parseArrowFunctionExpressionBody(); - } - else { - arrowFunction.body = parseIdentifier(); - } + var lastToken = token; + arrowFunction.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); + arrowFunction.body = (lastToken === 32 || lastToken === 14) + ? parseArrowFunctionExpressionBody() + : parseIdentifier(); return finishNode(arrowFunction); } function isParenthesizedArrowFunctionExpression() { @@ -5942,7 +7326,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(159); + var node = createNode(163); fillSignature(51, false, !allowAmbiguity, node); if (!node.parameters) { return undefined; @@ -5956,19 +7340,24 @@ var ts; if (token === 14) { return parseFunctionBlock(false, false); } - if (isStartOfStatement(true) && !isStartOfExpressionStatement() && token !== 82) { + if (isStartOfStatement(true) && + !isStartOfExpressionStatement() && + token !== 83 && + token !== 69) { return parseFunctionBlock(false, true); } return parseAssignmentExpressionOrHigher(); } function parseConditionalExpressionRest(leftOperand) { - if (!parseOptional(50)) { + var questionToken = parseOptionalToken(50); + if (!questionToken) { return leftOperand; } - var node = createNode(166, leftOperand.pos); + var node = createNode(170, leftOperand.pos); node.condition = leftOperand; - node.whenTrue = allowInAnd(parseAssignmentExpressionOrHigher); - parseExpected(51); + node.questionToken = questionToken; + node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); + node.colonToken = parseExpectedToken(51, false, ts.Diagnostics._0_expected, ts.tokenToString(51)); node.whenFalse = parseAssignmentExpressionOrHigher(); return finishNode(node); } @@ -5977,7 +7366,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 85 || t === 122; + return t === 86 || t === 125; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -5986,7 +7375,7 @@ var ts; if (newPrecedence <= precedence) { break; } - if (token === 85 && inDisallowInContext()) { + if (token === 86 && inDisallowInContext()) { break; } leftOperand = makeBinaryExpression(leftOperand, parseTokenNode(), parseBinaryExpressionOrHigher(newPrecedence)); @@ -5994,7 +7383,7 @@ var ts; return leftOperand; } function isBinaryOperator() { - if (inDisallowInContext() && token === 85) { + if (inDisallowInContext() && token === 86) { return false; } return getBinaryOperatorPrecedence() > 0; @@ -6020,8 +7409,8 @@ var ts; case 25: case 26: case 27: + case 87: case 86: - case 85: return 7; case 40: case 41: @@ -6038,33 +7427,33 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(165, left.pos); + var node = createNode(169, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(163); + var node = createNode(167); node.operator = token; nextToken(); node.operand = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(160); + var node = createNode(164); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(161); + var node = createNode(165); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(162); + var node = createNode(166); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); @@ -6078,11 +7467,11 @@ var ts; case 38: case 39: return parsePrefixUnaryExpression(); - case 73: + case 74: return parseDeleteExpression(); - case 96: + case 97: return parseTypeOfExpression(); - case 98: + case 99: return parseVoidExpression(); case 24: return parseTypeAssertion(); @@ -6094,7 +7483,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(isLeftHandSideExpression(expression)); if ((token === 38 || token === 39) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(164, expression.pos); + var node = createNode(168, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -6103,7 +7492,9 @@ var ts; return expression; } function parseLeftHandSideExpressionOrHigher() { - var expression = token === 90 ? parseSuperExpression() : parseMemberExpressionOrHigher(); + var expression = token === 91 + ? parseSuperExpression() + : parseMemberExpressionOrHigher(); return parseCallExpressionRest(expression); } function parseMemberExpressionOrHigher() { @@ -6115,14 +7506,14 @@ var ts; if (token === 16 || token === 20) { return expression; } - var node = createNode(151, expression.pos); + var node = createNode(155, expression.pos); node.expression = expression; - parseExpected(20, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); + node.dotToken = parseExpectedToken(20, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); return finishNode(node); } function parseTypeAssertion() { - var node = createNode(156); + var node = createNode(160); parseExpected(24); node.type = parseType(); parseExpected(25); @@ -6131,16 +7522,17 @@ var ts; } function parseMemberExpressionRest(expression) { while (true) { - var dotOrBracketStart = scanner.getTokenPos(); - if (parseOptional(20)) { - var propertyAccess = createNode(151, expression.pos); + var dotToken = parseOptionalToken(20); + if (dotToken) { + var propertyAccess = createNode(155, expression.pos); propertyAccess.expression = expression; + propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); expression = finishNode(propertyAccess); continue; } - if (parseOptional(18)) { - var indexedAccess = createNode(152, expression.pos); + if (!inDecoratorContext() && parseOptional(18)) { + var indexedAccess = createNode(156, expression.pos); indexedAccess.expression = expression; if (token !== 19) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -6154,9 +7546,11 @@ var ts; continue; } if (token === 10 || token === 11) { - var tagExpression = createNode(155, expression.pos); + var tagExpression = createNode(159, expression.pos); tagExpression.tag = expression; - tagExpression.template = token === 10 ? parseLiteralNode() : parseTemplateExpression(); + tagExpression.template = token === 10 + ? parseLiteralNode() + : parseTemplateExpression(); expression = finishNode(tagExpression); continue; } @@ -6171,7 +7565,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -6179,7 +7573,7 @@ var ts; continue; } else if (token === 16) { - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -6202,7 +7596,9 @@ var ts; if (!parseExpected(25)) { return undefined; } - return typeArguments && canFollowTypeArgumentsInExpression() ? typeArguments : undefined; + return typeArguments && canFollowTypeArgumentsInExpression() + ? typeArguments + : undefined; } function canFollowTypeArgumentsInExpression() { switch (token) { @@ -6212,7 +7608,6 @@ var ts; case 19: case 51: case 22: - case 23: case 50: case 28: case 30: @@ -6226,6 +7621,8 @@ var ts; case 15: case 1: return true; + case 23: + case 14: default: return false; } @@ -6236,11 +7633,11 @@ var ts; case 8: case 10: return parseLiteralNode(); - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: return parseTokenNode(); case 16: return parseParenthesizedExpression(); @@ -6248,12 +7645,14 @@ var ts; return parseArrayLiteralExpression(); case 14: return parseObjectLiteralExpression(); - case 82: + case 69: + return parseClassExpression(); + case 83: return parseFunctionExpression(); - case 87: + case 88: return parseNewExpression(); case 36: - case 56: + case 57: if (reScanSlashToken() === 9) { return parseLiteralNode(); } @@ -6264,46 +7663,49 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(157); + var node = createNode(161); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); return finishNode(node); } function parseSpreadElement() { - var node = createNode(169); + var node = createNode(173); parseExpected(21); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { - return token === 21 ? parseSpreadElement() : token === 23 ? createNode(170) : parseAssignmentExpressionOrHigher(); + return token === 21 ? parseSpreadElement() : + token === 23 ? createNode(175) : + parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { - return allowInAnd(parseArgumentOrArrayLiteralElement); + return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(149); + var node = createNode(153); parseExpected(18); if (scanner.hasPrecedingLineBreak()) - node.flags |= 256; + node.flags |= 512; node.elements = parseDelimitedList(14, parseArgumentOrArrayLiteralElement); parseExpected(19); return finishNode(node); } - function tryParseAccessorDeclaration(fullStart, modifiers) { - if (parseContextualModifier(114)) { - return parseAccessorDeclaration(132, fullStart, modifiers); + function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { + if (parseContextualModifier(116)) { + return parseAccessorDeclaration(136, fullStart, decorators, modifiers); } - else if (parseContextualModifier(118)) { - return parseAccessorDeclaration(133, fullStart, modifiers); + else if (parseContextualModifier(120)) { + return parseAccessorDeclaration(137, fullStart, decorators, modifiers); } return undefined; } function parseObjectLiteralElement() { var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } @@ -6313,16 +7715,16 @@ var ts; var propertyName = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, propertyName, questionToken); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, propertyName, questionToken); } if ((token === 23 || token === 15) && tokenIsIdentifier) { - var shorthandDeclaration = createNode(208, fullStart); + var shorthandDeclaration = createNode(225, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(207, fullStart); + var propertyAssignment = createNode(224, fullStart); propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(51); @@ -6331,30 +7733,37 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(150); + var node = createNode(154); parseExpected(14); if (scanner.hasPrecedingLineBreak()) { - node.flags |= 256; + node.flags |= 512; } node.properties = parseDelimitedList(13, parseObjectLiteralElement, true); parseExpected(15); return finishNode(node); } function parseFunctionExpression() { - var node = createNode(158); - parseExpected(82); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var node = createNode(162); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); node.name = node.asteriskToken ? doInYieldContext(parseOptionalIdentifier) : parseOptionalIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlock(!!node.asteriskToken, false); + if (saveDecoratorContext) { + setDecoratorContext(true); + } return finishNode(node); } function parseOptionalIdentifier() { return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(154); - parseExpected(87); + var node = createNode(158); + parseExpected(88); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); if (node.typeArguments || token === 16) { @@ -6363,7 +7772,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, checkForStrictMode, diagnosticMessage) { - var node = createNode(172); + var node = createNode(179); if (parseExpected(14, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(2, checkForStrictMode, parseStatement); parseExpected(15); @@ -6376,30 +7785,37 @@ var ts; function parseFunctionBlock(allowYield, ignoreMissingOpenBrace, diagnosticMessage) { var savedYieldContext = inYieldContext(); setYieldContext(allowYield); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var block = parseBlock(ignoreMissingOpenBrace, true, diagnosticMessage); + if (saveDecoratorContext) { + setDecoratorContext(true); + } setYieldContext(savedYieldContext); return block; } function parseEmptyStatement() { - var node = createNode(174); + var node = createNode(181); parseExpected(22); return finishNode(node); } function parseIfStatement() { - var node = createNode(176); - parseExpected(83); + var node = createNode(183); + parseExpected(84); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); node.thenStatement = parseStatement(); - node.elseStatement = parseOptional(75) ? parseStatement() : undefined; + node.elseStatement = parseOptional(76) ? parseStatement() : undefined; return finishNode(node); } function parseDoStatement() { - var node = createNode(177); - parseExpected(74); + var node = createNode(184); + parseExpected(75); node.statement = parseStatement(); - parseExpected(99); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6407,8 +7823,8 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(178); - parseExpected(99); + var node = createNode(185); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6417,11 +7833,11 @@ var ts; } function parseForOrForInOrForOfStatement() { var pos = getNodePos(); - parseExpected(81); + parseExpected(82); parseExpected(16); var initializer = undefined; if (token !== 22) { - if (token === 97 || token === 103 || token === 69) { + if (token === 98 || token === 105 || token === 70) { initializer = parseVariableDeclarationList(true); } else { @@ -6429,22 +7845,22 @@ var ts; } } var forOrForInOrForOfStatement; - if (parseOptional(85)) { - var forInStatement = createNode(180, pos); + if (parseOptional(86)) { + var forInStatement = createNode(187, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(17); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(122)) { - var forOfStatement = createNode(181, pos); + else if (parseOptional(125)) { + var forOfStatement = createNode(188, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(17); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(179, pos); + var forStatement = createNode(186, pos); forStatement.initializer = initializer; parseExpected(22); if (token !== 22 && token !== 17) { @@ -6462,7 +7878,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 183 ? 65 : 70); + parseExpected(kind === 190 ? 66 : 71); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -6470,8 +7886,8 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(184); - parseExpected(89); + var node = createNode(191); + parseExpected(90); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); } @@ -6479,8 +7895,8 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(185); - parseExpected(100); + var node = createNode(192); + parseExpected(101); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6488,79 +7904,83 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(203); - parseExpected(66); + var node = createNode(220); + parseExpected(67); node.expression = allowInAnd(parseExpression); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseDefaultClause() { - var node = createNode(204); - parseExpected(72); + var node = createNode(221); + parseExpected(73); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseCaseOrDefaultClause() { - return token === 66 ? parseCaseClause() : parseDefaultClause(); + return token === 67 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(186); - parseExpected(91); + var node = createNode(193); + parseExpected(92); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); + var caseBlock = createNode(207, scanner.getStartPos()); parseExpected(14); - node.clauses = parseList(3, false, parseCaseOrDefaultClause); + caseBlock.clauses = parseList(3, false, parseCaseOrDefaultClause); parseExpected(15); + node.caseBlock = finishNode(caseBlock); return finishNode(node); } function parseThrowStatement() { - var node = createNode(188); - parseExpected(93); + // ThrowStatement[Yield] : + // throw [no LineTerminator here]Expression[In, ?Yield]; + var node = createNode(195); + parseExpected(94); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(189); - parseExpected(95); + var node = createNode(196); + parseExpected(96); node.tryBlock = parseBlock(false, false); - node.catchClause = token === 67 ? parseCatchClause() : undefined; - if (!node.catchClause || token === 80) { - parseExpected(80); + node.catchClause = token === 68 ? parseCatchClause() : undefined; + if (!node.catchClause || token === 81) { + parseExpected(81); node.finallyBlock = parseBlock(false, false); } return finishNode(node); } function parseCatchClause() { - var result = createNode(206); - parseExpected(67); - parseExpected(16); - result.name = parseIdentifier(); - result.type = parseTypeAnnotation(); + var result = createNode(223); + parseExpected(68); + if (parseExpected(16)) { + result.variableDeclaration = parseVariableDeclaration(); + } parseExpected(17); result.block = parseBlock(false, false); return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(190); - parseExpected(71); + var node = createNode(197); + parseExpected(72); parseSemicolon(); return finishNode(node); } function parseExpressionOrLabeledStatement() { var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); - if (expression.kind === 64 && parseOptional(51)) { - var labeledStatement = createNode(187, fullStart); + if (expression.kind === 65 && parseOptional(51)) { + var labeledStatement = createNode(194, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(175, fullStart); + var expressionStatement = createNode(182, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -6568,7 +7988,7 @@ var ts; } function isStartOfStatement(inErrorRecovery) { if (ts.isModifier(token)) { - var result = lookAhead(parseVariableStatementOrFunctionDeclarationWithModifiers); + var result = lookAhead(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return true; } @@ -6577,39 +7997,39 @@ var ts; case 22: return !inErrorRecovery; case 14: - case 97: - case 103: - case 82: + case 98: + case 105: case 83: - case 74: - case 99: - case 81: - case 70: - case 65: - case 89: - case 100: - case 91: - case 93: - case 95: - case 71: - case 67: - case 80: - return true; case 69: + case 84: + case 75: + case 100: + case 82: + case 71: + case 66: + case 90: + case 101: + case 92: + case 94: + case 96: + case 72: + case 68: + case 81: + return true; + case 70: var isConstEnum = lookAhead(nextTokenIsEnumKeyword); return !isConstEnum; - case 102: - case 68: - case 115: - case 76: - case 121: + case 104: + case 117: + case 77: + case 123: if (isDeclarationStart()) { return false; } + case 109: case 107: - case 105: - case 106: case 108: + case 110: if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) { return false; } @@ -6619,7 +8039,7 @@ var ts; } function nextTokenIsEnumKeyword() { nextToken(); - return token === 76; + return token === 77; } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); @@ -6629,46 +8049,48 @@ var ts; switch (token) { case 14: return parseBlock(false, false); - case 97: + case 98: + case 70: + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); + case 83: + return parseFunctionDeclaration(scanner.getStartPos(), undefined, undefined); case 69: - return parseVariableStatement(scanner.getStartPos(), undefined); - case 82: - return parseFunctionDeclaration(scanner.getStartPos(), undefined); + return parseClassDeclaration(scanner.getStartPos(), undefined, undefined); case 22: return parseEmptyStatement(); - case 83: + case 84: return parseIfStatement(); - case 74: + case 75: return parseDoStatement(); - case 99: - return parseWhileStatement(); - case 81: - return parseForOrForInOrForOfStatement(); - case 70: - return parseBreakOrContinueStatement(182); - case 65: - return parseBreakOrContinueStatement(183); - case 89: - return parseReturnStatement(); case 100: - return parseWithStatement(); - case 91: - return parseSwitchStatement(); - case 93: - return parseThrowStatement(); - case 95: - case 67: - case 80: - return parseTryStatement(); + return parseWhileStatement(); + case 82: + return parseForOrForInOrForOfStatement(); case 71: + return parseBreakOrContinueStatement(189); + case 66: + return parseBreakOrContinueStatement(190); + case 90: + return parseReturnStatement(); + case 101: + return parseWithStatement(); + case 92: + return parseSwitchStatement(); + case 94: + return parseThrowStatement(); + case 96: + case 68: + case 81: + return parseTryStatement(); + case 72: return parseDebuggerStatement(); - case 103: + case 105: if (isLetDeclaration()) { - return parseVariableStatement(scanner.getStartPos(), undefined); + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); } default: - if (ts.isModifier(token)) { - var result = tryParse(parseVariableStatementOrFunctionDeclarationWithModifiers); + if (ts.isModifier(token) || token === 52) { + var result = tryParse(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return result; } @@ -6676,25 +8098,28 @@ var ts; return parseExpressionOrLabeledStatement(); } } - function parseVariableStatementOrFunctionDeclarationWithModifiers() { + function parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers() { var start = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); switch (token) { - case 69: + case 70: var nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword); if (nextTokenIsEnum) { return undefined; } - return parseVariableStatement(start, modifiers); - case 103: + return parseVariableStatement(start, decorators, modifiers); + case 105: if (!isLetDeclaration()) { return undefined; } - return parseVariableStatement(start, modifiers); - case 97: - return parseVariableStatement(start, modifiers); - case 82: - return parseFunctionDeclaration(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); + case 98: + return parseVariableStatement(start, decorators, modifiers); + case 83: + return parseFunctionDeclaration(start, decorators, modifiers); + case 69: + return parseClassDeclaration(start, decorators, modifiers); } return undefined; } @@ -6707,18 +8132,18 @@ var ts; } function parseArrayBindingElement() { if (token === 23) { - return createNode(170); + return createNode(175); } - var node = createNode(148); + var node = createNode(152); node.dotDotDotToken = parseOptionalToken(21); node.name = parseIdentifierOrPattern(); node.initializer = parseInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(148); + var node = createNode(152); var id = parsePropertyName(); - if (id.kind === 64 && token !== 51) { + if (id.kind === 65 && token !== 51) { node.name = id; } else { @@ -6730,14 +8155,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(146); + var node = createNode(150); parseExpected(14); node.elements = parseDelimitedList(10, parseObjectBindingElement); parseExpected(15); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(147); + var node = createNode(151); parseExpected(18); node.elements = parseDelimitedList(11, parseArrayBindingElement); parseExpected(19); @@ -6756,7 +8181,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(191); + var node = createNode(198); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -6765,21 +8190,21 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(192); + var node = createNode(199); switch (token) { - case 97: + case 98: break; - case 103: - node.flags |= 2048; - break; - case 69: + case 105: node.flags |= 4096; break; + case 70: + node.flags |= 8192; + break; default: ts.Debug.fail(); } nextToken(); - if (token === 122 && lookAhead(canFollowContextualOfKeyword)) { + if (token === 125 && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -6793,33 +8218,37 @@ var ts; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 17; } - function parseVariableStatement(fullStart, modifiers) { - var node = createNode(173, fullStart); + function parseVariableStatement(fullStart, decorators, modifiers) { + var node = createNode(180, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); parseSemicolon(); return finishNode(node); } - function parseFunctionDeclaration(fullStart, modifiers) { - var node = createNode(193, fullStart); + function parseFunctionDeclaration(fullStart, decorators, modifiers) { + var node = createNode(200, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(82); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); - node.name = parseIdentifier(); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlockOrSemicolon(!!node.asteriskToken, ts.Diagnostics.or_expected); return finishNode(node); } - function parseConstructorDeclaration(pos, modifiers) { - var node = createNode(131, pos); + function parseConstructorDeclaration(pos, decorators, modifiers) { + var node = createNode(135, pos); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(112); + parseExpected(114); fillSignature(51, false, false, node); node.body = parseFunctionBlockOrSemicolon(false, ts.Diagnostics.or_expected); return finishNode(node); } - function parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(130, fullStart); + function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { + var method = createNode(134, fullStart); + method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; method.name = name; @@ -6828,29 +8257,34 @@ var ts; method.body = parseFunctionBlockOrSemicolon(!!asteriskToken, diagnosticMessage); return finishNode(method); } - function parsePropertyOrMethodDeclaration(fullStart, modifiers) { + function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { + var property = createNode(132, fullStart); + property.decorators = decorators; + setModifiers(property, modifiers); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + property.initializer = allowInAnd(parseNonParameterInitializer); + parseSemicolon(); + return finishNode(property); + } + function parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers) { var asteriskToken = parseOptionalToken(35); var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); } else { - var property = createNode(128, fullStart); - setModifiers(property, modifiers); - property.name = name; - property.questionToken = questionToken; - property.type = parseTypeAnnotation(); - property.initializer = allowInAnd(parseNonParameterInitializer); - parseSemicolon(); - return finishNode(property); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken); } } function parseNonParameterInitializer() { return parseInitializer(false); } - function parseAccessorDeclaration(kind, fullStart, modifiers) { + function parseAccessorDeclaration(kind, fullStart, decorators, modifiers) { var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parsePropertyName(); fillSignature(51, false, false, node); @@ -6859,6 +8293,9 @@ var ts; } function isClassMemberStart() { var idToken; + if (token === 52) { + return true; + } while (ts.isModifier(token)) { idToken = token; nextToken(); @@ -6874,14 +8311,14 @@ var ts; return true; } if (idToken !== undefined) { - if (!ts.isKeyword(idToken) || idToken === 118 || idToken === 114) { + if (!ts.isKeyword(idToken) || idToken === 120 || idToken === 116) { return true; } switch (token) { case 16: case 24: case 51: - case 52: + case 53: case 50: return true; default: @@ -6890,6 +8327,26 @@ var ts; } return false; } + function parseDecorators() { + var decorators; + while (true) { + var decoratorStart = getNodePos(); + if (!parseOptional(52)) { + break; + } + if (!decorators) { + decorators = []; + decorators.pos = scanner.getStartPos(); + } + var decorator = createNode(130, decoratorStart); + decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); + decorators.push(finishNode(decorator)); + } + if (decorators) { + decorators.end = getNodeEnd(); + } + return decorators; + } function parseModifiers() { var flags = 0; var modifiers; @@ -6913,46 +8370,76 @@ var ts; return modifiers; } function parseClassElement() { + if (token === 22) { + var result = createNode(178); + nextToken(); + return finishNode(result); + } var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } - if (token === 112) { - return parseConstructorDeclaration(fullStart, modifiers); + if (token === 114) { + return parseConstructorDeclaration(fullStart, decorators, modifiers); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(modifiers); + return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } if (isIdentifierOrKeyword() || token === 8 || token === 7 || token === 35 || token === 18) { - return parsePropertyOrMethodDeclaration(fullStart, modifiers); + return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); + } + if (decorators) { + var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined); } ts.Debug.fail("Should not have attempted to parse class member declaration."); } - function parseClassDeclaration(fullStart, modifiers) { - var node = createNode(194, fullStart); + function parseClassExpression() { + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 174); + } + function parseClassDeclaration(fullStart, decorators, modifiers) { + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 201); + } + function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { + var savedStrictModeContext = inStrictModeContext(); + if (languageVersion >= 2) { + setStrictModeContext(true); + } + var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(68); - node.name = parseIdentifier(); + parseExpected(69); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(true); if (parseExpected(14)) { - node.members = inGeneratorParameterContext() ? doOutsideOfYieldContext(parseClassMembers) : parseClassMembers(); + node.members = inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseClassMembers) + : parseClassMembers(); parseExpected(15); } else { node.members = createMissingList(); } - return finishNode(node); + var finishedNode = finishNode(node); + setStrictModeContext(savedStrictModeContext); + return finishedNode; } function parseHeritageClauses(isClassHeritageClause) { + // ClassTail[Yield,GeneratorParameter] : See 14.5 + // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } + // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } if (isHeritageClause()) { - return isClassHeritageClause && inGeneratorParameterContext() ? doOutsideOfYieldContext(parseHeritageClausesWorker) : parseHeritageClausesWorker(); + return isClassHeritageClause && inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseHeritageClausesWorker) + : parseHeritageClausesWorker(); } return undefined; } @@ -6960,51 +8447,62 @@ var ts; return parseList(19, false, parseHeritageClause); } function parseHeritageClause() { - if (token === 78 || token === 101) { - var node = createNode(205); + if (token === 79 || token === 103) { + var node = createNode(222); node.token = token; nextToken(); - node.types = parseDelimitedList(8, parseTypeReference); + node.types = parseDelimitedList(8, parseHeritageClauseElement); return finishNode(node); } return undefined; } + function parseHeritageClauseElement() { + var node = createNode(177); + node.expression = parseLeftHandSideExpressionOrHigher(); + if (token === 24) { + node.typeArguments = parseBracketedList(17, parseType, 24, 25); + } + return finishNode(node); + } function isHeritageClause() { - return token === 78 || token === 101; + return token === 79 || token === 103; } function parseClassMembers() { return parseList(6, false, parseClassElement); } - function parseInterfaceDeclaration(fullStart, modifiers) { - var node = createNode(195, fullStart); + function parseInterfaceDeclaration(fullStart, decorators, modifiers) { + var node = createNode(202, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(102); + parseExpected(104); node.name = parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(false); node.members = parseObjectTypeMembers(); return finishNode(node); } - function parseTypeAliasDeclaration(fullStart, modifiers) { - var node = createNode(196, fullStart); + function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { + var node = createNode(203, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(121); + parseExpected(123); node.name = parseIdentifier(); - parseExpected(52); + parseExpected(53); node.type = parseType(); parseSemicolon(); return finishNode(node); } function parseEnumMember() { - var node = createNode(209, scanner.getStartPos()); + var node = createNode(226, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } - function parseEnumDeclaration(fullStart, modifiers) { - var node = createNode(197, fullStart); + function parseEnumDeclaration(fullStart, decorators, modifiers) { + var node = createNode(204, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(76); + parseExpected(77); node.name = parseIdentifier(); if (parseExpected(14)) { node.members = parseDelimitedList(7, parseEnumMember); @@ -7016,7 +8514,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(199, scanner.getStartPos()); + var node = createNode(206, scanner.getStartPos()); if (parseExpected(14)) { node.statements = parseList(1, false, parseModuleElement); parseExpected(15); @@ -7026,94 +8524,221 @@ var ts; } return finishNode(node); } - function parseInternalModuleTail(fullStart, modifiers, flags) { - var node = createNode(198, fullStart); + function parseInternalModuleTail(fullStart, decorators, modifiers, flags) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); - node.body = parseOptional(20) ? parseInternalModuleTail(getNodePos(), undefined, 1) : parseModuleBlock(); + node.body = parseOptional(20) + ? parseInternalModuleTail(getNodePos(), undefined, undefined, 1) + : parseModuleBlock(); return finishNode(node); } - function parseAmbientExternalModuleDeclaration(fullStart, modifiers) { - var node = createNode(198, fullStart); + function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(true); node.body = parseModuleBlock(); return finishNode(node); } - function parseModuleDeclaration(fullStart, modifiers) { - parseExpected(115); - return token === 8 ? parseAmbientExternalModuleDeclaration(fullStart, modifiers) : parseInternalModuleTail(fullStart, modifiers, modifiers ? modifiers.flags : 0); + function parseModuleDeclaration(fullStart, decorators, modifiers) { + parseExpected(117); + return token === 8 + ? parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) + : parseInternalModuleTail(fullStart, decorators, modifiers, modifiers ? modifiers.flags : 0); } function isExternalModuleReference() { - return token === 116 && + return token === 118 && lookAhead(nextTokenIsOpenParen); } function nextTokenIsOpenParen() { return nextToken() === 16; } - function parseImportDeclaration(fullStart, modifiers) { - var node = createNode(200, fullStart); - setModifiers(node, modifiers); - parseExpected(84); - node.name = parseIdentifier(); - parseExpected(52); - node.moduleReference = parseModuleReference(); + function nextTokenIsCommaOrFromKeyword() { + nextToken(); + return token === 23 || + token === 124; + } + function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { + parseExpected(85); + var afterImportPos = scanner.getStartPos(); + var identifier; + if (isIdentifier()) { + identifier = parseIdentifier(); + if (token !== 23 && token !== 124) { + var importEqualsDeclaration = createNode(208, fullStart); + importEqualsDeclaration.decorators = decorators; + setModifiers(importEqualsDeclaration, modifiers); + importEqualsDeclaration.name = identifier; + parseExpected(53); + importEqualsDeclaration.moduleReference = parseModuleReference(); + parseSemicolon(); + return finishNode(importEqualsDeclaration); + } + } + var importDeclaration = createNode(209, fullStart); + importDeclaration.decorators = decorators; + setModifiers(importDeclaration, modifiers); + if (identifier || + token === 35 || + token === 14) { + importDeclaration.importClause = parseImportClause(identifier, afterImportPos); + parseExpected(124); + } + importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); - return finishNode(node); + return finishNode(importDeclaration); + } + function parseImportClause(identifier, fullStart) { + //ImportClause: + // ImportedDefaultBinding + // NameSpaceImport + // NamedImports + // ImportedDefaultBinding, NameSpaceImport + // ImportedDefaultBinding, NamedImports + var importClause = createNode(210, fullStart); + if (identifier) { + importClause.name = identifier; + } + if (!importClause.name || + parseOptional(23)) { + importClause.namedBindings = token === 35 ? parseNamespaceImport() : parseNamedImportsOrExports(212); + } + return finishNode(importClause); } function parseModuleReference() { - return isExternalModuleReference() ? parseExternalModuleReference() : parseEntityName(false); + return isExternalModuleReference() + ? parseExternalModuleReference() + : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(202); - parseExpected(116); + var node = createNode(219); + parseExpected(118); parseExpected(16); - node.expression = parseExpression(); - if (node.expression.kind === 8) { - internIdentifier(node.expression.text); - } + node.expression = parseModuleSpecifier(); parseExpected(17); return finishNode(node); } - function parseExportAssignmentTail(fullStart, modifiers) { - var node = createNode(201, fullStart); + function parseModuleSpecifier() { + var result = parseExpression(); + if (result.kind === 8) { + internIdentifier(result.text); + } + return result; + } + function parseNamespaceImport() { + var namespaceImport = createNode(211); + parseExpected(35); + parseExpected(102); + namespaceImport.name = parseIdentifier(); + return finishNode(namespaceImport); + } + function parseNamedImportsOrExports(kind) { + var node = createNode(kind); + node.elements = parseBracketedList(20, kind === 212 ? parseImportSpecifier : parseExportSpecifier, 14, 15); + return finishNode(node); + } + function parseExportSpecifier() { + return parseImportOrExportSpecifier(217); + } + function parseImportSpecifier() { + return parseImportOrExportSpecifier(213); + } + function parseImportOrExportSpecifier(kind) { + var node = createNode(kind); + var checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + var checkIdentifierStart = scanner.getTokenPos(); + var checkIdentifierEnd = scanner.getTextPos(); + var identifierName = parseIdentifierName(); + if (token === 102) { + node.propertyName = identifierName; + parseExpected(102); + checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + checkIdentifierStart = scanner.getTokenPos(); + checkIdentifierEnd = scanner.getTextPos(); + node.name = parseIdentifierName(); + } + else { + node.name = identifierName; + } + if (kind === 213 && checkIdentifierIsKeyword) { + parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); + } + return finishNode(node); + } + function parseExportDeclaration(fullStart, decorators, modifiers) { + var node = createNode(215, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - node.exportName = parseIdentifier(); + if (parseOptional(35)) { + parseExpected(124); + node.moduleSpecifier = parseModuleSpecifier(); + } + else { + node.exportClause = parseNamedImportsOrExports(216); + if (parseOptional(124)) { + node.moduleSpecifier = parseModuleSpecifier(); + } + } + parseSemicolon(); + return finishNode(node); + } + function parseExportAssignment(fullStart, decorators, modifiers) { + var node = createNode(214, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + if (parseOptional(53)) { + node.isExportEquals = true; + node.expression = parseAssignmentExpressionOrHigher(); + } + else { + parseExpected(73); + if (parseOptional(51)) { + node.type = parseType(); + } + else { + node.expression = parseAssignmentExpressionOrHigher(); + } + } parseSemicolon(); return finishNode(node); } function isLetDeclaration() { - return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOnSameLine); + return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine); } - function isDeclarationStart() { + function isDeclarationStart(followsModifier) { switch (token) { - case 97: - case 69: - case 82: + case 98: + case 70: + case 83: return true; - case 103: - return isLetDeclaration(); - case 68: - case 102: - case 76: - case 84: - case 121: - return lookAhead(nextTokenIsIdentifierOrKeyword); - case 115: - return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); - case 77: - return lookAhead(nextTokenIsEqualsTokenOrDeclarationStart); - case 113: - case 107: case 105: - case 106: + return isLetDeclaration(); + case 69: + case 104: + case 77: + case 123: + return lookAhead(nextTokenIsIdentifierOrKeyword); + case 85: + return lookAhead(nextTokenCanFollowImportKeyword); + case 117: + return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); + case 78: + return lookAhead(nextTokenCanFollowExportKeyword); + case 115: + case 109: + case 107: case 108: + case 110: return lookAhead(nextTokenIsDeclarationStart); + case 52: + return !followsModifier; } } function isIdentifierOrKeyword() { - return token >= 64; + return token >= 65; } function nextTokenIsIdentifierOrKeyword() { nextToken(); @@ -7123,43 +8748,63 @@ var ts; nextToken(); return isIdentifierOrKeyword() || token === 8; } - function nextTokenIsEqualsTokenOrDeclarationStart() { + function nextTokenCanFollowImportKeyword() { nextToken(); - return token === 52 || isDeclarationStart(); + return isIdentifierOrKeyword() || token === 8 || + token === 35 || token === 14; + } + function nextTokenCanFollowExportKeyword() { + nextToken(); + return token === 53 || token === 35 || + token === 14 || token === 73 || isDeclarationStart(true); } function nextTokenIsDeclarationStart() { nextToken(); - return isDeclarationStart(); + return isDeclarationStart(true); + } + function nextTokenIsAsKeyword() { + return nextToken() === 102; } function parseDeclaration() { var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - if (token === 77) { + if (token === 78) { nextToken(); - if (parseOptional(52)) { - return parseExportAssignmentTail(fullStart, modifiers); + if (token === 73 || token === 53) { + return parseExportAssignment(fullStart, decorators, modifiers); + } + if (token === 35 || token === 14) { + return parseExportDeclaration(fullStart, decorators, modifiers); } } switch (token) { - case 97: - case 103: + case 98: + case 105: + case 70: + return parseVariableStatement(fullStart, decorators, modifiers); + case 83: + return parseFunctionDeclaration(fullStart, decorators, modifiers); case 69: - return parseVariableStatement(fullStart, modifiers); - case 82: - return parseFunctionDeclaration(fullStart, modifiers); - case 68: - return parseClassDeclaration(fullStart, modifiers); - case 102: - return parseInterfaceDeclaration(fullStart, modifiers); - case 121: - return parseTypeAliasDeclaration(fullStart, modifiers); - case 76: - return parseEnumDeclaration(fullStart, modifiers); - case 115: - return parseModuleDeclaration(fullStart, modifiers); - case 84: - return parseImportDeclaration(fullStart, modifiers); + return parseClassDeclaration(fullStart, decorators, modifiers); + case 104: + return parseInterfaceDeclaration(fullStart, decorators, modifiers); + case 123: + return parseTypeAliasDeclaration(fullStart, decorators, modifiers); + case 77: + return parseEnumDeclaration(fullStart, decorators, modifiers); + case 117: + return parseModuleDeclaration(fullStart, decorators, modifiers); + case 85: + return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); default: + if (decorators) { + var node = createMissingNode(218, true, ts.Diagnostics.Declaration_expected); + node.pos = fullStart; + node.decorators = decorators; + setModifiers(node, modifiers); + return finishNode(node); + } ts.Debug.fail("Mismatch between isDeclarationStart and parseDeclaration"); } } @@ -7173,7 +8818,9 @@ var ts; return parseSourceElementOrModuleElement(); } function parseSourceElementOrModuleElement() { - return isDeclarationStart() ? parseDeclaration() : parseStatement(); + return isDeclarationStart() + ? parseDeclaration() + : parseStatement(); } function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, false, sourceText); @@ -7231,33 +8878,40 @@ var ts; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { - return node.flags & 1 || node.kind === 200 && node.moduleReference.kind === 202 || node.kind === 201 ? node : undefined; + return node.flags & 1 + || node.kind === 208 && node.moduleReference.kind === 219 + || node.kind === 209 + || node.kind === 214 + || node.kind === 215 + ? node + : undefined; }); } } function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 151: - case 152: - case 154: - case 153: case 155: - case 149: - case 157: - case 150: + case 156: case 158: - case 64: + case 157: + case 159: + case 153: + case 161: + case 154: + case 174: + case 162: + case 65: case 9: case 7: case 8: case 10: - case 167: - case 79: - case 88: - case 92: - case 94: - case 90: + case 171: + case 80: + case 89: + case 93: + case 95: + case 91: return true; } } @@ -7265,459 +8919,30 @@ var ts; } ts.isLeftHandSideExpression = isLeftHandSideExpression; function isAssignmentOperator(token) { - return token >= 52 && token <= 63; + return token >= 53 && token <= 64; } ts.isAssignmentOperator = isAssignmentOperator; })(ts || (ts = {})); -var ts; -(function (ts) { - ts.bindTime = 0; - (function (ModuleInstanceState) { - ModuleInstanceState[ModuleInstanceState["NonInstantiated"] = 0] = "NonInstantiated"; - ModuleInstanceState[ModuleInstanceState["Instantiated"] = 1] = "Instantiated"; - ModuleInstanceState[ModuleInstanceState["ConstEnumOnly"] = 2] = "ConstEnumOnly"; - })(ts.ModuleInstanceState || (ts.ModuleInstanceState = {})); - var ModuleInstanceState = ts.ModuleInstanceState; - function getModuleInstanceState(node) { - if (node.kind === 195 || node.kind === 196) { - return 0; - } - else if (ts.isConstEnumDeclaration(node)) { - return 2; - } - else if (node.kind === 200 && !(node.flags & 1)) { - return 0; - } - else if (node.kind === 199) { - var state = 0; - ts.forEachChild(node, function (n) { - switch (getModuleInstanceState(n)) { - case 0: - return false; - case 2: - state = 2; - return false; - case 1: - state = 1; - return true; - } - }); - return state; - } - else if (node.kind === 198) { - return getModuleInstanceState(node.body); - } - else { - return 1; - } - } - ts.getModuleInstanceState = getModuleInstanceState; - function bindSourceFile(file) { - var start = new Date().getTime(); - bindSourceFileWorker(file); - ts.bindTime += new Date().getTime() - start; - } - ts.bindSourceFile = bindSourceFile; - function bindSourceFileWorker(file) { - var parent; - var container; - var blockScopeContainer; - var lastContainer; - var symbolCount = 0; - var Symbol = ts.objectAllocator.getSymbolConstructor(); - if (!file.locals) { - file.locals = {}; - container = blockScopeContainer = file; - bind(file); - file.symbolCount = symbolCount; - } - function createSymbol(flags, name) { - symbolCount++; - return new Symbol(flags, name); - } - function addDeclarationToSymbol(symbol, node, symbolKind) { - symbol.flags |= symbolKind; - if (!symbol.declarations) - symbol.declarations = []; - symbol.declarations.push(node); - if (symbolKind & 1952 && !symbol.exports) - symbol.exports = {}; - if (symbolKind & 6240 && !symbol.members) - symbol.members = {}; - node.symbol = symbol; - if (symbolKind & 107455 && !symbol.valueDeclaration) - symbol.valueDeclaration = node; - } - function getDeclarationName(node) { - if (node.name) { - if (node.kind === 198 && node.name.kind === 8) { - return '"' + node.name.text + '"'; - } - if (node.name.kind === 124) { - var nameExpression = node.name.expression; - ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); - return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); - } - return node.name.text; - } - switch (node.kind) { - case 139: - case 131: - return "__constructor"; - case 138: - case 134: - return "__call"; - case 135: - return "__new"; - case 136: - return "__index"; - } - } - function getDisplayName(node) { - return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); - } - function declareSymbol(symbols, parent, node, includes, excludes) { - ts.Debug.assert(!ts.hasDynamicName(node)); - var name = getDeclarationName(node); - if (name !== undefined) { - var symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); - if (symbol.flags & excludes) { - if (node.name) { - node.name.parent = node; - } - var message = symbol.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; - ts.forEach(symbol.declarations, function (declaration) { - file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name, message, getDisplayName(declaration))); - }); - file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name, message, getDisplayName(node))); - symbol = createSymbol(0, name); - } - } - else { - symbol = createSymbol(0, "__missing"); - } - addDeclarationToSymbol(symbol, node, includes); - symbol.parent = parent; - if (node.kind === 194 && symbol.exports) { - var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); - if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { - if (node.name) { - node.name.parent = node; - } - file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); - } - symbol.exports[prototypeSymbol.name] = prototypeSymbol; - prototypeSymbol.parent = symbol; - } - return symbol; - } - function isAmbientContext(node) { - while (node) { - if (node.flags & 2) - return true; - node = node.parent; - } - return false; - } - function declareModuleMember(node, symbolKind, symbolExcludes) { - var exportKind = 0; - if (symbolKind & 107455) { - exportKind |= 1048576; - } - if (symbolKind & 793056) { - exportKind |= 2097152; - } - if (symbolKind & 1536) { - exportKind |= 4194304; - } - if (ts.getCombinedNodeFlags(node) & 1 || (node.kind !== 200 && isAmbientContext(container))) { - if (exportKind) { - var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); - local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - node.localSymbol = local; - } - else { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - } - } - else { - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - } - } - function bindChildren(node, symbolKind, isBlockScopeContainer) { - if (symbolKind & 255504) { - node.locals = {}; - } - var saveParent = parent; - var saveContainer = container; - var savedBlockScopeContainer = blockScopeContainer; - parent = node; - if (symbolKind & 262128) { - container = node; - if (lastContainer) { - lastContainer.nextContainer = container; - } - lastContainer = container; - } - if (isBlockScopeContainer) { - blockScopeContainer = node; - } - ts.forEachChild(node, bind); - container = saveContainer; - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - switch (container.kind) { - case 198: - declareModuleMember(node, symbolKind, symbolExcludes); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, symbolKind, symbolExcludes); - break; - } - case 138: - case 139: - case 134: - case 135: - case 136: - case 130: - case 129: - case 131: - case 132: - case 133: - case 193: - case 158: - case 159: - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - break; - case 194: - if (node.flags & 128) { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - case 141: - case 150: - case 195: - declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); - break; - case 197: - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindModuleDeclaration(node) { - if (node.name.kind === 8) { - bindDeclaration(node, 512, 106639, true); - } - else { - var state = getModuleInstanceState(node); - if (state === 0) { - bindDeclaration(node, 1024, 0, true); - } - else { - bindDeclaration(node, 512, 106639, true); - if (state === 2) { - node.symbol.constEnumOnlyModule = true; - } - else if (node.symbol.constEnumOnlyModule) { - node.symbol.constEnumOnlyModule = false; - } - } - } - } - function bindFunctionOrConstructorType(node) { - var symbol = createSymbol(131072, getDeclarationName(node)); - addDeclarationToSymbol(symbol, node, 131072); - bindChildren(node, 131072, false); - var typeLiteralSymbol = createSymbol(2048, "__type"); - addDeclarationToSymbol(typeLiteralSymbol, node, 2048); - typeLiteralSymbol.members = {}; - typeLiteralSymbol.members[node.kind === 138 ? "__call" : "__new"] = symbol; - } - function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { - var symbol = createSymbol(symbolKind, name); - addDeclarationToSymbol(symbol, node, symbolKind); - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindCatchVariableDeclaration(node) { - var symbol = createSymbol(1, node.name.text || "__missing"); - addDeclarationToSymbol(symbol, node, 1); - var saveParent = parent; - var savedBlockScopeContainer = blockScopeContainer; - parent = blockScopeContainer = node; - ts.forEachChild(node, bind); - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindBlockScopedVariableDeclaration(node) { - switch (blockScopeContainer.kind) { - case 198: - declareModuleMember(node, 2, 107455); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, 2, 107455); - break; - } - default: - if (!blockScopeContainer.locals) { - blockScopeContainer.locals = {}; - } - declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); - } - bindChildren(node, 2, false); - } - function getDestructuringParameterName(node) { - return "__" + ts.indexOf(node.parent.parameters, node); - } - function bind(node) { - node.parent = parent; - switch (node.kind) { - case 125: - bindDeclaration(node, 262144, 530912, false); - break; - case 126: - bindParameter(node); - break; - case 191: - case 148: - if (ts.isBindingPattern(node.name)) { - bindChildren(node, 0, false); - } - else if (ts.getCombinedNodeFlags(node) & 6144) { - bindBlockScopedVariableDeclaration(node); - } - else { - bindDeclaration(node, 1, 107454, false); - } - break; - case 128: - case 127: - bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); - break; - case 207: - case 208: - bindPropertyOrMethodOrAccessor(node, 4, 107455, false); - break; - case 209: - bindPropertyOrMethodOrAccessor(node, 8, 107455, false); - break; - case 134: - case 135: - case 136: - bindDeclaration(node, 131072, 0, false); - break; - case 130: - case 129: - bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); - break; - case 193: - bindDeclaration(node, 16, 106927, true); - break; - case 131: - bindDeclaration(node, 16384, 0, true); - break; - case 132: - bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); - break; - case 133: - bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); - break; - case 138: - case 139: - bindFunctionOrConstructorType(node); - break; - case 141: - bindAnonymousDeclaration(node, 2048, "__type", false); - break; - case 150: - bindAnonymousDeclaration(node, 4096, "__object", false); - break; - case 158: - case 159: - bindAnonymousDeclaration(node, 16, "__function", true); - break; - case 206: - bindCatchVariableDeclaration(node); - break; - case 194: - bindDeclaration(node, 32, 899583, false); - break; - case 195: - bindDeclaration(node, 64, 792992, false); - break; - case 196: - bindDeclaration(node, 524288, 793056, false); - break; - case 197: - if (ts.isConst(node)) { - bindDeclaration(node, 128, 899967, false); - } - else { - bindDeclaration(node, 256, 899327, false); - } - break; - case 198: - bindModuleDeclaration(node); - break; - case 200: - bindDeclaration(node, 8388608, 8388608, false); - break; - case 210: - if (ts.isExternalModule(node)) { - bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); - break; - } - case 172: - bindChildren(node, 0, !ts.isAnyFunction(node.parent)); - break; - case 206: - case 179: - case 180: - case 181: - case 186: - bindChildren(node, 0, true); - break; - default: - var saveParent = parent; - parent = node; - ts.forEachChild(node, bind); - parent = saveParent; - } - } - function bindParameter(node) { - if (ts.isBindingPattern(node.name)) { - bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); - } - else { - bindDeclaration(node, 1, 107455, false); - } - if (node.flags & 112 && - node.parent.kind === 131 && - node.parent.parent.kind === 194) { - var classDeclaration = node.parent.parent; - declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); - } - } - function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - if (ts.hasDynamicName(node)) { - bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); - } - else { - bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); - } - } - } -})(ts || (ts = {})); +/// var ts; (function (ts) { var nextSymbolId = 1; var nextNodeId = 1; var nextMergeId = 1; + function getNodeId(node) { + if (!node.id) + node.id = nextNodeId++; + return node.id; + } + ts.getNodeId = getNodeId; ts.checkTime = 0; + function getSymbolId(symbol) { + if (!symbol.id) { + symbol.id = nextSymbolId++; + } + return symbol.id; + } + ts.getSymbolId = getSymbolId; function createTypeChecker(host, produceDiagnostics) { var Symbol = ts.objectAllocator.getSymbolConstructor(); var Type = ts.objectAllocator.getTypeConstructor(); @@ -7728,6 +8953,8 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; var emitResolver = createResolver(); + var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, getIdentifierCount: function () { return ts.sum(host.getSourceFiles(), "identifierCount"); }, @@ -7760,11 +8987,10 @@ var ts; isValidPropertyAccess: isValidPropertyAccess, getSignatureFromDeclaration: getSignatureFromDeclaration, isImplementationOfOverload: isImplementationOfOverload, - getAliasedSymbol: resolveImport, - getEmitResolver: getEmitResolver + getAliasedSymbol: resolveAlias, + getEmitResolver: getEmitResolver, + getExportsOfExternalModule: getExportsOfExternalModule }; - var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); - var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var unknownSymbol = createSymbol(4 | 67108864, "unknown"); var resolvingSymbol = createSymbol(67108864, "__resolving__"); var anyType = createIntrinsicType(1, "any"); @@ -7780,7 +9006,6 @@ var ts; var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var inferenceFailureType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); var globals = {}; @@ -7795,11 +9020,18 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; + var globalIterableType; var anyArrayType; + var globalTypedPropertyDescriptorType; + var globalClassDecoratorType; + var globalParameterDecoratorType; + var globalPropertyDecoratorType; + var globalMethodDecoratorType; var tupleTypes = {}; var unionTypes = {}; var stringLiteralTypes = {}; var emitExtends = false; + var emitDecorate = false; var mergedSymbols = []; var symbolLinks = []; var nodeLinks = []; @@ -7828,7 +9060,9 @@ var ts; return emitResolver; } function error(location, message, arg0, arg1, arg2) { - var diagnostic = location ? ts.createDiagnosticForNode(location, message, arg0, arg1, arg2) : ts.createCompilerDiagnostic(message, arg0, arg1, arg2); + var diagnostic = location + ? ts.createDiagnosticForNode(location, message, arg0, arg1, arg2) + : ts.createCompilerDiagnostic(message, arg0, arg1, arg2); diagnostics.add(diagnostic); } function createSymbol(flags, name) { @@ -7890,7 +9124,7 @@ var ts; recordMergedSymbol(result, symbol); return result; } - function extendSymbol(target, source) { + function mergeSymbol(target, source) { if (!(target.flags & getExcludedSymbolFlags(source.flags))) { if (source.flags & 512 && target.flags & 512 && target.constEnumOnlyModule && !source.constEnumOnlyModule) { target.constEnumOnlyModule = false; @@ -7904,17 +9138,18 @@ var ts; if (source.members) { if (!target.members) target.members = {}; - extendSymbolTable(target.members, source.members); + mergeSymbolTable(target.members, source.members); } if (source.exports) { if (!target.exports) target.exports = {}; - extendSymbolTable(target.exports, source.exports); + mergeSymbolTable(target.exports, source.exports); } recordMergedSymbol(target, source); } else { - var message = target.flags & 2 || source.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; + var message = target.flags & 2 || source.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; ts.forEach(source.declarations, function (node) { error(node.name ? node.name : node, message, symbolToString(source)); }); @@ -7932,7 +9167,7 @@ var ts; } return result; } - function extendSymbolTable(target, source) { + function mergeSymbolTable(target, source) { for (var id in source) { if (ts.hasProperty(source, id)) { if (!ts.hasProperty(target, id)) { @@ -7943,7 +9178,7 @@ var ts; if (!(symbol.flags & 33554432)) { target[id] = symbol = cloneSymbol(symbol); } - extendSymbol(symbol, source[id]); + mergeSymbol(symbol, source[id]); } } } @@ -7951,20 +9186,18 @@ var ts; function getSymbolLinks(symbol) { if (symbol.flags & 67108864) return symbol; - if (!symbol.id) - symbol.id = nextSymbolId++; - return symbolLinks[symbol.id] || (symbolLinks[symbol.id] = {}); + var id = getSymbolId(symbol); + return symbolLinks[id] || (symbolLinks[id] = {}); } function getNodeLinks(node) { - if (!node.id) - node.id = nextNodeId++; - return nodeLinks[node.id] || (nodeLinks[node.id] = {}); + var nodeId = getNodeId(node); + return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 210); + return ts.getAncestor(node, 227); } function isGlobalSourceFile(node) { - return node.kind === 210 && !ts.isExternalModule(node); + return node.kind === 227 && !ts.isExternalModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -7974,7 +9207,7 @@ var ts; return symbol; } if (symbol.flags & 8388608) { - var target = resolveImport(symbol); + var target = resolveAlias(symbol); if (target === unknownSymbol || target.flags & meaning) { return symbol; } @@ -7998,6 +9231,7 @@ var ts; var lastLocation; var propertyWithInvalidInitializer; var errorLocation = location; + var grandparent; loop: while (location) { if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { @@ -8005,22 +9239,33 @@ var ts; } } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) { - break loop; + if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 217)) { + break loop; + } + result = undefined; + } + else if (location.kind === 227) { + result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & 8914931); + var localSymbol = ts.getLocalSymbolForExportDefault(result); + if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { + break loop; + } + result = undefined; } break; - case 197: + case 204: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } break; - case 128: - case 127: - if (location.parent.kind === 194 && !(location.flags & 128)) { + case 132: + case 131: + if (location.parent.kind === 201 && !(location.flags & 128)) { var ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { if (getSymbol(ctor.locals, name, meaning & 107455)) { @@ -8029,8 +9274,8 @@ var ts; } } break; - case 194: - case 195: + case 201: + case 202: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 128) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -8039,45 +9284,53 @@ var ts; break loop; } break; - case 124: - var grandparent = location.parent.parent; - if (grandparent.kind === 194 || grandparent.kind === 195) { + case 127: + grandparent = location.parent.parent; + if (grandparent.kind === 201 || grandparent.kind === 202) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; } } break; - case 130: - case 129: - case 131: - case 132: + case 134: case 133: - case 193: - case 159: + case 135: + case 136: + case 137: + case 200: + case 163: if (name === "arguments") { result = argumentsSymbol; break loop; } break; - case 158: + case 162: if (name === "arguments") { result = argumentsSymbol; break loop; } - var id = location.name; - if (id && name === id.text) { + var functionName = location.name; + if (functionName && name === functionName.text) { result = location.symbol; break loop; } break; - case 206: - var id = location.name; - if (name === id.text) { + case 174: + var className = location.name; + if (className && name === className.text) { result = location.symbol; break loop; } break; + case 130: + if (location.parent && location.parent.kind === 129) { + location = location.parent; + } + if (location.parent && ts.isClassElement(location.parent)) { + location = location.parent; + } + break; } lastLocation = location; location = location.parent; @@ -8098,27 +9351,172 @@ var ts; return undefined; } if (result.flags & 2) { - var declaration = ts.forEach(result.declarations, function (d) { return ts.getCombinedNodeFlags(d) & 6144 ? d : undefined; }); - ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isDefinedBefore(declaration, errorLocation)) { - error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); - } + checkResolvedBlockScopedVariable(result, errorLocation); } } return result; } - function resolveImport(symbol) { - ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Imports here."); + function checkResolvedBlockScopedVariable(result, errorLocation) { + ts.Debug.assert((result.flags & 2) !== 0); + var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); + ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); + var isUsedBeforeDeclaration = !isDefinedBefore(declaration, errorLocation); + if (!isUsedBeforeDeclaration) { + var variableDeclaration = ts.getAncestor(declaration, 198); + var container = ts.getEnclosingBlockScopeContainer(variableDeclaration); + if (variableDeclaration.parent.parent.kind === 180 || + variableDeclaration.parent.parent.kind === 186) { + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, variableDeclaration, container); + } + else if (variableDeclaration.parent.parent.kind === 188 || + variableDeclaration.parent.parent.kind === 187) { + var expression = variableDeclaration.parent.parent.expression; + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, expression, container); + } + } + if (isUsedBeforeDeclaration) { + error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); + } + } + function isSameScopeDescendentOf(initial, parent, stopAt) { + if (!parent) { + return false; + } + for (var current = initial; current && current !== stopAt && !ts.isFunctionLike(current); current = current.parent) { + if (current === parent) { + return true; + } + } + return false; + } + function getAnyImportSyntax(node) { + if (ts.isAliasSymbolDeclaration(node)) { + if (node.kind === 208) { + return node; + } + while (node && node.kind !== 209) { + node = node.parent; + } + return node; + } + } + function getDeclarationOfAliasSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); + } + function getTargetOfImportEqualsDeclaration(node) { + if (node.moduleReference.kind === 219) { + return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); + } + return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); + } + function getTargetOfImportClause(node) { + var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); + if (moduleSymbol) { + var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol) { + error(node.name, ts.Diagnostics.External_module_0_has_no_default_export, symbolToString(moduleSymbol)); + } + return exportDefaultSymbol; + } + } + function getTargetOfNamespaceImport(node) { + var moduleSpecifier = node.parent.parent.moduleSpecifier; + return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); + } + function getMemberOfModuleVariable(moduleSymbol, name) { + if (moduleSymbol.flags & 3) { + var typeAnnotation = moduleSymbol.valueDeclaration.type; + if (typeAnnotation) { + return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name); + } + } + } + function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { + if (valueSymbol.flags & (793056 | 1536)) { + return valueSymbol; + } + var result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.name); + result.declarations = ts.concatenate(valueSymbol.declarations, typeSymbol.declarations); + result.parent = valueSymbol.parent || typeSymbol.parent; + if (valueSymbol.valueDeclaration) + result.valueDeclaration = valueSymbol.valueDeclaration; + if (typeSymbol.members) + result.members = typeSymbol.members; + if (valueSymbol.exports) + result.exports = valueSymbol.exports; + return result; + } + function getExportOfModule(symbol, name) { + if (symbol.flags & 1536) { + var exports = getExportsOfSymbol(symbol); + if (ts.hasProperty(exports, name)) { + return resolveSymbol(exports[name]); + } + } + } + function getPropertyOfVariable(symbol, name) { + if (symbol.flags & 3) { + var typeAnnotation = symbol.valueDeclaration.type; + if (typeAnnotation) { + return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name)); + } + } + } + function getExternalModuleMember(node, specifier) { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + var targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); + if (targetSymbol) { + var name_4 = specifier.propertyName || specifier.name; + if (name_4.text) { + var symbolFromModule = getExportOfModule(targetSymbol, name_4.text); + var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_4.text); + var symbol = symbolFromModule && symbolFromVariable ? + combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : + symbolFromModule || symbolFromVariable; + if (!symbol) { + error(name_4, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_4)); + } + return symbol; + } + } + } + function getTargetOfImportSpecifier(node) { + return getExternalModuleMember(node.parent.parent.parent, node); + } + function getTargetOfExportSpecifier(node) { + return node.parent.parent.moduleSpecifier ? + getExternalModuleMember(node.parent.parent, node) : + resolveEntityName(node.propertyName || node.name, 107455 | 793056 | 1536); + } + function getTargetOfExportAssignment(node) { + return node.expression && resolveEntityName(node.expression, 107455 | 793056 | 1536); + } + function getTargetOfAliasDeclaration(node) { + switch (node.kind) { + case 208: + return getTargetOfImportEqualsDeclaration(node); + case 210: + return getTargetOfImportClause(node); + case 211: + return getTargetOfNamespaceImport(node); + case 213: + return getTargetOfImportSpecifier(node); + case 217: + return getTargetOfExportSpecifier(node); + case 214: + return getTargetOfExportAssignment(node); + } + } + function resolveSymbol(symbol) { + return symbol && symbol.flags & 8388608 && !(symbol.flags & (107455 | 793056 | 1536)) ? resolveAlias(symbol) : symbol; + } + function resolveAlias(symbol) { + ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Alias here."); var links = getSymbolLinks(symbol); if (!links.target) { links.target = resolvingSymbol; - var node = ts.getDeclarationOfKind(symbol, 200); - if (node.moduleReference.kind === 202) { - if (node.moduleReference.expression.kind !== 8) { - grammarErrorOnNode(node.moduleReference.expression, ts.Diagnostics.String_literal_expected); - } - } - var target = node.moduleReference.kind === 202 ? resolveExternalModuleName(node, ts.getExternalModuleImportDeclarationExpression(node)) : getSymbolOfPartOfRightHandSideOfImport(node.moduleReference, node); + var node = getDeclarationOfAliasSymbol(symbol); + var target = getTargetOfAliasDeclaration(node); if (links.target === resolvingSymbol) { links.target = target || unknownSymbol; } @@ -8131,47 +9529,81 @@ var ts; } return links.target; } - function getSymbolOfPartOfRightHandSideOfImport(entityName, importDeclaration) { + function markExportAsReferenced(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target) { + var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) || + (target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target)); + if (markAlias) { + markAliasSymbolAsReferenced(symbol); + } + } + } + function markAliasSymbolAsReferenced(symbol) { + var links = getSymbolLinks(symbol); + if (!links.referenced) { + links.referenced = true; + var node = getDeclarationOfAliasSymbol(symbol); + if (node.kind === 214 && node.expression) { + checkExpressionCached(node.expression); + } + else if (node.kind === 217) { + checkExpressionCached(node.propertyName || node.name); + } + else if (ts.isInternalModuleImportEqualsDeclaration(node)) { + checkExpressionCached(node.moduleReference); + } + } + } + function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 200); + importDeclaration = ts.getAncestor(entityName, 208); ts.Debug.assert(importDeclaration !== undefined); } - if (entityName.kind === 64 && isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (entityName.kind === 65 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (entityName.kind === 64 || entityName.parent.kind === 123) { - return resolveEntityName(importDeclaration, entityName, 1536); + if (entityName.kind === 65 || entityName.parent.kind === 126) { + return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 200); - return resolveEntityName(importDeclaration, entityName, 107455 | 793056 | 1536); + ts.Debug.assert(entityName.parent.kind === 208); + return resolveEntityName(entityName, 107455 | 793056 | 1536); } } function getFullyQualifiedName(symbol) { return symbol.parent ? getFullyQualifiedName(symbol.parent) + "." + symbolToString(symbol) : symbolToString(symbol); } - function resolveEntityName(location, name, meaning) { - if (ts.getFullWidth(name) === 0) { + function resolveEntityName(name, meaning) { + if (ts.nodeIsMissing(name)) { return undefined; } - if (name.kind === 64) { - var symbol = resolveName(location, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); + var symbol; + if (name.kind === 65) { + symbol = resolveName(name, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); if (!symbol) { - return; + return undefined; } } - else if (name.kind === 123) { - var namespace = resolveEntityName(location, name.left, 1536); - if (!namespace || namespace === unknownSymbol || ts.getFullWidth(name.right) === 0) - return; - var symbol = getSymbol(namespace.exports, name.right.text, meaning); - if (!symbol) { - error(location, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(name.right)); - return; + else if (name.kind === 126 || name.kind === 155) { + var left = name.kind === 126 ? name.left : name.expression; + var right = name.kind === 126 ? name.right : name.name; + var namespace = resolveEntityName(left, 1536); + if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { + return undefined; } + symbol = getSymbol(getExportsOfSymbol(namespace), right.text, meaning); + if (!symbol) { + error(right, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(right)); + return undefined; + } + } + else { + ts.Debug.fail("Unknown entity name kind."); } ts.Debug.assert((symbol.flags & 16777216) === 0, "Should never get an instantiated symbol here."); - return symbol.flags & meaning ? symbol : resolveImport(symbol); + return symbol.flags & meaning ? symbol : resolveAlias(symbol); } function isExternalModuleNameRelative(moduleName) { return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; @@ -8189,84 +9621,83 @@ var ts; if (!isRelative) { var symbol = getSymbol(globals, '"' + moduleName + '"', 512); if (symbol) { - return getResolvedExportSymbol(symbol); + return symbol; } } + var sourceFile; while (true) { var fileName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - var sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); - if (sourceFile || isRelative) + sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); + if (sourceFile || isRelative) { break; + } var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) + if (parentPath === searchPath) { break; + } searchPath = parentPath; } if (sourceFile) { if (sourceFile.symbol) { - return getResolvedExportSymbol(sourceFile.symbol); + return sourceFile.symbol; } error(moduleReferenceLiteral, ts.Diagnostics.File_0_is_not_an_external_module, sourceFile.fileName); return; } error(moduleReferenceLiteral, ts.Diagnostics.Cannot_find_external_module_0, moduleName); } - function getResolvedExportSymbol(moduleSymbol) { - var symbol = getExportAssignmentSymbol(moduleSymbol); - if (symbol) { - if (symbol.flags & (107455 | 793056 | 1536)) { - return symbol; - } - if (symbol.flags & 8388608) { - return resolveImport(symbol); + function resolveExternalModuleSymbol(moduleSymbol) { + return moduleSymbol && resolveSymbol(moduleSymbol.exports["export="]) || moduleSymbol; + } + function resolveESModuleSymbol(moduleSymbol, moduleReferenceExpression) { + var symbol = resolveExternalModuleSymbol(moduleSymbol); + if (symbol && !(symbol.flags & (1536 | 3))) { + error(moduleReferenceExpression, ts.Diagnostics.External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); + symbol = undefined; + } + return symbol; + } + function getExportAssignmentSymbol(moduleSymbol) { + return moduleSymbol.exports["export="]; + } + function getExportsOfSymbol(symbol) { + return symbol.flags & 1536 ? getExportsOfModule(symbol) : symbol.exports || emptySymbols; + } + function getExportsOfModule(moduleSymbol) { + var links = getSymbolLinks(moduleSymbol); + return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); + } + function extendExportSymbols(target, source) { + for (var id in source) { + if (id !== "default" && !ts.hasProperty(target, id)) { + target[id] = source[id]; } } - return moduleSymbol; } - function getExportAssignmentSymbol(symbol) { - checkTypeOfExportAssignmentSymbol(symbol); - var symbolLinks = getSymbolLinks(symbol); - return symbolLinks.exportAssignSymbol === unknownSymbol ? undefined : symbolLinks.exportAssignSymbol; - } - function checkTypeOfExportAssignmentSymbol(containerSymbol) { - var symbolLinks = getSymbolLinks(containerSymbol); - if (!symbolLinks.exportAssignSymbol) { - var exportInformation = collectExportInformationForSourceFileOrModule(containerSymbol); - if (exportInformation.exportAssignments.length) { - if (exportInformation.exportAssignments.length > 1) { - ts.forEach(exportInformation.exportAssignments, function (node) { return error(node, ts.Diagnostics.A_module_cannot_have_more_than_one_export_assignment); }); + function getExportsForModule(moduleSymbol) { + var result; + var visitedSymbols = []; + visit(moduleSymbol); + return result || moduleSymbol.exports; + function visit(symbol) { + if (symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { + visitedSymbols.push(symbol); + if (symbol !== moduleSymbol) { + if (!result) { + result = cloneSymbolTable(moduleSymbol.exports); + } + extendExportSymbols(result, symbol.exports); } - var node = exportInformation.exportAssignments[0]; - if (exportInformation.hasExportedMember) { - error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); - } - if (node.exportName.text) { - var meaning = 107455 | 793056 | 1536; - var exportSymbol = resolveName(node, node.exportName.text, meaning, ts.Diagnostics.Cannot_find_name_0, node.exportName); + var exportStars = symbol.exports["__export"]; + if (exportStars) { + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + visit(resolveExternalModuleName(node, node.moduleSpecifier)); + } } } - symbolLinks.exportAssignSymbol = exportSymbol || unknownSymbol; } } - function collectExportInformationForSourceFileOrModule(symbol) { - var seenExportedMember = false; - var result = []; - ts.forEach(symbol.declarations, function (declaration) { - var block = (declaration.kind === 210 ? declaration : declaration.body); - ts.forEach(block.statements, function (node) { - if (node.kind === 201) { - result.push(node); - } - else { - seenExportedMember = seenExportedMember || (node.flags & 1) !== 0; - } - }); - }); - return { - hasExportedMember: seenExportedMember, - exportAssignments: result - }; - } function getMergedSymbol(symbol) { var merged; return symbol && symbol.mergeId && (merged = mergedSymbols[symbol.mergeId]) ? merged : symbol; @@ -8278,7 +9709,9 @@ var ts; return getMergedSymbol(symbol.parent); } function getExportSymbolOfValueSymbolIfExported(symbol) { - return symbol && (symbol.flags & 1048576) !== 0 ? getMergedSymbol(symbol.exportSymbol) : symbol; + return symbol && (symbol.flags & 1048576) !== 0 + ? getMergedSymbol(symbol.exportSymbol) + : symbol; } function symbolIsValue(symbol) { if (symbol.flags & 16777216) { @@ -8288,15 +9721,15 @@ var ts; return true; } if (symbol.flags & 8388608) { - return (resolveImport(symbol).flags & 107455) !== 0; + return (resolveAlias(symbol).flags & 107455) !== 0; } return false; } function findConstructorDeclaration(node) { var members = node.members; - for (var i = 0; i < members.length; i++) { - var member = members[i]; - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { + for (var _i = 0; _i < members.length; _i++) { + var member = members[_i]; + if (member.kind === 135 && ts.nodeIsPresent(member.body)) { return member; } } @@ -8354,25 +9787,25 @@ var ts; } function forEachSymbolTableInScope(enclosingDeclaration, callback) { var result; - for (var location = enclosingDeclaration; location; location = location.parent) { - if (location.locals && !isGlobalSourceFile(location)) { - if (result = callback(location.locals)) { + for (var location_1 = enclosingDeclaration; location_1; location_1 = location_1.parent) { + if (location_1.locals && !isGlobalSourceFile(location_1)) { + if (result = callback(location_1.locals)) { return result; } } - switch (location.kind) { - case 210: - if (!ts.isExternalModule(location)) { + switch (location_1.kind) { + case 227: + if (!ts.isExternalModule(location_1)) { break; } - case 198: - if (result = callback(getSymbolOfNode(location).exports)) { + case 205: + if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 194: - case 195: - if (result = callback(getSymbolOfNode(location).members)) { + case 201: + case 202: + if (result = callback(getSymbolOfNode(location_1).members)) { return result; } break; @@ -8402,11 +9835,11 @@ var ts; return [symbol]; } return ts.forEachValue(symbols, function (symbolFromSymbolTable) { - if (symbolFromSymbolTable.flags & 8388608) { + if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=") { if (!useOnlyExternalAliasing || - ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportDeclaration)) { - var resolvedImportedSymbol = resolveImport(symbolFromSymbolTable); - if (isAccessible(symbolFromSymbolTable, resolveImport(symbolFromSymbolTable))) { + ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { + var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); + if (isAccessible(symbolFromSymbolTable, resolveAlias(symbolFromSymbolTable))) { return [symbolFromSymbolTable]; } var accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; @@ -8431,7 +9864,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveImport(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -8486,8 +9919,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 198 && declaration.name.kind === 8) || - (declaration.kind === 210 && ts.isExternalModule(declaration)); + return (declaration.kind === 205 && declaration.name.kind === 8) || + (declaration.kind === 227 && ts.isExternalModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -8497,17 +9930,18 @@ var ts; return { accessibility: 0, aliasesToMakeVisible: aliasesToMakeVisible }; function getIsDeclarationVisible(declaration) { if (!isDeclarationVisible(declaration)) { - if (declaration.kind === 200 && - !(declaration.flags & 1) && - isDeclarationVisible(declaration.parent)) { + var anyImportSyntax = getAnyImportSyntax(declaration); + if (anyImportSyntax && + !(anyImportSyntax.flags & 1) && + isDeclarationVisible(anyImportSyntax.parent)) { getNodeLinks(declaration).isVisible = true; if (aliasesToMakeVisible) { - if (!ts.contains(aliasesToMakeVisible, declaration)) { - aliasesToMakeVisible.push(declaration); + if (!ts.contains(aliasesToMakeVisible, anyImportSyntax)) { + aliasesToMakeVisible.push(anyImportSyntax); } } else { - aliasesToMakeVisible = [declaration]; + aliasesToMakeVisible = [anyImportSyntax]; } return true; } @@ -8518,11 +9952,11 @@ var ts; } function isEntityNameVisible(entityName, enclosingDeclaration) { var meaning; - if (entityName.parent.kind === 140) { + if (entityName.parent.kind === 144) { meaning = 107455 | 1048576; } - else if (entityName.kind === 123 || - entityName.parent.kind === 200) { + else if (entityName.kind === 126 || entityName.kind === 155 || + entityName.parent.kind === 208) { meaning = 1536; } else { @@ -8566,10 +10000,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048) { var node = type.symbol.declarations[0].parent; - while (node.kind === 145) { + while (node.kind === 149) { node = node.parent; } - if (node.kind === 196) { + if (node.kind === 203) { return getSymbolOfNode(node); } } @@ -8613,8 +10047,9 @@ var ts; walkSymbol(getParentOfSymbol(accessibleSymbolChain ? accessibleSymbolChain[0] : symbol), getQualifiedLeftMeaning(meaning)); } if (accessibleSymbolChain) { - for (var i = 0, n = accessibleSymbolChain.length; i < n; i++) { - appendParentTypeArgumentsAndSymbolName(accessibleSymbolChain[i]); + for (var _i = 0; _i < accessibleSymbolChain.length; _i++) { + var accessibleSymbol = accessibleSymbolChain[_i]; + appendParentTypeArgumentsAndSymbolName(accessibleSymbol); } } else { @@ -8722,7 +10157,7 @@ var ts; buildSymbolDisplay(typeAlias, writer, enclosingDeclaration, 793056, 0, flags); } else { - writeKeyword(writer, 110); + writeKeyword(writer, 112); } } else { @@ -8740,7 +10175,7 @@ var ts; var isNonLocalFunctionSymbol = !!(type.symbol.flags & 16) && (type.symbol.parent || ts.forEach(type.symbol.declarations, function (declaration) { - return declaration.parent.kind === 210 || declaration.parent.kind === 199; + return declaration.parent.kind === 227 || declaration.parent.kind === 206; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -8750,7 +10185,7 @@ var ts; } } function writeTypeofSymbol(type, typeFormatFlags) { - writeKeyword(writer, 96); + writeKeyword(writer, 97); writeSpace(writer); buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, 107455, 0, typeFormatFlags); } @@ -8784,7 +10219,7 @@ var ts; if (flags & 64) { writePunctuation(writer, 16); } - writeKeyword(writer, 87); + writeKeyword(writer, 88); writeSpace(writer); buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, typeStack); if (flags & 64) { @@ -8796,15 +10231,17 @@ var ts; writePunctuation(writer, 14); writer.writeLine(); writer.increaseIndent(); - for (var i = 0; i < resolved.callSignatures.length; i++) { - buildSignatureDisplay(resolved.callSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { + var signature = _a[_i]; + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.constructSignatures.length; i++) { - writeKeyword(writer, 87); + for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { + var signature = _c[_b]; + writeKeyword(writer, 88); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8813,7 +10250,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 0, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 119); + writeKeyword(writer, 121); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8826,7 +10263,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 1, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 117); + writeKeyword(writer, 119); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8834,17 +10271,18 @@ var ts; writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.properties.length; i++) { - var p = resolved.properties[i]; + for (var _d = 0, _e = resolved.properties; _d < _e.length; _d++) { + var p = _e[_d]; var t = getTypeOfSymbol(p); if (p.flags & (16 | 8192) && !getPropertiesOfObjectType(t).length) { var signatures = getSignaturesOfType(t, 0); - for (var j = 0; j < signatures.length; j++) { + for (var _f = 0; _f < signatures.length; _f++) { + var signature = signatures[_f]; buildSymbolDisplay(p, writer); if (p.flags & 536870912) { writePunctuation(writer, 50); } - buildSignatureDisplay(signatures[j], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8876,7 +10314,7 @@ var ts; var constraint = getConstraintOfTypeParameter(tp); if (constraint) { writeSpace(writer); - writeKeyword(writer, 78); + writeKeyword(writer, 79); writeSpace(writer); buildTypeDisplay(constraint, writer, enclosingDeclaration, flags, typeStack); } @@ -8969,12 +10407,12 @@ var ts; function isDeclarationVisible(node) { function getContainingExternalModule(node) { for (; node; node = node.parent) { - if (node.kind === 198) { + if (node.kind === 205) { if (node.name.kind === 8) { return node; } } - else if (node.kind === 210) { + else if (node.kind === 227) { return ts.isExternalModule(node) ? node : undefined; } } @@ -8982,16 +10420,17 @@ var ts; } function isUsedInExportAssignment(node) { var externalModule = getContainingExternalModule(node); + var exportAssignmentSymbol; + var resolvedExportSymbol; if (externalModule) { var externalModuleSymbol = getSymbolOfNode(externalModule); - var exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var resolvedExportSymbol; + exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); var symbolOfNode = getSymbolOfNode(node); if (isSymbolUsedInExportAssignment(symbolOfNode)) { return true; } if (symbolOfNode.flags & 8388608) { - return isSymbolUsedInExportAssignment(resolveImport(symbolOfNode)); + return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); } } function isSymbolUsedInExportAssignment(symbol) { @@ -8999,7 +10438,7 @@ var ts; return true; } if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { - resolvedExportSymbol = resolvedExportSymbol || resolveImport(exportAssignmentSymbol); + resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); if (resolvedExportSymbol === symbol) { return true; } @@ -9016,48 +10455,59 @@ var ts; } function determineIfDeclarationIsVisible() { switch (node.kind) { - case 191: - case 148: + case 152: + return isDeclarationVisible(node.parent.parent); case 198: - case 194: - case 195: - case 196: - case 193: - case 197: - case 200: - var parent = getDeclarationContainer(node); - if (!(ts.getCombinedNodeFlags(node) & 1) && - !(node.kind !== 200 && parent.kind !== 210 && ts.isInAmbientContext(parent))) { - return isGlobalSourceFile(parent) || isUsedInExportAssignment(node); + if (ts.isBindingPattern(node.name) && + !node.name.elements.length) { + return false; } - return isDeclarationVisible(parent); - case 128: - case 127: + case 205: + case 201: + case 202: + case 203: + case 200: + case 204: + case 208: + var parent_2 = getDeclarationContainer(node); + if (!(ts.getCombinedNodeFlags(node) & 1) && + !(node.kind !== 208 && parent_2.kind !== 227 && ts.isInAmbientContext(parent_2))) { + return isGlobalSourceFile(parent_2); + } + return isDeclarationVisible(parent_2); case 132: + case 131: + case 136: + case 137: + case 134: case 133: - case 130: - case 129: if (node.flags & (32 | 64)) { return false; } - case 131: case 135: - case 134: - case 136: - case 126: - case 199: - case 138: case 139: - case 141: - case 137: + case 138: + case 140: + case 129: + case 206: case 142: case 143: - case 144: case 145: + case 141: + case 146: + case 147: + case 148: + case 149: return isDeclarationVisible(node.parent); - case 125: case 210: + case 211: + case 213: + return false; + case 128: + case 227: return true; + case 214: + return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } @@ -9070,15 +10520,44 @@ var ts; return links.isVisible; } } + function collectLinkedAliases(node) { + var exportSymbol; + if (node.parent && node.parent.kind === 214) { + exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, node); + } + else if (node.parent.kind === 217) { + exportSymbol = getTargetOfExportSpecifier(node.parent); + } + var result = []; + if (exportSymbol) { + buildVisibleNodeList(exportSymbol.declarations); + } + return result; + function buildVisibleNodeList(declarations) { + ts.forEach(declarations, function (declaration) { + getNodeLinks(declaration).isVisible = true; + var resultNode = getAnyImportSyntax(declaration) || declaration; + if (!ts.contains(result, resultNode)) { + result.push(resultNode); + } + if (ts.isInternalModuleImportEqualsDeclaration(declaration)) { + var internalModuleReference = declaration.moduleReference; + var firstIdentifier = getFirstIdentifier(internalModuleReference); + var importSymbol = resolveName(declaration, firstIdentifier.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, firstIdentifier); + buildVisibleNodeList(importSymbol.declarations); + } + }); + } + } function getRootDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } return node; } function getDeclarationContainer(node) { node = getRootDeclaration(node); - return node.kind === 191 ? node.parent.parent.parent : node.parent; + return node.kind === 198 ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { var classType = getDeclaredTypeOfSymbol(prototype.parent); @@ -9100,13 +10579,14 @@ var ts; } return parentType; } - if (pattern.kind === 146) { - var name = declaration.propertyName || declaration.name; - var type = getTypeOfPropertyOfType(parentType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, 1) || + var type; + if (pattern.kind === 150) { + var name_5 = declaration.propertyName || declaration.name; + type = getTypeOfPropertyOfType(parentType, name_5.text) || + isNumericLiteralName(name_5.text) && getIndexTypeOfType(parentType, 1) || getIndexTypeOfType(parentType, 0); if (!type) { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name)); + error(name_5, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_5)); return unknownType; } } @@ -9117,32 +10597,40 @@ var ts; } if (!declaration.dotDotDotToken) { var propName = "" + ts.indexOf(pattern.elements, declaration); - var type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); + type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); if (!type) { - error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + if (isTupleType(parentType)) { + error(declaration, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(parentType), parentType.elementTypes.length, pattern.elements.length); + } + else { + error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + } return unknownType; } } else { - var type = createArrayType(getIndexTypeOfType(parentType, 1)); + type = createArrayType(getIndexTypeOfType(parentType, 1)); } } return type; } function getTypeForVariableLikeDeclaration(declaration) { - if (declaration.parent.parent.kind === 180) { + if (declaration.parent.parent.kind === 187) { return anyType; } + if (declaration.parent.parent.kind === 188) { + return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; + } if (ts.isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var func = declaration.parent; - if (func.kind === 133 && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 132); + if (func.kind === 137 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 136); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } @@ -9155,7 +10643,7 @@ var ts; if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 208) { + if (declaration.kind === 225) { return checkIdentifier(declaration.name); } return undefined; @@ -9184,7 +10672,7 @@ var ts; var hasSpreadElement = false; var elementTypes = []; ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 170 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); + elementTypes.push(e.kind === 175 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); if (e.dotDotDotToken) { hasSpreadElement = true; } @@ -9192,7 +10680,9 @@ var ts; return !elementTypes.length ? anyArrayType : hasSpreadElement ? createArrayType(getUnionType(elementTypes)) : createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern) { - return pattern.kind === 146 ? getTypeFromObjectBindingPattern(pattern) : getTypeFromArrayBindingPattern(pattern); + return pattern.kind === 150 + ? getTypeFromObjectBindingPattern(pattern) + : getTypeFromArrayBindingPattern(pattern); } function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { var type = getTypeForVariableLikeDeclaration(declaration); @@ -9200,7 +10690,7 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - return declaration.kind !== 207 ? getWidenedType(type) : type; + return declaration.kind !== 224 ? getWidenedType(type) : type; } if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name); @@ -9208,7 +10698,7 @@ var ts; type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { var root = getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 126 && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 129 && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -9221,9 +10711,21 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.kind === 206) { + if (declaration.parent.kind === 223) { return links.type = anyType; } + if (declaration.kind === 214) { + var exportAssignment = declaration; + if (exportAssignment.expression) { + return links.type = checkExpression(exportAssignment.expression); + } + else if (exportAssignment.type) { + return links.type = getTypeFromTypeNodeOrHeritageClauseElement(exportAssignment.type); + } + else { + return links.type = anyType; + } + } links.type = resolvingType; var type = getWidenedTypeForVariableLikeDeclaration(declaration, true); if (links.type === resolvingType) { @@ -9233,7 +10735,9 @@ var ts; else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var diagnostic = symbol.valueDeclaration.type ? ts.Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : ts.Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; + var diagnostic = symbol.valueDeclaration.type ? + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; error(symbol.valueDeclaration, diagnostic, symbolToString(symbol)); } } @@ -9244,12 +10748,12 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 132) { - return accessor.type && getTypeFromTypeNode(accessor.type); + if (accessor.kind === 136) { + return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement(accessor.type); } else { var setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement(setterTypeAnnotation); } } return undefined; @@ -9263,8 +10767,8 @@ var ts; links = links || getSymbolLinks(symbol); if (!links.type) { links.type = resolvingType; - var getter = ts.getDeclarationOfKind(symbol, 132); - var setter = ts.getDeclarationOfKind(symbol, 133); + var getter = ts.getDeclarationOfKind(symbol, 136); + var setter = ts.getDeclarationOfKind(symbol, 137); var type; var getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { @@ -9294,7 +10798,7 @@ var ts; else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var getter = ts.getDeclarationOfKind(symbol, 132); + var getter = ts.getDeclarationOfKind(symbol, 136); error(getter, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -9313,10 +10817,10 @@ var ts; } return links.type; } - function getTypeOfImport(symbol) { + function getTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { - links.type = getTypeOfSymbol(resolveImport(symbol)); + links.type = getTypeOfSymbol(resolveAlias(symbol)); } return links.type; } @@ -9344,7 +10848,7 @@ var ts; return getTypeOfAccessors(symbol); } if (symbol.flags & 8388608) { - return getTypeOfImport(symbol); + return getTypeOfAlias(symbol); } return unknownType; } @@ -9361,7 +10865,7 @@ var ts; function getTypeParametersOfClassOrInterface(symbol) { var result; ts.forEach(symbol.declarations, function (node) { - if (node.kind === 195 || node.kind === 194) { + if (node.kind === 202 || node.kind === 201) { var declaration = node; if (declaration.typeParameters && declaration.typeParameters.length) { ts.forEach(declaration.typeParameters, function (node) { @@ -9392,10 +10896,10 @@ var ts; type.typeArguments = type.typeParameters; } type.baseTypes = []; - var declaration = ts.getDeclarationOfKind(symbol, 194); - var baseTypeNode = ts.getClassBaseTypeNode(declaration); + var declaration = ts.getDeclarationOfKind(symbol, 201); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(declaration); if (baseTypeNode) { - var baseType = getTypeFromTypeReferenceNode(baseTypeNode); + var baseType = getTypeFromHeritageClauseElement(baseTypeNode); if (baseType !== unknownType) { if (getTargetType(baseType).flags & 1024) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -9433,9 +10937,9 @@ var ts; } type.baseTypes = []; ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 195 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 202 && ts.getInterfaceBaseTypeNodes(declaration)) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), function (node) { - var baseType = getTypeFromTypeReferenceNode(node); + var baseType = getTypeFromHeritageClauseElement(node); if (baseType !== unknownType) { if (getTargetType(baseType).flags & (1024 | 2048)) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -9464,15 +10968,15 @@ var ts; var links = getSymbolLinks(symbol); if (!links.declaredType) { links.declaredType = resolvingType; - var declaration = ts.getDeclarationOfKind(symbol, 196); - var type = getTypeFromTypeNode(declaration.type); + var declaration = ts.getDeclarationOfKind(symbol, 203); + var type = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); if (links.declaredType === resolvingType) { links.declaredType = type; } } else if (links.declaredType === resolvingType) { links.declaredType = unknownType; - var declaration = ts.getDeclarationOfKind(symbol, 196); + var declaration = ts.getDeclarationOfKind(symbol, 203); error(declaration.name, ts.Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); } return links.declaredType; @@ -9491,17 +10995,17 @@ var ts; if (!links.declaredType) { var type = createType(512); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 125).constraint) { + if (!ts.getDeclarationOfKind(symbol, 128).constraint) { type.constraint = noConstraintType; } links.declaredType = type; } return links.declaredType; } - function getDeclaredTypeOfImport(symbol) { + function getDeclaredTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.declaredType) { - links.declaredType = getDeclaredTypeOfSymbol(resolveImport(symbol)); + links.declaredType = getDeclaredTypeOfSymbol(resolveAlias(symbol)); } return links.declaredType; } @@ -9523,29 +11027,29 @@ var ts; return getDeclaredTypeOfTypeParameter(symbol); } if (symbol.flags & 8388608) { - return getDeclaredTypeOfImport(symbol); + return getDeclaredTypeOfAlias(symbol); } return unknownType; } function createSymbolTable(symbols) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = symbol; } return result; } function createInstantiatedSymbolTable(symbols, mapper) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = instantiateSymbol(symbol, mapper); } return result; } function addInheritedMembers(symbols, baseSymbols) { - for (var i = 0; i < baseSymbols.length; i++) { - var s = baseSymbols[i]; + for (var _i = 0; _i < baseSymbols.length; _i++) { + var s = baseSymbols[_i]; if (!ts.hasProperty(symbols, s.name)) { symbols[s.name] = s; } @@ -9553,8 +11057,9 @@ var ts; } function addInheritedSignatures(signatures, baseSignatures) { if (baseSignatures) { - for (var i = 0; i < baseSignatures.length; i++) { - signatures.push(baseSignatures[i]); + for (var _i = 0; _i < baseSignatures.length; _i++) { + var signature = baseSignatures[_i]; + signatures.push(signature); } } } @@ -9613,7 +11118,8 @@ var ts; var baseType = classType.baseTypes[0]; var baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), 1); return ts.map(baseSignatures, function (baseSignature) { - var signature = baseType.flags & 4096 ? getSignatureInstantiation(baseSignature, baseType.typeArguments) : cloneSignature(baseSignature); + var signature = baseType.flags & 4096 ? + getSignatureInstantiation(baseSignature, baseType.typeArguments) : cloneSignature(baseSignature); signature.typeParameters = classType.typeParameters; signature.resolvedReturnType = classType; return signature; @@ -9650,13 +11156,14 @@ var ts; function getUnionSignatures(types, kind) { var signatureLists = ts.map(types, function (t) { return getSignaturesOfType(t, kind); }); var signatures = signatureLists[0]; - for (var i = 0; i < signatures.length; i++) { - if (signatures[i].typeParameters) { + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; + if (signature.typeParameters) { return emptyArray; } } - for (var i = 1; i < signatureLists.length; i++) { - if (!signatureListsIdentical(signatures, signatureLists[i])) { + for (var i_1 = 1; i_1 < signatureLists.length; i_1++) { + if (!signatureListsIdentical(signatures, signatureLists[i_1])) { return emptyArray; } } @@ -9670,8 +11177,9 @@ var ts; } function getUnionIndexType(types, kind) { var indexTypes = []; - for (var i = 0; i < types.length; i++) { - var indexType = getIndexTypeOfType(types[i], kind); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + var indexType = getIndexTypeOfType(type, kind); if (!indexType) { return undefined; } @@ -9688,19 +11196,24 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; + var members; + var callSignatures; + var constructSignatures; + var stringIndexType; + var numberIndexType; if (symbol.flags & 2048) { - var members = symbol.members; - var callSignatures = getSignaturesOfSymbol(members["__call"]); - var constructSignatures = getSignaturesOfSymbol(members["__new"]); - var stringIndexType = getIndexTypeOfSymbol(symbol, 0); - var numberIndexType = getIndexTypeOfSymbol(symbol, 1); + members = symbol.members; + callSignatures = getSignaturesOfSymbol(members["__call"]); + constructSignatures = getSignaturesOfSymbol(members["__new"]); + stringIndexType = getIndexTypeOfSymbol(symbol, 0); + numberIndexType = getIndexTypeOfSymbol(symbol, 1); } else { - var members = emptySymbols; - var callSignatures = emptyArray; - var constructSignatures = emptyArray; + members = emptySymbols; + callSignatures = emptyArray; + constructSignatures = emptyArray; if (symbol.flags & 1952) { - members = symbol.exports; + members = getExportsOfSymbol(symbol); } if (symbol.flags & (16 | 8192)) { callSignatures = getSignaturesOfSymbol(symbol); @@ -9716,8 +11229,8 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(classType.baseTypes[0].symbol))); } } - var stringIndexType = undefined; - var numberIndexType = (symbol.flags & 384) ? stringType : undefined; + stringIndexType = undefined; + numberIndexType = (symbol.flags & 384) ? stringType : undefined; } setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } @@ -9800,8 +11313,9 @@ var ts; function createUnionProperty(unionType, name) { var types = unionType.types; var props; - for (var i = 0; i < types.length; i++) { - var type = getApparentType(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (!prop) { @@ -9817,8 +11331,8 @@ var ts; } var propTypes = []; var declarations = []; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; + for (var _a = 0; _a < props.length; _a++) { + var prop = props[_a]; if (prop.declarations) { declarations.push.apply(declarations, prop.declarations); } @@ -9894,11 +11408,31 @@ var ts; }); return result; } + function symbolsToArray(symbols) { + var result = []; + for (var id in symbols) { + if (!isReservedMemberName(id)) { + result.push(symbols[id]); + } + } + return result; + } + function getExportsOfExternalModule(node) { + if (!node.moduleSpecifier) { + return emptyArray; + } + var module = resolveExternalModuleName(node, node.moduleSpecifier); + if (!module) { + return emptyArray; + } + return symbolsToArray(getExportsOfModule(module)); + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 131 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; - var typeParameters = classType ? classType.typeParameters : declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; + var classType = declaration.kind === 135 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; + var typeParameters = classType ? classType.typeParameters : + declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; @@ -9922,11 +11456,11 @@ var ts; returnType = classType; } else if (declaration.type) { - returnType = getTypeFromTypeNode(declaration.type); + returnType = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } else { - if (declaration.kind === 132 && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 133); + if (declaration.kind === 136 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 137); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { @@ -9944,19 +11478,19 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { + case 142: + case 143: + case 200: + case 134: + case 133: + case 135: case 138: case 139: - case 193: - case 130: - case 129: - case 131: - case 134: - case 135: + case 140: case 136: - case 132: - case 133: - case 158: - case 159: + case 137: + case 162: + case 163: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -9971,14 +11505,15 @@ var ts; function getReturnTypeOfSignature(signature) { if (!signature.resolvedReturnType) { signature.resolvedReturnType = resolvingType; + var type; if (signature.target) { - var type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); + type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } else if (signature.unionSignatures) { - var type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); + type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); } else { - var type = getReturnTypeFromBody(signature.declaration); + type = getReturnTypeFromBody(signature.declaration); } if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = type; @@ -10025,7 +11560,7 @@ var ts; } function getOrCreateTypeFromSignature(signature) { if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 131 || signature.declaration.kind === 135; + var isConstructor = signature.declaration.kind === 135 || signature.declaration.kind === 139; var type = createObjectType(32768 | 65536); type.members = emptySymbols; type.properties = emptyArray; @@ -10039,12 +11574,13 @@ var ts; return symbol.members["__index"]; } function getIndexDeclarationOfSymbol(symbol, kind) { - var syntaxKind = kind === 1 ? 117 : 119; + var syntaxKind = kind === 1 ? 119 : 121; var indexSymbol = getIndexSymbol(symbol); if (indexSymbol) { var len = indexSymbol.declarations.length; - for (var i = 0; i < len; i++) { - var node = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var node = decl; if (node.parameters.length === 1) { var parameter = node.parameters[0]; if (parameter && parameter.type && parameter.type.kind === syntaxKind) { @@ -10057,7 +11593,9 @@ var ts; } function getIndexTypeOfSymbol(symbol, kind) { var declaration = getIndexDeclarationOfSymbol(symbol, kind); - return declaration ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; + return declaration + ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement(declaration.type) : anyType + : undefined; } function getConstraintOfTypeParameter(type) { if (!type.constraint) { @@ -10066,7 +11604,7 @@ var ts; type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 125).constraint); + type.constraint = getTypeFromTypeNodeOrHeritageClauseElement(ts.getDeclarationOfKind(type.symbol, 128).constraint); } } return type.constraint === noConstraintType ? undefined : type.constraint; @@ -10080,8 +11618,9 @@ var ts; default: var result = ""; for (var i = 0; i < types.length; i++) { - if (i > 0) + if (i > 0) { result += ","; + } result += types[i].id; } return result; @@ -10089,8 +11628,9 @@ var ts; } function getWideningFlagsOfTypes(types) { var result = 0; - for (var i = 0; i < types.length; i++) { - result |= types[i].flags; + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + result |= type.flags; } return result & 786432; } @@ -10114,13 +11654,13 @@ var ts; while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { currentNode = currentNode.parent; } - links.isIllegalTypeReferenceInConstraint = currentNode.kind === 125; + links.isIllegalTypeReferenceInConstraint = currentNode.kind === 128; return links.isIllegalTypeReferenceInConstraint; } function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { var typeParameterSymbol; function check(n) { - if (n.kind === 137 && n.typeName.kind === 64) { + if (n.kind === 141 && n.typeName.kind === 65) { var links = getNodeLinks(n); if (links.isIllegalTypeReferenceInConstraint === undefined) { var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); @@ -10139,31 +11679,42 @@ var ts; check(typeParameter.constraint); } } - function getTypeFromTypeReferenceNode(node) { + function getTypeFromTypeReference(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromHeritageClauseElement(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromTypeReferenceOrHeritageClauseElement(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - var symbol = resolveEntityName(node, node.typeName, 793056); - if (symbol) { - var type; - if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - type = unknownType; - } - else { - type = getDeclaredTypeOfSymbol(symbol); - if (type.flags & (1024 | 2048) && type.flags & 4096) { - var typeParameters = type.typeParameters; - if (node.typeArguments && node.typeArguments.length === typeParameters.length) { - type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNode)); - } - else { - error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); - type = undefined; - } + var type; + if (node.kind !== 177 || ts.isSupportedHeritageClauseElement(node)) { + var typeNameOrExpression = node.kind === 141 + ? node.typeName + : node.expression; + var symbol = resolveEntityName(typeNameOrExpression, 793056); + if (symbol) { + if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { + type = unknownType; } else { - if (node.typeArguments) { - error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); - type = undefined; + type = getDeclaredTypeOfSymbol(symbol); + if (type.flags & (1024 | 2048) && type.flags & 4096) { + var typeParameters = type.typeParameters; + if (node.typeArguments && node.typeArguments.length === typeParameters.length) { + type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement)); + } + else { + error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); + type = undefined; + } + } + else { + if (node.typeArguments) { + error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); + type = undefined; + } } } } @@ -10182,12 +11733,12 @@ var ts; function getTypeOfGlobalSymbol(symbol, arity) { function getTypeDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; switch (declaration.kind) { - case 194: - case 195: - case 197: + case 201: + case 202: + case 204: return declaration; } } @@ -10215,8 +11766,9 @@ var ts; function getGlobalSymbol(name, meaning, diagnostic) { return resolveName(undefined, name, meaning, diagnostic, name); } - function getGlobalType(name) { - return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), 0); + function getGlobalType(name, arity) { + if (arity === void 0) { arity = 0; } + return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } function getGlobalESSymbolConstructorSymbol() { return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); @@ -10228,7 +11780,7 @@ var ts; function getTypeFromArrayTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createArrayType(getTypeFromTypeNode(node.elementType)); + links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement(node.elementType)); } return links.resolvedType; } @@ -10244,7 +11796,7 @@ var ts; function getTypeFromTupleTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNode)); + links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement)); } return links.resolvedType; } @@ -10264,13 +11816,15 @@ var ts; } } function addTypesToSortedSet(sortedTypes, types) { - for (var i = 0, len = types.length; i < len; i++) { - addTypeToSortedSet(sortedTypes, types[i]); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + addTypeToSortedSet(sortedTypes, type); } } function isSubtypeOfAny(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && isTypeSubtypeOf(candidate, types[i])) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && isTypeSubtypeOf(candidate, type)) { return true; } } @@ -10286,8 +11840,9 @@ var ts; } } function containsAnyType(types) { - for (var i = 0; i < types.length; i++) { - if (types[i].flags & 1) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (type.flags & 1) { return true; } } @@ -10332,7 +11887,7 @@ var ts; function getTypeFromUnionTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNode), true); + links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNodeOrHeritageClauseElement), true); } return links.resolvedType; } @@ -10358,40 +11913,42 @@ var ts; } return links.resolvedType; } - function getTypeFromTypeNode(node) { + function getTypeFromTypeNodeOrHeritageClauseElement(node) { switch (node.kind) { - case 110: + case 112: return anyType; - case 119: + case 121: return stringType; - case 117: + case 119: return numberType; - case 111: + case 113: return booleanType; - case 120: + case 122: return esSymbolType; - case 98: + case 99: return voidType; case 8: return getTypeFromStringLiteral(node); - case 137: - return getTypeFromTypeReferenceNode(node); - case 140: - return getTypeFromTypeQueryNode(node); - case 142: - return getTypeFromArrayTypeNode(node); - case 143: - return getTypeFromTupleTypeNode(node); - case 144: - return getTypeFromUnionTypeNode(node); - case 145: - return getTypeFromTypeNode(node.type); - case 138: - case 139: case 141: + return getTypeFromTypeReference(node); + case 177: + return getTypeFromHeritageClauseElement(node); + case 144: + return getTypeFromTypeQueryNode(node); + case 146: + return getTypeFromArrayTypeNode(node); + case 147: + return getTypeFromTupleTypeNode(node); + case 148: + return getTypeFromUnionTypeNode(node); + case 149: + return getTypeFromTypeNodeOrHeritageClauseElement(node.type); + case 142: + case 143: + case 145: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); - case 64: - case 123: + case 65: + case 126: var symbol = getSymbolInfo(node); return symbol && getDeclaredTypeOfSymbol(symbol); default: @@ -10401,8 +11958,9 @@ var ts; function instantiateList(items, mapper, instantiator) { if (items && items.length) { var result = []; - for (var i = 0; i < items.length; i++) { - result.push(instantiator(items[i], mapper)); + for (var _i = 0; _i < items.length; _i++) { + var v = items[_i]; + result.push(instantiator(v, mapper)); } return result; } @@ -10421,8 +11979,9 @@ var ts; } return function (t) { for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + if (t === sources[i]) { return targets[i]; + } } return t; }; @@ -10439,9 +11998,11 @@ var ts; case 2: return createBinaryTypeEraser(sources[0], sources[1]); } return function (t) { - for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + for (var _i = 0; _i < sources.length; _i++) { + var source = sources[_i]; + if (t === source) { return anyType; + } } return t; }; @@ -10450,6 +12011,7 @@ var ts; return function (t) { for (var i = 0; i < context.typeParameters.length; i++) { if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; return getInferredType(context, i); } } @@ -10475,8 +12037,9 @@ var ts; return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { + var freshTypeParameters; if (signature.typeParameters && !eraseTypeParameters) { - var freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); } var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), signature.resolvedReturnType ? instantiateType(signature.resolvedReturnType, mapper) : undefined, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); @@ -10520,7 +12083,8 @@ var ts; return mapper(type); } if (type.flags & 32768) { - return type.symbol && type.symbol.flags & (16 | 8192 | 2048 | 4096) ? instantiateAnonymousType(type, mapper) : type; + return type.symbol && type.symbol.flags & (16 | 8192 | 2048 | 4096) ? + instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096) { return createTypeReference(type.target, instantiateList(type.typeArguments, mapper, instantiateType)); @@ -10535,27 +12099,27 @@ var ts; return type; } function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 158: - case 159: + case 162: + case 163: return isContextSensitiveFunctionLikeDeclaration(node); - case 150: + case 154: return ts.forEach(node.properties, isContextSensitive); - case 149: + case 153: return ts.forEach(node.elements, isContextSensitive); - case 166: + case 170: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 165: + case 169: return node.operatorToken.kind === 49 && - (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 207: + (isContextSensitive(node.left) || isContextSensitive(node.right)); + case 224: return isContextSensitive(node.initializer); - case 130: - case 129: + case 134: + case 133: return isContextSensitiveFunctionLikeDeclaration(node); - case 157: + case 161: return isContextSensitive(node.expression); } return false; @@ -10611,6 +12175,7 @@ var ts; var expandingFlags; var depth = 0; var overflow = false; + var elaborateErrors = false; ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking"); var result = isRelatedTo(source, target, errorNode !== undefined, headMessage); if (overflow) { @@ -10619,7 +12184,8 @@ var ts; else if (errorInfo) { if (errorInfo.next === undefined) { errorInfo = undefined; - isRelatedTo(source, target, errorNode !== undefined, headMessage, true); + elaborateErrors = true; + isRelatedTo(source, target, errorNode !== undefined, headMessage); } if (containingMessageChain) { errorInfo = ts.concatenateDiagnosticMessageChains(containingMessageChain, errorInfo); @@ -10630,8 +12196,7 @@ var ts; function reportError(message, arg0, arg1, arg2) { errorInfo = ts.chainDiagnosticMessages(errorInfo, message, arg0, arg1, arg2); } - function isRelatedTo(source, target, reportErrors, headMessage, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function isRelatedTo(source, target, reportErrors, headMessage) { var result; if (source === target) return -1; @@ -10701,7 +12266,7 @@ var ts; var reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; var sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); if (sourceOrApparentType.flags & 48128 && target.flags & 48128 && - (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors, elaborateErrors))) { + (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors))) { errorInfo = saveErrorInfo; return result; } @@ -10721,8 +12286,9 @@ var ts; function unionTypeRelatedToUnionType(source, target) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = typeRelatedToUnionType(sourceTypes[i], target, false); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = typeRelatedToUnionType(sourceType, target, false); if (!related) { return 0; } @@ -10743,8 +12309,9 @@ var ts; function unionTypeRelatedToType(source, target, reportErrors) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = isRelatedTo(sourceTypes[i], target, reportErrors); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = isRelatedTo(sourceType, target, reportErrors); if (!related) { return 0; } @@ -10788,8 +12355,7 @@ var ts; return 0; } } - function objectTypeRelatedTo(source, target, reportErrors, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function objectTypeRelatedTo(source, target, reportErrors) { if (overflow) { return 0; } @@ -10827,11 +12393,12 @@ var ts; expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack)) expandingFlags |= 2; + var result; if (expandingFlags === 3) { - var result = 1; + result = 1; } else { - var result = propertiesRelatedTo(source, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { result &= signaturesRelatedTo(source, target, 0, reportErrors); if (result) { @@ -10859,11 +12426,11 @@ var ts; } function isDeeplyNestedGeneric(type, stack) { if (type.flags & 4096 && depth >= 10) { - var target = type.target; + var target_1 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) { + if (t.flags & 4096 && t.target === target_1) { count++; if (count >= 10) return true; @@ -10879,8 +12446,8 @@ var ts; var result = -1; var properties = getPropertiesOfObjectType(target); var requireOptionalProperties = relation === subtypeRelation && !(source.flags & 131072); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfType(source, targetProp.name); if (sourceProp !== targetProp) { if (!sourceProp) { @@ -10950,8 +12517,8 @@ var ts; return 0; } var result = -1; - for (var i = 0, len = sourceProperties.length; i < len; ++i) { - var sourceProp = sourceProperties[i]; + for (var _i = 0; _i < sourceProperties.length; _i++) { + var sourceProp = sourceProperties[_i]; var targetProp = getPropertyOfObjectType(target, sourceProp.name); if (!targetProp) { return 0; @@ -10975,12 +12542,12 @@ var ts; var targetSignatures = getSignaturesOfType(target, kind); var result = -1; var saveErrorInfo = errorInfo; - outer: for (var i = 0; i < targetSignatures.length; i++) { - var t = targetSignatures[i]; + outer: for (var _i = 0; _i < targetSignatures.length; _i++) { + var t = targetSignatures[_i]; if (!t.hasStringLiterals || target.flags & 65536) { var localErrors = reportErrors; - for (var j = 0; j < sourceSignatures.length; j++) { - var s = sourceSignatures[j]; + for (var _a = 0; _a < sourceSignatures.length; _a++) { + var s = sourceSignatures[_a]; if (!s.hasStringLiterals || source.flags & 65536) { var related = signatureRelatedTo(s, t, localErrors); if (related) { @@ -11026,12 +12593,12 @@ var ts; target = getErasedSignature(target); var result = -1; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var s_1 = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t_1 = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); var saveErrorInfo = errorInfo; - var related = isRelatedTo(s, t, reportErrors); + var related = isRelatedTo(s_1, t_1, reportErrors); if (!related) { - related = isRelatedTo(t, s, false); + related = isRelatedTo(t_1, s_1, false); if (!related) { if (reportErrors) { reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); @@ -11102,11 +12669,12 @@ var ts; } return 0; } + var related; if (sourceStringType && sourceNumberType) { - var related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { - var related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); } if (!related) { if (reportErrors) { @@ -11196,8 +12764,9 @@ var ts; return result; } function isSupertypeOfEach(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && !isTypeSubtypeOf(types[i], candidate)) + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && !isTypeSubtypeOf(type, candidate)) return false; } return true; @@ -11220,6 +12789,7 @@ var ts; downfallType = types[j]; } } + ts.Debug.assert(!!downfallType, "If there is no common supertype, each type should have a downfallType"); if (score > bestSupertypeScore) { bestSupertype = types[i]; bestSupertypeDownfallType = downfallType; @@ -11240,6 +12810,9 @@ var ts; function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); } + function isTupleType(type) { + return (type.flags & 8192) && !!type.elementTypes; + } function getWidenedTypeOfObjectLiteral(type) { var properties = getPropertiesOfObjectType(type); var members = {}; @@ -11313,29 +12886,32 @@ var ts; } function reportImplicitAnyError(declaration, type) { var typeAsString = typeToString(getWidenedType(type)); + var diagnostic; switch (declaration.kind) { - case 128: - case 127: - var diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; - break; - case 126: - var diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; - break; - case 193: - case 130: - case 129: case 132: + case 131: + diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; + break; + case 129: + diagnostic = declaration.dotDotDotToken ? + ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : + ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; + break; + case 200: + case 134: case 133: - case 158: - case 159: + case 136: + case 137: + case 162: + case 163: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; } - var diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; + diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; break; default: - var diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; + diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; } error(declaration, diagnostic, ts.declarationNameToString(declaration.name), typeAsString); } @@ -11374,13 +12950,13 @@ var ts; } function createInferenceContext(typeParameters, inferUnionTypes) { var inferences = []; - for (var i = 0; i < typeParameters.length; i++) { - inferences.push({ primary: undefined, secondary: undefined }); + for (var _i = 0; _i < typeParameters.length; _i++) { + var unused = typeParameters[_i]; + inferences.push({ primary: undefined, secondary: undefined, isFixed: false }); } return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, - inferenceCount: 0, inferences: inferences, inferredTypes: new Array(typeParameters.length) }; @@ -11393,19 +12969,21 @@ var ts; inferFromTypes(source, target); function isInProcess(source, target) { for (var i = 0; i < depth; i++) { - if (source === sourceStack[i] && target === targetStack[i]) + if (source === sourceStack[i] && target === targetStack[i]) { return true; + } } return false; } function isWithinDepthLimit(type, stack) { if (depth >= 5) { - var target = type.target; + var target_2 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) + if (t.flags & 4096 && t.target === target_2) { count++; + } } return count < 5; } @@ -11420,10 +12998,15 @@ var ts; for (var i = 0; i < typeParameters.length; i++) { if (target === typeParameters[i]) { var inferences = context.inferences[i]; - var candidates = inferiority ? inferences.secondary || (inferences.secondary = []) : inferences.primary || (inferences.primary = []); - if (!ts.contains(candidates, source)) - candidates.push(source); - break; + if (!inferences.isFixed) { + var candidates = inferiority ? + inferences.secondary || (inferences.secondary = []) : + inferences.primary || (inferences.primary = []); + if (!ts.contains(candidates, source)) { + candidates.push(source); + } + } + return; } } } @@ -11438,8 +13021,8 @@ var ts; var targetTypes = target.types; var typeParameterCount = 0; var typeParameter; - for (var i = 0; i < targetTypes.length; i++) { - var t = targetTypes[i]; + for (var _i = 0; _i < targetTypes.length; _i++) { + var t = targetTypes[_i]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -11456,8 +13039,9 @@ var ts; } else if (source.flags & 16384) { var sourceTypes = source.types; - for (var i = 0; i < sourceTypes.length; i++) { - inferFromTypes(sourceTypes[i], target); + for (var _a = 0; _a < sourceTypes.length; _a++) { + var sourceType = sourceTypes[_a]; + inferFromTypes(sourceType, target); } } else if (source.flags & 48128 && (target.flags & (4096 | 8192) || @@ -11482,8 +13066,8 @@ var ts; } function inferFromProperties(source, target) { var properties = getPropertiesOfObjectType(target); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfObjectType(source, targetProp.name); if (sourceProp) { inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); @@ -11520,19 +13104,25 @@ var ts; } function getInferredType(context, index) { var inferredType = context.inferredTypes[index]; + var inferenceSucceeded; if (!inferredType) { var inferences = getInferenceCandidates(context, index); if (inferences.length) { var unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); - inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : inferenceFailureType; + inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : unknownType; + inferenceSucceeded = !!unionOrSuperType; } else { inferredType = emptyObjectType; + inferenceSucceeded = true; } - if (inferredType !== inferenceFailureType) { + if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; } + else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { + context.failedTypeParameterIndex = index; + } context.inferredTypes[index] = inferredType; } return inferredType; @@ -11549,17 +13139,17 @@ var ts; function getResolvedSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (ts.getFullWidth(node) > 0 && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; } return links.resolvedSymbol; } function isInTypeQuery(node) { while (node) { switch (node.kind) { - case 140: + case 144: return true; - case 64: - case 123: + case 65: + case 126: node = node.parent; continue; default: @@ -11568,16 +13158,19 @@ var ts; } ts.Debug.fail("should not get here"); } - function removeTypesFromUnionType(type, typeKind, isOfTypeKind) { + function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { if (type.flags & 16384) { var types = type.types; if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (narrowedType !== emptyObjectType) { + if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { return narrowedType; } } } + else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { + return getUnionType(emptyArray); + } return type; } function hasInitializer(node) { @@ -11596,12 +13189,12 @@ var ts; } return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 52 && node.operatorToken.kind <= 63) { + if (node.operatorToken.kind >= 53 && node.operatorToken.kind <= 64) { var n = node.left; - while (n.kind === 157) { + while (n.kind === 161) { n = n.expression; } - if (n.kind === 64 && getResolvedSymbol(n) === symbol) { + if (n.kind === 65 && getResolvedSymbol(n) === symbol) { return true; } } @@ -11615,46 +13208,46 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 165: + case 169: return isAssignedInBinaryExpression(node); - case 191: - case 148: + case 198: + case 152: return isAssignedInVariableDeclaration(node); - case 146: - case 147: - case 149: case 150: case 151: - case 152: case 153: case 154: + case 155: case 156: case 157: - case 163: + case 158: case 160: case 161: - case 162: + case 167: case 164: + case 165: case 166: - case 169: - case 172: + case 168: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: case 180: - case 181: + case 182: + case 183: case 184: case 185: case 186: - case 203: - case 204: case 187: case 188: - case 189: - case 206: + case 191: + case 192: + case 193: + case 220: + case 221: + case 194: + case 195: + case 196: + case 223: return ts.forEachChild(node, isAssignedIn); } return false; @@ -11662,10 +13255,10 @@ var ts; } function resolveLocation(node) { var containerNodes = []; - for (var parent = node.parent; parent; parent = parent.parent) { - if ((ts.isExpression(parent) || ts.isObjectLiteralMethod(node)) && - isContextSensitive(parent)) { - containerNodes.unshift(parent); + for (var parent_3 = node.parent; parent_3; parent_3 = parent_3.parent) { + if ((ts.isExpression(parent_3) || ts.isObjectLiteralMethod(node)) && + isContextSensitive(parent_3)) { + containerNodes.unshift(parent_3); } } ts.forEach(containerNodes, function (node) { getTypeOfNode(node); }); @@ -11690,17 +13283,17 @@ var ts; node = node.parent; var narrowedType = type; switch (node.kind) { - case 176: + case 183: if (child !== node.expression) { narrowedType = narrowType(type, node.expression, child === node.thenStatement); } break; - case 166: + case 170: if (child !== node.condition) { narrowedType = narrowType(type, node.condition, child === node.whenTrue); } break; - case 165: + case 169: if (child === node.right) { if (node.operatorToken.kind === 48) { narrowedType = narrowType(type, node.left, true); @@ -11710,14 +13303,14 @@ var ts; } } break; - case 210: - case 198: - case 193: - case 130: - case 129: - case 132: + case 227: + case 205: + case 200: + case 134: case 133: - case 131: + case 136: + case 137: + case 135: break loop; } if (narrowedType !== type) { @@ -11730,12 +13323,12 @@ var ts; } return type; function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 161 || expr.right.kind !== 8) { + if (expr.left.kind !== 165 || expr.right.kind !== 8) { return type; } var left = expr.left; var right = expr.right; - if (left.expression.kind !== 64 || getResolvedSymbol(left.expression) !== symbol) { + if (left.expression.kind !== 65 || getResolvedSymbol(left.expression) !== symbol) { return type; } var typeInfo = primitiveTypeInfo[right.text]; @@ -11744,16 +13337,16 @@ var ts; } if (assumeTrue) { if (!typeInfo) { - return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true); + return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true, false); } if (isTypeSubtypeOf(typeInfo.type, type)) { return typeInfo.type; } - return removeTypesFromUnionType(type, typeInfo.flags, false); + return removeTypesFromUnionType(type, typeInfo.flags, false, false); } else { if (typeInfo) { - return removeTypesFromUnionType(type, typeInfo.flags, true); + return removeTypesFromUnionType(type, typeInfo.flags, true, false); } return type; } @@ -11781,7 +13374,7 @@ var ts; } } function narrowTypeByInstanceof(type, expr, assumeTrue) { - if (type.flags & 1 || !assumeTrue || expr.left.kind !== 64 || getResolvedSymbol(expr.left) !== symbol) { + if (type.flags & 1 || !assumeTrue || expr.left.kind !== 65 || getResolvedSymbol(expr.left) !== symbol) { return type; } var rightType = checkExpression(expr.right); @@ -11803,9 +13396,9 @@ var ts; } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 157: + case 161: return narrowType(type, expr.expression, assumeTrue); - case 165: + case 169: var operator = expr.operatorToken.kind; if (operator === 30 || operator === 31) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -11816,11 +13409,11 @@ var ts; else if (operator === 49) { return narrowTypeByOr(type, expr, assumeTrue); } - else if (operator === 86) { + else if (operator === 87) { return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 163: + case 167: if (expr.operator === 46) { return narrowType(type, expr.operand, !assumeTrue); } @@ -11829,48 +13422,60 @@ var ts; return type; } } - function markLinkedImportsAsReferenced(node) { - var nodeLinks = getNodeLinks(node); - while (nodeLinks.importOnRightSide) { - var rightSide = nodeLinks.importOnRightSide; - nodeLinks.importOnRightSide = undefined; - getSymbolLinks(rightSide).referenced = true; - ts.Debug.assert((rightSide.flags & 8388608) !== 0); - nodeLinks = getNodeLinks(ts.getDeclarationOfKind(rightSide, 200)); - } - } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); - if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 159) { + if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 163) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression); } - if (symbol.flags & 8388608) { - var symbolLinks = getSymbolLinks(symbol); - if (!symbolLinks.referenced) { - var importOrExportAssignment = getLeftSideOfImportOrExportAssignment(node); - if (!importOrExportAssignment || - (importOrExportAssignment.flags & 1) || - (importOrExportAssignment.kind === 201)) { - symbolLinks.referenced = !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol)); - } - else { - var nodeLinks = getNodeLinks(importOrExportAssignment); - ts.Debug.assert(!nodeLinks.importOnRightSide); - nodeLinks.importOnRightSide = symbol; - } - } - if (symbolLinks.referenced) { - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + if (symbol.flags & 8388608 && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); } checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); + checkBlockScopedBindingCapturedInLoop(node, symbol); return getNarrowedTypeOfSymbol(getExportSymbolOfValueSymbolIfExported(symbol), node); } + function isInsideFunction(node, threshold) { + var current = node; + while (current && current !== threshold) { + if (ts.isFunctionLike(current)) { + return true; + } + current = current.parent; + } + return false; + } + function checkBlockScopedBindingCapturedInLoop(node, symbol) { + if (languageVersion >= 2 || + (symbol.flags & 2) === 0 || + symbol.valueDeclaration.parent.kind === 223) { + return; + } + var container = symbol.valueDeclaration; + while (container.kind !== 199) { + container = container.parent; + } + container = container.parent; + if (container.kind === 180) { + container = container.parent; + } + var inFunction = isInsideFunction(node.parent, container); + var current = container; + while (current && !ts.nodeStartsNewLexicalEnvironment(current)) { + if (isIterationStatement(current, false)) { + if (inFunction) { + grammarErrorOnFirstToken(current, ts.Diagnostics.Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher, ts.declarationNameToString(node)); + } + getNodeLinks(symbol.valueDeclaration).flags |= 256; + break; + } + current = current.parent; + } + } function captureLexicalThis(node, container) { - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; getNodeLinks(node).flags |= 2; - if (container.kind === 128 || container.kind === 131) { + if (container.kind === 132 || container.kind === 135) { getNodeLinks(classNode).flags |= 4; } else { @@ -11880,36 +13485,36 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 159) { + if (container.kind === 163) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 198: + case 205: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_body); break; - case 197: + case 204: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; - case 131: + case 135: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; - case 128: - case 127: + case 132: + case 131: if (container.flags & 128) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 124: + case 127: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; if (classNode) { var symbol = getSymbolOfNode(classNode); return container.flags & 128 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); @@ -11918,17 +13523,17 @@ var ts; } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 126) { + if (n.kind === 129) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 153 && node.parent.expression === node; - var enclosingClass = ts.getAncestor(node, 194); + var isCallExpression = node.parent.kind === 157 && node.parent.expression === node; + var enclosingClass = ts.getAncestor(node, 201); var baseClass; - if (enclosingClass && ts.getClassBaseTypeNode(enclosingClass)) { + if (enclosingClass && ts.getClassExtendsHeritageClauseElement(enclosingClass)) { var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); baseClass = classType.baseTypes.length && classType.baseTypes[0]; } @@ -11939,32 +13544,33 @@ var ts; var container = ts.getSuperContainer(node, true); if (container) { var canUseSuperExpression = false; + var needToCaptureLexicalThis; if (isCallExpression) { - canUseSuperExpression = container.kind === 131; + canUseSuperExpression = container.kind === 135; } else { - var needToCaptureLexicalThis = false; - while (container && container.kind === 159) { + needToCaptureLexicalThis = false; + while (container && container.kind === 163) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = true; } - if (container && container.parent && container.parent.kind === 194) { + if (container && container.parent && container.parent.kind === 201) { if (container.flags & 128) { canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133; + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137; } else { canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133 || - container.kind === 128 || - container.kind === 127 || - container.kind === 131; + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137 || + container.kind === 132 || + container.kind === 131 || + container.kind === 135; } } } @@ -11978,7 +13584,7 @@ var ts; getNodeLinks(node).flags |= 16; returnType = baseClass; } - if (container.kind === 131 && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 135 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); returnType = unknownType; } @@ -11988,7 +13594,7 @@ var ts; return returnType; } } - if (container.kind === 124) { + if (container.kind === 127) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { @@ -12024,9 +13630,9 @@ var ts; var declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -12041,7 +13647,7 @@ var ts; function getContextualTypeForReturnExpression(node) { var func = ts.getContainingFunction(node); if (func) { - if (func.type || func.kind === 131 || func.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 133))) { + if (func.type || func.kind === 135 || func.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 137))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(func)); } var signature = getContextualSignatureForFunctionLikeDeclaration(func); @@ -12061,7 +13667,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 155) { + if (template.parent.kind === 159) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -12069,7 +13675,7 @@ var ts; function getContextualTypeForBinaryOperand(node) { var binaryExpression = node.parent; var operator = binaryExpression.operatorToken.kind; - if (operator >= 52 && operator <= 63) { + if (operator >= 53 && operator <= 64) { if (node === binaryExpression.right) { return checkExpression(binaryExpression.left); } @@ -12090,8 +13696,9 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var i = 0; i < types.length; i++) { - var t = mapper(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var t = mapper(current); if (t) { if (!mappedType) { mappedType = t; @@ -12149,7 +13756,9 @@ var ts; var type = getContextualType(arrayLiteral); if (type) { var index = ts.indexOf(arrayLiteral.elements, node); - return getTypeOfPropertyOfContextualType(type, "" + index) || getIndexTypeOfContextualType(type, 1); + return getTypeOfPropertyOfContextualType(type, "" + index) + || getIndexTypeOfContextualType(type, 1) + || (languageVersion >= 2 ? checkIteratedType(type, undefined) : undefined); } return undefined; } @@ -12166,32 +13775,32 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 148: + case 198: + case 129: + case 132: + case 131: + case 152: return getContextualTypeForInitializerExpression(node); - case 159: - case 184: + case 163: + case 191: return getContextualTypeForReturnExpression(node); - case 153: - case 154: - return getContextualTypeForArgument(parent, node); - case 156: - return getTypeFromTypeNode(parent.type); - case 165: - return getContextualTypeForBinaryOperand(node); - case 207: - return getContextualTypeForObjectLiteralElement(parent); - case 149: - return getContextualTypeForElementExpression(node); - case 166: - return getContextualTypeForConditionalOperand(node); - case 171: - ts.Debug.assert(parent.parent.kind === 167); - return getContextualTypeForSubstitutionExpression(parent.parent, node); case 157: + case 158: + return getContextualTypeForArgument(parent, node); + case 160: + return getTypeFromTypeNodeOrHeritageClauseElement(parent.type); + case 169: + return getContextualTypeForBinaryOperand(node); + case 224: + return getContextualTypeForObjectLiteralElement(parent); + case 153: + return getContextualTypeForElementExpression(node); + case 170: + return getContextualTypeForConditionalOperand(node); + case 176: + ts.Debug.assert(parent.parent.kind === 171); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 161: return getContextualType(parent); } return undefined; @@ -12206,14 +13815,16 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 158 || node.kind === 159; + return node.kind === 162 || node.kind === 163; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) ? getContextualSignature(node) : undefined; } function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); - var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getContextualType(node); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + var type = ts.isObjectLiteralMethod(node) + ? getContextualTypeForObjectLiteralMethod(node) + : getContextualType(node); if (!type) { return undefined; } @@ -12222,12 +13833,13 @@ var ts; } var signatureList; var types = type.types; - for (var i = 0; i < types.length; i++) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; if (signatureList && - getSignaturesOfObjectOrUnionType(types[i], 0).length > 1) { + getSignaturesOfObjectOrUnionType(current, 0).length > 1) { return undefined; } - var signature = getNonGenericSignature(types[i]); + var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { signatureList = [signature]; @@ -12253,13 +13865,13 @@ var ts; } function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 165 && parent.operatorToken.kind === 52 && parent.left === node) { + if (parent.kind === 169 && parent.operatorToken.kind === 53 && parent.left === node) { return true; } - if (parent.kind === 207) { + if (parent.kind === 224) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 149) { + if (parent.kind === 153) { return isAssignmentTarget(parent); } return false; @@ -12281,7 +13893,7 @@ var ts; var elementTypes = []; ts.forEach(elements, function (e) { var type = checkExpression(e, contextualMapper); - if (e.kind === 169) { + if (e.kind === 173) { elementTypes.push(getIndexTypeOfType(type, 1) || anyType); hasSpreadElement = true; } @@ -12298,7 +13910,7 @@ var ts; return createArrayType(getUnionType(elementTypes)); } function isNumericName(name) { - return name.kind === 124 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 127 ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { return allConstituentTypesHaveKind(checkComputedPropertyName(name), 1 | 132); @@ -12325,21 +13937,24 @@ var ts; var propertiesArray = []; var contextualType = getContextualType(node); var typeFlags; - for (var i = 0; i < node.properties.length; i++) { - var memberDecl = node.properties[i]; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 207 || - memberDecl.kind === 208 || + if (memberDecl.kind === 224 || + memberDecl.kind === 225 || ts.isObjectLiteralMethod(memberDecl)) { - if (memberDecl.kind === 207) { - var type = checkPropertyAssignment(memberDecl, contextualMapper); + var type = void 0; + if (memberDecl.kind === 224) { + type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 130) { - var type = checkObjectLiteralMethod(memberDecl, contextualMapper); + else if (memberDecl.kind === 134) { + type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 208); - var type = memberDecl.name.kind === 124 ? unknownType : checkExpression(memberDecl.name, contextualMapper); + ts.Debug.assert(memberDecl.kind === 225); + type = memberDecl.name.kind === 127 + ? unknownType + : checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); @@ -12353,7 +13968,7 @@ var ts; member = prop; } else { - ts.Debug.assert(memberDecl.kind === 132 || memberDecl.kind === 133); + ts.Debug.assert(memberDecl.kind === 136 || memberDecl.kind === 137); checkAccessorDeclaration(memberDecl); } if (!ts.hasDynamicName(memberDecl)) { @@ -12378,15 +13993,15 @@ var ts; } } } - var result = propTypes.length ? getUnionType(propTypes) : undefinedType; - typeFlags |= result.flags; - return result; + var result_1 = propTypes.length ? getUnionType(propTypes) : undefinedType; + typeFlags |= result_1.flags; + return result_1; } return undefined; } } function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 128; + return s.valueDeclaration ? s.valueDeclaration.kind : 132; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 16 | 128 : 0; @@ -12396,7 +14011,7 @@ var ts; if (!(flags & (32 | 64))) { return; } - var enclosingClassDeclaration = ts.getAncestor(node, 194); + var enclosingClassDeclaration = ts.getAncestor(node, 201); var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (flags & 32) { @@ -12405,7 +14020,7 @@ var ts; } return; } - if (left.kind === 90) { + if (left.kind === 91) { return; } if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { @@ -12443,7 +14058,7 @@ var ts; } getNodeLinks(node).resolvedSymbol = prop; if (prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { error(right, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); } else { @@ -12455,12 +14070,14 @@ var ts; return anyType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 151 ? node.expression : node.left; + var left = node.kind === 155 + ? node.expression + : node.left; var type = checkExpressionOrQualifiedName(left); if (type !== unknownType && type !== anyType) { var prop = getPropertyOfType(getWidenedType(type), propertyName); if (prop && prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { return false; } else { @@ -12475,7 +14092,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 154 && node.parent.expression === node) { + if (node.parent.kind === 158 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -12498,15 +14115,15 @@ var ts; return unknownType; } if (node.argumentExpression) { - var name = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name !== undefined) { - var prop = getPropertyOfType(objectType, name); + var name_6 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_6 !== undefined) { + var prop = getPropertyOfType(objectType, name_6); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_6, symbolToString(objectType.symbol)); return unknownType; } } @@ -12571,7 +14188,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 155) { + if (node.kind === 159) { checkExpression(node.template); } else { @@ -12593,22 +14210,22 @@ var ts; var specializedIndex = -1; var spliceIndex; ts.Debug.assert(!result.length); - for (var i = 0; i < signatures.length; i++) { - var signature = signatures[i]; + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent = signature.declaration && signature.declaration.parent; + var parent_4 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent === lastParent) { + if (lastParent && parent_4 === lastParent) { index++; } else { - lastParent = parent; + lastParent = parent_4; index = cutoffIndex; } } else { index = cutoffIndex = result.length; - lastParent = parent; + lastParent = parent_4; } lastSymbol = symbol; if (signature.hasStringLiterals) { @@ -12624,7 +14241,7 @@ var ts; } function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { - if (args[i].kind === 169) { + if (args[i].kind === 173) { return i; } } @@ -12634,15 +14251,15 @@ var ts; var adjustedArgCount; var typeArguments; var callIsIncomplete; - if (node.kind === 155) { + if (node.kind === 159) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 167) { + if (tagExpression.template.kind === 171) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); - callIsIncomplete = ts.getFullWidth(lastSpan.literal) === 0 || !!lastSpan.literal.isUnterminated; + callIsIncomplete = ts.nodeIsMissing(lastSpan.literal) || !!lastSpan.literal.isUnterminated; } else { var templateLiteral = tagExpression.template; @@ -12653,7 +14270,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 154); + ts.Debug.assert(callExpression.kind === 158); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -12692,20 +14309,28 @@ var ts; }); return getSignatureInstantiation(signature, getInferredTypes(context)); } - function inferTypeArguments(signature, args, excludeArgument) { + function inferTypeArguments(signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var context = createInferenceContext(typeParameters, false); var inferenceMapper = createInferenceMapper(context); + for (var i = 0; i < typeParameters.length; i++) { + if (!context.inferences[i].isFixed) { + context.inferredTypes[i] = undefined; + } + } + if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { + context.failedTypeParameterIndex = undefined; + } for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - if (i === 0 && args[i].parent.kind === 155) { - var argType = globalTemplateStringsArrayType; + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = void 0; + if (i === 0 && args[i].parent.kind === 159) { + argType = globalTemplateStringsArrayType; } else { var mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; - var argType = checkExpressionWithContextualType(arg, paramType, mapper); + argType = checkExpressionWithContextualType(arg, paramType, mapper); } inferTypes(context, argType, paramType); } @@ -12714,26 +14339,19 @@ var ts; for (var i = 0; i < args.length; i++) { if (excludeArgument[i] === false) { var arg = args[i]; - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); inferTypes(context, checkExpressionWithContextualType(arg, paramType, inferenceMapper), paramType); } } } - var inferredTypes = getInferredTypes(context); - context.failedTypeParameterIndex = ts.indexOf(inferredTypes, inferenceFailureType); - for (var i = 0; i < inferredTypes.length; i++) { - if (inferredTypes[i] === inferenceFailureType) { - inferredTypes[i] = unknownType; - } - } - return context; + getInferredTypes(context); } function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; for (var i = 0; i < typeParameters.length; i++) { var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); + var typeArgument = getTypeFromTypeNodeOrHeritageClauseElement(typeArgNode); typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); @@ -12747,9 +14365,11 @@ var ts; function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - var argType = i === 0 && node.kind === 155 ? globalTemplateStringsArrayType : arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = i === 0 && node.kind === 159 ? globalTemplateStringsArrayType : + arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : + checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined, ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) { return false; } @@ -12759,10 +14379,10 @@ var ts; } function getEffectiveCallArguments(node) { var args; - if (node.kind === 155) { + if (node.kind === 159) { var template = node.template; args = [template]; - if (template.kind === 167) { + if (template.kind === 171) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -12774,9 +14394,9 @@ var ts; return args; } function getEffectiveTypeArguments(callExpression) { - if (callExpression.expression.kind === 90) { - var containingClass = ts.getAncestor(callExpression, 194); - var baseClassTypeNode = containingClass && ts.getClassBaseTypeNode(containingClass); + if (callExpression.expression.kind === 91) { + var containingClass = ts.getAncestor(callExpression, 201); + var baseClassTypeNode = containingClass && ts.getClassExtendsHeritageClauseElement(containingClass); return baseClassTypeNode && baseClassTypeNode.typeArguments; } else { @@ -12784,11 +14404,11 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray) { - var isTaggedTemplate = node.kind === 155; + var isTaggedTemplate = node.kind === 159; var typeArguments; if (!isTaggedTemplate) { typeArguments = getEffectiveTypeArguments(node); - if (node.expression.kind !== 90) { + if (node.expression.kind !== 91) { ts.forEach(typeArguments, checkSourceElement); } } @@ -12843,33 +14463,37 @@ var ts; error(node, ts.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target); } if (!produceDiagnostics) { - for (var i = 0, n = candidates.length; i < n; i++) { - if (hasCorrectArity(node, args, candidates[i])) { - return candidates[i]; + for (var _i = 0; _i < candidates.length; _i++) { + var candidate = candidates[_i]; + if (hasCorrectArity(node, args, candidate)) { + return candidate; } } } return resolveErrorCall(node); function chooseOverload(candidates, relation) { - for (var i = 0; i < candidates.length; i++) { - if (!hasCorrectArity(node, args, candidates[i])) { + for (var _i = 0; _i < candidates.length; _i++) { + var originalCandidate = candidates[_i]; + if (!hasCorrectArity(node, args, originalCandidate)) { continue; } - var originalCandidate = candidates[i]; - var inferenceResult; + var candidate = void 0; + var typeArgumentsAreValid = void 0; + var inferenceContext = originalCandidate.typeParameters + ? createInferenceContext(originalCandidate.typeParameters, false) + : undefined; while (true) { - var candidate = originalCandidate; + candidate = originalCandidate; if (candidate.typeParameters) { - var typeArgumentTypes; - var typeArgumentsAreValid; + var typeArgumentTypes = void 0; if (typeArguments) { typeArgumentTypes = new Array(candidate.typeParameters.length); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); } else { - inferenceResult = inferTypeArguments(candidate, args, excludeArgument); - typeArgumentsAreValid = inferenceResult.failedTypeParameterIndex < 0; - typeArgumentTypes = inferenceResult.inferredTypes; + inferTypeArguments(candidate, args, excludeArgument, inferenceContext); + typeArgumentsAreValid = inferenceContext.failedTypeParameterIndex === undefined; + typeArgumentTypes = inferenceContext.inferredTypes; } if (!typeArgumentsAreValid) { break; @@ -12893,7 +14517,7 @@ var ts; else { candidateForTypeArgumentError = originalCandidate; if (!typeArguments) { - resultOfFailedInference = inferenceResult; + resultOfFailedInference = inferenceContext; } } } @@ -12906,7 +14530,7 @@ var ts; } } function resolveCallExpression(node, candidatesOutArray) { - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { var superType = checkSuperExpression(node.expression); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, 1), candidatesOutArray); @@ -12990,13 +14614,13 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 153) { + if (node.kind === 157) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 154) { + else if (node.kind === 158) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 155) { + else if (node.kind === 159) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else { @@ -13008,15 +14632,15 @@ var ts; function checkCallExpression(node) { checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); var signature = getResolvedSignature(node); - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { return voidType; } - if (node.kind === 154) { + if (node.kind === 158) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 131 && declaration.kind !== 135 && - declaration.kind !== 139) { + declaration.kind !== 139 && + declaration.kind !== 143) { if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } @@ -13026,14 +14650,11 @@ var ts; return getReturnTypeOfSignature(signature); } function checkTaggedTemplateExpression(node) { - if (languageVersion < 2) { - grammarErrorOnFirstToken(node.template, ts.Diagnostics.Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher); - } return getReturnTypeOfSignature(getResolvedSignature(node)); } function checkTypeAssertion(node) { var exprType = checkExpression(node.expression); - var targetType = getTypeFromTypeNode(node.type); + var targetType = getTypeFromTypeNodeOrHeritageClauseElement(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); if (!(isTypeAssignableTo(targetType, widenedType))) { @@ -13044,9 +14665,13 @@ var ts; } function getTypeAtPosition(signature, pos) { if (pos >= 0) { - return signature.hasRestParameter ? pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + return signature.hasRestParameter ? + pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; } - return signature.hasRestParameter ? getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]) : anyArrayType; + return signature.hasRestParameter ? + getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]) : + anyArrayType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -13066,15 +14691,16 @@ var ts; if (!func.body) { return unknownType; } - if (func.body.kind !== 172) { - var type = checkExpressionCached(func.body, contextualMapper); + var type; + if (func.body.kind !== 179) { + type = checkExpressionCached(func.body, contextualMapper); } else { var types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); if (types.length === 0) { return voidType; } - var type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); + type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); if (!type) { error(func, ts.Diagnostics.No_best_common_type_exists_among_return_expressions); return unknownType; @@ -13104,7 +14730,7 @@ var ts; }); } function bodyContainsSingleThrowStatement(body) { - return (body.statements.length === 1) && (body.statements[0].kind === 188); + return (body.statements.length === 1) && (body.statements[0].kind === 195); } function checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(func, returnType) { if (!produceDiagnostics) { @@ -13113,7 +14739,7 @@ var ts; if (returnType === voidType || returnType === anyType) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 172) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 179) { return; } var bodyBlock = func.body; @@ -13126,9 +14752,9 @@ var ts; error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement); } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 158) { + if (!hasGrammarError && node.kind === 162) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { @@ -13156,25 +14782,25 @@ var ts; checkSignatureDeclaration(node); } } - if (produceDiagnostics && node.kind !== 130 && node.kind !== 129) { + if (produceDiagnostics && node.kind !== 134 && node.kind !== 133) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); if (node.type) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { - if (node.body.kind === 172) { + if (node.body.kind === 179) { checkSourceElement(node.body); } else { var exprType = checkExpression(node.body); if (node.type) { - checkTypeAssignableTo(exprType, getTypeFromTypeNode(node.type), node.body, undefined); + checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement(node.type), node.body, undefined); } checkFunctionExpressionBodies(node.body); } @@ -13187,22 +14813,24 @@ var ts; } return true; } - function checkReferenceExpression(n, invalidReferenceMessage, constantVarianleMessage) { + function checkReferenceExpression(n, invalidReferenceMessage, constantVariableMessage) { function findSymbol(n) { var symbol = getNodeLinks(n).resolvedSymbol; return symbol && getExportSymbolOfValueSymbolIfExported(symbol); } function isReferenceOrErrorExpression(n) { switch (n.kind) { - case 64: + case 65: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; - case 151: + } + case 155: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; - case 152: + } + case 156: return true; - case 157: + case 161: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -13210,20 +14838,22 @@ var ts; } function isConstVariableReference(n) { switch (n.kind) { - case 64: - case 151: + case 65: + case 155: { var symbol = findSymbol(n); - return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 4096) !== 0; - case 152: + return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 8192) !== 0; + } + case 156: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 8) { - var name = index.text; - var prop = getPropertyOfType(getTypeOfSymbol(symbol), name); - return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 4096) !== 0; + var name_7 = index.text; + var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_7); + return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 8192) !== 0; } return false; - case 157: + } + case 161: return isConstVariableReference(n.expression); default: return false; @@ -13234,13 +14864,13 @@ var ts; return false; } if (isConstVariableReference(n)) { - error(n, constantVarianleMessage); + error(n, constantVariableMessage); return false; } return true; } function checkDeleteExpression(node) { - if (node.parserContextFlags & 1 && node.expression.kind === 64) { + if (node.parserContextFlags & 1 && node.expression.kind === 65) { grammarErrorOnNode(node.expression, ts.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode); } var operandType = checkExpression(node.expression); @@ -13294,8 +14924,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (types[i].flags & kind) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (current.flags & kind) { return true; } } @@ -13309,8 +14940,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (!(types[i].flags & kind)) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (!(current.flags & kind)) { return false; } } @@ -13344,18 +14976,19 @@ var ts; } function checkObjectLiteralAssignment(node, sourceType, contextualMapper) { var properties = node.properties; - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { - var name = p.name; - var type = sourceType.flags & 1 ? sourceType : getTypeOfPropertyOfType(sourceType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(sourceType, 1) || - getIndexTypeOfType(sourceType, 0); + for (var _i = 0; _i < properties.length; _i++) { + var p = properties[_i]; + if (p.kind === 224 || p.kind === 225) { + var name_8 = p.name; + var type = sourceType.flags & 1 ? sourceType : + getTypeOfPropertyOfType(sourceType, name_8.text) || + isNumericLiteralName(name_8.text) && getIndexTypeOfType(sourceType, 1) || + getIndexTypeOfType(sourceType, 0); if (type) { - checkDestructuringAssignment(p.initializer || name, type); + checkDestructuringAssignment(p.initializer || name_8, type); } else { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name)); + error(name_8, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_8)); } } else { @@ -13372,15 +15005,22 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { var propName = "" + i; - var type = sourceType.flags & 1 ? sourceType : isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : getIndexTypeOfType(sourceType, 1); + var type = sourceType.flags & 1 ? sourceType : + isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : + getIndexTypeOfType(sourceType, 1); if (type) { checkDestructuringAssignment(e, type, contextualMapper); } else { - error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + if (isTupleType(sourceType)) { + error(e, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), sourceType.elementTypes.length, elements.length); + } + else { + error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } } } else { @@ -13396,14 +15036,14 @@ var ts; return sourceType; } function checkDestructuringAssignment(target, sourceType, contextualMapper) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 149) { + if (target.kind === 153) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -13420,32 +15060,32 @@ var ts; checkGrammarEvalOrArgumentsInStrictMode(node, node.left); } var operator = node.operatorToken.kind; - if (operator === 52 && (node.left.kind === 150 || node.left.kind === 149)) { + if (operator === 53 && (node.left.kind === 154 || node.left.kind === 153)) { return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper); } var leftType = checkExpression(node.left, contextualMapper); var rightType = checkExpression(node.right, contextualMapper); switch (operator) { case 35: - case 55: - case 36: case 56: - case 37: + case 36: case 57: - case 34: - case 54: - case 40: + case 37: case 58: - case 41: + case 34: + case 55: + case 40: case 59: - case 42: + case 41: case 60: - case 44: - case 62: - case 45: - case 63: - case 43: + case 42: case 61: + case 44: + case 63: + case 45: + case 64: + case 43: + case 62: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) @@ -13465,7 +15105,7 @@ var ts; } return numberType; case 33: - case 53: + case 54: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) @@ -13489,7 +15129,7 @@ var ts; reportOperatorError(); return anyType; } - if (operator === 53) { + if (operator === 54) { checkAssignmentOperator(resultType); } return resultType; @@ -13508,22 +15148,24 @@ var ts; reportOperatorError(); } return booleanType; - case 86: + case 87: return checkInstanceOfExpression(node, leftType, rightType); - case 85: + case 86: return checkInExpression(node, leftType, rightType); case 48: return rightType; case 49: return getUnionType([leftType, rightType]); - case 52: + case 53: checkAssignmentOperator(rightType); return rightType; case 23: return rightType; } function checkForDisallowedESSymbolOperand(operator) { - var offendingSymbolOperand = someConstituentTypeHasKind(leftType, 1048576) ? node.left : someConstituentTypeHasKind(rightType, 1048576) ? node.right : undefined; + var offendingSymbolOperand = someConstituentTypeHasKind(leftType, 1048576) ? node.left : + someConstituentTypeHasKind(rightType, 1048576) ? node.right : + undefined; if (offendingSymbolOperand) { error(offendingSymbolOperand, ts.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, ts.tokenToString(operator)); return false; @@ -13533,20 +15175,20 @@ var ts; function getSuggestedBooleanOperator(operator) { switch (operator) { case 44: - case 62: + case 63: return 49; case 45: - case 63: + case 64: return 31; case 43: - case 61: + case 62: return 48; default: return undefined; } } function checkAssignmentOperator(valueType) { - if (produceDiagnostics && operator >= 52 && operator <= 63) { + if (produceDiagnostics && operator >= 53 && operator <= 64) { var ok = checkReferenceExpression(node.left, ts.Diagnostics.Invalid_left_hand_side_of_assignment_expression, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); if (ok) { checkTypeAssignableTo(valueType, leftType, node.left, undefined); @@ -13592,14 +15234,14 @@ var ts; return links.resolvedType; } function checkPropertyAssignment(node, contextualMapper) { - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); } function checkObjectLiteralMethod(node, contextualMapper) { checkGrammarMethod(node); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -13625,7 +15267,7 @@ var ts; } function checkExpressionOrQualifiedName(node, contextualMapper) { var type; - if (node.kind == 123) { + if (node.kind == 126) { type = checkQualifiedName(node); } else { @@ -13633,9 +15275,9 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 151 && node.parent.expression === node) || - (node.parent.kind === 152 && node.parent.expression === node) || - ((node.kind === 64 || node.kind === 123) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 155 && node.parent.expression === node) || + (node.parent.kind === 156 && node.parent.expression === node) || + ((node.kind === 65 || node.kind === 126) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -13648,65 +15290,67 @@ var ts; } function checkExpressionWorker(node, contextualMapper) { switch (node.kind) { - case 64: + case 65: return checkIdentifier(node); - case 92: + case 93: return checkThisExpression(node); - case 90: + case 91: return checkSuperExpression(node); - case 88: + case 89: return nullType; - case 94: - case 79: + case 95: + case 80: return booleanType; case 7: return checkNumericLiteral(node); - case 167: + case 171: return checkTemplateExpression(node); case 8: case 10: return stringType; case 9: return globalRegExpType; - case 149: - return checkArrayLiteral(node, contextualMapper); - case 150: - return checkObjectLiteral(node, contextualMapper); - case 151: - return checkPropertyAccessExpression(node); - case 152: - return checkIndexedAccess(node); case 153: + return checkArrayLiteral(node, contextualMapper); case 154: - return checkCallExpression(node); + return checkObjectLiteral(node, contextualMapper); case 155: - return checkTaggedTemplateExpression(node); + return checkPropertyAccessExpression(node); case 156: - return checkTypeAssertion(node); + return checkIndexedAccess(node); case 157: - return checkExpression(node.expression, contextualMapper); case 158: + return checkCallExpression(node); case 159: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 161: - return checkTypeOfExpression(node); + return checkTaggedTemplateExpression(node); case 160: - return checkDeleteExpression(node); + return checkTypeAssertion(node); + case 161: + return checkExpression(node.expression, contextualMapper); + case 174: + return checkClassExpression(node); case 162: - return checkVoidExpression(node); case 163: - return checkPrefixUnaryExpression(node); - case 164: - return checkPostfixUnaryExpression(node); + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); case 165: - return checkBinaryExpression(node, contextualMapper); + return checkTypeOfExpression(node); + case 164: + return checkDeleteExpression(node); case 166: - return checkConditionalExpression(node, contextualMapper); - case 169: - return checkSpreadElementExpression(node, contextualMapper); - case 170: - return undefinedType; + return checkVoidExpression(node); + case 167: + return checkPrefixUnaryExpression(node); case 168: + return checkPostfixUnaryExpression(node); + case 169: + return checkBinaryExpression(node, contextualMapper); + case 170: + return checkConditionalExpression(node, contextualMapper); + case 173: + return checkSpreadElementExpression(node, contextualMapper); + case 175: + return undefinedType; + case 172: checkYieldExpression(node); return unknownType; } @@ -13723,12 +15367,18 @@ var ts; } } function checkParameter(node) { - checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + // Grammar checking + // It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs as the + // Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code + // or if its FunctionBody is strict code(11.1.5). + // It is a SyntaxError if the identifier eval or arguments appears within a FormalParameterList of a + // strict mode FunctionLikeDeclaration or FunctionExpression(13.1) + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); checkVariableLikeDeclaration(node); var func = ts.getContainingFunction(node); if (node.flags & 112) { func = ts.getContainingFunction(node); - if (!(func.kind === 131 && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 135 && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } @@ -13742,12 +15392,12 @@ var ts; } } function checkSignatureDeclaration(node) { - if (node.kind === 136) { + if (node.kind === 140) { checkGrammarIndexSignature(node); } - else if (node.kind === 138 || node.kind === 193 || node.kind === 139 || - node.kind === 134 || node.kind === 131 || - node.kind === 135) { + else if (node.kind === 142 || node.kind === 200 || node.kind === 143 || + node.kind === 138 || node.kind === 135 || + node.kind === 139) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -13759,10 +15409,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 135: + case 139: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 134: + case 138: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -13771,7 +15421,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 195) { + if (node.kind === 202) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -13781,11 +15431,12 @@ var ts; if (indexSymbol) { var seenNumericIndexer = false; var seenStringIndexer = false; - for (var i = 0, len = indexSymbol.declarations.length; i < len; ++i) { - var declaration = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var declaration = decl; if (declaration.parameters.length === 1 && declaration.parameters[0].type) { switch (declaration.parameters[0].type.kind) { - case 119: + case 121: if (!seenStringIndexer) { seenStringIndexer = true; } @@ -13793,7 +15444,7 @@ var ts; error(declaration, ts.Diagnostics.Duplicate_string_index_signature); } break; - case 117: + case 119: if (!seenNumericIndexer) { seenNumericIndexer = true; } @@ -13807,7 +15458,7 @@ var ts; } } function checkPropertyDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); } function checkMethodDeclaration(node) { @@ -13830,40 +15481,40 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 153 && n.expression.kind === 90; + return n.kind === 157 && n.expression.kind === 91; } function containsSuperCall(n) { if (isSuperCallExpression(n)) { return true; } switch (n.kind) { - case 158: - case 193: - case 159: - case 150: return false; + case 162: + case 200: + case 163: + case 154: return false; default: return ts.forEachChild(n, containsSuperCall); } } function markThisReferencesAsErrors(n) { - if (n.kind === 92) { + if (n.kind === 93) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 158 && n.kind !== 193) { + else if (n.kind !== 162 && n.kind !== 200) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 128 && + return n.kind === 132 && !(n.flags & 128) && !!n.initializer; } - if (ts.getClassBaseTypeNode(node.parent)) { + if (ts.getClassExtendsHeritageClauseElement(node.parent)) { if (containsSuperCall(node.body)) { var superCallShouldBeFirst = ts.forEach(node.parent.members, isInstancePropertyWithInitializer) || - ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); + ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); if (superCallShouldBeFirst) { var statements = node.body.statements; - if (!statements.length || statements[0].kind !== 175 || !isSuperCallExpression(statements[0].expression)) { + if (!statements.length || statements[0].kind !== 182 || !isSuperCallExpression(statements[0].expression)) { error(node, ts.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); } else { @@ -13879,13 +15530,13 @@ var ts; function checkAccessorDeclaration(node) { if (produceDiagnostics) { checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); - if (node.kind === 132) { + if (node.kind === 136) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && !(bodyContainsAReturnStatement(node.body) || bodyContainsSingleThrowStatement(node.body))) { error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement); } } if (!ts.hasDynamicName(node)) { - var otherKind = node.kind === 132 ? 133 : 132; + var otherKind = node.kind === 136 ? 137 : 136; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 112) !== (otherAccessor.flags & 112))) { @@ -13904,9 +15555,18 @@ var ts; } checkFunctionLikeDeclaration(node); } - function checkTypeReference(node) { + function checkMissingDeclaration(node) { + checkDecorators(node); + } + function checkTypeReferenceNode(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkHeritageClauseElement(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkTypeReferenceOrHeritageClauseElement(node) { checkGrammarTypeArguments(node, node.typeArguments); - var type = getTypeFromTypeReferenceNode(node); + var type = getTypeFromTypeReferenceOrHeritageClauseElement(node); if (type !== unknownType && node.typeArguments) { var len = node.typeArguments.length; for (var i = 0; i < len; i++) { @@ -13959,9 +15619,9 @@ var ts; return; } var signaturesToCheck; - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 195) { - ts.Debug.assert(signatureDeclarationNode.kind === 134 || signatureDeclarationNode.kind === 135); - var signatureKind = signatureDeclarationNode.kind === 134 ? 0 : 1; + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 202) { + ts.Debug.assert(signatureDeclarationNode.kind === 138 || signatureDeclarationNode.kind === 139); + var signatureKind = signatureDeclarationNode.kind === 138 ? 0 : 1; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); var containingType = getDeclaredTypeOfSymbol(containingSymbol); signaturesToCheck = getSignaturesOfType(containingType, signatureKind); @@ -13969,8 +15629,8 @@ var ts; else { signaturesToCheck = getSignaturesOfSymbol(getSymbolOfNode(signatureDeclarationNode)); } - for (var i = 0; i < signaturesToCheck.length; i++) { - var otherSignature = signaturesToCheck[i]; + for (var _i = 0; _i < signaturesToCheck.length; _i++) { + var otherSignature = signaturesToCheck[_i]; if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { return; } @@ -13979,7 +15639,7 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 195 && ts.isInAmbientContext(n)) { + if (n.parent.kind !== 202 && ts.isInAmbientContext(n)) { if (!(flags & 2)) { flags |= 1; } @@ -14036,7 +15696,7 @@ var ts; var declarations = symbol.declarations; var isConstructor = (symbol.flags & 16384) !== 0; function reportImplementationExpectedError(node) { - if (node.name && ts.getFullWidth(node.name) === 0) { + if (node.name && ts.nodeIsMissing(node.name)) { return; } var seen = false; @@ -14050,16 +15710,16 @@ var ts; }); if (subsequentNode) { if (subsequentNode.kind === node.kind) { - var errorNode = subsequentNode.name || subsequentNode; + var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - ts.Debug.assert(node.kind === 130 || node.kind === 129); + ts.Debug.assert(node.kind === 134 || node.kind === 133); ts.Debug.assert((node.flags & 128) !== (subsequentNode.flags & 128)); var diagnostic = node.flags & 128 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode, diagnostic); + error(errorNode_1, diagnostic); return; } else if (ts.nodeIsPresent(subsequentNode.body)) { - error(errorNode, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); + error(errorNode_1, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); return; } } @@ -14075,14 +15735,15 @@ var ts; var isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & 1536; var duplicateFunctionDeclaration = false; var multipleConstructorImplementation = false; - for (var i = 0; i < declarations.length; i++) { - var node = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 195 || node.parent.kind === 141 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 202 || node.parent.kind === 145 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 193 || node.kind === 130 || node.kind === 129 || node.kind === 131) { + if (node.kind === 200 || node.kind === 134 || node.kind === 133 || node.kind === 135) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -14133,9 +15794,10 @@ var ts; var signatures = getSignaturesOfSymbol(symbol); var bodySignature = getSignatureFromDeclaration(bodyDeclaration); if (!bodySignature.hasStringLiterals) { - for (var i = 0, len = signatures.length; i < len; ++i) { - if (!signatures[i].hasStringLiterals && !isSignatureAssignableTo(bodySignature, signatures[i])) { - error(signatures[i].declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); + for (var _a = 0; _a < signatures.length; _a++) { + var signature = signatures[_a]; + if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } } @@ -14147,7 +15809,6 @@ var ts; if (!produceDiagnostics) { return; } - var symbol; var symbol = node.localSymbol; if (!symbol) { symbol = getSymbolOfNode(node); @@ -14179,16 +15840,18 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 195: + case 202: return 2097152; - case 198: - return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 194: - case 197: + case 205: + return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 + ? 4194304 | 1048576 + : 4194304; + case 201: + case 204: return 2097152 | 1048576; - case 200: + case 208: var result = 0; - var target = resolveImport(getSymbolOfNode(d)); + var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); return result; default: @@ -14196,6 +15859,49 @@ var ts; } } } + function checkDecorator(node) { + var expression = node.expression; + var exprType = checkExpression(expression); + switch (node.parent.kind) { + case 201: + var classSymbol = getSymbolOfNode(node.parent); + var classConstructorType = getTypeOfSymbol(classSymbol); + var classDecoratorType = instantiateSingleCallFunctionType(globalClassDecoratorType, [classConstructorType]); + checkTypeAssignableTo(exprType, classDecoratorType, node); + break; + case 132: + checkTypeAssignableTo(exprType, globalPropertyDecoratorType, node); + break; + case 134: + case 136: + case 137: + var methodType = getTypeOfNode(node.parent); + var methodDecoratorType = instantiateSingleCallFunctionType(globalMethodDecoratorType, [methodType]); + checkTypeAssignableTo(exprType, methodDecoratorType, node); + break; + case 129: + checkTypeAssignableTo(exprType, globalParameterDecoratorType, node); + break; + } + } + function checkDecorators(node) { + if (!node.decorators) { + return; + } + switch (node.kind) { + case 201: + case 134: + case 136: + case 137: + case 132: + case 129: + emitDecorate = true; + break; + default: + return; + } + ts.forEach(node.decorators, checkDecorator); + } function checkFunctionDeclaration(node) { if (produceDiagnostics) { checkFunctionLikeDeclaration(node) || @@ -14208,8 +15914,9 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkDecorators(node); checkSignatureDeclaration(node); - if (node.name.kind === 124) { + if (node.name && node.name.kind === 127) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { @@ -14227,18 +15934,18 @@ var ts; } checkSourceElement(node.body); if (node.type && !isAccessor(node.kind)) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { reportImplicitAnyError(node, anyType); } } function checkBlock(node) { - if (node.kind === 172) { + if (node.kind === 179) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 199) { + if (ts.isFunctionBlock(node) || node.kind === 206) { checkFunctionExpressionBodies(node); } } @@ -14256,19 +15963,19 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 128 || - node.kind === 127 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || - node.kind === 133) { + if (node.kind === 132 || + node.kind === 131 || + node.kind === 134 || + node.kind === 133 || + node.kind === 136 || + node.kind === 137) { return false; } if (ts.isInAmbientContext(node)) { return false; } var root = getRootDeclaration(node); - if (root.kind === 126 && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 129 && ts.nodeIsMissing(root.parent.body)) { return false; } return true; @@ -14282,8 +15989,8 @@ var ts; var current = node; while (current) { if (getNodeCheckFlags(current) & 4) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + var isDeclaration_1 = node.kind !== 65; + if (isDeclaration_1) { error(node.name, ts.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference); } else { @@ -14298,13 +16005,13 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "_super")) { return; } - var enclosingClass = ts.getAncestor(node, 194); + var enclosingClass = ts.getAncestor(node, 201); if (!enclosingClass || ts.isInAmbientContext(enclosingClass)) { return; } - if (ts.getClassBaseTypeNode(enclosingClass)) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + if (ts.getClassExtendsHeritageClauseElement(enclosingClass)) { + var isDeclaration_2 = node.kind !== 65; + if (isDeclaration_2) { error(node, ts.Diagnostics.Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference); } else { @@ -14316,55 +16023,65 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 198 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 205 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 210 && ts.isExternalModule(parent)) { + if (parent.kind === 227 && ts.isExternalModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } function checkVarDeclaredNamesNotShadowed(node) { - if (node.initializer && (ts.getCombinedNodeFlags(node) & 6144) === 0) { - var symbol = getSymbolOfNode(node); - if (symbol.flags & 1) { - var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); - if (localDeclarationSymbol && - localDeclarationSymbol !== symbol && - localDeclarationSymbol.flags & 2) { - if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 6144) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 192); - var container = varDeclList.parent.kind === 173 && - varDeclList.parent.parent; - var namesShareScope = container && - (container.kind === 172 && ts.isAnyFunction(container.parent) || - (container.kind === 199 && container.kind === 198) || - container.kind === 210); - if (!namesShareScope) { - var name = symbolToString(localDeclarationSymbol); - error(ts.getErrorSpanForNode(node), ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name, name); - } + // - ScriptBody : StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // also occurs in the VarDeclaredNames of StatementList. + if ((ts.getCombinedNodeFlags(node) & 12288) !== 0 || isParameterDeclaration(node)) { + return; + } + if (node.kind === 198 && !node.initializer) { + return; + } + var symbol = getSymbolOfNode(node); + if (symbol.flags & 1) { + var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); + if (localDeclarationSymbol && + localDeclarationSymbol !== symbol && + localDeclarationSymbol.flags & 2) { + if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 12288) { + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 199); + var container = varDeclList.parent.kind === 180 && varDeclList.parent.parent + ? varDeclList.parent.parent + : undefined; + var namesShareScope = container && + (container.kind === 179 && ts.isFunctionLike(container.parent) || + container.kind === 206 || + container.kind === 205 || + container.kind === 227); + if (!namesShareScope) { + var name_9 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_9, name_9); } } } } } function isParameterDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } - return node.kind === 126; + return node.kind === 129; } function checkParameterInitializer(node) { - if (getRootDeclaration(node).kind === 126) { - var func = ts.getContainingFunction(node); - visit(node.initializer); + if (getRootDeclaration(node).kind !== 129) { + return; } + var func = ts.getContainingFunction(node); + visit(node.initializer); function visit(n) { - if (n.kind === 64) { + if (n.kind === 65) { var referencedSymbol = getNodeLinks(n).resolvedSymbol; if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 126) { + if (referencedSymbol.valueDeclaration.kind === 129) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -14382,8 +16099,9 @@ var ts; } } function checkVariableLikeDeclaration(node) { + checkDecorators(node); checkSourceElement(node.type); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); @@ -14392,7 +16110,7 @@ var ts; if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } - if (node.initializer && getRootDeclaration(node).kind === 126 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && getRootDeclaration(node).kind === 129 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } @@ -14420,9 +16138,9 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); } } - if (node.kind !== 128 && node.kind !== 127) { + if (node.kind !== 132 && node.kind !== 131) { checkExportsOnMergedDeclarations(node); - if (node.kind === 191 || node.kind === 148) { + if (node.kind === 198 || node.kind === 152) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -14439,7 +16157,7 @@ var ts; return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); + checkGrammarDecorators(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) { @@ -14451,7 +16169,7 @@ var ts; } function inBlockOrObjectLiteralExpression(node) { while (node) { - if (node.kind === 172 || node.kind === 150) { + if (node.kind === 179 || node.kind === 154) { return true; } node = node.parent; @@ -14479,12 +16197,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind == 192) { + if (node.initializer && node.initializer.kind == 199) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -14498,38 +16216,183 @@ var ts; checkSourceElement(node.statement); } function checkForOfStatement(node) { - checkGrammarForOfStatement(node); - } - function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 192) { - var variableDeclarationList = node.initializer; - if (variableDeclarationList.declarations.length >= 1) { - var decl = variableDeclarationList.declarations[0]; - checkVariableDeclaration(decl); - } + if (node.initializer.kind === 199) { + checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; - var exprType = checkExpression(varExpr); - if (!allConstituentTypesHaveKind(exprType, 1 | 258)) { + var iteratedType = checkRightHandSideOfForOf(node.expression); + if (varExpr.kind === 153 || varExpr.kind === 154) { + checkDestructuringAssignment(varExpr, iteratedType || unknownType); + } + else { + var leftType = checkExpression(varExpr); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_of_statement, ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant); + if (iteratedType) { + checkTypeAssignableTo(iteratedType, leftType, varExpr, undefined); + } + } + } + checkSourceElement(node.statement); + } + function checkForInStatement(node) { + checkGrammarForInOrForOfStatement(node); + if (node.initializer.kind === 199) { + var variable = node.initializer.declarations[0]; + if (variable && ts.isBindingPattern(variable.name)) { + error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + checkForInOrForOfVariableDeclaration(node); + } + else { + var varExpr = node.initializer; + var leftType = checkExpression(varExpr); + if (varExpr.kind === 153 || varExpr.kind === 154) { + error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + else if (!allConstituentTypesHaveKind(leftType, 1 | 258)) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); } else { - checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant); } } - var exprType = checkExpression(node.expression); - if (!allConstituentTypesHaveKind(exprType, 1 | 48128 | 512)) { + var rightType = checkExpression(node.expression); + if (!allConstituentTypesHaveKind(rightType, 1 | 48128 | 512)) { error(node.expression, ts.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter); } checkSourceElement(node.statement); } + function checkForInOrForOfVariableDeclaration(iterationStatement) { + var variableDeclarationList = iterationStatement.initializer; + if (variableDeclarationList.declarations.length >= 1) { + var decl = variableDeclarationList.declarations[0]; + checkVariableDeclaration(decl); + } + } + function checkRightHandSideOfForOf(rhsExpression) { + var expressionType = getTypeOfExpression(rhsExpression); + return languageVersion >= 2 + ? checkIteratedType(expressionType, rhsExpression) + : checkElementTypeOfArrayOrString(expressionType, rhsExpression); + } + function checkIteratedType(iterable, expressionForError) { + ts.Debug.assert(languageVersion >= 2); + var iteratedType = getIteratedType(iterable, expressionForError); + if (expressionForError && iteratedType) { + var completeIterableType = globalIterableType !== emptyObjectType + ? createTypeReference(globalIterableType, [iteratedType]) + : emptyObjectType; + checkTypeAssignableTo(iterable, completeIterableType, expressionForError); + } + return iteratedType; + function getIteratedType(iterable, expressionForError) { + // We want to treat type as an iterable, and get the type it is an iterable of. The iterable + // must have the following structure (annotated with the names of the variables below): + // + // { // iterable + // [Symbol.iterator]: { // iteratorFunction + // (): { // iterator + // next: { // iteratorNextFunction + // (): { // iteratorNextResult + // value: T // iteratorNextValue + // } + // } + // } + // } + // } + // + // T is the type we are after. At every level that involves analyzing return types + // of signatures, we union the return types of all the signatures. + // + // Another thing to note is that at any step of this process, we could run into a dead end, + // meaning either the property is missing, or we run into the anyType. If either of these things + // happens, we return undefined to signal that we could not find the iterated type. If a property + // is missing, and the previous step did not result in 'any', then we also give an error if the + // caller requested it. Then the caller can decide what to do in the case where there is no iterated + // type. This is different from returning anyType, because that would signify that we have matched the + // whole pattern and that T (above) is 'any'. + if (allConstituentTypesHaveKind(iterable, 1)) { + return undefined; + } + var iteratorFunction = getTypeOfPropertyOfType(iterable, ts.getPropertyNameForKnownSymbolName("iterator")); + if (iteratorFunction && allConstituentTypesHaveKind(iteratorFunction, 1)) { + return undefined; + } + var iteratorFunctionSignatures = iteratorFunction ? getSignaturesOfType(iteratorFunction, 0) : emptyArray; + if (iteratorFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator); + } + return undefined; + } + var iterator = getUnionType(ts.map(iteratorFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iterator, 1)) { + return undefined; + } + var iteratorNextFunction = getTypeOfPropertyOfType(iterator, "next"); + if (iteratorNextFunction && allConstituentTypesHaveKind(iteratorNextFunction, 1)) { + return undefined; + } + var iteratorNextFunctionSignatures = iteratorNextFunction ? getSignaturesOfType(iteratorNextFunction, 0) : emptyArray; + if (iteratorNextFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method); + } + return undefined; + } + var iteratorNextResult = getUnionType(ts.map(iteratorNextFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iteratorNextResult, 1)) { + return undefined; + } + var iteratorNextValue = getTypeOfPropertyOfType(iteratorNextResult, "value"); + if (!iteratorNextValue) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property); + } + return undefined; + } + return iteratorNextValue; + } + } + function checkElementTypeOfArrayOrString(arrayOrStringType, expressionForError) { + ts.Debug.assert(languageVersion < 2); + var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var hasStringConstituent = arrayOrStringType !== arrayType; + var reportedError = false; + if (hasStringConstituent) { + if (languageVersion < 1) { + error(expressionForError, ts.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher); + reportedError = true; + } + if (arrayType === emptyObjectType) { + return stringType; + } + } + if (!isArrayLikeType(arrayType)) { + if (!reportedError) { + var diagnostic = hasStringConstituent + ? ts.Diagnostics.Type_0_is_not_an_array_type + : ts.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type; + error(expressionForError, diagnostic, typeToString(arrayType)); + } + return hasStringConstituent ? stringType : unknownType; + } + var arrayElementType = getIndexTypeOfType(arrayType, 1) || unknownType; + if (hasStringConstituent) { + if (arrayElementType.flags & 258) { + return stringType; + } + return getUnionType([arrayElementType, stringType]); + } + return arrayElementType; + } function checkBreakOrContinueStatement(node) { checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); } function isGetAccessorWithAnnotatatedSetAccessor(node) { - return !!(node.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 133))); + return !!(node.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 137))); } function checkReturnStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { @@ -14543,11 +16406,11 @@ var ts; if (func) { var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); var exprType = checkExpressionCached(node.expression); - if (func.kind === 133) { + if (func.kind === 137) { error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); } else { - if (func.kind === 131) { + if (func.kind === 135) { if (!isTypeAssignableTo(exprType, returnType)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } @@ -14573,8 +16436,8 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - ts.forEach(node.clauses, function (clause) { - if (clause.kind === 204 && !hasDuplicateDefaultClause) { + ts.forEach(node.caseBlock.clauses, function (clause) { + if (clause.kind === 221 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -14586,7 +16449,7 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 203) { + if (produceDiagnostics && clause.kind === 220) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); if (!isTypeAssignableTo(expressionType, caseType)) { @@ -14600,10 +16463,10 @@ var ts; if (!checkGrammarStatementInAmbientContext(node)) { var current = node.parent; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { break; } - if (current.kind === 187 && current.label.text === node.label.text) { + if (current.kind === 194 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -14628,16 +16491,33 @@ var ts; checkBlock(node.tryBlock); var catchClause = node.catchClause; if (catchClause) { - if (catchClause.type) { - var sourceFile = ts.getSourceFileOfNode(node); - var colonStart = ts.skipTrivia(sourceFile.text, catchClause.name.end); - grammarErrorAtPos(sourceFile, colonStart, ":".length, ts.Diagnostics.Catch_clause_parameter_cannot_have_a_type_annotation); + if (catchClause.variableDeclaration) { + if (catchClause.variableDeclaration.name.kind !== 65) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.name, ts.Diagnostics.Catch_clause_variable_name_must_be_an_identifier); + } + else if (catchClause.variableDeclaration.type) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.type, ts.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation); + } + else if (catchClause.variableDeclaration.initializer) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.initializer, ts.Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + } + else { + var identifierName = catchClause.variableDeclaration.name.text; + var locals = catchClause.block.locals; + if (locals && ts.hasProperty(locals, identifierName)) { + var localSymbol = locals[identifierName]; + if (localSymbol && (localSymbol.flags & 2) !== 0) { + grammarErrorOnNode(localSymbol.valueDeclaration, ts.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, identifierName); + } + } + checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.variableDeclaration.name); + } } - checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.name); checkBlock(catchClause.block); } - if (node.finallyBlock) + if (node.finallyBlock) { checkBlock(node.finallyBlock); + } } function checkIndexConstraints(type) { var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1); @@ -14650,10 +16530,10 @@ var ts; checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0); checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1); }); - if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 194) { + if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 201) { var classDeclaration = type.symbol.valueDeclaration; - for (var i = 0; i < classDeclaration.members.length; i++) { - var member = classDeclaration.members[i]; + for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) { + var member = _a[_i]; if (!(member.flags & 128) && ts.hasDynamicName(member)) { var propType = getTypeOfSymbol(member.symbol); checkIndexConstraintForProperty(member.symbol, propType, type, declaredStringIndexer, stringIndexType, 0); @@ -14681,7 +16561,7 @@ var ts; return; } var errorNode; - if (prop.valueDeclaration.name.kind === 124 || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 127 || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -14692,7 +16572,9 @@ var ts; errorNode = someBaseClassHasBothPropertyAndIndexer ? undefined : containingType.symbol.declarations[0]; } if (errorNode && !isTypeAssignableTo(propertyType, indexType)) { - var errorMessage = indexKind === 0 ? ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 : ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; + var errorMessage = indexKind === 0 + ? ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 + : ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; error(errorNode, errorMessage, symbolToString(prop), typeToString(propertyType), typeToString(indexType)); } } @@ -14710,7 +16592,7 @@ var ts; } function checkTypeParameters(typeParameterDeclarations) { if (typeParameterDeclarations) { - for (var i = 0; i < typeParameterDeclarations.length; i++) { + for (var i = 0, n = typeParameterDeclarations.length; i < n; i++) { var node = typeParameterDeclarations[i]; checkTypeParameter(node); if (produceDiagnostics) { @@ -14723,44 +16605,63 @@ var ts; } } } + function checkClassExpression(node) { + grammarErrorOnNode(node, ts.Diagnostics.class_expressions_are_not_currently_supported); + ts.forEach(node.members, checkSourceElement); + return unknownType; + } function checkClassDeclaration(node) { + if (node.parent.kind !== 206 && node.parent.kind !== 227) { + grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + } checkGrammarClassDeclarationHeritageClauses(node); - checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkDecorators(node); + if (node.name) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } checkTypeParameters(node.typeParameters); - checkCollisionWithCapturedThisVariable(node, node.name); - checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); var type = getDeclaredTypeOfSymbol(symbol); var staticType = getTypeOfSymbol(symbol); - var baseTypeNode = ts.getClassBaseTypeNode(node); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { + if (!ts.isSupportedHeritageClauseElement(baseTypeNode)) { + error(baseTypeNode.expression, ts.Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); + } emitExtends = emitExtends || !ts.isInAmbientContext(node); - checkTypeReference(baseTypeNode); + checkHeritageClauseElement(baseTypeNode); } if (type.baseTypes.length) { if (produceDiagnostics) { var baseType = type.baseTypes[0]; - checkTypeAssignableTo(type, baseType, node.name, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); + checkTypeAssignableTo(type, baseType, node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); var staticBaseType = getTypeOfSymbol(baseType.symbol); - checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); - if (baseType.symbol !== resolveEntityName(node, baseTypeNode.typeName, 107455)) { + checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); + if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, 107455)) { error(baseTypeNode, ts.Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); } checkKindsOfPropertyMemberOverrides(type, baseType); } - checkExpressionOrQualifiedName(baseTypeNode.typeName); } - var implementedTypeNodes = ts.getClassImplementedTypeNodes(node); + if (type.baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) { + checkExpressionOrQualifiedName(baseTypeNode.expression); + } + var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { ts.forEach(implementedTypeNodes, function (typeRefNode) { - checkTypeReference(typeRefNode); + if (!ts.isSupportedHeritageClauseElement(typeRefNode)) { + error(typeRefNode.expression, ts.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(typeRefNode); if (produceDiagnostics) { - var t = getTypeFromTypeReferenceNode(typeRefNode); + var t = getTypeFromHeritageClauseElement(typeRefNode); if (t !== unknownType) { var declaredType = (t.flags & 4096) ? t.target : t; if (declaredType.flags & (1024 | 2048)) { - checkTypeAssignableTo(type, t, node.name, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(type, t, node.name || node, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, ts.Diagnostics.A_class_may_only_implement_another_class_or_interface); @@ -14779,9 +16680,23 @@ var ts; return s.flags & 16777216 ? getSymbolLinks(s).target : s; } function checkKindsOfPropertyMemberOverrides(type, baseType) { + // TypeScript 1.0 spec (April 2014): 8.2.3 + // A derived class inherits all members from its base class it doesn't override. + // Inheritance means that a derived class implicitly contains all non - overridden members of the base class. + // Both public and private property members are inherited, but only public property members can be overridden. + // A property member in a derived class is said to override a property member in a base class + // when the derived class property member has the same name and kind(instance or static) + // as the base class property member. + // The type of an overriding property member must be assignable(section 3.8.4) + // to the type of the overridden property member, or otherwise a compile - time error occurs. + // Base class instance member functions can be overridden by derived class instance member functions, + // but not by other kinds of members. + // Base class instance member variables and accessors can be overridden by + // derived class instance member variables and accessors, but not by other kinds of members. var baseProperties = getPropertiesOfObjectType(baseType); - for (var i = 0, len = baseProperties.length; i < len; ++i) { - var base = getTargetSymbol(baseProperties[i]); + for (var _i = 0; _i < baseProperties.length; _i++) { + var baseProperty = baseProperties[_i]; + var base = getTargetSymbol(baseProperty); if (base.flags & 134217728) { continue; } @@ -14798,7 +16713,7 @@ var ts; if ((base.flags & derived.flags & 8192) || ((base.flags & 98308) && (derived.flags & 98308))) { continue; } - var errorMessage; + var errorMessage = void 0; if (base.flags & 8192) { if (derived.flags & 98304) { errorMessage = ts.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; @@ -14822,7 +16737,7 @@ var ts; } } function isAccessor(kind) { - return kind === 132 || kind === 133; + return kind === 136 || kind === 137; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -14843,7 +16758,7 @@ var ts; if (!tp1.constraint || !tp2.constraint) { return false; } - if (!isTypeIdenticalTo(getTypeFromTypeNode(tp1.constraint), getTypeFromTypeNode(tp2.constraint))) { + if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement(tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement(tp2.constraint))) { return false; } } @@ -14856,11 +16771,11 @@ var ts; var seen = {}; ts.forEach(type.declaredProperties, function (p) { seen[p.name] = { prop: p, containingType: type }; }); var ok = true; - for (var i = 0, len = type.baseTypes.length; i < len; ++i) { - var base = type.baseTypes[i]; + for (var _i = 0, _a = type.baseTypes; _i < _a.length; _i++) { + var base = _a[_i]; var properties = getPropertiesOfObjectType(base); - for (var j = 0, proplen = properties.length; j < proplen; ++j) { - var prop = properties[j]; + for (var _b = 0; _b < properties.length; _b++) { + var prop = properties[_b]; if (!ts.hasProperty(seen, prop.name)) { seen[prop.name] = { prop: prop, containingType: base }; } @@ -14881,13 +16796,13 @@ var ts; return ok; } function checkInterfaceDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 195); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 202); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -14903,14 +16818,19 @@ var ts; } } } - ts.forEach(ts.getInterfaceBaseTypeNodes(node), checkTypeReference); + ts.forEach(ts.getInterfaceBaseTypeNodes(node), function (heritageElement) { + if (!ts.isSupportedHeritageClauseElement(heritageElement)) { + error(heritageElement.expression, ts.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(heritageElement); + }); ts.forEach(node.members, checkSourceElement); if (produceDiagnostics) { checkTypeForDuplicateIndexSignatures(node); } } function checkTypeAliasDeclaration(node) { - checkGrammarModifiers(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_alias_name_cannot_be_0); checkSourceElement(node.type); } @@ -14923,12 +16843,12 @@ var ts; var ambient = ts.isInAmbientContext(node); var enumIsConst = ts.isConst(node); ts.forEach(node.members, function (member) { - if (member.name.kind !== 124 && isNumericLiteralName(member.name.text)) { + if (member.name.kind !== 127 && isNumericLiteralName(member.name.text)) { error(member.name, ts.Diagnostics.An_enum_member_cannot_have_a_numeric_name); } var initializer = member.initializer; if (initializer) { - autoValue = getConstantValueForEnumMemberInitializer(initializer, enumIsConst); + autoValue = getConstantValueForEnumMemberInitializer(initializer); if (autoValue === undefined) { if (enumIsConst) { error(initializer, ts.Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); @@ -14955,11 +16875,11 @@ var ts; }); nodeLinks.flags |= 128; } - function getConstantValueForEnumMemberInitializer(initializer, enumIsConst) { + function getConstantValueForEnumMemberInitializer(initializer) { return evalConstant(initializer); function evalConstant(e) { switch (e.kind) { - case 163: + case 167: var value = evalConstant(e.operand); if (value === undefined) { return undefined; @@ -14967,13 +16887,10 @@ var ts; switch (e.operator) { case 33: return value; case 34: return -value; - case 47: return enumIsConst ? ~value : undefined; + case 47: return ~value; } return undefined; - case 165: - if (!enumIsConst) { - return undefined; - } + case 169: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -14998,36 +16915,47 @@ var ts; return undefined; case 7: return +e.text; - case 157: - return enumIsConst ? evalConstant(e.expression) : undefined; - case 64: - case 152: - case 151: - if (!enumIsConst) { - return undefined; - } + case 161: + return evalConstant(e.expression); + case 65: + case 156: + case 155: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType; var propertyName; - if (e.kind === 64) { + if (e.kind === 65) { enumType = currentType; propertyName = e.text; } else { - if (e.kind === 152) { + var expression; + if (e.kind === 156) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 8) { return undefined; } - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.argumentExpression.text; } else { - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.name.text; } - if (enumType !== currentType) { + var current = expression; + while (current) { + if (current.kind === 65) { + break; + } + else if (current.kind === 155) { + current = current.expression; + } + else { + return undefined; + } + } + enumType = checkExpression(expression); + if (!(enumType.symbol && (enumType.symbol.flags & 384))) { return undefined; } } @@ -15054,17 +16982,20 @@ var ts; if (!produceDiagnostics) { return; } - checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); computeEnumMemberValues(node); + var enumIsConst = ts.isConst(node); + if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) { + error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided); + } var enumSymbol = getSymbolOfNode(node); var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind); if (node === firstDeclaration) { if (enumSymbol.declarations.length > 1) { - var enumIsConst = ts.isConst(node); ts.forEach(enumSymbol.declarations, function (decl) { if (ts.isConstEnumDeclaration(decl) !== enumIsConst) { error(decl.name, ts.Diagnostics.Enum_declarations_must_all_be_const_or_non_const); @@ -15073,7 +17004,7 @@ var ts; } var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 197) { + if (declaration.kind !== 204) { return false; } var enumDeclaration = declaration; @@ -15094,9 +17025,9 @@ var ts; } function getFirstNonAmbientClassOrFunctionDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; - if ((declaration.kind === 194 || (declaration.kind === 193 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + if ((declaration.kind === 201 || (declaration.kind === 200 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } } @@ -15104,28 +17035,19 @@ var ts; } function checkModuleDeclaration(node) { if (produceDiagnostics) { - if (!checkGrammarModifiers(node)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } - else if (node.name.kind === 64 && node.body.kind === 199) { - var statements = node.body.statements; - for (var i = 0, n = statements.length; i < n; i++) { - var statement = statements[i]; - if (statement.kind === 201) { - grammarErrorOnNode(statement, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); - } - else if (ts.isExternalModuleImportDeclaration(statement)) { - grammarErrorOnNode(ts.getExternalModuleImportDeclarationExpression(statement), ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); - } - } - } } checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - if (symbol.flags & 512 && symbol.declarations.length > 1 && !ts.isInAmbientContext(node) && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums)) { + if (symbol.flags & 512 + && symbol.declarations.length > 1 + && !ts.isInAmbientContext(node) + && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) { var classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); if (classOrFunc) { if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(classOrFunc)) { @@ -15148,252 +17070,376 @@ var ts; checkSourceElement(node.body); } function getFirstIdentifier(node) { - while (node.kind === 123) { - node = node.left; + while (true) { + if (node.kind === 126) { + node = node.left; + } + else if (node.kind === 155) { + node = node.expression; + } + else { + break; + } } + ts.Debug.assert(node.kind === 65); return node; } - function checkImportDeclaration(node) { - checkGrammarModifiers(node); + function checkExternalImportOrExportDeclaration(node) { + var moduleName = ts.getExternalModuleName(node); + if (!ts.nodeIsMissing(moduleName) && moduleName.kind !== 8) { + error(moduleName, ts.Diagnostics.String_literal_expected); + return false; + } + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(moduleName, node.kind === 215 ? + ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module : + ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); + return false; + } + if (inAmbientExternalModule && isExternalModuleNameRelative(moduleName.text)) { + error(node, ts.Diagnostics.Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); + return false; + } + return true; + } + function checkAliasSymbol(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target !== unknownSymbol) { + var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | + (symbol.flags & 793056 ? 793056 : 0) | + (symbol.flags & 1536 ? 1536 : 0); + if (target.flags & excludedMeanings) { + var message = node.kind === 217 ? + ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : + ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; + error(node, message, symbolToString(symbol)); + } + } + } + function checkImportBinding(node) { checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); - var symbol = getSymbolOfNode(node); - var target; - if (ts.isInternalModuleImportDeclaration(node)) { - target = resolveImport(symbol); - if (target !== unknownSymbol) { - if (target.flags & 107455) { - var moduleName = getFirstIdentifier(node.moduleReference); - if (resolveEntityName(node, moduleName, 107455 | 1536).flags & 1536) { - checkExpressionOrQualifiedName(node.moduleReference); + checkAliasSymbol(node); + } + function checkImportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); + } + if (checkExternalImportOrExportDeclaration(node)) { + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + checkImportBinding(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + checkImportBinding(importClause.namedBindings); } else { - error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + ts.forEach(importClause.namedBindings.elements, checkImportBinding); } } - if (target.flags & 793056) { - checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); - } } } - else { - if (node.parent.kind === 210) { - target = resolveImport(symbol); + } + function checkImportEqualsDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { + checkImportBinding(node); + if (node.flags & 1) { + markExportAsReferenced(node); } - else if (node.parent.kind === 199 && node.parent.parent.name.kind === 8) { - if (ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - if (isExternalModuleNameRelative(ts.getExternalModuleImportDeclarationExpression(node).text)) { - error(node, ts.Diagnostics.Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); - target = unknownSymbol; + if (ts.isInternalModuleImportEqualsDeclaration(node)) { + var target = resolveAlias(getSymbolOfNode(node)); + if (target !== unknownSymbol) { + if (target.flags & 107455) { + var moduleName = getFirstIdentifier(node.moduleReference); + if (!(resolveEntityName(moduleName, 107455 | 1536).flags & 1536)) { + error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + } } - else { - target = resolveImport(symbol); + if (target.flags & 793056) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); } } - else { - target = unknownSymbol; - } } else { - target = unknownSymbol; - } - } - if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | - (symbol.flags & 793056 ? 793056 : 0) | - (symbol.flags & 1536 ? 1536 : 0); - if (target.flags & excludedMeanings) { - error(node, ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0, symbolToString(symbol)); + if (languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead); + } } } } + function checkExportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_declaration_cannot_have_modifiers); + } + if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { + if (node.exportClause) { + ts.forEach(node.exportClause.elements, checkExportSpecifier); + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module); + } + } + else { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + if (moduleSymbol && moduleSymbol.exports["export="]) { + error(node.moduleSpecifier, ts.Diagnostics.External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk, symbolToString(moduleSymbol)); + } + } + } + } + function checkExportSpecifier(node) { + checkAliasSymbol(node); + if (!node.parent.parent.moduleSpecifier) { + markExportAsReferenced(node); + } + } function checkExportAssignment(node) { - if (!checkGrammarModifiers(node) && (node.flags & 243)) { + var container = node.parent.kind === 227 ? node.parent : node.parent.parent; + if (container.kind === 205 && container.name.kind === 65) { + error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); + return; + } + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_assignment_cannot_have_modifiers); } - var container = node.parent; - if (container.kind !== 210) { - container = container.parent; + if (node.expression) { + if (node.expression.kind === 65) { + markExportAsReferenced(node); + } + else { + checkExpressionCached(node.expression); + } + } + if (node.type) { + checkSourceElement(node.type); + if (!ts.isInAmbientContext(node)) { + grammarErrorOnFirstToken(node.type, ts.Diagnostics.A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration); + } + } + checkExternalModuleExports(container); + if (node.isExportEquals && languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead); + } + } + function getModuleStatements(node) { + if (node.kind === 227) { + return node.statements; + } + if (node.kind === 205 && node.body.kind === 206) { + return node.body.statements; + } + return emptyArray; + } + function hasExportedMembers(moduleSymbol) { + for (var id in moduleSymbol.exports) { + if (id !== "export=") { + return true; + } + } + return false; + } + function checkExternalModuleExports(node) { + var moduleSymbol = getSymbolOfNode(node); + var links = getSymbolLinks(moduleSymbol); + if (!links.exportsChecked) { + var exportEqualsSymbol = moduleSymbol.exports["export="]; + if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { + var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; + error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + links.exportsChecked = true; } - checkTypeOfExportAssignmentSymbol(getSymbolOfNode(container)); } function checkSourceElement(node) { if (!node) return; switch (node.kind) { - case 125: - return checkTypeParameter(node); - case 126: - return checkParameter(node); case 128: - case 127: + return checkTypeParameter(node); + case 129: + return checkParameter(node); + case 132: + case 131: return checkPropertyDeclaration(node); + case 142: + case 143: case 138: case 139: - case 134: - case 135: return checkSignatureDeclaration(node); - case 136: - return checkSignatureDeclaration(node); - case 130: - case 129: - return checkMethodDeclaration(node); - case 131: - return checkConstructorDeclaration(node); - case 132: - case 133: - return checkAccessorDeclaration(node); - case 137: - return checkTypeReference(node); case 140: - return checkTypeQuery(node); + return checkSignatureDeclaration(node); + case 134: + case 133: + return checkMethodDeclaration(node); + case 135: + return checkConstructorDeclaration(node); + case 136: + case 137: + return checkAccessorDeclaration(node); case 141: - return checkTypeLiteral(node); - case 142: - return checkArrayType(node); - case 143: - return checkTupleType(node); + return checkTypeReferenceNode(node); case 144: - return checkUnionType(node); + return checkTypeQuery(node); case 145: - return checkSourceElement(node.type); - case 193: - return checkFunctionDeclaration(node); - case 172: - case 199: - return checkBlock(node); - case 173: - return checkVariableStatement(node); - case 175: - return checkExpressionStatement(node); - case 176: - return checkIfStatement(node); - case 177: - return checkDoStatement(node); - case 178: - return checkWhileStatement(node); - case 179: - return checkForStatement(node); - case 180: - return checkForInStatement(node); - case 181: - return checkForOfStatement(node); - case 182: - case 183: - return checkBreakOrContinueStatement(node); - case 184: - return checkReturnStatement(node); - case 185: - return checkWithStatement(node); - case 186: - return checkSwitchStatement(node); - case 187: - return checkLabeledStatement(node); - case 188: - return checkThrowStatement(node); - case 189: - return checkTryStatement(node); - case 191: - return checkVariableDeclaration(node); + return checkTypeLiteral(node); + case 146: + return checkArrayType(node); + case 147: + return checkTupleType(node); case 148: - return checkBindingElement(node); - case 194: - return checkClassDeclaration(node); - case 195: - return checkInterfaceDeclaration(node); - case 196: - return checkTypeAliasDeclaration(node); - case 197: - return checkEnumDeclaration(node); - case 198: - return checkModuleDeclaration(node); + return checkUnionType(node); + case 149: + return checkSourceElement(node.type); case 200: - return checkImportDeclaration(node); - case 201: - return checkExportAssignment(node); - case 174: - checkGrammarStatementInAmbientContext(node); - return; + return checkFunctionDeclaration(node); + case 179: + case 206: + return checkBlock(node); + case 180: + return checkVariableStatement(node); + case 182: + return checkExpressionStatement(node); + case 183: + return checkIfStatement(node); + case 184: + return checkDoStatement(node); + case 185: + return checkWhileStatement(node); + case 186: + return checkForStatement(node); + case 187: + return checkForInStatement(node); + case 188: + return checkForOfStatement(node); + case 189: case 190: + return checkBreakOrContinueStatement(node); + case 191: + return checkReturnStatement(node); + case 192: + return checkWithStatement(node); + case 193: + return checkSwitchStatement(node); + case 194: + return checkLabeledStatement(node); + case 195: + return checkThrowStatement(node); + case 196: + return checkTryStatement(node); + case 198: + return checkVariableDeclaration(node); + case 152: + return checkBindingElement(node); + case 201: + return checkClassDeclaration(node); + case 202: + return checkInterfaceDeclaration(node); + case 203: + return checkTypeAliasDeclaration(node); + case 204: + return checkEnumDeclaration(node); + case 205: + return checkModuleDeclaration(node); + case 209: + return checkImportDeclaration(node); + case 208: + return checkImportEqualsDeclaration(node); + case 215: + return checkExportDeclaration(node); + case 214: + return checkExportAssignment(node); + case 181: checkGrammarStatementInAmbientContext(node); return; + case 197: + checkGrammarStatementInAmbientContext(node); + return; + case 218: + return checkMissingDeclaration(node); } } function checkFunctionExpressionBodies(node) { switch (node.kind) { - case 158: - case 159: + case 162: + case 163: ts.forEach(node.parameters, checkFunctionExpressionBodies); checkFunctionExpressionOrObjectLiteralMethodBody(node); break; - case 130: - case 129: + case 134: + case 133: ts.forEach(node.parameters, checkFunctionExpressionBodies); if (ts.isObjectLiteralMethod(node)) { checkFunctionExpressionOrObjectLiteralMethodBody(node); } break; - case 131: - case 132: - case 133: - case 193: + case 135: + case 136: + case 137: + case 200: ts.forEach(node.parameters, checkFunctionExpressionBodies); break; - case 185: + case 192: checkFunctionExpressionBodies(node.expression); break; - case 126: - case 128: - case 127: - case 146: - case 147: - case 148: - case 149: + case 129: + case 132: + case 131: case 150: - case 207: case 151: case 152: case 153: case 154: + case 224: case 155: - case 167: - case 171: case 156: case 157: - case 161: - case 162: + case 158: + case 159: + case 171: + case 176: case 160: - case 163: - case 164: + case 161: case 165: case 166: + case 164: + case 167: + case 168: case 169: - case 172: - case 199: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: + case 206: case 180: - case 181: case 182: case 183: case 184: + case 185: case 186: - case 203: - case 204: case 187: case 188: case 189: - case 206: + case 190: case 191: - case 192: + case 193: + case 207: + case 220: + case 221: case 194: - case 197: - case 209: - case 210: + case 195: + case 196: + case 223: + case 198: + case 199: + case 201: + case 204: + case 226: + case 214: + case 227: ts.forEachChild(node, checkFunctionExpressionBodies); break; } @@ -15412,11 +17458,7 @@ var ts; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); if (ts.isExternalModule(node)) { - var symbol = getExportAssignmentSymbol(node.symbol); - if (symbol && symbol.flags & 8388608) { - getSymbolLinks(symbol).referenced = true; - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + checkExternalModuleExports(node); } if (potentialThisCollisions.length) { ts.forEach(potentialThisCollisions, checkIfThisIsCapturedInEnclosingScope); @@ -15425,6 +17467,9 @@ var ts; if (emitExtends) { links.flags |= 8; } + if (emitDecorate) { + links.flags |= 512; + } links.flags |= 1; } } @@ -15449,7 +17494,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 185 && node.parent.statement === node) { + if (node.parent.kind === 192 && node.parent.statement === node) { return true; } node = node.parent; @@ -15460,6 +17505,44 @@ var ts; function getSymbolsInScope(location, meaning) { var symbols = {}; var memberFlags = 0; + if (isInsideWithStatementBody(location)) { + return []; + } + populateSymbols(); + return symbolsToArray(symbols); + function populateSymbols() { + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) { + break; + } + case 205: + copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); + break; + case 204: + copySymbols(getSymbolOfNode(location).exports, meaning & 8); + break; + case 201: + case 202: + if (!(memberFlags & 128)) { + copySymbols(getSymbolOfNode(location).members, meaning & 793056); + } + break; + case 162: + if (location.name) { + copySymbol(location.symbol, meaning); + } + break; + } + memberFlags = location.flags; + location = location.parent; + } + copySymbols(globals, meaning); + } function copySymbol(symbol, meaning) { if (symbol.flags & meaning) { var id = symbol.name; @@ -15485,169 +17568,181 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 197: + case 204: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 194: - case 195: + case 201: + case 202: if (!(memberFlags & 128)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 158: + case 162: if (location.name) { copySymbol(location.symbol, meaning); } break; - case 206: - if (location.name.text) { - copySymbol(location.symbol, meaning); - } - break; } memberFlags = location.flags; location = location.parent; } copySymbols(globals, meaning); - return ts.mapToArray(symbols); + return symbolsToArray(symbols); } function isTypeDeclarationName(name) { - return name.kind == 64 && + return name.kind == 65 && isTypeDeclaration(name.parent) && name.parent.name === name; } function isTypeDeclaration(node) { switch (node.kind) { - case 125: - case 194: - case 195: - case 196: - case 197: + case 128: + case 201: + case 202: + case 203: + case 204: return true; } } function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 123) + while (node.parent && node.parent.kind === 126) { node = node.parent; - return node.parent && node.parent.kind === 137; + } + return node.parent && node.parent.kind === 141; } - function isTypeNode(node) { - if (137 <= node.kind && node.kind <= 145) { + function isHeritageClauseElementIdentifier(entityName) { + var node = entityName; + while (node.parent && node.parent.kind === 155) { + node = node.parent; + } + return node.parent && node.parent.kind === 177; + } + function isTypeNodeOrHeritageClauseElement(node) { + if (141 <= node.kind && node.kind <= 149) { return true; } switch (node.kind) { - case 110: - case 117: + case 112: case 119: - case 111: - case 120: + case 121: + case 113: + case 122: return true; - case 98: - return node.parent.kind !== 162; + case 99: + return node.parent.kind !== 166; case 8: - return node.parent.kind === 126; - case 64: - if (node.parent.kind === 123 && node.parent.right === node) { + return node.parent.kind === 129; + case 177: + return true; + case 65: + if (node.parent.kind === 126 && node.parent.right === node) { node = node.parent; } - case 123: - ts.Debug.assert(node.kind === 64 || node.kind === 123, "'node' was expected to be a qualified name or identifier in 'isTypeNode'."); - var parent = node.parent; - if (parent.kind === 140) { + else if (node.parent.kind === 155 && node.parent.name === node) { + node = node.parent; + } + case 126: + case 155: + ts.Debug.assert(node.kind === 65 || node.kind === 126 || node.kind === 155, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + var parent_5 = node.parent; + if (parent_5.kind === 144) { return false; } - if (137 <= parent.kind && parent.kind <= 145) { + if (141 <= parent_5.kind && parent_5.kind <= 149) { return true; } - switch (parent.kind) { - case 125: - return node === parent.constraint; + switch (parent_5.kind) { + case 177: + return true; case 128: - case 127: - case 126: - case 191: - return node === parent.type; - case 193: - case 158: - case 159: - case 131: - case 130: - case 129: + return node === parent_5.constraint; case 132: - case 133: - return node === parent.type; - case 134: + case 131: + case 129: + case 198: + return node === parent_5.type; + case 200: + case 162: + case 163: case 135: + case 134: + case 133: case 136: - return node === parent.type; - case 156: - return node === parent.type; - case 153: - case 154: - return parent.typeArguments && ts.indexOf(parent.typeArguments, node) >= 0; - case 155: + case 137: + return node === parent_5.type; + case 138: + case 139: + case 140: + return node === parent_5.type; + case 160: + return node === parent_5.type; + case 157: + case 158: + return parent_5.typeArguments && ts.indexOf(parent_5.typeArguments, node) >= 0; + case 159: return false; } } return false; } - function getLeftSideOfImportOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 123) { + function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { + while (nodeOnRightSide.parent.kind === 126) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 200) { + if (nodeOnRightSide.parent.kind === 208) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 201) { - return nodeOnRightSide.parent.exportName === nodeOnRightSide && nodeOnRightSide.parent; + if (nodeOnRightSide.parent.kind === 214) { + return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; } function isInRightSideOfImportOrExportAssignment(node) { - return getLeftSideOfImportOrExportAssignment(node) !== undefined; - } - function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 123 && node.parent.right === node) || - (node.parent.kind === 151 && node.parent.name === node); + return getLeftSideOfImportEqualsOrExportAssignment(node) !== undefined; } function getSymbolOfEntityNameOrPropertyAccessExpression(entityName) { - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(entityName)) { + if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 201) { - return resolveEntityName(entityName.parent.parent, entityName, 107455 | 793056 | 1536 | 8388608); + if (entityName.parent.kind === 214) { + return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 151) { + if (entityName.kind !== 155) { if (isInRightSideOfImportOrExportAssignment(entityName)) { - return getSymbolOfPartOfRightHandSideOfImport(entityName); + return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } } - if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (ts.isExpression(entityName)) { - if (ts.getFullWidth(entityName) === 0) { + if (isHeritageClauseElementIdentifier(entityName)) { + var meaning = entityName.parent.kind === 177 ? 793056 : 1536; + meaning |= 8388608; + return resolveEntityName(entityName, meaning); + } + else if (ts.isExpression(entityName)) { + if (ts.nodeIsMissing(entityName)) { return undefined; } - if (entityName.kind === 64) { + if (entityName.kind === 65) { var meaning = 107455 | 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 151) { + else if (entityName.kind === 155) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 123) { + else if (entityName.kind === 126) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -15656,9 +17751,9 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 137 ? 793056 : 1536; + var meaning = entityName.parent.kind === 141 ? 793056 : 1536; meaning |= 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } return undefined; } @@ -15666,36 +17761,39 @@ var ts; if (isInsideWithStatementBody(node)) { return undefined; } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { return getSymbolOfNode(node.parent); } - if (node.kind === 64 && isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 201 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImport(node); + if (node.kind === 65 && isInRightSideOfImportOrExportAssignment(node)) { + return node.parent.kind === 214 + ? getSymbolOfEntityNameOrPropertyAccessExpression(node) + : getSymbolOfPartOfRightHandSideOfImportEquals(node); } switch (node.kind) { - case 64: - case 151: - case 123: + case 65: + case 155: + case 126: return getSymbolOfEntityNameOrPropertyAccessExpression(node); - case 92: - case 90: + case 93: + case 91: var type = checkExpression(node); return type.symbol; - case 112: + case 114: var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 131) { + if (constructorDeclaration && constructorDeclaration.kind === 135) { return constructorDeclaration.parent.symbol; } return undefined; case 8: - if (ts.isExternalModuleImportDeclaration(node.parent.parent) && - ts.getExternalModuleImportDeclarationExpression(node.parent.parent) === node) { - var importSymbol = getSymbolOfNode(node.parent.parent); - var moduleType = getTypeOfSymbol(importSymbol); - return moduleType ? moduleType.symbol : undefined; + var moduleName; + if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && + ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || + ((node.parent.kind === 209 || node.parent.kind === 215) && + node.parent.moduleSpecifier === node)) { + return resolveExternalModuleName(node, node); } case 7: - if (node.parent.kind == 152 && node.parent.argumentExpression === node) { + if (node.parent.kind == 156 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -15709,8 +17807,8 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 208) { - return resolveEntityName(location, location.name, 107455); + if (location && location.kind === 225) { + return resolveEntityName(location.name, 107455); } return undefined; } @@ -15718,12 +17816,12 @@ var ts; if (isInsideWithStatementBody(node)) { return unknownType; } + if (isTypeNodeOrHeritageClauseElement(node)) { + return getTypeFromTypeNodeOrHeritageClauseElement(node); + } if (ts.isExpression(node)) { return getTypeOfExpression(node); } - if (isTypeNode(node)) { - return getTypeFromTypeNode(node); - } if (isTypeDeclaration(node)) { var symbol = getSymbolOfNode(node); return getDeclaredTypeOfSymbol(symbol); @@ -15736,7 +17834,7 @@ var ts; var symbol = getSymbolOfNode(node); return getTypeOfSymbol(symbol); } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { var symbol = getSymbolInfo(node); return symbol && getTypeOfSymbol(symbol); } @@ -15748,13 +17846,13 @@ var ts; return unknownType; } function getTypeOfExpression(expr) { - if (isRightSideOfQualifiedNameOrPropertyAccess(expr)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(expr)) { expr = expr.parent; } return checkExpression(expr); } function getAugmentedPropertiesOfType(type) { - var type = getApparentType(type); + type = getApparentType(type); var propsByName = createSymbolTable(getPropertiesOfType(type)); if (getSignaturesOfType(type, 0).length || getSignaturesOfType(type, 1).length) { ts.forEach(getPropertiesOfType(globalFunctionType), function (p) { @@ -15768,9 +17866,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456) { var symbols = []; - var name = symbol.name; + var name_10 = symbol.name; ts.forEach(getSymbolLinks(symbol).unionType.types, function (t) { - symbols.push(getPropertyOfType(t, name)); + symbols.push(getPropertyOfType(t, name_10)); }); return symbols; } @@ -15783,91 +17881,97 @@ var ts; return [symbol]; } function isExternalModuleSymbol(symbol) { - return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 210; + return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 227; } - function isNodeDescendentOf(node, ancestor) { + function getAliasNameSubstitution(symbol, getGeneratedNameForNode) { + if (languageVersion >= 2) { + return undefined; + } + var node = getDeclarationOfAliasSymbol(symbol); + if (node) { + if (node.kind === 210) { + return getGeneratedNameForNode(node.parent) + ".default"; + } + if (node.kind === 213) { + var moduleName = getGeneratedNameForNode(node.parent.parent.parent); + var propertyName = node.propertyName || node.name; + return moduleName + "." + ts.unescapeIdentifier(propertyName.text); + } + } + } + function getExportNameSubstitution(symbol, location, getGeneratedNameForNode) { + if (isExternalModuleSymbol(symbol.parent)) { + if (languageVersion >= 2) { + return undefined; + } + return "exports." + ts.unescapeIdentifier(symbol.name); + } + var node = location; + var containerSymbol = getParentOfSymbol(symbol); while (node) { - if (node === ancestor) - return true; + if ((node.kind === 205 || node.kind === 204) && getSymbolOfNode(node) === containerSymbol) { + return getGeneratedNameForNode(node) + "." + ts.unescapeIdentifier(symbol.name); + } node = node.parent; } + } + function getExpressionNameSubstitution(node, getGeneratedNameForNode) { + var symbol = getNodeLinks(node).resolvedSymbol || (ts.isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined); + if (symbol) { + if (symbol.parent) { + return getExportNameSubstitution(symbol, node.parent, getGeneratedNameForNode); + } + var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); + if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { + return getExportNameSubstitution(exportSymbol, node.parent, getGeneratedNameForNode); + } + if (symbol.flags & 8388608) { + return getAliasNameSubstitution(symbol, getGeneratedNameForNode); + } + } + } + function isValueAliasDeclaration(node) { + switch (node.kind) { + case 208: + case 210: + case 211: + case 213: + case 217: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 215: + var exportClause = node.exportClause; + return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); + case 214: + return node.expression && node.expression.kind === 65 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; + } return false; } - function isUniqueLocalName(name, container) { - for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { - if (node.locals && ts.hasProperty(node.locals, name)) { - var symbolWithRelevantName = node.locals[name]; - if (symbolWithRelevantName.flags & (107455 | 1048576)) { - return false; - } - if (symbolWithRelevantName.flags & 8388608) { - var importDeclarationWithRelevantName = ts.getDeclarationOfKind(symbolWithRelevantName, 200); - if (isReferencedImportDeclaration(importDeclarationWithRelevantName)) { - return false; - } - } - } - } - return true; - } - function getLocalNameOfContainer(container) { - var links = getNodeLinks(container); - if (!links.localModuleName) { - var prefix = ""; - var name = ts.unescapeIdentifier(container.name.text); - while (!isUniqueLocalName(ts.escapeIdentifier(prefix + name), container)) { - prefix += "_"; - } - links.localModuleName = prefix + ts.getTextOfNode(container.name); - } - return links.localModuleName; - } - function getLocalNameForSymbol(symbol, location) { - var node = location; - while (node) { - if ((node.kind === 198 || node.kind === 197) && getSymbolOfNode(node) === symbol) { - return getLocalNameOfContainer(node); - } - node = node.parent; - } - ts.Debug.fail("getLocalNameForSymbol failed"); - } - function getExpressionNamePrefix(node) { - var symbol = getNodeLinks(node).resolvedSymbol; - if (symbol) { - var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); - if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { - symbol = exportSymbol; - } - if (symbol.parent) { - return isExternalModuleSymbol(symbol.parent) ? "exports" : getLocalNameForSymbol(getParentOfSymbol(symbol), node.parent); - } - } - } - function getExportAssignmentName(node) { - var symbol = getExportAssignmentSymbol(getSymbolOfNode(node)); - return symbol && symbolIsValue(symbol) && !isConstEnumSymbol(symbol) ? symbolToString(symbol) : undefined; - } - function isTopLevelValueImportWithEntityName(node) { - if (node.parent.kind !== 210 || !ts.isInternalModuleImportDeclaration(node)) { + function isTopLevelValueImportEqualsWithEntityName(node) { + if (node.parent.kind !== 227 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } - return isImportResolvedToValue(getSymbolOfNode(node)); + var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); + return isValue && node.moduleReference && !ts.nodeIsMissing(node.moduleReference); } - function isImportResolvedToValue(symbol) { - var target = resolveImport(symbol); - return target !== unknownSymbol && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); + function isAliasResolvedToValue(symbol) { + var target = resolveAlias(symbol); + if (target === unknownSymbol && compilerOptions.separateCompilation) { + return true; + } + return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); } function isConstEnumOrConstEnumOnlyModule(s) { return isConstEnumSymbol(s) || s.constEnumOnlyModule; } - function isReferencedImportDeclaration(node) { - var symbol = getSymbolOfNode(node); - if (getSymbolLinks(symbol).referenced) { - return true; + function isReferencedAliasDeclaration(node, checkChildren) { + if (ts.isAliasSymbolDeclaration(node)) { + var symbol = getSymbolOfNode(node); + if (getSymbolLinks(symbol).referenced) { + return true; + } } - if (node.flags & 1) { - return isImportResolvedToValue(symbol); + if (checkChildren) { + return ts.forEachChild(node, function (node) { return isReferencedAliasDeclaration(node, checkChildren); }); } return false; } @@ -15888,47 +17992,84 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 209) { + if (node.kind === 226) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; if (symbol && (symbol.flags & 8)) { - var declaration = symbol.valueDeclaration; - var constantValue; - if (declaration.kind === 209) { - return getEnumMemberValue(declaration); + if (ts.isConstEnumDeclaration(symbol.valueDeclaration.parent)) { + return getEnumMemberValue(symbol.valueDeclaration); } } return undefined; } function writeTypeOfDeclaration(declaration, enclosingDeclaration, flags, writer) { var symbol = getSymbolOfNode(declaration); - var type = symbol && !(symbol.flags & (2048 | 131072)) ? getTypeOfSymbol(symbol) : unknownType; + var type = symbol && !(symbol.flags & (2048 | 131072)) + ? getTypeOfSymbol(symbol) + : unknownType; getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } function writeReturnTypeOfSignatureDeclaration(signatureDeclaration, enclosingDeclaration, flags, writer) { var signature = getSignatureFromDeclaration(signatureDeclaration); getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } - function isUnknownIdentifier(location, name) { - return !resolveName(location, name, 107455, undefined, undefined); + function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { + var type = getTypeOfExpression(expr); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + function hasGlobalName(name) { + return ts.hasProperty(globals, name); + } + function resolvesToSomeValue(location, name) { + ts.Debug.assert(!ts.nodeIsSynthesized(location), "resolvesToSomeValue called with a synthesized location"); + return !!resolveName(location, name, 107455, undefined, undefined); + } + function getBlockScopedVariableId(n) { + ts.Debug.assert(!ts.nodeIsSynthesized(n)); + var isVariableDeclarationOrBindingElement = n.parent.kind === 152 || (n.parent.kind === 198 && n.parent.name === n); + var symbol = (isVariableDeclarationOrBindingElement ? getSymbolOfNode(n.parent) : undefined) || + getNodeLinks(n).resolvedSymbol || + resolveName(n, n.text, 107455 | 8388608, undefined, undefined); + var isLetOrConst = symbol && + (symbol.flags & 2) && + symbol.valueDeclaration.parent.kind !== 223; + if (isLetOrConst) { + getSymbolLinks(symbol); + return symbol.id; + } + return undefined; + } + function instantiateSingleCallFunctionType(functionType, typeArguments) { + if (functionType === unknownType) { + return unknownType; + } + var signature = getSingleCallSignature(functionType); + if (!signature) { + return unknownType; + } + var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); + return getOrCreateTypeFromSignature(instantiatedSignature); } function createResolver() { return { - getLocalNameOfContainer: getLocalNameOfContainer, - getExpressionNamePrefix: getExpressionNamePrefix, - getExportAssignmentName: getExportAssignmentName, - isReferencedImportDeclaration: isReferencedImportDeclaration, + getExpressionNameSubstitution: getExpressionNameSubstitution, + isValueAliasDeclaration: isValueAliasDeclaration, + hasGlobalName: hasGlobalName, + isReferencedAliasDeclaration: isReferencedAliasDeclaration, getNodeCheckFlags: getNodeCheckFlags, - isTopLevelValueImportWithEntityName: isTopLevelValueImportWithEntityName, + isTopLevelValueImportEqualsWithEntityName: isTopLevelValueImportEqualsWithEntityName, isDeclarationVisible: isDeclarationVisible, isImplementationOfOverload: isImplementationOfOverload, writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, + writeTypeOfExpression: writeTypeOfExpression, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, - isUnknownIdentifier: isUnknownIdentifier + resolvesToSomeValue: resolvesToSomeValue, + collectLinkedAliases: collectLinkedAliases, + getBlockScopedVariableId: getBlockScopedVariableId }; } function initializeTypeChecker() { @@ -15937,7 +18078,7 @@ var ts; }); ts.forEach(host.getSourceFiles(), function (file) { if (!ts.isExternalModule(file)) { - extendSymbolTable(globals, file.locals); + mergeSymbolTable(globals, file.locals); } }); getSymbolLinks(undefinedSymbol).type = undefinedType; @@ -15952,10 +18093,16 @@ var ts; globalNumberType = getGlobalType("Number"); globalBooleanType = getGlobalType("Boolean"); globalRegExpType = getGlobalType("RegExp"); + globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); + globalClassDecoratorType = getGlobalType("ClassDecorator"); + globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); + globalMethodDecoratorType = getGlobalType("MethodDecorator"); + globalParameterDecoratorType = getGlobalType("ParameterDecorator"); if (languageVersion >= 2) { globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); globalESSymbolType = getGlobalType("Symbol"); globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); + globalIterableType = getGlobalType("Iterable", 1); } else { globalTemplateStringsArrayType = unknownType; @@ -15964,26 +18111,46 @@ var ts; } anyArrayType = createArrayType(anyType); } + function checkGrammarDecorators(node) { + if (!node.decorators) { + return false; + } + if (!ts.nodeCanBeDecorated(node)) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_not_valid_here); + } + else if (languageVersion < 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (node.kind === 136 || node.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } + return false; + } function checkGrammarModifiers(node) { switch (node.kind) { - case 132: - case 133: - case 131: - case 128: - case 127: - case 130: - case 129: case 136: - case 194: - case 195: - case 198: - case 197: + case 137: + case 135: + case 132: + case 131: + case 134: + case 133: + case 140: case 201: - case 173: - case 193: - case 196: + case 202: + case 205: + case 204: + case 180: case 200: - case 126: + case 203: + case 209: + case 208: + case 215: + case 214: + case 129: break; default: return false; @@ -15993,17 +18160,17 @@ var ts; } var lastStatic, lastPrivate, lastProtected, lastDeclare; var flags = 0; - for (var i = 0, n = node.modifiers.length; i < n; i++) { - var modifier = node.modifiers[i]; + for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { + var modifier = _a[_i]; switch (modifier.kind) { + case 109: + case 108: case 107: - case 106: - case 105: - var text; - if (modifier.kind === 107) { + var text = void 0; + if (modifier.kind === 109) { text = "public"; } - else if (modifier.kind === 106) { + else if (modifier.kind === 108) { text = "protected"; lastProtected = modifier; } @@ -16017,50 +18184,50 @@ var ts; else if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } flags |= ts.modifierToFlag(modifier.kind); break; - case 108: + case 110: if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } flags |= 128; lastStatic = modifier; break; - case 77: + case 78: if (flags & 1) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "export"); } else if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1; break; - case 113: + case 115: if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 199) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 206) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2; @@ -16068,7 +18235,7 @@ var ts; break; } } - if (node.kind === 131) { + if (node.kind === 135) { if (flags & 128) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -16079,13 +18246,13 @@ var ts; return grammarErrorOnNode(lastPrivate, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "private"); } } - else if (node.kind === 200 && flags & 2) { + else if ((node.kind === 209 || node.kind === 208) && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 195 && flags & 2) { + else if (node.kind === 202 && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_interface_declaration, "declare"); } - else if (node.kind === 126 && (flags & 112) && ts.isBindingPattern(node.name)) { + else if (node.kind === 129 && (flags & 112) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } } @@ -16097,15 +18264,14 @@ var ts; return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Trailing_comma_not_allowed); } } - function checkGrammarTypeParameterList(node, typeParameters) { + function checkGrammarTypeParameterList(node, typeParameters, file) { if (checkGrammarForDisallowedTrailingComma(typeParameters)) { return true; } if (typeParameters && typeParameters.length === 0) { var start = typeParameters.pos - "<".length; - var sourceFile = ts.getSourceFileOfNode(node); - var end = ts.skipTrivia(sourceFile.text, typeParameters.end) + ">".length; - return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); + var end = ts.skipTrivia(file.text, typeParameters.end) + ">".length; + return grammarErrorAtPos(file, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); } } function checkGrammarParameterList(parameters) { @@ -16141,7 +18307,20 @@ var ts; } } function checkGrammarFunctionLikeDeclaration(node) { - return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters) || checkGrammarParameterList(node.parameters); + var file = ts.getSourceFileOfNode(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters, file) || + checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); + } + function checkGrammarArrowFunction(node, file) { + if (node.kind === 163) { + var arrowFunction = node; + var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; + if (startLine !== endLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, ts.Diagnostics.Line_terminator_not_permitted_before_arrow); + } + } + return false; } function checkGrammarIndexSignatureParameters(node) { var parameter = node.parameters[0]; @@ -16156,7 +18335,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.An_index_signature_cannot_have_a_rest_parameter); } - if (parameter.flags & 243) { + if (parameter.flags & 499) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier); } if (parameter.questionToken) { @@ -16168,7 +18347,7 @@ var ts; if (!parameter.type) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation); } - if (parameter.type.kind !== 119 && parameter.type.kind !== 117) { + if (parameter.type.kind !== 121 && parameter.type.kind !== 119) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_type_must_be_string_or_number); } if (!node.type) { @@ -16176,12 +18355,12 @@ var ts; } } function checkGrammarForIndexSignatureModifier(node) { - if (node.flags & 243) { + if (node.flags & 499) { grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_not_permitted_on_index_signature_members); } } function checkGrammarIndexSignature(node) { - checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -16198,9 +18377,9 @@ var ts; function checkGrammarForOmittedArgument(node, arguments) { if (arguments) { var sourceFile = ts.getSourceFileOfNode(node); - for (var i = 0, n = arguments.length; i < n; i++) { - var arg = arguments[i]; - if (arg.kind === 170) { + for (var _i = 0; _i < arguments.length; _i++) { + var arg = arguments[_i]; + if (arg.kind === 175) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -16224,11 +18403,10 @@ var ts; function checkGrammarClassDeclarationHeritageClauses(node) { var seenExtendsClause = false; var seenImplementsClause = false; - if (!checkGrammarModifiers(node) && node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 2); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && node.heritageClauses) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } @@ -16241,7 +18419,7 @@ var ts; seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); if (seenImplementsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen); } @@ -16254,17 +18432,16 @@ var ts; function checkGrammarInterfaceDeclaration(node) { var seenExtendsClause = false; if (node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 1); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause); } checkGrammarHeritageClause(heritageClause); @@ -16273,11 +18450,11 @@ var ts; return false; } function checkGrammarComputedPropertyName(node) { - if (node.kind !== 124) { + if (node.kind !== 127) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 165 && computedPropertyName.expression.operatorToken.kind === 23) { + if (computedPropertyName.expression.kind === 169 && computedPropertyName.expression.operatorToken.kind === 23) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } @@ -16301,54 +18478,54 @@ var ts; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; var inStrictMode = (node.parserContextFlags & 1) !== 0; - for (var i = 0, n = node.properties.length; i < n; i++) { - var prop = node.properties[i]; - var name = prop.name; - if (prop.kind === 170 || - name.kind === 124) { - checkGrammarComputedPropertyName(name); + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var name_11 = prop.name; + if (prop.kind === 175 || + name_11.kind === 127) { + checkGrammarComputedPropertyName(name_11); continue; } - var currentKind; - if (prop.kind === 207 || prop.kind === 208) { + var currentKind = void 0; + if (prop.kind === 224 || prop.kind === 225) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name.kind === 7) { - checkGrammarNumbericLiteral(name); + if (name_11.kind === 7) { + checkGrammarNumbericLiteral(name_11); } currentKind = Property; } - else if (prop.kind === 130) { + else if (prop.kind === 134) { currentKind = Property; } - else if (prop.kind === 132) { + else if (prop.kind === 136) { currentKind = GetAccessor; } - else if (prop.kind === 133) { + else if (prop.kind === 137) { currentKind = SetAccesor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name.text)) { - seen[name.text] = currentKind; + if (!ts.hasProperty(seen, name_11.text)) { + seen[name_11.text] = currentKind; } else { - var existingKind = seen[name.text]; + var existingKind = seen[name_11.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name.text] = currentKind | existingKind; + seen[name_11.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -16357,33 +18534,32 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 192) { + if (forInOrOfStatement.initializer.kind === 199) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement + : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = variableList.declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer + : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation + : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); } } } return false; } - function checkGrammarForOfStatement(forOfStatement) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_not_currently_supported); - if (languageVersion < 2) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher); - } - return checkGrammarForInOrForOfStatement(forOfStatement); - } function checkGrammarAccessor(accessor) { var kind = accessor.kind; if (languageVersion < 1) { @@ -16398,10 +18574,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 132 && accessor.parameters.length) { + else if (kind === 136 && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 133) { + else if (kind === 137) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -16413,7 +18589,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_set_accessor_cannot_have_rest_parameter); } - else if (parameter.flags & 243) { + else if (parameter.flags & 499) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } else if (parameter.questionToken) { @@ -16426,7 +18602,7 @@ var ts; } } function checkGrammarForNonSymbolComputedProperty(node, message) { - if (node.kind === 124 && !ts.isWellKnownSymbolSyntactically(node.expression)) { + if (node.kind === 127 && !ts.isWellKnownSymbolSyntactically(node.expression)) { return grammarErrorOnNode(node, message); } } @@ -16436,7 +18612,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 150) { + if (node.parent.kind === 154) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -16444,7 +18620,7 @@ var ts; return grammarErrorAtPos(getSourceFile(node), node.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); } } - if (node.parent.kind === 194) { + if (node.parent.kind === 201) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -16455,22 +18631,22 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 179: - case 180: - case 181: - case 177: - case 178: - return true; + case 186: case 187: + case 188: + case 184: + case 185: + return true; + case 194: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; @@ -16478,21 +18654,22 @@ var ts; function checkGrammarBreakOrContinueStatement(node) { var current = node; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 187: + case 194: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 182 && !isIterationStatement(current.statement, true); + var isMisplacedContinueLabel = node.kind === 189 + && !isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); } return false; } break; - case 186: - if (node.kind === 183 && !node.label) { + case 193: + if (node.kind === 190 && !node.label) { return false; } break; @@ -16505,11 +18682,15 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement + : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement + : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } } @@ -16526,16 +18707,14 @@ var ts; return checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarVariableDeclaration(node) { - if (ts.isInAmbientContext(node)) { - if (ts.isBindingPattern(node.name)) { - return grammarErrorOnNode(node, ts.Diagnostics.Destructuring_declarations_are_not_allowed_in_ambient_contexts); + if (node.parent.parent.kind !== 187 && node.parent.parent.kind !== 188) { + if (ts.isInAmbientContext(node)) { + if (node.initializer) { + var equalsTokenLength = "=".length; + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - equalsTokenLength, equalsTokenLength, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } } - if (node.initializer) { - return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - 1, 1, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); - } - } - else { - if (!node.initializer) { + else if (!node.initializer) { if (ts.isBindingPattern(node.name) && !ts.isBindingPattern(node.parent)) { return grammarErrorOnNode(node, ts.Diagnostics.A_destructuring_declaration_must_have_an_initializer); } @@ -16549,15 +18728,16 @@ var ts; checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarNameInLetOrConstDeclarations(name) { - if (name.kind === 64) { + if (name.kind === 65) { if (name.text === "let") { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { var elements = name.elements; - for (var i = 0; i < elements.length; ++i) { - checkGrammarNameInLetOrConstDeclarations(elements[i].name); + for (var _i = 0; _i < elements.length; _i++) { + var element = elements[_i]; + checkGrammarNameInLetOrConstDeclarations(element.name); } } } @@ -16569,26 +18749,18 @@ var ts; if (!declarationList.declarations.length) { return grammarErrorAtPos(ts.getSourceFileOfNode(declarationList), declarations.pos, declarations.end - declarations.pos, ts.Diagnostics.Variable_declaration_list_cannot_be_empty); } - if (languageVersion < 2) { - if (ts.isLet(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - else if (ts.isConst(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - } } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 176: - case 177: - case 178: + case 183: + case 184: case 185: - case 179: - case 180: - case 181: - return false; + case 192: + case 186: case 187: + case 188: + return false; + case 194: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -16604,7 +18776,7 @@ var ts; } } function isIntegerLiteral(expression) { - if (expression.kind === 163) { + if (expression.kind === 167) { var unaryExpression = expression; if (unaryExpression.operator === 33 || unaryExpression.operator === 34) { expression = unaryExpression.operand; @@ -16616,14 +18788,14 @@ var ts; return false; } function checkGrammarEnumDeclaration(enumDecl) { - var enumIsConst = (enumDecl.flags & 4096) !== 0; + var enumIsConst = (enumDecl.flags & 8192) !== 0; var hasError = false; if (!enumIsConst) { var inConstantEnumMemberSection = true; var inAmbientContext = ts.isInAmbientContext(enumDecl); - for (var i = 0, n = enumDecl.members.length; i < n; i++) { - var node = enumDecl.members[i]; - if (node.name.kind === 124) { + for (var _i = 0, _a = enumDecl.members; _i < _a.length; _i++) { + var node = _a[_i]; + if (node.name.kind === 127) { hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Computed_property_names_are_not_allowed_in_enums); } else if (inAmbientContext) { @@ -16644,18 +18816,11 @@ var ts; function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } - function scanToken(scanner, pos) { - scanner.setTextPos(pos); - scanner.scan(); - var start = scanner.getTokenPos(); - return start; - } function grammarErrorOnFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - var start = scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, scanner.getTextPos() - start, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2)); return true; } } @@ -16668,16 +18833,17 @@ var ts; function grammarErrorOnNode(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var span = ts.getErrorSpanForNode(node); - var start = span.end > span.pos ? ts.skipTrivia(sourceFile.text, span.pos) : span.pos; - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, span.end - start, message, arg0, arg1, arg2)); + diagnostics.add(ts.createDiagnosticForNode(node, message, arg0, arg1, arg2)); return true; } } - function checkGrammarEvalOrArgumentsInStrictMode(contextNode, identifier) { - if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { - var name = ts.declarationNameToString(identifier); - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, name); + function checkGrammarEvalOrArgumentsInStrictMode(contextNode, name) { + if (name && name.kind === 65) { + var identifier = name; + if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { + var nameText = ts.declarationNameToString(identifier); + return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); + } } } function checkGrammarConstructorTypeParameters(node) { @@ -16691,18 +18857,18 @@ var ts; } } function checkGrammarProperty(node) { - if (node.parent.kind === 194) { + if (node.parent.kind === 201) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional) || checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -16712,18 +18878,21 @@ var ts; } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 195 || - node.kind === 200 || - node.kind === 201 || - (node.flags & 2)) { + if (node.kind === 202 || + node.kind === 209 || + node.kind === 208 || + node.kind === 215 || + node.kind === 214 || + (node.flags & 2) || + (node.flags & (1 | 256))) { return false; } return grammarErrorOnFirstToken(node, ts.Diagnostics.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file); } function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { - for (var i = 0, n = file.statements.length; i < n; i++) { - var decl = file.statements[i]; - if (ts.isDeclaration(decl) || decl.kind === 173) { + for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { + var decl = _a[_i]; + if (ts.isDeclaration(decl) || decl.kind === 180) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -16739,13 +18908,13 @@ var ts; return getNodeLinks(node).hasReportedStatementInAmbientContext = true; } var links = getNodeLinks(node); - if (!links.hasReportedStatementInAmbientContext && ts.isAnyFunction(node.parent)) { + if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 172 || node.parent.kind === 199 || node.parent.kind === 210) { - var links = getNodeLinks(node.parent); - if (!links.hasReportedStatementInAmbientContext) { - return links.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); + if (node.parent.kind === 179 || node.parent.kind === 206 || node.parent.kind === 227) { + var links_1 = getNodeLinks(node.parent); + if (!links_1.hasReportedStatementInAmbientContext) { + return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); } } else { @@ -16753,7 +18922,7 @@ var ts; } } function checkGrammarNumbericLiteral(node) { - if (node.flags & 8192) { + if (node.flags & 16384) { if (node.parserContextFlags & 1) { return grammarErrorOnNode(node, ts.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode); } @@ -16765,9 +18934,8 @@ var ts; function grammarErrorAfterFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, scanner.getTextPos(), 0, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, ts.textSpanEnd(span), 0, message, arg0, arg1, arg2)); return true; } } @@ -16776,247 +18944,16 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); +/// var ts; (function (ts) { - var indentStrings = ["", " "]; - function getIndentString(level) { - if (indentStrings[level] === undefined) { - indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; - } - return indentStrings[level]; - } - ts.getIndentString = getIndentString; - function getIndentSize() { - return indentStrings[1].length; - } - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!ts.isDeclarationFile(sourceFile)) { - if ((ts.isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { - return true; - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; - function createTextWriter(newLine) { - var output = ""; - var indent = 0; - var lineStart = true; - var lineCount = 0; - var linePos = 0; - function write(s) { - if (s && s.length) { - if (lineStart) { - output += getIndentString(indent); - lineStart = false; - } - output += s; - } - } - function rawWrite(s) { - if (s !== undefined) { - if (lineStart) { - lineStart = false; - } - output += s; - } - } - function writeLiteral(s) { - if (s && s.length) { - write(s); - var lineStartsOfS = ts.computeLineStarts(s); - if (lineStartsOfS.length > 1) { - lineCount = lineCount + lineStartsOfS.length - 1; - linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; - } - } - } - function writeLine() { - if (!lineStart) { - output += newLine; - lineCount++; - linePos = output.length; - lineStart = true; - } - } - function writeTextOfNode(sourceFile, node) { - write(ts.getSourceTextOfNodeFromSourceFile(sourceFile, node)); - } - return { - write: write, - rawWrite: rawWrite, - writeTextOfNode: writeTextOfNode, - writeLiteral: writeLiteral, - writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, - getIndent: function () { return indent; }, - getTextPos: function () { return output.length; }, - getLine: function () { return lineCount + 1; }, - getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, - getText: function () { return output; } - }; - } - function getLineOfLocalPosition(currentSourceFile, pos) { - return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; - } - function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { - if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && - getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { - writer.writeLine(); - } - } - function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { - var emitLeadingSpace = !trailingSeparator; - ts.forEach(comments, function (comment) { - if (emitLeadingSpace) { - writer.write(" "); - emitLeadingSpace = false; - } - writeComment(currentSourceFile, writer, comment, newLine); - if (comment.hasTrailingNewLine) { - writer.writeLine(); - } - else if (trailingSeparator) { - writer.write(" "); - } - else { - emitLeadingSpace = true; - } - }); - } - function writeCommentRange(currentSourceFile, writer, comment, newLine) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); - var lineCount = ts.getLineStarts(currentSourceFile).length; - var firstCommentLineIndent; - for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { - var nextLineStart = (currentLine + 1) === lineCount ? currentSourceFile.text.length + 1 : ts.getStartPositionOfLine(currentLine + 1, currentSourceFile); - if (pos !== comment.pos) { - if (firstCommentLineIndent === undefined) { - firstCommentLineIndent = calculateIndent(ts.getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); - } - var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); - var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); - if (spacesToEmit > 0) { - var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); - var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); - writer.rawWrite(indentSizeSpaceString); - while (numberOfSingleSpacesToEmit) { - writer.rawWrite(" "); - numberOfSingleSpacesToEmit--; - } - } - else { - writer.rawWrite(""); - } - } - writeTrimmedCurrentLine(pos, nextLineStart); - pos = nextLineStart; - } - } - else { - writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); - } - function writeTrimmedCurrentLine(pos, nextLineStart) { - var end = Math.min(comment.end, nextLineStart - 1); - var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); - if (currentLineText) { - writer.write(currentLineText); - if (end !== comment.end) { - writer.writeLine(); - } - } - else { - writer.writeLiteral(newLine); - } - } - function calculateIndent(pos, end) { - var currentLineIndent = 0; - for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { - if (currentSourceFile.text.charCodeAt(pos) === 9) { - currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); - } - else { - currentLineIndent++; - } - } - return currentLineIndent; - } - } - function getFirstConstructorWithBody(node) { - return ts.forEach(node.members, function (member) { - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { - return member; - } - }); - } - function getAllAccessorDeclarations(declarations, accessor) { - var firstAccessor; - var getAccessor; - var setAccessor; - if (ts.hasDynamicName(accessor)) { - firstAccessor = accessor; - if (accessor.kind === 132) { - getAccessor = accessor; - } - else if (accessor.kind === 133) { - setAccessor = accessor; - } - else { - ts.Debug.fail("Accessor has wrong kind"); - } - } - else { - ts.forEach(declarations, function (member) { - if ((member.kind === 132 || member.kind === 133) && (member.flags & 128) === (accessor.flags & 128)) { - var memberName = ts.getPropertyNameForPropertyNameNode(member.name); - var accessorName = ts.getPropertyNameForPropertyNameNode(accessor.name); - if (memberName === accessorName) { - if (!firstAccessor) { - firstAccessor = member; - } - if (member.kind === 132 && !getAccessor) { - getAccessor = member; - } - if (member.kind === 133 && !setAccessor) { - setAccessor = member; - } - } - } - }); - } - return { - firstAccessor: firstAccessor, - getAccessor: getAccessor, - setAccessor: setAccessor - }; - } - function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { - var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); - sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); - return ts.combinePaths(newDirPath, sourceFilePath); - } - function getOwnEmitOutputFilePath(sourceFile, host, extension) { - var compilerOptions = host.getCompilerOptions(); - if (compilerOptions.outDir) { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); - } - else { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); - } - return emitOutputFilePathWithoutExtension + extension; - } - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { - host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + function getDeclarationDiagnostics(host, resolver, targetSourceFile) { + var diagnostics = []; + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); + return diagnostics; } + ts.getDeclarationDiagnostics = getDeclarationDiagnostics; function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); @@ -17032,33 +18969,47 @@ var ts; var reportedDeclarationError = false; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var aliasDeclarationEmitInfo = []; + var moduleElementDeclarationEmitInfo = []; + var asynchronousSubModuleDeclarationEmitInfo; var referencePathsOutput = ""; if (root) { if (!compilerOptions.noResolve) { var addedGlobalFileReference = false; ts.forEach(root.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - if (referencedFile && ((referencedFile.flags & 1024) || - shouldEmitToOwnFile(referencedFile, compilerOptions) || + if (referencedFile && ((referencedFile.flags & 2048) || + ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || !addedGlobalFileReference)) { writeReferencePath(referencedFile); - if (!isExternalModuleOrDeclarationFile(referencedFile)) { + if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { addedGlobalFileReference = true; } } }); } emitSourceFile(root); + if (moduleElementDeclarationEmitInfo.length) { + var oldWriter = writer; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.isVisible) { + ts.Debug.assert(aliasEmitInfo.node.kind === 209); + createAndSetNewTextWriterWithSymbolWriter(); + ts.Debug.assert(aliasEmitInfo.indent === 0); + writeImportDeclaration(aliasEmitInfo.node); + aliasEmitInfo.asynchronousOutput = writer.getText(); + } + }); + setWriter(oldWriter); + } } else { var emittedReferencedFiles = []; ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!isExternalModuleOrDeclarationFile(sourceFile)) { + if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { if (!compilerOptions.noResolve) { ts.forEach(sourceFile.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) && + if (referencedFile && (ts.isExternalModuleOrDeclarationFile(referencedFile) && !ts.contains(emittedReferencedFiles, referencedFile))) { writeReferencePath(referencedFile); emittedReferencedFiles.push(referencedFile); @@ -17071,7 +19022,7 @@ var ts; } return { reportedDeclarationError: reportedDeclarationError, - aliasDeclarationEmitInfo: aliasDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -17090,7 +19041,7 @@ var ts; } } function createAndSetNewTextWriterWithSymbolWriter() { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); writer.trackSymbol = trackSymbol; writer.writeKeyword = writer.write; writer.writeOperator = writer.write; @@ -17110,17 +19061,43 @@ var ts; increaseIndent = newWriter.increaseIndent; decreaseIndent = newWriter.decreaseIndent; } - function writeAsychronousImportDeclarations(importDeclarations) { + function writeAsynchronousModuleElements(nodes) { var oldWriter = writer; - ts.forEach(importDeclarations, function (aliasToWrite) { - var aliasEmitInfo = ts.forEach(aliasDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.declaration === aliasToWrite ? declEmitInfo : undefined; }); - if (aliasEmitInfo) { - createAndSetNewTextWriterWithSymbolWriter(); - for (var declarationIndent = aliasEmitInfo.indent; declarationIndent; declarationIndent--) { - increaseIndent(); + ts.forEach(nodes, function (declaration) { + var nodeToCheck; + if (declaration.kind === 198) { + nodeToCheck = declaration.parent.parent; + } + else if (declaration.kind === 212 || declaration.kind === 213 || declaration.kind === 210) { + ts.Debug.fail("We should be getting ImportDeclaration instead to write"); + } + else { + nodeToCheck = declaration; + } + var moduleElementEmitInfo = ts.forEach(moduleElementDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + if (!moduleElementEmitInfo && asynchronousSubModuleDeclarationEmitInfo) { + moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + } + if (moduleElementEmitInfo) { + if (moduleElementEmitInfo.node.kind === 209) { + moduleElementEmitInfo.isVisible = true; + } + else { + createAndSetNewTextWriterWithSymbolWriter(); + for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { + increaseIndent(); + } + if (nodeToCheck.kind === 205) { + ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); + asynchronousSubModuleDeclarationEmitInfo = []; + } + writeModuleElement(nodeToCheck); + if (nodeToCheck.kind === 205) { + moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; + asynchronousSubModuleDeclarationEmitInfo = undefined; + } + moduleElementEmitInfo.asynchronousOutput = writer.getText(); } - writeImportDeclaration(aliasToWrite); - aliasEmitInfo.asynchronousOutput = writer.getText(); } }); setWriter(oldWriter); @@ -17128,7 +19105,7 @@ var ts; function handleSymbolAccessibilityError(symbolAccesibilityResult) { if (symbolAccesibilityResult.accessibility === 0) { if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { - writeAsychronousImportDeclarations(symbolAccesibilityResult.aliasesToMakeVisible); + writeAsynchronousModuleElements(symbolAccesibilityResult.aliasesToMakeVisible); } } else { @@ -17168,28 +19145,32 @@ var ts; } } function emitLines(nodes) { - for (var i = 0, n = nodes.length; i < n; i++) { - emit(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + emit(node); } } - function emitSeparatedList(nodes, separator, eachNodeEmitFn) { + function emitSeparatedList(nodes, separator, eachNodeEmitFn, canEmitFn) { var currentWriterPos = writer.getTextPos(); - for (var i = 0, n = nodes.length; i < n; i++) { - if (currentWriterPos !== writer.getTextPos()) { - write(separator); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + if (!canEmitFn || canEmitFn(node)) { + if (currentWriterPos !== writer.getTextPos()) { + write(separator); + } + currentWriterPos = writer.getTextPos(); + eachNodeEmitFn(node); } - currentWriterPos = writer.getTextPos(); - eachNodeEmitFn(nodes[i]); } } - function emitCommaList(nodes, eachNodeEmitFn) { - emitSeparatedList(nodes, ", ", eachNodeEmitFn); + function emitCommaList(nodes, eachNodeEmitFn, canEmitFn) { + emitSeparatedList(nodes, ", ", eachNodeEmitFn, canEmitFn); } function writeJsDocComments(declaration) { if (declaration) { var jsDocComments = ts.getJsDocComments(declaration, currentSourceFile); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); - emitComments(currentSourceFile, writer, jsDocComments, true, newLine, writeCommentRange); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); + ts.emitComments(currentSourceFile, writer, jsDocComments, true, newLine, ts.writeCommentRange); } } function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type, getSymbolAccessibilityDiagnostic) { @@ -17198,51 +19179,63 @@ var ts; } function emitType(type) { switch (type.kind) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: + case 113: + case 122: + case 99: case 8: return writeTextOfNode(currentSourceFile, type); - case 137: - return emitTypeReference(type); - case 140: - return emitTypeQuery(type); - case 142: - return emitArrayType(type); - case 143: - return emitTupleType(type); - case 144: - return emitUnionType(type); - case 145: - return emitParenType(type); - case 138: - case 139: - return emitSignatureDeclarationWithJsDocComments(type); + case 177: + return emitHeritageClauseElement(type); case 141: + return emitTypeReference(type); + case 144: + return emitTypeQuery(type); + case 146: + return emitArrayType(type); + case 147: + return emitTupleType(type); + case 148: + return emitUnionType(type); + case 149: + return emitParenType(type); + case 142: + case 143: + return emitSignatureDeclarationWithJsDocComments(type); + case 145: return emitTypeLiteral(type); - case 64: + case 65: return emitEntityName(type); - case 123: + case 126: return emitEntityName(type); - default: - ts.Debug.fail("Unknown type annotation: " + type.kind); } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 200 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 208 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); function writeEntityName(entityName) { - if (entityName.kind === 64) { + if (entityName.kind === 65) { writeTextOfNode(currentSourceFile, entityName); } else { - var qualifiedName = entityName; - writeEntityName(qualifiedName.left); + var left = entityName.kind === 126 ? entityName.left : entityName.expression; + var right = entityName.kind === 126 ? entityName.right : entityName.name; + writeEntityName(left); write("."); - writeTextOfNode(currentSourceFile, qualifiedName.right); + writeTextOfNode(currentSourceFile, right); + } + } + } + function emitHeritageClauseElement(node) { + if (ts.isSupportedHeritageClauseElement(node)) { + ts.Debug.assert(node.expression.kind === 65 || node.expression.kind === 155); + emitEntityName(node.expression); + if (node.typeArguments) { + write("<"); + emitCommaList(node.typeArguments, emitType); + write(">"); } } } @@ -17292,17 +19285,101 @@ var ts; emitLines(node.statements); } function emitExportAssignment(node) { - write("export = "); - writeTextOfNode(currentSourceFile, node.exportName); + write(node.isExportEquals ? "export = " : "export default "); + if (node.expression.kind === 65) { + writeTextOfNode(currentSourceFile, node.expression); + } + else { + write(": "); + if (node.type) { + emitType(node.type); + } + else { + writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; + resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, 2, writer); + } + } write(";"); writeLine(); + if (node.expression.kind === 65) { + var nodes = resolver.collectLinkedAliases(node.expression); + writeAsynchronousModuleElements(nodes); + } + function getDefaultExportAccessibilityDiagnostic(diagnostic) { + return { + diagnosticMessage: ts.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, + errorNode: node + }; + } + } + function isModuleElementVisible(node) { + return resolver.isDeclarationVisible(node); + } + function emitModuleElement(node, isModuleElementVisible) { + if (isModuleElementVisible) { + writeModuleElement(node); + } + else if (node.kind === 208 || + (node.parent.kind === 227 && ts.isExternalModule(currentSourceFile))) { + var isVisible; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 227) { + asynchronousSubModuleDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + else { + if (node.kind === 209) { + var importDeclaration = node; + if (importDeclaration.importClause) { + isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || + isVisibleNamedBinding(importDeclaration.importClause.namedBindings); + } + } + moduleElementDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + } + } + function writeModuleElement(node) { + switch (node.kind) { + case 200: + return writeFunctionDeclaration(node); + case 180: + return writeVariableStatement(node); + case 202: + return writeInterfaceDeclaration(node); + case 201: + return writeClassDeclaration(node); + case 203: + return writeTypeAliasDeclaration(node); + case 204: + return writeEnumDeclaration(node); + case 205: + return writeModuleDeclaration(node); + case 208: + return writeImportEqualsDeclaration(node); + case 209: + return writeImportDeclaration(node); + default: + ts.Debug.fail("Unknown symbol kind"); + } } function emitModuleElementDeclarationFlags(node) { if (node.parent === currentSourceFile) { if (node.flags & 1) { write("export "); } - if (node.kind !== 195) { + if (node.flags & 256) { + write("default "); + } + else if (node.kind !== 202) { write("declare "); } } @@ -17318,19 +19395,7 @@ var ts; write("static "); } } - function emitImportDeclaration(node) { - var nodeEmitInfo = { - declaration: node, - outputPos: writer.getTextPos(), - indent: writer.getIndent(), - hasWritten: resolver.isDeclarationVisible(node) - }; - aliasDeclarationEmitInfo.push(nodeEmitInfo); - if (nodeEmitInfo.hasWritten) { - writeImportDeclaration(node); - } - } - function writeImportDeclaration(node) { + function writeImportEqualsDeclaration(node) { emitJsDocComments(node); if (node.flags & 1) { write("export "); @@ -17338,13 +19403,13 @@ var ts; write("import "); writeTextOfNode(currentSourceFile, node.name); write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node)) { emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); write(";"); } else { write("require("); - writeTextOfNode(currentSourceFile, ts.getExternalModuleImportDeclarationExpression(node)); + writeTextOfNode(currentSourceFile, ts.getExternalModuleImportEqualsDeclarationExpression(node)); write(");"); } writer.writeLine(); @@ -17356,40 +19421,110 @@ var ts; }; } } - function emitModuleDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("module "); - writeTextOfNode(currentSourceFile, node.name); - while (node.body.kind !== 199) { - node = node.body; - write("."); - writeTextOfNode(currentSourceFile, node.name); + function isVisibleNamedBinding(namedBindings) { + if (namedBindings) { + if (namedBindings.kind === 211) { + return resolver.isDeclarationVisible(namedBindings); + } + else { + return ts.forEach(namedBindings.elements, function (namedImport) { return resolver.isDeclarationVisible(namedImport); }); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.body.statements); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; } } - function emitTypeAliasDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("type "); - writeTextOfNode(currentSourceFile, node.name); - write(" = "); - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); - write(";"); - writeLine(); + function writeImportDeclaration(node) { + if (!node.importClause && !(node.flags & 1)) { + return; } + emitJsDocComments(node); + if (node.flags & 1) { + write("export "); + } + write("import "); + if (node.importClause) { + var currentWriterPos = writer.getTextPos(); + if (node.importClause.name && resolver.isDeclarationVisible(node.importClause)) { + writeTextOfNode(currentSourceFile, node.importClause.name); + } + if (node.importClause.namedBindings && isVisibleNamedBinding(node.importClause.namedBindings)) { + if (currentWriterPos !== writer.getTextPos()) { + write(", "); + } + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + writeTextOfNode(currentSourceFile, node.importClause.namedBindings.name); + } + else { + write("{ "); + emitCommaList(node.importClause.namedBindings.elements, emitImportOrExportSpecifier, resolver.isDeclarationVisible); + write(" }"); + } + } + write(" from "); + } + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + write(";"); + writer.writeLine(); + } + function emitImportOrExportSpecifier(node) { + if (node.propertyName) { + writeTextOfNode(currentSourceFile, node.propertyName); + write(" as "); + } + writeTextOfNode(currentSourceFile, node.name); + } + function emitExportSpecifier(node) { + emitImportOrExportSpecifier(node); + var nodes = resolver.collectLinkedAliases(node.propertyName || node.name); + writeAsynchronousModuleElements(nodes); + } + function emitExportDeclaration(node) { + emitJsDocComments(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitCommaList(node.exportClause.elements, emitExportSpecifier); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + } + write(";"); + writer.writeLine(); + } + function writeModuleDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("module "); + writeTextOfNode(currentSourceFile, node.name); + while (node.body.kind !== 206) { + node = node.body; + write("."); + writeTextOfNode(currentSourceFile, node.name); + } + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.body.statements); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function writeTypeAliasDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("type "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); + write(";"); + writeLine(); function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult) { return { diagnosticMessage: ts.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, @@ -17398,23 +19533,21 @@ var ts; }; } } - function emitEnumDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isConst(node)) { - write("const "); - } - write("enum "); - writeTextOfNode(currentSourceFile, node.name); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); + function writeEnumDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isConst(node)) { + write("const "); } + write("enum "); + writeTextOfNode(currentSourceFile, node.name); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); } function emitEnumMemberDeclaration(node) { emitJsDocComments(node); @@ -17428,7 +19561,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 130 && (node.parent.flags & 32); + return node.parent.kind === 134 && (node.parent.flags & 32); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -17438,15 +19571,15 @@ var ts; writeTextOfNode(currentSourceFile, node.name); if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - (node.parent.parent && node.parent.parent.kind === 141)) { - ts.Debug.assert(node.parent.kind === 130 || - node.parent.kind === 129 || + if (node.parent.kind === 142 || + node.parent.kind === 143 || + (node.parent.parent && node.parent.parent.kind === 145)) { + ts.Debug.assert(node.parent.kind === 134 || + node.parent.kind === 133 || + node.parent.kind === 142 || + node.parent.kind === 143 || node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.kind === 134 || - node.parent.kind === 135); + node.parent.kind === 139); emitType(node.constraint); } else { @@ -17456,31 +19589,31 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 194: + case 201: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 195: + case 202: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 135: + case 139: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 134: + case 138: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 130: - case 129: + case 134: + case 133: if (node.parent.flags & 128) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 194) { + else if (node.parent.parent.kind === 201) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 193: + case 200: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -17505,11 +19638,15 @@ var ts; emitCommaList(typeReferences, emitTypeOfTypeReference); } function emitTypeOfTypeReference(node) { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + if (ts.isSupportedHeritageClauseElement(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + } function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 194) { - diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; + if (node.parent.parent.kind === 201) { + diagnosticMessage = isImplementsList ? + ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : + ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1; @@ -17522,7 +19659,7 @@ var ts; } } } - function emitClassDeclaration(node) { + function writeClassDeclaration(node) { function emitParameterProperties(constructorDeclaration) { if (constructorDeclaration) { ts.forEach(constructorDeclaration.parameters, function (param) { @@ -17532,49 +19669,45 @@ var ts; }); } } - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("class "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - var baseTypeNode = ts.getClassBaseTypeNode(node); - if (baseTypeNode) { - emitHeritageClause([baseTypeNode], false); - } - emitHeritageClause(ts.getClassImplementedTypeNodes(node), true); - write(" {"); - writeLine(); - increaseIndent(); - emitParameterProperties(getFirstConstructorWithBody(node)); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("class "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + emitHeritageClause([baseTypeNode], false); } + emitHeritageClause(ts.getClassImplementsHeritageClauseElements(node), true); + write(" {"); + writeLine(); + increaseIndent(); + emitParameterProperties(ts.getFirstConstructorWithBody(node)); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } - function emitInterfaceDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("interface "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } + function writeInterfaceDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("interface "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } function emitPropertyDeclaration(node) { if (ts.hasDynamicName(node)) { @@ -17587,40 +19720,90 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 191 || resolver.isDeclarationVisible(node)) { - writeTextOfNode(currentSourceFile, node.name); - if ((node.kind === 128 || node.kind === 127) && ts.hasQuestionToken(node)) { - write("?"); + if (node.kind !== 198 || resolver.isDeclarationVisible(node)) { + if (ts.isBindingPattern(node.name)) { + emitBindingPattern(node.name); } - if ((node.kind === 128 || node.kind === 127) && node.parent.kind === 141) { - emitTypeOfVariableDeclarationFromTypeLiteral(node); + else { + writeTextOfNode(currentSourceFile, node.name); + if ((node.kind === 132 || node.kind === 131) && ts.hasQuestionToken(node)) { + write("?"); + } + if ((node.kind === 132 || node.kind === 131) && node.parent.kind === 145) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.flags & 32)) { + writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } } - else if (!(node.flags & 32)) { - writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } + function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + if (node.kind === 198) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + } + else if (node.kind === 132 || node.kind === 131) { + if (node.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } } } function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - if (node.kind === 191) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; - } - else if (node.kind === 128 || node.kind === 127) { - if (node.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; - } - } + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name } : undefined; } + function emitBindingPattern(bindingPattern) { + var elements = []; + for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { + var element = _a[_i]; + if (element.kind !== 175) { + elements.push(element); + } + } + emitCommaList(elements, emitBindingElement); + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + writeTextOfNode(currentSourceFile, bindingElement.name); + writeTypeOfDeclaration(bindingElement, undefined, getBindingElementTypeVisibilityError); + } + } + } } function emitTypeOfVariableDeclarationFromTypeLiteral(node) { if (node.type) { @@ -17628,40 +19811,41 @@ var ts; emitType(node.type); } } - function emitVariableStatement(node) { - var hasDeclarationWithEmit = ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); - if (hasDeclarationWithEmit) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } - emitCommaList(node.declarationList.declarations, emitVariableDeclaration); - write(";"); - writeLine(); + function isVariableStatementVisible(node) { + return ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); + } + function writeVariableStatement(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isLet(node.declarationList)) { + write("let "); } + else if (ts.isConst(node.declarationList)) { + write("const "); + } + else { + write("var "); + } + emitCommaList(node.declarationList.declarations, emitVariableDeclaration, resolver.isDeclarationVisible); + write(";"); + writeLine(); } function emitAccessorDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - var accessors = getAllAccessorDeclarations(node.parent.members, node); + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + var accessorWithTypeAnnotation; if (node === accessors.firstAccessor) { emitJsDocComments(accessors.getAccessor); emitJsDocComments(accessors.setAccessor); emitClassMemberDeclarationFlags(node); writeTextOfNode(currentSourceFile, node.name); if (!(node.flags & 32)) { - var accessorWithTypeAnnotation = node; + accessorWithTypeAnnotation = node; var type = getTypeAnnotationFromAccessor(node); if (!type) { - var anotherAccessor = node.kind === 132 ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 136 ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -17674,17 +19858,25 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 132 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type : undefined; + return accessor.kind === 136 + ? accessor.type + : accessor.parameters.length > 0 + ? accessor.parameters[0].type + : undefined; } } function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 133) { + if (accessorWithTypeAnnotation.kind === 137) { if (accessorWithTypeAnnotation.parent.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; } return { diagnosticMessage: diagnosticMessage, @@ -17694,10 +19886,18 @@ var ts; } else { if (accessorWithTypeAnnotation.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; } return { diagnosticMessage: diagnosticMessage, @@ -17707,24 +19907,23 @@ var ts; } } } - function emitFunctionDeclaration(node) { + function writeFunctionDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - if ((node.kind !== 193 || resolver.isDeclarationVisible(node)) && - !resolver.isImplementationOfOverload(node)) { + if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 193) { + if (node.kind === 200) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 130) { + else if (node.kind === 134) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 193) { + if (node.kind === 200) { write("function "); writeTextOfNode(currentSourceFile, node.name); } - else if (node.kind === 131) { + else if (node.kind === 135) { write("constructor"); } else { @@ -17741,11 +19940,11 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { - if (node.kind === 135 || node.kind === 139) { + if (node.kind === 139 || node.kind === 143) { write("new "); } emitTypeParameters(node.typeParameters); - if (node.kind === 136) { + if (node.kind === 140) { write("["); } else { @@ -17754,20 +19953,20 @@ var ts; var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 136) { + if (node.kind === 140) { write("]"); } else { write(")"); } - var isFunctionTypeOrConstructorType = node.kind === 138 || node.kind === 139; - if (isFunctionTypeOrConstructorType || node.parent.kind === 141) { + var isFunctionTypeOrConstructorType = node.kind === 142 || node.kind === 143; + if (isFunctionTypeOrConstructorType || node.parent.kind === 145) { if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 131 && !(node.flags & 32)) { + else if (node.kind !== 135 && !(node.flags & 32)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -17778,29 +19977,49 @@ var ts; function getReturnTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.kind) { - case 135: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + case 139: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 138: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 140: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; case 134: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - case 136: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - case 130: - case 129: + case 133: if (node.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; + else if (node.parent.kind === 201) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 193: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; + case 200: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; break; default: ts.Debug.fail("This is unknown kind for signature: " + node.kind); @@ -17818,7 +20037,7 @@ var ts; write("..."); } if (ts.isBindingPattern(node.name)) { - write("_" + ts.indexOf(node.parent.parameters, node)); + emitBindingPattern(node.name); } else { writeTextOfNode(currentSourceFile, node.name); @@ -17827,103 +20046,204 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.parent.kind === 141) { + if (node.parent.kind === 142 || + node.parent.kind === 143 || + node.parent.parent.kind === 145) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 32)) { writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); } function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - switch (node.parent.kind) { - case 131: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - break; - case 135: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 134: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 130: - case 129: - if (node.parent.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; - } - break; - case 193: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; - break; - default: - ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); - } - return { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name - }; + } : undefined; + } + function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + switch (node.parent.kind) { + case 135: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + case 139: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + case 138: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 134: + case 133: + if (node.parent.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + case 200: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + default: + ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); + } + } + function emitBindingPattern(bindingPattern) { + if (bindingPattern.kind === 150) { + write("{"); + emitCommaList(bindingPattern.elements, emitBindingElement); + write("}"); + } + else if (bindingPattern.kind === 151) { + write("["); + var elements = bindingPattern.elements; + emitCommaList(elements, emitBindingElement); + if (elements && elements.hasTrailingComma) { + write(", "); + } + write("]"); + } + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.kind === 175) { + write(" "); + } + else if (bindingElement.kind === 152) { + if (bindingElement.propertyName) { + writeTextOfNode(currentSourceFile, bindingElement.propertyName); + write(": "); + emitBindingPattern(bindingElement.name); + } + else if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + ts.Debug.assert(bindingElement.name.kind === 65); + if (bindingElement.dotDotDotToken) { + write("..."); + } + writeTextOfNode(currentSourceFile, bindingElement.name); + } + } + } } } function emitNode(node) { switch (node.kind) { - case 131: - case 193: - case 130: - case 129: - return emitFunctionDeclaration(node); + case 200: + case 205: + case 208: + case 202: + case 201: + case 203: + case 204: + return emitModuleElement(node, isModuleElementVisible(node)); + case 180: + return emitModuleElement(node, isVariableStatementVisible(node)); + case 209: + return emitModuleElement(node, !node.importClause); + case 215: + return emitExportDeclaration(node); case 135: case 134: - case 136: - return emitSignatureDeclarationWithJsDocComments(node); - case 132: case 133: + return writeFunctionDeclaration(node); + case 139: + case 138: + case 140: + return emitSignatureDeclarationWithJsDocComments(node); + case 136: + case 137: return emitAccessorDeclaration(node); - case 173: - return emitVariableStatement(node); - case 128: - case 127: + case 132: + case 131: return emitPropertyDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 196: - return emitTypeAliasDeclaration(node); - case 209: + case 226: return emitEnumMemberDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 198: - return emitModuleDeclaration(node); - case 200: - return emitImportDeclaration(node); - case 201: + case 214: return emitExportAssignment(node); - case 210: + case 227: return emitSourceFile(node); } } function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 1024 ? referencedFile.fileName : shouldEmitToOwnFile(referencedFile, compilerOptions) ? getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; + var declFileName = referencedFile.flags & 2048 + ? referencedFile.fileName + : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) + ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") + : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); referencePathsOutput += "/// " + newLine; } } - function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); + if (!emitDeclarationResult.reportedDeclarationError) { + var declarationOutput = emitDeclarationResult.referencePathsOutput + + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); + ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + } + function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { + var appliedSyncOutputPos = 0; + var declarationOutput = ""; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.asynchronousOutput) { + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); + declarationOutput += getDeclarationOutput(aliasEmitInfo.asynchronousOutput, aliasEmitInfo.subModuleElementDeclarationEmitInfo); + appliedSyncOutputPos = aliasEmitInfo.outputPos; + } + }); + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos); + return declarationOutput; + } } - ts.getDeclarationDiagnostics = getDeclarationDiagnostics; + ts.writeDeclarationFile = writeDeclarationFile; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + function isExternalModuleOrDeclarationFile(sourceFile) { + return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); + } + ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; + var TempFlags; + (function (TempFlags) { + TempFlags[TempFlags["Auto"] = 0] = "Auto"; + TempFlags[TempFlags["CountMask"] = 268435455] = "CountMask"; + TempFlags[TempFlags["_i"] = 268435456] = "_i"; + TempFlags[TempFlags["_n"] = 536870912] = "_n"; + })(TempFlags || (TempFlags = {})); function emitFiles(resolver, host, targetSourceFile) { var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; @@ -17932,8 +20252,8 @@ var ts; var newLine = host.getNewLine(); if (targetSourceFile === undefined) { ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, ".js"); emitFile(jsFilePath, sourceFile); } }); @@ -17942,8 +20262,8 @@ var ts; } } else { - if (shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); emitFile(jsFilePath, targetSourceFile); } else if (!ts.isDeclarationFile(targetSourceFile) && compilerOptions.out) { @@ -17956,27 +20276,49 @@ var ts; diagnostics: diagnostics, sourceMaps: sourceMapDataList }; + function isNodeDescendentOf(node, ancestor) { + while (node) { + if (node === ancestor) + return true; + node = node.parent; + } + return false; + } + function isUniqueLocalName(name, container) { + for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { + if (node.locals && ts.hasProperty(node.locals, name)) { + if (node.locals[name].flags & (107455 | 1048576 | 8388608)) { + return false; + } + } + } + return true; + } function emitJavaScript(jsFilePath, root) { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); var write = writer.write; var writeTextOfNode = writer.writeTextOfNode; var writeLine = writer.writeLine; var increaseIndent = writer.increaseIndent; var decreaseIndent = writer.decreaseIndent; var currentSourceFile; + var generatedNameSet = {}; + var nodeToGeneratedName = []; + var blockScopedVariableToGeneratedName; + var computedPropertyNamesToGeneratedNames; var extendsEmitted = false; - var tempCount = 0; + var decorateEmitted = false; + var tempFlags = 0; var tempVariables; var tempParameters; + var externalImports; + var exportSpecifiers; + var exportEquals; + var hasExportStars; var writeEmittedFiles = writeJavaScriptFile; - var emitLeadingComments = compilerOptions.removeComments ? function (node) { } : emitLeadingDeclarationComments; - var emitTrailingComments = compilerOptions.removeComments ? function (node) { } : emitTrailingDeclarationComments; - var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfLocalPosition; var detachedCommentsInfo; - var emitDetachedComments = compilerOptions.removeComments ? function (node) { } : emitDetachedCommentsAtPosition; - var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? function (node) { } : emitPinnedOrTripleSlashCommentsOfNode; - var writeComment = writeCommentRange; - var emit = emitNode; + var writeComment = ts.writeCommentRange; + var emit = emitNodeWithoutSourceMap; var emitStart = function (node) { }; var emitEnd = function (node) { }; var emitToken = emitTokenText; @@ -17987,18 +20329,125 @@ var ts; initializeEmitterWithSourceMaps(); } if (root) { - emit(root); + emitSourceFile(root); } else { ts.forEach(host.getSourceFiles(), function (sourceFile) { if (!isExternalModuleOrDeclarationFile(sourceFile)) { - emit(sourceFile); + emitSourceFile(sourceFile); } }); } writeLine(); writeEmittedFiles(writer.getText(), compilerOptions.emitBOM); return; + function emitSourceFile(sourceFile) { + currentSourceFile = sourceFile; + emit(sourceFile); + } + function isUniqueName(name) { + return !resolver.hasGlobalName(name) && + !ts.hasProperty(currentSourceFile.identifiers, name) && + !ts.hasProperty(generatedNameSet, name); + } + function makeTempVariableName(flags) { + if (flags && !(tempFlags & flags)) { + var name = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name)) { + tempFlags |= flags; + return name; + } + } + while (true) { + var count = tempFlags & 268435455; + tempFlags++; + if (count !== 8 && count !== 13) { + var name_12 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_12)) { + return name_12; + } + } + } + } + function makeUniqueName(baseName) { + if (baseName.charCodeAt(baseName.length - 1) !== 95) { + baseName += "_"; + } + var i = 1; + while (true) { + var generatedName = baseName + i; + if (isUniqueName(generatedName)) { + return generatedNameSet[generatedName] = generatedName; + } + i++; + } + } + function assignGeneratedName(node, name) { + nodeToGeneratedName[ts.getNodeId(node)] = ts.unescapeIdentifier(name); + } + function generateNameForFunctionOrClassDeclaration(node) { + if (!node.name) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForModuleOrEnum(node) { + if (node.name.kind === 65) { + var name_13 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_13, node) ? name_13 : makeUniqueName(name_13)); + } + } + function generateNameForImportOrExportDeclaration(node) { + var expr = ts.getExternalModuleName(node); + var baseName = expr.kind === 8 ? + ts.escapeIdentifier(ts.makeIdentifierFromModuleName(expr.text)) : "module"; + assignGeneratedName(node, makeUniqueName(baseName)); + } + function generateNameForImportDeclaration(node) { + if (node.importClause) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportDeclaration(node) { + if (node.moduleSpecifier) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportAssignment(node) { + if (node.expression && node.expression.kind !== 65) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForNode(node) { + switch (node.kind) { + case 200: + case 201: + generateNameForFunctionOrClassDeclaration(node); + break; + case 205: + generateNameForModuleOrEnum(node); + generateNameForNode(node.body); + break; + case 204: + generateNameForModuleOrEnum(node); + break; + case 209: + generateNameForImportDeclaration(node); + break; + case 215: + generateNameForExportDeclaration(node); + break; + case 214: + generateNameForExportAssignment(node); + break; + } + } + function getGeneratedNameForNode(node) { + var nodeId = ts.getNodeId(node); + if (!nodeToGeneratedName[nodeId]) { + generateNameForNode(node); + } + return nodeToGeneratedName[nodeId]; + } function initializeEmitterWithSourceMaps() { var sourceMapDir; var sourceMapSourceIndex = -1; @@ -18123,8 +20572,8 @@ var ts; if (scopeName) { var parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { - var name = node.name; - if (!name || name.kind !== 124) { + var name_14 = node.name; + if (!name_14 || name_14.kind !== 127) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -18141,18 +20590,20 @@ var ts; if (scopeName) { recordScopeNameStart(scopeName); } - else if (node.kind === 193 || - node.kind === 158 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || + else if (node.kind === 200 || + node.kind === 162 || + node.kind === 134 || node.kind === 133 || - node.kind === 198 || - node.kind === 194 || - node.kind === 197) { + node.kind === 136 || + node.kind === 137 || + node.kind === 205 || + node.kind === 201 || + node.kind === 204) { if (node.name) { - var name = node.name; - scopeName = name.kind === 124 ? ts.getTextOfNode(name) : node.name.text; + var name_15 = node.name; + scopeName = name_15.kind === 127 + ? ts.getTextOfNode(name_15) + : node.name.text; } recordScopeNameStart(scopeName); } @@ -18166,7 +20617,7 @@ var ts; ; function writeCommentRangeWithMap(curentSourceFile, writer, comment, newLine) { recordSourceMapSpan(comment.pos); - writeCommentRange(currentSourceFile, writer, comment, newLine); + ts.writeCommentRange(currentSourceFile, writer, comment, newLine); recordSourceMapSpan(comment.end); } function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings) { @@ -18194,7 +20645,7 @@ var ts; } function writeJavaScriptAndSourceMapFile(emitOutput, writeByteOrderMark) { encodeLastRecordedSourceMapSpan(); - writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); + ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); sourceMapDataList.push(sourceMapData); writeJavaScriptFile(emitOutput + "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL, writeByteOrderMark); } @@ -18217,7 +20668,7 @@ var ts; if (compilerOptions.mapRoot) { sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); if (root) { - sourceMapDir = ts.getDirectoryPath(getSourceFilePathInNewDir(root, host, sourceMapDir)); + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); } if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); @@ -18230,21 +20681,24 @@ var ts; else { sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); } - function emitNodeWithMap(node) { + function emitNodeWithSourceMap(node, allowGeneratedIdentifiers) { if (node) { - if (node.kind != 210) { + if (ts.nodeIsSynthesized(node)) { + return emitNodeWithoutSourceMap(node, false); + } + if (node.kind != 227) { recordEmitNodeStartSpan(node); - emitNode(node); + emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers); recordEmitNodeEndSpan(node); } else { recordNewSourceFileStart(node); - emitNode(node); + emitNodeWithoutSourceMap(node, false); } } } writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithMap; + emit = emitNodeWithSourceMap; emitStart = recordEmitNodeStartSpan; emitEnd = recordEmitNodeEndSpan; emitToken = writeTextWithSpanRecord; @@ -18253,19 +20707,11 @@ var ts; writeComment = writeCommentRangeWithMap; } function writeJavaScriptFile(emitOutput, writeByteOrderMark) { - writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); } - function createTempVariable(location, forLoopVariable) { - var name = forLoopVariable ? "_i" : undefined; - while (true) { - if (name && resolver.isUnknownIdentifier(location, name)) { - break; - } - name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + 97) : tempCount - 25); - tempCount++; - } - var result = ts.createNode(64); - result.text = name; + function createTempVariable(flags) { + var result = ts.createSynthesizedNode(65); + result.text = makeTempVariableName(flags); return result; } function recordTempDeclaration(name) { @@ -18274,8 +20720,8 @@ var ts; } tempVariables.push(name); } - function createAndRecordTempVariable(location) { - var temp = createTempVariable(location, false); + function createAndRecordTempVariable(flags) { + var temp = createTempVariable(flags); recordTempDeclaration(temp); return temp; } @@ -18308,7 +20754,7 @@ var ts; emit(node); } } - function emitParenthesized(node, parenthesized) { + function emitParenthesizedIf(node, parenthesized) { if (parenthesized) { write("("); } @@ -18345,12 +20791,11 @@ var ts; } emit(nodes[i]); } - var closeTokenIsOnSameLineAsLastElement = nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes)); if (nodes.hasTrailingComma && allowTrailingComma) { write(","); } decreaseIndent(); - if (closeTokenIsOnSameLineAsLastElement) { + if (nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes))) { if (spacesBetweenBraces) { write(" "); } @@ -18395,37 +20840,109 @@ var ts; emit(nodes[i]); } } - function isBinaryOrOctalIntegerLiteral(text) { - if (text.length <= 0) { - return false; - } - if (text.charCodeAt(1) === 66 || text.charCodeAt(1) === 98 || - text.charCodeAt(1) === 79 || text.charCodeAt(1) === 111) { - return true; + function isBinaryOrOctalIntegerLiteral(node, text) { + if (node.kind === 7 && text.length > 1) { + switch (text.charCodeAt(1)) { + case 98: + case 66: + case 111: + case 79: + return true; + } } return false; } function emitLiteral(node) { - var text = languageVersion < 2 && ts.isTemplateLiteralKind(node.kind) ? getTemplateLiteralAsStringLiteral(node) : node.parent ? ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node) : node.text; + var text = getLiteralText(node); if (compilerOptions.sourceMap && (node.kind === 8 || ts.isTemplateLiteralKind(node.kind))) { writer.writeLiteral(text); } - else if (languageVersion < 2 && node.kind === 7 && isBinaryOrOctalIntegerLiteral(text)) { + else if (languageVersion < 2 && isBinaryOrOctalIntegerLiteral(node, text)) { write(node.text); } else { write(text); } } - function getTemplateLiteralAsStringLiteral(node) { - return '"' + ts.escapeString(node.text) + '"'; + function getLiteralText(node) { + if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { + return getQuotedEscapedLiteralText('"', node.text, '"'); + } + if (node.parent) { + return ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + } + switch (node.kind) { + case 8: + return getQuotedEscapedLiteralText('"', node.text, '"'); + case 10: + return getQuotedEscapedLiteralText('`', node.text, '`'); + case 11: + return getQuotedEscapedLiteralText('`', node.text, '${'); + case 12: + return getQuotedEscapedLiteralText('}', node.text, '${'); + case 13: + return getQuotedEscapedLiteralText('}', node.text, '`'); + case 7: + return node.text; + } + ts.Debug.fail("Literal kind '" + node.kind + "' not accounted for."); + } + function getQuotedEscapedLiteralText(leftQuote, text, rightQuote) { + return leftQuote + ts.escapeNonAsciiCharacters(ts.escapeString(text)) + rightQuote; + } + function emitDownlevelRawTemplateLiteral(node) { + var text = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + var isLast = node.kind === 10 || node.kind === 13; + text = text.substring(1, text.length - (isLast ? 1 : 2)); + text = text.replace(/\r\n?/g, "\n"); + text = ts.escapeString(text); + write('"' + text + '"'); + } + function emitDownlevelTaggedTemplateArray(node, literalEmitter) { + write("["); + if (node.template.kind === 10) { + literalEmitter(node.template); + } + else { + literalEmitter(node.template.head); + ts.forEach(node.template.templateSpans, function (child) { + write(", "); + literalEmitter(child.literal); + }); + } + write("]"); + } + function emitDownlevelTaggedTemplate(node) { + var tempVariable = createAndRecordTempVariable(0); + write("("); + emit(tempVariable); + write(" = "); + emitDownlevelTaggedTemplateArray(node, emit); + write(", "); + emit(tempVariable); + write(".raw = "); + emitDownlevelTaggedTemplateArray(node, emitDownlevelRawTemplateLiteral); + write(", "); + emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); + write("("); + emit(tempVariable); + if (node.template.kind === 171) { + ts.forEach(node.template.templateSpans, function (templateSpan) { + write(", "); + var needsParens = templateSpan.expression.kind === 169 + && templateSpan.expression.operatorToken.kind === 23; + emitParenthesizedIf(templateSpan.expression, needsParens); + }); + } + write("))"); } function emitTemplateExpression(node) { if (languageVersion >= 2) { ts.forEachChild(node, emit); return; } - var emitOuterParens = ts.isExpression(node.parent) && templateNeedsParens(node, node.parent); + var emitOuterParens = ts.isExpression(node.parent) + && templateNeedsParens(node, node.parent); if (emitOuterParens) { write("("); } @@ -18434,13 +20951,14 @@ var ts; emitLiteral(node.head); headEmitted = true; } - for (var i = 0; i < node.templateSpans.length; i++) { + for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 157 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; + var needsParens = templateSpan.expression.kind !== 161 + && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); } - emitParenthesized(templateSpan.expression, needsParens); + emitParenthesizedIf(templateSpan.expression, needsParens); if (templateSpan.literal.text.length !== 0) { write(" + "); emitLiteral(templateSpan.literal); @@ -18450,16 +20968,29 @@ var ts; write(")"); } function shouldEmitTemplateHead() { + // If this expression has an empty head literal and the first template span has a non-empty + // literal, then emitting the empty head literal is not necessary. + // `${ foo } and ${ bar }` + // can be emitted as + // foo + " and " + bar + // This is because it is only required that one of the first two operands in the emit + // output must be a string literal, so that the other operand and all following operands + // are forced into strings. + // + // If the first template span has an empty literal, then the head must still be emitted. + // `${ foo }${ bar }` + // must still be emitted as + // "" + foo + bar ts.Debug.assert(node.templateSpans.length !== 0); return node.head.text.length !== 0 || node.templateSpans[0].literal.text.length === 0; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 153: - case 154: - return parent.expression === template; - case 155: case 157: + case 158: + return parent.expression === template; + case 159: + case 161: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -18467,7 +20998,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 165: + case 169: switch (expression.operatorToken.kind) { case 35: case 36: @@ -18479,7 +21010,7 @@ var ts; default: return -1; } - case 166: + case 170: return -1; default: return 1; @@ -18491,11 +21022,27 @@ var ts; emit(span.literal); } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 148); + ts.Debug.assert(node.kind !== 152); if (node.kind === 8) { emitLiteral(node); } - else if (node.kind === 124) { + else if (node.kind === 127) { + if (ts.nodeIsDecorated(node.parent)) { + if (!computedPropertyNamesToGeneratedNames) { + computedPropertyNamesToGeneratedNames = []; + } + var generatedName = computedPropertyNamesToGeneratedNames[node.id]; + if (generatedName) { + write(generatedName); + return; + } + var generatedVariable = createTempVariable(0); + generatedName = generatedVariable.text; + recordTempDeclaration(generatedVariable); + computedPropertyNamesToGeneratedNames[node.id] = generatedName; + write(generatedName); + write(" = "); + } emit(node.expression); } else { @@ -18512,45 +21059,66 @@ var ts; function isNotExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: case 129: - case 193: - case 132: - case 133: - case 158: - case 194: - case 195: - case 197: case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: case 200: - return parent.name === node; - case 183: - case 182: + case 136: + case 137: + case 162: case 201: + case 202: + case 204: + case 205: + case 208: + case 210: + case 211: + return parent.name === node; + case 213: + case 217: + return parent.name === node || parent.propertyName === node; + case 190: + case 189: + case 214: return false; - case 187: + case 194: return node.parent.label === node; - case 206: - return node.parent.name === node; } } function emitExpressionIdentifier(node) { - var prefix = resolver.getExpressionNamePrefix(node); - if (prefix) { - write(prefix); - write("."); + var substitution = resolver.getExpressionNameSubstitution(node, getGeneratedNameForNode); + if (substitution) { + write(substitution); + } + else { + writeTextOfNode(currentSourceFile, node); } - writeTextOfNode(currentSourceFile, node); } - function emitIdentifier(node) { + function getGeneratedNameForIdentifier(node) { + if (ts.nodeIsSynthesized(node) || !blockScopedVariableToGeneratedName) { + return undefined; + } + var variableId = resolver.getBlockScopedVariableId(node); + if (variableId === undefined) { + return undefined; + } + return blockScopedVariableToGeneratedName[variableId]; + } + function emitIdentifier(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers) { + var generatedName = getGeneratedNameForIdentifier(node); + if (generatedName) { + write(generatedName); + return; + } + } if (!node.parent) { write(node.text); } @@ -18570,15 +21138,17 @@ var ts; } } function emitSuper(node) { - var flags = resolver.getNodeCheckFlags(node); - if (flags & 16) { - write("_super.prototype"); - } - else if (flags & 32) { - write("_super"); + if (languageVersion >= 2) { + write("super"); } else { - write("super"); + var flags = resolver.getNodeCheckFlags(node); + if (flags & 16) { + write("_super.prototype"); + } + else { + write("_super"); + } } } function emitObjectBindingPattern(node) { @@ -18595,7 +21165,7 @@ var ts; } function emitBindingElement(node) { if (node.propertyName) { - emit(node.propertyName); + emit(node.propertyName, false); write(": "); } if (node.dotDotDotToken) { @@ -18613,14 +21183,14 @@ var ts; write("..."); emit(node.expression); } - function needsParenthesisForPropertyAccess(node) { + function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { - case 64: - case 149: - case 151: - case 152: + case 65: case 153: + case 155: + case 156: case 157: + case 161: return false; } return true; @@ -18637,14 +21207,14 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 169) { + if (e.kind === 173) { e = e.expression; - emitParenthesized(e, group === 0 && needsParenthesisForPropertyAccess(e)); + emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; } else { var i = pos; - while (i < length && elements[i].kind !== 169) { + while (i < length && elements[i].kind !== 173) { i++; } write("["); @@ -18665,7 +21235,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 169; + return node.kind === 173; } function emitArrayLiteral(node) { var elements = node.elements; @@ -18678,32 +21248,26 @@ var ts; write("]"); } else { - emitListWithSpread(elements, (node.flags & 256) !== 0, elements.hasTrailingComma); + emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma); } } - function createSynthesizedNode(kind) { - var node = ts.createNode(kind); - node.pos = -1; - node.end = -1; - return node; - } function emitDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex) { var parenthesizedObjectLiteral = createDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex); return emit(parenthesizedObjectLiteral); } function createDownlevelObjectLiteralWithComputedProperties(originalObjectLiteral, firstComputedPropertyIndex) { - var tempVar = createAndRecordTempVariable(originalObjectLiteral); - var initialObjectLiteral = createSynthesizedNode(150); + var tempVar = createAndRecordTempVariable(0); + var initialObjectLiteral = ts.createSynthesizedNode(154); initialObjectLiteral.properties = originalObjectLiteral.properties.slice(0, firstComputedPropertyIndex); - initialObjectLiteral.flags |= 256; - var propertyPatches = createBinaryExpression(tempVar, 52, initialObjectLiteral); + initialObjectLiteral.flags |= 512; + var propertyPatches = createBinaryExpression(tempVar, 53, initialObjectLiteral); ts.forEach(originalObjectLiteral.properties, function (property) { var patchedProperty = tryCreatePatchingPropertyAssignment(originalObjectLiteral, tempVar, property); if (patchedProperty) { propertyPatches = createBinaryExpression(propertyPatches, 23, patchedProperty); } }); - propertyPatches = createBinaryExpression(propertyPatches, 23, tempVar); + propertyPatches = createBinaryExpression(propertyPatches, 23, createIdentifier(tempVar.text, true)); var result = createParenthesizedExpression(propertyPatches); return result; } @@ -18714,34 +21278,33 @@ var ts; function tryCreatePatchingPropertyAssignment(objectLiteral, tempVar, property) { var leftHandSide = createMemberAccessForPropertyName(tempVar, property.name); var maybeRightHandSide = tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property); - return maybeRightHandSide && createBinaryExpression(leftHandSide, 52, maybeRightHandSide); + return maybeRightHandSide && createBinaryExpression(leftHandSide, 53, maybeRightHandSide, true); } function tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property) { switch (property.kind) { - case 207: + case 224: return property.initializer; - case 208: - var prefix = createIdentifier(resolver.getExpressionNamePrefix(property.name)); - return createPropertyAccessExpression(prefix, property.name); - case 130: + case 225: + return createIdentifier(resolver.getExpressionNameSubstitution(property.name, getGeneratedNameForNode)); + case 134: return createFunctionExpression(property.parameters, property.body); - case 132: - case 133: - var _a = getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; + case 136: + case 137: + var _a = ts.getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; if (firstAccessor !== property) { return undefined; } - var propertyDescriptor = createSynthesizedNode(150); + var propertyDescriptor = ts.createSynthesizedNode(154); var descriptorProperties = []; if (getAccessor) { - var getProperty = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); - descriptorProperties.push(getProperty); + var getProperty_1 = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); + descriptorProperties.push(getProperty_1); } if (setAccessor) { var setProperty = createPropertyAssignment(createIdentifier("set"), createFunctionExpression(setAccessor.parameters, setAccessor.body)); descriptorProperties.push(setProperty); } - var trueExpr = createSynthesizedNode(94); + var trueExpr = ts.createSynthesizedNode(95); var enumerableTrue = createPropertyAssignment(createIdentifier("enumerable"), trueExpr); descriptorProperties.push(enumerableTrue); var configurableTrue = createPropertyAssignment(createIdentifier("configurable"), trueExpr); @@ -18754,35 +21317,40 @@ var ts; } } function createParenthesizedExpression(expression) { - var result = createSynthesizedNode(157); + var result = ts.createSynthesizedNode(161); result.expression = expression; return result; } function createNodeArray() { var elements = []; - for (var _i = 0; _i < arguments.length; _i++) { - elements[_i - 0] = arguments[_i]; + for (var _a = 0; _a < arguments.length; _a++) { + elements[_a - 0] = arguments[_a]; } var result = elements; result.pos = -1; result.end = -1; return result; } - function createBinaryExpression(left, operator, right) { - var result = createSynthesizedNode(165); - result.operatorToken = createSynthesizedNode(operator); + function createBinaryExpression(left, operator, right, startsOnNewLine) { + var result = ts.createSynthesizedNode(169, startsOnNewLine); + result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } + function createExpressionStatement(expression) { + var result = ts.createSynthesizedNode(182); + result.expression = expression; + return result; + } function createMemberAccessForPropertyName(expression, memberName) { - if (memberName.kind === 64) { + if (memberName.kind === 65) { return createPropertyAccessExpression(expression, memberName); } else if (memberName.kind === 8 || memberName.kind === 7) { return createElementAccessExpression(expression, memberName); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { return createElementAccessExpression(expression, memberName.expression); } else { @@ -18790,36 +21358,37 @@ var ts; } } function createPropertyAssignment(name, initializer) { - var result = createSynthesizedNode(207); + var result = ts.createSynthesizedNode(224); result.name = name; result.initializer = initializer; return result; } function createFunctionExpression(parameters, body) { - var result = createSynthesizedNode(158); + var result = ts.createSynthesizedNode(162); result.parameters = parameters; result.body = body; return result; } function createPropertyAccessExpression(expression, name) { - var result = createSynthesizedNode(151); + var result = ts.createSynthesizedNode(155); result.expression = expression; + result.dotToken = ts.createSynthesizedNode(20); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = createSynthesizedNode(152); + var result = ts.createSynthesizedNode(156); result.expression = expression; result.argumentExpression = argumentExpression; return result; } - function createIdentifier(name) { - var result = createSynthesizedNode(64); + function createIdentifier(name, startsOnNewLine) { + var result = ts.createSynthesizedNode(65, startsOnNewLine); result.text = name; return result; } function createCallExpression(invokedExpression, arguments) { - var result = createSynthesizedNode(153); + var result = ts.createSynthesizedNode(157); result.expression = invokedExpression; result.arguments = arguments; return result; @@ -18830,7 +21399,7 @@ var ts; var numProperties = properties.length; var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 124) { + if (properties[i].name.kind === 127) { numInitialNonComputedProperties = i; break; } @@ -18842,7 +21411,6 @@ var ts; } } write("{"); - var properties = node.properties; if (properties.length) { emitLinePreservingList(node, properties, languageVersion >= 1, true); } @@ -18850,47 +21418,78 @@ var ts; } function emitComputedPropertyName(node) { write("["); - emit(node.expression); + emitExpressionForPropertyName(node); write("]"); } function emitMethod(node) { - emit(node.name); + emit(node.name, false); if (languageVersion < 2) { write(": function "); } emitSignatureAndBody(node); } function emitPropertyAssignment(node) { - emit(node.name); + emit(node.name, false); write(": "); emit(node.initializer); } function emitShorthandPropertyAssignment(node) { - emit(node.name); - if (languageVersion <= 1 || resolver.getExpressionNamePrefix(node.name)) { + emit(node.name, false); + if (languageVersion < 2) { + write(": "); + var generatedName = getGeneratedNameForIdentifier(node.name); + if (generatedName) { + write(generatedName); + } + else { + emitExpressionIdentifier(node.name); + } + } + else if (resolver.getExpressionNameSubstitution(node.name, getGeneratedNameForNode)) { write(": "); emitExpressionIdentifier(node.name); } } function tryEmitConstantValue(node) { + if (compilerOptions.separateCompilation) { + return false; + } var constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 151 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 155 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; } return false; } + function indentIfOnDifferentLines(parent, node1, node2, valueToWriteWhenNotIndenting) { + var realNodesAreOnDifferentLines = !ts.nodeIsSynthesized(parent) && !nodeEndIsOnSameLineAsNodeStart(node1, node2); + var synthesizedNodeIsOnDifferentLine = synthesizedNodeStartsOnNewLine(node2); + if (realNodesAreOnDifferentLines || synthesizedNodeIsOnDifferentLine) { + increaseIndent(); + writeLine(); + return true; + } + else { + if (valueToWriteWhenNotIndenting) { + write(valueToWriteWhenNotIndenting); + } + return false; + } + } function emitPropertyAccess(node) { if (tryEmitConstantValue(node)) { return; } emit(node.expression); + var indentedBeforeDot = indentIfOnDifferentLines(node, node.expression, node.dotToken); write("."); - emit(node.name); + var indentedAfterDot = indentIfOnDifferentLines(node, node.dotToken, node.name); + emit(node.name, false); + decreaseIndentIf(indentedBeforeDot, indentedAfterDot); } function emitQualifiedName(node) { emit(node.left); @@ -18907,20 +21506,20 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 169; }); + return ts.forEach(elements, function (e) { return e.kind === 173; }); } function skipParentheses(node) { - while (node.kind === 157 || node.kind === 156) { + while (node.kind === 161 || node.kind === 160) { node = node.expression; } return node; } function emitCallTarget(node) { - if (node.kind === 64 || node.kind === 92 || node.kind === 90) { + if (node.kind === 65 || node.kind === 93 || node.kind === 91) { emit(node); return node; } - var temp = createAndRecordTempVariable(node); + var temp = createAndRecordTempVariable(0); write("("); emit(temp); write(" = "); @@ -18931,18 +21530,18 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 151) { + if (expr.kind === 155) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 152) { + else if (expr.kind === 156) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); write("]"); } - else if (expr.kind === 90) { + else if (expr.kind === 91) { target = expr; write("_super"); } @@ -18951,7 +21550,7 @@ var ts; } write(".apply("); if (target) { - if (target.kind === 90) { + if (target.kind === 91) { emitThis(target); } else { @@ -18971,15 +21570,15 @@ var ts; return; } var superCall = false; - if (node.expression.kind === 90) { - write("_super"); + if (node.expression.kind === 91) { + emitSuper(node.expression); superCall = true; } else { emit(node.expression); - superCall = node.expression.kind === 151 && node.expression.expression.kind === 90; + superCall = node.expression.kind === 155 && node.expression.expression.kind === 91; } - if (superCall) { + if (superCall && languageVersion < 2) { write(".call("); emitThis(node.expression); if (node.arguments.length) { @@ -19004,26 +21603,33 @@ var ts; } } function emitTaggedTemplateExpression(node) { - emit(node.tag); - write(" "); - emit(node.template); + if (languageVersion >= 2) { + emit(node.tag); + write(" "); + emit(node.template); + } + else { + emitDownlevelTaggedTemplate(node); + } } function emitParenExpression(node) { - if (node.expression.kind === 156) { - var operand = node.expression.expression; - while (operand.kind == 156) { - operand = operand.expression; - } - if (operand.kind !== 163 && - operand.kind !== 162 && - operand.kind !== 161 && - operand.kind !== 160 && - operand.kind !== 164 && - operand.kind !== 154 && - !(operand.kind === 153 && node.parent.kind === 154) && - !(operand.kind === 158 && node.parent.kind === 153)) { - emit(operand); - return; + if (!node.parent || node.parent.kind !== 163) { + if (node.expression.kind === 160) { + var operand = node.expression.expression; + while (operand.kind == 160) { + operand = operand.expression; + } + if (operand.kind !== 167 && + operand.kind !== 166 && + operand.kind !== 165 && + operand.kind !== 164 && + operand.kind !== 168 && + operand.kind !== 158 && + !(operand.kind === 157 && node.parent.kind === 158) && + !(operand.kind === 162 && node.parent.kind === 157)) { + emit(operand); + return; + } } } write("("); @@ -19031,23 +21637,23 @@ var ts; write(")"); } function emitDeleteExpression(node) { - write(ts.tokenToString(73)); + write(ts.tokenToString(74)); write(" "); emit(node.expression); } function emitVoidExpression(node) { - write(ts.tokenToString(98)); + write(ts.tokenToString(99)); write(" "); emit(node.expression); } function emitTypeOfExpression(node) { - write(ts.tokenToString(96)); + write(ts.tokenToString(97)); write(" "); emit(node.expression); } function emitPrefixUnaryExpression(node) { write(ts.tokenToString(node.operator)); - if (node.operand.kind === 163) { + if (node.operand.kind === 167) { var operand = node.operand; if (node.operator === 33 && (operand.operator === 33 || operand.operator === 38)) { write(" "); @@ -19063,57 +21669,45 @@ var ts; write(ts.tokenToString(node.operator)); } function emitBinaryExpression(node) { - if (languageVersion < 2 && node.operatorToken.kind === 52 && - (node.left.kind === 150 || node.left.kind === 149)) { - emitDestructuring(node); + if (languageVersion < 2 && node.operatorToken.kind === 53 && + (node.left.kind === 154 || node.left.kind === 153)) { + emitDestructuring(node, node.parent.kind === 182); } else { emit(node.left); - if (node.operatorToken.kind !== 23) { - write(" "); - } + var indentedBeforeOperator = indentIfOnDifferentLines(node, node.left, node.operatorToken, node.operatorToken.kind !== 23 ? " " : undefined); write(ts.tokenToString(node.operatorToken.kind)); - var operatorEnd = ts.getLineAndCharacterOfPosition(currentSourceFile, node.operatorToken.end); - var rightStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.right.pos)); - var onDifferentLine = operatorEnd.line !== rightStart.line; - if (onDifferentLine) { - var exprStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); - var firstCharOfExpr = getFirstNonWhitespaceCharacterIndexOnLine(exprStart.line); - var shouldIndent = rightStart.character > firstCharOfExpr; - if (shouldIndent) { - increaseIndent(); - } - writeLine(); - } - else { - write(" "); - } + var indentedAfterOperator = indentIfOnDifferentLines(node, node.operatorToken, node.right, " "); emit(node.right); - if (shouldIndent) { - decreaseIndent(); - } + decreaseIndentIf(indentedBeforeOperator, indentedAfterOperator); } } - function getFirstNonWhitespaceCharacterIndexOnLine(line) { - var lineStart = ts.getLineStarts(currentSourceFile)[line]; - var text = currentSourceFile.text; - for (var i = lineStart; i < text.length; i++) { - var ch = text.charCodeAt(i); - if (!ts.isWhiteSpace(text.charCodeAt(i)) || ts.isLineBreak(ch)) { - break; - } - } - return i - lineStart; + function synthesizedNodeStartsOnNewLine(node) { + return ts.nodeIsSynthesized(node) && node.startsOnNewLine; } function emitConditionalExpression(node) { emit(node.condition); - write(" ? "); + var indentedBeforeQuestion = indentIfOnDifferentLines(node, node.condition, node.questionToken, " "); + write("?"); + var indentedAfterQuestion = indentIfOnDifferentLines(node, node.questionToken, node.whenTrue, " "); emit(node.whenTrue); - write(" : "); + decreaseIndentIf(indentedBeforeQuestion, indentedAfterQuestion); + var indentedBeforeColon = indentIfOnDifferentLines(node, node.whenTrue, node.colonToken, " "); + write(":"); + var indentedAfterColon = indentIfOnDifferentLines(node, node.colonToken, node.whenFalse, " "); emit(node.whenFalse); + decreaseIndentIf(indentedBeforeColon, indentedAfterColon); + } + function decreaseIndentIf(value1, value2) { + if (value1) { + decreaseIndent(); + } + if (value2) { + decreaseIndent(); + } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 172) { + if (node && node.kind === 179) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -19128,12 +21722,12 @@ var ts; emitToken(14, node.pos); increaseIndent(); scopeEmitStart(node.parent); - if (node.kind === 199) { - ts.Debug.assert(node.parent.kind === 198); + if (node.kind === 206) { + ts.Debug.assert(node.parent.kind === 205); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 199) { + if (node.kind === 206) { emitTempDeclarations(true); } decreaseIndent(); @@ -19142,7 +21736,7 @@ var ts; scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 172) { + if (node.kind === 179) { write(" "); emit(node); } @@ -19154,11 +21748,11 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesized(node.expression, node.expression.kind === 159); + emitParenthesizedIf(node.expression, node.expression.kind === 163); write(";"); } function emitIfStatement(node) { - var endPos = emitToken(83, node.pos); + var endPos = emitToken(84, node.pos); write(" "); endPos = emitToken(16, endPos); emit(node.expression); @@ -19166,8 +21760,8 @@ var ts; emitEmbeddedStatement(node.thenStatement); if (node.elseStatement) { writeLine(); - emitToken(75, node.thenStatement.end); - if (node.elseStatement.kind === 176) { + emitToken(76, node.thenStatement.end); + if (node.elseStatement.kind === 183) { write(" "); emit(node.elseStatement); } @@ -19179,7 +21773,7 @@ var ts; function emitDoStatement(node) { write("do"); emitEmbeddedStatement(node.statement); - if (node.statement.kind === 172) { + if (node.statement.kind === 179) { write(" "); } else { @@ -19195,24 +21789,40 @@ var ts; write(")"); emitEmbeddedStatement(node.statement); } + function emitStartOfVariableDeclarationList(decl, startPos) { + var tokenKind = 98; + if (decl && languageVersion >= 2) { + if (ts.isLet(decl)) { + tokenKind = 105; + } + else if (ts.isConst(decl)) { + tokenKind = 70; + } + } + if (startPos !== undefined) { + emitToken(tokenKind, startPos); + } + else { + switch (tokenKind) { + case 98: + return write("var "); + case 105: + return write("let "); + case 70: + return write("const "); + } + } + } function emitForStatement(node) { - var endPos = emitToken(81, node.pos); + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer && node.initializer.kind === 192) { + if (node.initializer && node.initializer.kind === 199) { var variableDeclarationList = node.initializer; var declarations = variableDeclarationList.declarations; - if (declarations[0] && ts.isLet(declarations[0])) { - emitToken(103, endPos); - } - else if (declarations[0] && ts.isConst(declarations[0])) { - emitToken(69, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(declarations[0], endPos); write(" "); - emitCommaList(variableDeclarationList.declarations); + emitCommaList(declarations); } else if (node.initializer) { emit(node.initializer); @@ -19225,19 +21835,17 @@ var ts; emitEmbeddedStatement(node.statement); } function emitForInOrForOfStatement(node) { - var endPos = emitToken(81, node.pos); + if (languageVersion < 2 && node.kind === 188) { + return emitDownLevelForOfStatement(node); + } + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { var decl = variableDeclarationList.declarations[0]; - if (ts.isLet(decl)) { - emitToken(103, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(decl, endPos); write(" "); emit(decl); } @@ -19245,7 +21853,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 180) { + if (node.kind === 187) { write(" in "); } else { @@ -19255,13 +21863,113 @@ var ts; emitToken(17, node.expression.end); emitEmbeddedStatement(node.statement); } + function emitDownLevelForOfStatement(node) { + // The following ES6 code: + // + // for (let v of expr) { } + // + // should be emitted as + // + // for (let _i = 0, _a = expr; _i < _a.length; _i++) { + // let v = _a[_i]; + // } + // + // where _a and _i are temps emitted to capture the RHS and the counter, + // respectively. + // When the left hand side is an expression instead of a let declaration, + // the "let v" is not emitted. + // When the left hand side is a let/const, the v is renamed if there is + // another v in scope. + // Note that all assignments to the LHS are emitted in the body, including + // all destructuring. + // Note also that because an extra statement is needed to assign to the LHS, + // for-of bodies are always emitted as blocks. + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + var rhsIsIdentifier = node.expression.kind === 65; + var counter = createTempVariable(268435456); + var rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(0); + emitStart(node.expression); + write("var "); + emitNodeWithoutSourceMap(counter); + write(" = 0"); + emitEnd(node.expression); + if (!rhsIsIdentifier) { + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); + } + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write(" < "); + emitNodeWithoutSourceMap(rhsReference); + write(".length"); + emitEnd(node.initializer); + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write("++"); + emitEnd(node.initializer); + emitToken(17, node.expression.end); + write(" {"); + writeLine(); + increaseIndent(); + var rhsIterationValue = createElementAccessExpression(rhsReference, counter); + emitStart(node.initializer); + if (node.initializer.kind === 199) { + write("var "); + var variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length > 0) { + var declaration = variableDeclarationList.declarations[0]; + if (ts.isBindingPattern(declaration.name)) { + emitDestructuring(declaration, false, rhsIterationValue); + } + else { + emitNodeWithoutSourceMap(declaration); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + emitNodeWithoutSourceMap(createTempVariable(0)); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + var assignmentExpression = createBinaryExpression(node.initializer, 53, rhsIterationValue, false); + if (node.initializer.kind === 153 || node.initializer.kind === 154) { + emitDestructuring(assignmentExpression, true, undefined, node); + } + else { + emitNodeWithoutSourceMap(assignmentExpression); + } + } + emitEnd(node.initializer); + write(";"); + if (node.statement.kind === 179) { + emitLines(node.statement.statements); + } + else { + writeLine(); + emit(node.statement); + } + writeLine(); + decreaseIndent(); + write("}"); + } function emitBreakOrContinueStatement(node) { - emitToken(node.kind === 183 ? 65 : 70, node.pos); + emitToken(node.kind === 190 ? 66 : 71, node.pos); emitOptional(" ", node.label); write(";"); } function emitReturnStatement(node) { - emitToken(89, node.pos); + emitToken(90, node.pos); emitOptional(" ", node.expression); write(";"); } @@ -19272,13 +21980,16 @@ var ts; emitEmbeddedStatement(node.statement); } function emitSwitchStatement(node) { - var endPos = emitToken(91, node.pos); + var endPos = emitToken(92, node.pos); write(" "); emitToken(16, endPos); emit(node.expression); endPos = emitToken(17, node.expression.end); write(" "); - emitToken(14, endPos); + emitCaseBlock(node.caseBlock, endPos); + } + function emitCaseBlock(node, startPos) { + emitToken(14, startPos); increaseIndent(); emitLines(node.clauses); decreaseIndent(); @@ -19286,19 +21997,19 @@ var ts; emitToken(15, node.clauses.end); } function nodeStartPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function nodeEndPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, node2.end); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, node2.end); } function nodeEndIsOnSameLineAsNodeStart(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 203) { + if (node.kind === 220) { write("case "); emit(node.expression); write(":"); @@ -19333,16 +22044,16 @@ var ts; } function emitCatchClause(node) { writeLine(); - var endPos = emitToken(67, node.pos); + var endPos = emitToken(68, node.pos); write(" "); emitToken(16, endPos); - emit(node.name); - emitToken(17, node.name.end); + emit(node.variableDeclaration); + emitToken(17, node.variableDeclaration ? node.variableDeclaration.end : endPos); write(" "); emitBlock(node.block); } function emitDebuggerStatement(node) { - emitToken(71, node.pos); + emitToken(72, node.pos); write(";"); } function emitLabelledStatement(node) { @@ -19353,33 +22064,83 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 198); + } while (node && node.kind !== 205); return node; } + function emitContainingModuleName(node) { + var container = getContainingModule(node); + write(container ? getGeneratedNameForNode(container) : "exports"); + } function emitModuleMemberName(node) { emitStart(node.name); if (ts.getCombinedNodeFlags(node) & 1) { var container = getContainingModule(node); - write(container ? resolver.getLocalNameOfContainer(container) : "exports"); - write("."); + if (container) { + write(getGeneratedNameForNode(container)); + write("."); + } + else if (languageVersion < 2) { + write("exports."); + } } - emitNode(node.name); + emitNodeWithoutSourceMap(node.name); emitEnd(node.name); } - function emitDestructuring(root, value) { + function createVoidZero() { + var zero = ts.createSynthesizedNode(7); + zero.text = "0"; + var result = ts.createSynthesizedNode(166); + result.expression = zero; + return result; + } + function emitExportMemberAssignment(node) { + if (node.flags & 1) { + writeLine(); + emitStart(node); + if (node.flags & 256) { + write("exports.default"); + } + else { + emitModuleMemberName(node); + } + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + } + function emitExportMemberAssignments(name) { + if (!exportEquals && exportSpecifiers && ts.hasProperty(exportSpecifiers, name.text)) { + for (var _a = 0, _b = exportSpecifiers[name.text]; _a < _b.length; _a++) { + var specifier = _b[_a]; + writeLine(); + emitStart(specifier.name); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier.name); + write(" = "); + emitExpressionIdentifier(name); + write(";"); + } + } + } + function emitDestructuring(root, isAssignmentExpressionStatement, value, lowestNonSynthesizedAncestor) { var emitCount = 0; - var isDeclaration = (root.kind === 191 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 126; - if (root.kind === 165) { + var isDeclaration = (root.kind === 198 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 129; + if (root.kind === 169) { emitAssignmentExpression(root); } else { + ts.Debug.assert(!isAssignmentExpressionStatement); emitBindingElement(root, value); } function emitAssignment(name, value) { if (emitCount++) { write(", "); } - if (name.parent && (name.parent.kind === 191 || name.parent.kind === 148)) { + renameNonTopLevelLetAndConst(name); + if (name.parent && (name.parent.kind === 198 || name.parent.kind === 152)) { emitModuleMemberName(name.parent); } else { @@ -19389,8 +22150,8 @@ var ts; emit(value); } function ensureIdentifier(expr) { - if (expr.kind !== 64) { - var identifier = createTempVariable(root); + if (expr.kind !== 65) { + var identifier = createTempVariable(0); if (!isDeclaration) { recordTempDeclaration(identifier); } @@ -19399,49 +22160,44 @@ var ts; } return expr; } - function createVoidZero() { - var zero = ts.createNode(7); - zero.text = "0"; - var result = ts.createNode(162); - result.expression = zero; - return result; - } function createDefaultValueCheck(value, defaultValue) { value = ensureIdentifier(value); - var equals = ts.createNode(165); + var equals = ts.createSynthesizedNode(169); equals.left = value; - equals.operatorToken = ts.createNode(30); + equals.operatorToken = ts.createSynthesizedNode(30); equals.right = createVoidZero(); - var cond = ts.createNode(166); - cond.condition = equals; - cond.whenTrue = defaultValue; - cond.whenFalse = value; + return createConditionalExpression(equals, defaultValue, value); + } + function createConditionalExpression(condition, whenTrue, whenFalse) { + var cond = ts.createSynthesizedNode(170); + cond.condition = condition; + cond.questionToken = ts.createSynthesizedNode(50); + cond.whenTrue = whenTrue; + cond.colonToken = ts.createSynthesizedNode(51); + cond.whenFalse = whenFalse; return cond; } function createNumericLiteral(value) { - var node = ts.createNode(7); + var node = ts.createSynthesizedNode(7); node.text = "" + value; return node; } function parenthesizeForAccess(expr) { - if (expr.kind === 64 || expr.kind === 151 || expr.kind === 152) { + if (expr.kind === 65 || expr.kind === 155 || expr.kind === 156) { return expr; } - var node = ts.createNode(157); + var node = ts.createSynthesizedNode(161); node.expression = expr; return node; } function createPropertyAccess(object, propName) { - if (propName.kind !== 64) { + if (propName.kind !== 65) { return createElementAccess(object, propName); } - var node = ts.createNode(151); - node.expression = parenthesizeForAccess(object); - node.name = propName; - return node; + return createPropertyAccessExpression(parenthesizeForAccess(object), propName); } function createElementAccess(object, index) { - var node = ts.createNode(152); + var node = ts.createSynthesizedNode(156); node.expression = parenthesizeForAccess(object); node.argumentExpression = index; return node; @@ -19451,9 +22207,9 @@ var ts; if (properties.length !== 1) { value = ensureIdentifier(value); } - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { + for (var _a = 0; _a < properties.length; _a++) { + var p = properties[_a]; + if (p.kind === 224 || p.kind === 225) { var propName = (p.name); emitDestructuringAssignment(p.initializer || propName, createPropertyAccess(value, propName)); } @@ -19466,8 +22222,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { emitDestructuringAssignment(e, createElementAccess(value, createNumericLiteral(i))); } else { @@ -19481,14 +22237,14 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 149) { + else if (target.kind === 153) { emitArrayLiteralAssignment(target, value); } else { @@ -19498,18 +22254,18 @@ var ts; function emitAssignmentExpression(root) { var target = root.left; var value = root.right; - if (root.parent.kind === 175) { + if (isAssignmentExpressionStatement) { emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write("("); } value = ensureIdentifier(value); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write(")"); } } @@ -19529,11 +22285,11 @@ var ts; } for (var i = 0; i < elements.length; i++) { var element = elements[i]; - if (pattern.kind === 146) { + if (pattern.kind === 150) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccess(value, propName)); } - else if (element.kind !== 170) { + else if (element.kind !== 175) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccess(value, createNumericLiteral(i))); } @@ -19555,7 +22311,7 @@ var ts; function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { if (languageVersion < 2) { - emitDestructuring(node); + emitDestructuring(node, false); } else { emit(node.name); @@ -19563,34 +22319,100 @@ var ts; } } else { + renameNonTopLevelLetAndConst(node.name); emitModuleMemberName(node); - emitOptional(" = ", node.initializer); + var initializer = node.initializer; + if (!initializer && languageVersion < 2) { + var isUninitializedLet = (resolver.getNodeCheckFlags(node) & 256) && + (getCombinedFlagsForIdentifier(node.name) & 4096); + if (isUninitializedLet && + node.parent.parent.kind !== 187 && + node.parent.parent.kind !== 188) { + initializer = createVoidZero(); + } + } + emitOptional(" = ", initializer); } } + function emitExportVariableAssignments(node) { + if (node.kind === 175) { + return; + } + var name = node.name; + if (name.kind === 65) { + emitExportMemberAssignments(name); + } + else if (ts.isBindingPattern(name)) { + ts.forEach(name.elements, emitExportVariableAssignments); + } + } + function getCombinedFlagsForIdentifier(node) { + if (!node.parent || (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return 0; + } + return ts.getCombinedNodeFlags(node.parent); + } + function renameNonTopLevelLetAndConst(node) { + if (languageVersion >= 2 || + ts.nodeIsSynthesized(node) || + node.kind !== 65 || + (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return; + } + var combinedFlags = getCombinedFlagsForIdentifier(node); + if (((combinedFlags & 12288) === 0) || combinedFlags & 1) { + return; + } + var list = ts.getAncestor(node, 199); + if (list.parent.kind === 180) { + var isSourceFileLevelBinding = list.parent.parent.kind === 227; + var isModuleLevelBinding = list.parent.parent.kind === 206; + var isFunctionLevelBinding = list.parent.parent.kind === 179 && ts.isFunctionLike(list.parent.parent.parent); + if (isSourceFileLevelBinding || isModuleLevelBinding || isFunctionLevelBinding) { + return; + } + } + var blockScopeContainer = ts.getEnclosingBlockScopeContainer(node); + var parent = blockScopeContainer.kind === 227 + ? blockScopeContainer + : blockScopeContainer.parent; + if (resolver.resolvesToSomeValue(parent, node.text)) { + var variableId = resolver.getBlockScopedVariableId(node); + if (!blockScopedVariableToGeneratedName) { + blockScopedVariableToGeneratedName = []; + } + var generatedName = makeUniqueName(node.text); + blockScopedVariableToGeneratedName[variableId] = generatedName; + } + } + function isES6ExportedDeclaration(node) { + return !!(node.flags & 1) && + languageVersion >= 2 && + node.parent.kind === 227; + } function emitVariableStatement(node) { if (!(node.flags & 1)) { - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } + emitStartOfVariableDeclarationList(node.declarationList); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + emitStartOfVariableDeclarationList(node.declarationList); } emitCommaList(node.declarationList.declarations); write(";"); + if (languageVersion < 2 && node.parent === currentSourceFile) { + ts.forEach(node.declarationList.declarations, emitExportVariableAssignments); + } } function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name = createTempVariable(node); + var name_16 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name); - emit(name); + tempParameters.push(name_16); + emit(name_16); } else { emit(node.name); @@ -19611,7 +22433,7 @@ var ts; if (ts.isBindingPattern(p.name)) { writeLine(); write("var "); - emitDestructuring(p, tempParameters[tempIndex]); + emitDestructuring(p, false, tempParameters[tempIndex]); write(";"); tempIndex++; } @@ -19619,14 +22441,14 @@ var ts; writeLine(); emitStart(p); write("if ("); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" === void 0)"); emitEnd(p); write(" { "); emitStart(p); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" = "); - emitNode(p.initializer); + emitNodeWithoutSourceMap(p.initializer); emitEnd(p); write("; }"); } @@ -19637,12 +22459,12 @@ var ts; if (languageVersion < 2 && ts.hasRestParameters(node)) { var restIndex = node.parameters.length - 1; var restParam = node.parameters[restIndex]; - var tempName = createTempVariable(node, true).text; + var tempName = createTempVariable(268435456).text; writeLine(); emitLeadingComments(restParam); emitStart(restParam); write("var "); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write(" = [];"); emitEnd(restParam); emitTrailingComments(restParam); @@ -19663,7 +22485,7 @@ var ts; increaseIndent(); writeLine(); emitStart(restParam); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write("[" + tempName + " - " + restIndex + "] = arguments[" + tempName + "];"); emitEnd(restParam); decreaseIndent(); @@ -19672,28 +22494,53 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 132 ? "get " : "set "); - emit(node.name); + write(node.kind === 136 ? "get " : "set "); + emit(node.name, false); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 159 && languageVersion >= 2; + return node.kind === 163 && languageVersion >= 2; + } + function emitDeclarationName(node) { + if (node.name) { + emitNodeWithoutSourceMap(node.name); + } + else { + write(getGeneratedNameForNode(node)); + } + } + function shouldEmitFunctionName(node) { + if (node.kind === 162) { + return !!node.name; + } + if (node.kind === 200) { + return !!node.name || languageVersion < 2; + } } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - if (node.kind !== 130 && node.kind !== 129) { + if (node.kind !== 134 && node.kind !== 133) { emitLeadingComments(node); } if (!shouldEmitAsArrowFunction(node)) { + if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } write("function "); } - if (node.kind === 193 || (node.kind === 158 && node.name)) { - emit(node.name); + if (shouldEmitFunctionName(node)) { + emitDeclarationName(node); } emitSignatureAndBody(node); - if (node.kind !== 130 && node.kind !== 129) { + if (languageVersion < 2 && node.kind === 200 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); + } + if (node.kind !== 134 && node.kind !== 133) { emitTrailingComments(node); } } @@ -19724,10 +22571,10 @@ var ts; emitSignatureParameters(node); } function emitSignatureAndBody(node) { - var saveTempCount = tempCount; + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; var saveTempParameters = tempParameters; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; tempParameters = undefined; if (shouldEmitAsArrowFunction(node)) { @@ -19737,25 +22584,19 @@ var ts; else { emitSignatureParameters(node); } - if (isSingleLineEmptyBlock(node.body) || !node.body) { + if (!node.body) { write(" { }"); } - else if (node.body.kind === 172) { + else if (node.body.kind === 179) { emitBlockFunctionBody(node, node.body); } else { emitExpressionFunctionBody(node, node.body); } - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); - write(";"); + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); } - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; tempParameters = saveTempParameters; } @@ -19765,6 +22606,18 @@ var ts; emitRestParameter(node); } function emitExpressionFunctionBody(node, body) { + if (languageVersion < 2) { + emitDownLevelExpressionFunctionBody(node, body); + return; + } + write(" "); + var current = body; + while (current.kind === 160) { + current = current.expression; + } + emitParenthesizedIf(body, current.kind === 154); + } + function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); scopeEmitStart(node); increaseIndent(); @@ -19777,7 +22630,7 @@ var ts; write(" "); emitStart(body); write("return "); - emitNode(body, true); + emit(body); emitEnd(body); write(";"); emitTempDeclarations(false); @@ -19788,7 +22641,7 @@ var ts; writeLine(); emitLeadingComments(node.body); write("return "); - emit(node.body, true); + emit(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(true); @@ -19803,17 +22656,18 @@ var ts; function emitBlockFunctionBody(node, body) { write(" {"); scopeEmitStart(node); - var outPos = writer.getTextPos(); + var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedComments(body.statements); var startIndex = emitDirectivePrologues(body.statements, true); emitFunctionBodyPreamble(node); decreaseIndent(); - var preambleEmitted = writer.getTextPos() !== outPos; + var preambleEmitted = writer.getTextPos() !== initialTextPos; if (!preambleEmitted && nodeEndIsOnSameLineAsNodeStart(body, body)) { - for (var i = 0, n = body.statements.length; i < n; i++) { + for (var _a = 0, _b = body.statements; _a < _b.length; _a++) { + var statement = _b[_a]; write(" "); - emit(body.statements[i]); + emit(statement); } emitTempDeclarations(false); write(" "); @@ -19833,11 +22687,11 @@ var ts; function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 175) { + if (statement && statement.kind === 182) { var expr = statement.expression; - if (expr && expr.kind === 153) { + if (expr && expr.kind === 157) { var func = expr.expression; - if (func && func.kind === 90) { + if (func && func.kind === 91) { return statement; } } @@ -19851,7 +22705,7 @@ var ts; emitStart(param); emitStart(param.name); write("this."); - emitNode(param.name); + emitNodeWithoutSourceMap(param.name); emitEnd(param.name); write(" = "); emit(param.name); @@ -19863,26 +22717,26 @@ var ts; function emitMemberAccessForPropertyName(memberName) { if (memberName.kind === 8 || memberName.kind === 7) { write("["); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); write("]"); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { emitComputedPropertyName(memberName); } else { write("."); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); } } function emitMemberAssignments(node, staticFlag) { ts.forEach(node.members, function (member) { - if (member.kind === 128 && (member.flags & 128) === staticFlag && member.initializer) { + if (member.kind === 132 && (member.flags & 128) === staticFlag && member.initializer) { writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); if (staticFlag) { - emitNode(node.name); + emitDeclarationName(node); } else { write("this"); @@ -19897,20 +22751,21 @@ var ts; } }); } - function emitMemberFunctions(node) { + function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 130 || node.kind === 129) { + if (member.kind === 178) { + writeLine(); + write(";"); + } + else if (member.kind === 134 || node.kind === 133) { if (!member.body) { - return emitPinnedOrTripleSlashComments(member); + return emitOnlyPinnedOrTripleSlashComments(member); } writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); emitMemberAccessForPropertyName(member.name); emitEnd(member.name); write(" = "); @@ -19921,17 +22776,14 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 132 || member.kind === 133) { - var accessors = getAllAccessorDeclarations(node.members, member); + else if (member.kind === 136 || member.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); emitStart(member); write("Object.defineProperty("); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); emitEnd(member.name); @@ -19971,36 +22823,267 @@ var ts; } }); } + function emitMemberFunctionsForES6AndHigher(node) { + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if ((member.kind === 134 || node.kind === 133) && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + else if (member.kind === 134 || + member.kind === 136 || + member.kind === 137) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & 128) { + write("static "); + } + if (member.kind === 136) { + write("get "); + } + else if (member.kind === 137) { + write("set "); + } + emit(member.name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + else if (member.kind === 178) { + writeLine(); + write(";"); + } + } + } + function emitConstructor(node, baseTypeElement) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + var hasInstancePropertyWithInitializer = false; + ts.forEach(node.members, function (member) { + if (member.kind === 135 && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + if (member.kind === 132 && member.initializer && (member.flags & 128) === 0) { + hasInstancePropertyWithInitializer = true; + } + }); + var ctor = ts.getFirstConstructorWithBody(node); + if (languageVersion >= 2 && !ctor && !hasInstancePropertyWithInitializer) { + return; + } + if (ctor) { + emitLeadingComments(ctor); + } + emitStart(ctor || node); + if (languageVersion < 2) { + write("function "); + emitDeclarationName(node); + emitSignatureParameters(ctor); + } + else { + write("constructor"); + if (ctor) { + emitSignatureParameters(ctor); + } + else { + if (baseTypeElement) { + write("(...args)"); + } + else { + write("()"); + } + } + } + write(" {"); + scopeEmitStart(node, "constructor"); + increaseIndent(); + if (ctor) { + emitDetachedComments(ctor.body.statements); + } + emitCaptureThisForNodeIfNecessary(node); + if (ctor) { + emitDefaultValueAssignments(ctor); + emitRestParameter(ctor); + if (baseTypeElement) { + var superCall = findInitialSuperCall(ctor); + if (superCall) { + writeLine(); + emit(superCall); + } + } + emitParameterPropertyAssignments(ctor); + } + else { + if (baseTypeElement) { + writeLine(); + emitStart(baseTypeElement); + if (languageVersion < 2) { + write("_super.apply(this, arguments);"); + } + else { + write("super(...args);"); + } + emitEnd(baseTypeElement); + } + } + emitMemberAssignments(node, 0); + if (ctor) { + var statements = ctor.body.statements; + if (superCall) { + statements = statements.slice(1); + } + emitLines(statements); + } + emitTempDeclarations(true); + writeLine(); + if (ctor) { + emitLeadingCommentsOfPosition(ctor.body.statements.end); + } + decreaseIndent(); + emitToken(15, ctor ? ctor.body.statements.end : node.members.end); + scopeEmitEnd(); + emitEnd(ctor || node); + if (ctor) { + emitTrailingComments(ctor); + } + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + function emitClassExpression(node) { + return emitClassLikeDeclaration(node); + } function emitClassDeclaration(node) { - write("var "); - emit(node.name); - write(" = (function ("); - var baseTypeNode = ts.getClassBaseTypeNode(node); + return emitClassLikeDeclaration(node); + } + function emitClassLikeDeclaration(node) { + if (languageVersion < 2) { + emitClassLikeDeclarationBelowES6(node); + } + else { + emitClassLikeDeclarationForES6AndHigher(node); + } + } + function emitClassLikeDeclarationForES6AndHigher(node) { + var thisNodeIsDecorated = ts.nodeIsDecorated(node); + if (node.kind === 201) { + if (thisNodeIsDecorated) { + if (isES6ExportedDeclaration(node) && !(node.flags & 256)) { + write("export "); + } + write("let "); + emitDeclarationName(node); + write(" = "); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } + } + write("class"); + if ((node.name || !(node.flags & 256)) && !thisNodeIsDecorated) { + write(" "); + emitDeclarationName(node); + } + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write(" extends "); + emit(baseTypeNode.expression); + } + write(" {"); + increaseIndent(); + scopeEmitStart(node); + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES6AndHigher(node); + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + if (thisNodeIsDecorated) { + write(";"); + if (node.name) { + writeLine(); + write("Object.defineProperty("); + emitDeclarationName(node); + write(", \"name\", { value: \""); + emitDeclarationName(node); + write("\", configurable: true });"); + writeLine(); + } + } + writeLine(); + emitMemberAssignments(node, 128); + emitDecoratorsOfClass(node); + if (!isES6ExportedDeclaration(node) && (node.flags & 1)) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + else if (isES6ExportedDeclaration(node) && (node.flags & 256) && thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + function emitClassLikeDeclarationBelowES6(node) { + if (node.kind === 201) { + write("var "); + emitDeclarationName(node); + write(" = "); + } + write("(function ("); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { write("_super"); } write(") {"); + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + var saveComputedPropertyNamesToGeneratedNames = computedPropertyNamesToGeneratedNames; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); write("__extends("); - emit(node.name); + emitDeclarationName(node); write(", _super);"); emitEnd(baseTypeNode); } writeLine(); - emitConstructorOfClass(); - emitMemberFunctions(node); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES5AndLower(node); emitMemberAssignments(node, 128); writeLine(); - function emitClassReturnStatement() { + emitDecoratorsOfClass(node); + writeLine(); + emitToken(15, node.members.end, function () { write("return "); - emitNode(node.name); - } - emitToken(15, node.members.end, emitClassReturnStatement); + emitDeclarationName(node); + }); write(";"); + emitTempDeclarations(true); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + computedPropertyNamesToGeneratedNames = saveComputedPropertyNamesToGeneratedNames; decreaseIndent(); writeLine(); emitToken(15, node.members.end); @@ -20008,103 +23091,170 @@ var ts; emitStart(node); write(")("); if (baseTypeNode) { - emit(baseTypeNode.typeName); + emit(baseTypeNode.expression); } - write(");"); - emitEnd(node); - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); + write(")"); + if (node.kind === 201) { write(";"); } - function emitConstructorOfClass() { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - var saveTempParameters = tempParameters; - tempCount = 0; - tempVariables = undefined; - tempParameters = undefined; - ts.forEach(node.members, function (member) { - if (member.kind === 131 && !member.body) { - emitPinnedOrTripleSlashComments(member); - } - }); - var ctor = getFirstConstructorWithBody(node); - if (ctor) { - emitLeadingComments(ctor); - } - emitStart(ctor || node); - write("function "); - emit(node.name); - emitSignatureParameters(ctor); - write(" {"); - scopeEmitStart(node, "constructor"); - increaseIndent(); - if (ctor) { - emitDetachedComments(ctor.body.statements); - } - emitCaptureThisForNodeIfNecessary(node); - if (ctor) { - emitDefaultValueAssignments(ctor); - emitRestParameter(ctor); - if (baseTypeNode) { - var superCall = findInitialSuperCall(ctor); - if (superCall) { - writeLine(); - emit(superCall); - } - } - emitParameterPropertyAssignments(ctor); - } - else { - if (baseTypeNode) { - writeLine(); - emitStart(baseTypeNode); - write("_super.apply(this, arguments);"); - emitEnd(baseTypeNode); - } - } - emitMemberAssignments(node, 0); - if (ctor) { - var statements = ctor.body.statements; - if (superCall) - statements = statements.slice(1); - emitLines(statements); - } - emitTempDeclarations(true); - writeLine(); - if (ctor) { - emitLeadingCommentsOfPosition(ctor.body.statements.end); - } - decreaseIndent(); - emitToken(15, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); - emitEnd(ctor || node); - if (ctor) { - emitTrailingComments(ctor); - } - tempCount = saveTempCount; - tempVariables = saveTempVariables; - tempParameters = saveTempParameters; + emitEnd(node); + if (node.kind === 201) { + emitExportMemberAssignment(node); + } + if (languageVersion < 2 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); } } + function emitClassMemberPrefix(node, member) { + emitDeclarationName(node); + if (!(member.flags & 128)) { + write(".prototype"); + } + } + function emitDecoratorsOfClass(node) { + emitDecoratorsOfMembers(node, 0); + emitDecoratorsOfMembers(node, 128); + emitDecoratorsOfConstructor(node); + } + function emitDecoratorsOfConstructor(node) { + var constructor = ts.getFirstConstructorWithBody(node); + if (constructor) { + emitDecoratorsOfParameters(node, constructor); + } + if (!ts.nodeIsDecorated(node)) { + return; + } + writeLine(); + emitStart(node); + emitDeclarationName(node); + write(" = "); + emitDecorateStart(node.decorators); + emitDeclarationName(node); + write(");"); + emitEnd(node); + writeLine(); + } + function emitDecoratorsOfMembers(node, staticFlag) { + ts.forEach(node.members, function (member) { + if ((member.flags & 128) !== staticFlag) { + return; + } + var decorators; + switch (member.kind) { + case 134: + emitDecoratorsOfParameters(node, member); + decorators = member.decorators; + break; + case 136: + case 137: + var accessors = ts.getAllAccessorDeclarations(node.members, member); + if (member !== accessors.firstAccessor) { + return; + } + if (accessors.setAccessor) { + emitDecoratorsOfParameters(node, accessors.setAccessor); + } + decorators = accessors.firstAccessor.decorators; + if (!decorators && accessors.secondAccessor) { + decorators = accessors.secondAccessor.decorators; + } + break; + case 132: + decorators = member.decorators; + break; + default: + return; + } + if (!decorators) { + return; + } + writeLine(); + emitStart(member); + if (member.kind !== 132) { + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", "); + } + emitDecorateStart(decorators); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + if (member.kind !== 132) { + write(", Object.getOwnPropertyDescriptor("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write("))"); + } + write(");"); + emitEnd(member); + writeLine(); + }); + } + function emitDecoratorsOfParameters(node, member) { + ts.forEach(member.parameters, function (parameter, parameterIndex) { + if (!ts.nodeIsDecorated(parameter)) { + return; + } + writeLine(); + emitStart(parameter); + emitDecorateStart(parameter.decorators); + emitStart(parameter.name); + if (member.kind === 135) { + emitDeclarationName(node); + write(", void 0"); + } + else { + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + } + write(", "); + write(String(parameterIndex)); + emitEnd(parameter.name); + write(");"); + emitEnd(parameter); + writeLine(); + }); + } + function emitDecorateStart(decorators) { + write("__decorate(["); + var decoratorCount = decorators.length; + for (var i = 0; i < decoratorCount; i++) { + if (i > 0) { + write(", "); + } + var decorator = decorators[i]; + emitStart(decorator); + emit(decorator.expression); + emitEnd(decorator); + } + write("], "); + } function emitInterfaceDeclaration(node) { - emitPinnedOrTripleSlashComments(node); + emitOnlyPinnedOrTripleSlashComments(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); - return !isConstEnum || compilerOptions.preserveConstEnums; + return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation; } function emitEnumDeclaration(node) { if (!shouldEmitEnumDeclaration(node)) { return; } - if (!(node.flags & 1)) { + if (!(node.flags & 1) || isES6ExportedDeclaration(node)) { emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); emitEnd(node); @@ -20114,7 +23264,7 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") {"); increaseIndent(); @@ -20130,7 +23280,7 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (node.flags & 1) { + if (!isES6ExportedDeclaration(node) && node.flags & 1) { writeLine(); emitStart(node); write("var "); @@ -20140,13 +23290,16 @@ var ts; emitEnd(node); write(";"); } + if (languageVersion < 2 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } } function emitEnumMember(node) { var enumParent = node.parent; emitStart(node); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); emitExpressionForPropertyName(node.name); write("] = "); @@ -20157,14 +23310,12 @@ var ts; write(";"); } function writeEnumMemberDeclarationValue(member) { - if (!member.initializer || ts.isConst(member.parent)) { - var value = resolver.getConstantValue(member); - if (value !== undefined) { - write(value.toString()); - return; - } + var value = resolver.getConstantValue(member); + if (value !== undefined) { + write(value.toString()); + return; } - if (member.initializer) { + else if (member.initializer) { emit(member.initializer); } else { @@ -20172,20 +23323,23 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 198) { + if (moduleDeclaration.body.kind === 205) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } } function shouldEmitModuleDeclaration(node) { - return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums); + return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation); } function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); write(";"); @@ -20194,16 +23348,16 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 199) { - var saveTempCount = tempCount; + if (node.body.kind === 206) { + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; emit(node.body); - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; } else { @@ -20220,7 +23374,7 @@ var ts; scopeEmitEnd(); } write(")("); - if (node.flags & 1) { + if ((node.flags & 1) && !isES6ExportedDeclaration(node)) { emit(node.name); write(" = "); } @@ -20229,66 +23383,313 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); + if (!isES6ExportedDeclaration(node) && node.name.kind === 65 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } + } + function emitRequire(moduleName) { + if (moduleName.kind === 8) { + write("require("); + emitStart(moduleName); + emitLiteral(moduleName); + emitEnd(moduleName); + emitToken(17, moduleName.end); + } + else { + write("require()"); + } + } + function getNamespaceDeclarationNode(node) { + if (node.kind === 208) { + return node; + } + var importClause = node.importClause; + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 211) { + return importClause.namedBindings; + } + } + function isDefaultImport(node) { + return node.kind === 209 && node.importClause && !!node.importClause.name; + } + function emitExportImportAssignments(node) { + if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { + emitExportMemberAssignments(node.name); + } + ts.forEachChild(node, emitExportImportAssignments); } function emitImportDeclaration(node) { - var emitImportDeclaration = resolver.isReferencedImportDeclaration(node); - if (!emitImportDeclaration) { - emitImportDeclaration = !ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportWithEntityName(node); + if (languageVersion < 2) { + return emitExternalImportDeclaration(node); } - if (emitImportDeclaration) { - if (ts.isExternalModuleImportDeclaration(node) && node.parent.kind === 210 && compilerOptions.module === 2) { - if (node.flags & 1) { - writeLine(); - emitLeadingComments(node); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - write(";"); - emitEnd(node); - emitTrailingComments(node); + if (node.importClause) { + var shouldEmitDefaultBindings = resolver.isReferencedAliasDeclaration(node.importClause); + var shouldEmitNamedBindings = node.importClause.namedBindings && resolver.isReferencedAliasDeclaration(node.importClause.namedBindings, true); + if (shouldEmitDefaultBindings || shouldEmitNamedBindings) { + write("import "); + emitStart(node.importClause); + if (shouldEmitDefaultBindings) { + emit(node.importClause.name); + if (shouldEmitNamedBindings) { + write(", "); + } } + if (shouldEmitNamedBindings) { + emitLeadingComments(node.importClause.namedBindings); + emitStart(node.importClause.namedBindings); + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + emit(node.importClause.namedBindings.name); + } + else { + write("{ "); + emitExportOrImportSpecifierList(node.importClause.namedBindings.elements, resolver.isReferencedAliasDeclaration); + write(" }"); + } + emitEnd(node.importClause.namedBindings); + emitTrailingComments(node.importClause.namedBindings); + } + emitEnd(node.importClause); + write(" from "); + emit(node.moduleSpecifier); + write(";"); } - else { - writeLine(); + } + else { + write("import "); + emit(node.moduleSpecifier); + write(";"); + } + } + function emitExternalImportDeclaration(node) { + if (ts.contains(externalImports, node)) { + var isExportedImport = node.kind === 208 && (node.flags & 1) !== 0; + var namespaceDeclaration = getNamespaceDeclarationNode(node); + if (compilerOptions.module !== 2) { emitLeadingComments(node); emitStart(node); - if (!(node.flags & 1)) - write("var "); - emitModuleMemberName(node); - write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { - emit(node.moduleReference); + if (namespaceDeclaration && !isDefaultImport(node)) { + if (!isExportedImport) + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); } else { - var literal = ts.getExternalModuleImportDeclarationExpression(node); - write("require("); - emitStart(literal); - emitLiteral(literal); - emitEnd(literal); - emitToken(17, literal.end); + var isNakedImport = 209 && !node.importClause; + if (!isNakedImport) { + write("var "); + write(getGeneratedNameForNode(node)); + write(" = "); + } + } + emitRequire(ts.getExternalModuleName(node)); + if (namespaceDeclaration && isDefaultImport(node)) { + write(", "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); } write(";"); emitEnd(node); + emitExportImportAssignments(node); emitTrailingComments(node); } + else { + if (isExportedImport) { + emitModuleMemberName(namespaceDeclaration); + write(" = "); + emit(namespaceDeclaration.name); + write(";"); + } + else if (namespaceDeclaration && isDefaultImport(node)) { + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + write(";"); + } + emitExportImportAssignments(node); + } } } - function getExternalImportDeclarations(node) { - var result = []; - ts.forEach(node.statements, function (statement) { - if (ts.isExternalModuleImportDeclaration(statement) && resolver.isReferencedImportDeclaration(statement)) { - result.push(statement); + function emitImportEqualsDeclaration(node) { + if (ts.isExternalModuleImportEqualsDeclaration(node)) { + emitExternalImportDeclaration(node); + return; + } + if (resolver.isReferencedAliasDeclaration(node) || + (!ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node))) { + emitLeadingComments(node); + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + write("var "); } - }); - return result; + else if (!(node.flags & 1)) { + write("var "); + } + emitModuleMemberName(node); + write(" = "); + emit(node.moduleReference); + write(";"); + emitEnd(node); + emitExportImportAssignments(node); + emitTrailingComments(node); + } } - function getFirstExportAssignment(sourceFile) { - return ts.forEach(sourceFile.statements, function (node) { - if (node.kind === 201) { - return node; + function emitExportDeclaration(node) { + if (languageVersion < 2) { + if (node.moduleSpecifier && (!node.exportClause || resolver.isValueAliasDeclaration(node))) { + emitStart(node); + var generatedName = getGeneratedNameForNode(node); + if (node.exportClause) { + if (compilerOptions.module !== 2) { + write("var "); + write(generatedName); + write(" = "); + emitRequire(ts.getExternalModuleName(node)); + write(";"); + } + for (var _a = 0, _b = node.exportClause.elements; _a < _b.length; _a++) { + var specifier = _b[_a]; + if (resolver.isValueAliasDeclaration(specifier)) { + writeLine(); + emitStart(specifier); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + write(" = "); + write(generatedName); + write("."); + emitNodeWithoutSourceMap(specifier.propertyName || specifier.name); + write(";"); + emitEnd(specifier); + } + } + } + else { + writeLine(); + write("__export("); + if (compilerOptions.module !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); + } + emitEnd(node); } - }); + } + else { + if (!node.exportClause || resolver.isValueAliasDeclaration(node)) { + emitStart(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitExportOrImportSpecifierList(node.exportClause.elements, resolver.isValueAliasDeclaration); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + emitNodeWithoutSourceMap(node.moduleSpecifier); + } + write(";"); + emitEnd(node); + } + } + } + function emitExportOrImportSpecifierList(specifiers, shouldEmit) { + ts.Debug.assert(languageVersion >= 2); + var needsComma = false; + for (var _a = 0; _a < specifiers.length; _a++) { + var specifier = specifiers[_a]; + if (shouldEmit(specifier)) { + if (needsComma) { + write(", "); + } + emitStart(specifier); + if (specifier.propertyName) { + emitNodeWithoutSourceMap(specifier.propertyName); + write(" as "); + } + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier); + needsComma = true; + } + } + } + function emitExportAssignment(node) { + if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { + if (languageVersion >= 2) { + writeLine(); + emitStart(node); + write("export default "); + var expression = node.expression; + emit(expression); + if (expression.kind !== 200 && + expression.kind !== 201) { + write(";"); + } + emitEnd(node); + } + else { + writeLine(); + emitStart(node); + emitContainingModuleName(node); + write(".default = "); + emit(node.expression); + write(";"); + emitEnd(node); + } + } + } + function collectExternalModuleInfo(sourceFile) { + externalImports = []; + exportSpecifiers = {}; + exportEquals = undefined; + hasExportStars = false; + for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { + var node = _b[_a]; + switch (node.kind) { + case 209: + if (!node.importClause || + resolver.isReferencedAliasDeclaration(node.importClause, true)) { + externalImports.push(node); + } + break; + case 208: + if (node.moduleReference.kind === 219 && resolver.isReferencedAliasDeclaration(node)) { + externalImports.push(node); + } + break; + case 215: + if (node.moduleSpecifier) { + if (!node.exportClause) { + externalImports.push(node); + hasExportStars = true; + } + else if (resolver.isValueAliasDeclaration(node)) { + externalImports.push(node); + } + } + else { + for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { + var specifier = _d[_c]; + var name_17 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_17] || (exportSpecifiers[name_17] = [])).push(specifier); + } + } + break; + case 214: + if (node.isExportEquals && !exportEquals) { + exportEquals = node; + } + break; + } + } } function sortAMDModules(amdModules) { return amdModules.sort(function (moduleA, moduleB) { @@ -20303,8 +23704,20 @@ var ts; } }); } + function emitExportStarHelper() { + if (hasExportStars) { + writeLine(); + write("function __export(m) {"); + increaseIndent(); + writeLine(); + write("for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];"); + decreaseIndent(); + writeLine(); + write("}"); + } + } function emitAMDModule(node, startIndex) { - var imports = getExternalImportDeclarations(node); + collectExternalModuleInfo(node); writeLine(); write("define("); sortAMDModules(node.amdDependencies); @@ -20312,62 +23725,78 @@ var ts; write("\"" + node.amdModuleName + "\", "); } write("[\"require\", \"exports\""); - ts.forEach(imports, function (imp) { + for (var _a = 0; _a < externalImports.length; _a++) { + var importNode = externalImports[_a]; write(", "); - emitLiteral(ts.getExternalModuleImportDeclarationExpression(imp)); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var moduleName = ts.getExternalModuleName(importNode); + if (moduleName.kind === 8) { + emitLiteral(moduleName); + } + else { + write("\"\""); + } + } + for (var _b = 0, _c = node.amdDependencies; _b < _c.length; _b++) { + var amdDependency = _c[_b]; var text = "\"" + amdDependency.path + "\""; write(", "); write(text); - }); + } write("], function (require, exports"); - ts.forEach(imports, function (imp) { + for (var _d = 0; _d < externalImports.length; _d++) { + var importNode = externalImports[_d]; write(", "); - emit(imp.name); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var namespaceDeclaration = getNamespaceDeclarationNode(importNode); + if (namespaceDeclaration && !isDefaultImport(importNode)) { + emit(namespaceDeclaration.name); + } + else { + write(getGeneratedNameForNode(importNode)); + } + } + for (var _e = 0, _f = node.amdDependencies; _e < _f.length; _e++) { + var amdDependency = _f[_e]; if (amdDependency.name) { write(", "); write(amdDependency.name); } - }); + } write(") {"); increaseIndent(); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { - writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("return "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); - write(";"); - emitEnd(exportAssignment); - } + emitExportEquals(true); decreaseIndent(); writeLine(); write("});"); } function emitCommonJSModule(node, startIndex) { + collectExternalModuleInfo(node); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { + emitExportEquals(false); + } + function emitES6Module(node, startIndex) { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + } + function emitExportEquals(emitAsReturn) { + if (exportEquals && resolver.isValueAliasDeclaration(exportEquals)) { writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("module.exports = "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); + emitStart(exportEquals); + write(emitAsReturn ? "return " : "module.exports = "); + emit(exportEquals.expression); write(";"); - emitEnd(exportAssignment); + emitEnd(exportEquals); } } function emitDirectivePrologues(statements, startWithNewLine) { @@ -20384,12 +23813,21 @@ var ts; } return statements.length; } - function emitSourceFile(node) { - currentSourceFile = node; + function writeHelper(text) { + var lines = text.split(/\r\n|\r|\n/g); + for (var i = 0; i < lines.length; ++i) { + var line = lines[i]; + if (line.length) { + writeLine(); + write(line); + } + } + } + function emitSourceFileNode(node) { writeLine(); emitDetachedComments(node); var startIndex = emitDirectivePrologues(node.statements, false); - if (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8) { + if ((languageVersion < 2) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8)) { writeLine(); write("var __extends = this.__extends || function (d, b) {"); increaseIndent(); @@ -20406,8 +23844,15 @@ var ts; write("};"); extendsEmitted = true; } + if (!decorateEmitted && resolver.getNodeCheckFlags(node) & 512) { + writeHelper("\nvar __decorate = this.__decorate || function (decorators, target, key, value) {\n var kind = typeof (arguments.length == 2 ? value = target : value);\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n switch (kind) {\n case \"function\": value = decorator(value) || value; break;\n case \"number\": decorator(target, key, value); break;\n case \"undefined\": decorator(target, key); break;\n case \"object\": value = decorator(target, key, value) || value; break;\n }\n }\n return value;\n};"); + decorateEmitted = true; + } if (ts.isExternalModule(node)) { - if (compilerOptions.module === 2) { + if (languageVersion >= 2) { + emitES6Module(node, startIndex); + } + else if (compilerOptions.module === 2) { emitAMDModule(node, startIndex); } else { @@ -20415,64 +23860,77 @@ var ts; } } else { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); } emitLeadingComments(node.endOfFileToken); } - function emitNode(node, disableComments) { + function emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers) { if (!node) { return; } if (node.flags & 2) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - var emitComments = !disableComments && shouldEmitLeadingAndTrailingComments(node); + var emitComments = shouldEmitLeadingAndTrailingComments(node); if (emitComments) { emitLeadingComments(node); } - emitJavaScriptWorker(node); + emitJavaScriptWorker(node, allowGeneratedIdentifiers); if (emitComments) { emitTrailingComments(node); } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 195: - case 193: + case 202: case 200: - case 196: - case 201: + case 209: + case 208: + case 203: + case 214: return false; - case 198: + case 205: return shouldEmitModuleDeclaration(node); - case 197: + case 204: return shouldEmitEnumDeclaration(node); } + if (node.kind !== 179 && + node.parent && + node.parent.kind === 163 && + node.parent.body === node && + compilerOptions.target <= 1) { + return false; + } return true; } - function emitJavaScriptWorker(node) { + function emitJavaScriptWorker(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers === void 0) { allowGeneratedIdentifiers = true; } switch (node.kind) { - case 64: - return emitIdentifier(node); - case 126: - return emitParameter(node); - case 130: + case 65: + return emitIdentifier(node, allowGeneratedIdentifiers); case 129: - return emitMethod(node); - case 132: + return emitParameter(node); + case 134: case 133: + return emitMethod(node); + case 136: + case 137: return emitAccessor(node); - case 92: + case 93: return emitThis(node); - case 90: + case 91: return emitSuper(node); - case 88: + case 89: return write("null"); - case 94: + case 95: return write("true"); - case 79: + case 80: return write("false"); case 7: case 8: @@ -20482,122 +23940,130 @@ var ts; case 12: case 13: return emitLiteral(node); - case 167: - return emitTemplateExpression(node); case 171: - return emitTemplateSpan(node); - case 123: - return emitQualifiedName(node); - case 146: - return emitObjectBindingPattern(node); - case 147: - return emitArrayBindingPattern(node); - case 148: - return emitBindingElement(node); - case 149: - return emitArrayLiteral(node); - case 150: - return emitObjectLiteral(node); - case 207: - return emitPropertyAssignment(node); - case 208: - return emitShorthandPropertyAssignment(node); - case 124: - return emitComputedPropertyName(node); - case 151: - return emitPropertyAccess(node); - case 152: - return emitIndexedAccess(node); - case 153: - return emitCallExpression(node); - case 154: - return emitNewExpression(node); - case 155: - return emitTaggedTemplateExpression(node); - case 156: - return emit(node.expression); - case 157: - return emitParenExpression(node); - case 193: - case 158: - case 159: - return emitFunctionDeclaration(node); - case 160: - return emitDeleteExpression(node); - case 161: - return emitTypeOfExpression(node); - case 162: - return emitVoidExpression(node); - case 163: - return emitPrefixUnaryExpression(node); - case 164: - return emitPostfixUnaryExpression(node); - case 165: - return emitBinaryExpression(node); - case 166: - return emitConditionalExpression(node); - case 169: - return emitSpreadElementExpression(node); - case 170: - return; - case 172: - case 199: - return emitBlock(node); - case 173: - return emitVariableStatement(node); - case 174: - return write(";"); - case 175: - return emitExpressionStatement(node); + return emitTemplateExpression(node); case 176: - return emitIfStatement(node); - case 177: - return emitDoStatement(node); - case 178: - return emitWhileStatement(node); - case 179: - return emitForStatement(node); - case 181: - case 180: - return emitForInOrForOfStatement(node); - case 182: - case 183: - return emitBreakOrContinueStatement(node); - case 184: - return emitReturnStatement(node); - case 185: - return emitWithStatement(node); - case 186: - return emitSwitchStatement(node); - case 203: - case 204: - return emitCaseOrDefaultClause(node); - case 187: - return emitLabelledStatement(node); - case 188: - return emitThrowStatement(node); - case 189: - return emitTryStatement(node); - case 206: - return emitCatchClause(node); - case 190: - return emitDebuggerStatement(node); - case 191: - return emitVariableDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 209: - return emitEnumMember(node); - case 198: - return emitModuleDeclaration(node); + return emitTemplateSpan(node); + case 126: + return emitQualifiedName(node); + case 150: + return emitObjectBindingPattern(node); + case 151: + return emitArrayBindingPattern(node); + case 152: + return emitBindingElement(node); + case 153: + return emitArrayLiteral(node); + case 154: + return emitObjectLiteral(node); + case 224: + return emitPropertyAssignment(node); + case 225: + return emitShorthandPropertyAssignment(node); + case 127: + return emitComputedPropertyName(node); + case 155: + return emitPropertyAccess(node); + case 156: + return emitIndexedAccess(node); + case 157: + return emitCallExpression(node); + case 158: + return emitNewExpression(node); + case 159: + return emitTaggedTemplateExpression(node); + case 160: + return emit(node.expression); + case 161: + return emitParenExpression(node); case 200: + case 162: + case 163: + return emitFunctionDeclaration(node); + case 164: + return emitDeleteExpression(node); + case 165: + return emitTypeOfExpression(node); + case 166: + return emitVoidExpression(node); + case 167: + return emitPrefixUnaryExpression(node); + case 168: + return emitPostfixUnaryExpression(node); + case 169: + return emitBinaryExpression(node); + case 170: + return emitConditionalExpression(node); + case 173: + return emitSpreadElementExpression(node); + case 175: + return; + case 179: + case 206: + return emitBlock(node); + case 180: + return emitVariableStatement(node); + case 181: + return write(";"); + case 182: + return emitExpressionStatement(node); + case 183: + return emitIfStatement(node); + case 184: + return emitDoStatement(node); + case 185: + return emitWhileStatement(node); + case 186: + return emitForStatement(node); + case 188: + case 187: + return emitForInOrForOfStatement(node); + case 189: + case 190: + return emitBreakOrContinueStatement(node); + case 191: + return emitReturnStatement(node); + case 192: + return emitWithStatement(node); + case 193: + return emitSwitchStatement(node); + case 220: + case 221: + return emitCaseOrDefaultClause(node); + case 194: + return emitLabelledStatement(node); + case 195: + return emitThrowStatement(node); + case 196: + return emitTryStatement(node); + case 223: + return emitCatchClause(node); + case 197: + return emitDebuggerStatement(node); + case 198: + return emitVariableDeclaration(node); + case 174: + return emitClassExpression(node); + case 201: + return emitClassDeclaration(node); + case 202: + return emitInterfaceDeclaration(node); + case 204: + return emitEnumDeclaration(node); + case 226: + return emitEnumMember(node); + case 205: + return emitModuleDeclaration(node); + case 209: return emitImportDeclaration(node); - case 210: - return emitSourceFile(node); + case 208: + return emitImportEqualsDeclaration(node); + case 215: + return emitExportDeclaration(node); + case 214: + return emitExportAssignment(node); + case 227: + return emitSourceFileNode(node); } } function hasDetachedComments(pos) { @@ -20613,34 +24079,50 @@ var ts; } return leadingComments; } + function filterComments(ranges, onlyPinnedOrTripleSlashComments) { + if (ranges && onlyPinnedOrTripleSlashComments) { + ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); + if (ranges.length === 0) { + return undefined; + } + } + return ranges; + } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.pos !== node.parent.pos) { - var leadingComments; + if (node.parent.kind === 227 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { - leadingComments = getLeadingCommentsWithoutDetachedComments(); + return getLeadingCommentsWithoutDetachedComments(); } else { - leadingComments = ts.getLeadingCommentRangesOfNode(node, currentSourceFile); + return ts.getLeadingCommentRangesOfNode(node, currentSourceFile); } - return leadingComments; } } } - function emitLeadingDeclarationComments(node) { - var leadingComments = getLeadingCommentsToEmit(node); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); - } - function emitTrailingDeclarationComments(node) { + function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.end !== node.parent.end) { - var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, node.end); - emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + if (node.parent.kind === 227 || node.end !== node.parent.end) { + return ts.getTrailingCommentRanges(currentSourceFile.text, node.end); } } } - function emitLeadingCommentsOfLocalPosition(pos) { + function emitOnlyPinnedOrTripleSlashComments(node) { + emitLeadingCommentsWorker(node, true); + } + function emitLeadingComments(node) { + return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + } + function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { + var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + } + function emitTrailingComments(node) { + var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + } + function emitLeadingCommentsOfPosition(pos) { var leadingComments; if (hasDetachedComments(pos)) { leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -20648,18 +24130,19 @@ var ts; else { leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + leadingComments = filterComments(leadingComments, compilerOptions.removeComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); } - function emitDetachedCommentsAtPosition(node) { + function emitDetachedComments(node) { var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); if (leadingComments) { var detachedComments = []; var lastComment; ts.forEach(leadingComments, function (comment) { if (lastComment) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, lastComment.end); - var commentLine = getLineOfLocalPosition(currentSourceFile, comment.pos); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, lastComment.end); + var commentLine = ts.getLineOfLocalPosition(currentSourceFile, comment.pos); if (commentLine >= lastCommentLine + 2) { return detachedComments; } @@ -20668,11 +24151,11 @@ var ts; lastComment = comment; }); if (detachedComments.length) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); - var nodeLine = getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); + var nodeLine = ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); if (nodeLine >= lastCommentLine + 2) { - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); var currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; if (detachedCommentsInfo) { detachedCommentsInfo.push(currentDetachedCommentInfo); @@ -20684,52 +24167,53 @@ var ts; } } } - function emitPinnedOrTripleSlashCommentsOfNode(node) { - var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); - function isPinnedOrTripleSlashComment(comment) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; - } - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && - currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { - return true; - } + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && + currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, pinnedComments); - emitComments(currentSourceFile, writer, pinnedComments, true, newLine, writeComment); - } - } - function writeDeclarationFile(jsFilePath, sourceFile) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - if (!emitDeclarationResult.reportedDeclarationError) { - var declarationOutput = emitDeclarationResult.referencePathsOutput; - var appliedSyncOutputPos = 0; - ts.forEach(emitDeclarationResult.aliasDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.asynchronousOutput) { - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); - declarationOutput += aliasEmitInfo.asynchronousOutput; - appliedSyncOutputPos = aliasEmitInfo.outputPos; - } - }); - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos); - writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, compilerOptions.emitBOM); } } function emitFile(jsFilePath, sourceFile) { emitJavaScript(jsFilePath, sourceFile); if (compilerOptions.declaration) { - writeDeclarationFile(jsFilePath, sourceFile); + ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); } } } ts.emitFiles = emitFiles; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { + ts.programTime = 0; ts.emitTime = 0; - function createCompilerHost(options) { + ts.ioReadTime = 0; + ts.ioWriteTime = 0; + ts.version = "1.5.0"; + function findConfigFile(searchPath) { + var fileName = "tsconfig.json"; + while (true) { + if (ts.sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + fileName = "../" + fileName; + } + return undefined; + } + ts.findConfigFile = findConfigFile; + function createCompilerHost(options, setParentNodes) { var currentDirectory; var existingDirectories = {}; function getCanonicalFileName(fileName) { @@ -20737,38 +24221,45 @@ var ts; } var unsupportedFileEncodingErrorCode = -2147024809; function getSourceFile(fileName, languageVersion, onError) { + var text; try { - var text = ts.sys.readFile(fileName, options.charset); + var start = new Date().getTime(); + text = ts.sys.readFile(fileName, options.charset); + ts.ioReadTime += new Date().getTime() - start; } catch (e) { if (onError) { - onError(e.number === unsupportedFileEncodingErrorCode ? ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_file_encoding).messageText : e.message); + onError(e.number === unsupportedFileEncodingErrorCode + ? ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_file_encoding).messageText + : e.message); } text = ""; } - return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion) : undefined; + return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; + } + function directoryExists(directoryPath) { + if (ts.hasProperty(existingDirectories, directoryPath)) { + return true; + } + if (ts.sys.directoryExists(directoryPath)) { + existingDirectories[directoryPath] = true; + return true; + } + return false; + } + function ensureDirectoriesExist(directoryPath) { + if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { + var parentDirectory = ts.getDirectoryPath(directoryPath); + ensureDirectoriesExist(parentDirectory); + ts.sys.createDirectory(directoryPath); + } } function writeFile(fileName, data, writeByteOrderMark, onError) { - function directoryExists(directoryPath) { - if (ts.hasProperty(existingDirectories, directoryPath)) { - return true; - } - if (ts.sys.directoryExists(directoryPath)) { - existingDirectories[directoryPath] = true; - return true; - } - return false; - } - function ensureDirectoriesExist(directoryPath) { - if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { - var parentDirectory = ts.getDirectoryPath(directoryPath); - ensureDirectoriesExist(parentDirectory); - ts.sys.createDirectory(directoryPath); - } - } try { + var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); ts.sys.writeFile(fileName, data, writeByteOrderMark); + ts.ioWriteTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -20789,6 +24280,9 @@ var ts; ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program) { var diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + if (program.getCompilerOptions().declaration) { + diagnostics.concat(program.getDeclarationDiagnostics()); + } return ts.sortAndDeduplicateDiagnostics(diagnostics); } ts.getPreEmitDiagnostics = getPreEmitDiagnostics; @@ -20822,14 +24316,16 @@ var ts; var diagnostics = ts.createDiagnosticCollection(); var seenNoDefaultLib = options.noLib; var commonSourceDirectory; + var diagnosticsProducingTypeChecker; + var noDiagnosticsTypeChecker; + var start = new Date().getTime(); host = host || createCompilerHost(options); ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); if (!seenNoDefaultLib) { processRootFile(host.getDefaultLibFileName(options), true); } verifyCompilerOptions(); - var diagnosticsProducingTypeChecker; - var noDiagnosticsTypeChecker; + ts.programTime += new Date().getTime() - start; program = { getSourceFile: getSourceFile, getSourceFiles: function () { return files; }, @@ -20867,16 +24363,13 @@ var ts; function getTypeChecker() { return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = ts.createTypeChecker(program, false)); } - function getDeclarationDiagnostics(targetSourceFile) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(targetSourceFile); - return ts.getDeclarationDiagnostics(getEmitHost(), resolver, targetSourceFile); - } function emit(sourceFile, writeFileCallback) { if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) { return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; } + var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); var start = new Date().getTime(); - var emitResult = ts.emitFiles(getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile), getEmitHost(writeFileCallback), sourceFile); + var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile); ts.emitTime += new Date().getTime() - start; return emitResult; } @@ -20900,6 +24393,9 @@ var ts; function getSemanticDiagnostics(sourceFile) { return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile); } + function getDeclarationDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile); + } function getSyntacticDiagnosticsForFile(sourceFile) { return sourceFile.parseDiagnostics; } @@ -20911,6 +24407,13 @@ var ts; var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); } + function getDeclarationDiagnosticsForFile(sourceFile) { + if (!ts.isDeclarationFile(sourceFile)) { + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); + } + } function getGlobalDiagnostics() { var typeChecker = getDiagnosticsProducingTypeChecker(); var allDiagnostics = []; @@ -20925,9 +24428,11 @@ var ts; processSourceFile(ts.normalizePath(fileName), isDefaultLib); } function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + var start; + var length; if (refEnd !== undefined && refPos !== undefined) { - var start = refPos; - var length = refEnd - refPos; + start = refPos; + length = refEnd - refPos; } var diagnostic; if (hasExtension(fileName)) { @@ -20993,8 +24498,8 @@ var ts; files.push(file); } } + return file; } - return file; function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) { var file = filesByName[canonicalName]; if (file && host.useCaseSensitiveFileNames()) { @@ -21014,30 +24519,31 @@ var ts; } function processImportedModules(file, basePath) { ts.forEach(file.statements, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); - var moduleName = nameLiteral.text; - if (moduleName) { - var searchPath = basePath; - while (true) { - var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - if (findModuleSourceFile(searchName + ".ts", nameLiteral) || findModuleSourceFile(searchName + ".d.ts", nameLiteral)) { - break; + if (node.kind === 209 || node.kind === 208 || node.kind === 215) { + var moduleNameExpr = ts.getExternalModuleName(node); + if (moduleNameExpr && moduleNameExpr.kind === 8) { + var moduleNameText = moduleNameExpr.text; + if (moduleNameText) { + var searchPath = basePath; + while (true) { + var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleNameText)); + if (findModuleSourceFile(searchName + ".ts", moduleNameExpr) || findModuleSourceFile(searchName + ".d.ts", moduleNameExpr)) { + break; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; } - var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) { - break; - } - searchPath = parentPath; } } } - else if (node.kind === 198 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { + else if (node.kind === 205 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { ts.forEachChild(node.body, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); + if (ts.isExternalModuleImportEqualsDeclaration(node) && + ts.getExternalModuleImportEqualsDeclarationExpression(node).kind === 8) { + var nameLiteral = ts.getExternalModuleImportEqualsDeclarationExpression(node); var moduleName = nameLiteral.text; if (moduleName) { var searchName = ts.normalizePath(ts.combinePaths(basePath, moduleName)); @@ -21055,6 +24561,20 @@ var ts; } } function verifyCompilerOptions() { + if (options.separateCompilation) { + if (options.sourceMap) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation)); + } + if (options.declaration) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation)); + } + if (options.noEmitOnError) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation)); + } + if (options.out) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation)); + } + } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { if (options.mapRoot) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option)); @@ -21064,20 +24584,33 @@ var ts; } return; } - var firstExternalModule = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); - if (firstExternalModule && !options.module) { - var externalModuleErrorSpan = ts.getErrorSpanForNode(firstExternalModule.externalModuleIndicator); - var errorStart = ts.skipTrivia(firstExternalModule.text, externalModuleErrorSpan.pos); - var errorLength = externalModuleErrorSpan.end - errorStart; - diagnostics.add(ts.createFileDiagnostic(firstExternalModule, errorStart, errorLength, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + var languageVersion = options.target || 0; + var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); + if (options.separateCompilation) { + if (!options.module && languageVersion < 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + } + var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; }); + if (firstNonExternalModuleSourceFile) { + var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); + diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided)); + } + } + else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { + var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); + diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + } + if (options.module && languageVersion >= 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher)); } if (options.outDir || options.sourceRoot || (options.mapRoot && - (!options.out || firstExternalModule !== undefined))) { + (!options.out || firstExternalModuleSourceFile !== undefined))) { var commonPathComponents; ts.forEach(files, function (sourceFile) { - if (!(sourceFile.flags & 1024) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + if (!(sourceFile.flags & 2048) + && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); sourcePathComponents.pop(); if (commonPathComponents) { @@ -21117,6 +24650,10 @@ var ts; } ts.createProgram = createProgram; })(ts || (ts = {})); +/// +/// +/// +/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -21124,10 +24661,6 @@ var ts; name: "charset", type: "string" }, - { - name: "codepage", - type: "number" - }, { name: "declaration", shortName: "d", @@ -21193,10 +24726,6 @@ var ts; name: "noLib", type: "boolean" }, - { - name: "noLibCheck", - type: "boolean" - }, { name: "noResolve", type: "boolean" @@ -21232,6 +24761,10 @@ var ts; type: "boolean", description: ts.Diagnostics.Do_not_emit_comments_to_output }, + { + name: "separateCompilation", + type: "boolean" + }, { name: "sourceMap", type: "boolean", @@ -21455,6 +24988,20 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// var ts; (function (ts) { var OutliningElementsCollector; @@ -21474,14 +25021,7 @@ var ts; } } function autoCollapse(node) { - switch (node.kind) { - case 199: - case 194: - case 195: - case 197: - return false; - } - return true; + return ts.isFunctionBlock(node) && node.parent.kind !== 163; } var depth = 0; var maxDepth = 20; @@ -21490,30 +25030,30 @@ var ts; return; } switch (n.kind) { - case 172: + case 179: if (!ts.isFunctionBlock(n)) { - var parent = n.parent; + var parent_6 = n.parent; var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); - if (parent.kind === 177 || - parent.kind === 180 || - parent.kind === 181 || - parent.kind === 179 || - parent.kind === 176 || - parent.kind === 178 || - parent.kind === 185 || - parent.kind === 206) { - addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + if (parent_6.kind === 184 || + parent_6.kind === 187 || + parent_6.kind === 188 || + parent_6.kind === 186 || + parent_6.kind === 183 || + parent_6.kind === 185 || + parent_6.kind === 192 || + parent_6.kind === 223) { + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent.kind === 189) { - var tryStatement = parent; + if (parent_6.kind === 196) { + var tryStatement = parent_6; if (tryStatement.tryBlock === n) { - addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { - var finallyKeyword = ts.findChildOfKind(tryStatement, 80, sourceFile); + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); if (finallyKeyword) { addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); break; @@ -21529,21 +25069,23 @@ var ts; }); break; } - case 199: + case 206: { var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; - case 194: - case 195: - case 197: - case 150: - case 186: + } + case 201: + case 202: + case 204: + case 154: + case 207: { var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; - case 149: + } + case 153: var openBracket = ts.findChildOfKind(n, 18, sourceFile); var closeBracket = ts.findChildOfKind(n, 19, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -21563,27 +25105,33 @@ var ts; (function (ts) { var NavigateTo; (function (NavigateTo) { - var MatchKind; - (function (MatchKind) { - MatchKind[MatchKind["none"] = 0] = "none"; - MatchKind[MatchKind["exact"] = 1] = "exact"; - MatchKind[MatchKind["substring"] = 2] = "substring"; - MatchKind[MatchKind["prefix"] = 3] = "prefix"; - })(MatchKind || (MatchKind = {})); function getNavigateToItems(program, cancellationToken, searchValue, maxResultCount) { - var terms = searchValue.split(" "); - var searchTerms = ts.map(terms, function (t) { return ({ caseSensitive: hasAnyUpperCaseCharacter(t), term: t }); }); + var patternMatcher = ts.createPatternMatcher(searchValue); var rawItems = []; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); - var fileName = sourceFile.fileName; var declarations = sourceFile.getNamedDeclarations(); - for (var i = 0, n = declarations.length; i < n; i++) { - var declaration = declarations[i]; - var name = declaration.name.text; - var matchKind = getMatchKind(searchTerms, name); - if (matchKind !== 0) { - rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, declaration: declaration }); + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var name = getDeclarationName(declaration); + if (name !== undefined) { + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); + if (!matches) { + continue; + } + if (patternMatcher.patternContainsDots) { + var containers = getContainers(declaration); + if (!containers) { + return undefined; + } + matches = patternMatcher.getMatches(containers, name); + if (!matches) { + continue; + } + } + var fileName = sourceFile.fileName; + var matchKind = bestMatchKind(matches); + rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } }); @@ -21593,6 +25141,98 @@ var ts; } var items = ts.map(rawItems, createNavigateToItem); return items; + function allMatchesAreCaseSensitive(matches) { + ts.Debug.assert(matches.length > 0); + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + if (!match.isCaseSensitive) { + return false; + } + } + return true; + } + function getDeclarationName(declaration) { + var result = getTextOfIdentifierOrLiteral(declaration.name); + if (result !== undefined) { + return result; + } + if (declaration.name.kind === 127) { + var expr = declaration.name.expression; + if (expr.kind === 155) { + return expr.name.text; + } + return getTextOfIdentifierOrLiteral(expr); + } + return undefined; + } + function getTextOfIdentifierOrLiteral(node) { + if (node.kind === 65 || + node.kind === 8 || + node.kind === 7) { + return node.text; + } + return undefined; + } + function tryAddSingleDeclarationName(declaration, containers) { + if (declaration && declaration.name) { + var text = getTextOfIdentifierOrLiteral(declaration.name); + if (text !== undefined) { + containers.unshift(text); + } + else if (declaration.name.kind === 127) { + return tryAddComputedPropertyName(declaration.name.expression, containers, true); + } + else { + return false; + } + } + return true; + } + function tryAddComputedPropertyName(expression, containers, includeLastPortion) { + var text = getTextOfIdentifierOrLiteral(expression); + if (text !== undefined) { + if (includeLastPortion) { + containers.unshift(text); + } + return true; + } + if (expression.kind === 155) { + var propertyAccess = expression; + if (includeLastPortion) { + containers.unshift(propertyAccess.name.text); + } + return tryAddComputedPropertyName(propertyAccess.expression, containers, true); + } + return false; + } + function getContainers(declaration) { + var containers = []; + if (declaration.name.kind === 127) { + if (!tryAddComputedPropertyName(declaration.name.expression, containers, false)) { + return undefined; + } + } + declaration = ts.getContainerNode(declaration); + while (declaration) { + if (!tryAddSingleDeclarationName(declaration, containers)) { + return undefined; + } + declaration = ts.getContainerNode(declaration); + } + return containers; + } + function bestMatchKind(matches) { + ts.Debug.assert(matches.length > 0); + var bestMatchKind = ts.PatternMatchKind.camelCase; + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + var kind = match.kind; + if (kind < bestMatchKind) { + bestMatchKind = kind; + } + } + return bestMatchKind; + } var baseSensitivity = { sensitivity: "base" }; function compareNavigateToItems(i1, i2) { return i1.matchKind - i2.matchKind || @@ -21606,48 +25246,19 @@ var ts; name: rawItem.name, kind: ts.getNodeKind(declaration), kindModifiers: ts.getNodeModifiers(declaration), - matchKind: MatchKind[rawItem.matchKind], + matchKind: ts.PatternMatchKind[rawItem.matchKind], + isCaseSensitive: rawItem.isCaseSensitive, fileName: rawItem.fileName, textSpan: ts.createTextSpanFromBounds(declaration.getStart(), declaration.getEnd()), containerName: container && container.name ? container.name.text : "", containerKind: container && container.name ? ts.getNodeKind(container) : "" }; } - function hasAnyUpperCaseCharacter(s) { - for (var i = 0, n = s.length; i < n; i++) { - var c = s.charCodeAt(i); - if ((65 <= c && c <= 90) || - (c >= 127 && s.charAt(i).toLocaleLowerCase() !== s.charAt(i))) { - return true; - } - } - return false; - } - function getMatchKind(searchTerms, name) { - var matchKind = 0; - if (name) { - for (var j = 0, n = searchTerms.length; j < n; j++) { - var searchTerm = searchTerms[j]; - var nameToSearch = searchTerm.caseSensitive ? name : name.toLocaleLowerCase(); - var index = nameToSearch.indexOf(searchTerm.term); - if (index < 0) { - return 0; - } - var termKind = 2; - if (index === 0) { - termKind = name.length === searchTerm.term.length ? 1 : 3; - } - if (matchKind === 0 || termKind < matchKind) { - matchKind = termKind; - } - } - } - return matchKind; - } } NavigateTo.getNavigateToItems = getNavigateToItems; })(NavigateTo = ts.NavigateTo || (ts.NavigateTo = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { var NavigationBar; @@ -21660,14 +25271,14 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 198: + case 205: do { current = current.parent; - } while (current.kind === 198); - case 194: - case 197: - case 195: - case 193: + } while (current.kind === 205); + case 201: + case 204: + case 202: + case 200: indent++; } current = current.parent; @@ -21678,25 +25289,50 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 173: + case 180: ts.forEach(node.declarationList.declarations, visit); break; - case 146: - case 147: + case 150: + case 151: ts.forEach(node.elements, visit); break; - case 148: - case 191: + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + childNodes.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + childNodes.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; + case 152: + case 198: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } - case 194: - case 197: - case 195: - case 198: - case 193: + case 201: + case 204: + case 202: + case 205: + case 200: + case 208: + case 213: + case 217: childNodes.push(node); + break; } } ts.forEach(nodes, visit); @@ -21726,20 +25362,20 @@ var ts; } function addTopLevelNodes(nodes, topLevelNodes) { nodes = sortNodes(nodes); - for (var i = 0, n = nodes.length; i < n; i++) { - var node = nodes[i]; + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; switch (node.kind) { - case 194: - case 197: - case 195: + case 201: + case 204: + case 202: topLevelNodes.push(node); break; - case 198: + case 205: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 193: + case 200: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -21750,9 +25386,9 @@ var ts; } } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 193) { - if (functionDeclaration.body && functionDeclaration.body.kind === 172) { - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 193 && !isEmpty(s.name.text); })) { + if (functionDeclaration.kind === 200) { + if (functionDeclaration.body && functionDeclaration.body.kind === 179) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 200 && !isEmpty(s.name.text); })) { return true; } if (!ts.isFunctionBlock(functionDeclaration.parent)) { @@ -21765,19 +25401,19 @@ var ts; function getItemsWorker(nodes, createItem) { var items = []; var keyToItem = {}; - for (var i = 0, n = nodes.length; i < n; i++) { - var child = nodes[i]; - var item = createItem(child); - if (item !== undefined) { - if (item.text.length > 0) { - var key = item.text + "-" + item.kind + "-" + item.indent; + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + var item_3 = createItem(child); + if (item_3 !== undefined) { + if (item_3.text.length > 0) { + var key = item_3.text + "-" + item_3.kind + "-" + item_3.indent; var itemWithSameName = keyToItem[key]; if (itemWithSameName) { - merge(itemWithSameName, item); + merge(itemWithSameName, item_3); } else { - keyToItem[key] = item; - items.push(item); + keyToItem[key] = item_3; + items.push(item_3); } } } @@ -21790,10 +25426,10 @@ var ts; if (!target.childItems) { target.childItems = []; } - outer: for (var i = 0, n = source.childItems.length; i < n; i++) { - var sourceChild = source.childItems[i]; - for (var j = 0, m = target.childItems.length; j < m; j++) { - var targetChild = target.childItems[j]; + outer: for (var _i = 0, _a = source.childItems; _i < _a.length; _i++) { + var sourceChild = _a[_i]; + for (var _b = 0, _c = target.childItems; _b < _c.length; _b++) { + var targetChild = _c[_b]; if (targetChild.text === sourceChild.text && targetChild.kind === sourceChild.kind) { merge(targetChild, sourceChild); continue outer; @@ -21805,42 +25441,42 @@ var ts; } function createChildItem(node) { switch (node.kind) { - case 126: + case 129: if (ts.isBindingPattern(node.name)) { break; } - if ((node.flags & 243) === 0) { + if ((node.flags & 499) === 0) { return undefined; } return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 130: - case 129: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); - case 132: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); - case 133: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); - case 136: - return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 209: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); case 134: - return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); - case 135: - return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); - case 128: - case 127: + case 133: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); + case 136: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); + case 137: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); + case 140: + return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); + case 226: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 193: + case 138: + return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); + case 139: + return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); + case 132: + case 131: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 200: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 191: - case 148: + case 198: + case 152: var variableDeclarationNode; - var name; - if (node.kind === 148) { - name = node.name; + var name_18; + if (node.kind === 152) { + name_18 = node.name; variableDeclarationNode = node; - while (variableDeclarationNode && variableDeclarationNode.kind !== 191) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 198) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -21848,19 +25484,25 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name = node.name; + name_18 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.variableElement); } - case 131: + case 135: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); + case 217: + case 213: + case 208: + case 210: + case 211: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; function createItem(node, name, scriptElementKind) { @@ -21889,17 +25531,17 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 210: + case 227: return createSourceFileItem(node); - case 194: + case 201: return createClassItem(node); - case 197: + case 204: return createEnumItem(node); - case 195: + case 202: return createIterfaceItem(node); - case 198: + case 205: return createModuleItem(node); - case 193: + case 200: return createFunctionItem(node); } return undefined; @@ -21909,7 +25551,7 @@ var ts; } var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 198) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 205) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -21921,9 +25563,9 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.name && node.body && node.body.kind === 172) { + if ((node.name || node.flags & 256) && node.body && node.body.kind === 179) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); - return getNavigationBarItem(node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + return getNavigationBarItem((!node.name && node.flags & 256) ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } return undefined; } @@ -21933,22 +25575,25 @@ var ts; return undefined; } hasGlobalNode = true; - var rootName = ts.isExternalModule(node) ? "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(node.fileName)))) + "\"" : ""; + var rootName = ts.isExternalModule(node) + ? "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(node.fileName)))) + "\"" + : ""; return getNavigationBarItem(rootName, ts.ScriptElementKind.moduleElement, ts.ScriptElementKindModifier.none, [getNodeSpan(node)], childItems); } function createClassItem(node) { var childItems; if (node.members) { var constructor = ts.forEach(node.members, function (member) { - return member.kind === 131 && member; + return member.kind === 135 && member; }); var nodes = removeDynamicallyNamedProperties(node); if (constructor) { - nodes.push.apply(nodes, constructor.parameters); + nodes.push.apply(nodes, ts.filter(constructor.parameters, function (p) { return !ts.isBindingPattern(p.name); })); } - var childItems = getItemsWorker(sortNodes(nodes), createChildItem); + childItems = getItemsWorker(sortNodes(nodes), createChildItem); } - return getNavigationBarItem(node.name.text, ts.ScriptElementKind.classElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + var nodeName = !node.name && (node.flags & 256) ? "default" : node.name.text; + return getNavigationBarItem(nodeName, ts.ScriptElementKind.classElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createEnumItem(node) { var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); @@ -21960,19 +25605,21 @@ var ts; } } function removeComputedProperties(node) { - return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 124; }); + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 127; }); } function removeDynamicallyNamedProperties(node) { return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 198) { + while (node.body.kind === 205) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 210 ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + return node.kind === 227 + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } function getTextOfNode(node) { return ts.getTextOfNodeFromSourceText(sourceFile.text, node); @@ -21984,10 +25631,10 @@ var ts; var ts; (function (ts) { (function (PatternMatchKind) { - PatternMatchKind[PatternMatchKind["Exact"] = 0] = "Exact"; - PatternMatchKind[PatternMatchKind["Prefix"] = 1] = "Prefix"; - PatternMatchKind[PatternMatchKind["Substring"] = 2] = "Substring"; - PatternMatchKind[PatternMatchKind["CamelCase"] = 3] = "CamelCase"; + PatternMatchKind[PatternMatchKind["exact"] = 0] = "exact"; + PatternMatchKind[PatternMatchKind["prefix"] = 1] = "prefix"; + PatternMatchKind[PatternMatchKind["substring"] = 2] = "substring"; + PatternMatchKind[PatternMatchKind["camelCase"] = 3] = "camelCase"; })(ts.PatternMatchKind || (ts.PatternMatchKind = {})); var PatternMatchKind = ts.PatternMatchKind; function createPatternMatch(kind, punctuationStripped, isCaseSensitive, camelCaseWeight) { @@ -22018,7 +25665,7 @@ var ts; } return matchSegment(candidate, ts.lastOrUndefined(dotSeparatedSegments)); } - function getMatches(candidate, dottedContainer) { + function getMatches(candidateContainers, candidate) { if (skipMatch(candidate)) { return undefined; } @@ -22026,15 +25673,14 @@ var ts; if (!candidateMatch) { return undefined; } - dottedContainer = dottedContainer || ""; - var containerParts = dottedContainer.split("."); - if (dotSeparatedSegments.length - 1 > containerParts.length) { - return null; + candidateContainers = candidateContainers || []; + if (dotSeparatedSegments.length - 1 > candidateContainers.length) { + return undefined; } var totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = containerParts.length - 1; i >= 0; i--, j--) { + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { var segment = dotSeparatedSegments[i]; - var containerName = containerParts[j]; + var containerName = candidateContainers[j]; var containerMatch = matchSegment(containerName, segment); if (!containerMatch) { return undefined; @@ -22053,27 +25699,27 @@ var ts; var index = indexOfIgnoringCase(candidate, chunk.textLowerCase); if (index === 0) { if (chunk.text.length === candidate.length) { - return createPatternMatch(0, punctuationStripped, candidate === chunk.text); + return createPatternMatch(PatternMatchKind.exact, punctuationStripped, candidate === chunk.text); } else { - return createPatternMatch(1, punctuationStripped, startsWith(candidate, chunk.text)); + return createPatternMatch(PatternMatchKind.prefix, punctuationStripped, startsWith(candidate, chunk.text)); } } var isLowercase = chunk.isLowerCase; if (isLowercase) { if (index > 0) { var wordSpans = getWordSpans(candidate); - for (var i = 0, n = wordSpans.length; i < n; i++) { - var span = wordSpans[i]; + for (var _i = 0; _i < wordSpans.length; _i++) { + var span = wordSpans[_i]; if (partStartsWith(candidate, span, chunk.text, true)) { - return createPatternMatch(2, punctuationStripped, partStartsWith(candidate, span, chunk.text, false)); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, partStartsWith(candidate, span, chunk.text, false)); } } } } else { if (candidate.indexOf(chunk.text) > 0) { - return createPatternMatch(2, punctuationStripped, true); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, true); } } if (!isLowercase) { @@ -22081,18 +25727,18 @@ var ts; var candidateParts = getWordSpans(candidate); var camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, false); if (camelCaseWeight !== undefined) { - return createPatternMatch(3, punctuationStripped, true, camelCaseWeight); + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, true, camelCaseWeight); } camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, true); if (camelCaseWeight !== undefined) { - return createPatternMatch(3, punctuationStripped, false, camelCaseWeight); + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, false, camelCaseWeight); } } } if (isLowercase) { if (chunk.text.length < candidate.length) { if (index > 0 && isUpperCaseLetter(candidate.charCodeAt(index))) { - return createPatternMatch(2, punctuationStripped, false); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, false); } } } @@ -22116,8 +25762,8 @@ var ts; } var subWordTextChunks = segment.subWordTextChunks; var matches = undefined; - for (var i = 0, n = subWordTextChunks.length; i < n; i++) { - var subWordTextChunk = subWordTextChunks[i]; + for (var _i = 0; _i < subWordTextChunks.length; _i++) { + var subWordTextChunk = subWordTextChunks[_i]; var result = matchTextChunk(candidate, subWordTextChunk, true); if (!result) { return undefined; @@ -22221,7 +25867,7 @@ var ts; return result1.kind - result2.kind; } function compareCamelCase(result1, result2) { - if (result1.kind === 3 && result2.kind === 3) { + if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { return result2.camelCaseWeight - result1.camelCaseWeight; } return 0; @@ -22427,10 +26073,13 @@ var ts; function transitionFromLowerToUpper(identifier, word, index) { var lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); - var transition = word ? (currentIsUpper && !lastIsUpper) : currentIsUpper; + var transition = word + ? (currentIsUpper && !lastIsUpper) + : currentIsUpper; return transition; } })(ts || (ts = {})); +/// var ts; (function (ts) { var SignatureHelp; @@ -22461,7 +26110,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 153 || node.parent.kind === 154) { + if (node.parent.kind === 157 || node.parent.kind === 158) { var callExpression = node.parent; if (node.kind === 24 || node.kind === 16) { @@ -22473,40 +26122,42 @@ var ts; invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: 0, - argumentCount: getCommaBasedArgCount(list) + argumentCount: getArgumentCount(list) }; } var listItemInfo = ts.findListItemInfo(node); if (listItemInfo) { var list = listItemInfo.list; var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; - var argumentIndex = (listItemInfo.listItemIndex + 1) >> 1; + var argumentIndex = getArgumentIndex(list, node); + var argumentCount = getArgumentCount(list); + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { kind: isTypeArgList ? 0 : 1, invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: argumentIndex, - argumentCount: getCommaBasedArgCount(list) + argumentCount: argumentCount }; } } - else if (node.kind === 10 && node.parent.kind === 155) { + else if (node.kind === 10 && node.parent.kind === 159) { if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, 0); } } - else if (node.kind === 11 && node.parent.parent.kind === 155) { + else if (node.kind === 11 && node.parent.parent.kind === 159) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 167); + ts.Debug.assert(templateExpression.kind === 171); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 171 && node.parent.parent.parent.kind === 155) { + else if (node.parent.kind === 176 && node.parent.parent.parent.kind === 159) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 167); + ts.Debug.assert(templateExpression.kind === 171); if (node.kind === 13 && !ts.isInsideTemplateLiteral(node, position)) { return undefined; } @@ -22516,8 +26167,27 @@ var ts; } return undefined; } - function getCommaBasedArgCount(argumentsList) { - return argumentsList.getChildCount() === 0 ? 0 : 1 + ts.countWhere(argumentsList.getChildren(), function (arg) { return arg.kind === 23; }); + function getArgumentIndex(argumentsList, node) { + var argumentIndex = 0; + var listChildren = argumentsList.getChildren(); + for (var _i = 0; _i < listChildren.length; _i++) { + var child = listChildren[_i]; + if (child === node) { + break; + } + if (child.kind !== 23) { + argumentIndex++; + } + } + return argumentIndex; + } + function getArgumentCount(argumentsList) { + var listChildren = argumentsList.getChildren(); + var argumentCount = ts.countWhere(listChildren, function (arg) { return arg.kind !== 23; }); + if (listChildren.length > 0 && ts.lastOrUndefined(listChildren).kind === 23) { + argumentCount++; + } + return argumentCount; } function getArgumentIndexForTemplatePiece(spanIndex, node) { ts.Debug.assert(position >= node.getStart(), "Assumed 'position' could not occur before node."); @@ -22530,7 +26200,10 @@ var ts; return spanIndex + 1; } function getArgumentListInfoForTemplate(tagExpression, argumentIndex) { - var argumentCount = tagExpression.template.kind === 10 ? 1 : tagExpression.template.templateSpans.length + 1; + var argumentCount = tagExpression.template.kind === 10 + ? 1 + : tagExpression.template.templateSpans.length + 1; + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { kind: 2, invocation: tagExpression, @@ -22548,7 +26221,7 @@ var ts; var template = taggedTemplate.template; var applicableSpanStart = template.getStart(); var applicableSpanEnd = template.getEnd(); - if (template.kind === 167) { + if (template.kind === 171) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, false); @@ -22557,16 +26230,16 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 210; n = n.parent) { + for (var n = node; n.kind !== 227; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } if (n.pos < n.parent.pos || n.end > n.parent.end) { ts.Debug.fail("Node of kind " + n.kind + " is not a subspan of its parent of kind " + n.parent.kind); } - var argumentInfo = getImmediatelyContainingArgumentInfo(n); - if (argumentInfo) { - return argumentInfo; + var argumentInfo_1 = getImmediatelyContainingArgumentInfo(n); + if (argumentInfo_1) { + return argumentInfo_1; } } return undefined; @@ -22645,6 +26318,7 @@ var ts; if (selectedItemIndex < 0) { selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); } + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { items: items, applicableSpan: applicableSpan, @@ -22728,6 +26402,129 @@ var ts; return start < end; } ts.startEndOverlapsWithStartEnd = startEndOverlapsWithStartEnd; + function positionBelongsToNode(candidate, position, sourceFile) { + return candidate.end > position || !isCompletedNode(candidate, sourceFile); + } + ts.positionBelongsToNode = positionBelongsToNode; + function isCompletedNode(n, sourceFile) { + if (ts.nodeIsMissing(n)) { + return false; + } + switch (n.kind) { + case 201: + case 202: + case 204: + case 154: + case 150: + case 145: + case 179: + case 206: + case 207: + return nodeEndsWith(n, 15, sourceFile); + case 223: + return isCompletedNode(n.block, sourceFile); + case 158: + if (!n.arguments) { + return true; + } + case 157: + case 161: + case 149: + return nodeEndsWith(n, 17, sourceFile); + case 142: + case 143: + return isCompletedNode(n.type, sourceFile); + case 135: + case 136: + case 137: + case 200: + case 162: + case 134: + case 133: + case 139: + case 138: + case 163: + if (n.body) { + return isCompletedNode(n.body, sourceFile); + } + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 17, sourceFile); + case 205: + return n.body && isCompletedNode(n.body, sourceFile); + case 183: + if (n.elseStatement) { + return isCompletedNode(n.elseStatement, sourceFile); + } + return isCompletedNode(n.thenStatement, sourceFile); + case 182: + return isCompletedNode(n.expression, sourceFile); + case 153: + case 151: + case 156: + case 127: + case 147: + return nodeEndsWith(n, 19, sourceFile); + case 140: + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 19, sourceFile); + case 220: + case 221: + return false; + case 186: + case 187: + case 188: + case 185: + return isCompletedNode(n.statement, sourceFile); + case 184: + var hasWhileKeyword = findChildOfKind(n, 100, sourceFile); + if (hasWhileKeyword) { + return nodeEndsWith(n, 17, sourceFile); + } + return isCompletedNode(n.statement, sourceFile); + case 144: + return isCompletedNode(n.exprName, sourceFile); + case 165: + case 164: + case 166: + case 172: + case 173: + var unaryWordExpression = n; + return isCompletedNode(unaryWordExpression.expression, sourceFile); + case 159: + return isCompletedNode(n.template, sourceFile); + case 171: + var lastSpan = ts.lastOrUndefined(n.templateSpans); + return isCompletedNode(lastSpan, sourceFile); + case 176: + return ts.nodeIsPresent(n.literal); + case 167: + return isCompletedNode(n.operand, sourceFile); + case 169: + return isCompletedNode(n.right, sourceFile); + case 170: + return isCompletedNode(n.whenFalse, sourceFile); + default: + return true; + } + } + ts.isCompletedNode = isCompletedNode; + function nodeEndsWith(n, expectedLastToken, sourceFile) { + var children = n.getChildren(sourceFile); + if (children.length) { + var last = children[children.length - 1]; + if (last.kind === expectedLastToken) { + return true; + } + else if (last.kind === 22 && children.length !== 1) { + return children[children.length - 2].kind === expectedLastToken; + } + } + return false; + } function findListItemInfo(node) { var list = findContainingList(node); if (!list) { @@ -22741,16 +26538,21 @@ var ts; }; } ts.findListItemInfo = findListItemInfo; + function hasChildOfKind(n, kind, sourceFile) { + return !!findChildOfKind(n, kind, sourceFile); + } + ts.hasChildOfKind = hasChildOfKind; function findChildOfKind(n, kind, sourceFile) { return ts.forEach(n.getChildren(sourceFile), function (c) { return c.kind === kind && c; }); } ts.findChildOfKind = findChildOfKind; function findContainingList(node) { var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { - if (c.kind === 211 && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 228 && c.pos <= node.pos && c.end >= node.end) { return c; } }); + ts.Debug.assert(!syntaxList || ts.contains(syntaxList.getChildren(), node)); return syntaxList; } ts.findContainingList = findContainingList; @@ -22811,10 +26613,10 @@ var ts; return n; } var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { - var child = children[i]; + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; var shouldDiveInChildNode = (child.pos <= previousToken.pos && child.end > previousToken.end) || - (child.pos === previousToken.end); + (child.pos === previousToken.end); if (shouldDiveInChildNode && nodeHasTokens(child)) { return find(child); } @@ -22838,7 +26640,7 @@ var ts; return n; } var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { + for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; if (nodeHasTokens(child)) { if (position <= child.end) { @@ -22852,7 +26654,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 210); + ts.Debug.assert(startNode !== undefined || n.kind === 227); if (children.length) { var candidate = findRightmostChildNodeWithTokens(children, children.length); return candidate && findRightmostToken(candidate); @@ -22889,22 +26691,23 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 137 || node.kind === 153) { + if (node.kind === 141 || node.kind === 157) { return node.typeArguments; } - if (ts.isAnyFunction(node) || node.kind === 194 || node.kind === 195) { + if (ts.isFunctionLike(node) || node.kind === 201 || node.kind === 202) { return node.typeParameters; } return undefined; } ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; function isToken(n) { - return n.kind >= 0 && n.kind <= 122; + return n.kind >= 0 && n.kind <= 125; } ts.isToken = isToken; function isWord(kind) { - return kind === 64 || ts.isKeyword(kind); + return kind === 65 || ts.isKeyword(kind); } + ts.isWord = isWord; function isPropertyName(kind) { return kind === 8 || kind === 7 || isWord(kind); } @@ -22913,13 +26716,24 @@ var ts; } ts.isComment = isComment; function isPunctuation(kind) { - return 14 <= kind && kind <= 63; + return 14 <= kind && kind <= 64; } ts.isPunctuation = isPunctuation; function isInsideTemplateLiteral(node, position) { - return ts.isTemplateLiteralKind(node.kind) && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); + return ts.isTemplateLiteralKind(node.kind) + && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); } ts.isInsideTemplateLiteral = isInsideTemplateLiteral; + function isAccessibilityModifier(kind) { + switch (kind) { + case 109: + case 107: + case 108: + return true; + } + return false; + } + ts.isAccessibilityModifier = isAccessibilityModifier; function compareDataObjects(dst, src) { for (var e in dst) { if (typeof dst[e] === "object") { @@ -22940,7 +26754,7 @@ var ts; var ts; (function (ts) { function isFirstDeclarationOfSymbolParameter(symbol) { - return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 126; + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 129; } ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; var displayPartWriter = getDisplayPartWriter(); @@ -22951,12 +26765,12 @@ var ts; resetWriter(); return { displayParts: function () { return displayParts; }, - writeKeyword: function (text) { return writeKind(text, 5); }, - writeOperator: function (text) { return writeKind(text, 12); }, - writePunctuation: function (text) { return writeKind(text, 15); }, - writeSpace: function (text) { return writeKind(text, 16); }, - writeStringLiteral: function (text) { return writeKind(text, 8); }, - writeParameter: function (text) { return writeKind(text, 13); }, + writeKeyword: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.keyword); }, + writeOperator: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.operator); }, + writePunctuation: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.punctuation); }, + writeSpace: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.space); }, + writeStringLiteral: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.stringLiteral); }, + writeParameter: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.parameterName); }, writeSymbol: writeSymbol, writeLine: writeLine, increaseIndent: function () { indent++; }, @@ -22968,7 +26782,7 @@ var ts; if (lineStart) { var indentString = ts.getIndentString(indent); if (indentString) { - displayParts.push(displayPart(indentString, 16)); + displayParts.push(displayPart(indentString, ts.SymbolDisplayPartKind.space)); } lineStart = false; } @@ -22996,48 +26810,48 @@ var ts; function displayPartKind(symbol) { var flags = symbol.flags; if (flags & 3) { - return isFirstDeclarationOfSymbolParameter(symbol) ? 13 : 9; + return isFirstDeclarationOfSymbolParameter(symbol) ? ts.SymbolDisplayPartKind.parameterName : ts.SymbolDisplayPartKind.localName; } else if (flags & 4) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 32768) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 65536) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 8) { - return 19; + return ts.SymbolDisplayPartKind.enumMemberName; } else if (flags & 16) { - return 20; + return ts.SymbolDisplayPartKind.functionName; } else if (flags & 32) { - return 1; + return ts.SymbolDisplayPartKind.className; } else if (flags & 64) { - return 4; + return ts.SymbolDisplayPartKind.interfaceName; } else if (flags & 384) { - return 2; + return ts.SymbolDisplayPartKind.enumName; } else if (flags & 1536) { - return 11; + return ts.SymbolDisplayPartKind.moduleName; } else if (flags & 8192) { - return 10; + return ts.SymbolDisplayPartKind.methodName; } else if (flags & 262144) { - return 18; + return ts.SymbolDisplayPartKind.typeParameterName; } else if (flags & 524288) { - return 0; + return ts.SymbolDisplayPartKind.aliasName; } else if (flags & 8388608) { - return 0; + return ts.SymbolDisplayPartKind.aliasName; } - return 17; + return ts.SymbolDisplayPartKind.text; } } ts.symbolPart = symbolPart; @@ -23049,27 +26863,34 @@ var ts; } ts.displayPart = displayPart; function spacePart() { - return displayPart(" ", 16); + return displayPart(" ", ts.SymbolDisplayPartKind.space); } ts.spacePart = spacePart; function keywordPart(kind) { - return displayPart(ts.tokenToString(kind), 5); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.keyword); } ts.keywordPart = keywordPart; function punctuationPart(kind) { - return displayPart(ts.tokenToString(kind), 15); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.punctuation); } ts.punctuationPart = punctuationPart; function operatorPart(kind) { - return displayPart(ts.tokenToString(kind), 12); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.operator); } ts.operatorPart = operatorPart; + function textOrKeywordPart(text) { + var kind = ts.stringToToken(text); + return kind === undefined + ? textPart(text) + : keywordPart(kind); + } + ts.textOrKeywordPart = textOrKeywordPart; function textPart(text) { - return displayPart(text, 17); + return displayPart(text, ts.SymbolDisplayPartKind.text); } ts.textPart = textPart; function lineBreakPart() { - return displayPart("\n", 6); + return displayPart("\n", ts.SymbolDisplayPartKind.lineBreak); } ts.lineBreakPart = lineBreakPart; function mapToDisplayParts(writeDisplayParts) { @@ -23098,6 +26919,8 @@ var ts; } ts.signatureToDisplayParts = signatureToDisplayParts; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { var formatting; @@ -23149,21 +26972,21 @@ var ts; var t; var pos = scanner.getStartPos(); while (pos < endPos) { - var t = scanner.getToken(); - if (!ts.isTrivia(t)) { + var t_2 = scanner.getToken(); + if (!ts.isTrivia(t_2)) { break; } scanner.scan(); - var item = { + var item_4 = { pos: pos, end: scanner.getStartPos(), - kind: t + kind: t_2 }; pos = scanner.getStartPos(); if (!leadingTrivia) { leadingTrivia = []; } - leadingTrivia.push(item); + leadingTrivia.push(item_4); } savedPos = scanner.getStartPos(); } @@ -23171,8 +26994,8 @@ var ts; if (node) { switch (node.kind) { case 27: - case 59: case 60: + case 61: case 42: case 41: return true; @@ -23188,7 +27011,7 @@ var ts; container.kind === 13; } function startsWithSlashToken(t) { - return t === 36 || t === 56; + return t === 36 || t === 57; } function readTokenInfo(n) { if (!isOnToken()) { @@ -23198,7 +27021,13 @@ var ts; token: undefined }; } - var expectedScanAction = shouldRescanGreaterThanToken(n) ? 1 : shouldRescanSlashToken(n) ? 2 : shouldRescanTemplateToken(n) ? 3 : 0; + var expectedScanAction = shouldRescanGreaterThanToken(n) + ? 1 + : shouldRescanSlashToken(n) + ? 2 + : shouldRescanTemplateToken(n) + ? 3 + : 0; if (lastTokenInfo && expectedScanAction === lastScanAction) { return fixTokenKind(lastTokenInfo, n); } @@ -23274,6 +27103,21 @@ var ts; formatting.getFormattingScanner = getFormattingScanner; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23352,6 +27196,21 @@ var ts; formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23366,6 +27225,21 @@ var ts; var FormattingRequestKind = formatting.FormattingRequestKind; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23387,6 +27261,21 @@ var ts; formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23400,6 +27289,21 @@ var ts; var RuleAction = formatting.RuleAction; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23430,6 +27334,21 @@ var ts; formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23441,6 +27360,21 @@ var ts; var RuleFlags = formatting.RuleFlags; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23468,6 +27402,21 @@ var ts; formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23487,8 +27436,9 @@ var ts; if (this.IsAny()) { return true; } - for (var i = 0, len = this.customContextChecks.length; i < len; i++) { - if (!this.customContextChecks[i](context)) { + for (var _i = 0, _a = this.customContextChecks; _i < _a.length; _i++) { + var check = _a[_i]; + if (!check(context)) { return false; } } @@ -23500,23 +27450,42 @@ var ts; formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; (function (formatting) { var Rules = (function () { function Rules() { + /// + /// Common Rules + /// this.IgnoreBeforeComment = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.Comments), formatting.RuleOperation.create1(1)); this.IgnoreAfterLineComment = new formatting.Rule(formatting.RuleDescriptor.create3(2, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create1(1)); this.NoSpaceBeforeSemicolon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeColon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 51), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); - this.NoSpaceBeforeQMark = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 50), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.NoSpaceBeforeQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 50), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); this.SpaceAfterColon = new formatting.Rule(formatting.RuleDescriptor.create3(51, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 2)); - this.SpaceAfterQMark = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 2)); + this.SpaceAfterQuestionMarkInConditionalOperator = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsConditionalOperatorContext), 2)); + this.NoSpaceAfterQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceAfterSemicolon = new formatting.Rule(formatting.RuleDescriptor.create3(22, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsAfterCodeBlockContext), 2)); - this.SpaceBetweenCloseBraceAndElse = new formatting.Rule(formatting.RuleDescriptor.create1(15, 75), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceBetweenCloseBraceAndWhile = new formatting.Rule(formatting.RuleDescriptor.create1(15, 99), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBetweenCloseBraceAndElse = new formatting.Rule(formatting.RuleDescriptor.create1(15, 76), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBetweenCloseBraceAndWhile = new formatting.Rule(formatting.RuleDescriptor.create1(15, 100), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.NoSpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.FromTokens([17, 19, 23, 22])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeDot = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterDot = new formatting.Rule(formatting.RuleDescriptor.create3(20, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); @@ -23525,10 +27494,10 @@ var ts; this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 19), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; - this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); - this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([64, 3]); + this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([65, 3]); this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); - this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([17, 3, 74, 95, 80, 75]); + this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([17, 3, 75, 96, 81, 76]); this.SpaceBeforeOpenBraceInControl = new formatting.Rule(formatting.RuleDescriptor.create2(this.ControlOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); this.SpaceAfterOpenBrace = new formatting.Rule(formatting.RuleDescriptor.create3(14, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); this.SpaceBeforeCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); @@ -23547,24 +27516,25 @@ var ts; this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(34, 34), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34, 39), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([97, 93, 87, 73, 89, 96]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98, 94, 88, 74, 90, 97]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105, 70]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2)); this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8)); - this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(82, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8)); - this.SpaceAfterVoidOperator = new formatting.Rule(formatting.RuleDescriptor.create3(98, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsVoidOpContext), 2)); - this.NoSpaceBetweenReturnAndSemicolon = new formatting.Rule(formatting.RuleDescriptor.create1(89, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceBetweenStatements = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([17, 74, 75, 66]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotForContext), 2)); - this.SpaceAfterTryFinally = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([95, 80]), 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceAfterGetSetInMember = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([114, 118]), 64), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.SpaceAfterVoidOperator = new formatting.Rule(formatting.RuleDescriptor.create3(99, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsVoidOpContext), 2)); + this.NoSpaceBetweenReturnAndSemicolon = new formatting.Rule(formatting.RuleDescriptor.create1(90, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceBetweenStatements = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([17, 75, 76, 67]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotForContext), 2)); + this.SpaceAfterTryFinally = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([96, 81]), 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterGetSetInMember = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([116, 120]), 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); this.SpaceBeforeBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryKeywordOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryKeywordOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); - this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(112, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([115, 116]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([68, 113, 76, 77, 78, 114, 101, 84, 102, 115, 105, 107, 118, 108]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([78, 101])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(114, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117, 118]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69, 115, 77, 78, 79, 116, 103, 85, 104, 117, 107, 109, 120, 110]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79, 103])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(32, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 64), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOptionalParameters = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.FromTokens([17, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); this.NoSpaceBeforeOpenAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.TypeNames, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); this.NoSpaceBetweenCloseParenAndAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create1(17, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); @@ -23573,50 +27543,52 @@ var ts; this.NoSpaceAfterCloseAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create3(25, formatting.Shared.TokenRange.FromTokens([16, 18, 25, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); this.NoSpaceBetweenEmptyInterfaceBraceBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(14, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsObjectTypeContext), 8)); this.HighPriorityCommonRules = - [ - this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQMark, this.SpaceAfterQMark, - this.NoSpaceBeforeDot, this.NoSpaceAfterDot, - this.NoSpaceAfterUnaryPrefixOperator, - this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, - this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, - this.SpaceAfterPostincrementWhenFollowedByAdd, - this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, - this.SpaceAfterPostdecrementWhenFollowedBySubtract, - this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, - this.NoSpaceAfterCloseBrace, - this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, - this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, - this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, - this.NoSpaceBetweenReturnAndSemicolon, - this.SpaceAfterCertainKeywords, - this.NoSpaceBeforeOpenParenInFuncCall, - this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, - this.SpaceAfterVoidOperator, - this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, - this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, - this.SpaceAfterModuleName, - this.SpaceAfterArrow, - this.NoSpaceAfterEllipsis, - this.NoSpaceAfterOptionalParameters, - this.NoSpaceBetweenEmptyInterfaceBraceBrackets, - this.NoSpaceBeforeOpenAngularBracket, - this.NoSpaceBetweenCloseParenAndAngularBracket, - this.NoSpaceAfterOpenAngularBracket, - this.NoSpaceBeforeCloseAngularBracket, - this.NoSpaceAfterCloseAngularBracket - ]; + [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket + ]; this.LowPriorityCommonRules = - [ - this.NoSpaceBeforeSemicolon, - this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, - this.NoSpaceBeforeComma, - this.NoSpaceBeforeOpenBracket, this.NoSpaceAfterOpenBracket, - this.NoSpaceBeforeCloseBracket, this.NoSpaceAfterCloseBracket, - this.SpaceAfterSemicolon, - this.NoSpaceBeforeOpenParenInFuncDecl, - this.SpaceBetweenStatements, this.SpaceAfterTryFinally - ]; + [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, this.NoSpaceAfterOpenBracket, + this.NoSpaceBeforeCloseBracket, this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); @@ -23635,47 +27607,68 @@ var ts; this.NoSpaceBetweenParens = new formatting.Rule(formatting.RuleDescriptor.create1(16, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOpenParen = new formatting.Rule(formatting.RuleDescriptor.create3(16, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeCloseParen = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(82, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); - this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(82, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); + this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name in o) { - if (o[name] === rule) { - return name; + for (var name_19 in o) { + if (o[name_19] === rule) { + return name_19; } } throw new Error("Unknown rule"); }; Rules.IsForContext = function (context) { - return context.contextNode.kind === 179; + return context.contextNode.kind === 186; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 165: - case 166: + case 169: + case 170: return true; - case 200: - case 191: - case 126: - case 209: - case 128: - case 127: - return context.currentTokenSpan.kind === 52 || context.nextTokenSpan.kind === 52; - case 180: - return context.currentTokenSpan.kind === 85 || context.nextTokenSpan.kind === 85; - case 181: - return context.currentTokenSpan.kind === 122 || context.nextTokenSpan.kind === 122; + case 208: + case 198: + case 129: + case 226: + case 132: + case 131: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; + case 187: + return context.currentTokenSpan.kind === 86 || context.nextTokenSpan.kind === 86; + case 188: + return context.currentTokenSpan.kind === 125 || context.nextTokenSpan.kind === 125; + case 152: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; } return false; }; Rules.IsNotBinaryOpContext = function (context) { return !Rules.IsBinaryOpContext(context); }; + Rules.IsConditionalOperatorContext = function (context) { + return context.contextNode.kind === 170; + }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { + //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. + //// + //// Ex: + //// if (1) { .... + //// * ) and { are on the same line so apply the rule. Here we don't care whether it's same or multi block context + //// + //// Ex: + //// if (1) + //// { ... } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we don't format. + //// + //// Ex: + //// if (1) + //// { ... + //// } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we format. return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); }; Rules.IsBeforeMultilineBlockContext = function (context) { @@ -23698,26 +27691,26 @@ var ts; return true; } switch (node.kind) { - case 172: - case 186: - case 150: - case 199: + case 179: + case 207: + case 154: + case 206: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 193: - case 130: - case 129: - case 132: - case 133: + case 200: case 134: - case 158: - case 131: - case 159: - case 195: + case 133: + case 136: + case 137: + case 138: + case 162: + case 135: + case 163: + case 202: return true; } return false; @@ -23727,53 +27720,53 @@ var ts; }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 194: - case 195: - case 197: - case 141: - case 198: + case 201: + case 202: + case 204: + case 145: + case 205: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 194: - case 198: - case 197: - case 172: + case 201: + case 205: + case 204: + case 179: + case 223: case 206: - case 199: - case 186: + case 193: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 176: + case 183: + case 193: case 186: - case 179: - case 180: - case 181: - case 178: - case 189: - case 177: + case 187: + case 188: case 185: - case 206: + case 196: + case 184: + case 192: + case 223: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 150; + return context.contextNode.kind === 154; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 153; + return context.contextNode.kind === 157; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 154; + return context.contextNode.kind === 158; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -23784,32 +27777,36 @@ var ts; Rules.IsSameLineTokenContext = function (context) { return context.TokensAreOnSameLine(); }; + Rules.IsStartOfVariableDeclarationList = function (context) { + return context.currentTokenParent.kind === 199 && + context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; + }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind != 2; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 198; + return context.contextNode.kind === 205; }; Rules.IsObjectTypeContext = function (context) { - return context.contextNode.kind === 141; + return context.contextNode.kind === 145; }; Rules.IsTypeArgumentOrParameter = function (token, parent) { if (token.kind !== 24 && token.kind !== 25) { return false; } switch (parent.kind) { - case 137: - case 194: - case 195: - case 193: - case 158: - case 159: - case 130: - case 129: + case 141: + case 201: + case 202: + case 200: + case 162: + case 163: case 134: - case 135: - case 153: - case 154: + case 133: + case 138: + case 139: + case 157: + case 158: return true; default: return false; @@ -23820,13 +27817,28 @@ var ts; Rules.IsTypeArgumentOrParameter(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 98 && context.currentTokenParent.kind === 162; + return context.currentTokenSpan.kind === 99 && context.currentTokenParent.kind === 166; }; return Rules; })(); formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23842,7 +27854,7 @@ var ts; return result; }; RulesMap.prototype.Initialize = function (rules) { - this.mapRowLength = 122 + 1; + this.mapRowLength = 125 + 1; this.map = new Array(this.mapRowLength * this.mapRowLength); var rulesBucketConstructionStateList = new Array(this.map.length); this.FillRules(rules, rulesBucketConstructionStateList); @@ -23877,10 +27889,11 @@ var ts; var bucketIndex = this.GetRuleBucketIndex(context.currentTokenSpan.kind, context.nextTokenSpan.kind); var bucket = this.map[bucketIndex]; if (bucket != null) { - for (var i = 0, len = bucket.Rules().length; i < len; i++) { - var rule = bucket.Rules()[i]; - if (rule.Operation.Context.InContext(context)) + for (var _i = 0, _a = bucket.Rules(); _i < _a.length; _i++) { + var rule = _a[_i]; + if (rule.Operation.Context.InContext(context)) { return rule; + } } } return null; @@ -23935,13 +27948,19 @@ var ts; RulesBucket.prototype.AddRule = function (rule, specificTokens, constructionState, rulesBucketIndex) { var position; if (rule.Operation.Action == 1) { - position = specificTokens ? 0 : RulesPosition.IgnoreRulesAny; + position = specificTokens ? + RulesPosition.IgnoreRulesSpecific : + RulesPosition.IgnoreRulesAny; } else if (!rule.Operation.Context.IsAny()) { - position = specificTokens ? RulesPosition.ContextRulesSpecific : RulesPosition.ContextRulesAny; + position = specificTokens ? + RulesPosition.ContextRulesSpecific : + RulesPosition.ContextRulesAny; } else { - position = specificTokens ? RulesPosition.NoContextRulesSpecific : RulesPosition.NoContextRulesAny; + position = specificTokens ? + RulesPosition.NoContextRulesSpecific : + RulesPosition.NoContextRulesAny; } var state = constructionState[rulesBucketIndex]; if (state === undefined) { @@ -23956,6 +27975,21 @@ var ts; formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -24011,7 +28045,7 @@ var ts; } TokenAllAccess.prototype.GetTokens = function () { var result = []; - for (var token = 0; token <= 122; token++) { + for (var token = 0; token <= 125; token++) { result.push(token); } return result; @@ -24053,23 +28087,64 @@ var ts; }; TokenRange.Any = TokenRange.AllTokens(); TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3])); - TokenRange.Keywords = TokenRange.FromRange(65, 122); - TokenRange.BinaryOperators = TokenRange.FromRange(24, 63); - TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([85, 86, 122]); + TokenRange.Keywords = TokenRange.FromRange(66, 125); + TokenRange.BinaryOperators = TokenRange.FromRange(24, 64); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([86, 87, 125]); TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([38, 39, 47, 46]); - TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([7, 64, 16, 18, 14, 92, 87]); - TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([64, 16, 92, 87]); - TokenRange.UnaryPostincrementExpressions = TokenRange.FromTokens([64, 17, 19, 87]); - TokenRange.UnaryPredecrementExpressions = TokenRange.FromTokens([64, 16, 92, 87]); - TokenRange.UnaryPostdecrementExpressions = TokenRange.FromTokens([64, 17, 19, 87]); + TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([7, 65, 16, 18, 14, 93, 88]); + TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostincrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); + TokenRange.UnaryPredecrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostdecrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); TokenRange.Comments = TokenRange.FromTokens([2, 3]); - TokenRange.TypeNames = TokenRange.FromTokens([64, 117, 119, 111, 120, 98, 110]); + TokenRange.TypeNames = TokenRange.FromTokens([65, 119, 121, 113, 122, 99, 112]); return TokenRange; })(); Shared.TokenRange = TokenRange; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -24155,6 +28230,10 @@ var ts; formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// +/// +/// +/// var ts; (function (ts) { var formatting; @@ -24228,17 +28307,17 @@ var ts; } function isListElement(parent, node) { switch (parent.kind) { - case 194: - case 195: + case 201: + case 202: return ts.rangeContainsRange(parent.members, node); - case 198: + case 205: var body = parent.body; - return body && body.kind === 172 && ts.rangeContainsRange(body.statements, node); - case 210: - case 172: - case 199: - return ts.rangeContainsRange(parent.statements, node); + return body && body.kind === 179 && ts.rangeContainsRange(body.statements, node); + case 227: + case 179: case 206: + return ts.rangeContainsRange(parent.statements, node); + case 223: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -24260,7 +28339,9 @@ var ts; if (!errors.length) { return rangeHasNoErrors; } - var sorted = errors.filter(function (d) { return ts.rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length); }).sort(function (e1, e2) { return e1.start - e2.start; }); + var sorted = errors + .filter(function (d) { return ts.rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length); }) + .sort(function (e1, e2) { return e1.start - e2.start; }); if (!sorted.length) { return rangeHasNoErrors; } @@ -24355,9 +28436,9 @@ var ts; if (indentation === -1) { if (isSomeBlock(node.kind)) { if (isSomeBlock(parent.kind) || - parent.kind === 210 || - parent.kind === 203 || - parent.kind === 204) { + parent.kind === 227 || + parent.kind === 220 || + parent.kind === 221) { indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); } else { @@ -24383,6 +28464,26 @@ var ts; delta: delta }; } + function getFirstNonDecoratorTokenOfNode(node) { + if (node.modifiers && node.modifiers.length) { + return node.modifiers[0].kind; + } + switch (node.kind) { + case 201: return 69; + case 202: return 104; + case 200: return 83; + case 204: return 204; + case 136: return 116; + case 137: return 120; + case 134: + if (node.asteriskToken) { + return 35; + } + case 132: + case 129: + return node.name.kind; + } + } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { getIndentationForComment: function (kind) { @@ -24394,13 +28495,19 @@ var ts; return indentation; }, getIndentationForToken: function (line, kind) { + if (nodeStartLine !== line && node.decorators) { + if (kind === getFirstNonDecoratorTokenOfNode(node)) { + return indentation; + } + } switch (kind) { case 14: case 15: case 18: case 19: - case 75: - case 99: + case 76: + case 100: + case 52: return indentation; default: return nodeStartLine !== line ? indentation + delta : indentation; @@ -24494,8 +28601,8 @@ var ts; } else if (tokenInfo.token.kind === listStartToken) { startLine = sourceFile.getLineAndCharacterOfPosition(tokenInfo.token.pos).line; - var indentation = computeIndentation(tokenInfo.token, startLine, -1, parent, parentDynamicIndentation, startLine); - listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation.indentation, indentation.delta); + var indentation_1 = computeIndentation(tokenInfo.token, startLine, -1, parent, parentDynamicIndentation, startLine); + listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation_1.indentation, indentation_1.delta); consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation); } else { @@ -24504,8 +28611,9 @@ var ts; } } var inheritedIndentation = -1; - for (var i = 0, len = nodes.length; i < len; ++i) { - inheritedIndentation = processChildNode(nodes[i], inheritedIndentation, node, listDynamicIndentation, startLine, true); + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, true); } if (listEndToken !== 0) { if (formattingScanner.isOnToken()) { @@ -24548,8 +28656,8 @@ var ts; if (indentToken) { var indentNextTokenOrTrivia = true; if (currentTokenInfo.leadingTrivia) { - for (var i = 0, len = currentTokenInfo.leadingTrivia.length; i < len; ++i) { - var triviaItem = currentTokenInfo.leadingTrivia[i]; + for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { + var triviaItem = _a[_i]; if (!ts.rangeContainsRange(originalRange, triviaItem)) { continue; } @@ -24562,8 +28670,8 @@ var ts; break; case 2: if (indentNextTokenOrTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); - insertIndentation(triviaItem.pos, commentIndentation, false); + var commentIndentation_1 = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + insertIndentation(triviaItem.pos, commentIndentation_1, false); indentNextTokenOrTrivia = false; } break; @@ -24583,8 +28691,8 @@ var ts; } } function processTrivia(trivia, parent, contextNode, dynamicIndentation) { - for (var i = 0, len = trivia.length; i < len; ++i) { - var triviaItem = trivia[i]; + for (var _i = 0; _i < trivia.length; _i++) { + var triviaItem = trivia[_i]; if (ts.isComment(triviaItem.kind) && ts.rangeContainsRange(originalRange, triviaItem)) { var triviaItemStart = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos); processRange(triviaItem, triviaItemStart, parent, contextNode, dynamicIndentation); @@ -24630,8 +28738,8 @@ var ts; } } trimTrailingWhitespaces = - (rule.Operation.Action & (4 | 2)) && - rule.Flag !== 1; + (rule.Operation.Action & (4 | 2)) && + rule.Flag !== 1; } else { trimTrailingWhitespaces = true; @@ -24657,6 +28765,7 @@ var ts; function indentMultilineComment(commentRange, indentation, firstLineIsIndented) { var startLine = sourceFile.getLineAndCharacterOfPosition(commentRange.pos).line; var endLine = sourceFile.getLineAndCharacterOfPosition(commentRange.end).line; + var parts; if (startLine === endLine) { if (!firstLineIsIndented) { insertIndentation(commentRange.pos, indentation, false); @@ -24664,7 +28773,7 @@ var ts; return; } else { - var parts = []; + parts = []; var startPos = commentRange.pos; for (var line = startLine; line < endLine; ++line) { var endOfLine = ts.getEndLinePosition(line, sourceFile); @@ -24674,8 +28783,8 @@ var ts; parts.push({ pos: startPos, end: commentRange.end }); } var startLinePos = ts.getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumnInFirstPart = formatting.SmartIndenter.findFirstNonWhitespaceColumn(startLinePos, parts[0].pos, sourceFile, options); - if (indentation === nonWhitespaceColumnInFirstPart) { + var nonWhitespaceColumnInFirstPart = formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(startLinePos, parts[0].pos, sourceFile, options); + if (indentation === nonWhitespaceColumnInFirstPart.column) { return; } var startIndex = 0; @@ -24683,17 +28792,19 @@ var ts; startIndex = 1; startLine++; } - var delta = indentation - nonWhitespaceColumnInFirstPart; + var delta = indentation - nonWhitespaceColumnInFirstPart.column; for (var i = startIndex, len = parts.length; i < len; ++i, ++startLine) { - var startLinePos = ts.getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumn = i === 0 ? nonWhitespaceColumnInFirstPart : formatting.SmartIndenter.findFirstNonWhitespaceColumn(parts[i].pos, parts[i].end, sourceFile, options); - var newIndentation = nonWhitespaceColumn + delta; + var startLinePos_1 = ts.getStartPositionOfLine(startLine, sourceFile); + var nonWhitespaceCharacterAndColumn = i === 0 + ? nonWhitespaceColumnInFirstPart + : formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(parts[i].pos, parts[i].end, sourceFile, options); + var newIndentation = nonWhitespaceCharacterAndColumn.column + delta; if (newIndentation > 0) { var indentationString = getIndentationString(newIndentation, options); - recordReplace(startLinePos, nonWhitespaceColumn, indentationString); + recordReplace(startLinePos_1, nonWhitespaceCharacterAndColumn.character, indentationString); } else { - recordDelete(startLinePos, nonWhitespaceColumn); + recordDelete(startLinePos_1, nonWhitespaceCharacterAndColumn.character); } } } @@ -24760,20 +28871,20 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 172: - case 199: + case 179: + case 206: return true; } return false; } function getOpenTokenForList(node, list) { switch (node.kind) { - case 131: - case 193: - case 158: - case 130: - case 129: - case 159: + case 135: + case 200: + case 162: + case 134: + case 133: + case 163: if (node.typeParameters === list) { return 24; } @@ -24781,8 +28892,8 @@ var ts; return 16; } break; - case 153: - case 154: + case 157: + case 158: if (node.typeArguments === list) { return 24; } @@ -24790,7 +28901,7 @@ var ts; return 16; } break; - case 137: + case 141: if (node.typeArguments === list) { return 24; } @@ -24806,9 +28917,15 @@ var ts; } return 0; } + var internedSizes; var internedTabsIndentation; var internedSpacesIndentation; function getIndentationString(indentation, options) { + var resetInternedStrings = !internedSizes || (internedSizes.tabSize !== options.TabSize || internedSizes.indentSize !== options.IndentSize); + if (resetInternedStrings) { + internedSizes = { tabSize: options.TabSize, indentSize: options.IndentSize }; + internedTabsIndentation = internedSpacesIndentation = undefined; + } if (!options.ConvertTabsToSpaces) { var tabs = Math.floor(indentation / options.TabSize); var spaces = indentation - tabs * options.TabSize; @@ -24851,12 +28968,17 @@ var ts; formatting.getIndentationString = getIndentationString; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { var formatting; (function (formatting) { var SmartIndenter; (function (SmartIndenter) { + var Value; + (function (Value) { + Value[Value["Unknown"] = -1] = "Unknown"; + })(Value || (Value = {})); function getIndentation(position, sourceFile, options) { if (position > sourceFile.text.length) { return 0; @@ -24866,16 +28988,16 @@ var ts; return 0; } var precedingTokenIsLiteral = precedingToken.kind === 8 || - precedingToken.kind === 9 || - precedingToken.kind === 10 || - precedingToken.kind === 11 || - precedingToken.kind === 12 || - precedingToken.kind === 13; + precedingToken.kind === 9 || + precedingToken.kind === 10 || + precedingToken.kind === 11 || + precedingToken.kind === 12 || + precedingToken.kind === 13; if (precedingTokenIsLiteral && precedingToken.getStart(sourceFile) <= position && precedingToken.end > position) { return 0; } var lineAtPosition = sourceFile.getLineAndCharacterOfPosition(position).line; - if (precedingToken.kind === 23 && precedingToken.parent.kind !== 165) { + if (precedingToken.kind === 23 && precedingToken.parent.kind !== 169) { var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1) { return actualIndentation; @@ -24886,7 +29008,7 @@ var ts; var currentStart; var indentationDelta; while (current) { - if (positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { indentationDelta = 0; @@ -24931,7 +29053,7 @@ var ts; } parentStart = getParentStart(parent, current, sourceFile); var parentAndChildShareLine = parentStart.line === currentStart.line || - childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); + childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); if (useActualIndentation) { var actualIndentation = getActualIndentationForNode(current, parent, currentStart, parentAndChildShareLine, sourceFile, options); if (actualIndentation !== -1) { @@ -24956,12 +29078,16 @@ var ts; } function getActualIndentationForListItemBeforeComma(commaToken, sourceFile, options) { var commaItemInfo = ts.findListItemInfo(commaToken); - ts.Debug.assert(commaItemInfo && commaItemInfo.listItemIndex > 0); - return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + if (commaItemInfo && commaItemInfo.listItemIndex > 0) { + return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + } + else { + return -1; + } } function getActualIndentationForNode(current, parent, currentLineAndChar, parentAndChildShareLine, sourceFile, options) { var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 210 || !parentAndChildShareLine); + (parent.kind === 227 || !parentAndChildShareLine); if (!useActualIndentation) { return -1; } @@ -24984,12 +29110,9 @@ var ts; function getStartLineAndCharacterForNode(n, sourceFile) { return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } - function positionBelongsToNode(candidate, position, sourceFile) { - return candidate.end > position || !isCompletedNode(candidate, sourceFile); - } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 176 && parent.elseStatement === child) { - var elseKeyword = ts.findChildOfKind(parent, 75, sourceFile); + if (parent.kind === 183 && parent.elseStatement === child) { + var elseKeyword = ts.findChildOfKind(parent, 76, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; return elseKeywordStartLine === childStartLine; @@ -25000,23 +29123,23 @@ var ts; function getContainingList(node, sourceFile) { if (node.parent) { switch (node.parent.kind) { - case 137: + case 141: if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { return node.parent.typeArguments; } break; - case 150: + case 154: return node.parent.properties; - case 149: + case 153: return node.parent.elements; - case 193: - case 158: - case 159: - case 130: - case 129: + case 200: + case 162: + case 163: case 134: - case 135: + case 133: + case 138: + case 139: { var start = node.getStart(sourceFile); if (node.parent.typeParameters && ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { @@ -25026,8 +29149,9 @@ var ts; return node.parent.parameters; } break; - case 154: - case 153: + } + case 158: + case 157: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -25038,6 +29162,7 @@ var ts; return node.parent.arguments; } break; + } } } return undefined; @@ -25070,12 +29195,13 @@ var ts; var lineStart = sourceFile.getPositionOfLineAndCharacter(lineAndCharacter.line, 0); return findFirstNonWhitespaceColumn(lineStart, lineStart + lineAndCharacter.character, sourceFile, options); } - function findFirstNonWhitespaceColumn(startPos, endPos, sourceFile, options) { + function findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options) { + var character = 0; var column = 0; for (var pos = startPos; pos < endPos; ++pos) { var ch = sourceFile.text.charCodeAt(pos); if (!ts.isWhiteSpace(ch)) { - return column; + break; } if (ch === 9) { column += options.TabSize + (column % options.TabSize); @@ -25083,31 +29209,39 @@ var ts; else { column++; } + character++; } - return column; + return { column: column, character: character }; + } + SmartIndenter.findFirstNonWhitespaceCharacterAndColumn = findFirstNonWhitespaceCharacterAndColumn; + function findFirstNonWhitespaceColumn(startPos, endPos, sourceFile, options) { + return findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options).column; } SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 194: - case 195: - case 197: - case 149: - case 172: - case 199: - case 150: - case 141: - case 186: - case 204: - case 203: - case 157: - case 153: - case 154: - case 173: - case 191: case 201: - case 184: - case 166: + case 202: + case 204: + case 153: + case 179: + case 206: + case 154: + case 145: + case 147: + case 207: + case 221: + case 220: + case 161: + case 157: + case 158: + case 180: + case 198: + case 214: + case 191: + case 170: + case 151: + case 150: return true; } return false; @@ -25117,100 +29251,46 @@ var ts; return true; } switch (parent) { - case 177: - case 178: - case 180: - case 181: - case 179: - case 176: - case 193: - case 158: - case 130: - case 129: - case 159: - case 131: - case 132: + case 184: + case 185: + case 187: + case 188: + case 186: + case 183: + case 200: + case 162: + case 134: case 133: - return child !== 172; + case 138: + case 163: + case 135: + case 136: + case 137: + return child !== 179; default: return false; } } SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; - function nodeEndsWith(n, expectedLastToken, sourceFile) { - var children = n.getChildren(sourceFile); - if (children.length) { - var last = children[children.length - 1]; - if (last.kind === expectedLastToken) { - return true; - } - else if (last.kind === 22 && children.length !== 1) { - return children[children.length - 2].kind === expectedLastToken; - } - } - return false; - } - function isCompletedNode(n, sourceFile) { - if (n.getFullWidth() === 0) { - return false; - } - switch (n.kind) { - case 194: - case 195: - case 197: - case 150: - case 172: - case 199: - case 186: - return nodeEndsWith(n, 15, sourceFile); - case 206: - return isCompletedNode(n.block, sourceFile); - case 157: - case 134: - case 153: - case 135: - return nodeEndsWith(n, 17, sourceFile); - case 193: - case 158: - case 130: - case 129: - case 159: - return !n.body || isCompletedNode(n.body, sourceFile); - case 198: - return n.body && isCompletedNode(n.body, sourceFile); - case 176: - if (n.elseStatement) { - return isCompletedNode(n.elseStatement, sourceFile); - } - return isCompletedNode(n.thenStatement, sourceFile); - case 175: - return isCompletedNode(n.expression, sourceFile); - case 149: - return nodeEndsWith(n, 19, sourceFile); - case 203: - case 204: - return false; - case 178: - return isCompletedNode(n.statement, sourceFile); - case 177: - var hasWhileKeyword = ts.findChildOfKind(n, 99, sourceFile); - if (hasWhileKeyword) { - return nodeEndsWith(n, 17, sourceFile); - } - return isCompletedNode(n.statement, sourceFile); - default: - return true; - } - } })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } __.prototype = b.prototype; d.prototype = new __(); }; +/// +/// +/// +/// +/// +/// +/// +/// +/// var ts; (function (ts) { ts.servicesVersion = "0.4"; @@ -25282,17 +29362,17 @@ var ts; while (pos < end) { var token = scanner.scan(); var textPos = scanner.getTextPos(); - nodes.push(createNode(token, pos, textPos, 512, this)); + nodes.push(createNode(token, pos, textPos, 1024, this)); pos = textPos; } return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(211, nodes.pos, nodes.end, 512, this); + var list = createNode(228, nodes.pos, nodes.end, 1024, this); list._children = []; var pos = nodes.pos; - for (var i = 0, len = nodes.length; i < len; i++) { - var node = nodes[i]; + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -25306,9 +29386,10 @@ var ts; }; NodeObject.prototype.createChildren = function (sourceFile) { var _this = this; - if (this.kind >= 123) { + var children; + if (this.kind >= 126) { scanner.setText((sourceFile || this.getSourceFile()).text); - var children = []; + children = []; var pos = this.pos; var processNode = function (node) { if (pos < node.pos) { @@ -25349,9 +29430,9 @@ var ts; }; NodeObject.prototype.getFirstToken = function (sourceFile) { var children = this.getChildren(); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (child.kind < 123) { + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; + if (child.kind < 126) { return child; } return child.getFirstToken(sourceFile); @@ -25361,7 +29442,7 @@ var ts; var children = this.getChildren(sourceFile); for (var i = children.length - 1; i >= 0; i--) { var child = children[i]; - if (child.kind < 123) { + if (child.kind < 126) { return child; } return child.getLastToken(sourceFile); @@ -25407,7 +29488,7 @@ var ts; ts.forEach(declarations, function (declaration, indexOfDeclaration) { if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { var sourceFileOfDeclaration = ts.getSourceFileOfNode(declaration); - if (canUseParsedParamTagComments && declaration.kind === 126) { + if (canUseParsedParamTagComments && declaration.kind === 129) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedParamJsDocComment) { @@ -25415,13 +29496,13 @@ var ts; } }); } - if (declaration.kind === 198 && declaration.body.kind === 198) { + if (declaration.kind === 205 && declaration.body.kind === 205) { return; } - while (declaration.kind === 198 && declaration.parent.kind === 198) { + while (declaration.kind === 205 && declaration.parent.kind === 205) { declaration = declaration.parent; } - ts.forEach(getJsDocCommentTextRange(declaration.kind === 191 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 198 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { jsDocCommentParts.push.apply(jsDocCommentParts, cleanedJsDocComment); @@ -25466,8 +29547,9 @@ var ts; return isName(pos, end, sourceFile, paramTag); } function pushDocCommentLineText(docComments, text, blankLineCount) { - while (blankLineCount--) + while (blankLineCount--) { docComments.push(ts.textPart("")); + } docComments.push(ts.textPart(text)); } function getCleanedJsDocComment(pos, end, sourceFile) { @@ -25705,12 +29787,14 @@ var ts; var namedDeclarations = []; ts.forEachChild(sourceFile, function visit(node) { switch (node.kind) { - case 193: - case 130: - case 129: + case 200: + case 134: + case 133: var functionDeclaration = node; if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { - var lastDeclaration = namedDeclarations.length > 0 ? namedDeclarations[namedDeclarations.length - 1] : undefined; + var lastDeclaration = namedDeclarations.length > 0 ? + namedDeclarations[namedDeclarations.length - 1] : + undefined; if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { if (functionDeclaration.body && !lastDeclaration.body) { namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; @@ -25722,46 +29806,72 @@ var ts; ts.forEachChild(node, visit); } break; - case 194: - case 195: - case 196: - case 197: - case 198: - case 200: - case 132: - case 133: - case 141: + case 201: + case 202: + case 203: + case 204: + case 205: + case 208: + case 217: + case 213: + case 208: + case 210: + case 211: + case 136: + case 137: + case 145: if (node.name) { namedDeclarations.push(node); } - case 131: - case 173: - case 192: - case 146: - case 147: + case 135: + case 180: case 199: + case 150: + case 151: + case 206: ts.forEachChild(node, visit); break; - case 172: + case 179: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } break; - case 126: + case 129: if (!(node.flags & 112)) { break; } - case 191: - case 148: + case 198: + case 152: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 209: - case 128: - case 127: + case 226: + case 132: + case 131: namedDeclarations.push(node); break; + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + namedDeclarations.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + namedDeclarations.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; } }); this.namedDeclarations = namedDeclarations; @@ -25908,14 +30018,14 @@ var ts; return false; } return ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 158) { + if (declaration.kind === 162) { return true; } - if (declaration.kind !== 191 && declaration.kind !== 193) { + if (declaration.kind !== 198 && declaration.kind !== 200) { return false; } - for (var parent = declaration.parent; !ts.isFunctionBlock(parent); parent = parent.parent) { - if (parent.kind === 210 || parent.kind === 199) { + for (var parent_7 = declaration.parent; !ts.isFunctionBlock(parent_7); parent_7 = parent_7.parent) { + if (parent_7.kind === 227 || parent_7.kind === 206) { return false; } } @@ -25956,8 +30066,9 @@ var ts; this.host = host; this.fileNameToEntry = {}; var rootFileNames = host.getScriptFileNames(); - for (var i = 0, n = rootFileNames.length; i < n; i++) { - this.createEntry(rootFileNames[i]); + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + this.createEntry(fileName); } this._compilationSettings = host.getCompilationSettings() || getDefaultCompilerOptions(); } @@ -26005,66 +30116,71 @@ var ts; var file = this.getEntry(fileName); return file && file.scriptSnapshot; }; - HostCache.prototype.getChangeRange = function (fileName, lastKnownVersion, oldScriptSnapshot) { - var currentVersion = this.getVersion(fileName); - if (lastKnownVersion === currentVersion) { - return ts.unchangedTextChangeRange; - } - var scriptSnapshot = this.getScriptSnapshot(fileName); - return scriptSnapshot.getChangeRange(oldScriptSnapshot); - }; return HostCache; })(); var SyntaxTreeCache = (function () { function SyntaxTreeCache(host) { this.host = host; - this.currentFileName = ""; - this.currentFileVersion = null; - this.currentSourceFile = null; } - SyntaxTreeCache.prototype.log = function (message) { - if (this.host.log) { - this.host.log(message); + SyntaxTreeCache.prototype.getCurrentSourceFile = function (fileName) { + var scriptSnapshot = this.host.getScriptSnapshot(fileName); + if (!scriptSnapshot) { + throw new Error("Could not find file: '" + fileName + "'."); } - }; - SyntaxTreeCache.prototype.initialize = function (fileName) { - var start = new Date().getTime(); - this.hostCache = new HostCache(this.host); - this.log("SyntaxTreeCache.Initialize: new HostCache: " + (new Date().getTime() - start)); - var version = this.hostCache.getVersion(fileName); + var version = this.host.getScriptVersion(fileName); var sourceFile; if (this.currentFileName !== fileName) { - var scriptSnapshot = this.hostCache.getScriptSnapshot(fileName); - var start = new Date().getTime(); sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2, version, true); - this.log("SyntaxTreeCache.Initialize: createSourceFile: " + (new Date().getTime() - start)); } else if (this.currentFileVersion !== version) { - var scriptSnapshot = this.hostCache.getScriptSnapshot(fileName); - var editRange = this.hostCache.getChangeRange(fileName, this.currentFileVersion, this.currentSourceFile.scriptSnapshot); - var start = new Date().getTime(); + var editRange = scriptSnapshot.getChangeRange(this.currentFileScriptSnapshot); sourceFile = updateLanguageServiceSourceFile(this.currentSourceFile, scriptSnapshot, version, editRange); - this.log("SyntaxTreeCache.Initialize: updateSourceFile: " + (new Date().getTime() - start)); } if (sourceFile) { this.currentFileVersion = version; this.currentFileName = fileName; + this.currentFileScriptSnapshot = scriptSnapshot; this.currentSourceFile = sourceFile; } - }; - SyntaxTreeCache.prototype.getCurrentSourceFile = function (fileName) { - this.initialize(fileName); return this.currentSourceFile; }; - SyntaxTreeCache.prototype.getCurrentScriptSnapshot = function (fileName) { - return this.getCurrentSourceFile(fileName).scriptSnapshot; - }; return SyntaxTreeCache; })(); function setSourceFileFields(sourceFile, scriptSnapshot, version) { sourceFile.version = version; sourceFile.scriptSnapshot = scriptSnapshot; } + function transpile(input, compilerOptions, fileName, diagnostics) { + var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions(); + options.separateCompilation = true; + options.allowNonTsExtensions = true; + var inputFileName = fileName || "module.ts"; + var sourceFile = ts.createSourceFile(inputFileName, input, options.target); + if (diagnostics && sourceFile.parseDiagnostics) { + diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics); + } + var outputText; + var compilerHost = { + getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + writeFile: function (name, text, writeByteOrderMark) { + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + outputText = text; + }, + getDefaultLibFileName: function () { return "lib.d.ts"; }, + useCaseSensitiveFileNames: function () { return false; }, + getCanonicalFileName: function (fileName) { return fileName; }, + getCurrentDirectory: function () { return ""; }, + getNewLine: function () { return "\r\n"; } + }; + var program = ts.createProgram([inputFileName], options, compilerHost); + if (diagnostics) { + diagnostics.push.apply(diagnostics, program.getGlobalDiagnostics()); + } + program.emit(); + ts.Debug.assert(outputText !== undefined, "Output generation failed"); + return outputText; + } + ts.transpile = transpile; function createLanguageServiceSourceFile(fileName, scriptSnapshot, scriptTarget, version, setNodeParents) { var sourceFile = ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), scriptTarget, setNodeParents); setSourceFileFields(sourceFile, scriptSnapshot, version); @@ -26108,7 +30224,7 @@ var ts; var entry = entries[i]; sourceFiles.push({ name: i, - refCount: entry.refCount, + refCount: entry.languageServiceRefCount, references: entry.owners.slice(0) }); } @@ -26121,34 +30237,40 @@ var ts; return JSON.stringify(bucketInfoArray, null, 2); } function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, true); + } + function updateDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, false); + } + function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) { var bucket = getBucketForCompilationSettings(compilationSettings, true); var entry = ts.lookUp(bucket, fileName); if (!entry) { + ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false); bucket[fileName] = entry = { sourceFile: sourceFile, - refCount: 0, + languageServiceRefCount: 0, owners: [] }; } - entry.refCount++; - return entry.sourceFile; - } - function updateDocument(sourceFile, fileName, compilationSettings, scriptSnapshot, version, textChangeRange) { - var bucket = getBucketForCompilationSettings(compilationSettings, false); - ts.Debug.assert(bucket !== undefined); - var entry = ts.lookUp(bucket, fileName); - ts.Debug.assert(entry !== undefined); - entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, textChangeRange); + else { + if (entry.sourceFile.version !== version) { + entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, scriptSnapshot.getChangeRange(entry.sourceFile.scriptSnapshot)); + } + } + if (acquiring) { + entry.languageServiceRefCount++; + } return entry.sourceFile; } function releaseDocument(fileName, compilationSettings) { var bucket = getBucketForCompilationSettings(compilationSettings, false); ts.Debug.assert(bucket !== undefined); var entry = ts.lookUp(bucket, fileName); - entry.refCount--; - ts.Debug.assert(entry.refCount >= 0); - if (entry.refCount === 0) { + entry.languageServiceRefCount--; + ts.Debug.assert(entry.languageServiceRefCount >= 0); + if (entry.languageServiceRefCount === 0) { delete bucket[fileName]; } } @@ -26179,31 +30301,111 @@ var ts; } }); } + function recordModuleName() { + var importPath = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + importedFiles.push({ + fileName: importPath, + pos: pos, + end: pos + importPath.length + }); + } function processImport() { scanner.setText(sourceText); var token = scanner.scan(); while (token !== 1) { - if (token === 84) { + if (token === 85) { token = scanner.scan(); - if (token === 64) { - token = scanner.scan(); - if (token === 52) { + if (token === 8) { + recordModuleName(); + continue; + } + else { + if (token === 65) { token = scanner.scan(); - if (token === 116) { + if (token === 124) { token = scanner.scan(); - if (token === 16) { + if (token === 8) { + recordModuleName(); + continue; + } + } + else if (token === 53) { + token = scanner.scan(); + if (token === 118) { token = scanner.scan(); - if (token === 8) { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + if (token === 16) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + continue; + } } } } + else if (token === 23) { + token = scanner.scan(); + } + else { + continue; + } + } + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 102) { + token = scanner.scan(); + if (token === 65) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + } + } + } + else if (token === 78) { + token = scanner.scan(); + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } } } } @@ -26220,7 +30422,7 @@ var ts; ts.preProcessFile = preProcessFile; function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 187 && referenceNode.label.text === labelName) { + if (referenceNode.kind === 194 && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -26228,17 +30430,17 @@ var ts; return undefined; } function isJumpStatementTarget(node) { - return node.kind === 64 && - (node.parent.kind === 183 || node.parent.kind === 182) && + return node.kind === 65 && + (node.parent.kind === 190 || node.parent.kind === 189) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { - return node.kind === 64 && - node.parent.kind === 187 && + return node.kind === 65 && + node.parent.kind === 194 && node.parent.label === node; } function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 187; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 194; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -26249,48 +30451,48 @@ var ts; return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } function isRightSideOfQualifiedName(node) { - return node.parent.kind === 123 && node.parent.right === node; + return node.parent.kind === 126 && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 151 && node.parent.name === node; + return node && node.parent && node.parent.kind === 155 && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 153 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 157 && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 154 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 158 && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 198 && node.parent.name === node; + return node.parent.kind === 205 && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { - return node.kind === 64 && - ts.isAnyFunction(node.parent) && node.parent.name === node; + return node.kind === 65 && + ts.isFunctionLike(node.parent) && node.parent.name === node; } function isNameOfPropertyAssignment(node) { - return (node.kind === 64 || node.kind === 8 || node.kind === 7) && - (node.parent.kind === 207 || node.parent.kind === 208) && node.parent.name === node; + return (node.kind === 65 || node.kind === 8 || node.kind === 7) && + (node.parent.kind === 224 || node.parent.kind === 225) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 8 || node.kind === 7) { switch (node.parent.kind) { - case 128: - case 127: - case 207: - case 209: - case 130: - case 129: case 132: + case 131: + case 224: + case 226: + case 134: case 133: - case 198: + case 136: + case 137: + case 205: return node.parent.name === node; - case 152: + case 156: return node.parent.argumentExpression === node; } } @@ -26299,7 +30501,7 @@ var ts; function isNameOfExternalModuleImportOrDeclaration(node) { if (node.kind === 8) { return isNameOfModuleDeclaration(node) || - (ts.isExternalModuleImportDeclaration(node.parent.parent) && ts.getExternalModuleImportDeclarationExpression(node.parent.parent) === node); + (ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node); } return false; } @@ -26343,7 +30545,7 @@ var ts; BreakContinueSearchType[BreakContinueSearchType["All"] = 3] = "All"; })(BreakContinueSearchType || (BreakContinueSearchType = {})); var keywordCompletions = []; - for (var i = 65; i <= 122; i++) { + for (var i = 66; i <= 125; i++) { keywordCompletions.push({ name: ts.tokenToString(i), kind: ScriptElementKind.keyword, @@ -26357,17 +30559,17 @@ var ts; return undefined; } switch (node.kind) { - case 210: - case 130: - case 129: - case 193: - case 158: - case 132: + case 227: + case 134: case 133: - case 194: - case 195: - case 197: - case 198: + case 200: + case 162: + case 136: + case 137: + case 201: + case 202: + case 204: + case 205: return node; } } @@ -26375,29 +30577,39 @@ var ts; ts.getContainerNode = getContainerNode; function getNodeKind(node) { switch (node.kind) { - case 198: return ScriptElementKind.moduleElement; - case 194: return ScriptElementKind.classElement; - case 195: return ScriptElementKind.interfaceElement; - case 196: return ScriptElementKind.typeElement; - case 197: return ScriptElementKind.enumElement; - case 191: - return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 193: return ScriptElementKind.functionElement; - case 132: return ScriptElementKind.memberGetAccessorElement; - case 133: return ScriptElementKind.memberSetAccessorElement; - case 130: - case 129: + case 205: return ScriptElementKind.moduleElement; + case 201: return ScriptElementKind.classElement; + case 202: return ScriptElementKind.interfaceElement; + case 203: return ScriptElementKind.typeElement; + case 204: return ScriptElementKind.enumElement; + case 198: + return ts.isConst(node) + ? ScriptElementKind.constElement + : ts.isLet(node) + ? ScriptElementKind.letElement + : ScriptElementKind.variableElement; + case 200: return ScriptElementKind.functionElement; + case 136: return ScriptElementKind.memberGetAccessorElement; + case 137: return ScriptElementKind.memberSetAccessorElement; + case 134: + case 133: return ScriptElementKind.memberFunctionElement; - case 128: - case 127: + case 132: + case 131: return ScriptElementKind.memberVariableElement; - case 136: return ScriptElementKind.indexSignatureElement; - case 135: return ScriptElementKind.constructSignatureElement; - case 134: return ScriptElementKind.callSignatureElement; - case 131: return ScriptElementKind.constructorImplementationElement; - case 125: return ScriptElementKind.typeParameterElement; - case 209: return ScriptElementKind.variableElement; - case 126: return (node.flags & 112) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 140: return ScriptElementKind.indexSignatureElement; + case 139: return ScriptElementKind.constructSignatureElement; + case 138: return ScriptElementKind.callSignatureElement; + case 135: return ScriptElementKind.constructorImplementationElement; + case 128: return ScriptElementKind.typeParameterElement; + case 226: return ScriptElementKind.variableElement; + case 129: return (node.flags & 112) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 208: + case 213: + case 210: + case 217: + case 211: + return ScriptElementKind.alias; } return ScriptElementKind.unknown; } @@ -26410,7 +30622,6 @@ var ts; var typeInfoResolver; var useCaseSensitivefileNames = false; var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); - var activeCompletionSession; if (!ts.localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) { ts.localizedDiagnosticMessages = host.getLocalizedDiagnosticMessages(); } @@ -26423,6 +30634,7 @@ var ts; return useCaseSensitivefileNames ? fileName : fileName.toLowerCase(); } function getValidSourceFile(fileName) { + fileName = ts.normalizeSlashes(fileName); var sourceFile = program.getSourceFile(getCanonicalFileName(fileName)); if (!sourceFile) { throw new Error("Could not find file: '" + fileName + "'."); @@ -26456,8 +30668,9 @@ var ts; }); if (program) { var oldSourceFiles = program.getSourceFiles(); - for (var i = 0, n = oldSourceFiles.length; i < n; i++) { - var fileName = oldSourceFiles[i].fileName; + for (var _i = 0; _i < oldSourceFiles.length; _i++) { + var oldSourceFile = oldSourceFiles[_i]; + var fileName = oldSourceFile.fileName; if (!newProgram.getSourceFile(fileName) || changesInCompilationSettingsAffectSyntax) { documentRegistry.releaseDocument(fileName, oldSettings); } @@ -26474,11 +30687,7 @@ var ts; if (!changesInCompilationSettingsAffectSyntax) { var oldSourceFile = program && program.getSourceFile(fileName); if (oldSourceFile) { - if (sourceFileUpToDate(oldSourceFile)) { - return oldSourceFile; - } - var textChangeRange = hostCache.getChangeRange(fileName, oldSourceFile.version, oldSourceFile.scriptSnapshot); - return documentRegistry.updateDocument(oldSourceFile, fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version, textChangeRange); + return documentRegistry.updateDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } } return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); @@ -26494,8 +30703,9 @@ var ts; if (program.getSourceFiles().length !== rootFileNames.length) { return false; } - for (var i = 0, n = rootFileNames.length; i < n; i++) { - if (!sourceFileUpToDate(program.getSourceFile(rootFileNames[i]))) { + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + if (!sourceFileUpToDate(program.getSourceFile(fileName))) { return false; } } @@ -26513,52 +30723,65 @@ var ts; } function dispose() { if (program) { - ts.forEach(program.getSourceFiles(), function (f) { documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); }); + ts.forEach(program.getSourceFiles(), function (f) { + return documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); + }); } } function getSyntacticDiagnostics(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); return program.getSyntacticDiagnostics(getValidSourceFile(fileName)); } function getSemanticDiagnostics(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var targetSourceFile = getValidSourceFile(fileName); var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile); if (!program.getCompilerOptions().declaration) { return semanticDiagnostics; } var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile); - return semanticDiagnostics.concat(declarationDiagnostics); + return ts.concatenate(semanticDiagnostics, declarationDiagnostics); } function getCompilerOptionsDiagnostics() { synchronizeHostData(); return program.getGlobalDiagnostics(); } - function getValidCompletionEntryDisplayName(symbol, target) { + function getCompletionEntryDisplayName(symbol, target, performCharacterChecks) { var displayName = symbol.getName(); - if (displayName && displayName.length > 0) { - var firstCharCode = displayName.charCodeAt(0); - if ((symbol.flags & 1536) && (firstCharCode === 39 || firstCharCode === 34)) { - return undefined; - } - if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && - (firstCharCode === 39 || firstCharCode === 34)) { - displayName = displayName.substring(1, displayName.length - 1); - } - var isValid = ts.isIdentifierStart(displayName.charCodeAt(0), target); - for (var i = 1, n = displayName.length; isValid && i < n; i++) { - isValid = ts.isIdentifierPart(displayName.charCodeAt(i), target); - } - if (isValid) { - return ts.unescapeIdentifier(displayName); + if (!displayName) { + return undefined; + } + if (displayName === "default") { + var localSymbol = ts.getLocalSymbolForExportDefault(symbol); + if (localSymbol && localSymbol.name) { + displayName = symbol.valueDeclaration.localSymbol.name; } } - return undefined; + var firstCharCode = displayName.charCodeAt(0); + if ((symbol.flags & 1536) && (firstCharCode === 39 || firstCharCode === 34)) { + return undefined; + } + if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && + (firstCharCode === 39 || firstCharCode === 34)) { + displayName = displayName.substring(1, displayName.length - 1); + } + if (!displayName) { + return undefined; + } + if (performCharacterChecks) { + if (!ts.isIdentifierStart(displayName.charCodeAt(0), target)) { + return undefined; + } + for (var i = 1, n = displayName.length; i < n; i++) { + if (!ts.isIdentifierPart(displayName.charCodeAt(i), target)) { + return undefined; + } + } + } + return ts.unescapeIdentifier(displayName); } function createCompletionEntry(symbol, typeChecker, location) { - var displayName = getValidCompletionEntryDisplayName(symbol, program.getCompilerOptions().target); + var displayName = getCompletionEntryDisplayName(symbol, program.getCompilerOptions().target, true); if (!displayName) { return undefined; } @@ -26568,62 +30791,53 @@ var ts; kindModifiers: getSymbolModifiers(symbol) }; } - function getCompletionsAtPosition(fileName, position) { - synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); + function getCompletionData(fileName, position) { var syntacticStart = new Date().getTime(); var sourceFile = getValidSourceFile(fileName); var start = new Date().getTime(); var currentToken = ts.getTokenAtPosition(sourceFile, position); - log("getCompletionsAtPosition: Get current token: " + (new Date().getTime() - start)); - var start = new Date().getTime(); + log("getCompletionData: Get current token: " + (new Date().getTime() - start)); + start = new Date().getTime(); var insideComment = isInsideComment(sourceFile, currentToken, position); - log("getCompletionsAtPosition: Is inside comment: " + (new Date().getTime() - start)); + log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); if (insideComment) { log("Returning an empty list because completion was inside a comment."); return undefined; } - var start = new Date().getTime(); + start = new Date().getTime(); var previousToken = ts.findPrecedingToken(position, sourceFile); - log("getCompletionsAtPosition: Get previous token 1: " + (new Date().getTime() - start)); - if (previousToken && position <= previousToken.end && previousToken.kind === 64) { - var start = new Date().getTime(); - previousToken = ts.findPrecedingToken(previousToken.pos, sourceFile); - log("getCompletionsAtPosition: Get previous token 2: " + (new Date().getTime() - start)); + log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); + var contextToken = previousToken; + if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { + var start_1 = new Date().getTime(); + contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_1)); } - if (previousToken && isCompletionListBlocker(previousToken)) { + if (contextToken && isCompletionListBlocker(contextToken)) { log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - var node; - var isRightOfDot; - if (previousToken && previousToken.kind === 20 && previousToken.parent.kind === 151) { - node = previousToken.parent.expression; + var node = currentToken; + var isRightOfDot = false; + if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 155) { + node = contextToken.parent.expression; isRightOfDot = true; } - else if (previousToken && previousToken.kind === 20 && previousToken.parent.kind === 123) { - node = previousToken.parent.left; + else if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 126) { + node = contextToken.parent.left; isRightOfDot = true; } - else { - node = currentToken; - isRightOfDot = false; - } - activeCompletionSession = { - fileName: fileName, - position: position, - entries: [], - symbols: {}, - typeChecker: typeInfoResolver - }; - log("getCompletionsAtPosition: Syntactic work: " + (new Date().getTime() - syntacticStart)); var location = ts.getTouchingPropertyName(sourceFile, position); + var target = program.getCompilerOptions().target; var semanticStart = new Date().getTime(); + var isMemberCompletion; + var isNewIdentifierLocation; + var symbols; if (isRightOfDot) { - var symbols = []; - var isMemberCompletion = true; - var isNewIdentifierLocation = false; - if (node.kind === 64 || node.kind === 123 || node.kind === 151) { + symbols = []; + isMemberCompletion = true; + isNewIdentifierLocation = false; + if (node.kind === 65 || node.kind === 126 || node.kind === 155) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol && symbol.flags & 8388608) { symbol = typeInfoResolver.getAliasedSymbol(symbol); @@ -26644,10 +30858,9 @@ var ts; } }); } - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); } else { - var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(previousToken); + var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(contextToken); if (containingObjectLiteral) { isMemberCompletion = true; isNewIdentifierLocation = true; @@ -26657,41 +30870,41 @@ var ts; } var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); if (contextualTypeMembers && contextualTypeMembers.length > 0) { - var filteredMembers = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); - getCompletionEntriesFromSymbols(filteredMembers, activeCompletionSession); + symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); + } + } + else if (ts.getAncestor(contextToken, 210)) { + isMemberCompletion = true; + isNewIdentifierLocation = true; + if (showCompletionsInImportsClause(contextToken)) { + var importDeclaration = ts.getAncestor(contextToken, 209); + ts.Debug.assert(importDeclaration !== undefined); + var exports = typeInfoResolver.getExportsOfExternalModule(importDeclaration); + symbols = filterModuleExports(exports, importDeclaration); } } else { isMemberCompletion = false; - isNewIdentifierLocation = isNewIdentifierDefinitionLocation(previousToken); + isNewIdentifierLocation = isNewIdentifierDefinitionLocation(contextToken); + if (previousToken !== contextToken) { + ts.Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); + } + var adjustedPosition = previousToken !== contextToken ? + previousToken.getStart() : + position; + var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile; var symbolMeanings = 793056 | 107455 | 1536 | 8388608; - var symbols = typeInfoResolver.getSymbolsInScope(node, symbolMeanings); - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); + symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings); } } - if (!isMemberCompletion) { - Array.prototype.push.apply(activeCompletionSession.entries, keywordCompletions); - } - log("getCompletionsAtPosition: Semantic work: " + (new Date().getTime() - semanticStart)); - return { - isMemberCompletion: isMemberCompletion, - isNewIdentifierLocation: isNewIdentifierLocation, - isBuilder: isNewIdentifierDefinitionLocation, - entries: activeCompletionSession.entries - }; - function getCompletionEntriesFromSymbols(symbols, session) { - var start = new Date().getTime(); - ts.forEach(symbols, function (symbol) { - var entry = createCompletionEntry(symbol, session.typeChecker, location); - if (entry) { - var id = ts.escapeIdentifier(entry.name); - if (!ts.lookUp(session.symbols, id)) { - session.entries.push(entry); - session.symbols[id] = symbol; - } - } - }); - log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart)); + return { symbols: symbols, isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, location: location }; + function getScopeNode(initialToken, position, sourceFile) { + var scope = initialToken; + while (scope && !ts.positionBelongsToNode(scope, position, sourceFile)) { + scope = scope.parent; + } + return scope; } function isCompletionListBlocker(previousToken) { var start = new Date().getTime(); @@ -26701,32 +30914,48 @@ var ts; log("getCompletionsAtPosition: isCompletionListBlocker: " + (new Date().getTime() - start)); return result; } + function showCompletionsInImportsClause(node) { + if (node) { + if (node.kind === 14 || node.kind === 23) { + return node.parent.kind === 212; + } + } + return false; + } function isNewIdentifierDefinitionLocation(previousToken) { if (previousToken) { var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 23: - return containingNodeKind === 153 || containingNodeKind === 131 || containingNodeKind === 154 || containingNodeKind === 149 || containingNodeKind === 165; + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 153 + || containingNodeKind === 169; case 16: - return containingNodeKind === 153 || containingNodeKind === 131 || containingNodeKind === 154 || containingNodeKind === 157; + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 161; case 18: - return containingNodeKind === 149; - case 115: + return containingNodeKind === 153; + case 117: return true; case 20: - return containingNodeKind === 198; + return containingNodeKind === 205; case 14: - return containingNodeKind === 194; - case 52: - return containingNodeKind === 191 || containingNodeKind === 165; + return containingNodeKind === 201; + case 53: + return containingNodeKind === 198 + || containingNodeKind === 169; case 11: - return containingNodeKind === 167; - case 12: return containingNodeKind === 171; + case 12: + return containingNodeKind === 176; + case 109: case 107: - case 105: - case 106: - return containingNodeKind === 128; + case 108: + return containingNodeKind === 132; } switch (previousToken.getText()) { case "public": @@ -26738,10 +30967,12 @@ var ts; return false; } function isInStringOrRegularExpressionOrTemplateLiteral(previousToken) { - if (previousToken.kind === 8 || previousToken.kind === 9 || ts.isTemplateLiteralKind(previousToken.kind)) { - var start = previousToken.getStart(); + if (previousToken.kind === 8 + || previousToken.kind === 9 + || ts.isTemplateLiteralKind(previousToken.kind)) { + var start_2 = previousToken.getStart(); var end = previousToken.getEnd(); - if (start < position && position < end) { + if (start_2 < position && position < end) { return true; } else if (position === end) { @@ -26751,13 +30982,14 @@ var ts; return false; } function getContainingObjectLiteralApplicableForCompletion(previousToken) { + // The locations in an object literal expression that are applicable for completion are property name definition locations. if (previousToken) { - var parent = previousToken.parent; + var parent_8 = previousToken.parent; switch (previousToken.kind) { case 14: case 23: - if (parent && parent.kind === 150) { - return parent; + if (parent_8 && parent_8.kind === 154) { + return parent_8; } break; } @@ -26766,16 +30998,16 @@ var ts; } function isFunction(kind) { switch (kind) { - case 158: - case 159: - case 193: - case 130: - case 129: - case 132: - case 133: + case 162: + case 163: + case 200: case 134: - case 135: + case 133: case 136: + case 137: + case 138: + case 139: + case 140: return true; } return false; @@ -26785,58 +31017,58 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 23: - return containingNodeKind === 191 || - containingNodeKind === 192 || - containingNodeKind === 173 || - containingNodeKind === 197 || + return containingNodeKind === 198 || + containingNodeKind === 199 || + containingNodeKind === 180 || + containingNodeKind === 204 || isFunction(containingNodeKind) || - containingNodeKind === 194 || - containingNodeKind === 193 || - containingNodeKind === 195 || - containingNodeKind === 147 || - containingNodeKind === 146; + containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || + containingNodeKind === 151 || + containingNodeKind === 150; case 20: - return containingNodeKind === 147; + return containingNodeKind === 151; case 18: - return containingNodeKind === 147; + return containingNodeKind === 151; case 16: - return containingNodeKind === 206 || + return containingNodeKind === 223 || isFunction(containingNodeKind); case 14: - return containingNodeKind === 197 || - containingNodeKind === 195 || - containingNodeKind === 141 || - containingNodeKind === 146; + return containingNodeKind === 204 || + containingNodeKind === 202 || + containingNodeKind === 145 || + containingNodeKind === 150; case 22: - return containingNodeKind === 127 && - (previousToken.parent.parent.kind === 195 || - previousToken.parent.parent.kind === 141); + return containingNodeKind === 131 && + (previousToken.parent.parent.kind === 202 || + previousToken.parent.parent.kind === 145); case 24: - return containingNodeKind === 194 || - containingNodeKind === 193 || - containingNodeKind === 195 || + return containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || isFunction(containingNodeKind); - case 108: - return containingNodeKind === 128; + case 110: + return containingNodeKind === 132; case 21: - return containingNodeKind === 126 || - containingNodeKind === 131 || - (previousToken.parent.parent.kind === 147); - case 107: - case 105: - case 106: - return containingNodeKind === 126; - case 68: - case 76: - case 102: - case 82: - case 97: - case 114: - case 118: - case 84: - case 103: - case 69: + return containingNodeKind === 129 || + containingNodeKind === 135 || + (previousToken.parent.parent.kind === 151); case 109: + case 107: + case 108: + return containingNodeKind === 129; + case 69: + case 77: + case 104: + case 83: + case 98: + case 116: + case 120: + case 85: + case 105: + case 70: + case 111: return true; } switch (previousToken.getText()) { @@ -26861,13 +31093,30 @@ var ts; } return false; } + function filterModuleExports(exports, importDeclaration) { + var exisingImports = {}; + if (!importDeclaration.importClause) { + return exports; + } + if (importDeclaration.importClause.namedBindings && + importDeclaration.importClause.namedBindings.kind === 212) { + ts.forEach(importDeclaration.importClause.namedBindings.elements, function (el) { + var name = el.propertyName || el.name; + exisingImports[name.text] = true; + }); + } + if (ts.isEmpty(exisingImports)) { + return exports; + } + return ts.filter(exports, function (e) { return !ts.lookUp(exisingImports, e.name); }); + } function filterContextualMembersList(contextualMemberSymbols, existingMembers) { if (!existingMembers || existingMembers.length === 0) { return contextualMemberSymbols; } var existingMemberNames = {}; ts.forEach(existingMembers, function (m) { - if (m.kind !== 207 && m.kind !== 208) { + if (m.kind !== 224 && m.kind !== 225) { return; } if (m.getStart() <= position && position <= m.getEnd()) { @@ -26884,36 +31133,69 @@ var ts; return filteredMembers; } } - function getCompletionEntryDetails(fileName, position, entryName) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getValidSourceFile(fileName); - var session = activeCompletionSession; - if (!session || session.fileName !== fileName || session.position !== position) { + function getCompletionsAtPosition(fileName, position) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (!completionData) { return undefined; } - var symbol = ts.lookUp(activeCompletionSession.symbols, ts.escapeIdentifier(entryName)); - if (symbol) { - var location = ts.getTouchingPropertyName(sourceFile, position); - var completionEntry = createCompletionEntry(symbol, session.typeChecker, location); - ts.Debug.assert(session.typeChecker.getTypeOfSymbolAtLocation(symbol, location) !== undefined, "Could not find type for symbol"); - var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, session.typeChecker, location, 7); - return { - name: entryName, - kind: displayPartsDocumentationsAndSymbolKind.symbolKind, - kindModifiers: completionEntry.kindModifiers, - displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, - documentation: displayPartsDocumentationsAndSymbolKind.documentation - }; + var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location; + if (!symbols || symbols.length === 0) { + return undefined; } - else { + var entries = getCompletionEntriesFromSymbols(symbols); + if (!isMemberCompletion) { + ts.addRange(entries, keywordCompletions); + } + return { isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, entries: entries }; + function getCompletionEntriesFromSymbols(symbols) { + var start = new Date().getTime(); + var entries = []; + var nameToSymbol = {}; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; + var entry = createCompletionEntry(symbol, typeInfoResolver, location); + if (entry) { + var id = ts.escapeIdentifier(entry.name); + if (!ts.lookUp(nameToSymbol, id)) { + entries.push(entry); + nameToSymbol[id] = symbol; + } + } + } + log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + return entries; + } + } + function getCompletionEntryDetails(fileName, position, entryName) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (completionData) { + var symbols = completionData.symbols, location_2 = completionData.location; + var target = program.getCompilerOptions().target; + var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayName(s, target, false) === entryName ? s : undefined; }); + if (symbol) { + var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7); + return { + name: entryName, + kind: displayPartsDocumentationsAndSymbolKind.symbolKind, + kindModifiers: getSymbolModifiers(symbol), + displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, + documentation: displayPartsDocumentationsAndSymbolKind.documentation + }; + } + } + var keywordCompletion = ts.forEach(keywordCompletions, function (c) { return c.name === entryName; }); + if (keywordCompletion) { return { name: entryName, kind: ScriptElementKind.keyword, kindModifiers: ScriptElementKindModifier.none, - displayParts: [ts.displayPart(entryName, 5)], + displayParts: [ts.displayPart(entryName, SymbolDisplayPartKind.keyword)], documentation: undefined }; } + return undefined; } function getSymbolKind(symbol, typeResolver, location) { var flags = symbol.getFlags(); @@ -27008,7 +31290,9 @@ var ts; return ScriptElementKind.unknown; } function getSymbolModifiers(symbol) { - return symbol && symbol.declarations && symbol.declarations.length > 0 ? ts.getNodeModifiers(symbol.declarations[0]) : ScriptElementKindModifier.none; + return symbol && symbol.declarations && symbol.declarations.length > 0 + ? ts.getNodeModifiers(symbol.declarations[0]) + : ScriptElementKindModifier.none; } function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location, semanticMeaning) { if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); } @@ -27017,20 +31301,22 @@ var ts; var symbolFlags = symbol.flags; var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); var hasAddedSymbolInfo; + var type; if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 || symbolFlags & 8388608) { if (symbolKind === ScriptElementKind.memberGetAccessorElement || symbolKind === ScriptElementKind.memberSetAccessorElement) { symbolKind = ScriptElementKind.memberVariableElement; } - var type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + var signature; + type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 151) { + if (location.parent && location.parent.kind === 155) { var right = location.parent.name; if (right === location || (right && right.getFullWidth() === 0)) { location = location.parent; } } var callExpression; - if (location.kind === 153 || location.kind === 154) { + if (location.kind === 157 || location.kind === 158) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -27042,7 +31328,7 @@ var ts; if (!signature && candidateSignatures.length) { signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 154 || callExpression.expression.kind === 90; + var useConstructSignatures = callExpression.kind === 158 || callExpression.expression.kind === 91; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target || signature)) { signature = allSignatures.length ? allSignatures[0] : undefined; @@ -27054,12 +31340,10 @@ var ts; } else if (symbolFlags & 8388608) { symbolKind = ScriptElementKind.alias; - displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.textPart(symbolKind)); - displayParts.push(ts.punctuationPart(17)); + pushTypePart(symbolKind); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(87)); + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } addFullSymbolName(symbol); @@ -27077,7 +31361,7 @@ var ts; displayParts.push(ts.punctuationPart(51)); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(87)); + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } if (!(type.flags & 32768)) { @@ -27092,22 +31376,21 @@ var ts; } } else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304)) || - (location.kind === 112 && location.parent.kind === 131)) { - var signature; + (location.kind === 114 && location.parent.kind === 135)) { var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === 131 ? type.getConstructSignatures() : type.getCallSignatures(); + var allSignatures = functionDeclaration.kind === 135 ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeResolver.isImplementationOfOverload(functionDeclaration)) { signature = typeResolver.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; } - if (functionDeclaration.kind === 131) { + if (functionDeclaration.kind === 135) { symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } else { - addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 134 && + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 138 && !(type.symbol.flags & 2048 || type.symbol.flags & 4096) ? type.symbol : symbol, symbolKind); } addSignatureDisplayParts(signature, allSignatures); @@ -27116,41 +31399,41 @@ var ts; } } if (symbolFlags & 32 && !hasAddedSymbolInfo) { - displayParts.push(ts.keywordPart(68)); + displayParts.push(ts.keywordPart(69)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); writeTypeParametersOfSymbol(symbol, sourceFile); } if ((symbolFlags & 64) && (semanticMeaning & 2)) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(102)); + displayParts.push(ts.keywordPart(104)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); writeTypeParametersOfSymbol(symbol, sourceFile); } if (symbolFlags & 524288) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(121)); + displayParts.push(ts.keywordPart(123)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration)); } if (symbolFlags & 384) { addNewLineIfDisplayPartsExist(); if (ts.forEach(symbol.declarations, ts.isConstEnumDeclaration)) { - displayParts.push(ts.keywordPart(69)); + displayParts.push(ts.keywordPart(70)); displayParts.push(ts.spacePart()); } - displayParts.push(ts.keywordPart(76)); + displayParts.push(ts.keywordPart(77)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } if (symbolFlags & 1536) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(115)); + displayParts.push(ts.keywordPart(117)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } @@ -27162,20 +31445,20 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); displayParts.push(ts.spacePart()); - displayParts.push(ts.keywordPart(85)); + displayParts.push(ts.keywordPart(86)); displayParts.push(ts.spacePart()); if (symbol.parent) { addFullSymbolName(symbol.parent, enclosingDeclaration); writeTypeParametersOfSymbol(symbol.parent, enclosingDeclaration); } else { - var signatureDeclaration = ts.getDeclarationOfKind(symbol, 125).parent; + var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128).parent; var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); - if (signatureDeclaration.kind === 135) { - displayParts.push(ts.keywordPart(87)); + if (signatureDeclaration.kind === 139) { + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } - else if (signatureDeclaration.kind !== 134 && signatureDeclaration.name) { + else if (signatureDeclaration.kind !== 138 && signatureDeclaration.name) { addFullSymbolName(signatureDeclaration.symbol); } displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32)); @@ -27184,38 +31467,38 @@ var ts; if (symbolFlags & 8) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 209) { + if (declaration.kind === 226) { var constantValue = typeResolver.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); - displayParts.push(ts.displayPart(constantValue.toString(), 7)); + displayParts.push(ts.displayPart(constantValue.toString(), SymbolDisplayPartKind.numericLiteral)); } } } if (symbolFlags & 8388608) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(84)); + displayParts.push(ts.keywordPart(85)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 200) { - var importDeclaration = declaration; - if (ts.isExternalModuleImportDeclaration(importDeclaration)) { + if (declaration.kind === 208) { + var importEqualsDeclaration = declaration; + if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); - displayParts.push(ts.keywordPart(116)); + displayParts.push(ts.keywordPart(118)); displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.displayPart(ts.getTextOfNode(ts.getExternalModuleImportDeclarationExpression(importDeclaration)), 8)); + displayParts.push(ts.displayPart(ts.getTextOfNode(ts.getExternalModuleImportEqualsDeclarationExpression(importEqualsDeclaration)), SymbolDisplayPartKind.stringLiteral)); displayParts.push(ts.punctuationPart(17)); } else { - var internalAliasSymbol = typeResolver.getSymbolAtLocation(importDeclaration.moduleReference); + var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); if (internalAliasSymbol) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); addFullSymbolName(internalAliasSymbol, enclosingDeclaration); } @@ -27274,20 +31557,34 @@ var ts; function addPrefixForAnyFunctionOrVar(symbol, symbolKind) { addNewLineIfDisplayPartsExist(); if (symbolKind) { - displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.textPart(symbolKind)); - displayParts.push(ts.punctuationPart(17)); + pushTypePart(symbolKind); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } } + function pushTypePart(symbolKind) { + switch (symbolKind) { + case ScriptElementKind.variableElement: + case ScriptElementKind.functionElement: + case ScriptElementKind.letElement: + case ScriptElementKind.constElement: + case ScriptElementKind.constructorImplementationElement: + displayParts.push(ts.textOrKeywordPart(symbolKind)); + return; + default: + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.textOrKeywordPart(symbolKind)); + displayParts.push(ts.punctuationPart(17)); + return; + } + } function addSignatureDisplayParts(signature, allSignatures, flags) { displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32)); if (allSignatures.length > 1) { displayParts.push(ts.spacePart()); displayParts.push(ts.punctuationPart(16)); displayParts.push(ts.operatorPart(33)); - displayParts.push(ts.displayPart((allSignatures.length - 1).toString(), 7)); + displayParts.push(ts.displayPart((allSignatures.length - 1).toString(), SymbolDisplayPartKind.numericLiteral)); displayParts.push(ts.spacePart()); displayParts.push(ts.textPart(allSignatures.length === 2 ? "overload" : "overloads")); displayParts.push(ts.punctuationPart(17)); @@ -27303,7 +31600,6 @@ var ts; } function getQuickInfoAtPosition(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { @@ -27312,11 +31608,11 @@ var ts; var symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { switch (node.kind) { - case 64: - case 151: - case 123: - case 92: - case 90: + case 65: + case 155: + case 126: + case 93: + case 91: var type = typeInfoResolver.getTypeAtLocation(node); if (type) { return { @@ -27339,9 +31635,18 @@ var ts; documentation: displayPartsDocumentationsAndKind.documentation }; } + function createDefinitionInfo(node, symbolKind, symbolName, containerName) { + return { + fileName: node.getSourceFile().fileName, + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()), + kind: symbolKind, + name: symbolName, + containerKind: undefined, + containerName: containerName + }; + } function getDefinitionAtPosition(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { @@ -27350,7 +31655,7 @@ var ts; if (isJumpStatementTarget(node)) { var labelName = node.text; var label = getTargetLabel(node.parent, node.text); - return label ? [getDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; + return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; } var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); if (comment) { @@ -27371,18 +31676,24 @@ var ts; if (!symbol) { return undefined; } - var result = []; - if (node.parent.kind === 208) { + if (symbol.flags & 8388608) { + var declaration = symbol.declarations[0]; + if (node.kind === 65 && node.parent === declaration) { + symbol = typeInfoResolver.getAliasedSymbol(symbol); + } + } + if (node.parent.kind === 225) { var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); + if (!shorthandSymbol) { + return []; + } var shorthandDeclarations = shorthandSymbol.getDeclarations(); var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); - ts.forEach(shorthandDeclarations, function (declaration) { - result.push(getDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName)); - }); - return result; + return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); }); } + var result = []; var declarations = symbol.getDeclarations(); var symbolName = typeInfoResolver.symbolToString(symbol); var symbolKind = getSymbolKind(symbol, typeInfoResolver, node); @@ -27391,46 +31702,15 @@ var ts; if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { ts.forEach(declarations, function (declaration) { - result.push(getDefinitionInfo(declaration, symbolKind, symbolName, containerName)); + result.push(createDefinitionInfo(declaration, symbolKind, symbolName, containerName)); }); } return result; - function getDefinitionInfo(node, symbolKind, symbolName, containerName) { - return { - fileName: node.getSourceFile().fileName, - textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()), - kind: symbolKind, - name: symbolName, - containerKind: undefined, - containerName: containerName - }; - } - function tryAddSignature(signatureDeclarations, selectConstructors, symbolKind, symbolName, containerName, result) { - var declarations = []; - var definition; - ts.forEach(signatureDeclarations, function (d) { - if ((selectConstructors && d.kind === 131) || - (!selectConstructors && (d.kind === 193 || d.kind === 130 || d.kind === 129))) { - declarations.push(d); - if (d.body) - definition = d; - } - }); - if (definition) { - result.push(getDefinitionInfo(definition, symbolKind, symbolName, containerName)); - return true; - } - else if (declarations.length) { - result.push(getDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); - return true; - } - return false; - } function tryAddConstructSignature(symbol, location, symbolKind, symbolName, containerName, result) { - if (isNewExpressionTarget(location) || location.kind === 112) { + if (isNewExpressionTarget(location) || location.kind === 114) { if (symbol.flags & 32) { var classDeclaration = symbol.getDeclarations()[0]; - ts.Debug.assert(classDeclaration && classDeclaration.kind === 194); + ts.Debug.assert(classDeclaration && classDeclaration.kind === 201); return tryAddSignature(classDeclaration.members, true, symbolKind, symbolName, containerName, result); } } @@ -27442,115 +31722,146 @@ var ts; } return false; } + function tryAddSignature(signatureDeclarations, selectConstructors, symbolKind, symbolName, containerName, result) { + var declarations = []; + var definition; + ts.forEach(signatureDeclarations, function (d) { + if ((selectConstructors && d.kind === 135) || + (!selectConstructors && (d.kind === 200 || d.kind === 134 || d.kind === 133))) { + declarations.push(d); + if (d.body) + definition = d; + } + }); + if (definition) { + result.push(createDefinitionInfo(definition, symbolKind, symbolName, containerName)); + return true; + } + else if (declarations.length) { + result.push(createDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); + return true; + } + return false; + } } function getOccurrencesAtPosition(fileName, position) { + var results = getOccurrencesAtPositionCore(fileName, position); + if (results) { + var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName)); + results.forEach(function (value) { + var targetFile = getCanonicalFileName(ts.normalizeSlashes(value.fileName)); + ts.Debug.assert(sourceFile == targetFile, "Unexpected file in results. Found results in " + targetFile + " expected only results in " + sourceFile + "."); + }); + } + return results; + } + function getOccurrencesAtPositionCore(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingWord(sourceFile, position); if (!node) { return undefined; } - if (node.kind === 64 || node.kind === 92 || node.kind === 90 || + if (node.kind === 65 || node.kind === 93 || node.kind === 91 || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { - return getReferencesForNode(node, [sourceFile], true, false, false); + return convertReferences(getReferencesForNode(node, [sourceFile], true, false, false)); } switch (node.kind) { - case 83: - case 75: - if (hasKind(node.parent, 176)) { + case 84: + case 76: + if (hasKind(node.parent, 183)) { return getIfElseOccurrences(node.parent); } break; - case 89: - if (hasKind(node.parent, 184)) { + case 90: + if (hasKind(node.parent, 191)) { return getReturnOccurrences(node.parent); } break; - case 93: - if (hasKind(node.parent, 188)) { + case 94: + if (hasKind(node.parent, 195)) { return getThrowOccurrences(node.parent); } break; - case 67: - if (hasKind(parent(parent(node)), 189)) { + case 68: + if (hasKind(parent(parent(node)), 196)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; - case 95: - case 80: - if (hasKind(parent(node), 189)) { + case 96: + case 81: + if (hasKind(parent(node), 196)) { return getTryCatchFinallyOccurrences(node.parent); } break; - case 91: - if (hasKind(node.parent, 186)) { + case 92: + if (hasKind(node.parent, 193)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; - case 66: - case 72: - if (hasKind(parent(parent(node)), 186)) { - return getSwitchCaseDefaultOccurrences(node.parent.parent); + case 67: + case 73: + if (hasKind(parent(parent(parent(node))), 193)) { + return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; - case 65: - case 70: - if (hasKind(node.parent, 183) || hasKind(node.parent, 182)) { + case 66: + case 71: + if (hasKind(node.parent, 190) || hasKind(node.parent, 189)) { return getBreakOrContinueStatementOccurences(node.parent); } break; - case 81: - if (hasKind(node.parent, 179) || - hasKind(node.parent, 180) || - hasKind(node.parent, 181)) { + case 82: + if (hasKind(node.parent, 186) || + hasKind(node.parent, 187) || + hasKind(node.parent, 188)) { return getLoopBreakContinueOccurrences(node.parent); } break; - case 99: - case 74: - if (hasKind(node.parent, 178) || hasKind(node.parent, 177)) { + case 100: + case 75: + if (hasKind(node.parent, 185) || hasKind(node.parent, 184)) { return getLoopBreakContinueOccurrences(node.parent); } break; - case 112: - if (hasKind(node.parent, 131)) { - return getConstructorOccurrences(node.parent); - } - break; case 114: - case 118: - if (hasKind(node.parent, 132) || hasKind(node.parent, 133)) { + if (hasKind(node.parent, 135)) { + return getConstructorOccurrences(node.parent); + } + break; + case 116: + case 120: + if (hasKind(node.parent, 136) || hasKind(node.parent, 137)) { return getGetAndSetOccurrences(node.parent); } default: if (ts.isModifier(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 173)) { + (ts.isDeclaration(node.parent) || node.parent.kind === 180)) { return getModifierOccurrences(node.kind, node.parent); } } return undefined; function getIfElseOccurrences(ifStatement) { var keywords = []; - while (hasKind(ifStatement.parent, 176) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 183) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } while (ifStatement) { var children = ifStatement.getChildren(); - pushKeywordIf(keywords, children[0], 83); + pushKeywordIf(keywords, children[0], 84); for (var i = children.length - 1; i >= 0; i--) { - if (pushKeywordIf(keywords, children[i], 75)) { + if (pushKeywordIf(keywords, children[i], 76)) { break; } } - if (!hasKind(ifStatement.elseStatement, 176)) { + if (!hasKind(ifStatement.elseStatement, 183)) { break; } ifStatement = ifStatement.elseStatement; } var result = []; for (var i = 0; i < keywords.length; i++) { - if (keywords[i].kind === 75 && i < keywords.length - 1) { + if (keywords[i].kind === 76 && i < keywords.length - 1) { var elseKeyword = keywords[i]; var ifKeyword = keywords[i + 1]; var shouldHighlightNextKeyword = true; @@ -27576,15 +31887,15 @@ var ts; } function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); - if (!(func && hasKind(func.body, 172))) { + if (!(func && hasKind(func.body, 179))) { return undefined; } var keywords = []; ts.forEachReturnStatement(func.body, function (returnStatement) { - pushKeywordIf(keywords, returnStatement.getFirstToken(), 89); + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); }); ts.forEach(aggregateOwnedThrowStatements(func.body), function (throwStatement) { - pushKeywordIf(keywords, throwStatement.getFirstToken(), 93); + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); }); return ts.map(keywords, getReferenceEntryFromNode); } @@ -27595,11 +31906,11 @@ var ts; } var keywords = []; ts.forEach(aggregateOwnedThrowStatements(owner), function (throwStatement) { - pushKeywordIf(keywords, throwStatement.getFirstToken(), 93); + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); }); if (ts.isFunctionBlock(owner)) { ts.forEachReturnStatement(owner, function (returnStatement) { - pushKeywordIf(keywords, returnStatement.getFirstToken(), 89); + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); }); } return ts.map(keywords, getReferenceEntryFromNode); @@ -27609,10 +31920,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 188) { + if (node.kind === 195) { statementAccumulator.push(node); } - else if (node.kind === 189) { + else if (node.kind === 196) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -27624,7 +31935,7 @@ var ts; aggregate(tryStatement.finallyBlock); } } - else if (!ts.isAnyFunction(node)) { + else if (!ts.isFunctionLike(node)) { ts.forEachChild(node, aggregate); } } @@ -27633,39 +31944,39 @@ var ts; function getThrowStatementOwner(throwStatement) { var child = throwStatement; while (child.parent) { - var parent = child.parent; - if (ts.isFunctionBlock(parent) || parent.kind === 210) { - return parent; + var parent_9 = child.parent; + if (ts.isFunctionBlock(parent_9) || parent_9.kind === 227) { + return parent_9; } - if (parent.kind === 189) { - var tryStatement = parent; + if (parent_9.kind === 196) { + var tryStatement = parent_9; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; } } - child = parent; + child = parent_9; } return undefined; } function getTryCatchFinallyOccurrences(tryStatement) { var keywords = []; - pushKeywordIf(keywords, tryStatement.getFirstToken(), 95); + pushKeywordIf(keywords, tryStatement.getFirstToken(), 96); if (tryStatement.catchClause) { - pushKeywordIf(keywords, tryStatement.catchClause.getFirstToken(), 67); + pushKeywordIf(keywords, tryStatement.catchClause.getFirstToken(), 68); } if (tryStatement.finallyBlock) { - var finallyKeyword = ts.findChildOfKind(tryStatement, 80, sourceFile); - pushKeywordIf(keywords, finallyKeyword, 80); + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); + pushKeywordIf(keywords, finallyKeyword, 81); } return ts.map(keywords, getReferenceEntryFromNode); } function getLoopBreakContinueOccurrences(loopNode) { var keywords = []; - if (pushKeywordIf(keywords, loopNode.getFirstToken(), 81, 99, 74)) { - if (loopNode.kind === 177) { + if (pushKeywordIf(keywords, loopNode.getFirstToken(), 82, 100, 75)) { + if (loopNode.kind === 184) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { - if (pushKeywordIf(keywords, loopTokens[i], 99)) { + if (pushKeywordIf(keywords, loopTokens[i], 100)) { break; } } @@ -27674,20 +31985,20 @@ var ts; var breaksAndContinues = aggregateAllBreakAndContinueStatements(loopNode.statement); ts.forEach(breaksAndContinues, function (statement) { if (ownsBreakOrContinueStatement(loopNode, statement)) { - pushKeywordIf(keywords, statement.getFirstToken(), 65, 70); + pushKeywordIf(keywords, statement.getFirstToken(), 66, 71); } }); return ts.map(keywords, getReferenceEntryFromNode); } function getSwitchCaseDefaultOccurrences(switchStatement) { var keywords = []; - pushKeywordIf(keywords, switchStatement.getFirstToken(), 91); - ts.forEach(switchStatement.clauses, function (clause) { - pushKeywordIf(keywords, clause.getFirstToken(), 66, 72); + pushKeywordIf(keywords, switchStatement.getFirstToken(), 92); + ts.forEach(switchStatement.caseBlock.clauses, function (clause) { + pushKeywordIf(keywords, clause.getFirstToken(), 67, 73); var breaksAndContinues = aggregateAllBreakAndContinueStatements(clause); ts.forEach(breaksAndContinues, function (statement) { if (ownsBreakOrContinueStatement(switchStatement, statement)) { - pushKeywordIf(keywords, statement.getFirstToken(), 65); + pushKeywordIf(keywords, statement.getFirstToken(), 66); } }); }); @@ -27697,13 +32008,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 179: - case 180: - case 181: - case 177: - case 178: - return getLoopBreakContinueOccurrences(owner); case 186: + case 187: + case 188: + case 184: + case 185: + return getLoopBreakContinueOccurrences(owner); + case 193: return getSwitchCaseDefaultOccurrences(owner); } } @@ -27714,10 +32025,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 183 || node.kind === 182) { + if (node.kind === 190 || node.kind === 189) { statementAccumulator.push(node); } - else if (!ts.isAnyFunction(node)) { + else if (!ts.isFunctionLike(node)) { ts.forEachChild(node, aggregate); } } @@ -27728,23 +32039,23 @@ var ts; return actualOwner && actualOwner === owner; } function getBreakOrContinueOwner(statement) { - for (var node = statement.parent; node; node = node.parent) { - switch (node.kind) { - case 186: - if (statement.kind === 182) { + for (var node_1 = statement.parent; node_1; node_1 = node_1.parent) { + switch (node_1.kind) { + case 193: + if (statement.kind === 189) { continue; } - case 179: - case 180: - case 181: - case 178: - case 177: - if (!statement.label || isLabeledBy(node, statement.label.text)) { - return node; + case 186: + case 187: + case 188: + case 185: + case 184: + if (!statement.label || isLabeledBy(node_1, statement.label.text)) { + return node_1; } break; default: - if (ts.isAnyFunction(node)) { + if (ts.isFunctionLike(node_1)) { return undefined; } break; @@ -27757,38 +32068,38 @@ var ts; var keywords = []; ts.forEach(declarations, function (declaration) { ts.forEach(declaration.getChildren(), function (token) { - return pushKeywordIf(keywords, token, 112); + return pushKeywordIf(keywords, token, 114); }); }); return ts.map(keywords, getReferenceEntryFromNode); } function getGetAndSetOccurrences(accessorDeclaration) { var keywords = []; - tryPushAccessorKeyword(accessorDeclaration.symbol, 132); - tryPushAccessorKeyword(accessorDeclaration.symbol, 133); + tryPushAccessorKeyword(accessorDeclaration.symbol, 136); + tryPushAccessorKeyword(accessorDeclaration.symbol, 137); return ts.map(keywords, getReferenceEntryFromNode); function tryPushAccessorKeyword(accessorSymbol, accessorKind) { var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); if (accessor) { - ts.forEach(accessor.getChildren(), function (child) { return pushKeywordIf(keywords, child, 114, 118); }); + ts.forEach(accessor.getChildren(), function (child) { return pushKeywordIf(keywords, child, 116, 120); }); } } } function getModifierOccurrences(modifier, declaration) { var container = declaration.parent; - if (declaration.flags & 112) { - if (!(container.kind === 194 || - (declaration.kind === 126 && hasKind(container, 131)))) { + if (ts.isAccessibilityModifier(modifier)) { + if (!(container.kind === 201 || + (declaration.kind === 129 && hasKind(container, 135)))) { return undefined; } } - else if (declaration.flags & 128) { - if (container.kind !== 194) { + else if (modifier === 110) { + if (container.kind !== 201) { return undefined; } } - else if (declaration.flags & (1 | 2)) { - if (!(container.kind === 199 || container.kind === 210)) { + else if (modifier === 78 || modifier === 115) { + if (!(container.kind === 206 || container.kind === 227)) { return undefined; } } @@ -27799,18 +32110,18 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 199: - case 210: + case 206: + case 227: nodes = container.statements; break; - case 131: + case 135: nodes = container.parameters.concat(container.parent.members); break; - case 194: + case 201: nodes = container.members; if (modifierFlag & 112) { var constructor = ts.forEach(container.members, function (member) { - return member.kind === 131 && member; + return member.kind === 135 && member; }); if (constructor) { nodes = nodes.concat(constructor.parameters); @@ -27828,17 +32139,17 @@ var ts; return ts.map(keywords, getReferenceEntryFromNode); function getFlagFromModifier(modifier) { switch (modifier) { - case 107: + case 109: return 16; - case 105: + case 107: return 32; - case 106: - return 64; case 108: + return 64; + case 110: return 128; - case 77: + case 78: return 1; - case 113: + case 115: return 2; default: ts.Debug.fail(); @@ -27863,65 +32174,63 @@ var ts; return false; } } + function convertReferences(referenceSymbols) { + if (!referenceSymbols) { + return undefined; + } + var referenceEntries = []; + for (var _i = 0; _i < referenceSymbols.length; _i++) { + var referenceSymbol = referenceSymbols[_i]; + ts.addRange(referenceEntries, referenceSymbol.references); + } + return referenceEntries; + } function findRenameLocations(fileName, position, findInStrings, findInComments) { - return findReferences(fileName, position, findInStrings, findInComments); + var referencedSymbols = findReferencedSymbols(fileName, position, findInStrings, findInComments); + return convertReferences(referencedSymbols); } function getReferencesAtPosition(fileName, position) { - return findReferences(fileName, position, false, false); + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return convertReferences(referencedSymbols); } - function findReferences(fileName, position, findInStrings, findInComments) { + function findReferences(fileName, position) { + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return ts.filter(referencedSymbols, function (rs) { return !!rs.definition; }); + } + function findReferencedSymbols(fileName, position, findInStrings, findInComments) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { return undefined; } - if (node.kind !== 64 && + if (node.kind !== 65 && !isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && !isNameOfExternalModuleImportOrDeclaration(node)) { return undefined; } - ts.Debug.assert(node.kind === 64 || node.kind === 7 || node.kind === 8); + ts.Debug.assert(node.kind === 65 || node.kind === 7 || node.kind === 8); return getReferencesForNode(node, program.getSourceFiles(), false, findInStrings, findInComments); } - function initializeNameTable(sourceFile) { - var nameTable = {}; - walk(sourceFile); - sourceFile.nameTable = nameTable; - function walk(node) { - switch (node.kind) { - case 64: - nameTable[node.text] = node.text; - break; - case 8: - case 7: - nameTable[node.text] = node.text; - break; - default: - ts.forEachChild(node, walk); - } - } - } function getReferencesForNode(node, sourceFiles, searchOnlyInCurrentFile, findInStrings, findInComments) { if (isLabelName(node)) { if (isJumpStatementTarget(node)) { var labelDefinition = getTargetLabel(node.parent, node.text); - return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : [getReferenceEntryFromNode(node)]; + return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : undefined; } else { return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 92) { + if (node.kind === 93) { return getReferencesForThisKeyword(node, sourceFiles); } - if (node.kind === 90) { + if (node.kind === 91) { return getReferencesForSuperKeyword(node); } var symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { - return [getReferenceEntryFromNode(node)]; + return undefined; } var declarations = symbol.declarations; if (!declarations || !declarations.length) { @@ -27929,46 +32238,78 @@ var ts; } var result; var searchMeaning = getIntersectingMeaningFromDeclarations(getMeaningFromLocation(node), declarations); - var declaredName = getDeclaredName(symbol); + var declaredName = getDeclaredName(symbol, node); var scope = getSymbolScope(symbol); + var symbolToIndex = []; if (scope) { result = []; - getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { if (searchOnlyInCurrentFile) { ts.Debug.assert(sourceFiles.length === 1); result = []; - getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { - var internedName = getInternedName(symbol, declarations); + var internedName = getInternedName(symbol, node, declarations); ts.forEach(sourceFiles, function (sourceFile) { cancellationToken.throwIfCancellationRequested(); - if (!sourceFile.nameTable) { - initializeNameTable(sourceFile); - } - ts.Debug.assert(sourceFile.nameTable !== undefined); - if (ts.lookUp(sourceFile.nameTable, internedName)) { + var nameTable = getNameTable(sourceFile); + if (ts.lookUp(nameTable, internedName)) { result = result || []; - getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } }); } } return result; - function getDeclaredName(symbol) { - var name = typeInfoResolver.symbolToString(symbol); + function getDefinition(symbol) { + var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node); + var name = ts.map(info.displayParts, function (p) { return p.text; }).join(""); + var declarations = symbol.declarations; + if (!declarations || declarations.length === 0) { + return undefined; + } + return { + containerKind: "", + containerName: "", + name: name, + kind: info.symbolKind, + fileName: declarations[0].getSourceFile().fileName, + textSpan: ts.createTextSpan(declarations[0].getStart(), 0) + }; + } + function isImportOrExportSpecifierName(location) { + return location.parent && + (location.parent.kind === 213 || location.parent.kind === 217) && + location.parent.propertyName === location; + } + function isImportOrExportSpecifierImportSymbol(symbol) { + return (symbol.flags & 8388608) && ts.forEach(symbol.declarations, function (declaration) { + return declaration.kind === 213 || declaration.kind === 217; + }); + } + function getDeclaredName(symbol, location) { + var functionExpression = ts.forEach(symbol.declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name; + if (functionExpression && functionExpression.name) { + name = functionExpression.name.text; + } + if (isImportOrExportSpecifierName(location)) { + return location.getText(); + } + name = typeInfoResolver.symbolToString(symbol); return stripQuotes(name); } - function getInternedName(symbol, declarations) { - var functionExpression = ts.forEach(declarations, function (d) { return d.kind === 158 ? d : undefined; }); - if (functionExpression && functionExpression.name) { - var name = functionExpression.name.text; - } - else { - var name = symbol.name; + function getInternedName(symbol, location, declarations) { + if (isImportOrExportSpecifierName(location)) { + return location.getText(); } + var functionExpression = ts.forEach(declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name = functionExpression && functionExpression.name + ? functionExpression.name.text + : symbol.name; return stripQuotes(name); } function stripQuotes(name) { @@ -27980,27 +32321,31 @@ var ts; return name; } function getSymbolScope(symbol) { - if (symbol.getFlags() && (4 | 8192)) { + if (symbol.flags & (4 | 8192)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 32) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 194); + return ts.getAncestor(privateDeclaration, 201); } } - if (symbol.parent || (symbol.getFlags() & 268435456)) { + if (symbol.flags & 8388608) { + return undefined; + } + if (symbol.parent || (symbol.flags & 268435456)) { return undefined; } var scope = undefined; var declarations = symbol.getDeclarations(); if (declarations) { - for (var i = 0, n = declarations.length; i < n; i++) { - var container = getContainerNode(declarations[i]); + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var container = getContainerNode(declaration); if (!container) { return undefined; } if (scope && scope !== container) { return undefined; } - if (container.kind === 210 && !ts.isExternalModule(container)) { + if (container.kind === 227 && !ts.isExternalModule(container)) { return undefined; } scope = container; @@ -28031,7 +32376,7 @@ var ts; return positions; } function getLabelReferencesInNode(container, targetLabel) { - var result = []; + var references = []; var sourceFile = container.getSourceFile(); var labelName = targetLabel.text; var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd()); @@ -28043,15 +32388,23 @@ var ts; } if (node === targetLabel || (isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel)) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + var definition = { + containerKind: "", + containerName: "", + fileName: targetLabel.getSourceFile().fileName, + kind: ScriptElementKind.label, + name: labelName, + textSpan: ts.createTextSpanFromBounds(targetLabel.getStart(), targetLabel.getEnd()) + }; + return [{ definition: definition, references: references }]; } function isValidReferencePosition(node, searchSymbolName) { if (node) { switch (node.kind) { - case 64: + case 65: return node.getWidth() === searchSymbolName.length; case 8: if (isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || @@ -28068,7 +32421,7 @@ var ts; } return false; } - function getReferencesInNode(container, searchSymbol, searchText, searchLocation, searchMeaning, findInStrings, findInComments, result) { + function getReferencesInNode(container, searchSymbol, searchText, searchLocation, searchMeaning, findInStrings, findInComments, result, symbolToIndex) { var sourceFile = container.getSourceFile(); var tripleSlashDirectivePrefixRegex = /^\/\/\/\s*= 0) { - result.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); + var referencedSymbol = getReferencedSymbol(shorthandValueSymbol); + referencedSymbol.references.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); } } }); } + return; + function getReferencedSymbol(symbol) { + var symbolId = ts.getSymbolId(symbol); + var index = symbolToIndex[symbolId]; + if (index === undefined) { + index = result.length; + symbolToIndex[symbolId] = index; + result.push({ + definition: getDefinition(symbol), + references: [] + }); + } + return result[index]; + } function isInString(position) { var token = ts.getTokenAtPosition(sourceFile, position); return token && token.kind === 8 && position > token.getStart(); @@ -28131,103 +32504,115 @@ var ts; } var staticFlag = 128; switch (searchSpaceNode.kind) { - case 128: - case 127: - case 130: - case 129: - case 131: case 132: + case 131: + case 134: case 133: + case 135: + case 136: + case 137: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; default: return undefined; } - var result = []; + var references = []; var sourceFile = searchSpaceNode.getSourceFile(); var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 90) { + if (!node || node.kind !== 91) { return; } var container = ts.getSuperContainer(node, false); if (container && (128 & container.flags) === staticFlag && container.parent.symbol === searchSpaceNode.symbol) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + var definition = getDefinition(searchSpaceNode.symbol); + return [{ definition: definition, references: references }]; } function getReferencesForThisKeyword(thisOrSuperKeyword, sourceFiles) { var searchSpaceNode = ts.getThisContainer(thisOrSuperKeyword, false); var staticFlag = 128; switch (searchSpaceNode.kind) { - case 130: - case 129: + case 134: + case 133: if (ts.isObjectLiteralMethod(searchSpaceNode)) { break; } - case 128: - case 127: - case 131: case 132: - case 133: + case 131: + case 135: + case 136: + case 137: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; - case 210: + case 227: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } - case 193: - case 158: + case 200: + case 162: break; default: return undefined; } - var result = []; - if (searchSpaceNode.kind === 210) { + var references = []; + var possiblePositions; + if (searchSpaceNode.kind === 227) { ts.forEach(sourceFiles, function (sourceFile) { - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); - getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, result); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); + getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); }); } else { var sourceFile = searchSpaceNode.getSourceFile(); - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); - getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, references); } - return result; + return [{ + definition: { + containerKind: "", + containerName: "", + fileName: node.getSourceFile().fileName, + kind: ScriptElementKind.variableElement, + name: "this", + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()) + }, + references: references + }]; function getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result) { ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 92) { + if (!node || node.kind !== 93) { return; } var container = ts.getThisContainer(node, false); switch (searchSpaceNode.kind) { - case 158: - case 193: + case 162: + case 200: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 130: - case 129: + case 134: + case 133: if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 194: + case 201: if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 128) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 210: - if (container.kind === 210 && !ts.isExternalModule(container)) { + case 227: + if (container.kind === 227 && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -28237,6 +32622,9 @@ var ts; } function populateSearchSymbolSet(symbol, location) { var result = [symbol]; + if (isImportOrExportSpecifierImportSymbol(symbol)) { + result.push(typeInfoResolver.getAliasedSymbol(symbol)); + } if (isNameOfPropertyAssignment(location)) { ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) { result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol)); @@ -28259,11 +32647,11 @@ var ts; function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { if (symbol && symbol.flags & (32 | 64)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 194) { - getPropertySymbolFromTypeReference(ts.getClassBaseTypeNode(declaration)); - ts.forEach(ts.getClassImplementedTypeNodes(declaration), getPropertySymbolFromTypeReference); + if (declaration.kind === 201) { + getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); + ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 195) { + else if (declaration.kind === 202) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -28282,53 +32670,59 @@ var ts; } } } - function isRelatableToSearchSet(searchSymbols, referenceSymbol, referenceLocation) { + function getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation) { if (searchSymbols.indexOf(referenceSymbol) >= 0) { - return true; + return referenceSymbol; + } + if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) { + var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol); + if (searchSymbols.indexOf(aliasedSymbol) >= 0) { + return aliasedSymbol; + } } if (isNameOfPropertyAssignment(referenceLocation)) { return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) { - return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0; }); + return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); }); } return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) { if (searchSymbols.indexOf(rootSymbol) >= 0) { - return true; + return rootSymbol; } if (rootSymbol.parent && rootSymbol.parent.flags & (32 | 64)) { - var result = []; - getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result); - return ts.forEach(result, function (s) { return searchSymbols.indexOf(s) >= 0; }); + var result_2 = []; + getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2); + return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); } - return false; + return undefined; }); } function getPropertySymbolsFromContextualType(node) { if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name = node.text; + var name_20 = node.text; if (contextualType) { if (contextualType.flags & 16384) { - var unionProperty = contextualType.getProperty(name); + var unionProperty = contextualType.getProperty(name_20); if (unionProperty) { return [unionProperty]; } else { - var result = []; + var result_3 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name); + var symbol = t.getProperty(name_20); if (symbol) { - result.push(symbol); + result_3.push(symbol); } }); - return result; + return result_3; } } else { - var symbol = contextualType.getProperty(name); - if (symbol) { - return [symbol]; + var symbol_1 = contextualType.getProperty(name_20); + if (symbol_1) { + return [symbol_1]; } } } @@ -28337,10 +32731,12 @@ var ts; } function getIntersectingMeaningFromDeclarations(meaning, declarations) { if (declarations) { + var lastIterationMeaning; do { - var lastIterationMeaning = meaning; - for (var i = 0, n = declarations.length; i < n; i++) { - var declarationMeaning = getMeaningFromDeclaration(declarations[i]); + lastIterationMeaning = meaning; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var declarationMeaning = getMeaningFromDeclaration(declaration); if (declarationMeaning & meaning) { meaning |= declarationMeaning; } @@ -28364,17 +32760,17 @@ var ts; }; } function isWriteAccess(node) { - if (node.kind === 64 && ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (node.kind === 65 && ts.isDeclarationName(node)) { return true; } var parent = node.parent; if (parent) { - if (parent.kind === 164 || parent.kind === 163) { + if (parent.kind === 168 || parent.kind === 167) { return true; } - else if (parent.kind === 165 && parent.left === node) { + else if (parent.kind === 169 && parent.left === node) { var operator = parent.operatorToken.kind; - return 52 <= operator && operator <= 63; + return 53 <= operator && operator <= 64; } } return false; @@ -28384,11 +32780,10 @@ var ts; return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); } function containErrors(diagnostics) { - return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === 1; }); + return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); } function getEmitOutput(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var outputFiles = []; function writeFile(fileName, data, writeByteOrderMark) { @@ -28406,33 +32801,33 @@ var ts; } function getMeaningFromDeclaration(node) { switch (node.kind) { - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: case 129: - case 131: - case 132: - case 133: - case 193: - case 158: - case 159: - case 206: - return 1; - case 125: - case 195: - case 196: - case 141: - return 2; - case 194: - case 197: - return 1 | 2; case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + case 223: + return 1; + case 128: + case 202: + case 203: + case 145: + return 2; + case 201: + case 204: + return 1 | 2; + case 205: if (node.name.kind === 8) { return 4 | 1; } @@ -28442,52 +32837,78 @@ var ts; else { return 4; } - case 200: + case 212: + case 213: + case 208: + case 209: + case 214: + case 215: return 1 | 2 | 4; - case 210: + case 227: return 4 | 1; } + return 1 | 2 | 4; ts.Debug.fail("Unknown declaration type"); } function isTypeReference(node) { - if (isRightSideOfQualifiedName(node)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { node = node.parent; } - return node.parent.kind === 137; + return node.parent.kind === 141 || node.parent.kind === 177; } function isNamespaceReference(node) { + return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); + } + function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 123) { - while (root.parent && root.parent.kind === 123) + if (root.parent.kind === 155) { + while (root.parent && root.parent.kind === 155) { root = root.parent; + } + isLastClause = root.name === node; + } + if (!isLastClause && root.parent.kind === 177 && root.parent.parent.kind === 222) { + var decl = root.parent.parent.parent; + return (decl.kind === 201 && root.parent.parent.token === 103) || + (decl.kind === 202 && root.parent.parent.token === 79); + } + return false; + } + function isQualifiedNameNamespaceReference(node) { + var root = node; + var isLastClause = true; + if (root.parent.kind === 126) { + while (root.parent && root.parent.kind === 126) { + root = root.parent; + } isLastClause = root.right === node; } - return root.parent.kind === 137 && !isLastClause; + return root.parent.kind === 141 && !isLastClause; } function isInRightSideOfImport(node) { - while (node.parent.kind === 123) { + while (node.parent.kind === 126) { node = node.parent; } - return ts.isInternalModuleImportDeclaration(node.parent) && node.parent.moduleReference === node; + return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; } - function getMeaningFromRightHandSideOfImport(node) { - ts.Debug.assert(node.kind === 64); - if (node.parent.kind === 123 && + function getMeaningFromRightHandSideOfImportEquals(node) { + ts.Debug.assert(node.kind === 65); + if (node.parent.kind === 126 && node.parent.right === node && - node.parent.parent.kind === 200) { + node.parent.parent.kind === 208) { return 1 | 2 | 4; } return 4; } function getMeaningFromLocation(node) { - if (node.parent.kind === 201) { + if (node.parent.kind === 214) { return 1 | 2 | 4; } else if (isInRightSideOfImport(node)) { - return getMeaningFromRightHandSideOfImport(node); + return getMeaningFromRightHandSideOfImportEquals(node); } - else if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + else if (ts.isDeclarationName(node)) { return getMeaningFromDeclaration(node.parent); } else if (isTypeReference(node)) { @@ -28502,31 +32923,28 @@ var ts; } function getSignatureHelpItems(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); } - function getCurrentSourceFile(fileName) { - fileName = ts.normalizeSlashes(fileName); - var currentSourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - return currentSourceFile; + function getSourceFile(fileName) { + return syntaxTreeCache.getCurrentSourceFile(fileName); } function getNameOrDottedNameSpan(fileName, startPos, endPos) { - fileName = ts.normalizeSlashes(fileName); - var node = ts.getTouchingPropertyName(getCurrentSourceFile(fileName), startPos); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, startPos); if (!node) { return; } switch (node.kind) { - case 151: - case 123: + case 155: + case 126: case 8: - case 79: - case 94: - case 88: - case 90: - case 92: - case 64: + case 80: + case 95: + case 89: + case 91: + case 93: + case 65: break; default: return; @@ -28537,7 +32955,7 @@ var ts; nodeForStartPos = nodeForStartPos.parent; } else if (isNameOfModuleDeclaration(nodeForStartPos)) { - if (nodeForStartPos.parent.parent.kind === 198 && + if (nodeForStartPos.parent.parent.kind === 205 && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { nodeForStartPos = nodeForStartPos.parent.parent.name; } @@ -28552,16 +32970,15 @@ var ts; return ts.createTextSpanFromBounds(nodeForStartPos.getStart(), node.getEnd()); } function getBreakpointStatementAtPosition(fileName, position) { - fileName = ts.normalizeSlashes(fileName); - return ts.BreakpointResolver.spanInSourceFileAtLocation(getCurrentSourceFile(fileName), position); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.BreakpointResolver.spanInSourceFileAtLocation(sourceFile, position); } function getNavigationBarItems(fileName) { - fileName = ts.normalizeSlashes(fileName); - return ts.NavigationBar.getNavigationBarItems(getCurrentSourceFile(fileName)); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.NavigationBar.getNavigationBarItems(sourceFile); } function getSemanticClassifications(fileName, span) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var result = []; processNode(sourceFile); @@ -28594,13 +33011,13 @@ var ts; return undefined; function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 198 && ts.getModuleInstanceState(declaration) == 1; + return declaration.kind === 205 && ts.getModuleInstanceState(declaration) == 1; }); } } function processNode(node) { if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) { - if (node.kind === 64 && node.getWidth() > 0) { + if (node.kind === 65 && node.getWidth() > 0) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol) { var type = classifySymbol(symbol, getMeaningFromLocation(node)); @@ -28617,8 +33034,7 @@ var ts; } } function getSyntacticClassifications(fileName, span) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); var triviaScanner = ts.createScanner(2, false, sourceFile.text); var mergeConflictScanner = ts.createScanner(2, false, sourceFile.text); var result = []; @@ -28712,17 +33128,17 @@ var ts; } if (ts.isPunctuation(tokenKind)) { if (token) { - if (tokenKind === 52) { - if (token.parent.kind === 191 || - token.parent.kind === 128 || - token.parent.kind === 126) { + if (tokenKind === 53) { + if (token.parent.kind === 198 || + token.parent.kind === 132 || + token.parent.kind === 129) { return ClassificationTypeNames.operator; } } - if (token.parent.kind === 165 || - token.parent.kind === 163 || - token.parent.kind === 164 || - token.parent.kind === 166) { + if (token.parent.kind === 169 || + token.parent.kind === 167 || + token.parent.kind === 168 || + token.parent.kind === 170) { return ClassificationTypeNames.operator; } } @@ -28740,30 +33156,30 @@ var ts; else if (ts.isTemplateLiteralKind(tokenKind)) { return ClassificationTypeNames.stringLiteral; } - else if (tokenKind === 64) { + else if (tokenKind === 65) { if (token) { switch (token.parent.kind) { - case 194: + case 201: if (token.parent.name === token) { return ClassificationTypeNames.className; } return; - case 125: + case 128: if (token.parent.name === token) { return ClassificationTypeNames.typeParameterName; } return; - case 195: + case 202: if (token.parent.name === token) { return ClassificationTypeNames.interfaceName; } return; - case 197: + case 204: if (token.parent.name === token) { return ClassificationTypeNames.enumName; } return; - case 198: + case 205: if (token.parent.name === token) { return ClassificationTypeNames.moduleName; } @@ -28776,8 +33192,8 @@ var ts; function processElement(element) { if (ts.textSpanIntersectsWith(span, element.getFullStart(), element.getFullWidth())) { var children = element.getChildren(); - for (var i = 0, n = children.length; i < n; i++) { - var child = children[i]; + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; if (ts.isToken(child)) { classifyToken(child); } @@ -28789,12 +33205,11 @@ var ts; } } function getOutliningSpans(fileName) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.OutliningElementsCollector.collectElements(sourceFile); } function getBraceMatchingAtPosition(fileName, position) { - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); var result = []; var token = ts.getTouchingToken(sourceFile, position); if (token.getStart(sourceFile) === position) { @@ -28802,8 +33217,8 @@ var ts; if (matchKind) { var parentElement = token.parent; var childNodes = parentElement.getChildren(sourceFile); - for (var i = 0, n = childNodes.length; i < n; i++) { - var current = childNodes[i]; + for (var _i = 0; _i < childNodes.length; _i++) { + var current = childNodes[_i]; if (current.kind === matchKind) { var range1 = ts.createTextSpan(token.getStart(sourceFile), token.getWidth(sourceFile)); var range2 = ts.createTextSpan(current.getStart(sourceFile), current.getWidth(sourceFile)); @@ -28834,28 +33249,24 @@ var ts; } } function getIndentationAtPosition(fileName, position, editorOptions) { - fileName = ts.normalizeSlashes(fileName); var start = new Date().getTime(); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); log("getIndentationAtPosition: getCurrentSourceFile: " + (new Date().getTime() - start)); - var start = new Date().getTime(); + start = new Date().getTime(); var result = ts.formatting.SmartIndenter.getIndentation(position, sourceFile, editorOptions); log("getIndentationAtPosition: computeIndentation : " + (new Date().getTime() - start)); return result; } function getFormattingEditsForRange(fileName, start, end, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.formatting.formatSelection(start, end, sourceFile, getRuleProvider(options), options); } function getFormattingEditsForDocument(fileName, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.formatting.formatDocument(sourceFile, getRuleProvider(options), options); } function getFormattingEditsAfterKeystroke(fileName, position, key, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); if (key === "}") { return ts.formatting.formatOnClosingCurly(position, sourceFile, getRuleProvider(options), options); } @@ -28869,7 +33280,6 @@ var ts; } function getTodoComments(fileName, descriptors) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); cancellationToken.throwIfCancellationRequested(); var fileContents = sourceFile.text; @@ -28910,6 +33320,8 @@ var ts; return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } function getTodoCommentsRegExp() { + // NOTE: ?: means 'non-capture group'. It allows us to have groups without having to + // filter them out later in the final result array. var singleLineCommentStart = /(?:\/\/+\s*)/.source; var multiLineCommentStart = /(?:\/\*+\s*)/.source; var anyNumberOfSpacesAndAsterixesAtStartOfLine = /(?:^(?:\s|\*)*)/.source; @@ -28929,19 +33341,19 @@ var ts; } function getRenameInfo(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingWord(sourceFile, position); - if (node && node.kind === 64) { + if (node && node.kind === 65) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol) { var declarations = symbol.getDeclarations(); if (declarations && declarations.length > 0) { var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); if (defaultLibFileName) { - for (var i = 0; i < declarations.length; i++) { - var sourceFile = declarations[i].getSourceFile(); - if (sourceFile && getCanonicalFileName(ts.normalizePath(sourceFile.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var sourceFile_1 = current.getSourceFile(); + if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key)); } } @@ -28988,6 +33400,7 @@ var ts; getQuickInfoAtPosition: getQuickInfoAtPosition, getDefinitionAtPosition: getDefinitionAtPosition, getReferencesAtPosition: getReferencesAtPosition, + findReferences: findReferences, getOccurrencesAtPosition: getOccurrencesAtPosition, getNameOrDottedNameSpan: getNameOrDottedNameSpan, getBreakpointStatementAtPosition: getBreakpointStatementAtPosition, @@ -29003,42 +33416,68 @@ var ts; getFormattingEditsForDocument: getFormattingEditsForDocument, getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, getEmitOutput: getEmitOutput, - getSourceFile: getCurrentSourceFile, + getSourceFile: getSourceFile, getProgram: getProgram }; } ts.createLanguageService = createLanguageService; + function getNameTable(sourceFile) { + if (!sourceFile.nameTable) { + initializeNameTable(sourceFile); + } + return sourceFile.nameTable; + } + ts.getNameTable = getNameTable; + function initializeNameTable(sourceFile) { + var nameTable = {}; + walk(sourceFile); + sourceFile.nameTable = nameTable; + function walk(node) { + switch (node.kind) { + case 65: + nameTable[node.text] = node.text; + break; + case 8: + case 7: + if (ts.isDeclarationName(node) || + node.parent.kind === 219 || + isArgumentOfElementAccessExpression(node)) { + nameTable[node.text] = node.text; + } + break; + default: + ts.forEachChild(node, walk); + } + } + } + function isArgumentOfElementAccessExpression(node) { + return node && + node.parent && + node.parent.kind === 156 && + node.parent.argumentExpression === node; + } function createClassifier() { var scanner = ts.createScanner(2, false); var noRegexTable = []; - noRegexTable[64] = true; + noRegexTable[65] = true; noRegexTable[8] = true; noRegexTable[7] = true; noRegexTable[9] = true; - noRegexTable[92] = true; + noRegexTable[93] = true; noRegexTable[38] = true; noRegexTable[39] = true; noRegexTable[17] = true; noRegexTable[19] = true; noRegexTable[15] = true; - noRegexTable[94] = true; - noRegexTable[79] = true; + noRegexTable[95] = true; + noRegexTable[80] = true; var templateStack = []; - function isAccessibilityModifier(kind) { - switch (kind) { - case 107: - case 105: - case 106: - return true; - } - return false; - } function canFollow(keyword1, keyword2) { - if (isAccessibilityModifier(keyword1)) { - if (keyword2 === 114 || - keyword2 === 118 || - keyword2 === 112 || - keyword2 === 108) { + if (ts.isAccessibilityModifier(keyword1)) { + if (keyword2 === 116 || + keyword2 === 120 || + keyword2 === 114 || + keyword2 === 110) { return true; } return false; @@ -29085,31 +33524,31 @@ var ts; do { token = scanner.scan(); if (!ts.isTrivia(token)) { - if ((token === 36 || token === 56) && !noRegexTable[lastNonTriviaToken]) { + if ((token === 36 || token === 57) && !noRegexTable[lastNonTriviaToken]) { if (scanner.reScanSlashToken() === 9) { token = 9; } } else if (lastNonTriviaToken === 20 && isKeyword(token)) { - token = 64; + token = 65; } else if (isKeyword(lastNonTriviaToken) && isKeyword(token) && !canFollow(lastNonTriviaToken, token)) { - token = 64; + token = 65; } - else if (lastNonTriviaToken === 64 && + else if (lastNonTriviaToken === 65 && token === 24) { angleBracketStack++; } else if (token === 25 && angleBracketStack > 0) { angleBracketStack--; } - else if (token === 110 || + else if (token === 112 || + token === 121 || token === 119 || - token === 117 || - token === 111 || - token === 120) { + token === 113 || + token === 122) { if (angleBracketStack > 0 && !syntacticClassifierAbsent) { - token = 64; + token = 65; } } else if (token === 11) { @@ -29158,7 +33597,9 @@ var ts; } if (numBackslashes & 1) { var quoteChar = tokenText.charCodeAt(0); - result.finalLexState = quoteChar === 34 ? 3 : 2; + result.finalLexState = quoteChar === 34 + ? 3 + : 2; } } } @@ -29208,8 +33649,8 @@ var ts; case 25: case 26: case 27: + case 87: case 86: - case 85: case 28: case 29: case 30: @@ -29219,18 +33660,18 @@ var ts; case 44: case 48: case 49: - case 62: - case 61: case 63: - case 58: + case 62: + case 64: case 59: case 60: - case 53: + case 61: case 54: case 55: case 56: case 57: - case 52: + case 58: + case 53: case 23: return true; default: @@ -29251,38 +33692,38 @@ var ts; } } function isKeyword(token) { - return token >= 65 && token <= 122; + return token >= 66 && token <= 125; } function classFromKind(token) { if (isKeyword(token)) { - return 1; + return TokenClass.Keyword; } else if (isBinaryExpressionOperatorToken(token) || isPrefixUnaryExpressionOperatorToken(token)) { - return 2; + return TokenClass.Operator; } - else if (token >= 14 && token <= 63) { - return 0; + else if (token >= 14 && token <= 64) { + return TokenClass.Punctuation; } switch (token) { case 7: - return 6; + return TokenClass.NumberLiteral; case 8: - return 7; + return TokenClass.StringLiteral; case 9: - return 8; + return TokenClass.RegExpLiteral; case 6: case 3: case 2: - return 3; + return TokenClass.Comment; case 5: case 4: - return 4; - case 64: + return TokenClass.Whitespace; + case 65: default: if (ts.isTemplateLiteralKind(token)) { - return 7; + return TokenClass.StringLiteral; } - return 5; + return TokenClass.Identifier; } } return { getClassificationsForLine: getClassificationsForLine }; @@ -29300,7 +33741,7 @@ var ts; getNodeConstructor: function (kind) { function Node() { } - var proto = kind === 210 ? new SourceFileObject() : new NodeObject(); + var proto = kind === 227 ? new SourceFileObject() : new NodeObject(); proto.kind = kind; proto.pos = 0; proto.end = 0; @@ -29316,12 +33757,15 @@ var ts; } initializeServices(); })(ts || (ts = {})); +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. +/// var ts; (function (ts) { var BreakpointResolver; (function (BreakpointResolver) { function spanInSourceFileAtLocation(sourceFile, position) { - if (sourceFile.flags & 1024) { + if (sourceFile.flags & 2048) { return undefined; } var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); @@ -29354,94 +33798,101 @@ var ts; function spanInNode(node) { if (node) { if (ts.isExpression(node)) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return spanInPreviousNode(node); } - if (node.parent.kind === 179) { + if (node.parent.kind === 186) { return textSpan(node); } - if (node.parent.kind === 165 && node.parent.operatorToken.kind === 23) { + if (node.parent.kind === 169 && node.parent.operatorToken.kind === 23) { return textSpan(node); } - if (node.parent.kind == 159 && node.parent.body == node) { + if (node.parent.kind == 163 && node.parent.body == node) { return textSpan(node); } } switch (node.kind) { - case 173: + case 180: return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 191: - case 128: - case 127: - return spanInVariableDeclaration(node); - case 126: - return spanInParameterDeclaration(node); - case 193: - case 130: - case 129: + case 198: case 132: - case 133: case 131: - case 158: - case 159: + return spanInVariableDeclaration(node); + case 129: + return spanInParameterDeclaration(node); + case 200: + case 134: + case 133: + case 136: + case 137: + case 135: + case 162: + case 163: return spanInFunctionDeclaration(node); - case 172: + case 179: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } - case 199: - return spanInBlock(node); case 206: + return spanInBlock(node); + case 223: return spanInBlock(node.block); - case 175: + case 182: return textSpan(node.expression); - case 184: + case 191: return textSpan(node.getChildAt(0), node.expression); - case 178: + case 185: return textSpan(node, ts.findNextToken(node.expression, node)); - case 177: + case 184: + return spanInNode(node.statement); + case 197: + return textSpan(node.getChildAt(0)); + case 183: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 194: return spanInNode(node.statement); case 190: - return textSpan(node.getChildAt(0)); - case 176: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 187: - return spanInNode(node.statement); - case 183: - case 182: - return textSpan(node.getChildAt(0), node.label); - case 179: - return spanInForStatement(node); - case 180: - case 181: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 186: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 203: - case 204: - return spanInNode(node.statements[0]); case 189: - return spanInBlock(node.tryBlock); + return textSpan(node.getChildAt(0), node.label); + case 186: + return spanInForStatement(node); + case 187: case 188: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 193: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 220: + case 221: + return spanInNode(node.statements[0]); + case 196: + return spanInBlock(node.tryBlock); + case 195: return textSpan(node, node.expression); - case 201: - return textSpan(node, node.exportName); - case 200: + case 214: + if (!node.expression) { + return undefined; + } + return textSpan(node, node.expression); + case 208: return textSpan(node, node.moduleReference); - case 198: + case 209: + return textSpan(node, node.moduleSpecifier); + case 215: + return textSpan(node, node.moduleSpecifier); + case 205: if (ts.getModuleInstanceState(node) !== 1) { return undefined; } - case 194: - case 197: - case 209: - case 153: - case 154: + case 201: + case 204: + case 226: + case 157: + case 158: return textSpan(node); - case 185: + case 192: return spanInNode(node.statement); - case 195: - case 196: + case 202: + case 203: return undefined; case 22: case 1: @@ -29461,33 +33912,37 @@ var ts; case 25: case 24: return spanInGreaterThanOrLessThanToken(node); - case 99: + case 100: return spanInWhileKeyword(node); - case 75: - case 67: - case 80: + case 76: + case 68: + case 81: return spanInNextNode(node); default: - if (node.parent.kind === 207 && node.parent.name === node) { + if (node.parent.kind === 224 && node.parent.name === node) { return spanInNode(node.parent.initializer); } - if (node.parent.kind === 156 && node.parent.type === node) { + if (node.parent.kind === 160 && node.parent.type === node) { return spanInNode(node.parent.expression); } - if (ts.isAnyFunction(node.parent) && node.parent.type === node) { + if (ts.isFunctionLike(node.parent) && node.parent.type === node) { return spanInPreviousNode(node); } return spanInNode(node.parent); } } function spanInVariableDeclaration(variableDeclaration) { - if (variableDeclaration.parent.parent.kind === 180 || - variableDeclaration.parent.parent.kind === 181) { + if (variableDeclaration.parent.parent.kind === 187 || + variableDeclaration.parent.parent.kind === 188) { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === 173; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 179 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); - var declarations = isParentVariableStatement ? variableDeclaration.parent.parent.declarationList.declarations : isDeclarationOfForStatement ? variableDeclaration.parent.parent.initializer.declarations : undefined; + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 180; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 186 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var declarations = isParentVariableStatement + ? variableDeclaration.parent.parent.declarationList.declarations + : isDeclarationOfForStatement + ? variableDeclaration.parent.parent.initializer.declarations + : undefined; if (variableDeclaration.initializer || (variableDeclaration.flags & 1)) { if (declarations && declarations[0] === variableDeclaration) { if (isParentVariableStatement) { @@ -29528,7 +33983,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 1) || - (functionDeclaration.parent.kind === 194 && functionDeclaration.kind !== 131); + (functionDeclaration.parent.kind === 201 && functionDeclaration.kind !== 135); } function spanInFunctionDeclaration(functionDeclaration) { if (!functionDeclaration.body) { @@ -29548,23 +34003,23 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 198: + case 205: if (ts.getModuleInstanceState(block.parent) !== 1) { return undefined; } - case 178: - case 176: - case 180: - case 181: + case 185: + case 183: + case 187: + case 188: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); - case 179: + case 186: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } return spanInNode(block.statements[0]); } function spanInForStatement(forStatement) { if (forStatement.initializer) { - if (forStatement.initializer.kind === 192) { + if (forStatement.initializer.kind === 199) { var variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); @@ -29583,36 +34038,36 @@ var ts; } function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 197: + case 204: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 194: + case 201: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 186: - return spanInNodeIfStartsOnSameLine(node.parent, node.parent.clauses[0]); + case 207: + return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } return spanInNode(node.parent); } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 199: + case 206: if (ts.getModuleInstanceState(node.parent.parent) !== 1) { return undefined; } - case 197: - case 194: + case 204: + case 201: return textSpan(node); - case 172: + case 179: if (ts.isFunctionBlock(node.parent)) { return textSpan(node); } - case 206: + case 223: return spanInNode(node.parent.statements[node.parent.statements.length - 1]); ; - case 186: - var switchStatement = node.parent; - var lastClause = switchStatement.clauses[switchStatement.clauses.length - 1]; + case 207: + var caseBlock = node.parent; + var lastClause = caseBlock.clauses[caseBlock.clauses.length - 1]; if (lastClause) { return spanInNode(lastClause.statements[lastClause.statements.length - 1]); } @@ -29622,24 +34077,24 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInCloseParenToken(node) { switch (node.parent.kind) { - case 158: - case 193: - case 159: - case 130: - case 129: - case 132: + case 162: + case 200: + case 163: + case 134: case 133: - case 131: - case 178: - case 177: - case 179: + case 136: + case 137: + case 135: + case 185: + case 184: + case 186: return spanInPreviousNode(node); default: return spanInNode(node.parent); @@ -29647,19 +34102,19 @@ var ts; return spanInNode(node.parent); } function spanInColonToken(node) { - if (ts.isAnyFunction(node.parent) || node.parent.kind === 207) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 224) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 156) { + if (node.parent.kind === 160) { return spanInNode(node.parent.expression); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); } return spanInNode(node.parent); @@ -29669,6 +34124,21 @@ var ts; BreakpointResolver.spanInSourceFileAtLocation = spanInSourceFileAtLocation; })(BreakpointResolver = ts.BreakpointResolver || (ts.BreakpointResolver = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var debugObjectHost = this; var ts; (function (ts) { @@ -29752,7 +34222,12 @@ var ts; return this.shimHost.getCurrentDirectory(); }; LanguageServiceShimHostAdapter.prototype.getDefaultLibFileName = function (options) { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + try { + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + } + catch (e) { + return ""; + } }; return LanguageServiceShimHostAdapter; })(); @@ -29948,6 +34423,12 @@ var ts; return _this.languageService.getReferencesAtPosition(fileName, position); }); }; + LanguageServiceShimObject.prototype.findReferences = function (fileName, position) { + var _this = this; + return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { + return _this.languageService.findReferences(fileName, position); + }); + }; LanguageServiceShimObject.prototype.getOccurrencesAtPosition = function (fileName, position) { var _this = this; return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { @@ -30157,3 +34638,4 @@ var TypeScript; Services.TypeScriptServicesFactory = ts.TypeScriptServicesFactory; })(Services = TypeScript.Services || (TypeScript.Services = {})); })(TypeScript || (TypeScript = {})); +var toolsVersion = "1.4"; diff --git a/bin/typescriptServices.d.ts b/bin/typescriptServices.d.ts index 4421c8d7255..972a63a67bf 100644 --- a/bin/typescriptServices.d.ts +++ b/bin/typescriptServices.d.ts @@ -74,181 +74,198 @@ declare module ts { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - ImplementsKeyword = 101, - InterfaceKeyword = 102, - LetKeyword = 103, - PackageKeyword = 104, - PrivateKeyword = 105, - ProtectedKeyword = 106, - PublicKeyword = 107, - StaticKeyword = 108, - YieldKeyword = 109, - AnyKeyword = 110, - BooleanKeyword = 111, - ConstructorKeyword = 112, - DeclareKeyword = 113, - GetKeyword = 114, - ModuleKeyword = 115, - RequireKeyword = 116, - NumberKeyword = 117, - SetKeyword = 118, - StringKeyword = 119, - SymbolKeyword = 120, - TypeKeyword = 121, - OfKeyword = 122, - QualifiedName = 123, - ComputedPropertyName = 124, - TypeParameter = 125, - Parameter = 126, - PropertySignature = 127, - PropertyDeclaration = 128, - MethodSignature = 129, - MethodDeclaration = 130, - Constructor = 131, - GetAccessor = 132, - SetAccessor = 133, - CallSignature = 134, - ConstructSignature = 135, - IndexSignature = 136, - TypeReference = 137, - FunctionType = 138, - ConstructorType = 139, - TypeQuery = 140, - TypeLiteral = 141, - ArrayType = 142, - TupleType = 143, - UnionType = 144, - ParenthesizedType = 145, - ObjectBindingPattern = 146, - ArrayBindingPattern = 147, - BindingElement = 148, - ArrayLiteralExpression = 149, - ObjectLiteralExpression = 150, - PropertyAccessExpression = 151, - ElementAccessExpression = 152, - CallExpression = 153, - NewExpression = 154, - TaggedTemplateExpression = 155, - TypeAssertionExpression = 156, - ParenthesizedExpression = 157, - FunctionExpression = 158, - ArrowFunction = 159, - DeleteExpression = 160, - TypeOfExpression = 161, - VoidExpression = 162, - PrefixUnaryExpression = 163, - PostfixUnaryExpression = 164, - BinaryExpression = 165, - ConditionalExpression = 166, - TemplateExpression = 167, - YieldExpression = 168, - SpreadElementExpression = 169, - OmittedExpression = 170, - TemplateSpan = 171, - Block = 172, - VariableStatement = 173, - EmptyStatement = 174, - ExpressionStatement = 175, - IfStatement = 176, - DoStatement = 177, - WhileStatement = 178, - ForStatement = 179, - ForInStatement = 180, - ForOfStatement = 181, - ContinueStatement = 182, - BreakStatement = 183, - ReturnStatement = 184, - WithStatement = 185, - SwitchStatement = 186, - LabeledStatement = 187, - ThrowStatement = 188, - TryStatement = 189, - DebuggerStatement = 190, - VariableDeclaration = 191, - VariableDeclarationList = 192, - FunctionDeclaration = 193, - ClassDeclaration = 194, - InterfaceDeclaration = 195, - TypeAliasDeclaration = 196, - EnumDeclaration = 197, - ModuleDeclaration = 198, - ModuleBlock = 199, - ImportDeclaration = 200, - ExportAssignment = 201, - ExternalModuleReference = 202, - CaseClause = 203, - DefaultClause = 204, - HeritageClause = 205, - CatchClause = 206, - PropertyAssignment = 207, - ShorthandPropertyAssignment = 208, - EnumMember = 209, - SourceFile = 210, - SyntaxList = 211, - Count = 212, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 122, - FirstFutureReservedWord = 101, - LastFutureReservedWord = 109, - FirstTypeNode = 137, - LastTypeNode = 145, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, + ImplementsKeyword = 103, + InterfaceKeyword = 104, + LetKeyword = 105, + PackageKeyword = 106, + PrivateKeyword = 107, + ProtectedKeyword = 108, + PublicKeyword = 109, + StaticKeyword = 110, + YieldKeyword = 111, + AnyKeyword = 112, + BooleanKeyword = 113, + ConstructorKeyword = 114, + DeclareKeyword = 115, + GetKeyword = 116, + ModuleKeyword = 117, + RequireKeyword = 118, + NumberKeyword = 119, + SetKeyword = 120, + StringKeyword = 121, + SymbolKeyword = 122, + TypeKeyword = 123, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, + FirstFutureReservedWord = 103, + LastFutureReservedWord = 111, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 122, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -256,8 +273,8 @@ declare module ts { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 123, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -266,25 +283,28 @@ declare module ts { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -295,13 +315,14 @@ declare module ts { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; + modifiers?: ModifiersArray; id?: number; parent?: Node; symbol?: Symbol; locals?: SymbolTable; nextContainer?: Node; localSymbol?: Symbol; - modifiers?: ModifiersArray; } interface NodeArray extends Array, TextRange { hasTrailingComma?: boolean; @@ -325,6 +346,9 @@ declare module ts { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -402,7 +426,7 @@ declare module ts { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -411,6 +435,9 @@ declare module ts { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -495,16 +522,22 @@ declare module ts { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -531,6 +564,7 @@ declare module ts { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -542,6 +576,10 @@ declare module ts { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -604,6 +642,9 @@ declare module ts { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -626,20 +667,23 @@ declare module ts { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -651,7 +695,7 @@ declare module ts { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -672,15 +716,43 @@ declare module ts { interface ModuleBlock extends Node, ModuleElement { statements: NodeArray; } - interface ImportDeclaration extends Declaration, ModuleElement { + interface ImportEqualsDeclaration extends Declaration, ModuleElement { name: Identifier; moduleReference: EntityName | ExternalModuleReference; } interface ExternalModuleReference extends Node { expression?: Expression; } - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ImportDeclaration extends Statement, ModuleElement { + importClause?: ImportClause; + moduleSpecifier: Expression; + } + interface ImportClause extends Declaration { + name?: Identifier; + namedBindings?: NamespaceImport | NamedImports; + } + interface NamespaceImport extends Declaration { + name: Identifier; + } + interface ExportDeclaration extends Declaration, ModuleElement { + exportClause?: NamedExports; + moduleSpecifier?: Expression; + } + interface NamedImportsOrExports extends Node { + elements: NodeArray; + } + type NamedImports = NamedImportsOrExports; + type NamedExports = NamedImportsOrExports; + interface ImportOrExportSpecifier extends Declaration { + propertyName?: Identifier; + name: Identifier; + } + type ImportSpecifier = ImportOrExportSpecifier; + type ExportSpecifier = ImportOrExportSpecifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -715,14 +787,14 @@ declare module ts { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -793,6 +865,7 @@ declare module ts { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfExternalModule(node: ImportDeclaration): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -840,9 +913,10 @@ declare module ts { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -850,20 +924,23 @@ declare module ts { errorModuleName?: string; } interface EmitResolver { - getLocalNameOfContainer(container: ModuleDeclaration | EnumDeclaration): string; - getExpressionNamePrefix(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: ImportDeclaration): boolean; - isTopLevelValueImportWithEntityName(node: ImportDeclaration): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -889,13 +966,14 @@ declare module ts { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -920,7 +998,7 @@ declare module ts { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -949,8 +1027,9 @@ declare module ts { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignSymbol?: Symbol; unionType?: UnionType; + resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -966,6 +1045,8 @@ declare module ts { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -975,7 +1056,8 @@ declare module ts { enumMemberValue?: number; isIllegalTypeReferenceInConstraint?: boolean; isVisible?: boolean; - localModuleName?: string; + generatedName?: string; + generatedNames?: Map; assignmentChecks?: Map; hasReportedStatementInAmbientContext?: boolean; importOnRightSide?: Symbol; @@ -1084,17 +1166,6 @@ declare module ts { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1122,7 +1193,6 @@ declare module ts { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1136,7 +1206,6 @@ declare module ts { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1149,7 +1218,7 @@ declare module ts { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1341,6 +1410,7 @@ declare module ts { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1389,13 +1459,31 @@ declare module ts { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module ts { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module ts { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module ts { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1437,9 +1525,6 @@ declare module ts { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1505,6 +1590,7 @@ declare module ts { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1560,6 +1646,7 @@ declare module ts { kind: string; kindModifiers: string; matchKind: string; + isCaseSensitive: boolean; fileName: string; textSpan: TextSpan; containerName: string; @@ -1590,6 +1677,10 @@ declare module ts { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1792,25 +1883,17 @@ declare module ts { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1891,8 +1974,9 @@ declare module ts { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; diff --git a/bin/typescriptServices.js b/bin/typescriptServices.js index 1d2c9f37ac8..0ea54239508 100644 --- a/bin/typescriptServices.js +++ b/bin/typescriptServices.js @@ -68,181 +68,198 @@ var ts; SyntaxKind[SyntaxKind["BarBarToken"] = 49] = "BarBarToken"; SyntaxKind[SyntaxKind["QuestionToken"] = 50] = "QuestionToken"; SyntaxKind[SyntaxKind["ColonToken"] = 51] = "ColonToken"; - SyntaxKind[SyntaxKind["EqualsToken"] = 52] = "EqualsToken"; - SyntaxKind[SyntaxKind["PlusEqualsToken"] = 53] = "PlusEqualsToken"; - SyntaxKind[SyntaxKind["MinusEqualsToken"] = 54] = "MinusEqualsToken"; - SyntaxKind[SyntaxKind["AsteriskEqualsToken"] = 55] = "AsteriskEqualsToken"; - SyntaxKind[SyntaxKind["SlashEqualsToken"] = 56] = "SlashEqualsToken"; - SyntaxKind[SyntaxKind["PercentEqualsToken"] = 57] = "PercentEqualsToken"; - SyntaxKind[SyntaxKind["LessThanLessThanEqualsToken"] = 58] = "LessThanLessThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanEqualsToken"] = 59] = "GreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanEqualsToken"] = 60] = "GreaterThanGreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["AmpersandEqualsToken"] = 61] = "AmpersandEqualsToken"; - SyntaxKind[SyntaxKind["BarEqualsToken"] = 62] = "BarEqualsToken"; - SyntaxKind[SyntaxKind["CaretEqualsToken"] = 63] = "CaretEqualsToken"; - SyntaxKind[SyntaxKind["Identifier"] = 64] = "Identifier"; - SyntaxKind[SyntaxKind["BreakKeyword"] = 65] = "BreakKeyword"; - SyntaxKind[SyntaxKind["CaseKeyword"] = 66] = "CaseKeyword"; - SyntaxKind[SyntaxKind["CatchKeyword"] = 67] = "CatchKeyword"; - SyntaxKind[SyntaxKind["ClassKeyword"] = 68] = "ClassKeyword"; - SyntaxKind[SyntaxKind["ConstKeyword"] = 69] = "ConstKeyword"; - SyntaxKind[SyntaxKind["ContinueKeyword"] = 70] = "ContinueKeyword"; - SyntaxKind[SyntaxKind["DebuggerKeyword"] = 71] = "DebuggerKeyword"; - SyntaxKind[SyntaxKind["DefaultKeyword"] = 72] = "DefaultKeyword"; - SyntaxKind[SyntaxKind["DeleteKeyword"] = 73] = "DeleteKeyword"; - SyntaxKind[SyntaxKind["DoKeyword"] = 74] = "DoKeyword"; - SyntaxKind[SyntaxKind["ElseKeyword"] = 75] = "ElseKeyword"; - SyntaxKind[SyntaxKind["EnumKeyword"] = 76] = "EnumKeyword"; - SyntaxKind[SyntaxKind["ExportKeyword"] = 77] = "ExportKeyword"; - SyntaxKind[SyntaxKind["ExtendsKeyword"] = 78] = "ExtendsKeyword"; - SyntaxKind[SyntaxKind["FalseKeyword"] = 79] = "FalseKeyword"; - SyntaxKind[SyntaxKind["FinallyKeyword"] = 80] = "FinallyKeyword"; - SyntaxKind[SyntaxKind["ForKeyword"] = 81] = "ForKeyword"; - SyntaxKind[SyntaxKind["FunctionKeyword"] = 82] = "FunctionKeyword"; - SyntaxKind[SyntaxKind["IfKeyword"] = 83] = "IfKeyword"; - SyntaxKind[SyntaxKind["ImportKeyword"] = 84] = "ImportKeyword"; - SyntaxKind[SyntaxKind["InKeyword"] = 85] = "InKeyword"; - SyntaxKind[SyntaxKind["InstanceOfKeyword"] = 86] = "InstanceOfKeyword"; - SyntaxKind[SyntaxKind["NewKeyword"] = 87] = "NewKeyword"; - SyntaxKind[SyntaxKind["NullKeyword"] = 88] = "NullKeyword"; - SyntaxKind[SyntaxKind["ReturnKeyword"] = 89] = "ReturnKeyword"; - SyntaxKind[SyntaxKind["SuperKeyword"] = 90] = "SuperKeyword"; - SyntaxKind[SyntaxKind["SwitchKeyword"] = 91] = "SwitchKeyword"; - SyntaxKind[SyntaxKind["ThisKeyword"] = 92] = "ThisKeyword"; - SyntaxKind[SyntaxKind["ThrowKeyword"] = 93] = "ThrowKeyword"; - SyntaxKind[SyntaxKind["TrueKeyword"] = 94] = "TrueKeyword"; - SyntaxKind[SyntaxKind["TryKeyword"] = 95] = "TryKeyword"; - SyntaxKind[SyntaxKind["TypeOfKeyword"] = 96] = "TypeOfKeyword"; - SyntaxKind[SyntaxKind["VarKeyword"] = 97] = "VarKeyword"; - SyntaxKind[SyntaxKind["VoidKeyword"] = 98] = "VoidKeyword"; - SyntaxKind[SyntaxKind["WhileKeyword"] = 99] = "WhileKeyword"; - SyntaxKind[SyntaxKind["WithKeyword"] = 100] = "WithKeyword"; - SyntaxKind[SyntaxKind["ImplementsKeyword"] = 101] = "ImplementsKeyword"; - SyntaxKind[SyntaxKind["InterfaceKeyword"] = 102] = "InterfaceKeyword"; - SyntaxKind[SyntaxKind["LetKeyword"] = 103] = "LetKeyword"; - SyntaxKind[SyntaxKind["PackageKeyword"] = 104] = "PackageKeyword"; - SyntaxKind[SyntaxKind["PrivateKeyword"] = 105] = "PrivateKeyword"; - SyntaxKind[SyntaxKind["ProtectedKeyword"] = 106] = "ProtectedKeyword"; - SyntaxKind[SyntaxKind["PublicKeyword"] = 107] = "PublicKeyword"; - SyntaxKind[SyntaxKind["StaticKeyword"] = 108] = "StaticKeyword"; - SyntaxKind[SyntaxKind["YieldKeyword"] = 109] = "YieldKeyword"; - SyntaxKind[SyntaxKind["AnyKeyword"] = 110] = "AnyKeyword"; - SyntaxKind[SyntaxKind["BooleanKeyword"] = 111] = "BooleanKeyword"; - SyntaxKind[SyntaxKind["ConstructorKeyword"] = 112] = "ConstructorKeyword"; - SyntaxKind[SyntaxKind["DeclareKeyword"] = 113] = "DeclareKeyword"; - SyntaxKind[SyntaxKind["GetKeyword"] = 114] = "GetKeyword"; - SyntaxKind[SyntaxKind["ModuleKeyword"] = 115] = "ModuleKeyword"; - SyntaxKind[SyntaxKind["RequireKeyword"] = 116] = "RequireKeyword"; - SyntaxKind[SyntaxKind["NumberKeyword"] = 117] = "NumberKeyword"; - SyntaxKind[SyntaxKind["SetKeyword"] = 118] = "SetKeyword"; - SyntaxKind[SyntaxKind["StringKeyword"] = 119] = "StringKeyword"; - SyntaxKind[SyntaxKind["SymbolKeyword"] = 120] = "SymbolKeyword"; - SyntaxKind[SyntaxKind["TypeKeyword"] = 121] = "TypeKeyword"; - SyntaxKind[SyntaxKind["OfKeyword"] = 122] = "OfKeyword"; - SyntaxKind[SyntaxKind["QualifiedName"] = 123] = "QualifiedName"; - SyntaxKind[SyntaxKind["ComputedPropertyName"] = 124] = "ComputedPropertyName"; - SyntaxKind[SyntaxKind["TypeParameter"] = 125] = "TypeParameter"; - SyntaxKind[SyntaxKind["Parameter"] = 126] = "Parameter"; - SyntaxKind[SyntaxKind["PropertySignature"] = 127] = "PropertySignature"; - SyntaxKind[SyntaxKind["PropertyDeclaration"] = 128] = "PropertyDeclaration"; - SyntaxKind[SyntaxKind["MethodSignature"] = 129] = "MethodSignature"; - SyntaxKind[SyntaxKind["MethodDeclaration"] = 130] = "MethodDeclaration"; - SyntaxKind[SyntaxKind["Constructor"] = 131] = "Constructor"; - SyntaxKind[SyntaxKind["GetAccessor"] = 132] = "GetAccessor"; - SyntaxKind[SyntaxKind["SetAccessor"] = 133] = "SetAccessor"; - SyntaxKind[SyntaxKind["CallSignature"] = 134] = "CallSignature"; - SyntaxKind[SyntaxKind["ConstructSignature"] = 135] = "ConstructSignature"; - SyntaxKind[SyntaxKind["IndexSignature"] = 136] = "IndexSignature"; - SyntaxKind[SyntaxKind["TypeReference"] = 137] = "TypeReference"; - SyntaxKind[SyntaxKind["FunctionType"] = 138] = "FunctionType"; - SyntaxKind[SyntaxKind["ConstructorType"] = 139] = "ConstructorType"; - SyntaxKind[SyntaxKind["TypeQuery"] = 140] = "TypeQuery"; - SyntaxKind[SyntaxKind["TypeLiteral"] = 141] = "TypeLiteral"; - SyntaxKind[SyntaxKind["ArrayType"] = 142] = "ArrayType"; - SyntaxKind[SyntaxKind["TupleType"] = 143] = "TupleType"; - SyntaxKind[SyntaxKind["UnionType"] = 144] = "UnionType"; - SyntaxKind[SyntaxKind["ParenthesizedType"] = 145] = "ParenthesizedType"; - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 146] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 147] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 148] = "BindingElement"; - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 149] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 150] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 151] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 152] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 153] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 154] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 155] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 156] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 157] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 158] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 159] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 160] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 161] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 162] = "VoidExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 163] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 164] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 165] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 166] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 167] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 168] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 169] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 170] = "OmittedExpression"; - SyntaxKind[SyntaxKind["TemplateSpan"] = 171] = "TemplateSpan"; - SyntaxKind[SyntaxKind["Block"] = 172] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 173] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 174] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 175] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 176] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 177] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 178] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 179] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 180] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 181] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 182] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 183] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 184] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 185] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 186] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 187] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 188] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 189] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 190] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 191] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 192] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 193] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 194] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 195] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 196] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 197] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 198] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 199] = "ModuleBlock"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 200] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 201] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 202] = "ExternalModuleReference"; - SyntaxKind[SyntaxKind["CaseClause"] = 203] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 204] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 205] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 206] = "CatchClause"; - SyntaxKind[SyntaxKind["PropertyAssignment"] = 207] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 208] = "ShorthandPropertyAssignment"; - SyntaxKind[SyntaxKind["EnumMember"] = 209] = "EnumMember"; - SyntaxKind[SyntaxKind["SourceFile"] = 210] = "SourceFile"; - SyntaxKind[SyntaxKind["SyntaxList"] = 211] = "SyntaxList"; - SyntaxKind[SyntaxKind["Count"] = 212] = "Count"; - SyntaxKind[SyntaxKind["FirstAssignment"] = 52] = "FirstAssignment"; - SyntaxKind[SyntaxKind["LastAssignment"] = 63] = "LastAssignment"; - SyntaxKind[SyntaxKind["FirstReservedWord"] = 65] = "FirstReservedWord"; - SyntaxKind[SyntaxKind["LastReservedWord"] = 100] = "LastReservedWord"; - SyntaxKind[SyntaxKind["FirstKeyword"] = 65] = "FirstKeyword"; - SyntaxKind[SyntaxKind["LastKeyword"] = 122] = "LastKeyword"; - SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 101] = "FirstFutureReservedWord"; - SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 109] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 137] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 145] = "LastTypeNode"; + SyntaxKind[SyntaxKind["AtToken"] = 52] = "AtToken"; + SyntaxKind[SyntaxKind["EqualsToken"] = 53] = "EqualsToken"; + SyntaxKind[SyntaxKind["PlusEqualsToken"] = 54] = "PlusEqualsToken"; + SyntaxKind[SyntaxKind["MinusEqualsToken"] = 55] = "MinusEqualsToken"; + SyntaxKind[SyntaxKind["AsteriskEqualsToken"] = 56] = "AsteriskEqualsToken"; + SyntaxKind[SyntaxKind["SlashEqualsToken"] = 57] = "SlashEqualsToken"; + SyntaxKind[SyntaxKind["PercentEqualsToken"] = 58] = "PercentEqualsToken"; + SyntaxKind[SyntaxKind["LessThanLessThanEqualsToken"] = 59] = "LessThanLessThanEqualsToken"; + SyntaxKind[SyntaxKind["GreaterThanGreaterThanEqualsToken"] = 60] = "GreaterThanGreaterThanEqualsToken"; + SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanEqualsToken"] = 61] = "GreaterThanGreaterThanGreaterThanEqualsToken"; + SyntaxKind[SyntaxKind["AmpersandEqualsToken"] = 62] = "AmpersandEqualsToken"; + SyntaxKind[SyntaxKind["BarEqualsToken"] = 63] = "BarEqualsToken"; + SyntaxKind[SyntaxKind["CaretEqualsToken"] = 64] = "CaretEqualsToken"; + SyntaxKind[SyntaxKind["Identifier"] = 65] = "Identifier"; + SyntaxKind[SyntaxKind["BreakKeyword"] = 66] = "BreakKeyword"; + SyntaxKind[SyntaxKind["CaseKeyword"] = 67] = "CaseKeyword"; + SyntaxKind[SyntaxKind["CatchKeyword"] = 68] = "CatchKeyword"; + SyntaxKind[SyntaxKind["ClassKeyword"] = 69] = "ClassKeyword"; + SyntaxKind[SyntaxKind["ConstKeyword"] = 70] = "ConstKeyword"; + SyntaxKind[SyntaxKind["ContinueKeyword"] = 71] = "ContinueKeyword"; + SyntaxKind[SyntaxKind["DebuggerKeyword"] = 72] = "DebuggerKeyword"; + SyntaxKind[SyntaxKind["DefaultKeyword"] = 73] = "DefaultKeyword"; + SyntaxKind[SyntaxKind["DeleteKeyword"] = 74] = "DeleteKeyword"; + SyntaxKind[SyntaxKind["DoKeyword"] = 75] = "DoKeyword"; + SyntaxKind[SyntaxKind["ElseKeyword"] = 76] = "ElseKeyword"; + SyntaxKind[SyntaxKind["EnumKeyword"] = 77] = "EnumKeyword"; + SyntaxKind[SyntaxKind["ExportKeyword"] = 78] = "ExportKeyword"; + SyntaxKind[SyntaxKind["ExtendsKeyword"] = 79] = "ExtendsKeyword"; + SyntaxKind[SyntaxKind["FalseKeyword"] = 80] = "FalseKeyword"; + SyntaxKind[SyntaxKind["FinallyKeyword"] = 81] = "FinallyKeyword"; + SyntaxKind[SyntaxKind["ForKeyword"] = 82] = "ForKeyword"; + SyntaxKind[SyntaxKind["FunctionKeyword"] = 83] = "FunctionKeyword"; + SyntaxKind[SyntaxKind["IfKeyword"] = 84] = "IfKeyword"; + SyntaxKind[SyntaxKind["ImportKeyword"] = 85] = "ImportKeyword"; + SyntaxKind[SyntaxKind["InKeyword"] = 86] = "InKeyword"; + SyntaxKind[SyntaxKind["InstanceOfKeyword"] = 87] = "InstanceOfKeyword"; + SyntaxKind[SyntaxKind["NewKeyword"] = 88] = "NewKeyword"; + SyntaxKind[SyntaxKind["NullKeyword"] = 89] = "NullKeyword"; + SyntaxKind[SyntaxKind["ReturnKeyword"] = 90] = "ReturnKeyword"; + SyntaxKind[SyntaxKind["SuperKeyword"] = 91] = "SuperKeyword"; + SyntaxKind[SyntaxKind["SwitchKeyword"] = 92] = "SwitchKeyword"; + SyntaxKind[SyntaxKind["ThisKeyword"] = 93] = "ThisKeyword"; + SyntaxKind[SyntaxKind["ThrowKeyword"] = 94] = "ThrowKeyword"; + SyntaxKind[SyntaxKind["TrueKeyword"] = 95] = "TrueKeyword"; + SyntaxKind[SyntaxKind["TryKeyword"] = 96] = "TryKeyword"; + SyntaxKind[SyntaxKind["TypeOfKeyword"] = 97] = "TypeOfKeyword"; + SyntaxKind[SyntaxKind["VarKeyword"] = 98] = "VarKeyword"; + SyntaxKind[SyntaxKind["VoidKeyword"] = 99] = "VoidKeyword"; + SyntaxKind[SyntaxKind["WhileKeyword"] = 100] = "WhileKeyword"; + SyntaxKind[SyntaxKind["WithKeyword"] = 101] = "WithKeyword"; + SyntaxKind[SyntaxKind["AsKeyword"] = 102] = "AsKeyword"; + SyntaxKind[SyntaxKind["ImplementsKeyword"] = 103] = "ImplementsKeyword"; + SyntaxKind[SyntaxKind["InterfaceKeyword"] = 104] = "InterfaceKeyword"; + SyntaxKind[SyntaxKind["LetKeyword"] = 105] = "LetKeyword"; + SyntaxKind[SyntaxKind["PackageKeyword"] = 106] = "PackageKeyword"; + SyntaxKind[SyntaxKind["PrivateKeyword"] = 107] = "PrivateKeyword"; + SyntaxKind[SyntaxKind["ProtectedKeyword"] = 108] = "ProtectedKeyword"; + SyntaxKind[SyntaxKind["PublicKeyword"] = 109] = "PublicKeyword"; + SyntaxKind[SyntaxKind["StaticKeyword"] = 110] = "StaticKeyword"; + SyntaxKind[SyntaxKind["YieldKeyword"] = 111] = "YieldKeyword"; + SyntaxKind[SyntaxKind["AnyKeyword"] = 112] = "AnyKeyword"; + SyntaxKind[SyntaxKind["BooleanKeyword"] = 113] = "BooleanKeyword"; + SyntaxKind[SyntaxKind["ConstructorKeyword"] = 114] = "ConstructorKeyword"; + SyntaxKind[SyntaxKind["DeclareKeyword"] = 115] = "DeclareKeyword"; + SyntaxKind[SyntaxKind["GetKeyword"] = 116] = "GetKeyword"; + SyntaxKind[SyntaxKind["ModuleKeyword"] = 117] = "ModuleKeyword"; + SyntaxKind[SyntaxKind["RequireKeyword"] = 118] = "RequireKeyword"; + SyntaxKind[SyntaxKind["NumberKeyword"] = 119] = "NumberKeyword"; + SyntaxKind[SyntaxKind["SetKeyword"] = 120] = "SetKeyword"; + SyntaxKind[SyntaxKind["StringKeyword"] = 121] = "StringKeyword"; + SyntaxKind[SyntaxKind["SymbolKeyword"] = 122] = "SymbolKeyword"; + SyntaxKind[SyntaxKind["TypeKeyword"] = 123] = "TypeKeyword"; + SyntaxKind[SyntaxKind["FromKeyword"] = 124] = "FromKeyword"; + SyntaxKind[SyntaxKind["OfKeyword"] = 125] = "OfKeyword"; + SyntaxKind[SyntaxKind["QualifiedName"] = 126] = "QualifiedName"; + SyntaxKind[SyntaxKind["ComputedPropertyName"] = 127] = "ComputedPropertyName"; + SyntaxKind[SyntaxKind["TypeParameter"] = 128] = "TypeParameter"; + SyntaxKind[SyntaxKind["Parameter"] = 129] = "Parameter"; + SyntaxKind[SyntaxKind["Decorator"] = 130] = "Decorator"; + SyntaxKind[SyntaxKind["PropertySignature"] = 131] = "PropertySignature"; + SyntaxKind[SyntaxKind["PropertyDeclaration"] = 132] = "PropertyDeclaration"; + SyntaxKind[SyntaxKind["MethodSignature"] = 133] = "MethodSignature"; + SyntaxKind[SyntaxKind["MethodDeclaration"] = 134] = "MethodDeclaration"; + SyntaxKind[SyntaxKind["Constructor"] = 135] = "Constructor"; + SyntaxKind[SyntaxKind["GetAccessor"] = 136] = "GetAccessor"; + SyntaxKind[SyntaxKind["SetAccessor"] = 137] = "SetAccessor"; + SyntaxKind[SyntaxKind["CallSignature"] = 138] = "CallSignature"; + SyntaxKind[SyntaxKind["ConstructSignature"] = 139] = "ConstructSignature"; + SyntaxKind[SyntaxKind["IndexSignature"] = 140] = "IndexSignature"; + SyntaxKind[SyntaxKind["TypeReference"] = 141] = "TypeReference"; + SyntaxKind[SyntaxKind["FunctionType"] = 142] = "FunctionType"; + SyntaxKind[SyntaxKind["ConstructorType"] = 143] = "ConstructorType"; + SyntaxKind[SyntaxKind["TypeQuery"] = 144] = "TypeQuery"; + SyntaxKind[SyntaxKind["TypeLiteral"] = 145] = "TypeLiteral"; + SyntaxKind[SyntaxKind["ArrayType"] = 146] = "ArrayType"; + SyntaxKind[SyntaxKind["TupleType"] = 147] = "TupleType"; + SyntaxKind[SyntaxKind["UnionType"] = 148] = "UnionType"; + SyntaxKind[SyntaxKind["ParenthesizedType"] = 149] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 150] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 151] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 152] = "BindingElement"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 153] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 154] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 155] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 156] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 157] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 158] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 159] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 160] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 161] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 162] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 163] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 164] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 165] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 166] = "VoidExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 167] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 168] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 169] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 170] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 171] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 172] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 173] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 174] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 175] = "OmittedExpression"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 176] = "TemplateSpan"; + SyntaxKind[SyntaxKind["HeritageClauseElement"] = 177] = "HeritageClauseElement"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 178] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["Block"] = 179] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 180] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 181] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 182] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 183] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 184] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 185] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 186] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 187] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 188] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 189] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 190] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 191] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 192] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 193] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 194] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 195] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 196] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 197] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 198] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 199] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 200] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 201] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 202] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 203] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 204] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 205] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 206] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 207] = "CaseBlock"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 208] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 209] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 210] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 211] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 212] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 213] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 214] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 215] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 216] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 217] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 218] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 219] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["CaseClause"] = 220] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 221] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 222] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 223] = "CatchClause"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 224] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 225] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["EnumMember"] = 226] = "EnumMember"; + SyntaxKind[SyntaxKind["SourceFile"] = 227] = "SourceFile"; + SyntaxKind[SyntaxKind["SyntaxList"] = 228] = "SyntaxList"; + SyntaxKind[SyntaxKind["Count"] = 229] = "Count"; + SyntaxKind[SyntaxKind["FirstAssignment"] = 53] = "FirstAssignment"; + SyntaxKind[SyntaxKind["LastAssignment"] = 64] = "LastAssignment"; + SyntaxKind[SyntaxKind["FirstReservedWord"] = 66] = "FirstReservedWord"; + SyntaxKind[SyntaxKind["LastReservedWord"] = 101] = "LastReservedWord"; + SyntaxKind[SyntaxKind["FirstKeyword"] = 66] = "FirstKeyword"; + SyntaxKind[SyntaxKind["LastKeyword"] = 125] = "LastKeyword"; + SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 103] = "FirstFutureReservedWord"; + SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 111] = "LastFutureReservedWord"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 141] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 149] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 14] = "FirstPunctuation"; - SyntaxKind[SyntaxKind["LastPunctuation"] = 63] = "LastPunctuation"; + SyntaxKind[SyntaxKind["LastPunctuation"] = 64] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; - SyntaxKind[SyntaxKind["LastToken"] = 122] = "LastToken"; + SyntaxKind[SyntaxKind["LastToken"] = 125] = "LastToken"; SyntaxKind[SyntaxKind["FirstTriviaToken"] = 2] = "FirstTriviaToken"; SyntaxKind[SyntaxKind["LastTriviaToken"] = 6] = "LastTriviaToken"; SyntaxKind[SyntaxKind["FirstLiteralToken"] = 7] = "FirstLiteralToken"; @@ -250,8 +267,8 @@ var ts; SyntaxKind[SyntaxKind["FirstTemplateToken"] = 10] = "FirstTemplateToken"; SyntaxKind[SyntaxKind["LastTemplateToken"] = 13] = "LastTemplateToken"; SyntaxKind[SyntaxKind["FirstBinaryOperator"] = 24] = "FirstBinaryOperator"; - SyntaxKind[SyntaxKind["LastBinaryOperator"] = 63] = "LastBinaryOperator"; - SyntaxKind[SyntaxKind["FirstNode"] = 123] = "FirstNode"; + SyntaxKind[SyntaxKind["LastBinaryOperator"] = 64] = "LastBinaryOperator"; + SyntaxKind[SyntaxKind["FirstNode"] = 126] = "FirstNode"; })(ts.SyntaxKind || (ts.SyntaxKind = {})); var SyntaxKind = ts.SyntaxKind; (function (NodeFlags) { @@ -261,15 +278,17 @@ var ts; NodeFlags[NodeFlags["Private"] = 32] = "Private"; NodeFlags[NodeFlags["Protected"] = 64] = "Protected"; NodeFlags[NodeFlags["Static"] = 128] = "Static"; - NodeFlags[NodeFlags["MultiLine"] = 256] = "MultiLine"; - NodeFlags[NodeFlags["Synthetic"] = 512] = "Synthetic"; - NodeFlags[NodeFlags["DeclarationFile"] = 1024] = "DeclarationFile"; - NodeFlags[NodeFlags["Let"] = 2048] = "Let"; - NodeFlags[NodeFlags["Const"] = 4096] = "Const"; - NodeFlags[NodeFlags["OctalLiteral"] = 8192] = "OctalLiteral"; - NodeFlags[NodeFlags["Modifier"] = 243] = "Modifier"; + NodeFlags[NodeFlags["Default"] = 256] = "Default"; + NodeFlags[NodeFlags["MultiLine"] = 512] = "MultiLine"; + NodeFlags[NodeFlags["Synthetic"] = 1024] = "Synthetic"; + NodeFlags[NodeFlags["DeclarationFile"] = 2048] = "DeclarationFile"; + NodeFlags[NodeFlags["Let"] = 4096] = "Let"; + NodeFlags[NodeFlags["Const"] = 8192] = "Const"; + NodeFlags[NodeFlags["OctalLiteral"] = 16384] = "OctalLiteral"; + NodeFlags[NodeFlags["ExportContext"] = 32768] = "ExportContext"; + NodeFlags[NodeFlags["Modifier"] = 499] = "Modifier"; NodeFlags[NodeFlags["AccessibilityModifier"] = 112] = "AccessibilityModifier"; - NodeFlags[NodeFlags["BlockScoped"] = 6144] = "BlockScoped"; + NodeFlags[NodeFlags["BlockScoped"] = 12288] = "BlockScoped"; })(ts.NodeFlags || (ts.NodeFlags = {})); var NodeFlags = ts.NodeFlags; (function (ParserContextFlags) { @@ -277,10 +296,11 @@ var ts; ParserContextFlags[ParserContextFlags["DisallowIn"] = 2] = "DisallowIn"; ParserContextFlags[ParserContextFlags["Yield"] = 4] = "Yield"; ParserContextFlags[ParserContextFlags["GeneratorParameter"] = 8] = "GeneratorParameter"; - ParserContextFlags[ParserContextFlags["ThisNodeHasError"] = 16] = "ThisNodeHasError"; - ParserContextFlags[ParserContextFlags["ParserGeneratedFlags"] = 31] = "ParserGeneratedFlags"; - ParserContextFlags[ParserContextFlags["ThisNodeOrAnySubNodesHasError"] = 32] = "ThisNodeOrAnySubNodesHasError"; - ParserContextFlags[ParserContextFlags["HasAggregatedChildData"] = 64] = "HasAggregatedChildData"; + ParserContextFlags[ParserContextFlags["Decorator"] = 16] = "Decorator"; + ParserContextFlags[ParserContextFlags["ThisNodeHasError"] = 32] = "ThisNodeHasError"; + ParserContextFlags[ParserContextFlags["ParserGeneratedFlags"] = 63] = "ParserGeneratedFlags"; + ParserContextFlags[ParserContextFlags["ThisNodeOrAnySubNodesHasError"] = 64] = "ThisNodeOrAnySubNodesHasError"; + ParserContextFlags[ParserContextFlags["HasAggregatedChildData"] = 128] = "HasAggregatedChildData"; })(ts.ParserContextFlags || (ts.ParserContextFlags = {})); var ParserContextFlags = ts.ParserContextFlags; (function (RelationComparisonResult) { @@ -343,13 +363,14 @@ var ts; SymbolFlags[SymbolFlags["ExportValue"] = 1048576] = "ExportValue"; SymbolFlags[SymbolFlags["ExportType"] = 2097152] = "ExportType"; SymbolFlags[SymbolFlags["ExportNamespace"] = 4194304] = "ExportNamespace"; - SymbolFlags[SymbolFlags["Import"] = 8388608] = "Import"; + SymbolFlags[SymbolFlags["Alias"] = 8388608] = "Alias"; SymbolFlags[SymbolFlags["Instantiated"] = 16777216] = "Instantiated"; SymbolFlags[SymbolFlags["Merged"] = 33554432] = "Merged"; SymbolFlags[SymbolFlags["Transient"] = 67108864] = "Transient"; SymbolFlags[SymbolFlags["Prototype"] = 134217728] = "Prototype"; SymbolFlags[SymbolFlags["UnionProperty"] = 268435456] = "UnionProperty"; SymbolFlags[SymbolFlags["Optional"] = 536870912] = "Optional"; + SymbolFlags[SymbolFlags["ExportStar"] = 1073741824] = "ExportStar"; SymbolFlags[SymbolFlags["Enum"] = 384] = "Enum"; SymbolFlags[SymbolFlags["Variable"] = 3] = "Variable"; SymbolFlags[SymbolFlags["Value"] = 107455] = "Value"; @@ -374,7 +395,7 @@ var ts; SymbolFlags[SymbolFlags["SetAccessorExcludes"] = 74687] = "SetAccessorExcludes"; SymbolFlags[SymbolFlags["TypeParameterExcludes"] = 530912] = "TypeParameterExcludes"; SymbolFlags[SymbolFlags["TypeAliasExcludes"] = 793056] = "TypeAliasExcludes"; - SymbolFlags[SymbolFlags["ImportExcludes"] = 8388608] = "ImportExcludes"; + SymbolFlags[SymbolFlags["AliasExcludes"] = 8388608] = "AliasExcludes"; SymbolFlags[SymbolFlags["ModuleMember"] = 8914931] = "ModuleMember"; SymbolFlags[SymbolFlags["ExportHasLocal"] = 944] = "ExportHasLocal"; SymbolFlags[SymbolFlags["HasLocals"] = 255504] = "HasLocals"; @@ -394,6 +415,8 @@ var ts; NodeCheckFlags[NodeCheckFlags["SuperStatic"] = 32] = "SuperStatic"; NodeCheckFlags[NodeCheckFlags["ContextChecked"] = 64] = "ContextChecked"; NodeCheckFlags[NodeCheckFlags["EnumValuesComputed"] = 128] = "EnumValuesComputed"; + NodeCheckFlags[NodeCheckFlags["BlockScopedBindingInLoop"] = 256] = "BlockScopedBindingInLoop"; + NodeCheckFlags[NodeCheckFlags["EmitDecorate"] = 512] = "EmitDecorate"; })(ts.NodeCheckFlags || (ts.NodeCheckFlags = {})); var NodeCheckFlags = ts.NodeCheckFlags; (function (TypeFlags) { @@ -583,6 +606,7 @@ var ts; })(ts.CharacterCodes || (ts.CharacterCodes = {})); var CharacterCodes = ts.CharacterCodes; })(ts || (ts = {})); +/// var ts; (function (ts) { (function (Ternary) { @@ -611,8 +635,9 @@ var ts; ts.forEach = forEach; function contains(array, value) { if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (v === value) { return true; } } @@ -634,8 +659,9 @@ var ts; function countWhere(array, predicate) { var count = 0; if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (predicate(array[i])) { + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + if (predicate(v)) { count++; } } @@ -644,12 +670,13 @@ var ts; } ts.countWhere = countWhere; function filter(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (f(item)) { - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_1 = array[_i]; + if (f(item_1)) { + result.push(item_1); } } } @@ -657,10 +684,12 @@ var ts; } ts.filter = filter; function map(array, f) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - result.push(f(array[i])); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result.push(f(v)); } } return result; @@ -675,12 +704,14 @@ var ts; } ts.concatenate = concatenate; function deduplicate(array) { + var result; if (array) { - var result = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (!contains(result, item)) - result.push(item); + result = []; + for (var _i = 0; _i < array.length; _i++) { + var item_2 = array[_i]; + if (!contains(result, item_2)) { + result.push(item_2); + } } } return result; @@ -688,15 +719,19 @@ var ts; ts.deduplicate = deduplicate; function sum(array, prop) { var result = 0; - for (var i = 0; i < array.length; i++) { - result += array[i][prop]; + for (var _i = 0; _i < array.length; _i++) { + var v = array[_i]; + result += v[prop]; } return result; } ts.sum = sum; function addRange(to, from) { - for (var i = 0, n = from.length; i < n; i++) { - to.push(from[i]); + if (to && from) { + for (var _i = 0; _i < from.length; _i++) { + var v = from[_i]; + to.push(v); + } } } ts.addRange = addRange; @@ -726,6 +761,35 @@ var ts; return ~low; } ts.binarySearch = binarySearch; + function reduceLeft(array, f, initial) { + if (array) { + var count = array.length; + if (count > 0) { + var pos = 0; + var result = arguments.length <= 2 ? array[pos++] : initial; + while (pos < count) { + result = f(result, array[pos++]); + } + return result; + } + } + return initial; + } + ts.reduceLeft = reduceLeft; + function reduceRight(array, f, initial) { + if (array) { + var pos = array.length - 1; + if (pos >= 0) { + var result = arguments.length <= 2 ? array[pos--] : initial; + while (pos >= 0) { + result = f(result, array[pos--]); + } + return result; + } + } + return initial; + } + ts.reduceRight = reduceRight; var hasOwnProperty = Object.prototype.hasOwnProperty; function hasProperty(map, key) { return hasOwnProperty.call(map, key); @@ -787,14 +851,6 @@ var ts; return hasProperty(map, key) ? map[key] : undefined; } ts.lookUp = lookUp; - function mapToArray(map) { - var result = []; - for (var id in map) { - result.push(map[id]); - } - return result; - } - ts.mapToArray = mapToArray; function copyMap(source, target) { for (var p in source) { target[p] = source[p]; @@ -815,12 +871,17 @@ var ts; } ts.localizedDiagnosticMessages = undefined; function getLocaleSpecificMessage(message) { - return ts.localizedDiagnosticMessages && ts.localizedDiagnosticMessages[message] ? ts.localizedDiagnosticMessages[message] : message; + return ts.localizedDiagnosticMessages && ts.localizedDiagnosticMessages[message] + ? ts.localizedDiagnosticMessages[message] + : message; } ts.getLocaleSpecificMessage = getLocaleSpecificMessage; function createFileDiagnostic(file, start, length, message) { + var end = start + length; Debug.assert(start >= 0, "start must be non-negative, is " + start); Debug.assert(length >= 0, "length must be non-negative, is " + length); + Debug.assert(start <= file.text.length, "start must be within the bounds of the file. " + start + " > " + file.text.length); + Debug.assert(end <= file.text.length, "end must be the bounds of the file. " + end + " > " + file.text.length); var text = getLocaleSpecificMessage(message.key); if (arguments.length > 4) { text = formatStringFromArgs(text, arguments, 4); @@ -956,21 +1017,23 @@ var ts; function getNormalizedParts(normalizedSlashedPath, rootLength) { var parts = normalizedSlashedPath.substr(rootLength).split(ts.directorySeparator); var normalized = []; - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; + for (var _i = 0; _i < parts.length; _i++) { + var part = parts[_i]; if (part !== ".") { if (part === ".." && normalized.length > 0 && normalized[normalized.length - 1] !== "..") { normalized.pop(); } else { - normalized.push(part); + if (part) { + normalized.push(part); + } } } } return normalized; } function normalizePath(path) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); var normalized = getNormalizedParts(path, rootLength); return path.substr(0, rootLength) + normalized.join(ts.directorySeparator); @@ -993,7 +1056,7 @@ var ts; return [path.substr(0, rootLength)].concat(normalizedParts); } function getNormalizedPathComponents(path, currentDirectory) { - var path = normalizeSlashes(path); + path = normalizeSlashes(path); var rootLength = getRootLength(path); if (rootLength == 0) { path = combinePaths(normalizeSlashes(currentDirectory), path); @@ -1013,6 +1076,9 @@ var ts; } ts.getNormalizedPathFromPathComponents = getNormalizedPathFromPathComponents; function getNormalizedPathComponentsOfUrl(url) { + // Get root length of http://www.website.com/folder1/foler2/ + // In this example the root is: http://www.website.com/ + // normalized path components should be ["http://www.website.com/", "folder1", "folder2"] var urlLength = url.length; var rootLength = url.indexOf("://") + "://".length; while (rootLength < urlLength) { @@ -1096,8 +1162,8 @@ var ts; ts.fileExtensionIs = fileExtensionIs; var supportedExtensions = [".d.ts", ".ts", ".js"]; function removeFileExtension(path) { - for (var i = 0; i < supportedExtensions.length; i++) { - var ext = supportedExtensions[i]; + for (var _i = 0; _i < supportedExtensions.length; _i++) { + var ext = supportedExtensions[_i]; if (fileExtensionIs(path, ext)) { return path.substr(0, path.length - ext.length); } @@ -1106,7 +1172,7 @@ var ts; } ts.removeFileExtension = removeFileExtension; var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\0-\19\t\v\f\b\0\r\n\u2028\u2029\u0085]/g; + var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; var escapedCharsMap = { "\0": "\\0", "\t": "\\t", @@ -1121,20 +1187,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" }; - function escapeString(s) { - s = backslashOrDoubleQuote.test(s) ? s.replace(backslashOrDoubleQuote, getReplacement) : s; - s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; - return s; - function getReplacement(c) { - return escapedCharsMap[c] || unicodeEscape(c); - } - function unicodeEscape(c) { - var hexCharCode = c.charCodeAt(0).toString(16); - var paddedHexCode = ("0000" + hexCharCode).slice(-4); - return "\\u" + paddedHexCode; - } - } - ts.escapeString = escapeString; function getDefaultLibFileName(options) { return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; } @@ -1196,6 +1248,7 @@ var ts; Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.sys = (function () { @@ -1269,15 +1322,16 @@ var ts; function visitDirectory(path) { var folder = fso.GetFolder(path || "."); var files = getNames(folder.files); - for (var i = 0; i < files.length; i++) { - var name = files[i]; - if (!extension || ts.fileExtensionIs(name, extension)) { - result.push(ts.combinePaths(path, name)); + for (var _i = 0; _i < files.length; _i++) { + var name_1 = files[_i]; + if (!extension || ts.fileExtensionIs(name_1, extension)) { + result.push(ts.combinePaths(path, name_1)); } } var subfolders = getNames(folder.subfolders); - for (var i = 0; i < subfolders.length; i++) { - visitDirectory(ts.combinePaths(path, subfolders[i])); + for (var _a = 0; _a < subfolders.length; _a++) { + var current = subfolders[_a]; + visitDirectory(ts.combinePaths(path, current)); } } } @@ -1362,8 +1416,9 @@ var ts; function visitDirectory(path) { var files = _fs.readdirSync(path || ".").sort(); var directories = []; - for (var i = 0; i < files.length; i++) { - var name = ts.combinePaths(path, files[i]); + for (var _i = 0; _i < files.length; _i++) { + var current = files[_i]; + var name = ts.combinePaths(path, current); var stat = _fs.lstatSync(name); if (stat.isFile()) { if (!extension || ts.fileExtensionIs(name, extension)) { @@ -1374,8 +1429,9 @@ var ts; directories.push(name); } } - for (var i = 0; i < directories.length; i++) { - visitDirectory(directories[i]); + for (var _a = 0; _a < directories.length; _a++) { + var current = directories[_a]; + visitDirectory(current); } } } @@ -1444,538 +1500,585 @@ var ts; } })(); })(ts || (ts = {})); +/// var ts; (function (ts) { ts.Diagnostics = { - Unterminated_string_literal: { code: 1002, category: 1, key: "Unterminated string literal." }, - Identifier_expected: { code: 1003, category: 1, key: "Identifier expected." }, - _0_expected: { code: 1005, category: 1, key: "'{0}' expected." }, - A_file_cannot_have_a_reference_to_itself: { code: 1006, category: 1, key: "A file cannot have a reference to itself." }, - Trailing_comma_not_allowed: { code: 1009, category: 1, key: "Trailing comma not allowed." }, - Asterisk_Slash_expected: { code: 1010, category: 1, key: "'*/' expected." }, - Unexpected_token: { code: 1012, category: 1, key: "Unexpected token." }, - Catch_clause_parameter_cannot_have_a_type_annotation: { code: 1013, category: 1, key: "Catch clause parameter cannot have a type annotation." }, - A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: 1, key: "A rest parameter must be last in a parameter list." }, - Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: 1, key: "Parameter cannot have question mark and initializer." }, - A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: 1, key: "A required parameter cannot follow an optional parameter." }, - An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: 1, key: "An index signature cannot have a rest parameter." }, - An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: 1, key: "An index signature parameter cannot have an accessibility modifier." }, - An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: 1, key: "An index signature parameter cannot have a question mark." }, - An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: 1, key: "An index signature parameter cannot have an initializer." }, - An_index_signature_must_have_a_type_annotation: { code: 1021, category: 1, key: "An index signature must have a type annotation." }, - An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: 1, key: "An index signature parameter must have a type annotation." }, - An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: 1, key: "An index signature parameter type must be 'string' or 'number'." }, - A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: 1, key: "A class or interface declaration can only have one 'extends' clause." }, - An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: 1, key: "An 'extends' clause must precede an 'implements' clause." }, - A_class_can_only_extend_a_single_class: { code: 1026, category: 1, key: "A class can only extend a single class." }, - A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: 1, key: "A class declaration can only have one 'implements' clause." }, - Accessibility_modifier_already_seen: { code: 1028, category: 1, key: "Accessibility modifier already seen." }, - _0_modifier_must_precede_1_modifier: { code: 1029, category: 1, key: "'{0}' modifier must precede '{1}' modifier." }, - _0_modifier_already_seen: { code: 1030, category: 1, key: "'{0}' modifier already seen." }, - _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: 1, key: "'{0}' modifier cannot appear on a class element." }, - An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: 1, key: "An interface declaration cannot have an 'implements' clause." }, - super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: 1, key: "'super' must be followed by an argument list or member access." }, - Only_ambient_modules_can_use_quoted_names: { code: 1035, category: 1, key: "Only ambient modules can use quoted names." }, - Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: 1, key: "Statements are not allowed in ambient contexts." }, - A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: 1, key: "A 'declare' modifier cannot be used in an already ambient context." }, - Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: 1, key: "Initializers are not allowed in ambient contexts." }, - _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: 1, key: "'{0}' modifier cannot appear on a module element." }, - A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: 1, key: "A 'declare' modifier cannot be used with an interface declaration." }, - A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: 1, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, - A_rest_parameter_cannot_be_optional: { code: 1047, category: 1, key: "A rest parameter cannot be optional." }, - A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: 1, key: "A rest parameter cannot have an initializer." }, - A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: 1, key: "A 'set' accessor must have exactly one parameter." }, - A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: 1, key: "A 'set' accessor cannot have an optional parameter." }, - A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: 1, key: "A 'set' accessor parameter cannot have an initializer." }, - A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: 1, key: "A 'set' accessor cannot have rest parameter." }, - A_get_accessor_cannot_have_parameters: { code: 1054, category: 1, key: "A 'get' accessor cannot have parameters." }, - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: 1, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, - Enum_member_must_have_initializer: { code: 1061, category: 1, key: "Enum member must have initializer." }, - An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: 1, key: "An export assignment cannot be used in an internal module." }, - Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: 1, key: "Ambient enum elements can only have integer literal initializers." }, - Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: 1, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, - A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: 1, key: "A 'declare' modifier cannot be used with an import declaration." }, - Invalid_reference_directive_syntax: { code: 1084, category: 1, key: "Invalid 'reference' directive syntax." }, - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: 1, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, - An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: 1, key: "An accessor cannot be declared in an ambient context." }, - _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: 1, key: "'{0}' modifier cannot appear on a constructor declaration." }, - _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: 1, key: "'{0}' modifier cannot appear on a parameter." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: 1, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, - Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: 1, key: "Type parameters cannot appear on a constructor declaration." }, - Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: 1, key: "Type annotation cannot appear on a constructor declaration." }, - An_accessor_cannot_have_type_parameters: { code: 1094, category: 1, key: "An accessor cannot have type parameters." }, - A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: 1, key: "A 'set' accessor cannot have a return type annotation." }, - An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: 1, key: "An index signature must have exactly one parameter." }, - _0_list_cannot_be_empty: { code: 1097, category: 1, key: "'{0}' list cannot be empty." }, - Type_parameter_list_cannot_be_empty: { code: 1098, category: 1, key: "Type parameter list cannot be empty." }, - Type_argument_list_cannot_be_empty: { code: 1099, category: 1, key: "Type argument list cannot be empty." }, - Invalid_use_of_0_in_strict_mode: { code: 1100, category: 1, key: "Invalid use of '{0}' in strict mode." }, - with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: 1, key: "'with' statements are not allowed in strict mode." }, - delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: 1, key: "'delete' cannot be called on an identifier in strict mode." }, - A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: 1, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, - A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: 1, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, - Jump_target_cannot_cross_function_boundary: { code: 1107, category: 1, key: "Jump target cannot cross function boundary." }, - A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: 1, key: "A 'return' statement can only be used within a function body." }, - Expression_expected: { code: 1109, category: 1, key: "Expression expected." }, - Type_expected: { code: 1110, category: 1, key: "Type expected." }, - A_class_member_cannot_be_declared_optional: { code: 1112, category: 1, key: "A class member cannot be declared optional." }, - A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: 1, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, - Duplicate_label_0: { code: 1114, category: 1, key: "Duplicate label '{0}'" }, - A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: 1, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, - A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: 1, key: "A 'break' statement can only jump to a label of an enclosing statement." }, - An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: 1, key: "An object literal cannot have multiple properties with the same name in strict mode." }, - An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: 1, key: "An object literal cannot have multiple get/set accessors with the same name." }, - An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: 1, key: "An object literal cannot have property and accessor with the same name." }, - An_export_assignment_cannot_have_modifiers: { code: 1120, category: 1, key: "An export assignment cannot have modifiers." }, - Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: 1, key: "Octal literals are not allowed in strict mode." }, - A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: 1, key: "A tuple type element list cannot be empty." }, - Variable_declaration_list_cannot_be_empty: { code: 1123, category: 1, key: "Variable declaration list cannot be empty." }, - Digit_expected: { code: 1124, category: 1, key: "Digit expected." }, - Hexadecimal_digit_expected: { code: 1125, category: 1, key: "Hexadecimal digit expected." }, - Unexpected_end_of_text: { code: 1126, category: 1, key: "Unexpected end of text." }, - Invalid_character: { code: 1127, category: 1, key: "Invalid character." }, - Declaration_or_statement_expected: { code: 1128, category: 1, key: "Declaration or statement expected." }, - Statement_expected: { code: 1129, category: 1, key: "Statement expected." }, - case_or_default_expected: { code: 1130, category: 1, key: "'case' or 'default' expected." }, - Property_or_signature_expected: { code: 1131, category: 1, key: "Property or signature expected." }, - Enum_member_expected: { code: 1132, category: 1, key: "Enum member expected." }, - Type_reference_expected: { code: 1133, category: 1, key: "Type reference expected." }, - Variable_declaration_expected: { code: 1134, category: 1, key: "Variable declaration expected." }, - Argument_expression_expected: { code: 1135, category: 1, key: "Argument expression expected." }, - Property_assignment_expected: { code: 1136, category: 1, key: "Property assignment expected." }, - Expression_or_comma_expected: { code: 1137, category: 1, key: "Expression or comma expected." }, - Parameter_declaration_expected: { code: 1138, category: 1, key: "Parameter declaration expected." }, - Type_parameter_declaration_expected: { code: 1139, category: 1, key: "Type parameter declaration expected." }, - Type_argument_expected: { code: 1140, category: 1, key: "Type argument expected." }, - String_literal_expected: { code: 1141, category: 1, key: "String literal expected." }, - Line_break_not_permitted_here: { code: 1142, category: 1, key: "Line break not permitted here." }, - or_expected: { code: 1144, category: 1, key: "'{' or ';' expected." }, - Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: 1, key: "Modifiers not permitted on index signature members." }, - Declaration_expected: { code: 1146, category: 1, key: "Declaration expected." }, - Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: 1, key: "Import declarations in an internal module cannot reference an external module." }, - Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: 1, key: "Cannot compile external modules unless the '--module' flag is provided." }, - File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: 1, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, - new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: 1, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, - var_let_or_const_expected: { code: 1152, category: 1, key: "'var', 'let' or 'const' expected." }, - let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: 1, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: 1, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, - const_declarations_must_be_initialized: { code: 1155, category: 1, key: "'const' declarations must be initialized" }, - const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: 1, key: "'const' declarations can only be declared inside a block." }, - let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: 1, key: "'let' declarations can only be declared inside a block." }, - Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1159, category: 1, key: "Tagged templates are only available when targeting ECMAScript 6 and higher." }, - Unterminated_template_literal: { code: 1160, category: 1, key: "Unterminated template literal." }, - Unterminated_regular_expression_literal: { code: 1161, category: 1, key: "Unterminated regular expression literal." }, - An_object_member_cannot_be_declared_optional: { code: 1162, category: 1, key: "An object member cannot be declared optional." }, - yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: 1, key: "'yield' expression must be contained_within a generator declaration." }, - Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: 1, key: "Computed property names are not allowed in enums." }, - A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: 1, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: 1, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, - Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: 1, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, - A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: 1, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, - A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: 1, key: "A computed property name in an interface must directly refer to a built-in symbol." }, - A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: 1, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, - A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: 1, key: "A comma expression is not allowed in a computed property name." }, - extends_clause_already_seen: { code: 1172, category: 1, key: "'extends' clause already seen." }, - extends_clause_must_precede_implements_clause: { code: 1173, category: 1, key: "'extends' clause must precede 'implements' clause." }, - Classes_can_only_extend_a_single_class: { code: 1174, category: 1, key: "Classes can only extend a single class." }, - implements_clause_already_seen: { code: 1175, category: 1, key: "'implements' clause already seen." }, - Interface_declaration_cannot_have_implements_clause: { code: 1176, category: 1, key: "Interface declaration cannot have 'implements' clause." }, - Binary_digit_expected: { code: 1177, category: 1, key: "Binary digit expected." }, - Octal_digit_expected: { code: 1178, category: 1, key: "Octal digit expected." }, - Unexpected_token_expected: { code: 1179, category: 1, key: "Unexpected token. '{' expected." }, - Property_destructuring_pattern_expected: { code: 1180, category: 1, key: "Property destructuring pattern expected." }, - Array_element_destructuring_pattern_expected: { code: 1181, category: 1, key: "Array element destructuring pattern expected." }, - A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: 1, key: "A destructuring declaration must have an initializer." }, - Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: 1, key: "Destructuring declarations are not allowed in ambient contexts." }, - An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: 1, key: "An implementation cannot be declared in ambient contexts." }, - Modifiers_cannot_appear_here: { code: 1184, category: 1, key: "Modifiers cannot appear here." }, - Merge_conflict_marker_encountered: { code: 1185, category: 1, key: "Merge conflict marker encountered." }, - A_rest_element_cannot_have_an_initializer: { code: 1186, category: 1, key: "A rest element cannot have an initializer." }, - A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: 1, key: "A parameter property may not be a binding pattern." }, - Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: 1, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, - The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: 1, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, - The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: 1, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, - Duplicate_identifier_0: { code: 2300, category: 1, key: "Duplicate identifier '{0}'." }, - Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: 1, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, - Static_members_cannot_reference_class_type_parameters: { code: 2302, category: 1, key: "Static members cannot reference class type parameters." }, - Circular_definition_of_import_alias_0: { code: 2303, category: 1, key: "Circular definition of import alias '{0}'." }, - Cannot_find_name_0: { code: 2304, category: 1, key: "Cannot find name '{0}'." }, - Module_0_has_no_exported_member_1: { code: 2305, category: 1, key: "Module '{0}' has no exported member '{1}'." }, - File_0_is_not_an_external_module: { code: 2306, category: 1, key: "File '{0}' is not an external module." }, - Cannot_find_external_module_0: { code: 2307, category: 1, key: "Cannot find external module '{0}'." }, - A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: 1, key: "A module cannot have more than one export assignment." }, - An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: 1, key: "An export assignment cannot be used in a module with other exported elements." }, - Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: 1, key: "Type '{0}' recursively references itself as a base type." }, - A_class_may_only_extend_another_class: { code: 2311, category: 1, key: "A class may only extend another class." }, - An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: 1, key: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: 1, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, - Generic_type_0_requires_1_type_argument_s: { code: 2314, category: 1, key: "Generic type '{0}' requires {1} type argument(s)." }, - Type_0_is_not_generic: { code: 2315, category: 1, key: "Type '{0}' is not generic." }, - Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: 1, key: "Global type '{0}' must be a class or interface type." }, - Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: 1, key: "Global type '{0}' must have {1} type parameter(s)." }, - Cannot_find_global_type_0: { code: 2318, category: 1, key: "Cannot find global type '{0}'." }, - Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: 1, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, - Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: 1, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, - Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: 1, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, - Type_0_is_not_assignable_to_type_1: { code: 2322, category: 1, key: "Type '{0}' is not assignable to type '{1}'." }, - Property_0_is_missing_in_type_1: { code: 2324, category: 1, key: "Property '{0}' is missing in type '{1}'." }, - Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: 1, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, - Types_of_property_0_are_incompatible: { code: 2326, category: 1, key: "Types of property '{0}' are incompatible." }, - Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: 1, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, - Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: 1, key: "Types of parameters '{0}' and '{1}' are incompatible." }, - Index_signature_is_missing_in_type_0: { code: 2329, category: 1, key: "Index signature is missing in type '{0}'." }, - Index_signatures_are_incompatible: { code: 2330, category: 1, key: "Index signatures are incompatible." }, - this_cannot_be_referenced_in_a_module_body: { code: 2331, category: 1, key: "'this' cannot be referenced in a module body." }, - this_cannot_be_referenced_in_current_location: { code: 2332, category: 1, key: "'this' cannot be referenced in current location." }, - this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: 1, key: "'this' cannot be referenced in constructor arguments." }, - this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: 1, key: "'this' cannot be referenced in a static property initializer." }, - super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: 1, key: "'super' can only be referenced in a derived class." }, - super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: 1, key: "'super' cannot be referenced in constructor arguments." }, - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: 1, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, - super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: 1, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, - Property_0_does_not_exist_on_type_1: { code: 2339, category: 1, key: "Property '{0}' does not exist on type '{1}'." }, - Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: 1, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, - Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: 1, key: "Property '{0}' is private and only accessible within class '{1}'." }, - An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: 1, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, - Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: 1, key: "Type '{0}' does not satisfy the constraint '{1}'." }, - Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: 1, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, - Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: 1, key: "Supplied parameters do not match any signature of call target." }, - Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: 1, key: "Untyped function calls may not accept type arguments." }, - Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: 1, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: 1, key: "Cannot invoke an expression whose type lacks a call signature." }, - Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: 1, key: "Only a void function can be called with the 'new' keyword." }, - Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: 1, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, - Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: 1, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, - No_best_common_type_exists_among_return_expressions: { code: 2354, category: 1, key: "No best common type exists among return expressions." }, - A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: 1, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, - An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: 1, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: 1, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, - The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: 1, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, - The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: 1, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, - The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: 1, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, - The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: 1, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, - The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: 1, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: 1, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, - Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: 1, key: "Invalid left-hand side of assignment expression." }, - Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: 1, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, - Type_parameter_name_cannot_be_0: { code: 2368, category: 1, key: "Type parameter name cannot be '{0}'" }, - A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: 1, key: "A parameter property is only allowed in a constructor implementation." }, - A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: 1, key: "A rest parameter must be of an array type." }, - A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: 1, key: "A parameter initializer is only allowed in a function or constructor implementation." }, - Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: 1, key: "Parameter '{0}' cannot be referenced in its initializer." }, - Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: 1, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, - Duplicate_string_index_signature: { code: 2374, category: 1, key: "Duplicate string index signature." }, - Duplicate_number_index_signature: { code: 2375, category: 1, key: "Duplicate number index signature." }, - A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: 1, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, - Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: 1, key: "Constructors for derived classes must contain a 'super' call." }, - A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: 1, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, - Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: 1, key: "Getter and setter accessors do not agree in visibility." }, - get_and_set_accessor_must_have_the_same_type: { code: 2380, category: 1, key: "'get' and 'set' accessor must have the same type." }, - A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: 1, key: "A signature with an implementation cannot use a string literal type." }, - Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: 1, key: "Specialized overload signature is not assignable to any non-specialized signature." }, - Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: 1, key: "Overload signatures must all be exported or not exported." }, - Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: 1, key: "Overload signatures must all be ambient or non-ambient." }, - Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: 1, key: "Overload signatures must all be public, private or protected." }, - Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: 1, key: "Overload signatures must all be optional or required." }, - Function_overload_must_be_static: { code: 2387, category: 1, key: "Function overload must be static." }, - Function_overload_must_not_be_static: { code: 2388, category: 1, key: "Function overload must not be static." }, - Function_implementation_name_must_be_0: { code: 2389, category: 1, key: "Function implementation name must be '{0}'." }, - Constructor_implementation_is_missing: { code: 2390, category: 1, key: "Constructor implementation is missing." }, - Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: 1, key: "Function implementation is missing or not immediately following the declaration." }, - Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: 1, key: "Multiple constructor implementations are not allowed." }, - Duplicate_function_implementation: { code: 2393, category: 1, key: "Duplicate function implementation." }, - Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: 1, key: "Overload signature is not compatible with function implementation." }, - Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: 1, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, - Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: 1, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, - Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: 1, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, - Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: 1, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, - Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: 1, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, - Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: 1, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, - Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: 1, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, - The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: 1, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, - The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: 1, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, - Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: 1, key: "Invalid left-hand side in 'for...in' statement." }, - The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: 1, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, - Setters_cannot_return_a_value: { code: 2408, category: 1, key: "Setters cannot return a value." }, - Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: 1, key: "Return type of constructor signature must be assignable to the instance type of the class" }, - All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: 1, key: "All symbols within a 'with' block will be resolved to 'any'." }, - Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: 1, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, - Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: 1, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, - Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: 1, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, - Class_name_cannot_be_0: { code: 2414, category: 1, key: "Class name cannot be '{0}'" }, - Class_0_incorrectly_extends_base_class_1: { code: 2415, category: 1, key: "Class '{0}' incorrectly extends base class '{1}'." }, - Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: 1, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, - Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: 1, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, - Class_0_incorrectly_implements_interface_1: { code: 2420, category: 1, key: "Class '{0}' incorrectly implements interface '{1}'." }, - A_class_may_only_implement_another_class_or_interface: { code: 2422, category: 1, key: "A class may only implement another class or interface." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: 1, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, - Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: 1, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, - Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: 1, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, - Interface_name_cannot_be_0: { code: 2427, category: 1, key: "Interface name cannot be '{0}'" }, - All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: 1, key: "All declarations of an interface must have identical type parameters." }, - Interface_0_incorrectly_extends_interface_1: { code: 2430, category: 1, key: "Interface '{0}' incorrectly extends interface '{1}'." }, - Enum_name_cannot_be_0: { code: 2431, category: 1, key: "Enum name cannot be '{0}'" }, - In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: 1, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, - A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: 1, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, - A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: 1, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, - Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: 1, key: "Ambient external modules cannot be nested in other modules." }, - Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: 1, key: "Ambient external module declaration cannot specify relative module name." }, - Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: 1, key: "Module '{0}' is hidden by a local declaration with the same name" }, - Import_name_cannot_be_0: { code: 2438, category: 1, key: "Import name cannot be '{0}'" }, - Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: 1, key: "Import declaration in an ambient external module declaration cannot reference external module through relative external module name." }, - Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: 1, key: "Import declaration conflicts with local declaration of '{0}'" }, - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: 1, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, - Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: 1, key: "Types have separate declarations of a private property '{0}'." }, - Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: 1, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, - Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: 1, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, - Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: 1, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, - Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: 1, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, - The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: 1, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, - Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: 1, key: "Block-scoped variable '{0}' used before its declaration." }, - The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: 1, key: "The operand of an increment or decrement operator cannot be a constant." }, - Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: 1, key: "Left-hand side of assignment expression cannot be a constant." }, - Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: 1, key: "Cannot redeclare block-scoped variable '{0}'." }, - An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: 1, key: "An enum member cannot have a numeric name." }, - The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: 1, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, - Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: 1, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, - Type_alias_0_circularly_references_itself: { code: 2456, category: 1, key: "Type alias '{0}' circularly references itself." }, - Type_alias_name_cannot_be_0: { code: 2457, category: 1, key: "Type alias name cannot be '{0}'" }, - An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: 1, key: "An AMD module cannot have multiple name assignments." }, - Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: 1, key: "Type '{0}' has no property '{1}' and no string index signature." }, - Type_0_has_no_property_1: { code: 2460, category: 1, key: "Type '{0}' has no property '{1}'." }, - Type_0_is_not_an_array_type: { code: 2461, category: 1, key: "Type '{0}' is not an array type." }, - A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: 1, key: "A rest element must be last in an array destructuring pattern" }, - A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: 1, key: "A binding pattern parameter cannot be optional in an implementation signature." }, - A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: 1, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, - this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: 1, key: "'this' cannot be referenced in a computed property name." }, - super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: 1, key: "'super' cannot be referenced in a computed property name." }, - A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: 1, key: "A computed property name cannot reference a type parameter from its containing type." }, - Cannot_find_global_value_0: { code: 2468, category: 1, key: "Cannot find global value '{0}'." }, - The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: 1, key: "The '{0}' operator cannot be applied to type 'symbol'." }, - Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: 1, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, - A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: 1, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, - Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: 1, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, - Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: 1, key: "Enum declarations must all be const or non-const." }, - In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: 1, key: "In 'const' enum declarations member initializer must be constant expression." }, - const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: 1, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, - A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: 1, key: "A const enum member can only be accessed using a string literal." }, - const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: 1, key: "'const' enum member initializer was evaluated to a non-finite value." }, - const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: 1, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, - Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: 1, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, - let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: 1, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, - Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: 1, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, - for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher: { code: 2482, category: 1, key: "'for...of' statements are only available when targeting ECMAScript 6 or higher." }, - The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: 1, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, - Import_declaration_0_is_using_private_name_1: { code: 4000, category: 1, key: "Import declaration '{0}' is using private name '{1}'." }, - Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: 1, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, - Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: 1, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: 1, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: 1, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: 1, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: 1, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: 1, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: 1, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, - Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: 1, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: 1, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, - Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: 1, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, - Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, - Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: 1, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, - Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: 1, key: "Exported variable '{0}' has or is using private name '{1}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: 1, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: 1, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: 1, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, - Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: 1, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, - Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: 1, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, - Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: 1, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: 1, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: 1, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: 1, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: 1, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: 1, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: 1, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: 1, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: 1, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: 1, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: 1, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: 1, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: 1, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: 1, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: 1, key: "Return type of public static method from exported class has or is using private name '{0}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: 1, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, - Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: 1, key: "Return type of public method from exported class has or is using private name '{0}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: 1, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, - Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: 1, key: "Return type of method from exported interface has or is using private name '{0}'." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: 1, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, - Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: 1, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, - Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: 1, key: "Return type of exported function has or is using private name '{0}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: 1, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: 1, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: 1, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: 1, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: 1, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: 1, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: 1, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: 1, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, - Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: 1, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, - Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: 1, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, - Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: 1, key: "Exported type alias '{0}' has or is using private name '{1}'." }, - The_current_host_does_not_support_the_0_option: { code: 5001, category: 1, key: "The current host does not support the '{0}' option." }, - Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: 1, key: "Cannot find the common subdirectory path for the input files." }, - Cannot_read_file_0_Colon_1: { code: 5012, category: 1, key: "Cannot read file '{0}': {1}" }, - Unsupported_file_encoding: { code: 5013, category: 1, key: "Unsupported file encoding." }, - Unknown_compiler_option_0: { code: 5023, category: 1, key: "Unknown compiler option '{0}'." }, - Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: 1, key: "Compiler option '{0}' requires a value of type {1}." }, - Could_not_write_file_0_Colon_1: { code: 5033, category: 1, key: "Could not write file '{0}': {1}" }, - Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: 1, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: 1, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, - Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: 1, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, - Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: 1, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, - Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: 1, key: "Option 'project' cannot be mixed with source files on a command line." }, - Concatenate_and_emit_output_to_single_file: { code: 6001, category: 2, key: "Concatenate and emit output to single file." }, - Generates_corresponding_d_ts_file: { code: 6002, category: 2, key: "Generates corresponding '.d.ts' file." }, - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: 2, key: "Specifies the location where debugger should locate map files instead of generated locations." }, - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: 2, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, - Watch_input_files: { code: 6005, category: 2, key: "Watch input files." }, - Redirect_output_structure_to_the_directory: { code: 6006, category: 2, key: "Redirect output structure to the directory." }, - Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: 2, key: "Do not erase const enum declarations in generated code." }, - Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: 2, key: "Do not emit outputs if any type checking errors were reported." }, - Do_not_emit_comments_to_output: { code: 6009, category: 2, key: "Do not emit comments to output." }, - Do_not_emit_outputs: { code: 6010, category: 2, key: "Do not emit outputs." }, - Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: 2, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, - Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: 2, key: "Specify module code generation: 'commonjs' or 'amd'" }, - Print_this_message: { code: 6017, category: 2, key: "Print this message." }, - Print_the_compiler_s_version: { code: 6019, category: 2, key: "Print the compiler's version." }, - Compile_the_project_in_the_given_directory: { code: 6020, category: 2, key: "Compile the project in the given directory." }, - Syntax_Colon_0: { code: 6023, category: 2, key: "Syntax: {0}" }, - options: { code: 6024, category: 2, key: "options" }, - file: { code: 6025, category: 2, key: "file" }, - Examples_Colon_0: { code: 6026, category: 2, key: "Examples: {0}" }, - Options_Colon: { code: 6027, category: 2, key: "Options:" }, - Version_0: { code: 6029, category: 2, key: "Version {0}" }, - Insert_command_line_options_and_files_from_a_file: { code: 6030, category: 2, key: "Insert command line options and files from a file." }, - File_change_detected_Starting_incremental_compilation: { code: 6032, category: 2, key: "File change detected. Starting incremental compilation..." }, - KIND: { code: 6034, category: 2, key: "KIND" }, - FILE: { code: 6035, category: 2, key: "FILE" }, - VERSION: { code: 6036, category: 2, key: "VERSION" }, - LOCATION: { code: 6037, category: 2, key: "LOCATION" }, - DIRECTORY: { code: 6038, category: 2, key: "DIRECTORY" }, - Compilation_complete_Watching_for_file_changes: { code: 6042, category: 2, key: "Compilation complete. Watching for file changes." }, - Generates_corresponding_map_file: { code: 6043, category: 2, key: "Generates corresponding '.map' file." }, - Compiler_option_0_expects_an_argument: { code: 6044, category: 1, key: "Compiler option '{0}' expects an argument." }, - Unterminated_quoted_string_in_response_file_0: { code: 6045, category: 1, key: "Unterminated quoted string in response file '{0}'." }, - Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: 1, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, - Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: 1, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, - Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: 1, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, - Unsupported_locale_0: { code: 6049, category: 1, key: "Unsupported locale '{0}'." }, - Unable_to_open_file_0: { code: 6050, category: 1, key: "Unable to open file '{0}'." }, - Corrupted_locale_file_0: { code: 6051, category: 1, key: "Corrupted locale file {0}." }, - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: 2, key: "Raise error on expressions and declarations with an implied 'any' type." }, - File_0_not_found: { code: 6053, category: 1, key: "File '{0}' not found." }, - File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: 1, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, - Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: 2, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, - Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: 2, key: "Do not emit declarations for code that has an '@internal' annotation." }, - Variable_0_implicitly_has_an_1_type: { code: 7005, category: 1, key: "Variable '{0}' implicitly has an '{1}' type." }, - Parameter_0_implicitly_has_an_1_type: { code: 7006, category: 1, key: "Parameter '{0}' implicitly has an '{1}' type." }, - Member_0_implicitly_has_an_1_type: { code: 7008, category: 1, key: "Member '{0}' implicitly has an '{1}' type." }, - new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: 1, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, - _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: 1, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, - Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: 1, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, - Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: 1, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: 1, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, - Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: 1, key: "Index signature of object type implicitly has an 'any' type." }, - Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: 1, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, - Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: 1, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, - Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: 1, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, - _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: 1, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, - _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: 1, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, - _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: 1, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: 1, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, - You_cannot_rename_this_element: { code: 8000, category: 1, key: "You cannot rename this element." }, - You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: 1, key: "You cannot rename elements that are defined in the standard TypeScript library." }, - yield_expressions_are_not_currently_supported: { code: 9000, category: 1, key: "'yield' expressions are not currently supported." }, - Generators_are_not_currently_supported: { code: 9001, category: 1, key: "Generators are not currently supported." }, - The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 9002, category: 1, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, - for_of_statements_are_not_currently_supported: { code: 9003, category: 1, key: "'for...of' statements are not currently supported." } + Unterminated_string_literal: { code: 1002, category: ts.DiagnosticCategory.Error, key: "Unterminated string literal." }, + Identifier_expected: { code: 1003, category: ts.DiagnosticCategory.Error, key: "Identifier expected." }, + _0_expected: { code: 1005, category: ts.DiagnosticCategory.Error, key: "'{0}' expected." }, + A_file_cannot_have_a_reference_to_itself: { code: 1006, category: ts.DiagnosticCategory.Error, key: "A file cannot have a reference to itself." }, + Trailing_comma_not_allowed: { code: 1009, category: ts.DiagnosticCategory.Error, key: "Trailing comma not allowed." }, + Asterisk_Slash_expected: { code: 1010, category: ts.DiagnosticCategory.Error, key: "'*/' expected." }, + Unexpected_token: { code: 1012, category: ts.DiagnosticCategory.Error, key: "Unexpected token." }, + A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be last in a parameter list." }, + Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: ts.DiagnosticCategory.Error, key: "Parameter cannot have question mark and initializer." }, + A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: ts.DiagnosticCategory.Error, key: "A required parameter cannot follow an optional parameter." }, + An_index_signature_cannot_have_a_rest_parameter: { code: 1017, category: ts.DiagnosticCategory.Error, key: "An index signature cannot have a rest parameter." }, + An_index_signature_parameter_cannot_have_an_accessibility_modifier: { code: 1018, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an accessibility modifier." }, + An_index_signature_parameter_cannot_have_a_question_mark: { code: 1019, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have a question mark." }, + An_index_signature_parameter_cannot_have_an_initializer: { code: 1020, category: ts.DiagnosticCategory.Error, key: "An index signature parameter cannot have an initializer." }, + An_index_signature_must_have_a_type_annotation: { code: 1021, category: ts.DiagnosticCategory.Error, key: "An index signature must have a type annotation." }, + An_index_signature_parameter_must_have_a_type_annotation: { code: 1022, category: ts.DiagnosticCategory.Error, key: "An index signature parameter must have a type annotation." }, + An_index_signature_parameter_type_must_be_string_or_number: { code: 1023, category: ts.DiagnosticCategory.Error, key: "An index signature parameter type must be 'string' or 'number'." }, + A_class_or_interface_declaration_can_only_have_one_extends_clause: { code: 1024, category: ts.DiagnosticCategory.Error, key: "A class or interface declaration can only have one 'extends' clause." }, + An_extends_clause_must_precede_an_implements_clause: { code: 1025, category: ts.DiagnosticCategory.Error, key: "An 'extends' clause must precede an 'implements' clause." }, + A_class_can_only_extend_a_single_class: { code: 1026, category: ts.DiagnosticCategory.Error, key: "A class can only extend a single class." }, + A_class_declaration_can_only_have_one_implements_clause: { code: 1027, category: ts.DiagnosticCategory.Error, key: "A class declaration can only have one 'implements' clause." }, + Accessibility_modifier_already_seen: { code: 1028, category: ts.DiagnosticCategory.Error, key: "Accessibility modifier already seen." }, + _0_modifier_must_precede_1_modifier: { code: 1029, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier must precede '{1}' modifier." }, + _0_modifier_already_seen: { code: 1030, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier already seen." }, + _0_modifier_cannot_appear_on_a_class_element: { code: 1031, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a class element." }, + An_interface_declaration_cannot_have_an_implements_clause: { code: 1032, category: ts.DiagnosticCategory.Error, key: "An interface declaration cannot have an 'implements' clause." }, + super_must_be_followed_by_an_argument_list_or_member_access: { code: 1034, category: ts.DiagnosticCategory.Error, key: "'super' must be followed by an argument list or member access." }, + Only_ambient_modules_can_use_quoted_names: { code: 1035, category: ts.DiagnosticCategory.Error, key: "Only ambient modules can use quoted names." }, + Statements_are_not_allowed_in_ambient_contexts: { code: 1036, category: ts.DiagnosticCategory.Error, key: "Statements are not allowed in ambient contexts." }, + A_declare_modifier_cannot_be_used_in_an_already_ambient_context: { code: 1038, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used in an already ambient context." }, + Initializers_are_not_allowed_in_ambient_contexts: { code: 1039, category: ts.DiagnosticCategory.Error, key: "Initializers are not allowed in ambient contexts." }, + _0_modifier_cannot_appear_on_a_module_element: { code: 1044, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a module element." }, + A_declare_modifier_cannot_be_used_with_an_interface_declaration: { code: 1045, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an interface declaration." }, + A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: { code: 1046, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier is required for a top level declaration in a .d.ts file." }, + A_rest_parameter_cannot_be_optional: { code: 1047, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot be optional." }, + A_rest_parameter_cannot_have_an_initializer: { code: 1048, category: ts.DiagnosticCategory.Error, key: "A rest parameter cannot have an initializer." }, + A_set_accessor_must_have_exactly_one_parameter: { code: 1049, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor must have exactly one parameter." }, + A_set_accessor_cannot_have_an_optional_parameter: { code: 1051, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have an optional parameter." }, + A_set_accessor_parameter_cannot_have_an_initializer: { code: 1052, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor parameter cannot have an initializer." }, + A_set_accessor_cannot_have_rest_parameter: { code: 1053, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have rest parameter." }, + A_get_accessor_cannot_have_parameters: { code: 1054, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor cannot have parameters." }, + Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1056, category: ts.DiagnosticCategory.Error, key: "Accessors are only available when targeting ECMAScript 5 and higher." }, + Enum_member_must_have_initializer: { code: 1061, category: ts.DiagnosticCategory.Error, key: "Enum member must have initializer." }, + An_export_assignment_cannot_be_used_in_an_internal_module: { code: 1063, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in an internal module." }, + Ambient_enum_elements_can_only_have_integer_literal_initializers: { code: 1066, category: ts.DiagnosticCategory.Error, key: "Ambient enum elements can only have integer literal initializers." }, + Unexpected_token_A_constructor_method_accessor_or_property_was_expected: { code: 1068, category: ts.DiagnosticCategory.Error, key: "Unexpected token. A constructor, method, accessor, or property was expected." }, + A_declare_modifier_cannot_be_used_with_an_import_declaration: { code: 1079, category: ts.DiagnosticCategory.Error, key: "A 'declare' modifier cannot be used with an import declaration." }, + Invalid_reference_directive_syntax: { code: 1084, category: ts.DiagnosticCategory.Error, key: "Invalid 'reference' directive syntax." }, + Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: { code: 1085, category: ts.DiagnosticCategory.Error, key: "Octal literals are not available when targeting ECMAScript 5 and higher." }, + An_accessor_cannot_be_declared_in_an_ambient_context: { code: 1086, category: ts.DiagnosticCategory.Error, key: "An accessor cannot be declared in an ambient context." }, + _0_modifier_cannot_appear_on_a_constructor_declaration: { code: 1089, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a constructor declaration." }, + _0_modifier_cannot_appear_on_a_parameter: { code: 1090, category: ts.DiagnosticCategory.Error, key: "'{0}' modifier cannot appear on a parameter." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: { code: 1091, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...in' statement." }, + Type_parameters_cannot_appear_on_a_constructor_declaration: { code: 1092, category: ts.DiagnosticCategory.Error, key: "Type parameters cannot appear on a constructor declaration." }, + Type_annotation_cannot_appear_on_a_constructor_declaration: { code: 1093, category: ts.DiagnosticCategory.Error, key: "Type annotation cannot appear on a constructor declaration." }, + An_accessor_cannot_have_type_parameters: { code: 1094, category: ts.DiagnosticCategory.Error, key: "An accessor cannot have type parameters." }, + A_set_accessor_cannot_have_a_return_type_annotation: { code: 1095, category: ts.DiagnosticCategory.Error, key: "A 'set' accessor cannot have a return type annotation." }, + An_index_signature_must_have_exactly_one_parameter: { code: 1096, category: ts.DiagnosticCategory.Error, key: "An index signature must have exactly one parameter." }, + _0_list_cannot_be_empty: { code: 1097, category: ts.DiagnosticCategory.Error, key: "'{0}' list cannot be empty." }, + Type_parameter_list_cannot_be_empty: { code: 1098, category: ts.DiagnosticCategory.Error, key: "Type parameter list cannot be empty." }, + Type_argument_list_cannot_be_empty: { code: 1099, category: ts.DiagnosticCategory.Error, key: "Type argument list cannot be empty." }, + Invalid_use_of_0_in_strict_mode: { code: 1100, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}' in strict mode." }, + with_statements_are_not_allowed_in_strict_mode: { code: 1101, category: ts.DiagnosticCategory.Error, key: "'with' statements are not allowed in strict mode." }, + delete_cannot_be_called_on_an_identifier_in_strict_mode: { code: 1102, category: ts.DiagnosticCategory.Error, key: "'delete' cannot be called on an identifier in strict mode." }, + A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: { code: 1104, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only be used within an enclosing iteration statement." }, + A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: { code: 1105, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only be used within an enclosing iteration or switch statement." }, + Jump_target_cannot_cross_function_boundary: { code: 1107, category: ts.DiagnosticCategory.Error, key: "Jump target cannot cross function boundary." }, + A_return_statement_can_only_be_used_within_a_function_body: { code: 1108, category: ts.DiagnosticCategory.Error, key: "A 'return' statement can only be used within a function body." }, + Expression_expected: { code: 1109, category: ts.DiagnosticCategory.Error, key: "Expression expected." }, + Type_expected: { code: 1110, category: ts.DiagnosticCategory.Error, key: "Type expected." }, + A_class_member_cannot_be_declared_optional: { code: 1112, category: ts.DiagnosticCategory.Error, key: "A class member cannot be declared optional." }, + A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: { code: 1113, category: ts.DiagnosticCategory.Error, key: "A 'default' clause cannot appear more than once in a 'switch' statement." }, + Duplicate_label_0: { code: 1114, category: ts.DiagnosticCategory.Error, key: "Duplicate label '{0}'" }, + A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: { code: 1115, category: ts.DiagnosticCategory.Error, key: "A 'continue' statement can only jump to a label of an enclosing iteration statement." }, + A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: { code: 1116, category: ts.DiagnosticCategory.Error, key: "A 'break' statement can only jump to a label of an enclosing statement." }, + An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode: { code: 1117, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple properties with the same name in strict mode." }, + An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: { code: 1118, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have multiple get/set accessors with the same name." }, + An_object_literal_cannot_have_property_and_accessor_with_the_same_name: { code: 1119, category: ts.DiagnosticCategory.Error, key: "An object literal cannot have property and accessor with the same name." }, + An_export_assignment_cannot_have_modifiers: { code: 1120, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot have modifiers." }, + Octal_literals_are_not_allowed_in_strict_mode: { code: 1121, category: ts.DiagnosticCategory.Error, key: "Octal literals are not allowed in strict mode." }, + A_tuple_type_element_list_cannot_be_empty: { code: 1122, category: ts.DiagnosticCategory.Error, key: "A tuple type element list cannot be empty." }, + Variable_declaration_list_cannot_be_empty: { code: 1123, category: ts.DiagnosticCategory.Error, key: "Variable declaration list cannot be empty." }, + Digit_expected: { code: 1124, category: ts.DiagnosticCategory.Error, key: "Digit expected." }, + Hexadecimal_digit_expected: { code: 1125, category: ts.DiagnosticCategory.Error, key: "Hexadecimal digit expected." }, + Unexpected_end_of_text: { code: 1126, category: ts.DiagnosticCategory.Error, key: "Unexpected end of text." }, + Invalid_character: { code: 1127, category: ts.DiagnosticCategory.Error, key: "Invalid character." }, + Declaration_or_statement_expected: { code: 1128, category: ts.DiagnosticCategory.Error, key: "Declaration or statement expected." }, + Statement_expected: { code: 1129, category: ts.DiagnosticCategory.Error, key: "Statement expected." }, + case_or_default_expected: { code: 1130, category: ts.DiagnosticCategory.Error, key: "'case' or 'default' expected." }, + Property_or_signature_expected: { code: 1131, category: ts.DiagnosticCategory.Error, key: "Property or signature expected." }, + Enum_member_expected: { code: 1132, category: ts.DiagnosticCategory.Error, key: "Enum member expected." }, + Type_reference_expected: { code: 1133, category: ts.DiagnosticCategory.Error, key: "Type reference expected." }, + Variable_declaration_expected: { code: 1134, category: ts.DiagnosticCategory.Error, key: "Variable declaration expected." }, + Argument_expression_expected: { code: 1135, category: ts.DiagnosticCategory.Error, key: "Argument expression expected." }, + Property_assignment_expected: { code: 1136, category: ts.DiagnosticCategory.Error, key: "Property assignment expected." }, + Expression_or_comma_expected: { code: 1137, category: ts.DiagnosticCategory.Error, key: "Expression or comma expected." }, + Parameter_declaration_expected: { code: 1138, category: ts.DiagnosticCategory.Error, key: "Parameter declaration expected." }, + Type_parameter_declaration_expected: { code: 1139, category: ts.DiagnosticCategory.Error, key: "Type parameter declaration expected." }, + Type_argument_expected: { code: 1140, category: ts.DiagnosticCategory.Error, key: "Type argument expected." }, + String_literal_expected: { code: 1141, category: ts.DiagnosticCategory.Error, key: "String literal expected." }, + Line_break_not_permitted_here: { code: 1142, category: ts.DiagnosticCategory.Error, key: "Line break not permitted here." }, + or_expected: { code: 1144, category: ts.DiagnosticCategory.Error, key: "'{' or ';' expected." }, + Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers not permitted on index signature members." }, + Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration expected." }, + Import_declarations_in_an_internal_module_cannot_reference_an_external_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import declarations in an internal module cannot reference an external module." }, + Cannot_compile_external_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules unless the '--module' flag is provided." }, + File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File name '{0}' differs from already included file name '{1}' only in casing" }, + new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, + var_let_or_const_expected: { code: 1152, category: ts.DiagnosticCategory.Error, key: "'var', 'let' or 'const' expected." }, + let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1153, category: ts.DiagnosticCategory.Error, key: "'let' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1154, category: ts.DiagnosticCategory.Error, key: "'const' declarations are only available when targeting ECMAScript 6 and higher." }, + const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "'const' declarations must be initialized" }, + const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: ts.DiagnosticCategory.Error, key: "'const' declarations can only be declared inside a block." }, + let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: ts.DiagnosticCategory.Error, key: "'let' declarations can only be declared inside a block." }, + Unterminated_template_literal: { code: 1160, category: ts.DiagnosticCategory.Error, key: "Unterminated template literal." }, + Unterminated_regular_expression_literal: { code: 1161, category: ts.DiagnosticCategory.Error, key: "Unterminated regular expression literal." }, + An_object_member_cannot_be_declared_optional: { code: 1162, category: ts.DiagnosticCategory.Error, key: "An object member cannot be declared optional." }, + yield_expression_must_be_contained_within_a_generator_declaration: { code: 1163, category: ts.DiagnosticCategory.Error, key: "'yield' expression must be contained_within a generator declaration." }, + Computed_property_names_are_not_allowed_in_enums: { code: 1164, category: ts.DiagnosticCategory.Error, key: "Computed property names are not allowed in enums." }, + A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol: { code: 1165, category: ts.DiagnosticCategory.Error, key: "A computed property name in an ambient context must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol: { code: 1166, category: ts.DiagnosticCategory.Error, key: "A computed property name in a class property declaration must directly refer to a built-in symbol." }, + Computed_property_names_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1167, category: ts.DiagnosticCategory.Error, key: "Computed property names are only available when targeting ECMAScript 6 and higher." }, + A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol: { code: 1168, category: ts.DiagnosticCategory.Error, key: "A computed property name in a method overload must directly refer to a built-in symbol." }, + A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol: { code: 1169, category: ts.DiagnosticCategory.Error, key: "A computed property name in an interface must directly refer to a built-in symbol." }, + A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol: { code: 1170, category: ts.DiagnosticCategory.Error, key: "A computed property name in a type literal must directly refer to a built-in symbol." }, + A_comma_expression_is_not_allowed_in_a_computed_property_name: { code: 1171, category: ts.DiagnosticCategory.Error, key: "A comma expression is not allowed in a computed property name." }, + extends_clause_already_seen: { code: 1172, category: ts.DiagnosticCategory.Error, key: "'extends' clause already seen." }, + extends_clause_must_precede_implements_clause: { code: 1173, category: ts.DiagnosticCategory.Error, key: "'extends' clause must precede 'implements' clause." }, + Classes_can_only_extend_a_single_class: { code: 1174, category: ts.DiagnosticCategory.Error, key: "Classes can only extend a single class." }, + implements_clause_already_seen: { code: 1175, category: ts.DiagnosticCategory.Error, key: "'implements' clause already seen." }, + Interface_declaration_cannot_have_implements_clause: { code: 1176, category: ts.DiagnosticCategory.Error, key: "Interface declaration cannot have 'implements' clause." }, + Binary_digit_expected: { code: 1177, category: ts.DiagnosticCategory.Error, key: "Binary digit expected." }, + Octal_digit_expected: { code: 1178, category: ts.DiagnosticCategory.Error, key: "Octal digit expected." }, + Unexpected_token_expected: { code: 1179, category: ts.DiagnosticCategory.Error, key: "Unexpected token. '{' expected." }, + Property_destructuring_pattern_expected: { code: 1180, category: ts.DiagnosticCategory.Error, key: "Property destructuring pattern expected." }, + Array_element_destructuring_pattern_expected: { code: 1181, category: ts.DiagnosticCategory.Error, key: "Array element destructuring pattern expected." }, + A_destructuring_declaration_must_have_an_initializer: { code: 1182, category: ts.DiagnosticCategory.Error, key: "A destructuring declaration must have an initializer." }, + Destructuring_declarations_are_not_allowed_in_ambient_contexts: { code: 1183, category: ts.DiagnosticCategory.Error, key: "Destructuring declarations are not allowed in ambient contexts." }, + An_implementation_cannot_be_declared_in_ambient_contexts: { code: 1184, category: ts.DiagnosticCategory.Error, key: "An implementation cannot be declared in ambient contexts." }, + Modifiers_cannot_appear_here: { code: 1184, category: ts.DiagnosticCategory.Error, key: "Modifiers cannot appear here." }, + Merge_conflict_marker_encountered: { code: 1185, category: ts.DiagnosticCategory.Error, key: "Merge conflict marker encountered." }, + A_rest_element_cannot_have_an_initializer: { code: 1186, category: ts.DiagnosticCategory.Error, key: "A rest element cannot have an initializer." }, + A_parameter_property_may_not_be_a_binding_pattern: { code: 1187, category: ts.DiagnosticCategory.Error, key: "A parameter property may not be a binding pattern." }, + Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: { code: 1188, category: ts.DiagnosticCategory.Error, key: "Only a single variable declaration is allowed in a 'for...of' statement." }, + The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, + The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: ts.DiagnosticCategory.Error, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, + An_import_declaration_cannot_have_modifiers: { code: 1191, category: ts.DiagnosticCategory.Error, key: "An import declaration cannot have modifiers." }, + External_module_0_has_no_default_export: { code: 1192, category: ts.DiagnosticCategory.Error, key: "External module '{0}' has no default export." }, + An_export_declaration_cannot_have_modifiers: { code: 1193, category: ts.DiagnosticCategory.Error, key: "An export declaration cannot have modifiers." }, + Export_declarations_are_not_permitted_in_an_internal_module: { code: 1194, category: ts.DiagnosticCategory.Error, key: "Export declarations are not permitted in an internal module." }, + Catch_clause_variable_name_must_be_an_identifier: { code: 1195, category: ts.DiagnosticCategory.Error, key: "Catch clause variable name must be an identifier." }, + Catch_clause_variable_cannot_have_a_type_annotation: { code: 1196, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have a type annotation." }, + Catch_clause_variable_cannot_have_an_initializer: { code: 1197, category: ts.DiagnosticCategory.Error, key: "Catch clause variable cannot have an initializer." }, + An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: { code: 1198, category: ts.DiagnosticCategory.Error, key: "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive." }, + Unterminated_Unicode_escape_sequence: { code: 1199, category: ts.DiagnosticCategory.Error, key: "Unterminated Unicode escape sequence." }, + Line_terminator_not_permitted_before_arrow: { code: 1200, category: ts.DiagnosticCategory.Error, key: "Line terminator not permitted before arrow." }, + A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration: { code: 1201, category: ts.DiagnosticCategory.Error, key: "A type annotation on an export statement is only allowed in an ambient external module declaration." }, + Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { code: 1202, category: ts.DiagnosticCategory.Error, key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." }, + Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { code: 1203, category: ts.DiagnosticCategory.Error, key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." }, + Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { code: 1204, category: ts.DiagnosticCategory.Error, key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." }, + Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." }, + Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." }, + Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." }, + Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile non-external modules when the '--separateCompilation' flag is provided." }, + Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, + Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, + Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, + Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, + Circular_definition_of_import_alias_0: { code: 2303, category: ts.DiagnosticCategory.Error, key: "Circular definition of import alias '{0}'." }, + Cannot_find_name_0: { code: 2304, category: ts.DiagnosticCategory.Error, key: "Cannot find name '{0}'." }, + Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module '{0}' has no exported member '{1}'." }, + File_0_is_not_an_external_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File '{0}' is not an external module." }, + Cannot_find_external_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot find external module '{0}'." }, + A_module_cannot_have_more_than_one_export_assignment: { code: 2308, category: ts.DiagnosticCategory.Error, key: "A module cannot have more than one export assignment." }, + An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An export assignment cannot be used in a module with other exported elements." }, + Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type '{0}' recursively references itself as a base type." }, + A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A class may only extend another class." }, + An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An interface may only extend a class or another interface." }, + Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic type '{0}' requires {1} type argument(s)." }, + Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not generic." }, + Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must be a class or interface type." }, + Global_type_0_must_have_1_type_parameter_s: { code: 2317, category: ts.DiagnosticCategory.Error, key: "Global type '{0}' must have {1} type parameter(s)." }, + Cannot_find_global_type_0: { code: 2318, category: ts.DiagnosticCategory.Error, key: "Cannot find global type '{0}'." }, + Named_property_0_of_types_1_and_2_are_not_identical: { code: 2319, category: ts.DiagnosticCategory.Error, key: "Named property '{0}' of types '{1}' and '{2}' are not identical." }, + Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, + Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive stack depth comparing types '{0}' and '{1}'." }, + Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not assignable to type '{1}'." }, + Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is missing in type '{1}'." }, + Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, + Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types of property '{0}' are incompatible." }, + Property_0_is_optional_in_type_1_but_required_in_type_2: { code: 2327, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is optional in type '{1}' but required in type '{2}'." }, + Types_of_parameters_0_and_1_are_incompatible: { code: 2328, category: ts.DiagnosticCategory.Error, key: "Types of parameters '{0}' and '{1}' are incompatible." }, + Index_signature_is_missing_in_type_0: { code: 2329, category: ts.DiagnosticCategory.Error, key: "Index signature is missing in type '{0}'." }, + Index_signatures_are_incompatible: { code: 2330, category: ts.DiagnosticCategory.Error, key: "Index signatures are incompatible." }, + this_cannot_be_referenced_in_a_module_body: { code: 2331, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a module body." }, + this_cannot_be_referenced_in_current_location: { code: 2332, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in current location." }, + this_cannot_be_referenced_in_constructor_arguments: { code: 2333, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in constructor arguments." }, + this_cannot_be_referenced_in_a_static_property_initializer: { code: 2334, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a static property initializer." }, + super_can_only_be_referenced_in_a_derived_class: { code: 2335, category: ts.DiagnosticCategory.Error, key: "'super' can only be referenced in a derived class." }, + super_cannot_be_referenced_in_constructor_arguments: { code: 2336, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in constructor arguments." }, + Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: { code: 2337, category: ts.DiagnosticCategory.Error, key: "Super calls are not permitted outside constructors or in nested functions inside constructors" }, + super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: { code: 2338, category: ts.DiagnosticCategory.Error, key: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class" }, + Property_0_does_not_exist_on_type_1: { code: 2339, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on type '{1}'." }, + Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: { code: 2340, category: ts.DiagnosticCategory.Error, key: "Only public and protected methods of the base class are accessible via the 'super' keyword" }, + Property_0_is_private_and_only_accessible_within_class_1: { code: 2341, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is private and only accessible within class '{1}'." }, + An_index_expression_argument_must_be_of_type_string_number_symbol_or_any: { code: 2342, category: ts.DiagnosticCategory.Error, key: "An index expression argument must be of type 'string', 'number', 'symbol, or 'any'." }, + Type_0_does_not_satisfy_the_constraint_1: { code: 2344, category: ts.DiagnosticCategory.Error, key: "Type '{0}' does not satisfy the constraint '{1}'." }, + Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: { code: 2345, category: ts.DiagnosticCategory.Error, key: "Argument of type '{0}' is not assignable to parameter of type '{1}'." }, + Supplied_parameters_do_not_match_any_signature_of_call_target: { code: 2346, category: ts.DiagnosticCategory.Error, key: "Supplied parameters do not match any signature of call target." }, + Untyped_function_calls_may_not_accept_type_arguments: { code: 2347, category: ts.DiagnosticCategory.Error, key: "Untyped function calls may not accept type arguments." }, + Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: { code: 2348, category: ts.DiagnosticCategory.Error, key: "Value of type '{0}' is not callable. Did you mean to include 'new'?" }, + Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: { code: 2349, category: ts.DiagnosticCategory.Error, key: "Cannot invoke an expression whose type lacks a call signature." }, + Only_a_void_function_can_be_called_with_the_new_keyword: { code: 2350, category: ts.DiagnosticCategory.Error, key: "Only a void function can be called with the 'new' keyword." }, + Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature: { code: 2351, category: ts.DiagnosticCategory.Error, key: "Cannot use 'new' with an expression whose type lacks a call or construct signature." }, + Neither_type_0_nor_type_1_is_assignable_to_the_other: { code: 2352, category: ts.DiagnosticCategory.Error, key: "Neither type '{0}' nor type '{1}' is assignable to the other." }, + No_best_common_type_exists_among_return_expressions: { code: 2354, category: ts.DiagnosticCategory.Error, key: "No best common type exists among return expressions." }, + A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2355, category: ts.DiagnosticCategory.Error, key: "A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement." }, + An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: { code: 2356, category: ts.DiagnosticCategory.Error, key: "An arithmetic operand must be of type 'any', 'number' or an enum type." }, + The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: { code: 2357, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator must be a variable, property or indexer." }, + The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2358, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter." }, + The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: { code: 2359, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type." }, + The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol: { code: 2360, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'." }, + The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2361, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter" }, + The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2362, category: ts.DiagnosticCategory.Error, key: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: { code: 2363, category: ts.DiagnosticCategory.Error, key: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type." }, + Invalid_left_hand_side_of_assignment_expression: { code: 2364, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side of assignment expression." }, + Operator_0_cannot_be_applied_to_types_1_and_2: { code: 2365, category: ts.DiagnosticCategory.Error, key: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." }, + Type_parameter_name_cannot_be_0: { code: 2368, category: ts.DiagnosticCategory.Error, key: "Type parameter name cannot be '{0}'" }, + A_parameter_property_is_only_allowed_in_a_constructor_implementation: { code: 2369, category: ts.DiagnosticCategory.Error, key: "A parameter property is only allowed in a constructor implementation." }, + A_rest_parameter_must_be_of_an_array_type: { code: 2370, category: ts.DiagnosticCategory.Error, key: "A rest parameter must be of an array type." }, + A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: { code: 2371, category: ts.DiagnosticCategory.Error, key: "A parameter initializer is only allowed in a function or constructor implementation." }, + Parameter_0_cannot_be_referenced_in_its_initializer: { code: 2372, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' cannot be referenced in its initializer." }, + Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: { code: 2373, category: ts.DiagnosticCategory.Error, key: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it." }, + Duplicate_string_index_signature: { code: 2374, category: ts.DiagnosticCategory.Error, key: "Duplicate string index signature." }, + Duplicate_number_index_signature: { code: 2375, category: ts.DiagnosticCategory.Error, key: "Duplicate number index signature." }, + A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: { code: 2376, category: ts.DiagnosticCategory.Error, key: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties." }, + Constructors_for_derived_classes_must_contain_a_super_call: { code: 2377, category: ts.DiagnosticCategory.Error, key: "Constructors for derived classes must contain a 'super' call." }, + A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement: { code: 2378, category: ts.DiagnosticCategory.Error, key: "A 'get' accessor must return a value or consist of a single 'throw' statement." }, + Getter_and_setter_accessors_do_not_agree_in_visibility: { code: 2379, category: ts.DiagnosticCategory.Error, key: "Getter and setter accessors do not agree in visibility." }, + get_and_set_accessor_must_have_the_same_type: { code: 2380, category: ts.DiagnosticCategory.Error, key: "'get' and 'set' accessor must have the same type." }, + A_signature_with_an_implementation_cannot_use_a_string_literal_type: { code: 2381, category: ts.DiagnosticCategory.Error, key: "A signature with an implementation cannot use a string literal type." }, + Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: { code: 2382, category: ts.DiagnosticCategory.Error, key: "Specialized overload signature is not assignable to any non-specialized signature." }, + Overload_signatures_must_all_be_exported_or_not_exported: { code: 2383, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be exported or not exported." }, + Overload_signatures_must_all_be_ambient_or_non_ambient: { code: 2384, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be ambient or non-ambient." }, + Overload_signatures_must_all_be_public_private_or_protected: { code: 2385, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be public, private or protected." }, + Overload_signatures_must_all_be_optional_or_required: { code: 2386, category: ts.DiagnosticCategory.Error, key: "Overload signatures must all be optional or required." }, + Function_overload_must_be_static: { code: 2387, category: ts.DiagnosticCategory.Error, key: "Function overload must be static." }, + Function_overload_must_not_be_static: { code: 2388, category: ts.DiagnosticCategory.Error, key: "Function overload must not be static." }, + Function_implementation_name_must_be_0: { code: 2389, category: ts.DiagnosticCategory.Error, key: "Function implementation name must be '{0}'." }, + Constructor_implementation_is_missing: { code: 2390, category: ts.DiagnosticCategory.Error, key: "Constructor implementation is missing." }, + Function_implementation_is_missing_or_not_immediately_following_the_declaration: { code: 2391, category: ts.DiagnosticCategory.Error, key: "Function implementation is missing or not immediately following the declaration." }, + Multiple_constructor_implementations_are_not_allowed: { code: 2392, category: ts.DiagnosticCategory.Error, key: "Multiple constructor implementations are not allowed." }, + Duplicate_function_implementation: { code: 2393, category: ts.DiagnosticCategory.Error, key: "Duplicate function implementation." }, + Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload signature is not compatible with function implementation." }, + Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual declarations in merged declaration {0} must be all exported or all local." }, + Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, + Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, + Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, + Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: { code: 2402, category: ts.DiagnosticCategory.Error, key: "Expression resolves to '_super' that compiler uses to capture base class reference." }, + Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: { code: 2403, category: ts.DiagnosticCategory.Error, key: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'." }, + The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: { code: 2404, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot use a type annotation." }, + The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: { code: 2405, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'." }, + Invalid_left_hand_side_in_for_in_statement: { code: 2406, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...in' statement." }, + The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: { code: 2407, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter." }, + Setters_cannot_return_a_value: { code: 2408, category: ts.DiagnosticCategory.Error, key: "Setters cannot return a value." }, + Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: { code: 2409, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature must be assignable to the instance type of the class" }, + All_symbols_within_a_with_block_will_be_resolved_to_any: { code: 2410, category: ts.DiagnosticCategory.Error, key: "All symbols within a 'with' block will be resolved to 'any'." }, + Property_0_of_type_1_is_not_assignable_to_string_index_type_2: { code: 2411, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to string index type '{2}'." }, + Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2: { code: 2412, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'." }, + Numeric_index_type_0_is_not_assignable_to_string_index_type_1: { code: 2413, category: ts.DiagnosticCategory.Error, key: "Numeric index type '{0}' is not assignable to string index type '{1}'." }, + Class_name_cannot_be_0: { code: 2414, category: ts.DiagnosticCategory.Error, key: "Class name cannot be '{0}'" }, + Class_0_incorrectly_extends_base_class_1: { code: 2415, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly extends base class '{1}'." }, + Class_static_side_0_incorrectly_extends_base_class_static_side_1: { code: 2417, category: ts.DiagnosticCategory.Error, key: "Class static side '{0}' incorrectly extends base class static side '{1}'." }, + Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0: { code: 2419, category: ts.DiagnosticCategory.Error, key: "Type name '{0}' in extends clause does not reference constructor function for '{0}'." }, + Class_0_incorrectly_implements_interface_1: { code: 2420, category: ts.DiagnosticCategory.Error, key: "Class '{0}' incorrectly implements interface '{1}'." }, + A_class_may_only_implement_another_class_or_interface: { code: 2422, category: ts.DiagnosticCategory.Error, key: "A class may only implement another class or interface." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: { code: 2423, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor." }, + Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: { code: 2424, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property." }, + Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2425, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function." }, + Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: { code: 2426, category: ts.DiagnosticCategory.Error, key: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function." }, + Interface_name_cannot_be_0: { code: 2427, category: ts.DiagnosticCategory.Error, key: "Interface name cannot be '{0}'" }, + All_declarations_of_an_interface_must_have_identical_type_parameters: { code: 2428, category: ts.DiagnosticCategory.Error, key: "All declarations of an interface must have identical type parameters." }, + Interface_0_incorrectly_extends_interface_1: { code: 2430, category: ts.DiagnosticCategory.Error, key: "Interface '{0}' incorrectly extends interface '{1}'." }, + Enum_name_cannot_be_0: { code: 2431, category: ts.DiagnosticCategory.Error, key: "Enum name cannot be '{0}'" }, + In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: { code: 2432, category: ts.DiagnosticCategory.Error, key: "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element." }, + A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: { code: 2433, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be in a different file from a class or function with which it is merged" }, + A_module_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: { code: 2434, category: ts.DiagnosticCategory.Error, key: "A module declaration cannot be located prior to a class or function with which it is merged" }, + Ambient_external_modules_cannot_be_nested_in_other_modules: { code: 2435, category: ts.DiagnosticCategory.Error, key: "Ambient external modules cannot be nested in other modules." }, + Ambient_external_module_declaration_cannot_specify_relative_module_name: { code: 2436, category: ts.DiagnosticCategory.Error, key: "Ambient external module declaration cannot specify relative module name." }, + Module_0_is_hidden_by_a_local_declaration_with_the_same_name: { code: 2437, category: ts.DiagnosticCategory.Error, key: "Module '{0}' is hidden by a local declaration with the same name" }, + Import_name_cannot_be_0: { code: 2438, category: ts.DiagnosticCategory.Error, key: "Import name cannot be '{0}'" }, + Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: { code: 2439, category: ts.DiagnosticCategory.Error, key: "Import or export declaration in an ambient external module declaration cannot reference external module through relative external module name." }, + Import_declaration_conflicts_with_local_declaration_of_0: { code: 2440, category: ts.DiagnosticCategory.Error, key: "Import declaration conflicts with local declaration of '{0}'" }, + Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: { code: 2441, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module." }, + Types_have_separate_declarations_of_a_private_property_0: { code: 2442, category: ts.DiagnosticCategory.Error, key: "Types have separate declarations of a private property '{0}'." }, + Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: { code: 2443, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'." }, + Property_0_is_protected_in_type_1_but_public_in_type_2: { code: 2444, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected in type '{1}' but public in type '{2}'." }, + Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: { code: 2445, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible within class '{1}' and its subclasses." }, + Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1: { code: 2446, category: ts.DiagnosticCategory.Error, key: "Property '{0}' is protected and only accessible through an instance of class '{1}'." }, + The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: { code: 2447, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead." }, + Block_scoped_variable_0_used_before_its_declaration: { code: 2448, category: ts.DiagnosticCategory.Error, key: "Block-scoped variable '{0}' used before its declaration." }, + The_operand_of_an_increment_or_decrement_operator_cannot_be_a_constant: { code: 2449, category: ts.DiagnosticCategory.Error, key: "The operand of an increment or decrement operator cannot be a constant." }, + Left_hand_side_of_assignment_expression_cannot_be_a_constant: { code: 2450, category: ts.DiagnosticCategory.Error, key: "Left-hand side of assignment expression cannot be a constant." }, + Cannot_redeclare_block_scoped_variable_0: { code: 2451, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare block-scoped variable '{0}'." }, + An_enum_member_cannot_have_a_numeric_name: { code: 2452, category: ts.DiagnosticCategory.Error, key: "An enum member cannot have a numeric name." }, + The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly: { code: 2453, category: ts.DiagnosticCategory.Error, key: "The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly." }, + Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: ts.DiagnosticCategory.Error, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, + Type_alias_0_circularly_references_itself: { code: 2456, category: ts.DiagnosticCategory.Error, key: "Type alias '{0}' circularly references itself." }, + Type_alias_name_cannot_be_0: { code: 2457, category: ts.DiagnosticCategory.Error, key: "Type alias name cannot be '{0}'" }, + An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: ts.DiagnosticCategory.Error, key: "An AMD module cannot have multiple name assignments." }, + Type_0_has_no_property_1_and_no_string_index_signature: { code: 2459, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}' and no string index signature." }, + Type_0_has_no_property_1: { code: 2460, category: ts.DiagnosticCategory.Error, key: "Type '{0}' has no property '{1}'." }, + Type_0_is_not_an_array_type: { code: 2461, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type." }, + A_rest_element_must_be_last_in_an_array_destructuring_pattern: { code: 2462, category: ts.DiagnosticCategory.Error, key: "A rest element must be last in an array destructuring pattern" }, + A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: { code: 2463, category: ts.DiagnosticCategory.Error, key: "A binding pattern parameter cannot be optional in an implementation signature." }, + A_computed_property_name_must_be_of_type_string_number_symbol_or_any: { code: 2464, category: ts.DiagnosticCategory.Error, key: "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." }, + this_cannot_be_referenced_in_a_computed_property_name: { code: 2465, category: ts.DiagnosticCategory.Error, key: "'this' cannot be referenced in a computed property name." }, + super_cannot_be_referenced_in_a_computed_property_name: { code: 2466, category: ts.DiagnosticCategory.Error, key: "'super' cannot be referenced in a computed property name." }, + A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: { code: 2467, category: ts.DiagnosticCategory.Error, key: "A computed property name cannot reference a type parameter from its containing type." }, + Cannot_find_global_value_0: { code: 2468, category: ts.DiagnosticCategory.Error, key: "Cannot find global value '{0}'." }, + The_0_operator_cannot_be_applied_to_type_symbol: { code: 2469, category: ts.DiagnosticCategory.Error, key: "The '{0}' operator cannot be applied to type 'symbol'." }, + Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object: { code: 2470, category: ts.DiagnosticCategory.Error, key: "'Symbol' reference does not refer to the global Symbol constructor object." }, + A_computed_property_name_of_the_form_0_must_be_of_type_symbol: { code: 2471, category: ts.DiagnosticCategory.Error, key: "A computed property name of the form '{0}' must be of type 'symbol'." }, + Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher: { code: 2472, category: ts.DiagnosticCategory.Error, key: "Spread operator in 'new' expressions is only available when targeting ECMAScript 6 and higher." }, + Enum_declarations_must_all_be_const_or_non_const: { code: 2473, category: ts.DiagnosticCategory.Error, key: "Enum declarations must all be const or non-const." }, + In_const_enum_declarations_member_initializer_must_be_constant_expression: { code: 2474, category: ts.DiagnosticCategory.Error, key: "In 'const' enum declarations member initializer must be constant expression." }, + const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment: { code: 2475, category: ts.DiagnosticCategory.Error, key: "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment." }, + A_const_enum_member_can_only_be_accessed_using_a_string_literal: { code: 2476, category: ts.DiagnosticCategory.Error, key: "A const enum member can only be accessed using a string literal." }, + const_enum_member_initializer_was_evaluated_to_a_non_finite_value: { code: 2477, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to a non-finite value." }, + const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: { code: 2478, category: ts.DiagnosticCategory.Error, key: "'const' enum member initializer was evaluated to disallowed value 'NaN'." }, + Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: ts.DiagnosticCategory.Error, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, + let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: ts.DiagnosticCategory.Error, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, + Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: ts.DiagnosticCategory.Error, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, + The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, + Export_declaration_conflicts_with_exported_declaration_of_0: { code: 2484, category: ts.DiagnosticCategory.Error, key: "Export declaration conflicts with exported declaration of '{0}'" }, + The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant: { code: 2485, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot be a previously defined constant." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant: { code: 2486, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a previously defined constant." }, + Invalid_left_hand_side_in_for_of_statement: { code: 2487, category: ts.DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...of' statement." }, + The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { code: 2488, category: ts.DiagnosticCategory.Error, key: "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator." }, + The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method: { code: 2489, category: ts.DiagnosticCategory.Error, key: "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method." }, + The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property: { code: 2490, category: ts.DiagnosticCategory.Error, key: "The type returned by the 'next()' method of an iterator must have a 'value' property." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: { code: 2491, category: ts.DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a destructuring pattern." }, + Cannot_redeclare_identifier_0_in_catch_clause: { code: 2492, category: ts.DiagnosticCategory.Error, key: "Cannot redeclare identifier '{0}' in catch clause" }, + Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2: { code: 2493, category: ts.DiagnosticCategory.Error, key: "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'." }, + Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: { code: 2494, category: ts.DiagnosticCategory.Error, key: "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher." }, + Type_0_is_not_an_array_type_or_a_string_type: { code: 2495, category: ts.DiagnosticCategory.Error, key: "Type '{0}' is not an array type or a string type." }, + The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 2496, category: ts.DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, + External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { code: 2497, category: ts.DiagnosticCategory.Error, key: "External module '{0}' resolves to a non-module entity and cannot be imported using this construct." }, + External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { code: 2498, category: ts.DiagnosticCategory.Error, key: "External module '{0}' uses 'export =' and cannot be used with 'export *'." }, + An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2499, category: ts.DiagnosticCategory.Error, key: "An interface can only extend an identifier/qualified-name with optional type arguments." }, + A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2500, category: ts.DiagnosticCategory.Error, key: "A class can only implement an identifier/qualified-name with optional type arguments." }, + Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, + Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, + Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4006, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4008, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4010, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4012, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4014, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4016, category: ts.DiagnosticCategory.Error, key: "Type parameter '{0}' of exported function has or is using private name '{1}'." }, + Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4019, category: ts.DiagnosticCategory.Error, key: "Implements clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_class_0_has_or_is_using_private_name_1: { code: 4020, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported class '{0}' has or is using private name '{1}'." }, + Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: { code: 4022, category: ts.DiagnosticCategory.Error, key: "Extends clause of exported interface '{0}' has or is using private name '{1}'." }, + Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4023, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named." }, + Exported_variable_0_has_or_is_using_name_1_from_private_module_2: { code: 4024, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using name '{1}' from private module '{2}'." }, + Exported_variable_0_has_or_is_using_private_name_1: { code: 4025, category: ts.DiagnosticCategory.Error, key: "Exported variable '{0}' has or is using private name '{1}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4026, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4027, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4028, category: ts.DiagnosticCategory.Error, key: "Public static property '{0}' of exported class has or is using private name '{1}'." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4029, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4030, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, + Public_property_0_of_exported_class_has_or_is_using_private_name_1: { code: 4031, category: ts.DiagnosticCategory.Error, key: "Public property '{0}' of exported class has or is using private name '{1}'." }, + Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4032, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'." }, + Property_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4033, category: ts.DiagnosticCategory.Error, key: "Property '{0}' of exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4034, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4035, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4036, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1: { code: 4037, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public property setter from exported class has or is using private name '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4038, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4039, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4040, category: ts.DiagnosticCategory.Error, key: "Return type of public static property getter from exported class has or is using private name '{0}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4041, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4042, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0: { code: 4043, category: ts.DiagnosticCategory.Error, key: "Return type of public property getter from exported class has or is using private name '{0}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4044, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4045, category: ts.DiagnosticCategory.Error, key: "Return type of constructor signature from exported interface has or is using private name '{0}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4046, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4047, category: ts.DiagnosticCategory.Error, key: "Return type of call signature from exported interface has or is using private name '{0}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4048, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: { code: 4049, category: ts.DiagnosticCategory.Error, key: "Return type of index signature from exported interface has or is using private name '{0}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4050, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4051, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: { code: 4052, category: ts.DiagnosticCategory.Error, key: "Return type of public static method from exported class has or is using private name '{0}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4053, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: { code: 4054, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using name '{0}' from private module '{1}'." }, + Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: { code: 4055, category: ts.DiagnosticCategory.Error, key: "Return type of public method from exported class has or is using private name '{0}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: { code: 4056, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using name '{0}' from private module '{1}'." }, + Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: { code: 4057, category: ts.DiagnosticCategory.Error, key: "Return type of method from exported interface has or is using private name '{0}'." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: { code: 4058, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named." }, + Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: { code: 4059, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using name '{0}' from private module '{1}'." }, + Return_type_of_exported_function_has_or_is_using_private_name_0: { code: 4060, category: ts.DiagnosticCategory.Error, key: "Return type of exported function has or is using private name '{0}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4061, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4062, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: { code: 4063, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor from exported class has or is using private name '{1}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4064, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4065, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4066, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: { code: 4067, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4068, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4069, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: { code: 4070, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public static method from exported class has or is using private name '{1}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4071, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4072, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: { code: 4073, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of public method from exported class has or is using private name '{1}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: { code: 4074, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: { code: 4075, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of method from exported interface has or is using private name '{1}'." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: { code: 4076, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named." }, + Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, + Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, + Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: ts.DiagnosticCategory.Error, key: "Exported type alias '{0}' has or is using private name '{1}'." }, + Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: ts.DiagnosticCategory.Error, key: "Default export of the module has or is using private name '{0}'." }, + Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher: { code: 4091, category: ts.DiagnosticCategory.Error, key: "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher." }, + The_current_host_does_not_support_the_0_option: { code: 5001, category: ts.DiagnosticCategory.Error, key: "The current host does not support the '{0}' option." }, + Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: ts.DiagnosticCategory.Error, key: "Cannot find the common subdirectory path for the input files." }, + Cannot_read_file_0_Colon_1: { code: 5012, category: ts.DiagnosticCategory.Error, key: "Cannot read file '{0}': {1}" }, + Unsupported_file_encoding: { code: 5013, category: ts.DiagnosticCategory.Error, key: "Unsupported file encoding." }, + Unknown_compiler_option_0: { code: 5023, category: ts.DiagnosticCategory.Error, key: "Unknown compiler option '{0}'." }, + Compiler_option_0_requires_a_value_of_type_1: { code: 5024, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' requires a value of type {1}." }, + Could_not_write_file_0_Colon_1: { code: 5033, category: ts.DiagnosticCategory.Error, key: "Could not write file '{0}': {1}" }, + Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5038, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: { code: 5039, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified without specifying 'sourcemap' option." }, + Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, + Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, + Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." }, + Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." }, + Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." }, + Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." }, + Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." }, + Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." }, + Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate and emit output to single file." }, + Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.d.ts' file." }, + Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate map files instead of generated locations." }, + Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: { code: 6004, category: ts.DiagnosticCategory.Message, key: "Specifies the location where debugger should locate TypeScript files instead of source locations." }, + Watch_input_files: { code: 6005, category: ts.DiagnosticCategory.Message, key: "Watch input files." }, + Redirect_output_structure_to_the_directory: { code: 6006, category: ts.DiagnosticCategory.Message, key: "Redirect output structure to the directory." }, + Do_not_erase_const_enum_declarations_in_generated_code: { code: 6007, category: ts.DiagnosticCategory.Message, key: "Do not erase const enum declarations in generated code." }, + Do_not_emit_outputs_if_any_type_checking_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs if any type checking errors were reported." }, + Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do not emit comments to output." }, + Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do not emit outputs." }, + Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES6_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES6' (experimental)" }, + Specify_module_code_generation_Colon_commonjs_or_amd: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify module code generation: 'commonjs' or 'amd'" }, + Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print this message." }, + Print_the_compiler_s_version: { code: 6019, category: ts.DiagnosticCategory.Message, key: "Print the compiler's version." }, + Compile_the_project_in_the_given_directory: { code: 6020, category: ts.DiagnosticCategory.Message, key: "Compile the project in the given directory." }, + Syntax_Colon_0: { code: 6023, category: ts.DiagnosticCategory.Message, key: "Syntax: {0}" }, + options: { code: 6024, category: ts.DiagnosticCategory.Message, key: "options" }, + file: { code: 6025, category: ts.DiagnosticCategory.Message, key: "file" }, + Examples_Colon_0: { code: 6026, category: ts.DiagnosticCategory.Message, key: "Examples: {0}" }, + Options_Colon: { code: 6027, category: ts.DiagnosticCategory.Message, key: "Options:" }, + Version_0: { code: 6029, category: ts.DiagnosticCategory.Message, key: "Version {0}" }, + Insert_command_line_options_and_files_from_a_file: { code: 6030, category: ts.DiagnosticCategory.Message, key: "Insert command line options and files from a file." }, + File_change_detected_Starting_incremental_compilation: { code: 6032, category: ts.DiagnosticCategory.Message, key: "File change detected. Starting incremental compilation..." }, + KIND: { code: 6034, category: ts.DiagnosticCategory.Message, key: "KIND" }, + FILE: { code: 6035, category: ts.DiagnosticCategory.Message, key: "FILE" }, + VERSION: { code: 6036, category: ts.DiagnosticCategory.Message, key: "VERSION" }, + LOCATION: { code: 6037, category: ts.DiagnosticCategory.Message, key: "LOCATION" }, + DIRECTORY: { code: 6038, category: ts.DiagnosticCategory.Message, key: "DIRECTORY" }, + Compilation_complete_Watching_for_file_changes: { code: 6042, category: ts.DiagnosticCategory.Message, key: "Compilation complete. Watching for file changes." }, + Generates_corresponding_map_file: { code: 6043, category: ts.DiagnosticCategory.Message, key: "Generates corresponding '.map' file." }, + Compiler_option_0_expects_an_argument: { code: 6044, category: ts.DiagnosticCategory.Error, key: "Compiler option '{0}' expects an argument." }, + Unterminated_quoted_string_in_response_file_0: { code: 6045, category: ts.DiagnosticCategory.Error, key: "Unterminated quoted string in response file '{0}'." }, + Argument_for_module_option_must_be_commonjs_or_amd: { code: 6046, category: ts.DiagnosticCategory.Error, key: "Argument for '--module' option must be 'commonjs' or 'amd'." }, + Argument_for_target_option_must_be_es3_es5_or_es6: { code: 6047, category: ts.DiagnosticCategory.Error, key: "Argument for '--target' option must be 'es3', 'es5', or 'es6'." }, + Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: { code: 6048, category: ts.DiagnosticCategory.Error, key: "Locale must be of the form or -. For example '{0}' or '{1}'." }, + Unsupported_locale_0: { code: 6049, category: ts.DiagnosticCategory.Error, key: "Unsupported locale '{0}'." }, + Unable_to_open_file_0: { code: 6050, category: ts.DiagnosticCategory.Error, key: "Unable to open file '{0}'." }, + Corrupted_locale_file_0: { code: 6051, category: ts.DiagnosticCategory.Error, key: "Corrupted locale file {0}." }, + Raise_error_on_expressions_and_declarations_with_an_implied_any_type: { code: 6052, category: ts.DiagnosticCategory.Message, key: "Raise error on expressions and declarations with an implied 'any' type." }, + File_0_not_found: { code: 6053, category: ts.DiagnosticCategory.Error, key: "File '{0}' not found." }, + File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: ts.DiagnosticCategory.Error, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, + Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: ts.DiagnosticCategory.Message, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, + Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: ts.DiagnosticCategory.Message, key: "Do not emit declarations for code that has an '@internal' annotation." }, + Preserve_new_lines_when_emitting_code: { code: 6057, category: ts.DiagnosticCategory.Message, key: "Preserve new-lines when emitting code." }, + Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." }, + Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." }, + Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member '{0}' implicitly has an '{1}' type." }, + new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: { code: 7009, category: ts.DiagnosticCategory.Error, key: "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type." }, + _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: { code: 7010, category: ts.DiagnosticCategory.Error, key: "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type." }, + Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: { code: 7011, category: ts.DiagnosticCategory.Error, key: "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type." }, + Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7013, category: ts.DiagnosticCategory.Error, key: "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_type_annotation: { code: 7016, category: ts.DiagnosticCategory.Error, key: "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation." }, + Index_signature_of_object_type_implicitly_has_an_any_type: { code: 7017, category: ts.DiagnosticCategory.Error, key: "Index signature of object type implicitly has an 'any' type." }, + Object_literal_s_property_0_implicitly_has_an_1_type: { code: 7018, category: ts.DiagnosticCategory.Error, key: "Object literal's property '{0}' implicitly has an '{1}' type." }, + Rest_parameter_0_implicitly_has_an_any_type: { code: 7019, category: ts.DiagnosticCategory.Error, key: "Rest parameter '{0}' implicitly has an 'any[]' type." }, + Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: { code: 7020, category: ts.DiagnosticCategory.Error, key: "Call signature, which lacks return-type annotation, implicitly has an 'any' return type." }, + _0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation: { code: 7021, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is referenced directly or indirectly in its own type annotation." }, + _0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: { code: 7022, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer." }, + _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7023, category: ts.DiagnosticCategory.Error, key: "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: ts.DiagnosticCategory.Error, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, + You_cannot_rename_this_element: { code: 8000, category: ts.DiagnosticCategory.Error, key: "You cannot rename this element." }, + You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: ts.DiagnosticCategory.Error, key: "You cannot rename elements that are defined in the standard TypeScript library." }, + yield_expressions_are_not_currently_supported: { code: 9000, category: ts.DiagnosticCategory.Error, key: "'yield' expressions are not currently supported." }, + Generators_are_not_currently_supported: { code: 9001, category: ts.DiagnosticCategory.Error, key: "Generators are not currently supported." }, + Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { code: 9002, category: ts.DiagnosticCategory.Error, key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." }, + class_expressions_are_not_currently_supported: { code: 9003, category: ts.DiagnosticCategory.Error, key: "'class' expressions are not currently supported." }, + class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration: { code: 9004, category: ts.DiagnosticCategory.Error, key: "'class' declarations are only supported directly inside a module or as a top level declaration." } }; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { var textToToken = { - "any": 110, - "boolean": 111, - "break": 65, - "case": 66, - "catch": 67, - "class": 68, - "continue": 70, - "const": 69, - "constructor": 112, - "debugger": 71, - "declare": 113, - "default": 72, - "delete": 73, - "do": 74, - "else": 75, - "enum": 76, - "export": 77, - "extends": 78, - "false": 79, - "finally": 80, - "for": 81, - "function": 82, - "get": 114, - "if": 83, - "implements": 101, - "import": 84, - "in": 85, - "instanceof": 86, - "interface": 102, - "let": 103, - "module": 115, - "new": 87, - "null": 88, - "number": 117, - "package": 104, - "private": 105, - "protected": 106, - "public": 107, - "require": 116, - "return": 89, - "set": 118, - "static": 108, - "string": 119, - "super": 90, - "switch": 91, - "symbol": 120, - "this": 92, - "throw": 93, - "true": 94, - "try": 95, - "type": 121, - "typeof": 96, - "var": 97, - "void": 98, - "while": 99, - "with": 100, - "yield": 109, - "of": 122, + "any": 112, + "as": 102, + "boolean": 113, + "break": 66, + "case": 67, + "catch": 68, + "class": 69, + "continue": 71, + "const": 70, + "constructor": 114, + "debugger": 72, + "declare": 115, + "default": 73, + "delete": 74, + "do": 75, + "else": 76, + "enum": 77, + "export": 78, + "extends": 79, + "false": 80, + "finally": 81, + "for": 82, + "from": 124, + "function": 83, + "get": 116, + "if": 84, + "implements": 103, + "import": 85, + "in": 86, + "instanceof": 87, + "interface": 104, + "let": 105, + "module": 117, + "new": 88, + "null": 89, + "number": 119, + "package": 106, + "private": 107, + "protected": 108, + "public": 109, + "require": 118, + "return": 90, + "set": 120, + "static": 110, + "string": 121, + "super": 91, + "switch": 92, + "symbol": 122, + "this": 93, + "throw": 94, + "true": 95, + "try": 96, + "type": 123, + "typeof": 97, + "var": 98, + "void": 99, + "while": 100, + "with": 101, + "yield": 111, + "of": 125, "{": 14, "}": 15, "(": 16, @@ -2014,18 +2117,19 @@ var ts; "||": 49, "?": 50, ":": 51, - "=": 52, - "+=": 53, - "-=": 54, - "*=": 55, - "/=": 56, - "%=": 57, - "<<=": 58, - ">>=": 59, - ">>>=": 60, - "&=": 61, - "|=": 62, - "^=": 63 + "=": 53, + "+=": 54, + "-=": 55, + "*=": 56, + "/=": 57, + "%=": 58, + "<<=": 59, + ">>=": 60, + ">>>=": 61, + "&=": 62, + "|=": 63, + "^=": 64, + "@": 52 }; var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,]; @@ -2054,17 +2158,21 @@ var ts; return false; } function isUnicodeIdentifierStart(code, languageVersion) { - return languageVersion >= 1 ? lookupInUnicodeMap(code, unicodeES5IdentifierStart) : lookupInUnicodeMap(code, unicodeES3IdentifierStart); + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierStart) : + lookupInUnicodeMap(code, unicodeES3IdentifierStart); } ts.isUnicodeIdentifierStart = isUnicodeIdentifierStart; function isUnicodeIdentifierPart(code, languageVersion) { - return languageVersion >= 1 ? lookupInUnicodeMap(code, unicodeES5IdentifierPart) : lookupInUnicodeMap(code, unicodeES3IdentifierPart); + return languageVersion >= 1 ? + lookupInUnicodeMap(code, unicodeES5IdentifierPart) : + lookupInUnicodeMap(code, unicodeES3IdentifierPart); } function makeReverseMap(source) { var result = []; - for (var name in source) { - if (source.hasOwnProperty(name)) { - result[source[name]] = name; + for (var name_2 in source) { + if (source.hasOwnProperty(name_2)) { + result[source[name_2]] = name_2; } } return result; @@ -2074,6 +2182,10 @@ var ts; return tokenStrings[t]; } ts.tokenToString = tokenToString; + function stringToToken(s) { + return textToToken[s]; + } + ts.stringToToken = stringToToken; function computeLineStarts(text) { var result = new Array(); var pos = 0; @@ -2131,13 +2243,35 @@ var ts; ts.getLineAndCharacterOfPosition = getLineAndCharacterOfPosition; var hasOwnProperty = Object.prototype.hasOwnProperty; function isWhiteSpace(ch) { - return ch === 32 || ch === 9 || ch === 11 || ch === 12 || - ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || - ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279; + return ch === 32 || + ch === 9 || + ch === 11 || + ch === 12 || + ch === 160 || + ch === 133 || + ch === 5760 || + ch >= 8192 && ch <= 8203 || + ch === 8239 || + ch === 8287 || + ch === 12288 || + ch === 65279; } ts.isWhiteSpace = isWhiteSpace; function isLineBreak(ch) { - return ch === 10 || ch === 13 || ch === 8232 || ch === 8233 || ch === 133; + // ES5 7.3: + // The ECMAScript line terminator characters are listed in Table 3. + // Table 3 � Line Terminator Characters + // Code Unit Value Name Formal Name + // \u000A Line Feed + // \u000D Carriage Return + // \u2028 Line separator + // \u2029 Paragraph separator + // Only the characters in Table 3 are treated as line terminators. Other new line or line + // breaking characters are treated as white space but not as line terminators. + return ch === 10 || + ch === 13 || + ch === 8232 || + ch === 8233; } ts.isLineBreak = isLineBreak; function isDigit(ch) { @@ -2240,8 +2374,8 @@ var ts; else { ts.Debug.assert(ch === 61); while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 62 && isConflictMarkerTrivia(text, pos)) { + var ch_1 = text.charCodeAt(pos); + if (ch_1 === 62 && isConflictMarkerTrivia(text, pos)) { break; } pos++; @@ -2256,8 +2390,9 @@ var ts; var ch = text.charCodeAt(pos); switch (ch) { case 13: - if (text.charCodeAt(pos + 1) === 10) + if (text.charCodeAt(pos + 1) === 10) { pos++; + } case 10: pos++; if (trailing) { @@ -2299,8 +2434,9 @@ var ts; } } if (collecting) { - if (!result) + if (!result) { result = []; + } result.push({ pos: startPos, end: pos, hasTrailingNewLine: hasTrailingNewLine }); } continue; @@ -2347,6 +2483,7 @@ var ts; var token; var tokenValue; var precedingLineBreak; + var hasExtendedUnicodeEscape; var tokenIsUnterminated; function error(message, length) { if (onError) { @@ -2396,10 +2533,16 @@ var ts; } return +(text.substring(start, pos)); } - function scanHexDigits(count, mustMatchCount) { + function scanExactNumberOfHexDigits(count) { + return scanHexDigits(count, false); + } + function scanMinimumNumberOfHexDigits(count) { + return scanHexDigits(count, true); + } + function scanHexDigits(minCount, scanAsManyAsPossible) { var digits = 0; var value = 0; - while (digits < count || !mustMatchCount) { + while (digits < minCount || scanAsManyAsPossible) { var ch = text.charCodeAt(pos); if (ch >= 48 && ch <= 57) { value = value * 16 + ch - 48; @@ -2416,7 +2559,7 @@ var ts; pos++; digits++; } - if (digits < count) { + if (digits < minCount) { value = -1; } return value; @@ -2529,16 +2672,15 @@ var ts; return "\'"; case 34: return "\""; - case 120: case 117: - var ch = scanHexDigits(ch === 120 ? 2 : 4, true); - if (ch >= 0) { - return String.fromCharCode(ch); - } - else { - error(ts.Diagnostics.Hexadecimal_digit_expected); - return ""; + if (pos < len && text.charCodeAt(pos) === 123) { + hasExtendedUnicodeEscape = true; + pos++; + return scanExtendedUnicodeEscape(); } + return scanHexadecimalEscape(4); + case 120: + return scanHexadecimalEscape(2); case 13: if (pos < len && text.charCodeAt(pos) === 10) { pos++; @@ -2551,11 +2693,57 @@ var ts; return String.fromCharCode(ch); } } + function scanHexadecimalEscape(numDigits) { + var escapedValue = scanExactNumberOfHexDigits(numDigits); + if (escapedValue >= 0) { + return String.fromCharCode(escapedValue); + } + else { + error(ts.Diagnostics.Hexadecimal_digit_expected); + return ""; + } + } + function scanExtendedUnicodeEscape() { + var escapedValue = scanMinimumNumberOfHexDigits(1); + var isInvalidExtendedEscape = false; + if (escapedValue < 0) { + error(ts.Diagnostics.Hexadecimal_digit_expected); + isInvalidExtendedEscape = true; + } + else if (escapedValue > 0x10FFFF) { + error(ts.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive); + isInvalidExtendedEscape = true; + } + if (pos >= len) { + error(ts.Diagnostics.Unexpected_end_of_text); + isInvalidExtendedEscape = true; + } + else if (text.charCodeAt(pos) == 125) { + pos++; + } + else { + error(ts.Diagnostics.Unterminated_Unicode_escape_sequence); + isInvalidExtendedEscape = true; + } + if (isInvalidExtendedEscape) { + return ""; + } + return utf16EncodeAsString(escapedValue); + } + function utf16EncodeAsString(codePoint) { + ts.Debug.assert(0x0 <= codePoint && codePoint <= 0x10FFFF); + if (codePoint <= 65535) { + return String.fromCharCode(codePoint); + } + var codeUnit1 = Math.floor((codePoint - 65536) / 1024) + 0xD800; + var codeUnit2 = ((codePoint - 65536) % 1024) + 0xDC00; + return String.fromCharCode(codeUnit1, codeUnit2); + } function peekUnicodeEscape() { if (pos + 5 < len && text.charCodeAt(pos + 1) === 117) { var start = pos; pos += 2; - var value = scanHexDigits(4, true); + var value = scanExactNumberOfHexDigits(4); pos = start; return value; } @@ -2594,7 +2782,7 @@ var ts; return token = textToToken[tokenValue]; } } - return token = 64; + return token = 65; } function scanBinaryOrOctalDigits(base) { ts.Debug.assert(base !== 2 || base !== 8, "Expected either base 2 or base 8"); @@ -2617,6 +2805,7 @@ var ts; } function scan() { startPos = pos; + hasExtendedUnicodeEscape = false; precedingLineBreak = false; tokenIsUnterminated = false; while (true) { @@ -2672,7 +2861,7 @@ var ts; return token = scanTemplateAndSetTokenValue(); case 37: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 57; + return pos += 2, token = 58; } return pos++, token = 37; case 38: @@ -2680,7 +2869,7 @@ var ts; return pos += 2, token = 48; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 61; + return pos += 2, token = 62; } return pos++, token = 43; case 40: @@ -2689,7 +2878,7 @@ var ts; return pos++, token = 17; case 42: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 55; + return pos += 2, token = 56; } return pos++, token = 35; case 43: @@ -2697,7 +2886,7 @@ var ts; return pos += 2, token = 38; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 53; + return pos += 2, token = 54; } return pos++, token = 33; case 44: @@ -2707,7 +2896,7 @@ var ts; return pos += 2, token = 39; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 54; + return pos += 2, token = 55; } return pos++, token = 34; case 46: @@ -2739,13 +2928,13 @@ var ts; pos += 2; var commentClosed = false; while (pos < len) { - var ch = text.charCodeAt(pos); - if (ch === 42 && text.charCodeAt(pos + 1) === 47) { + var ch_2 = text.charCodeAt(pos); + if (ch_2 === 42 && text.charCodeAt(pos + 1) === 47) { pos += 2; commentClosed = true; break; } - if (isLineBreak(ch)) { + if (isLineBreak(ch_2)) { precedingLineBreak = true; } pos++; @@ -2762,13 +2951,13 @@ var ts; } } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 56; + return pos += 2, token = 57; } return pos++, token = 36; case 48: if (pos + 2 < len && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { pos += 2; - var value = scanHexDigits(1, false); + var value = scanMinimumNumberOfHexDigits(1); if (value < 0) { error(ts.Diagnostics.Hexadecimal_digit_expected); value = 0; @@ -2827,7 +3016,7 @@ var ts; } if (text.charCodeAt(pos + 1) === 60) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 58; + return pos += 3, token = 59; } return pos += 2, token = 40; } @@ -2854,7 +3043,7 @@ var ts; if (text.charCodeAt(pos + 1) === 62) { return pos += 2, token = 32; } - return pos++, token = 52; + return pos++, token = 53; case 62: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2874,7 +3063,7 @@ var ts; return pos++, token = 19; case 94: if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 63; + return pos += 2, token = 64; } return pos++, token = 45; case 123: @@ -2884,18 +3073,20 @@ var ts; return pos += 2, token = 49; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 62; + return pos += 2, token = 63; } return pos++, token = 44; case 125: return pos++, token = 15; case 126: return pos++, token = 47; + case 64: + return pos++, token = 52; case 92: - var ch = peekUnicodeEscape(); - if (ch >= 0 && isIdentifierStart(ch)) { + var cookedChar = peekUnicodeEscape(); + if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { pos += 6; - tokenValue = String.fromCharCode(ch) + scanIdentifierParts(); + tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); @@ -2930,12 +3121,12 @@ var ts; if (text.charCodeAt(pos) === 62) { if (text.charCodeAt(pos + 1) === 62) { if (text.charCodeAt(pos + 2) === 61) { - return pos += 3, token = 60; + return pos += 3, token = 61; } return pos += 2, token = 42; } if (text.charCodeAt(pos + 1) === 61) { - return pos += 2, token = 59; + return pos += 2, token = 60; } return pos++, token = 41; } @@ -2946,7 +3137,7 @@ var ts; return token; } function reScanSlashToken() { - if (token === 36 || token === 56) { + if (token === 36 || token === 57) { var p = tokenPos + 1; var inEscape = false; var inCharacterClass = false; @@ -3038,9 +3229,10 @@ var ts; getTokenPos: function () { return tokenPos; }, getTokenText: function () { return text.substring(tokenPos, pos); }, getTokenValue: function () { return tokenValue; }, + hasExtendedUnicodeEscape: function () { return hasExtendedUnicodeEscape; }, hasPrecedingLineBreak: function () { return precedingLineBreak; }, - isIdentifier: function () { return token === 64 || token > 100; }, - isReservedWord: function () { return token >= 65 && token <= 100; }, + isIdentifier: function () { return token === 65 || token > 101; }, + isReservedWord: function () { return token >= 66 && token <= 101; }, isUnterminated: function () { return tokenIsUnterminated; }, reScanGreaterToken: reScanGreaterToken, reScanSlashToken: reScanSlashToken, @@ -3054,12 +3246,525 @@ var ts; } ts.createScanner = createScanner; })(ts || (ts = {})); +/// +var ts; +(function (ts) { + ts.bindTime = 0; + (function (ModuleInstanceState) { + ModuleInstanceState[ModuleInstanceState["NonInstantiated"] = 0] = "NonInstantiated"; + ModuleInstanceState[ModuleInstanceState["Instantiated"] = 1] = "Instantiated"; + ModuleInstanceState[ModuleInstanceState["ConstEnumOnly"] = 2] = "ConstEnumOnly"; + })(ts.ModuleInstanceState || (ts.ModuleInstanceState = {})); + var ModuleInstanceState = ts.ModuleInstanceState; + function getModuleInstanceState(node) { + if (node.kind === 202 || node.kind === 203) { + return 0; + } + else if (ts.isConstEnumDeclaration(node)) { + return 2; + } + else if ((node.kind === 209 || node.kind === 208) && !(node.flags & 1)) { + return 0; + } + else if (node.kind === 206) { + var state = 0; + ts.forEachChild(node, function (n) { + switch (getModuleInstanceState(n)) { + case 0: + return false; + case 2: + state = 2; + return false; + case 1: + state = 1; + return true; + } + }); + return state; + } + else if (node.kind === 205) { + return getModuleInstanceState(node.body); + } + else { + return 1; + } + } + ts.getModuleInstanceState = getModuleInstanceState; + function bindSourceFile(file) { + var start = new Date().getTime(); + bindSourceFileWorker(file); + ts.bindTime += new Date().getTime() - start; + } + ts.bindSourceFile = bindSourceFile; + function bindSourceFileWorker(file) { + var parent; + var container; + var blockScopeContainer; + var lastContainer; + var symbolCount = 0; + var Symbol = ts.objectAllocator.getSymbolConstructor(); + if (!file.locals) { + file.locals = {}; + container = file; + setBlockScopeContainer(file, false); + bind(file); + file.symbolCount = symbolCount; + } + function createSymbol(flags, name) { + symbolCount++; + return new Symbol(flags, name); + } + function setBlockScopeContainer(node, cleanLocals) { + blockScopeContainer = node; + if (cleanLocals) { + blockScopeContainer.locals = undefined; + } + } + function addDeclarationToSymbol(symbol, node, symbolKind) { + symbol.flags |= symbolKind; + if (!symbol.declarations) + symbol.declarations = []; + symbol.declarations.push(node); + if (symbolKind & 1952 && !symbol.exports) + symbol.exports = {}; + if (symbolKind & 6240 && !symbol.members) + symbol.members = {}; + node.symbol = symbol; + if (symbolKind & 107455 && !symbol.valueDeclaration) + symbol.valueDeclaration = node; + } + function getDeclarationName(node) { + if (node.name) { + if (node.kind === 205 && node.name.kind === 8) { + return '"' + node.name.text + '"'; + } + if (node.name.kind === 127) { + var nameExpression = node.name.expression; + ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); + return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); + } + return node.name.text; + } + switch (node.kind) { + case 143: + case 135: + return "__constructor"; + case 142: + case 138: + return "__call"; + case 139: + return "__new"; + case 140: + return "__index"; + case 215: + return "__export"; + case 214: + return node.isExportEquals ? "export=" : "default"; + case 200: + case 201: + return node.flags & 256 ? "default" : undefined; + } + } + function getDisplayName(node) { + return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); + } + function declareSymbol(symbols, parent, node, includes, excludes) { + ts.Debug.assert(!ts.hasDynamicName(node)); + var name = node.flags & 256 && parent ? "default" : getDeclarationName(node); + var symbol; + if (name !== undefined) { + symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); + if (symbol.flags & excludes) { + if (node.name) { + node.name.parent = node; + } + var message = symbol.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 + : ts.Diagnostics.Duplicate_identifier_0; + ts.forEach(symbol.declarations, function (declaration) { + file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); + }); + file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name || node, message, getDisplayName(node))); + symbol = createSymbol(0, name); + } + } + else { + symbol = createSymbol(0, "__missing"); + } + addDeclarationToSymbol(symbol, node, includes); + symbol.parent = parent; + if ((node.kind === 201 || node.kind === 174) && symbol.exports) { + var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); + if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { + if (node.name) { + node.name.parent = node; + } + file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); + } + symbol.exports[prototypeSymbol.name] = prototypeSymbol; + prototypeSymbol.parent = symbol; + } + return symbol; + } + function declareModuleMember(node, symbolKind, symbolExcludes) { + var hasExportModifier = ts.getCombinedNodeFlags(node) & 1; + if (symbolKind & 8388608) { + if (node.kind === 217 || (node.kind === 208 && hasExportModifier)) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + else { + if (hasExportModifier || container.flags & 32768) { + var exportKind = (symbolKind & 107455 ? 1048576 : 0) | + (symbolKind & 793056 ? 2097152 : 0) | + (symbolKind & 1536 ? 4194304 : 0); + var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); + local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + node.localSymbol = local; + } + else { + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + } + } + } + function bindChildren(node, symbolKind, isBlockScopeContainer) { + if (symbolKind & 255504) { + node.locals = {}; + } + var saveParent = parent; + var saveContainer = container; + var savedBlockScopeContainer = blockScopeContainer; + parent = node; + if (symbolKind & 262128) { + container = node; + if (lastContainer) { + lastContainer.nextContainer = container; + } + lastContainer = container; + } + if (isBlockScopeContainer) { + setBlockScopeContainer(node, (symbolKind & 255504) === 0 && node.kind !== 227); + } + ts.forEachChild(node, bind); + container = saveContainer; + parent = saveParent; + blockScopeContainer = savedBlockScopeContainer; + } + function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + switch (container.kind) { + case 205: + declareModuleMember(node, symbolKind, symbolExcludes); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, symbolKind, symbolExcludes); + break; + } + case 142: + case 143: + case 138: + case 139: + case 140: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); + break; + case 174: + case 201: + if (node.flags & 128) { + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + case 145: + case 154: + case 202: + declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); + break; + case 204: + declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); + break; + } + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function isAmbientContext(node) { + while (node) { + if (node.flags & 2) + return true; + node = node.parent; + } + return false; + } + function hasExportDeclarations(node) { + var body = node.kind === 227 ? node : node.body; + if (body.kind === 227 || body.kind === 206) { + for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { + var stat = _a[_i]; + if (stat.kind === 215 || stat.kind === 214) { + return true; + } + } + } + return false; + } + function setExportContextFlag(node) { + if (isAmbientContext(node) && !hasExportDeclarations(node)) { + node.flags |= 32768; + } + else { + node.flags &= ~32768; + } + } + function bindModuleDeclaration(node) { + setExportContextFlag(node); + if (node.name.kind === 8) { + bindDeclaration(node, 512, 106639, true); + } + else { + var state = getModuleInstanceState(node); + if (state === 0) { + bindDeclaration(node, 1024, 0, true); + } + else { + bindDeclaration(node, 512, 106639, true); + var currentModuleIsConstEnumOnly = state === 2; + if (node.symbol.constEnumOnlyModule === undefined) { + node.symbol.constEnumOnlyModule = currentModuleIsConstEnumOnly; + } + else { + node.symbol.constEnumOnlyModule = node.symbol.constEnumOnlyModule && currentModuleIsConstEnumOnly; + } + } + } + } + function bindFunctionOrConstructorType(node) { + // For a given function symbol "<...>(...) => T" we want to generate a symbol identical + // to the one we would get for: { <...>(...): T } + // + // We do that by making an anonymous type literal symbol, and then setting the function + // symbol as its sole member. To the rest of the system, this symbol will be indistinguishable + // from an actual type literal symbol you would have gotten had you used the long form. + var symbol = createSymbol(131072, getDeclarationName(node)); + addDeclarationToSymbol(symbol, node, 131072); + bindChildren(node, 131072, false); + var typeLiteralSymbol = createSymbol(2048, "__type"); + addDeclarationToSymbol(typeLiteralSymbol, node, 2048); + typeLiteralSymbol.members = {}; + typeLiteralSymbol.members[node.kind === 142 ? "__call" : "__new"] = symbol; + } + function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { + var symbol = createSymbol(symbolKind, name); + addDeclarationToSymbol(symbol, node, symbolKind); + bindChildren(node, symbolKind, isBlockScopeContainer); + } + function bindCatchVariableDeclaration(node) { + bindChildren(node, 0, true); + } + function bindBlockScopedVariableDeclaration(node) { + switch (blockScopeContainer.kind) { + case 205: + declareModuleMember(node, 2, 107455); + break; + case 227: + if (ts.isExternalModule(container)) { + declareModuleMember(node, 2, 107455); + break; + } + default: + if (!blockScopeContainer.locals) { + blockScopeContainer.locals = {}; + } + declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); + } + bindChildren(node, 2, false); + } + function getDestructuringParameterName(node) { + return "__" + ts.indexOf(node.parent.parameters, node); + } + function bind(node) { + node.parent = parent; + switch (node.kind) { + case 128: + bindDeclaration(node, 262144, 530912, false); + break; + case 129: + bindParameter(node); + break; + case 198: + case 152: + if (ts.isBindingPattern(node.name)) { + bindChildren(node, 0, false); + } + else if (ts.isBlockOrCatchScoped(node)) { + bindBlockScopedVariableDeclaration(node); + } + else { + bindDeclaration(node, 1, 107454, false); + } + break; + case 132: + case 131: + bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); + break; + case 224: + case 225: + bindPropertyOrMethodOrAccessor(node, 4, 107455, false); + break; + case 226: + bindPropertyOrMethodOrAccessor(node, 8, 107455, false); + break; + case 138: + case 139: + case 140: + bindDeclaration(node, 131072, 0, false); + break; + case 134: + case 133: + bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); + break; + case 200: + bindDeclaration(node, 16, 106927, true); + break; + case 135: + bindDeclaration(node, 16384, 0, true); + break; + case 136: + bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); + break; + case 137: + bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); + break; + case 142: + case 143: + bindFunctionOrConstructorType(node); + break; + case 145: + bindAnonymousDeclaration(node, 2048, "__type", false); + break; + case 154: + bindAnonymousDeclaration(node, 4096, "__object", false); + break; + case 162: + case 163: + bindAnonymousDeclaration(node, 16, "__function", true); + break; + case 174: + bindAnonymousDeclaration(node, 32, "__class", false); + break; + case 223: + bindCatchVariableDeclaration(node); + break; + case 201: + bindDeclaration(node, 32, 899583, false); + break; + case 202: + bindDeclaration(node, 64, 792992, false); + break; + case 203: + bindDeclaration(node, 524288, 793056, false); + break; + case 204: + if (ts.isConst(node)) { + bindDeclaration(node, 128, 899967, false); + } + else { + bindDeclaration(node, 256, 899327, false); + } + break; + case 205: + bindModuleDeclaration(node); + break; + case 208: + case 211: + case 213: + case 217: + bindDeclaration(node, 8388608, 8388608, false); + break; + case 210: + if (node.name) { + bindDeclaration(node, 8388608, 8388608, false); + } + else { + bindChildren(node, 0, false); + } + break; + case 215: + if (!node.exportClause) { + declareSymbol(container.symbol.exports, container.symbol, node, 1073741824, 0); + } + bindChildren(node, 0, false); + break; + case 214: + if (node.expression && node.expression.kind === 65) { + declareSymbol(container.symbol.exports, container.symbol, node, 8388608, 107455 | 8388608); + } + else { + declareSymbol(container.symbol.exports, container.symbol, node, 4, 107455 | 8388608); + } + bindChildren(node, 0, false); + break; + case 227: + setExportContextFlag(node); + if (ts.isExternalModule(node)) { + bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); + break; + } + case 179: + bindChildren(node, 0, !ts.isFunctionLike(node.parent)); + break; + case 223: + case 186: + case 187: + case 188: + case 207: + bindChildren(node, 0, true); + break; + default: + var saveParent = parent; + parent = node; + ts.forEachChild(node, bind); + parent = saveParent; + } + } + function bindParameter(node) { + if (ts.isBindingPattern(node.name)) { + bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); + } + else { + bindDeclaration(node, 1, 107455, false); + } + if (node.flags & 112 && + node.parent.kind === 135 && + (node.parent.parent.kind === 201 || node.parent.parent.kind === 174)) { + var classDeclaration = node.parent.parent; + declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); + } + } + function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { + if (ts.hasDynamicName(node)) { + bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); + } + else { + bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); + } + } + } +})(ts || (ts = {})); +/// var ts; (function (ts) { function getDeclarationOfKind(symbol, kind) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; if (declaration.kind === kind) { return declaration; } @@ -3102,21 +3807,21 @@ var ts; ts.getFullWidth = getFullWidth; function containsParseError(node) { aggregateChildData(node); - return (node.parserContextFlags & 32) !== 0; + return (node.parserContextFlags & 64) !== 0; } ts.containsParseError = containsParseError; function aggregateChildData(node) { - if (!(node.parserContextFlags & 64)) { - var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 16) !== 0) || + if (!(node.parserContextFlags & 128)) { + var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & 32) !== 0) || ts.forEachChild(node, containsParseError); if (thisNodeOrAnySubNodesHasError) { - node.parserContextFlags |= 32; + node.parserContextFlags |= 64; } - node.parserContextFlags |= 64; + node.parserContextFlags |= 128; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 210) { + while (node && node.kind !== 227) { node = node.parent; } return node; @@ -3182,47 +3887,106 @@ var ts; return identifier.length >= 3 && identifier.charCodeAt(0) === 95 && identifier.charCodeAt(1) === 95 && identifier.charCodeAt(2) === 95 ? identifier.substr(1) : identifier; } ts.unescapeIdentifier = unescapeIdentifier; + function makeIdentifierFromModuleName(moduleName) { + return ts.getBaseFileName(moduleName).replace(/\W/g, "_"); + } + ts.makeIdentifierFromModuleName = makeIdentifierFromModuleName; + function isBlockOrCatchScoped(declaration) { + return (getCombinedNodeFlags(declaration) & 12288) !== 0 || + isCatchClauseVariableDeclaration(declaration); + } + ts.isBlockOrCatchScoped = isBlockOrCatchScoped; + function getEnclosingBlockScopeContainer(node) { + var current = node; + while (current) { + if (isFunctionLike(current)) { + return current; + } + switch (current.kind) { + case 227: + case 207: + case 223: + case 205: + case 186: + case 187: + case 188: + return current; + case 179: + if (!isFunctionLike(current.parent)) { + return current; + } + } + current = current.parent; + } + } + ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; + function isCatchClauseVariableDeclaration(declaration) { + return declaration && + declaration.kind === 198 && + declaration.parent && + declaration.parent.kind === 223; + } + ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name); } ts.declarationNameToString = declarationNameToString; function createDiagnosticForNode(node, message, arg0, arg1, arg2) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = getTokenPosOfNode(node, file); - var length = node.end - start; - return ts.createFileDiagnostic(file, start, length, message, arg0, arg1, arg2); + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); + return ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2); } ts.createDiagnosticForNode = createDiagnosticForNode; function createDiagnosticForNodeFromMessageChain(node, messageChain) { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = ts.skipTrivia(file.text, node.pos); - var length = node.end - start; + var sourceFile = getSourceFileOfNode(node); + var span = getErrorSpanForNode(sourceFile, node); return { - file: file, - start: start, - length: length, + file: sourceFile, + start: span.start, + length: span.length, code: messageChain.code, category: messageChain.category, messageText: messageChain.next ? messageChain : messageChain.messageText }; } ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; - function getErrorSpanForNode(node) { - var errorSpan; + function getSpanOfTokenAtPosition(sourceFile, pos) { + var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); + scanner.setTextPos(pos); + scanner.scan(); + var start = scanner.getTokenPos(); + return createTextSpanFromBounds(start, scanner.getTextPos()); + } + ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; + function getErrorSpanForNode(sourceFile, node) { + var errorNode = node; switch (node.kind) { - case 191: - case 148: - case 194: - case 195: + case 227: + var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); + if (pos_1 === sourceFile.text.length) { + return createTextSpan(0, 0); + } + return getSpanOfTokenAtPosition(sourceFile, pos_1); case 198: - case 197: - case 209: - errorSpan = node.name; + case 152: + case 201: + case 174: + case 202: + case 205: + case 204: + case 226: + case 200: + case 162: + errorNode = node.name; break; } - return errorSpan && errorSpan.pos < errorSpan.end ? errorSpan : node; + if (errorNode === undefined) { + return getSpanOfTokenAtPosition(sourceFile, node.pos); + } + var pos = nodeIsMissing(errorNode) + ? errorNode.pos + : ts.skipTrivia(sourceFile.text, errorNode.pos); + return createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -3230,15 +3994,15 @@ var ts; } ts.isExternalModule = isExternalModule; function isDeclarationFile(file) { - return (file.flags & 1024) !== 0; + return (file.flags & 2048) !== 0; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 197 && isConst(node); + return node.kind === 204 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 148 || isBindingPattern(node))) { + while (node && (node.kind === 152 || isBindingPattern(node))) { node = node.parent; } return node; @@ -3246,34 +4010,33 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 191) { + if (node.kind === 198) { node = node.parent; } - if (node && node.kind === 192) { + if (node && node.kind === 199) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 173) { + if (node && node.kind === 180) { flags |= node.flags; } return flags; } ts.getCombinedNodeFlags = getCombinedNodeFlags; function isConst(node) { - return !!(getCombinedNodeFlags(node) & 4096); + return !!(getCombinedNodeFlags(node) & 8192); } ts.isConst = isConst; function isLet(node) { - return !!(getCombinedNodeFlags(node) & 2048); + return !!(getCombinedNodeFlags(node) & 4096); } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 175 && node.expression.kind === 8; + return node.kind === 182 && node.expression.kind === 8; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { - sourceFileOfNode = sourceFileOfNode || getSourceFileOfNode(node); - if (node.kind === 126 || node.kind === 125) { + if (node.kind === 129 || node.kind === 128) { return ts.concatenate(ts.getTrailingCommentRanges(sourceFileOfNode.text, node.pos), ts.getLeadingCommentRanges(sourceFileOfNode.text, node.pos)); } else { @@ -3295,64 +4058,82 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184: + case 191: return visitor(node); - case 172: - case 176: - case 177: - case 178: + case 207: case 179: - case 180: - case 181: + case 183: + case 184: case 185: case 186: - case 203: - case 204: case 187: - case 189: - case 206: + case 188: + case 192: + case 193: + case 220: + case 221: + case 194: + case 196: + case 223: return ts.forEachChild(node, traverse); } } } ts.forEachReturnStatement = forEachReturnStatement; - function isAnyFunction(node) { + function isVariableLike(node) { if (node) { switch (node.kind) { - case 131: - case 158: - case 193: - case 159: - case 130: + case 152: + case 226: case 129: + case 224: case 132: - case 133: - case 134: - case 135: - case 136: - case 138: - case 139: - case 158: - case 159: - case 193: + case 131: + case 225: + case 198: return true; } } return false; } - ts.isAnyFunction = isAnyFunction; + ts.isVariableLike = isVariableLike; + function isFunctionLike(node) { + if (node) { + switch (node.kind) { + case 135: + case 162: + case 200: + case 163: + case 134: + case 133: + case 136: + case 137: + case 138: + case 139: + case 140: + case 142: + case 143: + case 162: + case 163: + case 200: + return true; + } + } + return false; + } + ts.isFunctionLike = isFunctionLike; function isFunctionBlock(node) { - return node && node.kind === 172 && isAnyFunction(node.parent); + return node && node.kind === 179 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 130 && node.parent.kind === 150; + return node && node.kind === 134 && node.parent.kind === 154; } ts.isObjectLiteralMethod = isObjectLiteralMethod; function getContainingFunction(node) { while (true) { node = node.parent; - if (!node || isAnyFunction(node)) { + if (!node || isFunctionLike(node)) { return node; } } @@ -3365,28 +4146,28 @@ var ts; return undefined; } switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 159: + case 163: if (!includeArrowFunctions) { continue; } - case 193: - case 158: - case 198: - case 128: - case 127: - case 130: - case 129: - case 131: + case 200: + case 162: + case 205: case 132: + case 131: + case 134: case 133: - case 197: - case 210: + case 135: + case 136: + case 137: + case 204: + case 227: return node; } } @@ -3398,49 +4179,104 @@ var ts; if (!node) return node; switch (node.kind) { - case 124: - if (node.parent.parent.kind === 194) { + case 127: + if (node.parent.parent.kind === 201) { return node; } node = node.parent; break; - case 193: - case 158: - case 159: + case 200: + case 162: + case 163: if (!includeFunctions) { continue; } - case 128: - case 127: - case 130: - case 129: - case 131: case 132: + case 131: + case 134: case 133: + case 135: + case 136: + case 137: return node; } } } ts.getSuperContainer = getSuperContainer; function getInvokedExpression(node) { - if (node.kind === 155) { + if (node.kind === 159) { return node.tag; } return node.expression; } ts.getInvokedExpression = getInvokedExpression; + function nodeCanBeDecorated(node) { + switch (node.kind) { + case 201: + return true; + case 132: + return node.parent.kind === 201; + case 129: + return node.parent.body && node.parent.parent.kind === 201; + case 136: + case 137: + case 134: + return node.body && node.parent.kind === 201; + } + return false; + } + ts.nodeCanBeDecorated = nodeCanBeDecorated; + function nodeIsDecorated(node) { + switch (node.kind) { + case 201: + if (node.decorators) { + return true; + } + return false; + case 132: + case 129: + if (node.decorators) { + return true; + } + return false; + case 136: + if (node.body && node.decorators) { + return true; + } + return false; + case 134: + case 137: + if (node.body && node.decorators) { + return true; + } + return false; + } + return false; + } + ts.nodeIsDecorated = nodeIsDecorated; + function childIsDecorated(node) { + switch (node.kind) { + case 201: + return ts.forEach(node.members, nodeOrChildIsDecorated); + case 134: + case 137: + return ts.forEach(node.parameters, nodeIsDecorated); + } + return false; + } + ts.childIsDecorated = childIsDecorated; + function nodeOrChildIsDecorated(node) { + return nodeIsDecorated(node) || childIsDecorated(node); + } + ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isExpression(node) { switch (node.kind) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 9: - case 149: - case 150: - case 151: - case 152: case 153: case 154: case 155: @@ -3448,68 +4284,73 @@ var ts; case 157: case 158: case 159: - case 162: case 160: case 161: + case 162: + case 174: case 163: + case 166: case 164: case 165: - case 166: - case 169: case 167: - case 10: + case 168: + case 169: case 170: + case 173: + case 171: + case 10: + case 175: return true; - case 123: - while (node.parent.kind === 123) { + case 126: + while (node.parent.kind === 126) { node = node.parent; } - return node.parent.kind === 140; - case 64: - if (node.parent.kind === 140) { + return node.parent.kind === 144; + case 65: + if (node.parent.kind === 144) { return true; } case 7: case 8: - var parent = node.parent; - switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 209: - case 207: - case 148: - return parent.initializer === node; - case 175: - case 176: - case 177: - case 178: + var parent_1 = node.parent; + switch (parent_1.kind) { + case 198: + case 129: + case 132: + case 131: + case 226: + case 224: + case 152: + return parent_1.initializer === node; + case 182: + case 183: case 184: case 185: + case 191: + case 192: + case 193: + case 220: + case 195: + case 193: + return parent_1.expression === node; case 186: - case 203: - case 188: - case 186: - return parent.expression === node; - case 179: - var forStatement = parent; - return (forStatement.initializer === node && forStatement.initializer.kind !== 192) || + var forStatement = parent_1; + return (forStatement.initializer === node && forStatement.initializer.kind !== 199) || forStatement.condition === node || forStatement.iterator === node; - case 180: - case 181: - var forInStatement = parent; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 192) || + case 187: + case 188: + var forInStatement = parent_1; + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 199) || forInStatement.expression === node; - case 156: - return node === parent.expression; - case 171: - return node === parent.expression; - case 124: - return node === parent.expression; + case 160: + return node === parent_1.expression; + case 176: + return node === parent_1.expression; + case 127: + return node === parent_1.expression; default: - if (isExpression(parent)) { + if (isExpression(parent_1)) { return true; } } @@ -3523,35 +4364,50 @@ var ts; (preserveConstEnums && moduleState === 2); } ts.isInstantiatedModule = isInstantiatedModule; - function isExternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind === 202; + function isExternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind === 219; } - ts.isExternalModuleImportDeclaration = isExternalModuleImportDeclaration; - function getExternalModuleImportDeclarationExpression(node) { - ts.Debug.assert(isExternalModuleImportDeclaration(node)); + ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; + function getExternalModuleImportEqualsDeclarationExpression(node) { + ts.Debug.assert(isExternalModuleImportEqualsDeclaration(node)); return node.moduleReference.expression; } - ts.getExternalModuleImportDeclarationExpression = getExternalModuleImportDeclarationExpression; - function isInternalModuleImportDeclaration(node) { - return node.kind === 200 && node.moduleReference.kind !== 202; + ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; + function isInternalModuleImportEqualsDeclaration(node) { + return node.kind === 208 && node.moduleReference.kind !== 219; } - ts.isInternalModuleImportDeclaration = isInternalModuleImportDeclaration; + ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; + function getExternalModuleName(node) { + if (node.kind === 209) { + return node.moduleSpecifier; + } + if (node.kind === 208) { + var reference = node.moduleReference; + if (reference.kind === 219) { + return reference.expression; + } + } + if (node.kind === 215) { + return node.moduleSpecifier; + } + } + ts.getExternalModuleName = getExternalModuleName; function hasDotDotDotToken(node) { - return node && node.kind === 126 && node.dotDotDotToken !== undefined; + return node && node.kind === 129 && node.dotDotDotToken !== undefined; } ts.hasDotDotDotToken = hasDotDotDotToken; function hasQuestionToken(node) { if (node) { switch (node.kind) { - case 126: - return node.questionToken !== undefined; - case 130: case 129: return node.questionToken !== undefined; - case 208: - case 207: - case 128: - case 127: + case 134: + case 133: + return node.questionToken !== undefined; + case 225: + case 224: + case 132: + case 131: return node.questionToken !== undefined; } } @@ -3575,12 +4431,12 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return node.kind === 147 || node.kind === 146; + return !!node && (node.kind === 151 || node.kind === 150); } ts.isBindingPattern = isBindingPattern; function isInAmbientContext(node) { while (node) { - if (node.flags & (2 | 1024)) { + if (node.flags & (2 | 2048)) { return true; } node = node.parent; @@ -3590,27 +4446,33 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 125: - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: - case 129: - case 193: - case 132: - case 133: - case 131: - case 194: - case 195: - case 196: - case 197: - case 198: + case 163: + case 152: + case 201: + case 135: + case 204: + case 226: + case 217: case 200: + case 162: + case 136: + case 210: + case 208: + case 213: + case 202: + case 134: + case 133: + case 205: + case 211: + case 129: + case 224: + case 132: + case 131: + case 137: + case 225: + case 203: + case 128: + case 198: return true; } return false; @@ -3618,65 +4480,91 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 183: - case 182: case 190: - case 177: - case 175: - case 174: - case 180: - case 181: - case 179: - case 176: - case 187: - case 184: - case 186: - case 93: case 189: - case 173: - case 178: + case 197: + case 184: + case 182: + case 181: + case 187: + case 188: + case 186: + case 183: + case 194: + case 191: + case 193: + case 94: + case 196: + case 180: case 185: - case 201: + case 192: + case 214: return true; default: return false; } } ts.isStatement = isStatement; - function isDeclarationOrFunctionExpressionOrCatchVariableName(name) { - if (name.kind !== 64 && name.kind !== 8 && name.kind !== 7) { + function isClassElement(n) { + switch (n.kind) { + case 135: + case 132: + case 134: + case 136: + case 137: + case 140: + return true; + default: + return false; + } + } + ts.isClassElement = isClassElement; + function isDeclarationName(name) { + if (name.kind !== 65 && name.kind !== 8 && name.kind !== 7) { return false; } var parent = name.parent; - if (isDeclaration(parent) || parent.kind === 158) { - return parent.name === name; + if (parent.kind === 213 || parent.kind === 217) { + if (parent.propertyName) { + return true; + } } - if (parent.kind === 206) { + if (isDeclaration(parent)) { return parent.name === name; } return false; } - ts.isDeclarationOrFunctionExpressionOrCatchVariableName = isDeclarationOrFunctionExpressionOrCatchVariableName; - function getClassBaseTypeNode(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + ts.isDeclarationName = isDeclarationName; + function isAliasSymbolDeclaration(node) { + return node.kind === 208 || + node.kind === 210 && !!node.name || + node.kind === 211 || + node.kind === 213 || + node.kind === 217 || + node.kind === 214 && node.expression.kind === 65; + } + ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; + function getClassExtendsHeritageClauseElement(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause && heritageClause.types.length > 0 ? heritageClause.types[0] : undefined; } - ts.getClassBaseTypeNode = getClassBaseTypeNode; - function getClassImplementedTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 101); + ts.getClassExtendsHeritageClauseElement = getClassExtendsHeritageClauseElement; + function getClassImplementsHeritageClauseElements(node) { + var heritageClause = getHeritageClause(node.heritageClauses, 103); return heritageClause ? heritageClause.types : undefined; } - ts.getClassImplementedTypeNodes = getClassImplementedTypeNodes; + ts.getClassImplementsHeritageClauseElements = getClassImplementsHeritageClauseElements; function getInterfaceBaseTypeNodes(node) { - var heritageClause = getHeritageClause(node.heritageClauses, 78); + var heritageClause = getHeritageClause(node.heritageClauses, 79); return heritageClause ? heritageClause.types : undefined; } ts.getInterfaceBaseTypeNodes = getInterfaceBaseTypeNodes; function getHeritageClause(clauses, kind) { if (clauses) { - for (var i = 0, n = clauses.length; i < n; i++) { - if (clauses[i].token === kind) { - return clauses[i]; + for (var _i = 0; _i < clauses.length; _i++) { + var clause = clauses[_i]; + if (clause.token === kind) { + return clause; } } } @@ -3692,32 +4580,11 @@ var ts; } ts.tryResolveScriptReference = tryResolveScriptReference; function getAncestor(node, kind) { - switch (kind) { - case 194: - while (node) { - switch (node.kind) { - case 194: - return node; - case 197: - case 195: - case 196: - case 198: - case 200: - return undefined; - default: - node = node.parent; - continue; - } - } - break; - default: - while (node) { - if (node.kind === kind) { - return node; - } - node = node.parent; - } - break; + while (node) { + if (node.kind === kind) { + return node; + } + node = node.parent; } return undefined; } @@ -3757,7 +4624,7 @@ var ts; } ts.getFileReferenceFromReferencePath = getFileReferenceFromReferencePath; function isKeyword(token) { - return 65 <= token && token <= 122; + return 66 <= token && token <= 125; } ts.isKeyword = isKeyword; function isTrivia(token) { @@ -3766,19 +4633,19 @@ var ts; ts.isTrivia = isTrivia; function hasDynamicName(declaration) { return declaration.name && - declaration.name.kind === 124 && + declaration.name.kind === 127 && !isWellKnownSymbolSyntactically(declaration.name.expression); } ts.hasDynamicName = hasDynamicName; function isWellKnownSymbolSyntactically(node) { - return node.kind === 151 && isESSymbolIdentifier(node.expression); + return node.kind === 155 && isESSymbolIdentifier(node.expression); } ts.isWellKnownSymbolSyntactically = isWellKnownSymbolSyntactically; function getPropertyNameForPropertyNameNode(name) { - if (name.kind === 64 || name.kind === 8 || name.kind === 7) { + if (name.kind === 65 || name.kind === 8 || name.kind === 7) { return name.text; } - if (name.kind === 124) { + if (name.kind === 127) { var nameExpression = name.expression; if (isWellKnownSymbolSyntactically(nameExpression)) { var rightHandSideName = nameExpression.name.text; @@ -3793,18 +4660,19 @@ var ts; } ts.getPropertyNameForKnownSymbolName = getPropertyNameForKnownSymbolName; function isESSymbolIdentifier(node) { - return node.kind === 64 && node.text === "Symbol"; + return node.kind === 65 && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; function isModifier(token) { switch (token) { + case 109: case 107: - case 105: - case 106: case 108: - case 77: - case 113: - case 69: + case 110: + case 78: + case 115: + case 70: + case 73: return true; } return false; @@ -3919,6 +4787,22 @@ var ts; return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); } ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; + function nodeStartsNewLexicalEnvironment(n) { + return isFunctionLike(n) || n.kind === 205 || n.kind === 227; + } + ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; + function nodeIsSynthesized(node) { + return node.pos === -1; + } + ts.nodeIsSynthesized = nodeIsSynthesized; + function createSynthesizedNode(kind, startsOnNewLine) { + var node = ts.createNode(kind); + node.pos = -1; + node.end = -1; + node.startsOnNewLine = startsOnNewLine; + return node; + } + ts.createSynthesizedNode = createSynthesizedNode; function createDiagnosticCollection() { var nonFileDiagnostics = []; var fileDiagnostics = {}; @@ -3984,10 +4868,326 @@ var ts; } } ts.createDiagnosticCollection = createDiagnosticCollection; + var escapedCharsRegExp = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + var escapedCharsMap = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", + "\u2029": "\\u2029", + "\u0085": "\\u0085" + }; + function escapeString(s) { + s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; + return s; + function getReplacement(c) { + return escapedCharsMap[c] || get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + } + } + ts.escapeString = escapeString; + function get16BitUnicodeEscapeSequence(charCode) { + var hexCharCode = charCode.toString(16).toUpperCase(); + var paddedHexCode = ("0000" + hexCharCode).slice(-4); + return "\\u" + paddedHexCode; + } + var nonAsciiCharacters = /[^\u0000-\u007F]/g; + function escapeNonAsciiCharacters(s) { + return nonAsciiCharacters.test(s) ? + s.replace(nonAsciiCharacters, function (c) { return get16BitUnicodeEscapeSequence(c.charCodeAt(0)); }) : + s; + } + ts.escapeNonAsciiCharacters = escapeNonAsciiCharacters; + var indentStrings = ["", " "]; + function getIndentString(level) { + if (indentStrings[level] === undefined) { + indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; + } + return indentStrings[level]; + } + ts.getIndentString = getIndentString; + function getIndentSize() { + return indentStrings[1].length; + } + ts.getIndentSize = getIndentSize; + function createTextWriter(newLine) { + var output = ""; + var indent = 0; + var lineStart = true; + var lineCount = 0; + var linePos = 0; + function write(s) { + if (s && s.length) { + if (lineStart) { + output += getIndentString(indent); + lineStart = false; + } + output += s; + } + } + function rawWrite(s) { + if (s !== undefined) { + if (lineStart) { + lineStart = false; + } + output += s; + } + } + function writeLiteral(s) { + if (s && s.length) { + write(s); + var lineStartsOfS = ts.computeLineStarts(s); + if (lineStartsOfS.length > 1) { + lineCount = lineCount + lineStartsOfS.length - 1; + linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; + } + } + } + function writeLine() { + if (!lineStart) { + output += newLine; + lineCount++; + linePos = output.length; + lineStart = true; + } + } + function writeTextOfNode(sourceFile, node) { + write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); + } + return { + write: write, + rawWrite: rawWrite, + writeTextOfNode: writeTextOfNode, + writeLiteral: writeLiteral, + writeLine: writeLine, + increaseIndent: function () { return indent++; }, + decreaseIndent: function () { return indent--; }, + getIndent: function () { return indent; }, + getTextPos: function () { return output.length; }, + getLine: function () { return lineCount + 1; }, + getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, + getText: function () { return output; } + }; + } + ts.createTextWriter = createTextWriter; + function getOwnEmitOutputFilePath(sourceFile, host, extension) { + var compilerOptions = host.getCompilerOptions(); + var emitOutputFilePathWithoutExtension; + if (compilerOptions.outDir) { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); + } + else { + emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); + } + return emitOutputFilePathWithoutExtension + extension; + } + ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { + var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); + sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); + return ts.combinePaths(newDirPath, sourceFilePath); + } + ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; + function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { + host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { + diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + }); + } + ts.writeFile = writeFile; + function getLineOfLocalPosition(currentSourceFile, pos) { + return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; + } + ts.getLineOfLocalPosition = getLineOfLocalPosition; + function getFirstConstructorWithBody(node) { + return ts.forEach(node.members, function (member) { + if (member.kind === 135 && nodeIsPresent(member.body)) { + return member; + } + }); + } + ts.getFirstConstructorWithBody = getFirstConstructorWithBody; + function shouldEmitToOwnFile(sourceFile, compilerOptions) { + if (!isDeclarationFile(sourceFile)) { + if ((isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + return true; + } + return false; + } + return false; + } + ts.shouldEmitToOwnFile = shouldEmitToOwnFile; + function getAllAccessorDeclarations(declarations, accessor) { + var firstAccessor; + var secondAccessor; + var getAccessor; + var setAccessor; + if (hasDynamicName(accessor)) { + firstAccessor = accessor; + if (accessor.kind === 136) { + getAccessor = accessor; + } + else if (accessor.kind === 137) { + setAccessor = accessor; + } + else { + ts.Debug.fail("Accessor has wrong kind"); + } + } + else { + ts.forEach(declarations, function (member) { + if ((member.kind === 136 || member.kind === 137) + && (member.flags & 128) === (accessor.flags & 128)) { + var memberName = getPropertyNameForPropertyNameNode(member.name); + var accessorName = getPropertyNameForPropertyNameNode(accessor.name); + if (memberName === accessorName) { + if (!firstAccessor) { + firstAccessor = member; + } + else if (!secondAccessor) { + secondAccessor = member; + } + if (member.kind === 136 && !getAccessor) { + getAccessor = member; + } + if (member.kind === 137 && !setAccessor) { + setAccessor = member; + } + } + } + }); + } + return { + firstAccessor: firstAccessor, + secondAccessor: secondAccessor, + getAccessor: getAccessor, + setAccessor: setAccessor + }; + } + ts.getAllAccessorDeclarations = getAllAccessorDeclarations; + function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { + if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && + getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { + writer.writeLine(); + } + } + ts.emitNewLineBeforeLeadingComments = emitNewLineBeforeLeadingComments; + function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { + var emitLeadingSpace = !trailingSeparator; + ts.forEach(comments, function (comment) { + if (emitLeadingSpace) { + writer.write(" "); + emitLeadingSpace = false; + } + writeComment(currentSourceFile, writer, comment, newLine); + if (comment.hasTrailingNewLine) { + writer.writeLine(); + } + else if (trailingSeparator) { + writer.write(" "); + } + else { + emitLeadingSpace = true; + } + }); + } + ts.emitComments = emitComments; + function writeCommentRange(currentSourceFile, writer, comment, newLine) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); + var lineCount = ts.getLineStarts(currentSourceFile).length; + var firstCommentLineIndent; + for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { + var nextLineStart = (currentLine + 1) === lineCount + ? currentSourceFile.text.length + 1 + : getStartPositionOfLine(currentLine + 1, currentSourceFile); + if (pos !== comment.pos) { + if (firstCommentLineIndent === undefined) { + firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); + } + var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); + var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); + if (spacesToEmit > 0) { + var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); + var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); + writer.rawWrite(indentSizeSpaceString); + while (numberOfSingleSpacesToEmit) { + writer.rawWrite(" "); + numberOfSingleSpacesToEmit--; + } + } + else { + writer.rawWrite(""); + } + } + writeTrimmedCurrentLine(pos, nextLineStart); + pos = nextLineStart; + } + } + else { + writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); + } + function writeTrimmedCurrentLine(pos, nextLineStart) { + var end = Math.min(comment.end, nextLineStart - 1); + var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); + if (currentLineText) { + writer.write(currentLineText); + if (end !== comment.end) { + writer.writeLine(); + } + } + else { + writer.writeLiteral(newLine); + } + } + function calculateIndent(pos, end) { + var currentLineIndent = 0; + for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { + if (currentSourceFile.text.charCodeAt(pos) === 9) { + currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); + } + else { + currentLineIndent++; + } + } + return currentLineIndent; + } + } + ts.writeCommentRange = writeCommentRange; + function isSupportedHeritageClauseElement(node) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + ts.isSupportedHeritageClauseElement = isSupportedHeritageClauseElement; + function isSupportedHeritageClauseElementExpression(node) { + if (node.kind === 65) { + return true; + } + else if (node.kind === 155) { + return isSupportedHeritageClauseElementExpression(node.expression); + } + else { + return false; + } + } + function isRightSideOfQualifiedNameOrPropertyAccess(node) { + return (node.parent.kind === 126 && node.parent.right === node) || + (node.parent.kind === 155 && node.parent.name === node); + } + ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; + function getLocalSymbolForExportDefault(symbol) { + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & 256) ? symbol.valueDeclaration.localSymbol : undefined; + } + ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { - var nodeConstructors = new Array(212); + var nodeConstructors = new Array(229); ts.parseTime = 0; function getNodeConstructor(kind) { return nodeConstructors[kind] || (nodeConstructors[kind] = ts.objectAllocator.getNodeConstructor(kind)); @@ -4009,8 +5209,9 @@ var ts; } function visitEachNode(cbNode, nodes) { if (nodes) { - for (var i = 0, len = nodes.length; i < len; i++) { - var result = cbNode(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + var result = cbNode(node); if (result) { return result; } @@ -4024,225 +5225,272 @@ var ts; var visitNodes = cbNodeArray ? visitNodeArray : visitEachNode; var cbNodes = cbNodeArray || cbNode; switch (node.kind) { - case 123: + case 126: return visitNode(cbNode, node.left) || visitNode(cbNode, node.right); - case 125: + case 128: return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 126: - case 128: - case 127: - case 207: - case 208: - case 191: - case 148: - return visitNodes(cbNodes, node.modifiers) || + case 129: + case 132: + case 131: + case 224: + case 225: + case 198: + case 152: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.dotDotDotToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.type) || visitNode(cbNode, node.initializer); + case 142: + case 143: case 138: case 139: - case 134: - case 135: - case 136: - return visitNodes(cbNodes, node.modifiers) || + case 140: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 130: - case 129: - case 131: - case 132: + case 134: case 133: - case 158: - case 193: - case 159: - return visitNodes(cbNodes, node.modifiers) || + case 135: + case 136: + case 137: + case 162: + case 200: + case 163: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.name) || visitNode(cbNode, node.questionToken) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type) || + visitNode(cbNode, node.equalsGreaterThanToken) || visitNode(cbNode, node.body); - case 137: + case 141: return visitNode(cbNode, node.typeName) || visitNodes(cbNodes, node.typeArguments); - case 140: - return visitNode(cbNode, node.exprName); - case 141: - return visitNodes(cbNodes, node.members); - case 142: - return visitNode(cbNode, node.elementType); - case 143: - return visitNodes(cbNodes, node.elementTypes); case 144: - return visitNodes(cbNodes, node.types); + return visitNode(cbNode, node.exprName); case 145: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.members); case 146: + return visitNode(cbNode, node.elementType); case 147: - return visitNodes(cbNodes, node.elements); + return visitNodes(cbNodes, node.elementTypes); + case 148: + return visitNodes(cbNodes, node.types); case 149: - return visitNodes(cbNodes, node.elements); + return visitNode(cbNode, node.type); case 150: - return visitNodes(cbNodes, node.properties); case 151: + return visitNodes(cbNodes, node.elements); + case 153: + return visitNodes(cbNodes, node.elements); + case 154: + return visitNodes(cbNodes, node.properties); + case 155: return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 152: + case 156: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 153: - case 154: + case 157: + case 158: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 155: + case 159: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 156: + case 160: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 157: - return visitNode(cbNode, node.expression); - case 160: - return visitNode(cbNode, node.expression); case 161: return visitNode(cbNode, node.expression); - case 162: + case 164: return visitNode(cbNode, node.expression); - case 163: + case 165: + return visitNode(cbNode, node.expression); + case 166: + return visitNode(cbNode, node.expression); + case 167: return visitNode(cbNode, node.operand); - case 168: + case 172: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 164: + case 168: return visitNode(cbNode, node.operand); - case 165: + case 169: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 166: + case 170: return visitNode(cbNode, node.condition) || + visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || + visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 169: + case 173: return visitNode(cbNode, node.expression); - case 172: - case 199: + case 179: + case 206: return visitNodes(cbNodes, node.statements); - case 210: + case 227: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 173: - return visitNodes(cbNodes, node.modifiers) || + case 180: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 192: + case 199: return visitNodes(cbNodes, node.declarations); - case 175: + case 182: return visitNode(cbNode, node.expression); - case 176: + case 183: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 177: + case 184: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 178: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 179: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.condition) || - visitNode(cbNode, node.iterator) || - visitNode(cbNode, node.statement); - case 180: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 181: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 182: - case 183: - return visitNode(cbNode, node.label); - case 184: - return visitNode(cbNode, node.expression); case 185: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 186: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.clauses); - case 203: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 204: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.condition) || + visitNode(cbNode, node.iterator) || + visitNode(cbNode, node.statement); case 187: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 188: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); case 189: + case 190: + return visitNode(cbNode, node.label); + case 191: + return visitNode(cbNode, node.expression); + case 192: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 193: + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 207: + return visitNodes(cbNodes, node.clauses); + case 220: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 221: + return visitNodes(cbNodes, node.statements); + case 194: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 195: + return visitNode(cbNode, node.expression); + case 196: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 206: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.type) || + case 223: + return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); - case 194: - return visitNodes(cbNodes, node.modifiers) || + case 130: + return visitNode(cbNode, node.expression); + case 201: + case 174: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 195: - return visitNodes(cbNodes, node.modifiers) || + case 202: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 196: - return visitNodes(cbNodes, node.modifiers) || + case 203: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 197: - return visitNodes(cbNodes, node.modifiers) || + case 204: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 209: + case 226: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 198: - return visitNodes(cbNodes, node.modifiers) || + case 205: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 200: - return visitNodes(cbNodes, node.modifiers) || + case 208: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 201: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.exportName); - case 167: - return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 209: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.importClause) || + visitNode(cbNode, node.moduleSpecifier); + case 210: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.namedBindings); + case 211: + return visitNode(cbNode, node.name); + case 212: + case 216: + return visitNodes(cbNodes, node.elements); + case 215: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.exportClause) || + visitNode(cbNode, node.moduleSpecifier); + case 213: + case 217: + return visitNode(cbNode, node.propertyName) || + visitNode(cbNode, node.name); + case 214: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.type); case 171: + return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); + case 176: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); - case 124: + case 127: return visitNode(cbNode, node.expression); - case 205: + case 222: return visitNodes(cbNodes, node.types); - case 202: + case 177: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.typeArguments); + case 219: return visitNode(cbNode, node.expression); + case 218: + return visitNodes(cbNodes, node.decorators); } } ts.forEachChild = forEachChild; @@ -4256,7 +5504,7 @@ var ts; ParsingContext[ParsingContext["TypeMembers"] = 5] = "TypeMembers"; ParsingContext[ParsingContext["ClassMembers"] = 6] = "ClassMembers"; ParsingContext[ParsingContext["EnumMembers"] = 7] = "EnumMembers"; - ParsingContext[ParsingContext["TypeReferences"] = 8] = "TypeReferences"; + ParsingContext[ParsingContext["HeritageClauseElement"] = 8] = "HeritageClauseElement"; ParsingContext[ParsingContext["VariableDeclarations"] = 9] = "VariableDeclarations"; ParsingContext[ParsingContext["ObjectBindingElements"] = 10] = "ObjectBindingElements"; ParsingContext[ParsingContext["ArrayBindingElements"] = 11] = "ArrayBindingElements"; @@ -4268,7 +5516,8 @@ var ts; ParsingContext[ParsingContext["TypeArguments"] = 17] = "TypeArguments"; ParsingContext[ParsingContext["TupleElementTypes"] = 18] = "TupleElementTypes"; ParsingContext[ParsingContext["HeritageClauses"] = 19] = "HeritageClauses"; - ParsingContext[ParsingContext["Count"] = 20] = "Count"; + ParsingContext[ParsingContext["ImportOrExportSpecifiers"] = 20] = "ImportOrExportSpecifiers"; + ParsingContext[ParsingContext["Count"] = 21] = "Count"; })(ParsingContext || (ParsingContext = {})); var Tristate; (function (Tristate) { @@ -4286,7 +5535,7 @@ var ts; case 5: return ts.Diagnostics.Property_or_signature_expected; case 6: return ts.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; case 7: return ts.Diagnostics.Enum_member_expected; - case 8: return ts.Diagnostics.Type_reference_expected; + case 8: return ts.Diagnostics.Expression_expected; case 9: return ts.Diagnostics.Variable_declaration_expected; case 10: return ts.Diagnostics.Property_destructuring_pattern_expected; case 11: return ts.Diagnostics.Array_element_destructuring_pattern_expected; @@ -4298,23 +5547,29 @@ var ts; case 17: return ts.Diagnostics.Type_argument_expected; case 18: return ts.Diagnostics.Type_expected; case 19: return ts.Diagnostics.Unexpected_token_expected; + case 20: return ts.Diagnostics.Identifier_expected; } } ; function modifierToFlag(token) { switch (token) { - case 108: return 128; - case 107: return 16; - case 106: return 64; - case 105: return 32; - case 77: return 1; - case 113: return 2; - case 69: return 4096; + case 110: return 128; + case 109: return 16; + case 108: return 64; + case 107: return 32; + case 78: return 1; + case 115: return 2; + case 70: return 8192; + case 73: return 256; } return 0; } ts.modifierToFlag = modifierToFlag; function fixupParentReferences(sourceFile) { + // normally parent references are set during binding. However, for clients that only need + // a syntax tree, and no semantic features, then the binding process is an unnecessary + // overhead. This functions allows us to set all the parents, without all the expense of + // binding. var parent = sourceFile; forEachChild(sourceFile, visitNode); return; @@ -4332,7 +5587,7 @@ var ts; switch (node.kind) { case 8: case 7: - case 64: + case 65: return true; } return false; @@ -4362,8 +5617,9 @@ var ts; array._children = undefined; array.pos += delta; array.end += delta; - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } } } @@ -4425,8 +5681,9 @@ var ts; array.intersectsChange = true; array._children = undefined; adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (var _i = 0; _i < array.length; _i++) { + var node = array[_i]; + visitNode(node); } return; } @@ -4540,7 +5797,7 @@ var ts; } ts.updateSourceFile = updateSourceFile; function isEvalOrArgumentsIdentifier(node) { - return node.kind === 64 && + return node.kind === 65 && (node.text === "eval" || node.text === "arguments"); } ts.isEvalOrArgumentsIdentifier = isEvalOrArgumentsIdentifier; @@ -4622,12 +5879,13 @@ var ts; ts.createSourceFile = createSourceFile; function parseSourceFile(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes) { if (setParentNodes === void 0) { setParentNodes = false; } + var disallowInAndDecoratorContext = 2 | 16; var parsingContext = 0; var identifiers = {}; var identifierCount = 0; var nodeCount = 0; var token; - var sourceFile = createNode(210, 0); + var sourceFile = createNode(227, 0); sourceFile.pos = 0; sourceFile.end = sourceText.length; sourceFile.text = sourceText; @@ -4635,7 +5893,7 @@ var ts; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); - sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 1024 : 0; + sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 2048 : 0; var contextFlags = 0; var parseErrorBeforeNextFinishedNode = false; var scanner = ts.createScanner(languageVersion, true, sourceText, scanError); @@ -4673,6 +5931,19 @@ var ts; function setGeneratorParameterContext(val) { setContextFlag(val, 8); } + function setDecoratorContext(val) { + setContextFlag(val, 16); + } + function doOutsideOfContext(flags, func) { + var currentContextFlags = contextFlags & flags; + if (currentContextFlags) { + setContextFlag(false, currentContextFlags); + var result = func(); + setContextFlag(true, currentContextFlags); + return result; + } + return func(); + } function allowInAnd(func) { if (contextFlags & 2) { setDisallowInContext(false); @@ -4709,6 +5980,15 @@ var ts; } return func(); } + function doInDecoratorContext(func) { + if (contextFlags & 16) { + return func(); + } + setDecoratorContext(true); + var result = func(); + setDecoratorContext(false); + return result; + } function inYieldContext() { return (contextFlags & 4) !== 0; } @@ -4721,6 +6001,9 @@ var ts; function inDisallowInContext() { return (contextFlags & 2) !== 0; } + function inDecoratorContext() { + return (contextFlags & 16) !== 0; + } function parseErrorAtCurrentToken(message, arg0) { var start = scanner.getTokenPos(); var length = scanner.getTextPos() - start; @@ -4763,7 +6046,9 @@ var ts; var saveParseDiagnosticsLength = sourceFile.parseDiagnostics.length; var saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode; var saveContextFlags = contextFlags; - var result = isLookAhead ? scanner.lookAhead(callback) : scanner.tryScan(callback); + var result = isLookAhead + ? scanner.lookAhead(callback) + : scanner.tryScan(callback); ts.Debug.assert(saveContextFlags === contextFlags); if (!result || isLookAhead) { token = saveToken; @@ -4779,13 +6064,13 @@ var ts; return speculationHelper(callback, false); } function isIdentifier() { - if (token === 64) { + if (token === 65) { return true; } - if (token === 109 && inYieldContext()) { + if (token === 111 && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 109 : token > 100; + return inStrictModeContext() ? token > 111 : token > 101; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -4809,12 +6094,14 @@ var ts; } function parseOptionalToken(t) { if (token === t) { - var node = createNode(t); - nextToken(); - return finishNode(node); + return parseTokenNode(); } return undefined; } + function parseExpectedToken(t, reportAtCurrentPosition, diagnosticMessage, arg0) { + return parseOptionalToken(t) || + createMissingNode(t, reportAtCurrentPosition, diagnosticMessage, arg0); + } function parseTokenNode() { var node = createNode(token); nextToken(); @@ -4854,7 +6141,7 @@ var ts; } if (parseErrorBeforeNextFinishedNode) { parseErrorBeforeNextFinishedNode = false; - node.parserContextFlags |= 16; + node.parserContextFlags |= 32; } return node; } @@ -4876,12 +6163,12 @@ var ts; function createIdentifier(isIdentifier, diagnosticMessage) { identifierCount++; if (isIdentifier) { - var node = createNode(64); + var node = createNode(65); node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); } - return createMissingNode(64, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); + return createMissingNode(65, false, diagnosticMessage || ts.Diagnostics.Identifier_expected); } function parseIdentifier(diagnosticMessage) { return createIdentifier(isIdentifier(), diagnosticMessage); @@ -4904,7 +6191,7 @@ var ts; return parseIdentifierName(); } function parseComputedPropertyName() { - var node = createNode(124); + var node = createNode(127); parseExpected(18); var yieldContext = inYieldContext(); if (inGeneratorParameterContext()) { @@ -4928,14 +6215,31 @@ var ts; return ts.isModifier(token) && tryParse(nextTokenCanFollowContextualModifier); } function nextTokenCanFollowContextualModifier() { - if (token === 69) { - return nextToken() === 76; + if (token === 70) { + return nextToken() === 77; + } + if (token === 78) { + nextToken(); + if (token === 73) { + return lookAhead(nextTokenIsClassOrFunction); + } + return token !== 35 && token !== 14 && canFollowModifier(); + } + if (token === 73) { + return nextTokenIsClassOrFunction(); } nextToken(); return canFollowModifier(); } function canFollowModifier() { - return token === 18 || token === 14 || token === 35 || isLiteralPropertyName(); + return token === 18 + || token === 14 + || token === 35 + || isLiteralPropertyName(); + } + function nextTokenIsClassOrFunction() { + nextToken(); + return token === 69 || token === 83; } function isListElement(parsingContext, inErrorRecovery) { var node = currentNode(parsingContext); @@ -4950,11 +6254,11 @@ var ts; case 4: return isStartOfStatement(inErrorRecovery); case 3: - return token === 66 || token === 72; + return token === 67 || token === 73; case 5: return isStartOfTypeMember(); case 6: - return lookAhead(isClassMemberStart); + return lookAhead(isClassMemberStart) || (token === 22 && !inErrorRecovery); case 7: return token === 18 || isLiteralPropertyName(); case 13: @@ -4962,7 +6266,15 @@ var ts; case 10: return isLiteralPropertyName(); case 8: - return isIdentifier() && !isNotHeritageClauseTypeName(); + if (token === 14) { + return lookAhead(isValidHeritageClauseObjectLiteral); + } + if (!inErrorRecovery) { + return isStartOfLeftHandSideExpression() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + else { + return isIdentifier() && !isHeritageClauseExtendsOrImplementsKeyword(); + } case 9: return isIdentifierOrPattern(); case 11: @@ -4979,20 +6291,34 @@ var ts; return token === 23 || isStartOfType(); case 19: return isHeritageClause(); + case 20: + return isIdentifierOrKeyword(); } ts.Debug.fail("Non-exhaustive case in 'isListElement'."); } + function isValidHeritageClauseObjectLiteral() { + ts.Debug.assert(token === 14); + if (nextToken() === 15) { + var next = nextToken(); + return next === 23 || next === 14 || next === 79 || next === 103; + } + return true; + } function nextTokenIsIdentifier() { nextToken(); return isIdentifier(); } - function isNotHeritageClauseTypeName() { - if (token === 101 || - token === 78) { - return lookAhead(nextTokenIsIdentifier); + function isHeritageClauseExtendsOrImplementsKeyword() { + if (token === 103 || + token === 79) { + return lookAhead(nextTokenIsStartOfExpression); } return false; } + function nextTokenIsStartOfExpression() { + nextToken(); + return isStartOfExpression(); + } function isListTerminator(kind) { if (token === 1) { return true; @@ -5006,15 +6332,16 @@ var ts; case 7: case 13: case 10: + case 20: return token === 15; case 4: - return token === 15 || token === 66 || token === 72; + return token === 15 || token === 67 || token === 73; case 8: - return token === 14 || token === 78 || token === 101; + return token === 14 || token === 79 || token === 103; case 9: return isVariableDeclaratorListTerminator(); case 16: - return token === 25 || token === 16 || token === 14 || token === 78 || token === 101; + return token === 25 || token === 16 || token === 14 || token === 79 || token === 103; case 12: return token === 17 || token === 22; case 14: @@ -5042,7 +6369,7 @@ var ts; return false; } function isInSomeParsingContext() { - for (var kind = 0; kind < 20; kind++) { + for (var kind = 0; kind < 21; kind++) { if (parsingContext & (1 << kind)) { if (isListElement(kind, true) || isListTerminator(kind)) { return true; @@ -5107,7 +6434,7 @@ var ts; if (ts.containsParseError(node)) { return undefined; } - var nodeContextFlags = node.parserContextFlags & 31; + var nodeContextFlags = node.parserContextFlags & 63; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -5141,24 +6468,26 @@ var ts; case 15: return isReusableParameter(node); case 19: - case 8: case 16: case 18: case 17: case 12: case 13: + case 8: } return false; } function isReusableModuleElement(node) { if (node) { switch (node.kind) { - case 200: + case 209: + case 208: + case 215: + case 214: case 201: - case 194: - case 195: - case 198: - case 197: + case 202: + case 205: + case 204: return true; } return isReusableStatement(node); @@ -5168,12 +6497,13 @@ var ts; function isReusableClassMember(node) { if (node) { switch (node.kind) { - case 131: + case 135: + case 140: + case 134: case 136: - case 130: + case 137: case 132: - case 133: - case 128: + case 178: return true; } } @@ -5182,8 +6512,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 203: - case 204: + case 220: + case 221: return true; } } @@ -5192,56 +6522,56 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 193: - case 173: - case 172: - case 176: - case 175: - case 188: - case 184: - case 186: + case 200: + case 180: + case 179: case 183: case 182: - case 180: - case 181: - case 179: - case 178: - case 185: - case 174: + case 195: + case 191: + case 193: + case 190: case 189: case 187: - case 177: - case 190: + case 188: + case 186: + case 185: + case 192: + case 181: + case 196: + case 194: + case 184: + case 197: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 209; + return node.kind === 226; } function isReusableTypeMember(node) { if (node) { switch (node.kind) { - case 135: - case 129: - case 136: - case 127: - case 134: + case 139: + case 133: + case 140: + case 131: + case 138: return true; } } return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 191) { + if (node.kind !== 198) { return false; } var variableDeclarator = node; return variableDeclarator.initializer === undefined; } function isReusableParameter(node) { - if (node.kind !== 126) { + if (node.kind !== 129) { return false; } var parameter = node; @@ -5310,7 +6640,7 @@ var ts; function parseEntityName(allowReservedWords, diagnosticMessage) { var entity = parseIdentifier(diagnosticMessage); while (parseOptional(20)) { - var node = createNode(123, entity.pos); + var node = createNode(126, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -5321,13 +6651,13 @@ var ts; if (scanner.hasPrecedingLineBreak() && scanner.isReservedWord()) { var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { - return createMissingNode(64, true, ts.Diagnostics.Identifier_expected); + return createMissingNode(65, true, ts.Diagnostics.Identifier_expected); } } return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(167); + var template = createNode(171); template.head = parseLiteralNode(); ts.Debug.assert(template.head.kind === 11, "Template head has wrong token kind"); var templateSpans = []; @@ -5340,7 +6670,7 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(171); + var span = createNode(176); span.expression = allowInAnd(parseExpression); var literal; if (token === 15) { @@ -5348,7 +6678,7 @@ var ts; literal = parseLiteralNode(); } else { - literal = createMissingNode(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); + literal = parseExpectedToken(13, false, ts.Diagnostics._0_expected, ts.tokenToString(15)); } span.literal = literal; return finishNode(span); @@ -5357,19 +6687,24 @@ var ts; var node = createNode(token); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; + if (scanner.hasExtendedUnicodeEscape()) { + node.hasExtendedUnicodeEscape = true; + } if (scanner.isUnterminated()) { node.isUnterminated = true; } var tokenPos = scanner.getTokenPos(); nextToken(); finishNode(node); - if (node.kind === 7 && sourceText.charCodeAt(tokenPos) === 48 && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { - node.flags |= 8192; + if (node.kind === 7 + && sourceText.charCodeAt(tokenPos) === 48 + && ts.isOctalDigit(sourceText.charCodeAt(tokenPos + 1))) { + node.flags |= 16384; } return node; } function parseTypeReference() { - var node = createNode(137); + var node = createNode(141); node.typeName = parseEntityName(false, ts.Diagnostics.Type_expected); if (!scanner.hasPrecedingLineBreak() && token === 24) { node.typeArguments = parseBracketedList(17, parseType, 24, 25); @@ -5377,15 +6712,15 @@ var ts; return finishNode(node); } function parseTypeQuery() { - var node = createNode(140); - parseExpected(96); + var node = createNode(144); + parseExpected(97); node.exprName = parseEntityName(true); return finishNode(node); } function parseTypeParameter() { - var node = createNode(125); + var node = createNode(128); node.name = parseIdentifier(); - if (parseOptional(78)) { + if (parseOptional(79)) { if (isStartOfType() || !isStartOfExpression()) { node.constraint = parseType(); } @@ -5402,12 +6737,14 @@ var ts; } function parseParameterType() { if (parseOptional(51)) { - return token === 8 ? parseLiteralNode(true) : parseType(); + return token === 8 + ? parseLiteralNode(true) + : parseType(); } return undefined; } function isStartOfParameter() { - return token === 21 || isIdentifierOrPattern() || ts.isModifier(token); + return token === 21 || isIdentifierOrPattern() || ts.isModifier(token) || token === 52; } function setModifiers(node, modifiers) { if (modifiers) { @@ -5416,7 +6753,8 @@ var ts; } } function parseParameter() { - var node = createNode(126); + var node = createNode(129); + node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(21); node.name = inGeneratorParameterContext() ? doInYieldContext(parseIdentifierOrPattern) : parseIdentifierOrPattern(); @@ -5460,15 +6798,15 @@ var ts; return requireCompleteParameterList ? undefined : createMissingList(); } function parseTypeMemberSemicolon() { - if (parseSemicolon()) { + if (parseOptional(23)) { return; } - parseOptional(23); + parseSemicolon(); } function parseSignatureMember(kind) { var node = createNode(kind); - if (kind === 135) { - parseExpected(87); + if (kind === 139) { + parseExpected(88); } fillSignature(51, false, false, node); parseTypeMemberSemicolon(); @@ -5506,9 +6844,9 @@ var ts; nextToken(); return token === 51 || token === 23 || token === 19; } - function parseIndexSignatureDeclaration(modifiers) { - var fullStart = modifiers ? modifiers.pos : scanner.getStartPos(); - var node = createNode(136, fullStart); + function parseIndexSignatureDeclaration(fullStart, decorators, modifiers) { + var node = createNode(140, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(15, parseParameter, 18, 19); node.type = parseTypeAnnotation(); @@ -5520,7 +6858,7 @@ var ts; var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (token === 16 || token === 24) { - var method = createNode(129, fullStart); + var method = createNode(133, fullStart); method.name = name; method.questionToken = questionToken; fillSignature(51, false, false, method); @@ -5528,7 +6866,7 @@ var ts; return finishNode(method); } else { - var property = createNode(127, fullStart); + var property = createNode(131, fullStart); property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); @@ -5570,12 +6908,14 @@ var ts; switch (token) { case 16: case 24: - return parseSignatureMember(134); + return parseSignatureMember(138); case 18: - return isIndexSignature() ? parseIndexSignatureDeclaration(undefined) : parsePropertyOrMethodSignature(); - case 87: + return isIndexSignature() + ? parseIndexSignatureDeclaration(scanner.getStartPos(), undefined, undefined) + : parsePropertyOrMethodSignature(); + case 88: if (lookAhead(isStartOfConstructSignature)) { - return parseSignatureMember(135); + return parseSignatureMember(139); } case 8: case 7: @@ -5593,15 +6933,19 @@ var ts; } } function parseIndexSignatureWithModifiers() { + var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - return isIndexSignature() ? parseIndexSignatureDeclaration(modifiers) : undefined; + return isIndexSignature() + ? parseIndexSignatureDeclaration(fullStart, decorators, modifiers) + : undefined; } function isStartOfConstructSignature() { nextToken(); return token === 16 || token === 24; } function parseTypeLiteral() { - var node = createNode(141); + var node = createNode(145); node.members = parseObjectTypeMembers(); return finishNode(node); } @@ -5617,12 +6961,12 @@ var ts; return members; } function parseTupleType() { - var node = createNode(143); + var node = createNode(147); node.elementTypes = parseBracketedList(18, parseType, 18, 19); return finishNode(node); } function parseParenthesizedType() { - var node = createNode(145); + var node = createNode(149); parseExpected(16); node.type = parseType(); parseExpected(17); @@ -5630,8 +6974,8 @@ var ts; } function parseFunctionOrConstructorType(kind) { var node = createNode(kind); - if (kind === 139) { - parseExpected(87); + if (kind === 143) { + parseExpected(88); } fillSignature(32, false, false, node); return finishNode(node); @@ -5642,16 +6986,16 @@ var ts; } function parseNonArrayType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: + case 113: + case 122: var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); - case 98: + case 99: return parseTokenNode(); - case 96: + case 97: return parseTypeQuery(); case 14: return parseTypeLiteral(); @@ -5665,17 +7009,17 @@ var ts; } function isStartOfType() { switch (token) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: - case 96: + case 113: + case 122: + case 99: + case 97: case 14: case 18: case 24: - case 87: + case 88: return true; case 16: return lookAhead(isStartOfParenthesizedOrFunctionType); @@ -5691,7 +7035,7 @@ var ts; var type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(18)) { parseExpected(19); - var node = createNode(142, type.pos); + var node = createNode(146, type.pos); node.elementType = type; type = finishNode(node); } @@ -5706,7 +7050,7 @@ var ts; types.push(parseArrayTypeOrHigher()); } types.end = getNodeEnd(); - var node = createNode(144, type.pos); + var node = createNode(148, type.pos); node.types = types; type = finishNode(node); } @@ -5726,7 +7070,7 @@ var ts; if (isIdentifier() || ts.isModifier(token)) { nextToken(); if (token === 51 || token === 23 || - token === 50 || token === 52 || + token === 50 || token === 53 || isIdentifier() || ts.isModifier(token)) { return true; } @@ -5751,23 +7095,23 @@ var ts; } function parseTypeWorker() { if (isStartOfFunctionType()) { - return parseFunctionOrConstructorType(138); + return parseFunctionOrConstructorType(142); } - if (token === 87) { - return parseFunctionOrConstructorType(139); + if (token === 88) { + return parseFunctionOrConstructorType(143); } return parseUnionTypeOrHigher(); } function parseTypeAnnotation() { return parseOptional(51) ? parseType() : undefined; } - function isStartOfExpression() { + function isStartOfLeftHandSideExpression() { switch (token) { - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: case 7: case 8: case 10: @@ -5775,22 +7119,33 @@ var ts; case 16: case 18: case 14: - case 82: - case 87: + case 83: + case 69: + case 88: case 36: - case 56: + case 57: + case 65: + return true; + default: + return isIdentifier(); + } + } + function isStartOfExpression() { + if (isStartOfLeftHandSideExpression()) { + return true; + } + switch (token) { case 33: case 34: case 47: case 46: - case 73: - case 96: - case 98: + case 74: + case 97: + case 99: case 38: case 39: case 24: - case 64: - case 109: + case 111: return true; default: if (isBinaryOperator()) { @@ -5800,26 +7155,49 @@ var ts; } } function isStartOfExpressionStatement() { - return token !== 14 && token !== 82 && isStartOfExpression(); + return token !== 14 && + token !== 83 && + token !== 69 && + token !== 52 && + isStartOfExpression(); } function parseExpression() { + // Expression[in]: + // AssignmentExpression[in] + // Expression[in] , AssignmentExpression[in] + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var expr = parseAssignmentExpressionOrHigher(); var operatorToken; while ((operatorToken = parseOptionalToken(23))) { expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } + if (saveDecoratorContext) { + setDecoratorContext(true); + } return expr; } function parseInitializer(inParameter) { - if (token !== 52) { + if (token !== 53) { if (scanner.hasPrecedingLineBreak() || (inParameter && token === 14) || !isStartOfExpression()) { return undefined; } } - parseExpected(52); + parseExpected(53); return parseAssignmentExpressionOrHigher(); } function parseAssignmentExpressionOrHigher() { + // AssignmentExpression[in,yield]: + // 1) ConditionalExpression[?in,?yield] + // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield] + // 3) LeftHandSideExpression AssignmentOperator AssignmentExpression[?in,?yield] + // 4) ArrowFunctionExpression[?in,?yield] + // 5) [+Yield] YieldExpression[?In] + // + // Note: for ease of implementation we treat productions '2' and '3' as the same thing. + // (i.e. they're both BinaryExpressions with an assignment operator in it). if (isYieldExpression()) { return parseYieldExpression(); } @@ -5828,7 +7206,7 @@ var ts; return arrowExpression; } var expr = parseBinaryExpressionOrHigher(0); - if (expr.kind === 64 && token === 32) { + if (expr.kind === 65 && token === 32) { return parseSimpleArrowFunctionExpression(expr); } if (isLeftHandSideExpression(expr) && isAssignmentOperator(reScanGreaterToken())) { @@ -5837,7 +7215,7 @@ var ts; return parseConditionalExpressionRest(expr); } function isYieldExpression() { - if (token === 109) { + if (token === 111) { if (inYieldContext()) { return true; } @@ -5852,8 +7230,13 @@ var ts; nextToken(); return !scanner.hasPrecedingLineBreak() && isIdentifier(); } + function nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine() { + nextToken(); + return !scanner.hasPrecedingLineBreak() && + (isIdentifier() || token === 14 || token === 18); + } function parseYieldExpression() { - var node = createNode(168); + var node = createNode(172); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 35 || isStartOfExpression())) { @@ -5867,14 +7250,14 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 32, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(159, identifier.pos); - var parameter = createNode(126, identifier.pos); + var node = createNode(163, identifier.pos); + var parameter = createNode(129, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - parseExpected(32); + node.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(); return finishNode(node); } @@ -5883,16 +7266,17 @@ var ts; if (triState === 0) { return undefined; } - var arrowFunction = triState === 1 ? parseParenthesizedArrowFunctionExpressionHead(true) : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); + var arrowFunction = triState === 1 + ? parseParenthesizedArrowFunctionExpressionHead(true) + : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); if (!arrowFunction) { return undefined; } - if (parseExpected(32) || token === 14) { - arrowFunction.body = parseArrowFunctionExpressionBody(); - } - else { - arrowFunction.body = parseIdentifier(); - } + var lastToken = token; + arrowFunction.equalsGreaterThanToken = parseExpectedToken(32, false, ts.Diagnostics._0_expected, "=>"); + arrowFunction.body = (lastToken === 32 || lastToken === 14) + ? parseArrowFunctionExpressionBody() + : parseIdentifier(); return finishNode(arrowFunction); } function isParenthesizedArrowFunctionExpression() { @@ -5942,7 +7326,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(159); + var node = createNode(163); fillSignature(51, false, !allowAmbiguity, node); if (!node.parameters) { return undefined; @@ -5956,19 +7340,24 @@ var ts; if (token === 14) { return parseFunctionBlock(false, false); } - if (isStartOfStatement(true) && !isStartOfExpressionStatement() && token !== 82) { + if (isStartOfStatement(true) && + !isStartOfExpressionStatement() && + token !== 83 && + token !== 69) { return parseFunctionBlock(false, true); } return parseAssignmentExpressionOrHigher(); } function parseConditionalExpressionRest(leftOperand) { - if (!parseOptional(50)) { + var questionToken = parseOptionalToken(50); + if (!questionToken) { return leftOperand; } - var node = createNode(166, leftOperand.pos); + var node = createNode(170, leftOperand.pos); node.condition = leftOperand; - node.whenTrue = allowInAnd(parseAssignmentExpressionOrHigher); - parseExpected(51); + node.questionToken = questionToken; + node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); + node.colonToken = parseExpectedToken(51, false, ts.Diagnostics._0_expected, ts.tokenToString(51)); node.whenFalse = parseAssignmentExpressionOrHigher(); return finishNode(node); } @@ -5977,7 +7366,7 @@ var ts; return parseBinaryExpressionRest(precedence, leftOperand); } function isInOrOfKeyword(t) { - return t === 85 || t === 122; + return t === 86 || t === 125; } function parseBinaryExpressionRest(precedence, leftOperand) { while (true) { @@ -5986,7 +7375,7 @@ var ts; if (newPrecedence <= precedence) { break; } - if (token === 85 && inDisallowInContext()) { + if (token === 86 && inDisallowInContext()) { break; } leftOperand = makeBinaryExpression(leftOperand, parseTokenNode(), parseBinaryExpressionOrHigher(newPrecedence)); @@ -5994,7 +7383,7 @@ var ts; return leftOperand; } function isBinaryOperator() { - if (inDisallowInContext() && token === 85) { + if (inDisallowInContext() && token === 86) { return false; } return getBinaryOperatorPrecedence() > 0; @@ -6020,8 +7409,8 @@ var ts; case 25: case 26: case 27: + case 87: case 86: - case 85: return 7; case 40: case 41: @@ -6038,33 +7427,33 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(165, left.pos); + var node = createNode(169, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(163); + var node = createNode(167); node.operator = token; nextToken(); node.operand = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(160); + var node = createNode(164); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(161); + var node = createNode(165); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(162); + var node = createNode(166); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); @@ -6078,11 +7467,11 @@ var ts; case 38: case 39: return parsePrefixUnaryExpression(); - case 73: + case 74: return parseDeleteExpression(); - case 96: + case 97: return parseTypeOfExpression(); - case 98: + case 99: return parseVoidExpression(); case 24: return parseTypeAssertion(); @@ -6094,7 +7483,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(isLeftHandSideExpression(expression)); if ((token === 38 || token === 39) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(164, expression.pos); + var node = createNode(168, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -6103,7 +7492,9 @@ var ts; return expression; } function parseLeftHandSideExpressionOrHigher() { - var expression = token === 90 ? parseSuperExpression() : parseMemberExpressionOrHigher(); + var expression = token === 91 + ? parseSuperExpression() + : parseMemberExpressionOrHigher(); return parseCallExpressionRest(expression); } function parseMemberExpressionOrHigher() { @@ -6115,14 +7506,14 @@ var ts; if (token === 16 || token === 20) { return expression; } - var node = createNode(151, expression.pos); + var node = createNode(155, expression.pos); node.expression = expression; - parseExpected(20, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); + node.dotToken = parseExpectedToken(20, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); return finishNode(node); } function parseTypeAssertion() { - var node = createNode(156); + var node = createNode(160); parseExpected(24); node.type = parseType(); parseExpected(25); @@ -6131,16 +7522,17 @@ var ts; } function parseMemberExpressionRest(expression) { while (true) { - var dotOrBracketStart = scanner.getTokenPos(); - if (parseOptional(20)) { - var propertyAccess = createNode(151, expression.pos); + var dotToken = parseOptionalToken(20); + if (dotToken) { + var propertyAccess = createNode(155, expression.pos); propertyAccess.expression = expression; + propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); expression = finishNode(propertyAccess); continue; } - if (parseOptional(18)) { - var indexedAccess = createNode(152, expression.pos); + if (!inDecoratorContext() && parseOptional(18)) { + var indexedAccess = createNode(156, expression.pos); indexedAccess.expression = expression; if (token !== 19) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -6154,9 +7546,11 @@ var ts; continue; } if (token === 10 || token === 11) { - var tagExpression = createNode(155, expression.pos); + var tagExpression = createNode(159, expression.pos); tagExpression.tag = expression; - tagExpression.template = token === 10 ? parseLiteralNode() : parseTemplateExpression(); + tagExpression.template = token === 10 + ? parseLiteralNode() + : parseTemplateExpression(); expression = finishNode(tagExpression); continue; } @@ -6171,7 +7565,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -6179,7 +7573,7 @@ var ts; continue; } else if (token === 16) { - var callExpr = createNode(153, expression.pos); + var callExpr = createNode(157, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -6202,7 +7596,9 @@ var ts; if (!parseExpected(25)) { return undefined; } - return typeArguments && canFollowTypeArgumentsInExpression() ? typeArguments : undefined; + return typeArguments && canFollowTypeArgumentsInExpression() + ? typeArguments + : undefined; } function canFollowTypeArgumentsInExpression() { switch (token) { @@ -6212,7 +7608,6 @@ var ts; case 19: case 51: case 22: - case 23: case 50: case 28: case 30: @@ -6226,6 +7621,8 @@ var ts; case 15: case 1: return true; + case 23: + case 14: default: return false; } @@ -6236,11 +7633,11 @@ var ts; case 8: case 10: return parseLiteralNode(); - case 92: - case 90: - case 88: - case 94: - case 79: + case 93: + case 91: + case 89: + case 95: + case 80: return parseTokenNode(); case 16: return parseParenthesizedExpression(); @@ -6248,12 +7645,14 @@ var ts; return parseArrayLiteralExpression(); case 14: return parseObjectLiteralExpression(); - case 82: + case 69: + return parseClassExpression(); + case 83: return parseFunctionExpression(); - case 87: + case 88: return parseNewExpression(); case 36: - case 56: + case 57: if (reScanSlashToken() === 9) { return parseLiteralNode(); } @@ -6264,46 +7663,49 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(157); + var node = createNode(161); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); return finishNode(node); } function parseSpreadElement() { - var node = createNode(169); + var node = createNode(173); parseExpected(21); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { - return token === 21 ? parseSpreadElement() : token === 23 ? createNode(170) : parseAssignmentExpressionOrHigher(); + return token === 21 ? parseSpreadElement() : + token === 23 ? createNode(175) : + parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { - return allowInAnd(parseArgumentOrArrayLiteralElement); + return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(149); + var node = createNode(153); parseExpected(18); if (scanner.hasPrecedingLineBreak()) - node.flags |= 256; + node.flags |= 512; node.elements = parseDelimitedList(14, parseArgumentOrArrayLiteralElement); parseExpected(19); return finishNode(node); } - function tryParseAccessorDeclaration(fullStart, modifiers) { - if (parseContextualModifier(114)) { - return parseAccessorDeclaration(132, fullStart, modifiers); + function tryParseAccessorDeclaration(fullStart, decorators, modifiers) { + if (parseContextualModifier(116)) { + return parseAccessorDeclaration(136, fullStart, decorators, modifiers); } - else if (parseContextualModifier(118)) { - return parseAccessorDeclaration(133, fullStart, modifiers); + else if (parseContextualModifier(120)) { + return parseAccessorDeclaration(137, fullStart, decorators, modifiers); } return undefined; } function parseObjectLiteralElement() { var fullStart = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } @@ -6313,16 +7715,16 @@ var ts; var propertyName = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, propertyName, questionToken); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, propertyName, questionToken); } if ((token === 23 || token === 15) && tokenIsIdentifier) { - var shorthandDeclaration = createNode(208, fullStart); + var shorthandDeclaration = createNode(225, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(207, fullStart); + var propertyAssignment = createNode(224, fullStart); propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(51); @@ -6331,30 +7733,37 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(150); + var node = createNode(154); parseExpected(14); if (scanner.hasPrecedingLineBreak()) { - node.flags |= 256; + node.flags |= 512; } node.properties = parseDelimitedList(13, parseObjectLiteralElement, true); parseExpected(15); return finishNode(node); } function parseFunctionExpression() { - var node = createNode(158); - parseExpected(82); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + var node = createNode(162); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); node.name = node.asteriskToken ? doInYieldContext(parseOptionalIdentifier) : parseOptionalIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlock(!!node.asteriskToken, false); + if (saveDecoratorContext) { + setDecoratorContext(true); + } return finishNode(node); } function parseOptionalIdentifier() { return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(154); - parseExpected(87); + var node = createNode(158); + parseExpected(88); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); if (node.typeArguments || token === 16) { @@ -6363,7 +7772,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, checkForStrictMode, diagnosticMessage) { - var node = createNode(172); + var node = createNode(179); if (parseExpected(14, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(2, checkForStrictMode, parseStatement); parseExpected(15); @@ -6376,30 +7785,37 @@ var ts; function parseFunctionBlock(allowYield, ignoreMissingOpenBrace, diagnosticMessage) { var savedYieldContext = inYieldContext(); setYieldContext(allowYield); + var saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } var block = parseBlock(ignoreMissingOpenBrace, true, diagnosticMessage); + if (saveDecoratorContext) { + setDecoratorContext(true); + } setYieldContext(savedYieldContext); return block; } function parseEmptyStatement() { - var node = createNode(174); + var node = createNode(181); parseExpected(22); return finishNode(node); } function parseIfStatement() { - var node = createNode(176); - parseExpected(83); + var node = createNode(183); + parseExpected(84); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); node.thenStatement = parseStatement(); - node.elseStatement = parseOptional(75) ? parseStatement() : undefined; + node.elseStatement = parseOptional(76) ? parseStatement() : undefined; return finishNode(node); } function parseDoStatement() { - var node = createNode(177); - parseExpected(74); + var node = createNode(184); + parseExpected(75); node.statement = parseStatement(); - parseExpected(99); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6407,8 +7823,8 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(178); - parseExpected(99); + var node = createNode(185); + parseExpected(100); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6417,11 +7833,11 @@ var ts; } function parseForOrForInOrForOfStatement() { var pos = getNodePos(); - parseExpected(81); + parseExpected(82); parseExpected(16); var initializer = undefined; if (token !== 22) { - if (token === 97 || token === 103 || token === 69) { + if (token === 98 || token === 105 || token === 70) { initializer = parseVariableDeclarationList(true); } else { @@ -6429,22 +7845,22 @@ var ts; } } var forOrForInOrForOfStatement; - if (parseOptional(85)) { - var forInStatement = createNode(180, pos); + if (parseOptional(86)) { + var forInStatement = createNode(187, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(17); forOrForInOrForOfStatement = forInStatement; } - else if (parseOptional(122)) { - var forOfStatement = createNode(181, pos); + else if (parseOptional(125)) { + var forOfStatement = createNode(188, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(17); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(179, pos); + var forStatement = createNode(186, pos); forStatement.initializer = initializer; parseExpected(22); if (token !== 22 && token !== 17) { @@ -6462,7 +7878,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 183 ? 65 : 70); + parseExpected(kind === 190 ? 66 : 71); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -6470,8 +7886,8 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(184); - parseExpected(89); + var node = createNode(191); + parseExpected(90); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); } @@ -6479,8 +7895,8 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(185); - parseExpected(100); + var node = createNode(192); + parseExpected(101); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); @@ -6488,79 +7904,83 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(203); - parseExpected(66); + var node = createNode(220); + parseExpected(67); node.expression = allowInAnd(parseExpression); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseDefaultClause() { - var node = createNode(204); - parseExpected(72); + var node = createNode(221); + parseExpected(73); parseExpected(51); node.statements = parseList(4, false, parseStatement); return finishNode(node); } function parseCaseOrDefaultClause() { - return token === 66 ? parseCaseClause() : parseDefaultClause(); + return token === 67 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(186); - parseExpected(91); + var node = createNode(193); + parseExpected(92); parseExpected(16); node.expression = allowInAnd(parseExpression); parseExpected(17); + var caseBlock = createNode(207, scanner.getStartPos()); parseExpected(14); - node.clauses = parseList(3, false, parseCaseOrDefaultClause); + caseBlock.clauses = parseList(3, false, parseCaseOrDefaultClause); parseExpected(15); + node.caseBlock = finishNode(caseBlock); return finishNode(node); } function parseThrowStatement() { - var node = createNode(188); - parseExpected(93); + // ThrowStatement[Yield] : + // throw [no LineTerminator here]Expression[In, ?Yield]; + var node = createNode(195); + parseExpected(94); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(189); - parseExpected(95); + var node = createNode(196); + parseExpected(96); node.tryBlock = parseBlock(false, false); - node.catchClause = token === 67 ? parseCatchClause() : undefined; - if (!node.catchClause || token === 80) { - parseExpected(80); + node.catchClause = token === 68 ? parseCatchClause() : undefined; + if (!node.catchClause || token === 81) { + parseExpected(81); node.finallyBlock = parseBlock(false, false); } return finishNode(node); } function parseCatchClause() { - var result = createNode(206); - parseExpected(67); - parseExpected(16); - result.name = parseIdentifier(); - result.type = parseTypeAnnotation(); + var result = createNode(223); + parseExpected(68); + if (parseExpected(16)) { + result.variableDeclaration = parseVariableDeclaration(); + } parseExpected(17); result.block = parseBlock(false, false); return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(190); - parseExpected(71); + var node = createNode(197); + parseExpected(72); parseSemicolon(); return finishNode(node); } function parseExpressionOrLabeledStatement() { var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); - if (expression.kind === 64 && parseOptional(51)) { - var labeledStatement = createNode(187, fullStart); + if (expression.kind === 65 && parseOptional(51)) { + var labeledStatement = createNode(194, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(175, fullStart); + var expressionStatement = createNode(182, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -6568,7 +7988,7 @@ var ts; } function isStartOfStatement(inErrorRecovery) { if (ts.isModifier(token)) { - var result = lookAhead(parseVariableStatementOrFunctionDeclarationWithModifiers); + var result = lookAhead(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return true; } @@ -6577,39 +7997,39 @@ var ts; case 22: return !inErrorRecovery; case 14: - case 97: - case 103: - case 82: + case 98: + case 105: case 83: - case 74: - case 99: - case 81: - case 70: - case 65: - case 89: - case 100: - case 91: - case 93: - case 95: - case 71: - case 67: - case 80: - return true; case 69: + case 84: + case 75: + case 100: + case 82: + case 71: + case 66: + case 90: + case 101: + case 92: + case 94: + case 96: + case 72: + case 68: + case 81: + return true; + case 70: var isConstEnum = lookAhead(nextTokenIsEnumKeyword); return !isConstEnum; - case 102: - case 68: - case 115: - case 76: - case 121: + case 104: + case 117: + case 77: + case 123: if (isDeclarationStart()) { return false; } + case 109: case 107: - case 105: - case 106: case 108: + case 110: if (lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine)) { return false; } @@ -6619,7 +8039,7 @@ var ts; } function nextTokenIsEnumKeyword() { nextToken(); - return token === 76; + return token === 77; } function nextTokenIsIdentifierOrKeywordOnSameLine() { nextToken(); @@ -6629,46 +8049,48 @@ var ts; switch (token) { case 14: return parseBlock(false, false); - case 97: + case 98: + case 70: + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); + case 83: + return parseFunctionDeclaration(scanner.getStartPos(), undefined, undefined); case 69: - return parseVariableStatement(scanner.getStartPos(), undefined); - case 82: - return parseFunctionDeclaration(scanner.getStartPos(), undefined); + return parseClassDeclaration(scanner.getStartPos(), undefined, undefined); case 22: return parseEmptyStatement(); - case 83: + case 84: return parseIfStatement(); - case 74: + case 75: return parseDoStatement(); - case 99: - return parseWhileStatement(); - case 81: - return parseForOrForInOrForOfStatement(); - case 70: - return parseBreakOrContinueStatement(182); - case 65: - return parseBreakOrContinueStatement(183); - case 89: - return parseReturnStatement(); case 100: - return parseWithStatement(); - case 91: - return parseSwitchStatement(); - case 93: - return parseThrowStatement(); - case 95: - case 67: - case 80: - return parseTryStatement(); + return parseWhileStatement(); + case 82: + return parseForOrForInOrForOfStatement(); case 71: + return parseBreakOrContinueStatement(189); + case 66: + return parseBreakOrContinueStatement(190); + case 90: + return parseReturnStatement(); + case 101: + return parseWithStatement(); + case 92: + return parseSwitchStatement(); + case 94: + return parseThrowStatement(); + case 96: + case 68: + case 81: + return parseTryStatement(); + case 72: return parseDebuggerStatement(); - case 103: + case 105: if (isLetDeclaration()) { - return parseVariableStatement(scanner.getStartPos(), undefined); + return parseVariableStatement(scanner.getStartPos(), undefined, undefined); } default: - if (ts.isModifier(token)) { - var result = tryParse(parseVariableStatementOrFunctionDeclarationWithModifiers); + if (ts.isModifier(token) || token === 52) { + var result = tryParse(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return result; } @@ -6676,25 +8098,28 @@ var ts; return parseExpressionOrLabeledStatement(); } } - function parseVariableStatementOrFunctionDeclarationWithModifiers() { + function parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers() { var start = scanner.getStartPos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); switch (token) { - case 69: + case 70: var nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword); if (nextTokenIsEnum) { return undefined; } - return parseVariableStatement(start, modifiers); - case 103: + return parseVariableStatement(start, decorators, modifiers); + case 105: if (!isLetDeclaration()) { return undefined; } - return parseVariableStatement(start, modifiers); - case 97: - return parseVariableStatement(start, modifiers); - case 82: - return parseFunctionDeclaration(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); + case 98: + return parseVariableStatement(start, decorators, modifiers); + case 83: + return parseFunctionDeclaration(start, decorators, modifiers); + case 69: + return parseClassDeclaration(start, decorators, modifiers); } return undefined; } @@ -6707,18 +8132,18 @@ var ts; } function parseArrayBindingElement() { if (token === 23) { - return createNode(170); + return createNode(175); } - var node = createNode(148); + var node = createNode(152); node.dotDotDotToken = parseOptionalToken(21); node.name = parseIdentifierOrPattern(); node.initializer = parseInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(148); + var node = createNode(152); var id = parsePropertyName(); - if (id.kind === 64 && token !== 51) { + if (id.kind === 65 && token !== 51) { node.name = id; } else { @@ -6730,14 +8155,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(146); + var node = createNode(150); parseExpected(14); node.elements = parseDelimitedList(10, parseObjectBindingElement); parseExpected(15); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(147); + var node = createNode(151); parseExpected(18); node.elements = parseDelimitedList(11, parseArrayBindingElement); parseExpected(19); @@ -6756,7 +8181,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(191); + var node = createNode(198); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -6765,21 +8190,21 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(192); + var node = createNode(199); switch (token) { - case 97: + case 98: break; - case 103: - node.flags |= 2048; - break; - case 69: + case 105: node.flags |= 4096; break; + case 70: + node.flags |= 8192; + break; default: ts.Debug.fail(); } nextToken(); - if (token === 122 && lookAhead(canFollowContextualOfKeyword)) { + if (token === 125 && lookAhead(canFollowContextualOfKeyword)) { node.declarations = createMissingList(); } else { @@ -6793,33 +8218,37 @@ var ts; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 17; } - function parseVariableStatement(fullStart, modifiers) { - var node = createNode(173, fullStart); + function parseVariableStatement(fullStart, decorators, modifiers) { + var node = createNode(180, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); parseSemicolon(); return finishNode(node); } - function parseFunctionDeclaration(fullStart, modifiers) { - var node = createNode(193, fullStart); + function parseFunctionDeclaration(fullStart, decorators, modifiers) { + var node = createNode(200, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(82); + parseExpected(83); node.asteriskToken = parseOptionalToken(35); - node.name = parseIdentifier(); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); fillSignature(51, !!node.asteriskToken, false, node); node.body = parseFunctionBlockOrSemicolon(!!node.asteriskToken, ts.Diagnostics.or_expected); return finishNode(node); } - function parseConstructorDeclaration(pos, modifiers) { - var node = createNode(131, pos); + function parseConstructorDeclaration(pos, decorators, modifiers) { + var node = createNode(135, pos); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(112); + parseExpected(114); fillSignature(51, false, false, node); node.body = parseFunctionBlockOrSemicolon(false, ts.Diagnostics.or_expected); return finishNode(node); } - function parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { - var method = createNode(130, fullStart); + function parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, diagnosticMessage) { + var method = createNode(134, fullStart); + method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; method.name = name; @@ -6828,29 +8257,34 @@ var ts; method.body = parseFunctionBlockOrSemicolon(!!asteriskToken, diagnosticMessage); return finishNode(method); } - function parsePropertyOrMethodDeclaration(fullStart, modifiers) { + function parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken) { + var property = createNode(132, fullStart); + property.decorators = decorators; + setModifiers(property, modifiers); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + property.initializer = allowInAnd(parseNonParameterInitializer); + parseSemicolon(); + return finishNode(property); + } + function parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers) { var asteriskToken = parseOptionalToken(35); var name = parsePropertyName(); var questionToken = parseOptionalToken(50); if (asteriskToken || token === 16 || token === 24) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, ts.Diagnostics.or_expected); } else { - var property = createNode(128, fullStart); - setModifiers(property, modifiers); - property.name = name; - property.questionToken = questionToken; - property.type = parseTypeAnnotation(); - property.initializer = allowInAnd(parseNonParameterInitializer); - parseSemicolon(); - return finishNode(property); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken); } } function parseNonParameterInitializer() { return parseInitializer(false); } - function parseAccessorDeclaration(kind, fullStart, modifiers) { + function parseAccessorDeclaration(kind, fullStart, decorators, modifiers) { var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parsePropertyName(); fillSignature(51, false, false, node); @@ -6859,6 +8293,9 @@ var ts; } function isClassMemberStart() { var idToken; + if (token === 52) { + return true; + } while (ts.isModifier(token)) { idToken = token; nextToken(); @@ -6874,14 +8311,14 @@ var ts; return true; } if (idToken !== undefined) { - if (!ts.isKeyword(idToken) || idToken === 118 || idToken === 114) { + if (!ts.isKeyword(idToken) || idToken === 120 || idToken === 116) { return true; } switch (token) { case 16: case 24: case 51: - case 52: + case 53: case 50: return true; default: @@ -6890,6 +8327,26 @@ var ts; } return false; } + function parseDecorators() { + var decorators; + while (true) { + var decoratorStart = getNodePos(); + if (!parseOptional(52)) { + break; + } + if (!decorators) { + decorators = []; + decorators.pos = scanner.getStartPos(); + } + var decorator = createNode(130, decoratorStart); + decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); + decorators.push(finishNode(decorator)); + } + if (decorators) { + decorators.end = getNodeEnd(); + } + return decorators; + } function parseModifiers() { var flags = 0; var modifiers; @@ -6913,46 +8370,76 @@ var ts; return modifiers; } function parseClassElement() { + if (token === 22) { + var result = createNode(178); + nextToken(); + return finishNode(result); + } var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } - if (token === 112) { - return parseConstructorDeclaration(fullStart, modifiers); + if (token === 114) { + return parseConstructorDeclaration(fullStart, decorators, modifiers); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(modifiers); + return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } if (isIdentifierOrKeyword() || token === 8 || token === 7 || token === 35 || token === 18) { - return parsePropertyOrMethodDeclaration(fullStart, modifiers); + return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); + } + if (decorators) { + var name_3 = createMissingNode(65, true, ts.Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name_3, undefined); } ts.Debug.fail("Should not have attempted to parse class member declaration."); } - function parseClassDeclaration(fullStart, modifiers) { - var node = createNode(194, fullStart); + function parseClassExpression() { + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 174); + } + function parseClassDeclaration(fullStart, decorators, modifiers) { + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 201); + } + function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { + var savedStrictModeContext = inStrictModeContext(); + if (languageVersion >= 2) { + setStrictModeContext(true); + } + var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(68); - node.name = parseIdentifier(); + parseExpected(69); + node.name = node.flags & 256 ? parseOptionalIdentifier() : parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(true); if (parseExpected(14)) { - node.members = inGeneratorParameterContext() ? doOutsideOfYieldContext(parseClassMembers) : parseClassMembers(); + node.members = inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseClassMembers) + : parseClassMembers(); parseExpected(15); } else { node.members = createMissingList(); } - return finishNode(node); + var finishedNode = finishNode(node); + setStrictModeContext(savedStrictModeContext); + return finishedNode; } function parseHeritageClauses(isClassHeritageClause) { + // ClassTail[Yield,GeneratorParameter] : See 14.5 + // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } + // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } if (isHeritageClause()) { - return isClassHeritageClause && inGeneratorParameterContext() ? doOutsideOfYieldContext(parseHeritageClausesWorker) : parseHeritageClausesWorker(); + return isClassHeritageClause && inGeneratorParameterContext() + ? doOutsideOfYieldContext(parseHeritageClausesWorker) + : parseHeritageClausesWorker(); } return undefined; } @@ -6960,51 +8447,62 @@ var ts; return parseList(19, false, parseHeritageClause); } function parseHeritageClause() { - if (token === 78 || token === 101) { - var node = createNode(205); + if (token === 79 || token === 103) { + var node = createNode(222); node.token = token; nextToken(); - node.types = parseDelimitedList(8, parseTypeReference); + node.types = parseDelimitedList(8, parseHeritageClauseElement); return finishNode(node); } return undefined; } + function parseHeritageClauseElement() { + var node = createNode(177); + node.expression = parseLeftHandSideExpressionOrHigher(); + if (token === 24) { + node.typeArguments = parseBracketedList(17, parseType, 24, 25); + } + return finishNode(node); + } function isHeritageClause() { - return token === 78 || token === 101; + return token === 79 || token === 103; } function parseClassMembers() { return parseList(6, false, parseClassElement); } - function parseInterfaceDeclaration(fullStart, modifiers) { - var node = createNode(195, fullStart); + function parseInterfaceDeclaration(fullStart, decorators, modifiers) { + var node = createNode(202, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(102); + parseExpected(104); node.name = parseIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(false); node.members = parseObjectTypeMembers(); return finishNode(node); } - function parseTypeAliasDeclaration(fullStart, modifiers) { - var node = createNode(196, fullStart); + function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { + var node = createNode(203, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(121); + parseExpected(123); node.name = parseIdentifier(); - parseExpected(52); + parseExpected(53); node.type = parseType(); parseSemicolon(); return finishNode(node); } function parseEnumMember() { - var node = createNode(209, scanner.getStartPos()); + var node = createNode(226, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } - function parseEnumDeclaration(fullStart, modifiers) { - var node = createNode(197, fullStart); + function parseEnumDeclaration(fullStart, decorators, modifiers) { + var node = createNode(204, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - parseExpected(76); + parseExpected(77); node.name = parseIdentifier(); if (parseExpected(14)) { node.members = parseDelimitedList(7, parseEnumMember); @@ -7016,7 +8514,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(199, scanner.getStartPos()); + var node = createNode(206, scanner.getStartPos()); if (parseExpected(14)) { node.statements = parseList(1, false, parseModuleElement); parseExpected(15); @@ -7026,94 +8524,221 @@ var ts; } return finishNode(node); } - function parseInternalModuleTail(fullStart, modifiers, flags) { - var node = createNode(198, fullStart); + function parseInternalModuleTail(fullStart, decorators, modifiers, flags) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); - node.body = parseOptional(20) ? parseInternalModuleTail(getNodePos(), undefined, 1) : parseModuleBlock(); + node.body = parseOptional(20) + ? parseInternalModuleTail(getNodePos(), undefined, undefined, 1) + : parseModuleBlock(); return finishNode(node); } - function parseAmbientExternalModuleDeclaration(fullStart, modifiers) { - var node = createNode(198, fullStart); + function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { + var node = createNode(205, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(true); node.body = parseModuleBlock(); return finishNode(node); } - function parseModuleDeclaration(fullStart, modifiers) { - parseExpected(115); - return token === 8 ? parseAmbientExternalModuleDeclaration(fullStart, modifiers) : parseInternalModuleTail(fullStart, modifiers, modifiers ? modifiers.flags : 0); + function parseModuleDeclaration(fullStart, decorators, modifiers) { + parseExpected(117); + return token === 8 + ? parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) + : parseInternalModuleTail(fullStart, decorators, modifiers, modifiers ? modifiers.flags : 0); } function isExternalModuleReference() { - return token === 116 && + return token === 118 && lookAhead(nextTokenIsOpenParen); } function nextTokenIsOpenParen() { return nextToken() === 16; } - function parseImportDeclaration(fullStart, modifiers) { - var node = createNode(200, fullStart); - setModifiers(node, modifiers); - parseExpected(84); - node.name = parseIdentifier(); - parseExpected(52); - node.moduleReference = parseModuleReference(); + function nextTokenIsCommaOrFromKeyword() { + nextToken(); + return token === 23 || + token === 124; + } + function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { + parseExpected(85); + var afterImportPos = scanner.getStartPos(); + var identifier; + if (isIdentifier()) { + identifier = parseIdentifier(); + if (token !== 23 && token !== 124) { + var importEqualsDeclaration = createNode(208, fullStart); + importEqualsDeclaration.decorators = decorators; + setModifiers(importEqualsDeclaration, modifiers); + importEqualsDeclaration.name = identifier; + parseExpected(53); + importEqualsDeclaration.moduleReference = parseModuleReference(); + parseSemicolon(); + return finishNode(importEqualsDeclaration); + } + } + var importDeclaration = createNode(209, fullStart); + importDeclaration.decorators = decorators; + setModifiers(importDeclaration, modifiers); + if (identifier || + token === 35 || + token === 14) { + importDeclaration.importClause = parseImportClause(identifier, afterImportPos); + parseExpected(124); + } + importDeclaration.moduleSpecifier = parseModuleSpecifier(); parseSemicolon(); - return finishNode(node); + return finishNode(importDeclaration); + } + function parseImportClause(identifier, fullStart) { + //ImportClause: + // ImportedDefaultBinding + // NameSpaceImport + // NamedImports + // ImportedDefaultBinding, NameSpaceImport + // ImportedDefaultBinding, NamedImports + var importClause = createNode(210, fullStart); + if (identifier) { + importClause.name = identifier; + } + if (!importClause.name || + parseOptional(23)) { + importClause.namedBindings = token === 35 ? parseNamespaceImport() : parseNamedImportsOrExports(212); + } + return finishNode(importClause); } function parseModuleReference() { - return isExternalModuleReference() ? parseExternalModuleReference() : parseEntityName(false); + return isExternalModuleReference() + ? parseExternalModuleReference() + : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(202); - parseExpected(116); + var node = createNode(219); + parseExpected(118); parseExpected(16); - node.expression = parseExpression(); - if (node.expression.kind === 8) { - internIdentifier(node.expression.text); - } + node.expression = parseModuleSpecifier(); parseExpected(17); return finishNode(node); } - function parseExportAssignmentTail(fullStart, modifiers) { - var node = createNode(201, fullStart); + function parseModuleSpecifier() { + var result = parseExpression(); + if (result.kind === 8) { + internIdentifier(result.text); + } + return result; + } + function parseNamespaceImport() { + var namespaceImport = createNode(211); + parseExpected(35); + parseExpected(102); + namespaceImport.name = parseIdentifier(); + return finishNode(namespaceImport); + } + function parseNamedImportsOrExports(kind) { + var node = createNode(kind); + node.elements = parseBracketedList(20, kind === 212 ? parseImportSpecifier : parseExportSpecifier, 14, 15); + return finishNode(node); + } + function parseExportSpecifier() { + return parseImportOrExportSpecifier(217); + } + function parseImportSpecifier() { + return parseImportOrExportSpecifier(213); + } + function parseImportOrExportSpecifier(kind) { + var node = createNode(kind); + var checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + var checkIdentifierStart = scanner.getTokenPos(); + var checkIdentifierEnd = scanner.getTextPos(); + var identifierName = parseIdentifierName(); + if (token === 102) { + node.propertyName = identifierName; + parseExpected(102); + checkIdentifierIsKeyword = ts.isKeyword(token) && !isIdentifier(); + checkIdentifierStart = scanner.getTokenPos(); + checkIdentifierEnd = scanner.getTextPos(); + node.name = parseIdentifierName(); + } + else { + node.name = identifierName; + } + if (kind === 213 && checkIdentifierIsKeyword) { + parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); + } + return finishNode(node); + } + function parseExportDeclaration(fullStart, decorators, modifiers) { + var node = createNode(215, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - node.exportName = parseIdentifier(); + if (parseOptional(35)) { + parseExpected(124); + node.moduleSpecifier = parseModuleSpecifier(); + } + else { + node.exportClause = parseNamedImportsOrExports(216); + if (parseOptional(124)) { + node.moduleSpecifier = parseModuleSpecifier(); + } + } + parseSemicolon(); + return finishNode(node); + } + function parseExportAssignment(fullStart, decorators, modifiers) { + var node = createNode(214, fullStart); + node.decorators = decorators; + setModifiers(node, modifiers); + if (parseOptional(53)) { + node.isExportEquals = true; + node.expression = parseAssignmentExpressionOrHigher(); + } + else { + parseExpected(73); + if (parseOptional(51)) { + node.type = parseType(); + } + else { + node.expression = parseAssignmentExpressionOrHigher(); + } + } parseSemicolon(); return finishNode(node); } function isLetDeclaration() { - return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOnSameLine); + return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine); } - function isDeclarationStart() { + function isDeclarationStart(followsModifier) { switch (token) { - case 97: - case 69: - case 82: + case 98: + case 70: + case 83: return true; - case 103: - return isLetDeclaration(); - case 68: - case 102: - case 76: - case 84: - case 121: - return lookAhead(nextTokenIsIdentifierOrKeyword); - case 115: - return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); - case 77: - return lookAhead(nextTokenIsEqualsTokenOrDeclarationStart); - case 113: - case 107: case 105: - case 106: + return isLetDeclaration(); + case 69: + case 104: + case 77: + case 123: + return lookAhead(nextTokenIsIdentifierOrKeyword); + case 85: + return lookAhead(nextTokenCanFollowImportKeyword); + case 117: + return lookAhead(nextTokenIsIdentifierOrKeywordOrStringLiteral); + case 78: + return lookAhead(nextTokenCanFollowExportKeyword); + case 115: + case 109: + case 107: case 108: + case 110: return lookAhead(nextTokenIsDeclarationStart); + case 52: + return !followsModifier; } } function isIdentifierOrKeyword() { - return token >= 64; + return token >= 65; } function nextTokenIsIdentifierOrKeyword() { nextToken(); @@ -7123,43 +8748,63 @@ var ts; nextToken(); return isIdentifierOrKeyword() || token === 8; } - function nextTokenIsEqualsTokenOrDeclarationStart() { + function nextTokenCanFollowImportKeyword() { nextToken(); - return token === 52 || isDeclarationStart(); + return isIdentifierOrKeyword() || token === 8 || + token === 35 || token === 14; + } + function nextTokenCanFollowExportKeyword() { + nextToken(); + return token === 53 || token === 35 || + token === 14 || token === 73 || isDeclarationStart(true); } function nextTokenIsDeclarationStart() { nextToken(); - return isDeclarationStart(); + return isDeclarationStart(true); + } + function nextTokenIsAsKeyword() { + return nextToken() === 102; } function parseDeclaration() { var fullStart = getNodePos(); + var decorators = parseDecorators(); var modifiers = parseModifiers(); - if (token === 77) { + if (token === 78) { nextToken(); - if (parseOptional(52)) { - return parseExportAssignmentTail(fullStart, modifiers); + if (token === 73 || token === 53) { + return parseExportAssignment(fullStart, decorators, modifiers); + } + if (token === 35 || token === 14) { + return parseExportDeclaration(fullStart, decorators, modifiers); } } switch (token) { - case 97: - case 103: + case 98: + case 105: + case 70: + return parseVariableStatement(fullStart, decorators, modifiers); + case 83: + return parseFunctionDeclaration(fullStart, decorators, modifiers); case 69: - return parseVariableStatement(fullStart, modifiers); - case 82: - return parseFunctionDeclaration(fullStart, modifiers); - case 68: - return parseClassDeclaration(fullStart, modifiers); - case 102: - return parseInterfaceDeclaration(fullStart, modifiers); - case 121: - return parseTypeAliasDeclaration(fullStart, modifiers); - case 76: - return parseEnumDeclaration(fullStart, modifiers); - case 115: - return parseModuleDeclaration(fullStart, modifiers); - case 84: - return parseImportDeclaration(fullStart, modifiers); + return parseClassDeclaration(fullStart, decorators, modifiers); + case 104: + return parseInterfaceDeclaration(fullStart, decorators, modifiers); + case 123: + return parseTypeAliasDeclaration(fullStart, decorators, modifiers); + case 77: + return parseEnumDeclaration(fullStart, decorators, modifiers); + case 117: + return parseModuleDeclaration(fullStart, decorators, modifiers); + case 85: + return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); default: + if (decorators) { + var node = createMissingNode(218, true, ts.Diagnostics.Declaration_expected); + node.pos = fullStart; + node.decorators = decorators; + setModifiers(node, modifiers); + return finishNode(node); + } ts.Debug.fail("Mismatch between isDeclarationStart and parseDeclaration"); } } @@ -7173,7 +8818,9 @@ var ts; return parseSourceElementOrModuleElement(); } function parseSourceElementOrModuleElement() { - return isDeclarationStart() ? parseDeclaration() : parseStatement(); + return isDeclarationStart() + ? parseDeclaration() + : parseStatement(); } function processReferenceComments(sourceFile) { var triviaScanner = ts.createScanner(sourceFile.languageVersion, false, sourceText); @@ -7231,33 +8878,40 @@ var ts; } function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { - return node.flags & 1 || node.kind === 200 && node.moduleReference.kind === 202 || node.kind === 201 ? node : undefined; + return node.flags & 1 + || node.kind === 208 && node.moduleReference.kind === 219 + || node.kind === 209 + || node.kind === 214 + || node.kind === 215 + ? node + : undefined; }); } } function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 151: - case 152: - case 154: - case 153: case 155: - case 149: - case 157: - case 150: + case 156: case 158: - case 64: + case 157: + case 159: + case 153: + case 161: + case 154: + case 174: + case 162: + case 65: case 9: case 7: case 8: case 10: - case 167: - case 79: - case 88: - case 92: - case 94: - case 90: + case 171: + case 80: + case 89: + case 93: + case 95: + case 91: return true; } } @@ -7265,459 +8919,30 @@ var ts; } ts.isLeftHandSideExpression = isLeftHandSideExpression; function isAssignmentOperator(token) { - return token >= 52 && token <= 63; + return token >= 53 && token <= 64; } ts.isAssignmentOperator = isAssignmentOperator; })(ts || (ts = {})); -var ts; -(function (ts) { - ts.bindTime = 0; - (function (ModuleInstanceState) { - ModuleInstanceState[ModuleInstanceState["NonInstantiated"] = 0] = "NonInstantiated"; - ModuleInstanceState[ModuleInstanceState["Instantiated"] = 1] = "Instantiated"; - ModuleInstanceState[ModuleInstanceState["ConstEnumOnly"] = 2] = "ConstEnumOnly"; - })(ts.ModuleInstanceState || (ts.ModuleInstanceState = {})); - var ModuleInstanceState = ts.ModuleInstanceState; - function getModuleInstanceState(node) { - if (node.kind === 195 || node.kind === 196) { - return 0; - } - else if (ts.isConstEnumDeclaration(node)) { - return 2; - } - else if (node.kind === 200 && !(node.flags & 1)) { - return 0; - } - else if (node.kind === 199) { - var state = 0; - ts.forEachChild(node, function (n) { - switch (getModuleInstanceState(n)) { - case 0: - return false; - case 2: - state = 2; - return false; - case 1: - state = 1; - return true; - } - }); - return state; - } - else if (node.kind === 198) { - return getModuleInstanceState(node.body); - } - else { - return 1; - } - } - ts.getModuleInstanceState = getModuleInstanceState; - function bindSourceFile(file) { - var start = new Date().getTime(); - bindSourceFileWorker(file); - ts.bindTime += new Date().getTime() - start; - } - ts.bindSourceFile = bindSourceFile; - function bindSourceFileWorker(file) { - var parent; - var container; - var blockScopeContainer; - var lastContainer; - var symbolCount = 0; - var Symbol = ts.objectAllocator.getSymbolConstructor(); - if (!file.locals) { - file.locals = {}; - container = blockScopeContainer = file; - bind(file); - file.symbolCount = symbolCount; - } - function createSymbol(flags, name) { - symbolCount++; - return new Symbol(flags, name); - } - function addDeclarationToSymbol(symbol, node, symbolKind) { - symbol.flags |= symbolKind; - if (!symbol.declarations) - symbol.declarations = []; - symbol.declarations.push(node); - if (symbolKind & 1952 && !symbol.exports) - symbol.exports = {}; - if (symbolKind & 6240 && !symbol.members) - symbol.members = {}; - node.symbol = symbol; - if (symbolKind & 107455 && !symbol.valueDeclaration) - symbol.valueDeclaration = node; - } - function getDeclarationName(node) { - if (node.name) { - if (node.kind === 198 && node.name.kind === 8) { - return '"' + node.name.text + '"'; - } - if (node.name.kind === 124) { - var nameExpression = node.name.expression; - ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression)); - return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text); - } - return node.name.text; - } - switch (node.kind) { - case 139: - case 131: - return "__constructor"; - case 138: - case 134: - return "__call"; - case 135: - return "__new"; - case 136: - return "__index"; - } - } - function getDisplayName(node) { - return node.name ? ts.declarationNameToString(node.name) : getDeclarationName(node); - } - function declareSymbol(symbols, parent, node, includes, excludes) { - ts.Debug.assert(!ts.hasDynamicName(node)); - var name = getDeclarationName(node); - if (name !== undefined) { - var symbol = ts.hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); - if (symbol.flags & excludes) { - if (node.name) { - node.name.parent = node; - } - var message = symbol.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; - ts.forEach(symbol.declarations, function (declaration) { - file.bindDiagnostics.push(ts.createDiagnosticForNode(declaration.name, message, getDisplayName(declaration))); - }); - file.bindDiagnostics.push(ts.createDiagnosticForNode(node.name, message, getDisplayName(node))); - symbol = createSymbol(0, name); - } - } - else { - symbol = createSymbol(0, "__missing"); - } - addDeclarationToSymbol(symbol, node, includes); - symbol.parent = parent; - if (node.kind === 194 && symbol.exports) { - var prototypeSymbol = createSymbol(4 | 134217728, "prototype"); - if (ts.hasProperty(symbol.exports, prototypeSymbol.name)) { - if (node.name) { - node.name.parent = node; - } - file.bindDiagnostics.push(ts.createDiagnosticForNode(symbol.exports[prototypeSymbol.name].declarations[0], ts.Diagnostics.Duplicate_identifier_0, prototypeSymbol.name)); - } - symbol.exports[prototypeSymbol.name] = prototypeSymbol; - prototypeSymbol.parent = symbol; - } - return symbol; - } - function isAmbientContext(node) { - while (node) { - if (node.flags & 2) - return true; - node = node.parent; - } - return false; - } - function declareModuleMember(node, symbolKind, symbolExcludes) { - var exportKind = 0; - if (symbolKind & 107455) { - exportKind |= 1048576; - } - if (symbolKind & 793056) { - exportKind |= 2097152; - } - if (symbolKind & 1536) { - exportKind |= 4194304; - } - if (ts.getCombinedNodeFlags(node) & 1 || (node.kind !== 200 && isAmbientContext(container))) { - if (exportKind) { - var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); - local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - node.localSymbol = local; - } - else { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - } - } - else { - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - } - } - function bindChildren(node, symbolKind, isBlockScopeContainer) { - if (symbolKind & 255504) { - node.locals = {}; - } - var saveParent = parent; - var saveContainer = container; - var savedBlockScopeContainer = blockScopeContainer; - parent = node; - if (symbolKind & 262128) { - container = node; - if (lastContainer) { - lastContainer.nextContainer = container; - } - lastContainer = container; - } - if (isBlockScopeContainer) { - blockScopeContainer = node; - } - ts.forEachChild(node, bind); - container = saveContainer; - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - switch (container.kind) { - case 198: - declareModuleMember(node, symbolKind, symbolExcludes); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, symbolKind, symbolExcludes); - break; - } - case 138: - case 139: - case 134: - case 135: - case 136: - case 130: - case 129: - case 131: - case 132: - case 133: - case 193: - case 158: - case 159: - declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); - break; - case 194: - if (node.flags & 128) { - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - case 141: - case 150: - case 195: - declareSymbol(container.symbol.members, container.symbol, node, symbolKind, symbolExcludes); - break; - case 197: - declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); - break; - } - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindModuleDeclaration(node) { - if (node.name.kind === 8) { - bindDeclaration(node, 512, 106639, true); - } - else { - var state = getModuleInstanceState(node); - if (state === 0) { - bindDeclaration(node, 1024, 0, true); - } - else { - bindDeclaration(node, 512, 106639, true); - if (state === 2) { - node.symbol.constEnumOnlyModule = true; - } - else if (node.symbol.constEnumOnlyModule) { - node.symbol.constEnumOnlyModule = false; - } - } - } - } - function bindFunctionOrConstructorType(node) { - var symbol = createSymbol(131072, getDeclarationName(node)); - addDeclarationToSymbol(symbol, node, 131072); - bindChildren(node, 131072, false); - var typeLiteralSymbol = createSymbol(2048, "__type"); - addDeclarationToSymbol(typeLiteralSymbol, node, 2048); - typeLiteralSymbol.members = {}; - typeLiteralSymbol.members[node.kind === 138 ? "__call" : "__new"] = symbol; - } - function bindAnonymousDeclaration(node, symbolKind, name, isBlockScopeContainer) { - var symbol = createSymbol(symbolKind, name); - addDeclarationToSymbol(symbol, node, symbolKind); - bindChildren(node, symbolKind, isBlockScopeContainer); - } - function bindCatchVariableDeclaration(node) { - var symbol = createSymbol(1, node.name.text || "__missing"); - addDeclarationToSymbol(symbol, node, 1); - var saveParent = parent; - var savedBlockScopeContainer = blockScopeContainer; - parent = blockScopeContainer = node; - ts.forEachChild(node, bind); - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; - } - function bindBlockScopedVariableDeclaration(node) { - switch (blockScopeContainer.kind) { - case 198: - declareModuleMember(node, 2, 107455); - break; - case 210: - if (ts.isExternalModule(container)) { - declareModuleMember(node, 2, 107455); - break; - } - default: - if (!blockScopeContainer.locals) { - blockScopeContainer.locals = {}; - } - declareSymbol(blockScopeContainer.locals, undefined, node, 2, 107455); - } - bindChildren(node, 2, false); - } - function getDestructuringParameterName(node) { - return "__" + ts.indexOf(node.parent.parameters, node); - } - function bind(node) { - node.parent = parent; - switch (node.kind) { - case 125: - bindDeclaration(node, 262144, 530912, false); - break; - case 126: - bindParameter(node); - break; - case 191: - case 148: - if (ts.isBindingPattern(node.name)) { - bindChildren(node, 0, false); - } - else if (ts.getCombinedNodeFlags(node) & 6144) { - bindBlockScopedVariableDeclaration(node); - } - else { - bindDeclaration(node, 1, 107454, false); - } - break; - case 128: - case 127: - bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455, false); - break; - case 207: - case 208: - bindPropertyOrMethodOrAccessor(node, 4, 107455, false); - break; - case 209: - bindPropertyOrMethodOrAccessor(node, 8, 107455, false); - break; - case 134: - case 135: - case 136: - bindDeclaration(node, 131072, 0, false); - break; - case 130: - case 129: - bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263, true); - break; - case 193: - bindDeclaration(node, 16, 106927, true); - break; - case 131: - bindDeclaration(node, 16384, 0, true); - break; - case 132: - bindPropertyOrMethodOrAccessor(node, 32768, 41919, true); - break; - case 133: - bindPropertyOrMethodOrAccessor(node, 65536, 74687, true); - break; - case 138: - case 139: - bindFunctionOrConstructorType(node); - break; - case 141: - bindAnonymousDeclaration(node, 2048, "__type", false); - break; - case 150: - bindAnonymousDeclaration(node, 4096, "__object", false); - break; - case 158: - case 159: - bindAnonymousDeclaration(node, 16, "__function", true); - break; - case 206: - bindCatchVariableDeclaration(node); - break; - case 194: - bindDeclaration(node, 32, 899583, false); - break; - case 195: - bindDeclaration(node, 64, 792992, false); - break; - case 196: - bindDeclaration(node, 524288, 793056, false); - break; - case 197: - if (ts.isConst(node)) { - bindDeclaration(node, 128, 899967, false); - } - else { - bindDeclaration(node, 256, 899327, false); - } - break; - case 198: - bindModuleDeclaration(node); - break; - case 200: - bindDeclaration(node, 8388608, 8388608, false); - break; - case 210: - if (ts.isExternalModule(node)) { - bindAnonymousDeclaration(node, 512, '"' + ts.removeFileExtension(node.fileName) + '"', true); - break; - } - case 172: - bindChildren(node, 0, !ts.isAnyFunction(node.parent)); - break; - case 206: - case 179: - case 180: - case 181: - case 186: - bindChildren(node, 0, true); - break; - default: - var saveParent = parent; - parent = node; - ts.forEachChild(node, bind); - parent = saveParent; - } - } - function bindParameter(node) { - if (ts.isBindingPattern(node.name)) { - bindAnonymousDeclaration(node, 1, getDestructuringParameterName(node), false); - } - else { - bindDeclaration(node, 1, 107455, false); - } - if (node.flags & 112 && - node.parent.kind === 131 && - node.parent.parent.kind === 194) { - var classDeclaration = node.parent.parent; - declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); - } - } - function bindPropertyOrMethodOrAccessor(node, symbolKind, symbolExcludes, isBlockScopeContainer) { - if (ts.hasDynamicName(node)) { - bindAnonymousDeclaration(node, symbolKind, "__computed", isBlockScopeContainer); - } - else { - bindDeclaration(node, symbolKind, symbolExcludes, isBlockScopeContainer); - } - } - } -})(ts || (ts = {})); +/// var ts; (function (ts) { var nextSymbolId = 1; var nextNodeId = 1; var nextMergeId = 1; + function getNodeId(node) { + if (!node.id) + node.id = nextNodeId++; + return node.id; + } + ts.getNodeId = getNodeId; ts.checkTime = 0; + function getSymbolId(symbol) { + if (!symbol.id) { + symbol.id = nextSymbolId++; + } + return symbol.id; + } + ts.getSymbolId = getSymbolId; function createTypeChecker(host, produceDiagnostics) { var Symbol = ts.objectAllocator.getSymbolConstructor(); var Type = ts.objectAllocator.getTypeConstructor(); @@ -7728,6 +8953,8 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; var emitResolver = createResolver(); + var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, getIdentifierCount: function () { return ts.sum(host.getSourceFiles(), "identifierCount"); }, @@ -7760,11 +8987,10 @@ var ts; isValidPropertyAccess: isValidPropertyAccess, getSignatureFromDeclaration: getSignatureFromDeclaration, isImplementationOfOverload: isImplementationOfOverload, - getAliasedSymbol: resolveImport, - getEmitResolver: getEmitResolver + getAliasedSymbol: resolveAlias, + getEmitResolver: getEmitResolver, + getExportsOfExternalModule: getExportsOfExternalModule }; - var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); - var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var unknownSymbol = createSymbol(4 | 67108864, "unknown"); var resolvingSymbol = createSymbol(67108864, "__resolving__"); var anyType = createIntrinsicType(1, "any"); @@ -7780,7 +9006,6 @@ var ts; var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var inferenceFailureType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); var globals = {}; @@ -7795,11 +9020,18 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; + var globalIterableType; var anyArrayType; + var globalTypedPropertyDescriptorType; + var globalClassDecoratorType; + var globalParameterDecoratorType; + var globalPropertyDecoratorType; + var globalMethodDecoratorType; var tupleTypes = {}; var unionTypes = {}; var stringLiteralTypes = {}; var emitExtends = false; + var emitDecorate = false; var mergedSymbols = []; var symbolLinks = []; var nodeLinks = []; @@ -7828,7 +9060,9 @@ var ts; return emitResolver; } function error(location, message, arg0, arg1, arg2) { - var diagnostic = location ? ts.createDiagnosticForNode(location, message, arg0, arg1, arg2) : ts.createCompilerDiagnostic(message, arg0, arg1, arg2); + var diagnostic = location + ? ts.createDiagnosticForNode(location, message, arg0, arg1, arg2) + : ts.createCompilerDiagnostic(message, arg0, arg1, arg2); diagnostics.add(diagnostic); } function createSymbol(flags, name) { @@ -7890,7 +9124,7 @@ var ts; recordMergedSymbol(result, symbol); return result; } - function extendSymbol(target, source) { + function mergeSymbol(target, source) { if (!(target.flags & getExcludedSymbolFlags(source.flags))) { if (source.flags & 512 && target.flags & 512 && target.constEnumOnlyModule && !source.constEnumOnlyModule) { target.constEnumOnlyModule = false; @@ -7904,17 +9138,18 @@ var ts; if (source.members) { if (!target.members) target.members = {}; - extendSymbolTable(target.members, source.members); + mergeSymbolTable(target.members, source.members); } if (source.exports) { if (!target.exports) target.exports = {}; - extendSymbolTable(target.exports, source.exports); + mergeSymbolTable(target.exports, source.exports); } recordMergedSymbol(target, source); } else { - var message = target.flags & 2 || source.flags & 2 ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; + var message = target.flags & 2 || source.flags & 2 + ? ts.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : ts.Diagnostics.Duplicate_identifier_0; ts.forEach(source.declarations, function (node) { error(node.name ? node.name : node, message, symbolToString(source)); }); @@ -7932,7 +9167,7 @@ var ts; } return result; } - function extendSymbolTable(target, source) { + function mergeSymbolTable(target, source) { for (var id in source) { if (ts.hasProperty(source, id)) { if (!ts.hasProperty(target, id)) { @@ -7943,7 +9178,7 @@ var ts; if (!(symbol.flags & 33554432)) { target[id] = symbol = cloneSymbol(symbol); } - extendSymbol(symbol, source[id]); + mergeSymbol(symbol, source[id]); } } } @@ -7951,20 +9186,18 @@ var ts; function getSymbolLinks(symbol) { if (symbol.flags & 67108864) return symbol; - if (!symbol.id) - symbol.id = nextSymbolId++; - return symbolLinks[symbol.id] || (symbolLinks[symbol.id] = {}); + var id = getSymbolId(symbol); + return symbolLinks[id] || (symbolLinks[id] = {}); } function getNodeLinks(node) { - if (!node.id) - node.id = nextNodeId++; - return nodeLinks[node.id] || (nodeLinks[node.id] = {}); + var nodeId = getNodeId(node); + return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 210); + return ts.getAncestor(node, 227); } function isGlobalSourceFile(node) { - return node.kind === 210 && !ts.isExternalModule(node); + return node.kind === 227 && !ts.isExternalModule(node); } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -7974,7 +9207,7 @@ var ts; return symbol; } if (symbol.flags & 8388608) { - var target = resolveImport(symbol); + var target = resolveAlias(symbol); if (target === unknownSymbol || target.flags & meaning) { return symbol; } @@ -7998,6 +9231,7 @@ var ts; var lastLocation; var propertyWithInvalidInitializer; var errorLocation = location; + var grandparent; loop: while (location) { if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { @@ -8005,22 +9239,33 @@ var ts; } } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8914931)) { - break loop; + if (result.flags & meaning || !(result.flags & 8388608 && getDeclarationOfAliasSymbol(result).kind === 217)) { + break loop; + } + result = undefined; + } + else if (location.kind === 227) { + result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & 8914931); + var localSymbol = ts.getLocalSymbolForExportDefault(result); + if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { + break loop; + } + result = undefined; } break; - case 197: + case 204: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } break; - case 128: - case 127: - if (location.parent.kind === 194 && !(location.flags & 128)) { + case 132: + case 131: + if (location.parent.kind === 201 && !(location.flags & 128)) { var ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { if (getSymbol(ctor.locals, name, meaning & 107455)) { @@ -8029,8 +9274,8 @@ var ts; } } break; - case 194: - case 195: + case 201: + case 202: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 128) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -8039,45 +9284,53 @@ var ts; break loop; } break; - case 124: - var grandparent = location.parent.parent; - if (grandparent.kind === 194 || grandparent.kind === 195) { + case 127: + grandparent = location.parent.parent; + if (grandparent.kind === 201 || grandparent.kind === 202) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; } } break; - case 130: - case 129: - case 131: - case 132: + case 134: case 133: - case 193: - case 159: + case 135: + case 136: + case 137: + case 200: + case 163: if (name === "arguments") { result = argumentsSymbol; break loop; } break; - case 158: + case 162: if (name === "arguments") { result = argumentsSymbol; break loop; } - var id = location.name; - if (id && name === id.text) { + var functionName = location.name; + if (functionName && name === functionName.text) { result = location.symbol; break loop; } break; - case 206: - var id = location.name; - if (name === id.text) { + case 174: + var className = location.name; + if (className && name === className.text) { result = location.symbol; break loop; } break; + case 130: + if (location.parent && location.parent.kind === 129) { + location = location.parent; + } + if (location.parent && ts.isClassElement(location.parent)) { + location = location.parent; + } + break; } lastLocation = location; location = location.parent; @@ -8098,27 +9351,172 @@ var ts; return undefined; } if (result.flags & 2) { - var declaration = ts.forEach(result.declarations, function (d) { return ts.getCombinedNodeFlags(d) & 6144 ? d : undefined; }); - ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isDefinedBefore(declaration, errorLocation)) { - error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); - } + checkResolvedBlockScopedVariable(result, errorLocation); } } return result; } - function resolveImport(symbol) { - ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Imports here."); + function checkResolvedBlockScopedVariable(result, errorLocation) { + ts.Debug.assert((result.flags & 2) !== 0); + var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); + ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); + var isUsedBeforeDeclaration = !isDefinedBefore(declaration, errorLocation); + if (!isUsedBeforeDeclaration) { + var variableDeclaration = ts.getAncestor(declaration, 198); + var container = ts.getEnclosingBlockScopeContainer(variableDeclaration); + if (variableDeclaration.parent.parent.kind === 180 || + variableDeclaration.parent.parent.kind === 186) { + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, variableDeclaration, container); + } + else if (variableDeclaration.parent.parent.kind === 188 || + variableDeclaration.parent.parent.kind === 187) { + var expression = variableDeclaration.parent.parent.expression; + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, expression, container); + } + } + if (isUsedBeforeDeclaration) { + error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); + } + } + function isSameScopeDescendentOf(initial, parent, stopAt) { + if (!parent) { + return false; + } + for (var current = initial; current && current !== stopAt && !ts.isFunctionLike(current); current = current.parent) { + if (current === parent) { + return true; + } + } + return false; + } + function getAnyImportSyntax(node) { + if (ts.isAliasSymbolDeclaration(node)) { + if (node.kind === 208) { + return node; + } + while (node && node.kind !== 209) { + node = node.parent; + } + return node; + } + } + function getDeclarationOfAliasSymbol(symbol) { + return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); + } + function getTargetOfImportEqualsDeclaration(node) { + if (node.moduleReference.kind === 219) { + return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); + } + return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); + } + function getTargetOfImportClause(node) { + var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); + if (moduleSymbol) { + var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol) { + error(node.name, ts.Diagnostics.External_module_0_has_no_default_export, symbolToString(moduleSymbol)); + } + return exportDefaultSymbol; + } + } + function getTargetOfNamespaceImport(node) { + var moduleSpecifier = node.parent.parent.moduleSpecifier; + return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); + } + function getMemberOfModuleVariable(moduleSymbol, name) { + if (moduleSymbol.flags & 3) { + var typeAnnotation = moduleSymbol.valueDeclaration.type; + if (typeAnnotation) { + return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name); + } + } + } + function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { + if (valueSymbol.flags & (793056 | 1536)) { + return valueSymbol; + } + var result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.name); + result.declarations = ts.concatenate(valueSymbol.declarations, typeSymbol.declarations); + result.parent = valueSymbol.parent || typeSymbol.parent; + if (valueSymbol.valueDeclaration) + result.valueDeclaration = valueSymbol.valueDeclaration; + if (typeSymbol.members) + result.members = typeSymbol.members; + if (valueSymbol.exports) + result.exports = valueSymbol.exports; + return result; + } + function getExportOfModule(symbol, name) { + if (symbol.flags & 1536) { + var exports = getExportsOfSymbol(symbol); + if (ts.hasProperty(exports, name)) { + return resolveSymbol(exports[name]); + } + } + } + function getPropertyOfVariable(symbol, name) { + if (symbol.flags & 3) { + var typeAnnotation = symbol.valueDeclaration.type; + if (typeAnnotation) { + return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name)); + } + } + } + function getExternalModuleMember(node, specifier) { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + var targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); + if (targetSymbol) { + var name_4 = specifier.propertyName || specifier.name; + if (name_4.text) { + var symbolFromModule = getExportOfModule(targetSymbol, name_4.text); + var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_4.text); + var symbol = symbolFromModule && symbolFromVariable ? + combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : + symbolFromModule || symbolFromVariable; + if (!symbol) { + error(name_4, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_4)); + } + return symbol; + } + } + } + function getTargetOfImportSpecifier(node) { + return getExternalModuleMember(node.parent.parent.parent, node); + } + function getTargetOfExportSpecifier(node) { + return node.parent.parent.moduleSpecifier ? + getExternalModuleMember(node.parent.parent, node) : + resolveEntityName(node.propertyName || node.name, 107455 | 793056 | 1536); + } + function getTargetOfExportAssignment(node) { + return node.expression && resolveEntityName(node.expression, 107455 | 793056 | 1536); + } + function getTargetOfAliasDeclaration(node) { + switch (node.kind) { + case 208: + return getTargetOfImportEqualsDeclaration(node); + case 210: + return getTargetOfImportClause(node); + case 211: + return getTargetOfNamespaceImport(node); + case 213: + return getTargetOfImportSpecifier(node); + case 217: + return getTargetOfExportSpecifier(node); + case 214: + return getTargetOfExportAssignment(node); + } + } + function resolveSymbol(symbol) { + return symbol && symbol.flags & 8388608 && !(symbol.flags & (107455 | 793056 | 1536)) ? resolveAlias(symbol) : symbol; + } + function resolveAlias(symbol) { + ts.Debug.assert((symbol.flags & 8388608) !== 0, "Should only get Alias here."); var links = getSymbolLinks(symbol); if (!links.target) { links.target = resolvingSymbol; - var node = ts.getDeclarationOfKind(symbol, 200); - if (node.moduleReference.kind === 202) { - if (node.moduleReference.expression.kind !== 8) { - grammarErrorOnNode(node.moduleReference.expression, ts.Diagnostics.String_literal_expected); - } - } - var target = node.moduleReference.kind === 202 ? resolveExternalModuleName(node, ts.getExternalModuleImportDeclarationExpression(node)) : getSymbolOfPartOfRightHandSideOfImport(node.moduleReference, node); + var node = getDeclarationOfAliasSymbol(symbol); + var target = getTargetOfAliasDeclaration(node); if (links.target === resolvingSymbol) { links.target = target || unknownSymbol; } @@ -8131,47 +9529,81 @@ var ts; } return links.target; } - function getSymbolOfPartOfRightHandSideOfImport(entityName, importDeclaration) { + function markExportAsReferenced(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target) { + var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) || + (target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target)); + if (markAlias) { + markAliasSymbolAsReferenced(symbol); + } + } + } + function markAliasSymbolAsReferenced(symbol) { + var links = getSymbolLinks(symbol); + if (!links.referenced) { + links.referenced = true; + var node = getDeclarationOfAliasSymbol(symbol); + if (node.kind === 214 && node.expression) { + checkExpressionCached(node.expression); + } + else if (node.kind === 217) { + checkExpressionCached(node.propertyName || node.name); + } + else if (ts.isInternalModuleImportEqualsDeclaration(node)) { + checkExpressionCached(node.moduleReference); + } + } + } + function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 200); + importDeclaration = ts.getAncestor(entityName, 208); ts.Debug.assert(importDeclaration !== undefined); } - if (entityName.kind === 64 && isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (entityName.kind === 65 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (entityName.kind === 64 || entityName.parent.kind === 123) { - return resolveEntityName(importDeclaration, entityName, 1536); + if (entityName.kind === 65 || entityName.parent.kind === 126) { + return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 200); - return resolveEntityName(importDeclaration, entityName, 107455 | 793056 | 1536); + ts.Debug.assert(entityName.parent.kind === 208); + return resolveEntityName(entityName, 107455 | 793056 | 1536); } } function getFullyQualifiedName(symbol) { return symbol.parent ? getFullyQualifiedName(symbol.parent) + "." + symbolToString(symbol) : symbolToString(symbol); } - function resolveEntityName(location, name, meaning) { - if (ts.getFullWidth(name) === 0) { + function resolveEntityName(name, meaning) { + if (ts.nodeIsMissing(name)) { return undefined; } - if (name.kind === 64) { - var symbol = resolveName(location, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); + var symbol; + if (name.kind === 65) { + symbol = resolveName(name, name.text, meaning, ts.Diagnostics.Cannot_find_name_0, name); if (!symbol) { - return; + return undefined; } } - else if (name.kind === 123) { - var namespace = resolveEntityName(location, name.left, 1536); - if (!namespace || namespace === unknownSymbol || ts.getFullWidth(name.right) === 0) - return; - var symbol = getSymbol(namespace.exports, name.right.text, meaning); - if (!symbol) { - error(location, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(name.right)); - return; + else if (name.kind === 126 || name.kind === 155) { + var left = name.kind === 126 ? name.left : name.expression; + var right = name.kind === 126 ? name.right : name.name; + var namespace = resolveEntityName(left, 1536); + if (!namespace || namespace === unknownSymbol || ts.nodeIsMissing(right)) { + return undefined; } + symbol = getSymbol(getExportsOfSymbol(namespace), right.text, meaning); + if (!symbol) { + error(right, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), ts.declarationNameToString(right)); + return undefined; + } + } + else { + ts.Debug.fail("Unknown entity name kind."); } ts.Debug.assert((symbol.flags & 16777216) === 0, "Should never get an instantiated symbol here."); - return symbol.flags & meaning ? symbol : resolveImport(symbol); + return symbol.flags & meaning ? symbol : resolveAlias(symbol); } function isExternalModuleNameRelative(moduleName) { return moduleName.substr(0, 2) === "./" || moduleName.substr(0, 3) === "../" || moduleName.substr(0, 2) === ".\\" || moduleName.substr(0, 3) === "..\\"; @@ -8189,84 +9621,83 @@ var ts; if (!isRelative) { var symbol = getSymbol(globals, '"' + moduleName + '"', 512); if (symbol) { - return getResolvedExportSymbol(symbol); + return symbol; } } + var sourceFile; while (true) { var fileName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - var sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); - if (sourceFile || isRelative) + sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); + if (sourceFile || isRelative) { break; + } var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) + if (parentPath === searchPath) { break; + } searchPath = parentPath; } if (sourceFile) { if (sourceFile.symbol) { - return getResolvedExportSymbol(sourceFile.symbol); + return sourceFile.symbol; } error(moduleReferenceLiteral, ts.Diagnostics.File_0_is_not_an_external_module, sourceFile.fileName); return; } error(moduleReferenceLiteral, ts.Diagnostics.Cannot_find_external_module_0, moduleName); } - function getResolvedExportSymbol(moduleSymbol) { - var symbol = getExportAssignmentSymbol(moduleSymbol); - if (symbol) { - if (symbol.flags & (107455 | 793056 | 1536)) { - return symbol; - } - if (symbol.flags & 8388608) { - return resolveImport(symbol); + function resolveExternalModuleSymbol(moduleSymbol) { + return moduleSymbol && resolveSymbol(moduleSymbol.exports["export="]) || moduleSymbol; + } + function resolveESModuleSymbol(moduleSymbol, moduleReferenceExpression) { + var symbol = resolveExternalModuleSymbol(moduleSymbol); + if (symbol && !(symbol.flags & (1536 | 3))) { + error(moduleReferenceExpression, ts.Diagnostics.External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); + symbol = undefined; + } + return symbol; + } + function getExportAssignmentSymbol(moduleSymbol) { + return moduleSymbol.exports["export="]; + } + function getExportsOfSymbol(symbol) { + return symbol.flags & 1536 ? getExportsOfModule(symbol) : symbol.exports || emptySymbols; + } + function getExportsOfModule(moduleSymbol) { + var links = getSymbolLinks(moduleSymbol); + return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); + } + function extendExportSymbols(target, source) { + for (var id in source) { + if (id !== "default" && !ts.hasProperty(target, id)) { + target[id] = source[id]; } } - return moduleSymbol; } - function getExportAssignmentSymbol(symbol) { - checkTypeOfExportAssignmentSymbol(symbol); - var symbolLinks = getSymbolLinks(symbol); - return symbolLinks.exportAssignSymbol === unknownSymbol ? undefined : symbolLinks.exportAssignSymbol; - } - function checkTypeOfExportAssignmentSymbol(containerSymbol) { - var symbolLinks = getSymbolLinks(containerSymbol); - if (!symbolLinks.exportAssignSymbol) { - var exportInformation = collectExportInformationForSourceFileOrModule(containerSymbol); - if (exportInformation.exportAssignments.length) { - if (exportInformation.exportAssignments.length > 1) { - ts.forEach(exportInformation.exportAssignments, function (node) { return error(node, ts.Diagnostics.A_module_cannot_have_more_than_one_export_assignment); }); + function getExportsForModule(moduleSymbol) { + var result; + var visitedSymbols = []; + visit(moduleSymbol); + return result || moduleSymbol.exports; + function visit(symbol) { + if (symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { + visitedSymbols.push(symbol); + if (symbol !== moduleSymbol) { + if (!result) { + result = cloneSymbolTable(moduleSymbol.exports); + } + extendExportSymbols(result, symbol.exports); } - var node = exportInformation.exportAssignments[0]; - if (exportInformation.hasExportedMember) { - error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); - } - if (node.exportName.text) { - var meaning = 107455 | 793056 | 1536; - var exportSymbol = resolveName(node, node.exportName.text, meaning, ts.Diagnostics.Cannot_find_name_0, node.exportName); + var exportStars = symbol.exports["__export"]; + if (exportStars) { + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + visit(resolveExternalModuleName(node, node.moduleSpecifier)); + } } } - symbolLinks.exportAssignSymbol = exportSymbol || unknownSymbol; } } - function collectExportInformationForSourceFileOrModule(symbol) { - var seenExportedMember = false; - var result = []; - ts.forEach(symbol.declarations, function (declaration) { - var block = (declaration.kind === 210 ? declaration : declaration.body); - ts.forEach(block.statements, function (node) { - if (node.kind === 201) { - result.push(node); - } - else { - seenExportedMember = seenExportedMember || (node.flags & 1) !== 0; - } - }); - }); - return { - hasExportedMember: seenExportedMember, - exportAssignments: result - }; - } function getMergedSymbol(symbol) { var merged; return symbol && symbol.mergeId && (merged = mergedSymbols[symbol.mergeId]) ? merged : symbol; @@ -8278,7 +9709,9 @@ var ts; return getMergedSymbol(symbol.parent); } function getExportSymbolOfValueSymbolIfExported(symbol) { - return symbol && (symbol.flags & 1048576) !== 0 ? getMergedSymbol(symbol.exportSymbol) : symbol; + return symbol && (symbol.flags & 1048576) !== 0 + ? getMergedSymbol(symbol.exportSymbol) + : symbol; } function symbolIsValue(symbol) { if (symbol.flags & 16777216) { @@ -8288,15 +9721,15 @@ var ts; return true; } if (symbol.flags & 8388608) { - return (resolveImport(symbol).flags & 107455) !== 0; + return (resolveAlias(symbol).flags & 107455) !== 0; } return false; } function findConstructorDeclaration(node) { var members = node.members; - for (var i = 0; i < members.length; i++) { - var member = members[i]; - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { + for (var _i = 0; _i < members.length; _i++) { + var member = members[_i]; + if (member.kind === 135 && ts.nodeIsPresent(member.body)) { return member; } } @@ -8354,25 +9787,25 @@ var ts; } function forEachSymbolTableInScope(enclosingDeclaration, callback) { var result; - for (var location = enclosingDeclaration; location; location = location.parent) { - if (location.locals && !isGlobalSourceFile(location)) { - if (result = callback(location.locals)) { + for (var location_1 = enclosingDeclaration; location_1; location_1 = location_1.parent) { + if (location_1.locals && !isGlobalSourceFile(location_1)) { + if (result = callback(location_1.locals)) { return result; } } - switch (location.kind) { - case 210: - if (!ts.isExternalModule(location)) { + switch (location_1.kind) { + case 227: + if (!ts.isExternalModule(location_1)) { break; } - case 198: - if (result = callback(getSymbolOfNode(location).exports)) { + case 205: + if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 194: - case 195: - if (result = callback(getSymbolOfNode(location).members)) { + case 201: + case 202: + if (result = callback(getSymbolOfNode(location_1).members)) { return result; } break; @@ -8402,11 +9835,11 @@ var ts; return [symbol]; } return ts.forEachValue(symbols, function (symbolFromSymbolTable) { - if (symbolFromSymbolTable.flags & 8388608) { + if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=") { if (!useOnlyExternalAliasing || - ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportDeclaration)) { - var resolvedImportedSymbol = resolveImport(symbolFromSymbolTable); - if (isAccessible(symbolFromSymbolTable, resolveImport(symbolFromSymbolTable))) { + ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { + var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); + if (isAccessible(symbolFromSymbolTable, resolveAlias(symbolFromSymbolTable))) { return [symbolFromSymbolTable]; } var accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; @@ -8431,7 +9864,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveImport(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -8486,8 +9919,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 198 && declaration.name.kind === 8) || - (declaration.kind === 210 && ts.isExternalModule(declaration)); + return (declaration.kind === 205 && declaration.name.kind === 8) || + (declaration.kind === 227 && ts.isExternalModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -8497,17 +9930,18 @@ var ts; return { accessibility: 0, aliasesToMakeVisible: aliasesToMakeVisible }; function getIsDeclarationVisible(declaration) { if (!isDeclarationVisible(declaration)) { - if (declaration.kind === 200 && - !(declaration.flags & 1) && - isDeclarationVisible(declaration.parent)) { + var anyImportSyntax = getAnyImportSyntax(declaration); + if (anyImportSyntax && + !(anyImportSyntax.flags & 1) && + isDeclarationVisible(anyImportSyntax.parent)) { getNodeLinks(declaration).isVisible = true; if (aliasesToMakeVisible) { - if (!ts.contains(aliasesToMakeVisible, declaration)) { - aliasesToMakeVisible.push(declaration); + if (!ts.contains(aliasesToMakeVisible, anyImportSyntax)) { + aliasesToMakeVisible.push(anyImportSyntax); } } else { - aliasesToMakeVisible = [declaration]; + aliasesToMakeVisible = [anyImportSyntax]; } return true; } @@ -8518,11 +9952,11 @@ var ts; } function isEntityNameVisible(entityName, enclosingDeclaration) { var meaning; - if (entityName.parent.kind === 140) { + if (entityName.parent.kind === 144) { meaning = 107455 | 1048576; } - else if (entityName.kind === 123 || - entityName.parent.kind === 200) { + else if (entityName.kind === 126 || entityName.kind === 155 || + entityName.parent.kind === 208) { meaning = 1536; } else { @@ -8566,10 +10000,10 @@ var ts; function getTypeAliasForTypeLiteral(type) { if (type.symbol && type.symbol.flags & 2048) { var node = type.symbol.declarations[0].parent; - while (node.kind === 145) { + while (node.kind === 149) { node = node.parent; } - if (node.kind === 196) { + if (node.kind === 203) { return getSymbolOfNode(node); } } @@ -8613,8 +10047,9 @@ var ts; walkSymbol(getParentOfSymbol(accessibleSymbolChain ? accessibleSymbolChain[0] : symbol), getQualifiedLeftMeaning(meaning)); } if (accessibleSymbolChain) { - for (var i = 0, n = accessibleSymbolChain.length; i < n; i++) { - appendParentTypeArgumentsAndSymbolName(accessibleSymbolChain[i]); + for (var _i = 0; _i < accessibleSymbolChain.length; _i++) { + var accessibleSymbol = accessibleSymbolChain[_i]; + appendParentTypeArgumentsAndSymbolName(accessibleSymbol); } } else { @@ -8722,7 +10157,7 @@ var ts; buildSymbolDisplay(typeAlias, writer, enclosingDeclaration, 793056, 0, flags); } else { - writeKeyword(writer, 110); + writeKeyword(writer, 112); } } else { @@ -8740,7 +10175,7 @@ var ts; var isNonLocalFunctionSymbol = !!(type.symbol.flags & 16) && (type.symbol.parent || ts.forEach(type.symbol.declarations, function (declaration) { - return declaration.parent.kind === 210 || declaration.parent.kind === 199; + return declaration.parent.kind === 227 || declaration.parent.kind === 206; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -8750,7 +10185,7 @@ var ts; } } function writeTypeofSymbol(type, typeFormatFlags) { - writeKeyword(writer, 96); + writeKeyword(writer, 97); writeSpace(writer); buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, 107455, 0, typeFormatFlags); } @@ -8784,7 +10219,7 @@ var ts; if (flags & 64) { writePunctuation(writer, 16); } - writeKeyword(writer, 87); + writeKeyword(writer, 88); writeSpace(writer); buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, typeStack); if (flags & 64) { @@ -8796,15 +10231,17 @@ var ts; writePunctuation(writer, 14); writer.writeLine(); writer.increaseIndent(); - for (var i = 0; i < resolved.callSignatures.length; i++) { - buildSignatureDisplay(resolved.callSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { + var signature = _a[_i]; + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.constructSignatures.length; i++) { - writeKeyword(writer, 87); + for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { + var signature = _c[_b]; + writeKeyword(writer, 88); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8813,7 +10250,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 0, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 119); + writeKeyword(writer, 121); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8826,7 +10263,7 @@ var ts; writer.writeParameter(getIndexerParameterName(resolved, 1, "x")); writePunctuation(writer, 51); writeSpace(writer); - writeKeyword(writer, 117); + writeKeyword(writer, 119); writePunctuation(writer, 19); writePunctuation(writer, 51); writeSpace(writer); @@ -8834,17 +10271,18 @@ var ts; writePunctuation(writer, 22); writer.writeLine(); } - for (var i = 0; i < resolved.properties.length; i++) { - var p = resolved.properties[i]; + for (var _d = 0, _e = resolved.properties; _d < _e.length; _d++) { + var p = _e[_d]; var t = getTypeOfSymbol(p); if (p.flags & (16 | 8192) && !getPropertiesOfObjectType(t).length) { var signatures = getSignaturesOfType(t, 0); - for (var j = 0; j < signatures.length; j++) { + for (var _f = 0; _f < signatures.length; _f++) { + var signature = signatures[_f]; buildSymbolDisplay(p, writer); if (p.flags & 536870912) { writePunctuation(writer, 50); } - buildSignatureDisplay(signatures[j], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, 22); writer.writeLine(); } @@ -8876,7 +10314,7 @@ var ts; var constraint = getConstraintOfTypeParameter(tp); if (constraint) { writeSpace(writer); - writeKeyword(writer, 78); + writeKeyword(writer, 79); writeSpace(writer); buildTypeDisplay(constraint, writer, enclosingDeclaration, flags, typeStack); } @@ -8969,12 +10407,12 @@ var ts; function isDeclarationVisible(node) { function getContainingExternalModule(node) { for (; node; node = node.parent) { - if (node.kind === 198) { + if (node.kind === 205) { if (node.name.kind === 8) { return node; } } - else if (node.kind === 210) { + else if (node.kind === 227) { return ts.isExternalModule(node) ? node : undefined; } } @@ -8982,16 +10420,17 @@ var ts; } function isUsedInExportAssignment(node) { var externalModule = getContainingExternalModule(node); + var exportAssignmentSymbol; + var resolvedExportSymbol; if (externalModule) { var externalModuleSymbol = getSymbolOfNode(externalModule); - var exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var resolvedExportSymbol; + exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); var symbolOfNode = getSymbolOfNode(node); if (isSymbolUsedInExportAssignment(symbolOfNode)) { return true; } if (symbolOfNode.flags & 8388608) { - return isSymbolUsedInExportAssignment(resolveImport(symbolOfNode)); + return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); } } function isSymbolUsedInExportAssignment(symbol) { @@ -8999,7 +10438,7 @@ var ts; return true; } if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { - resolvedExportSymbol = resolvedExportSymbol || resolveImport(exportAssignmentSymbol); + resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); if (resolvedExportSymbol === symbol) { return true; } @@ -9016,48 +10455,59 @@ var ts; } function determineIfDeclarationIsVisible() { switch (node.kind) { - case 191: - case 148: + case 152: + return isDeclarationVisible(node.parent.parent); case 198: - case 194: - case 195: - case 196: - case 193: - case 197: - case 200: - var parent = getDeclarationContainer(node); - if (!(ts.getCombinedNodeFlags(node) & 1) && - !(node.kind !== 200 && parent.kind !== 210 && ts.isInAmbientContext(parent))) { - return isGlobalSourceFile(parent) || isUsedInExportAssignment(node); + if (ts.isBindingPattern(node.name) && + !node.name.elements.length) { + return false; } - return isDeclarationVisible(parent); - case 128: - case 127: + case 205: + case 201: + case 202: + case 203: + case 200: + case 204: + case 208: + var parent_2 = getDeclarationContainer(node); + if (!(ts.getCombinedNodeFlags(node) & 1) && + !(node.kind !== 208 && parent_2.kind !== 227 && ts.isInAmbientContext(parent_2))) { + return isGlobalSourceFile(parent_2); + } + return isDeclarationVisible(parent_2); case 132: + case 131: + case 136: + case 137: + case 134: case 133: - case 130: - case 129: if (node.flags & (32 | 64)) { return false; } - case 131: case 135: - case 134: - case 136: - case 126: - case 199: - case 138: case 139: - case 141: - case 137: + case 138: + case 140: + case 129: + case 206: case 142: case 143: - case 144: case 145: + case 141: + case 146: + case 147: + case 148: + case 149: return isDeclarationVisible(node.parent); - case 125: case 210: + case 211: + case 213: + return false; + case 128: + case 227: return true; + case 214: + return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } @@ -9070,15 +10520,44 @@ var ts; return links.isVisible; } } + function collectLinkedAliases(node) { + var exportSymbol; + if (node.parent && node.parent.kind === 214) { + exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, node); + } + else if (node.parent.kind === 217) { + exportSymbol = getTargetOfExportSpecifier(node.parent); + } + var result = []; + if (exportSymbol) { + buildVisibleNodeList(exportSymbol.declarations); + } + return result; + function buildVisibleNodeList(declarations) { + ts.forEach(declarations, function (declaration) { + getNodeLinks(declaration).isVisible = true; + var resultNode = getAnyImportSyntax(declaration) || declaration; + if (!ts.contains(result, resultNode)) { + result.push(resultNode); + } + if (ts.isInternalModuleImportEqualsDeclaration(declaration)) { + var internalModuleReference = declaration.moduleReference; + var firstIdentifier = getFirstIdentifier(internalModuleReference); + var importSymbol = resolveName(declaration, firstIdentifier.text, 107455 | 793056 | 1536, ts.Diagnostics.Cannot_find_name_0, firstIdentifier); + buildVisibleNodeList(importSymbol.declarations); + } + }); + } + } function getRootDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } return node; } function getDeclarationContainer(node) { node = getRootDeclaration(node); - return node.kind === 191 ? node.parent.parent.parent : node.parent; + return node.kind === 198 ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { var classType = getDeclaredTypeOfSymbol(prototype.parent); @@ -9100,13 +10579,14 @@ var ts; } return parentType; } - if (pattern.kind === 146) { - var name = declaration.propertyName || declaration.name; - var type = getTypeOfPropertyOfType(parentType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, 1) || + var type; + if (pattern.kind === 150) { + var name_5 = declaration.propertyName || declaration.name; + type = getTypeOfPropertyOfType(parentType, name_5.text) || + isNumericLiteralName(name_5.text) && getIndexTypeOfType(parentType, 1) || getIndexTypeOfType(parentType, 0); if (!type) { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name)); + error(name_5, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_5)); return unknownType; } } @@ -9117,32 +10597,40 @@ var ts; } if (!declaration.dotDotDotToken) { var propName = "" + ts.indexOf(pattern.elements, declaration); - var type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); + type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, 1); if (!type) { - error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + if (isTupleType(parentType)) { + error(declaration, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(parentType), parentType.elementTypes.length, pattern.elements.length); + } + else { + error(declaration, ts.Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + } return unknownType; } } else { - var type = createArrayType(getIndexTypeOfType(parentType, 1)); + type = createArrayType(getIndexTypeOfType(parentType, 1)); } } return type; } function getTypeForVariableLikeDeclaration(declaration) { - if (declaration.parent.parent.kind === 180) { + if (declaration.parent.parent.kind === 187) { return anyType; } + if (declaration.parent.parent.kind === 188) { + return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; + } if (ts.isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var func = declaration.parent; - if (func.kind === 133 && !ts.hasDynamicName(func)) { - var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 132); + if (func.kind === 137 && !ts.hasDynamicName(func)) { + var getter = ts.getDeclarationOfKind(declaration.parent.symbol, 136); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } @@ -9155,7 +10643,7 @@ var ts; if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 208) { + if (declaration.kind === 225) { return checkIdentifier(declaration.name); } return undefined; @@ -9184,7 +10672,7 @@ var ts; var hasSpreadElement = false; var elementTypes = []; ts.forEach(pattern.elements, function (e) { - elementTypes.push(e.kind === 170 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); + elementTypes.push(e.kind === 175 || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); if (e.dotDotDotToken) { hasSpreadElement = true; } @@ -9192,7 +10680,9 @@ var ts; return !elementTypes.length ? anyArrayType : hasSpreadElement ? createArrayType(getUnionType(elementTypes)) : createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern) { - return pattern.kind === 146 ? getTypeFromObjectBindingPattern(pattern) : getTypeFromArrayBindingPattern(pattern); + return pattern.kind === 150 + ? getTypeFromObjectBindingPattern(pattern) + : getTypeFromArrayBindingPattern(pattern); } function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) { var type = getTypeForVariableLikeDeclaration(declaration); @@ -9200,7 +10690,7 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - return declaration.kind !== 207 ? getWidenedType(type) : type; + return declaration.kind !== 224 ? getWidenedType(type) : type; } if (ts.isBindingPattern(declaration.name)) { return getTypeFromBindingPattern(declaration.name); @@ -9208,7 +10698,7 @@ var ts; type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { var root = getRootDeclaration(declaration); - if (!isPrivateWithinAmbient(root) && !(root.kind === 126 && isPrivateWithinAmbient(root.parent))) { + if (!isPrivateWithinAmbient(root) && !(root.kind === 129 && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } } @@ -9221,9 +10711,21 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.kind === 206) { + if (declaration.parent.kind === 223) { return links.type = anyType; } + if (declaration.kind === 214) { + var exportAssignment = declaration; + if (exportAssignment.expression) { + return links.type = checkExpression(exportAssignment.expression); + } + else if (exportAssignment.type) { + return links.type = getTypeFromTypeNodeOrHeritageClauseElement(exportAssignment.type); + } + else { + return links.type = anyType; + } + } links.type = resolvingType; var type = getWidenedTypeForVariableLikeDeclaration(declaration, true); if (links.type === resolvingType) { @@ -9233,7 +10735,9 @@ var ts; else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var diagnostic = symbol.valueDeclaration.type ? ts.Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : ts.Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; + var diagnostic = symbol.valueDeclaration.type ? + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : + ts.Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; error(symbol.valueDeclaration, diagnostic, symbolToString(symbol)); } } @@ -9244,12 +10748,12 @@ var ts; } function getAnnotatedAccessorType(accessor) { if (accessor) { - if (accessor.kind === 132) { - return accessor.type && getTypeFromTypeNode(accessor.type); + if (accessor.kind === 136) { + return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement(accessor.type); } else { var setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement(setterTypeAnnotation); } } return undefined; @@ -9263,8 +10767,8 @@ var ts; links = links || getSymbolLinks(symbol); if (!links.type) { links.type = resolvingType; - var getter = ts.getDeclarationOfKind(symbol, 132); - var setter = ts.getDeclarationOfKind(symbol, 133); + var getter = ts.getDeclarationOfKind(symbol, 136); + var setter = ts.getDeclarationOfKind(symbol, 137); var type; var getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { @@ -9294,7 +10798,7 @@ var ts; else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var getter = ts.getDeclarationOfKind(symbol, 132); + var getter = ts.getDeclarationOfKind(symbol, 136); error(getter, ts.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } @@ -9313,10 +10817,10 @@ var ts; } return links.type; } - function getTypeOfImport(symbol) { + function getTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.type) { - links.type = getTypeOfSymbol(resolveImport(symbol)); + links.type = getTypeOfSymbol(resolveAlias(symbol)); } return links.type; } @@ -9344,7 +10848,7 @@ var ts; return getTypeOfAccessors(symbol); } if (symbol.flags & 8388608) { - return getTypeOfImport(symbol); + return getTypeOfAlias(symbol); } return unknownType; } @@ -9361,7 +10865,7 @@ var ts; function getTypeParametersOfClassOrInterface(symbol) { var result; ts.forEach(symbol.declarations, function (node) { - if (node.kind === 195 || node.kind === 194) { + if (node.kind === 202 || node.kind === 201) { var declaration = node; if (declaration.typeParameters && declaration.typeParameters.length) { ts.forEach(declaration.typeParameters, function (node) { @@ -9392,10 +10896,10 @@ var ts; type.typeArguments = type.typeParameters; } type.baseTypes = []; - var declaration = ts.getDeclarationOfKind(symbol, 194); - var baseTypeNode = ts.getClassBaseTypeNode(declaration); + var declaration = ts.getDeclarationOfKind(symbol, 201); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(declaration); if (baseTypeNode) { - var baseType = getTypeFromTypeReferenceNode(baseTypeNode); + var baseType = getTypeFromHeritageClauseElement(baseTypeNode); if (baseType !== unknownType) { if (getTargetType(baseType).flags & 1024) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -9433,9 +10937,9 @@ var ts; } type.baseTypes = []; ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 195 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 202 && ts.getInterfaceBaseTypeNodes(declaration)) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), function (node) { - var baseType = getTypeFromTypeReferenceNode(node); + var baseType = getTypeFromHeritageClauseElement(node); if (baseType !== unknownType) { if (getTargetType(baseType).flags & (1024 | 2048)) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -9464,15 +10968,15 @@ var ts; var links = getSymbolLinks(symbol); if (!links.declaredType) { links.declaredType = resolvingType; - var declaration = ts.getDeclarationOfKind(symbol, 196); - var type = getTypeFromTypeNode(declaration.type); + var declaration = ts.getDeclarationOfKind(symbol, 203); + var type = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); if (links.declaredType === resolvingType) { links.declaredType = type; } } else if (links.declaredType === resolvingType) { links.declaredType = unknownType; - var declaration = ts.getDeclarationOfKind(symbol, 196); + var declaration = ts.getDeclarationOfKind(symbol, 203); error(declaration.name, ts.Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); } return links.declaredType; @@ -9491,17 +10995,17 @@ var ts; if (!links.declaredType) { var type = createType(512); type.symbol = symbol; - if (!ts.getDeclarationOfKind(symbol, 125).constraint) { + if (!ts.getDeclarationOfKind(symbol, 128).constraint) { type.constraint = noConstraintType; } links.declaredType = type; } return links.declaredType; } - function getDeclaredTypeOfImport(symbol) { + function getDeclaredTypeOfAlias(symbol) { var links = getSymbolLinks(symbol); if (!links.declaredType) { - links.declaredType = getDeclaredTypeOfSymbol(resolveImport(symbol)); + links.declaredType = getDeclaredTypeOfSymbol(resolveAlias(symbol)); } return links.declaredType; } @@ -9523,29 +11027,29 @@ var ts; return getDeclaredTypeOfTypeParameter(symbol); } if (symbol.flags & 8388608) { - return getDeclaredTypeOfImport(symbol); + return getDeclaredTypeOfAlias(symbol); } return unknownType; } function createSymbolTable(symbols) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = symbol; } return result; } function createInstantiatedSymbolTable(symbols, mapper) { var result = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; result[symbol.name] = instantiateSymbol(symbol, mapper); } return result; } function addInheritedMembers(symbols, baseSymbols) { - for (var i = 0; i < baseSymbols.length; i++) { - var s = baseSymbols[i]; + for (var _i = 0; _i < baseSymbols.length; _i++) { + var s = baseSymbols[_i]; if (!ts.hasProperty(symbols, s.name)) { symbols[s.name] = s; } @@ -9553,8 +11057,9 @@ var ts; } function addInheritedSignatures(signatures, baseSignatures) { if (baseSignatures) { - for (var i = 0; i < baseSignatures.length; i++) { - signatures.push(baseSignatures[i]); + for (var _i = 0; _i < baseSignatures.length; _i++) { + var signature = baseSignatures[_i]; + signatures.push(signature); } } } @@ -9613,7 +11118,8 @@ var ts; var baseType = classType.baseTypes[0]; var baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), 1); return ts.map(baseSignatures, function (baseSignature) { - var signature = baseType.flags & 4096 ? getSignatureInstantiation(baseSignature, baseType.typeArguments) : cloneSignature(baseSignature); + var signature = baseType.flags & 4096 ? + getSignatureInstantiation(baseSignature, baseType.typeArguments) : cloneSignature(baseSignature); signature.typeParameters = classType.typeParameters; signature.resolvedReturnType = classType; return signature; @@ -9650,13 +11156,14 @@ var ts; function getUnionSignatures(types, kind) { var signatureLists = ts.map(types, function (t) { return getSignaturesOfType(t, kind); }); var signatures = signatureLists[0]; - for (var i = 0; i < signatures.length; i++) { - if (signatures[i].typeParameters) { + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; + if (signature.typeParameters) { return emptyArray; } } - for (var i = 1; i < signatureLists.length; i++) { - if (!signatureListsIdentical(signatures, signatureLists[i])) { + for (var i_1 = 1; i_1 < signatureLists.length; i_1++) { + if (!signatureListsIdentical(signatures, signatureLists[i_1])) { return emptyArray; } } @@ -9670,8 +11177,9 @@ var ts; } function getUnionIndexType(types, kind) { var indexTypes = []; - for (var i = 0; i < types.length; i++) { - var indexType = getIndexTypeOfType(types[i], kind); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + var indexType = getIndexTypeOfType(type, kind); if (!indexType) { return undefined; } @@ -9688,19 +11196,24 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; + var members; + var callSignatures; + var constructSignatures; + var stringIndexType; + var numberIndexType; if (symbol.flags & 2048) { - var members = symbol.members; - var callSignatures = getSignaturesOfSymbol(members["__call"]); - var constructSignatures = getSignaturesOfSymbol(members["__new"]); - var stringIndexType = getIndexTypeOfSymbol(symbol, 0); - var numberIndexType = getIndexTypeOfSymbol(symbol, 1); + members = symbol.members; + callSignatures = getSignaturesOfSymbol(members["__call"]); + constructSignatures = getSignaturesOfSymbol(members["__new"]); + stringIndexType = getIndexTypeOfSymbol(symbol, 0); + numberIndexType = getIndexTypeOfSymbol(symbol, 1); } else { - var members = emptySymbols; - var callSignatures = emptyArray; - var constructSignatures = emptyArray; + members = emptySymbols; + callSignatures = emptyArray; + constructSignatures = emptyArray; if (symbol.flags & 1952) { - members = symbol.exports; + members = getExportsOfSymbol(symbol); } if (symbol.flags & (16 | 8192)) { callSignatures = getSignaturesOfSymbol(symbol); @@ -9716,8 +11229,8 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(classType.baseTypes[0].symbol))); } } - var stringIndexType = undefined; - var numberIndexType = (symbol.flags & 384) ? stringType : undefined; + stringIndexType = undefined; + numberIndexType = (symbol.flags & 384) ? stringType : undefined; } setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } @@ -9800,8 +11313,9 @@ var ts; function createUnionProperty(unionType, name) { var types = unionType.types; var props; - for (var i = 0; i < types.length; i++) { - var type = getApparentType(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (!prop) { @@ -9817,8 +11331,8 @@ var ts; } var propTypes = []; var declarations = []; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; + for (var _a = 0; _a < props.length; _a++) { + var prop = props[_a]; if (prop.declarations) { declarations.push.apply(declarations, prop.declarations); } @@ -9894,11 +11408,31 @@ var ts; }); return result; } + function symbolsToArray(symbols) { + var result = []; + for (var id in symbols) { + if (!isReservedMemberName(id)) { + result.push(symbols[id]); + } + } + return result; + } + function getExportsOfExternalModule(node) { + if (!node.moduleSpecifier) { + return emptyArray; + } + var module = resolveExternalModuleName(node, node.moduleSpecifier); + if (!module) { + return emptyArray; + } + return symbolsToArray(getExportsOfModule(module)); + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === 131 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; - var typeParameters = classType ? classType.typeParameters : declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; + var classType = declaration.kind === 135 ? getDeclaredTypeOfClass(declaration.parent.symbol) : undefined; + var typeParameters = classType ? classType.typeParameters : + declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; var parameters = []; var hasStringLiterals = false; var minArgumentCount = -1; @@ -9922,11 +11456,11 @@ var ts; returnType = classType; } else if (declaration.type) { - returnType = getTypeFromTypeNode(declaration.type); + returnType = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } else { - if (declaration.kind === 132 && !ts.hasDynamicName(declaration)) { - var setter = ts.getDeclarationOfKind(declaration.symbol, 133); + if (declaration.kind === 136 && !ts.hasDynamicName(declaration)) { + var setter = ts.getDeclarationOfKind(declaration.symbol, 137); returnType = getAnnotatedAccessorType(setter); } if (!returnType && ts.nodeIsMissing(declaration.body)) { @@ -9944,19 +11478,19 @@ var ts; for (var i = 0, len = symbol.declarations.length; i < len; i++) { var node = symbol.declarations[i]; switch (node.kind) { + case 142: + case 143: + case 200: + case 134: + case 133: + case 135: case 138: case 139: - case 193: - case 130: - case 129: - case 131: - case 134: - case 135: + case 140: case 136: - case 132: - case 133: - case 158: - case 159: + case 137: + case 162: + case 163: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -9971,14 +11505,15 @@ var ts; function getReturnTypeOfSignature(signature) { if (!signature.resolvedReturnType) { signature.resolvedReturnType = resolvingType; + var type; if (signature.target) { - var type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); + type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } else if (signature.unionSignatures) { - var type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); + type = getUnionType(ts.map(signature.unionSignatures, getReturnTypeOfSignature)); } else { - var type = getReturnTypeFromBody(signature.declaration); + type = getReturnTypeFromBody(signature.declaration); } if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = type; @@ -10025,7 +11560,7 @@ var ts; } function getOrCreateTypeFromSignature(signature) { if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === 131 || signature.declaration.kind === 135; + var isConstructor = signature.declaration.kind === 135 || signature.declaration.kind === 139; var type = createObjectType(32768 | 65536); type.members = emptySymbols; type.properties = emptyArray; @@ -10039,12 +11574,13 @@ var ts; return symbol.members["__index"]; } function getIndexDeclarationOfSymbol(symbol, kind) { - var syntaxKind = kind === 1 ? 117 : 119; + var syntaxKind = kind === 1 ? 119 : 121; var indexSymbol = getIndexSymbol(symbol); if (indexSymbol) { var len = indexSymbol.declarations.length; - for (var i = 0; i < len; i++) { - var node = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var node = decl; if (node.parameters.length === 1) { var parameter = node.parameters[0]; if (parameter && parameter.type && parameter.type.kind === syntaxKind) { @@ -10057,7 +11593,9 @@ var ts; } function getIndexTypeOfSymbol(symbol, kind) { var declaration = getIndexDeclarationOfSymbol(symbol, kind); - return declaration ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; + return declaration + ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement(declaration.type) : anyType + : undefined; } function getConstraintOfTypeParameter(type) { if (!type.constraint) { @@ -10066,7 +11604,7 @@ var ts; type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 125).constraint); + type.constraint = getTypeFromTypeNodeOrHeritageClauseElement(ts.getDeclarationOfKind(type.symbol, 128).constraint); } } return type.constraint === noConstraintType ? undefined : type.constraint; @@ -10080,8 +11618,9 @@ var ts; default: var result = ""; for (var i = 0; i < types.length; i++) { - if (i > 0) + if (i > 0) { result += ","; + } result += types[i].id; } return result; @@ -10089,8 +11628,9 @@ var ts; } function getWideningFlagsOfTypes(types) { var result = 0; - for (var i = 0; i < types.length; i++) { - result |= types[i].flags; + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + result |= type.flags; } return result & 786432; } @@ -10114,13 +11654,13 @@ var ts; while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { currentNode = currentNode.parent; } - links.isIllegalTypeReferenceInConstraint = currentNode.kind === 125; + links.isIllegalTypeReferenceInConstraint = currentNode.kind === 128; return links.isIllegalTypeReferenceInConstraint; } function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { var typeParameterSymbol; function check(n) { - if (n.kind === 137 && n.typeName.kind === 64) { + if (n.kind === 141 && n.typeName.kind === 65) { var links = getNodeLinks(n); if (links.isIllegalTypeReferenceInConstraint === undefined) { var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); @@ -10139,31 +11679,42 @@ var ts; check(typeParameter.constraint); } } - function getTypeFromTypeReferenceNode(node) { + function getTypeFromTypeReference(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromHeritageClauseElement(node) { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + function getTypeFromTypeReferenceOrHeritageClauseElement(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - var symbol = resolveEntityName(node, node.typeName, 793056); - if (symbol) { - var type; - if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - type = unknownType; - } - else { - type = getDeclaredTypeOfSymbol(symbol); - if (type.flags & (1024 | 2048) && type.flags & 4096) { - var typeParameters = type.typeParameters; - if (node.typeArguments && node.typeArguments.length === typeParameters.length) { - type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNode)); - } - else { - error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); - type = undefined; - } + var type; + if (node.kind !== 177 || ts.isSupportedHeritageClauseElement(node)) { + var typeNameOrExpression = node.kind === 141 + ? node.typeName + : node.expression; + var symbol = resolveEntityName(typeNameOrExpression, 793056); + if (symbol) { + if ((symbol.flags & 262144) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { + type = unknownType; } else { - if (node.typeArguments) { - error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); - type = undefined; + type = getDeclaredTypeOfSymbol(symbol); + if (type.flags & (1024 | 2048) && type.flags & 4096) { + var typeParameters = type.typeParameters; + if (node.typeArguments && node.typeArguments.length === typeParameters.length) { + type = createTypeReference(type, ts.map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement)); + } + else { + error(node, ts.Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, undefined, 1), typeParameters.length); + type = undefined; + } + } + else { + if (node.typeArguments) { + error(node, ts.Diagnostics.Type_0_is_not_generic, typeToString(type)); + type = undefined; + } } } } @@ -10182,12 +11733,12 @@ var ts; function getTypeOfGlobalSymbol(symbol, arity) { function getTypeDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; switch (declaration.kind) { - case 194: - case 195: - case 197: + case 201: + case 202: + case 204: return declaration; } } @@ -10215,8 +11766,9 @@ var ts; function getGlobalSymbol(name, meaning, diagnostic) { return resolveName(undefined, name, meaning, diagnostic, name); } - function getGlobalType(name) { - return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), 0); + function getGlobalType(name, arity) { + if (arity === void 0) { arity = 0; } + return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } function getGlobalESSymbolConstructorSymbol() { return globalESSymbolConstructorSymbol || (globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol")); @@ -10228,7 +11780,7 @@ var ts; function getTypeFromArrayTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createArrayType(getTypeFromTypeNode(node.elementType)); + links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement(node.elementType)); } return links.resolvedType; } @@ -10244,7 +11796,7 @@ var ts; function getTypeFromTupleTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNode)); + links.resolvedType = createTupleType(ts.map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement)); } return links.resolvedType; } @@ -10264,13 +11816,15 @@ var ts; } } function addTypesToSortedSet(sortedTypes, types) { - for (var i = 0, len = types.length; i < len; i++) { - addTypeToSortedSet(sortedTypes, types[i]); + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + addTypeToSortedSet(sortedTypes, type); } } function isSubtypeOfAny(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && isTypeSubtypeOf(candidate, types[i])) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && isTypeSubtypeOf(candidate, type)) { return true; } } @@ -10286,8 +11840,9 @@ var ts; } } function containsAnyType(types) { - for (var i = 0; i < types.length; i++) { - if (types[i].flags & 1) { + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (type.flags & 1) { return true; } } @@ -10332,7 +11887,7 @@ var ts; function getTypeFromUnionTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNode), true); + links.resolvedType = getUnionType(ts.map(node.types, getTypeFromTypeNodeOrHeritageClauseElement), true); } return links.resolvedType; } @@ -10358,40 +11913,42 @@ var ts; } return links.resolvedType; } - function getTypeFromTypeNode(node) { + function getTypeFromTypeNodeOrHeritageClauseElement(node) { switch (node.kind) { - case 110: + case 112: return anyType; - case 119: + case 121: return stringType; - case 117: + case 119: return numberType; - case 111: + case 113: return booleanType; - case 120: + case 122: return esSymbolType; - case 98: + case 99: return voidType; case 8: return getTypeFromStringLiteral(node); - case 137: - return getTypeFromTypeReferenceNode(node); - case 140: - return getTypeFromTypeQueryNode(node); - case 142: - return getTypeFromArrayTypeNode(node); - case 143: - return getTypeFromTupleTypeNode(node); - case 144: - return getTypeFromUnionTypeNode(node); - case 145: - return getTypeFromTypeNode(node.type); - case 138: - case 139: case 141: + return getTypeFromTypeReference(node); + case 177: + return getTypeFromHeritageClauseElement(node); + case 144: + return getTypeFromTypeQueryNode(node); + case 146: + return getTypeFromArrayTypeNode(node); + case 147: + return getTypeFromTupleTypeNode(node); + case 148: + return getTypeFromUnionTypeNode(node); + case 149: + return getTypeFromTypeNodeOrHeritageClauseElement(node.type); + case 142: + case 143: + case 145: return getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); - case 64: - case 123: + case 65: + case 126: var symbol = getSymbolInfo(node); return symbol && getDeclaredTypeOfSymbol(symbol); default: @@ -10401,8 +11958,9 @@ var ts; function instantiateList(items, mapper, instantiator) { if (items && items.length) { var result = []; - for (var i = 0; i < items.length; i++) { - result.push(instantiator(items[i], mapper)); + for (var _i = 0; _i < items.length; _i++) { + var v = items[_i]; + result.push(instantiator(v, mapper)); } return result; } @@ -10421,8 +11979,9 @@ var ts; } return function (t) { for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + if (t === sources[i]) { return targets[i]; + } } return t; }; @@ -10439,9 +11998,11 @@ var ts; case 2: return createBinaryTypeEraser(sources[0], sources[1]); } return function (t) { - for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) + for (var _i = 0; _i < sources.length; _i++) { + var source = sources[_i]; + if (t === source) { return anyType; + } } return t; }; @@ -10450,6 +12011,7 @@ var ts; return function (t) { for (var i = 0; i < context.typeParameters.length; i++) { if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; return getInferredType(context, i); } } @@ -10475,8 +12037,9 @@ var ts; return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { + var freshTypeParameters; if (signature.typeParameters && !eraseTypeParameters) { - var freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); } var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), signature.resolvedReturnType ? instantiateType(signature.resolvedReturnType, mapper) : undefined, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); @@ -10520,7 +12083,8 @@ var ts; return mapper(type); } if (type.flags & 32768) { - return type.symbol && type.symbol.flags & (16 | 8192 | 2048 | 4096) ? instantiateAnonymousType(type, mapper) : type; + return type.symbol && type.symbol.flags & (16 | 8192 | 2048 | 4096) ? + instantiateAnonymousType(type, mapper) : type; } if (type.flags & 4096) { return createTypeReference(type.target, instantiateList(type.typeArguments, mapper, instantiateType)); @@ -10535,27 +12099,27 @@ var ts; return type; } function isContextSensitive(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 158: - case 159: + case 162: + case 163: return isContextSensitiveFunctionLikeDeclaration(node); - case 150: + case 154: return ts.forEach(node.properties, isContextSensitive); - case 149: + case 153: return ts.forEach(node.elements, isContextSensitive); - case 166: + case 170: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 165: + case 169: return node.operatorToken.kind === 49 && - (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 207: + (isContextSensitive(node.left) || isContextSensitive(node.right)); + case 224: return isContextSensitive(node.initializer); - case 130: - case 129: + case 134: + case 133: return isContextSensitiveFunctionLikeDeclaration(node); - case 157: + case 161: return isContextSensitive(node.expression); } return false; @@ -10611,6 +12175,7 @@ var ts; var expandingFlags; var depth = 0; var overflow = false; + var elaborateErrors = false; ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking"); var result = isRelatedTo(source, target, errorNode !== undefined, headMessage); if (overflow) { @@ -10619,7 +12184,8 @@ var ts; else if (errorInfo) { if (errorInfo.next === undefined) { errorInfo = undefined; - isRelatedTo(source, target, errorNode !== undefined, headMessage, true); + elaborateErrors = true; + isRelatedTo(source, target, errorNode !== undefined, headMessage); } if (containingMessageChain) { errorInfo = ts.concatenateDiagnosticMessageChains(containingMessageChain, errorInfo); @@ -10630,8 +12196,7 @@ var ts; function reportError(message, arg0, arg1, arg2) { errorInfo = ts.chainDiagnosticMessages(errorInfo, message, arg0, arg1, arg2); } - function isRelatedTo(source, target, reportErrors, headMessage, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function isRelatedTo(source, target, reportErrors, headMessage) { var result; if (source === target) return -1; @@ -10701,7 +12266,7 @@ var ts; var reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; var sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); if (sourceOrApparentType.flags & 48128 && target.flags & 48128 && - (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors, elaborateErrors))) { + (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors))) { errorInfo = saveErrorInfo; return result; } @@ -10721,8 +12286,9 @@ var ts; function unionTypeRelatedToUnionType(source, target) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = typeRelatedToUnionType(sourceTypes[i], target, false); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = typeRelatedToUnionType(sourceType, target, false); if (!related) { return 0; } @@ -10743,8 +12309,9 @@ var ts; function unionTypeRelatedToType(source, target, reportErrors) { var result = -1; var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = isRelatedTo(sourceTypes[i], target, reportErrors); + for (var _i = 0; _i < sourceTypes.length; _i++) { + var sourceType = sourceTypes[_i]; + var related = isRelatedTo(sourceType, target, reportErrors); if (!related) { return 0; } @@ -10788,8 +12355,7 @@ var ts; return 0; } } - function objectTypeRelatedTo(source, target, reportErrors, elaborateErrors) { - if (elaborateErrors === void 0) { elaborateErrors = false; } + function objectTypeRelatedTo(source, target, reportErrors) { if (overflow) { return 0; } @@ -10827,11 +12393,12 @@ var ts; expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack)) expandingFlags |= 2; + var result; if (expandingFlags === 3) { - var result = 1; + result = 1; } else { - var result = propertiesRelatedTo(source, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { result &= signaturesRelatedTo(source, target, 0, reportErrors); if (result) { @@ -10859,11 +12426,11 @@ var ts; } function isDeeplyNestedGeneric(type, stack) { if (type.flags & 4096 && depth >= 10) { - var target = type.target; + var target_1 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) { + if (t.flags & 4096 && t.target === target_1) { count++; if (count >= 10) return true; @@ -10879,8 +12446,8 @@ var ts; var result = -1; var properties = getPropertiesOfObjectType(target); var requireOptionalProperties = relation === subtypeRelation && !(source.flags & 131072); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfType(source, targetProp.name); if (sourceProp !== targetProp) { if (!sourceProp) { @@ -10950,8 +12517,8 @@ var ts; return 0; } var result = -1; - for (var i = 0, len = sourceProperties.length; i < len; ++i) { - var sourceProp = sourceProperties[i]; + for (var _i = 0; _i < sourceProperties.length; _i++) { + var sourceProp = sourceProperties[_i]; var targetProp = getPropertyOfObjectType(target, sourceProp.name); if (!targetProp) { return 0; @@ -10975,12 +12542,12 @@ var ts; var targetSignatures = getSignaturesOfType(target, kind); var result = -1; var saveErrorInfo = errorInfo; - outer: for (var i = 0; i < targetSignatures.length; i++) { - var t = targetSignatures[i]; + outer: for (var _i = 0; _i < targetSignatures.length; _i++) { + var t = targetSignatures[_i]; if (!t.hasStringLiterals || target.flags & 65536) { var localErrors = reportErrors; - for (var j = 0; j < sourceSignatures.length; j++) { - var s = sourceSignatures[j]; + for (var _a = 0; _a < sourceSignatures.length; _a++) { + var s = sourceSignatures[_a]; if (!s.hasStringLiterals || source.flags & 65536) { var related = signatureRelatedTo(s, t, localErrors); if (related) { @@ -11026,12 +12593,12 @@ var ts; target = getErasedSignature(target); var result = -1; for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var s_1 = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t_1 = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); var saveErrorInfo = errorInfo; - var related = isRelatedTo(s, t, reportErrors); + var related = isRelatedTo(s_1, t_1, reportErrors); if (!related) { - related = isRelatedTo(t, s, false); + related = isRelatedTo(t_1, s_1, false); if (!related) { if (reportErrors) { reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); @@ -11102,11 +12669,12 @@ var ts; } return 0; } + var related; if (sourceStringType && sourceNumberType) { - var related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { - var related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); } if (!related) { if (reportErrors) { @@ -11196,8 +12764,9 @@ var ts; return result; } function isSupertypeOfEach(candidate, types) { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && !isTypeSubtypeOf(types[i], candidate)) + for (var _i = 0; _i < types.length; _i++) { + var type = types[_i]; + if (candidate !== type && !isTypeSubtypeOf(type, candidate)) return false; } return true; @@ -11220,6 +12789,7 @@ var ts; downfallType = types[j]; } } + ts.Debug.assert(!!downfallType, "If there is no common supertype, each type should have a downfallType"); if (score > bestSupertypeScore) { bestSupertype = types[i]; bestSupertypeDownfallType = downfallType; @@ -11240,6 +12810,9 @@ var ts; function isTupleLikeType(type) { return !!getPropertyOfType(type, "0"); } + function isTupleType(type) { + return (type.flags & 8192) && !!type.elementTypes; + } function getWidenedTypeOfObjectLiteral(type) { var properties = getPropertiesOfObjectType(type); var members = {}; @@ -11313,29 +12886,32 @@ var ts; } function reportImplicitAnyError(declaration, type) { var typeAsString = typeToString(getWidenedType(type)); + var diagnostic; switch (declaration.kind) { - case 128: - case 127: - var diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; - break; - case 126: - var diagnostic = declaration.dotDotDotToken ? ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; - break; - case 193: - case 130: - case 129: case 132: + case 131: + diagnostic = ts.Diagnostics.Member_0_implicitly_has_an_1_type; + break; + case 129: + diagnostic = declaration.dotDotDotToken ? + ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : + ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; + break; + case 200: + case 134: case 133: - case 158: - case 159: + case 136: + case 137: + case 162: + case 163: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; } - var diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; + diagnostic = ts.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; break; default: - var diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; + diagnostic = ts.Diagnostics.Variable_0_implicitly_has_an_1_type; } error(declaration, diagnostic, ts.declarationNameToString(declaration.name), typeAsString); } @@ -11374,13 +12950,13 @@ var ts; } function createInferenceContext(typeParameters, inferUnionTypes) { var inferences = []; - for (var i = 0; i < typeParameters.length; i++) { - inferences.push({ primary: undefined, secondary: undefined }); + for (var _i = 0; _i < typeParameters.length; _i++) { + var unused = typeParameters[_i]; + inferences.push({ primary: undefined, secondary: undefined, isFixed: false }); } return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, - inferenceCount: 0, inferences: inferences, inferredTypes: new Array(typeParameters.length) }; @@ -11393,19 +12969,21 @@ var ts; inferFromTypes(source, target); function isInProcess(source, target) { for (var i = 0; i < depth; i++) { - if (source === sourceStack[i] && target === targetStack[i]) + if (source === sourceStack[i] && target === targetStack[i]) { return true; + } } return false; } function isWithinDepthLimit(type, stack) { if (depth >= 5) { - var target = type.target; + var target_2 = type.target; var count = 0; for (var i = 0; i < depth; i++) { var t = stack[i]; - if (t.flags & 4096 && t.target === target) + if (t.flags & 4096 && t.target === target_2) { count++; + } } return count < 5; } @@ -11420,10 +12998,15 @@ var ts; for (var i = 0; i < typeParameters.length; i++) { if (target === typeParameters[i]) { var inferences = context.inferences[i]; - var candidates = inferiority ? inferences.secondary || (inferences.secondary = []) : inferences.primary || (inferences.primary = []); - if (!ts.contains(candidates, source)) - candidates.push(source); - break; + if (!inferences.isFixed) { + var candidates = inferiority ? + inferences.secondary || (inferences.secondary = []) : + inferences.primary || (inferences.primary = []); + if (!ts.contains(candidates, source)) { + candidates.push(source); + } + } + return; } } } @@ -11438,8 +13021,8 @@ var ts; var targetTypes = target.types; var typeParameterCount = 0; var typeParameter; - for (var i = 0; i < targetTypes.length; i++) { - var t = targetTypes[i]; + for (var _i = 0; _i < targetTypes.length; _i++) { + var t = targetTypes[_i]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -11456,8 +13039,9 @@ var ts; } else if (source.flags & 16384) { var sourceTypes = source.types; - for (var i = 0; i < sourceTypes.length; i++) { - inferFromTypes(sourceTypes[i], target); + for (var _a = 0; _a < sourceTypes.length; _a++) { + var sourceType = sourceTypes[_a]; + inferFromTypes(sourceType, target); } } else if (source.flags & 48128 && (target.flags & (4096 | 8192) || @@ -11482,8 +13066,8 @@ var ts; } function inferFromProperties(source, target) { var properties = getPropertiesOfObjectType(target); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; + for (var _i = 0; _i < properties.length; _i++) { + var targetProp = properties[_i]; var sourceProp = getPropertyOfObjectType(source, targetProp.name); if (sourceProp) { inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); @@ -11520,19 +13104,25 @@ var ts; } function getInferredType(context, index) { var inferredType = context.inferredTypes[index]; + var inferenceSucceeded; if (!inferredType) { var inferences = getInferenceCandidates(context, index); if (inferences.length) { var unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); - inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : inferenceFailureType; + inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : unknownType; + inferenceSucceeded = !!unionOrSuperType; } else { inferredType = emptyObjectType; + inferenceSucceeded = true; } - if (inferredType !== inferenceFailureType) { + if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; } + else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { + context.failedTypeParameterIndex = index; + } context.inferredTypes[index] = inferredType; } return inferredType; @@ -11549,17 +13139,17 @@ var ts; function getResolvedSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (ts.getFullWidth(node) > 0 && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = (!ts.nodeIsMissing(node) && resolveName(node, node.text, 107455 | 1048576, ts.Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; } return links.resolvedSymbol; } function isInTypeQuery(node) { while (node) { switch (node.kind) { - case 140: + case 144: return true; - case 64: - case 123: + case 65: + case 126: node = node.parent; continue; default: @@ -11568,16 +13158,19 @@ var ts; } ts.Debug.fail("should not get here"); } - function removeTypesFromUnionType(type, typeKind, isOfTypeKind) { + function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { if (type.flags & 16384) { var types = type.types; if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (narrowedType !== emptyObjectType) { + if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { return narrowedType; } } } + else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { + return getUnionType(emptyArray); + } return type; } function hasInitializer(node) { @@ -11596,12 +13189,12 @@ var ts; } return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { - if (node.operatorToken.kind >= 52 && node.operatorToken.kind <= 63) { + if (node.operatorToken.kind >= 53 && node.operatorToken.kind <= 64) { var n = node.left; - while (n.kind === 157) { + while (n.kind === 161) { n = n.expression; } - if (n.kind === 64 && getResolvedSymbol(n) === symbol) { + if (n.kind === 65 && getResolvedSymbol(n) === symbol) { return true; } } @@ -11615,46 +13208,46 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 165: + case 169: return isAssignedInBinaryExpression(node); - case 191: - case 148: + case 198: + case 152: return isAssignedInVariableDeclaration(node); - case 146: - case 147: - case 149: case 150: case 151: - case 152: case 153: case 154: + case 155: case 156: case 157: - case 163: + case 158: case 160: case 161: - case 162: + case 167: case 164: + case 165: case 166: - case 169: - case 172: + case 168: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: case 180: - case 181: + case 182: + case 183: case 184: case 185: case 186: - case 203: - case 204: case 187: case 188: - case 189: - case 206: + case 191: + case 192: + case 193: + case 220: + case 221: + case 194: + case 195: + case 196: + case 223: return ts.forEachChild(node, isAssignedIn); } return false; @@ -11662,10 +13255,10 @@ var ts; } function resolveLocation(node) { var containerNodes = []; - for (var parent = node.parent; parent; parent = parent.parent) { - if ((ts.isExpression(parent) || ts.isObjectLiteralMethod(node)) && - isContextSensitive(parent)) { - containerNodes.unshift(parent); + for (var parent_3 = node.parent; parent_3; parent_3 = parent_3.parent) { + if ((ts.isExpression(parent_3) || ts.isObjectLiteralMethod(node)) && + isContextSensitive(parent_3)) { + containerNodes.unshift(parent_3); } } ts.forEach(containerNodes, function (node) { getTypeOfNode(node); }); @@ -11690,17 +13283,17 @@ var ts; node = node.parent; var narrowedType = type; switch (node.kind) { - case 176: + case 183: if (child !== node.expression) { narrowedType = narrowType(type, node.expression, child === node.thenStatement); } break; - case 166: + case 170: if (child !== node.condition) { narrowedType = narrowType(type, node.condition, child === node.whenTrue); } break; - case 165: + case 169: if (child === node.right) { if (node.operatorToken.kind === 48) { narrowedType = narrowType(type, node.left, true); @@ -11710,14 +13303,14 @@ var ts; } } break; - case 210: - case 198: - case 193: - case 130: - case 129: - case 132: + case 227: + case 205: + case 200: + case 134: case 133: - case 131: + case 136: + case 137: + case 135: break loop; } if (narrowedType !== type) { @@ -11730,12 +13323,12 @@ var ts; } return type; function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 161 || expr.right.kind !== 8) { + if (expr.left.kind !== 165 || expr.right.kind !== 8) { return type; } var left = expr.left; var right = expr.right; - if (left.expression.kind !== 64 || getResolvedSymbol(left.expression) !== symbol) { + if (left.expression.kind !== 65 || getResolvedSymbol(left.expression) !== symbol) { return type; } var typeInfo = primitiveTypeInfo[right.text]; @@ -11744,16 +13337,16 @@ var ts; } if (assumeTrue) { if (!typeInfo) { - return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true); + return removeTypesFromUnionType(type, 258 | 132 | 8 | 1048576, true, false); } if (isTypeSubtypeOf(typeInfo.type, type)) { return typeInfo.type; } - return removeTypesFromUnionType(type, typeInfo.flags, false); + return removeTypesFromUnionType(type, typeInfo.flags, false, false); } else { if (typeInfo) { - return removeTypesFromUnionType(type, typeInfo.flags, true); + return removeTypesFromUnionType(type, typeInfo.flags, true, false); } return type; } @@ -11781,7 +13374,7 @@ var ts; } } function narrowTypeByInstanceof(type, expr, assumeTrue) { - if (type.flags & 1 || !assumeTrue || expr.left.kind !== 64 || getResolvedSymbol(expr.left) !== symbol) { + if (type.flags & 1 || !assumeTrue || expr.left.kind !== 65 || getResolvedSymbol(expr.left) !== symbol) { return type; } var rightType = checkExpression(expr.right); @@ -11803,9 +13396,9 @@ var ts; } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 157: + case 161: return narrowType(type, expr.expression, assumeTrue); - case 165: + case 169: var operator = expr.operatorToken.kind; if (operator === 30 || operator === 31) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -11816,11 +13409,11 @@ var ts; else if (operator === 49) { return narrowTypeByOr(type, expr, assumeTrue); } - else if (operator === 86) { + else if (operator === 87) { return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 163: + case 167: if (expr.operator === 46) { return narrowType(type, expr.operand, !assumeTrue); } @@ -11829,48 +13422,60 @@ var ts; return type; } } - function markLinkedImportsAsReferenced(node) { - var nodeLinks = getNodeLinks(node); - while (nodeLinks.importOnRightSide) { - var rightSide = nodeLinks.importOnRightSide; - nodeLinks.importOnRightSide = undefined; - getSymbolLinks(rightSide).referenced = true; - ts.Debug.assert((rightSide.flags & 8388608) !== 0); - nodeLinks = getNodeLinks(ts.getDeclarationOfKind(rightSide, 200)); - } - } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); - if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 159) { + if (symbol === argumentsSymbol && ts.getContainingFunction(node).kind === 163) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression); } - if (symbol.flags & 8388608) { - var symbolLinks = getSymbolLinks(symbol); - if (!symbolLinks.referenced) { - var importOrExportAssignment = getLeftSideOfImportOrExportAssignment(node); - if (!importOrExportAssignment || - (importOrExportAssignment.flags & 1) || - (importOrExportAssignment.kind === 201)) { - symbolLinks.referenced = !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol)); - } - else { - var nodeLinks = getNodeLinks(importOrExportAssignment); - ts.Debug.assert(!nodeLinks.importOnRightSide); - nodeLinks.importOnRightSide = symbol; - } - } - if (symbolLinks.referenced) { - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + if (symbol.flags & 8388608 && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); } checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); + checkBlockScopedBindingCapturedInLoop(node, symbol); return getNarrowedTypeOfSymbol(getExportSymbolOfValueSymbolIfExported(symbol), node); } + function isInsideFunction(node, threshold) { + var current = node; + while (current && current !== threshold) { + if (ts.isFunctionLike(current)) { + return true; + } + current = current.parent; + } + return false; + } + function checkBlockScopedBindingCapturedInLoop(node, symbol) { + if (languageVersion >= 2 || + (symbol.flags & 2) === 0 || + symbol.valueDeclaration.parent.kind === 223) { + return; + } + var container = symbol.valueDeclaration; + while (container.kind !== 199) { + container = container.parent; + } + container = container.parent; + if (container.kind === 180) { + container = container.parent; + } + var inFunction = isInsideFunction(node.parent, container); + var current = container; + while (current && !ts.nodeStartsNewLexicalEnvironment(current)) { + if (isIterationStatement(current, false)) { + if (inFunction) { + grammarErrorOnFirstToken(current, ts.Diagnostics.Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher, ts.declarationNameToString(node)); + } + getNodeLinks(symbol.valueDeclaration).flags |= 256; + break; + } + current = current.parent; + } + } function captureLexicalThis(node, container) { - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; getNodeLinks(node).flags |= 2; - if (container.kind === 128 || container.kind === 131) { + if (container.kind === 132 || container.kind === 135) { getNodeLinks(classNode).flags |= 4; } else { @@ -11880,36 +13485,36 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 159) { + if (container.kind === 163) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 198: + case 205: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_body); break; - case 197: + case 204: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; - case 131: + case 135: if (isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); } break; - case 128: - case 127: + case 132: + case 131: if (container.flags & 128) { error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer); } break; - case 124: + case 127: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); break; } if (needToCaptureLexicalThis) { captureLexicalThis(node, container); } - var classNode = container.parent && container.parent.kind === 194 ? container.parent : undefined; + var classNode = container.parent && container.parent.kind === 201 ? container.parent : undefined; if (classNode) { var symbol = getSymbolOfNode(classNode); return container.flags & 128 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); @@ -11918,17 +13523,17 @@ var ts; } function isInConstructorArgumentInitializer(node, constructorDecl) { for (var n = node; n && n !== constructorDecl; n = n.parent) { - if (n.kind === 126) { + if (n.kind === 129) { return true; } } return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 153 && node.parent.expression === node; - var enclosingClass = ts.getAncestor(node, 194); + var isCallExpression = node.parent.kind === 157 && node.parent.expression === node; + var enclosingClass = ts.getAncestor(node, 201); var baseClass; - if (enclosingClass && ts.getClassBaseTypeNode(enclosingClass)) { + if (enclosingClass && ts.getClassExtendsHeritageClauseElement(enclosingClass)) { var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); baseClass = classType.baseTypes.length && classType.baseTypes[0]; } @@ -11939,32 +13544,33 @@ var ts; var container = ts.getSuperContainer(node, true); if (container) { var canUseSuperExpression = false; + var needToCaptureLexicalThis; if (isCallExpression) { - canUseSuperExpression = container.kind === 131; + canUseSuperExpression = container.kind === 135; } else { - var needToCaptureLexicalThis = false; - while (container && container.kind === 159) { + needToCaptureLexicalThis = false; + while (container && container.kind === 163) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = true; } - if (container && container.parent && container.parent.kind === 194) { + if (container && container.parent && container.parent.kind === 201) { if (container.flags & 128) { canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133; + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137; } else { canUseSuperExpression = - container.kind === 130 || - container.kind === 129 || - container.kind === 132 || - container.kind === 133 || - container.kind === 128 || - container.kind === 127 || - container.kind === 131; + container.kind === 134 || + container.kind === 133 || + container.kind === 136 || + container.kind === 137 || + container.kind === 132 || + container.kind === 131 || + container.kind === 135; } } } @@ -11978,7 +13584,7 @@ var ts; getNodeLinks(node).flags |= 16; returnType = baseClass; } - if (container.kind === 131 && isInConstructorArgumentInitializer(node, container)) { + if (container.kind === 135 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); returnType = unknownType; } @@ -11988,7 +13594,7 @@ var ts; return returnType; } } - if (container.kind === 124) { + if (container.kind === 127) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { @@ -12024,9 +13630,9 @@ var ts; var declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } - if (declaration.kind === 126) { + if (declaration.kind === 129) { var type = getContextuallyTypedParameterType(declaration); if (type) { return type; @@ -12041,7 +13647,7 @@ var ts; function getContextualTypeForReturnExpression(node) { var func = ts.getContainingFunction(node); if (func) { - if (func.type || func.kind === 131 || func.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 133))) { + if (func.type || func.kind === 135 || func.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(func.symbol, 137))) { return getReturnTypeOfSignature(getSignatureFromDeclaration(func)); } var signature = getContextualSignatureForFunctionLikeDeclaration(func); @@ -12061,7 +13667,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 155) { + if (template.parent.kind === 159) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -12069,7 +13675,7 @@ var ts; function getContextualTypeForBinaryOperand(node) { var binaryExpression = node.parent; var operator = binaryExpression.operatorToken.kind; - if (operator >= 52 && operator <= 63) { + if (operator >= 53 && operator <= 64) { if (node === binaryExpression.right) { return checkExpression(binaryExpression.left); } @@ -12090,8 +13696,9 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var i = 0; i < types.length; i++) { - var t = mapper(types[i]); + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + var t = mapper(current); if (t) { if (!mappedType) { mappedType = t; @@ -12149,7 +13756,9 @@ var ts; var type = getContextualType(arrayLiteral); if (type) { var index = ts.indexOf(arrayLiteral.elements, node); - return getTypeOfPropertyOfContextualType(type, "" + index) || getIndexTypeOfContextualType(type, 1); + return getTypeOfPropertyOfContextualType(type, "" + index) + || getIndexTypeOfContextualType(type, 1) + || (languageVersion >= 2 ? checkIteratedType(type, undefined) : undefined); } return undefined; } @@ -12166,32 +13775,32 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 191: - case 126: - case 128: - case 127: - case 148: + case 198: + case 129: + case 132: + case 131: + case 152: return getContextualTypeForInitializerExpression(node); - case 159: - case 184: + case 163: + case 191: return getContextualTypeForReturnExpression(node); - case 153: - case 154: - return getContextualTypeForArgument(parent, node); - case 156: - return getTypeFromTypeNode(parent.type); - case 165: - return getContextualTypeForBinaryOperand(node); - case 207: - return getContextualTypeForObjectLiteralElement(parent); - case 149: - return getContextualTypeForElementExpression(node); - case 166: - return getContextualTypeForConditionalOperand(node); - case 171: - ts.Debug.assert(parent.parent.kind === 167); - return getContextualTypeForSubstitutionExpression(parent.parent, node); case 157: + case 158: + return getContextualTypeForArgument(parent, node); + case 160: + return getTypeFromTypeNodeOrHeritageClauseElement(parent.type); + case 169: + return getContextualTypeForBinaryOperand(node); + case 224: + return getContextualTypeForObjectLiteralElement(parent); + case 153: + return getContextualTypeForElementExpression(node); + case 170: + return getContextualTypeForConditionalOperand(node); + case 176: + ts.Debug.assert(parent.parent.kind === 171); + return getContextualTypeForSubstitutionExpression(parent.parent, node); + case 161: return getContextualType(parent); } return undefined; @@ -12206,14 +13815,16 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 158 || node.kind === 159; + return node.kind === 162 || node.kind === 163; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) ? getContextualSignature(node) : undefined; } function getContextualSignature(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); - var type = ts.isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getContextualType(node); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); + var type = ts.isObjectLiteralMethod(node) + ? getContextualTypeForObjectLiteralMethod(node) + : getContextualType(node); if (!type) { return undefined; } @@ -12222,12 +13833,13 @@ var ts; } var signatureList; var types = type.types; - for (var i = 0; i < types.length; i++) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; if (signatureList && - getSignaturesOfObjectOrUnionType(types[i], 0).length > 1) { + getSignaturesOfObjectOrUnionType(current, 0).length > 1) { return undefined; } - var signature = getNonGenericSignature(types[i]); + var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { signatureList = [signature]; @@ -12253,13 +13865,13 @@ var ts; } function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 165 && parent.operatorToken.kind === 52 && parent.left === node) { + if (parent.kind === 169 && parent.operatorToken.kind === 53 && parent.left === node) { return true; } - if (parent.kind === 207) { + if (parent.kind === 224) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 149) { + if (parent.kind === 153) { return isAssignmentTarget(parent); } return false; @@ -12281,7 +13893,7 @@ var ts; var elementTypes = []; ts.forEach(elements, function (e) { var type = checkExpression(e, contextualMapper); - if (e.kind === 169) { + if (e.kind === 173) { elementTypes.push(getIndexTypeOfType(type, 1) || anyType); hasSpreadElement = true; } @@ -12298,7 +13910,7 @@ var ts; return createArrayType(getUnionType(elementTypes)); } function isNumericName(name) { - return name.kind === 124 ? isNumericComputedName(name) : isNumericLiteralName(name.text); + return name.kind === 127 ? isNumericComputedName(name) : isNumericLiteralName(name.text); } function isNumericComputedName(name) { return allConstituentTypesHaveKind(checkComputedPropertyName(name), 1 | 132); @@ -12325,21 +13937,24 @@ var ts; var propertiesArray = []; var contextualType = getContextualType(node); var typeFlags; - for (var i = 0; i < node.properties.length; i++) { - var memberDecl = node.properties[i]; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 207 || - memberDecl.kind === 208 || + if (memberDecl.kind === 224 || + memberDecl.kind === 225 || ts.isObjectLiteralMethod(memberDecl)) { - if (memberDecl.kind === 207) { - var type = checkPropertyAssignment(memberDecl, contextualMapper); + var type = void 0; + if (memberDecl.kind === 224) { + type = checkPropertyAssignment(memberDecl, contextualMapper); } - else if (memberDecl.kind === 130) { - var type = checkObjectLiteralMethod(memberDecl, contextualMapper); + else if (memberDecl.kind === 134) { + type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 208); - var type = memberDecl.name.kind === 124 ? unknownType : checkExpression(memberDecl.name, contextualMapper); + ts.Debug.assert(memberDecl.kind === 225); + type = memberDecl.name.kind === 127 + ? unknownType + : checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); @@ -12353,7 +13968,7 @@ var ts; member = prop; } else { - ts.Debug.assert(memberDecl.kind === 132 || memberDecl.kind === 133); + ts.Debug.assert(memberDecl.kind === 136 || memberDecl.kind === 137); checkAccessorDeclaration(memberDecl); } if (!ts.hasDynamicName(memberDecl)) { @@ -12378,15 +13993,15 @@ var ts; } } } - var result = propTypes.length ? getUnionType(propTypes) : undefinedType; - typeFlags |= result.flags; - return result; + var result_1 = propTypes.length ? getUnionType(propTypes) : undefinedType; + typeFlags |= result_1.flags; + return result_1; } return undefined; } } function getDeclarationKindFromSymbol(s) { - return s.valueDeclaration ? s.valueDeclaration.kind : 128; + return s.valueDeclaration ? s.valueDeclaration.kind : 132; } function getDeclarationFlagsFromSymbol(s) { return s.valueDeclaration ? ts.getCombinedNodeFlags(s.valueDeclaration) : s.flags & 134217728 ? 16 | 128 : 0; @@ -12396,7 +14011,7 @@ var ts; if (!(flags & (32 | 64))) { return; } - var enclosingClassDeclaration = ts.getAncestor(node, 194); + var enclosingClassDeclaration = ts.getAncestor(node, 201); var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (flags & 32) { @@ -12405,7 +14020,7 @@ var ts; } return; } - if (left.kind === 90) { + if (left.kind === 91) { return; } if (!enclosingClass || !hasBaseType(enclosingClass, declaringClass)) { @@ -12443,7 +14058,7 @@ var ts; } getNodeLinks(node).resolvedSymbol = prop; if (prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { error(right, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); } else { @@ -12455,12 +14070,14 @@ var ts; return anyType; } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 151 ? node.expression : node.left; + var left = node.kind === 155 + ? node.expression + : node.left; var type = checkExpressionOrQualifiedName(left); if (type !== unknownType && type !== anyType) { var prop = getPropertyOfType(getWidenedType(type), propertyName); if (prop && prop.parent && prop.parent.flags & 32) { - if (left.kind === 90 && getDeclarationKindFromSymbol(prop) !== 130) { + if (left.kind === 91 && getDeclarationKindFromSymbol(prop) !== 134) { return false; } else { @@ -12475,7 +14092,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 154 && node.parent.expression === node) { + if (node.parent.kind === 158 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -12498,15 +14115,15 @@ var ts; return unknownType; } if (node.argumentExpression) { - var name = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name !== undefined) { - var prop = getPropertyOfType(objectType, name); + var name_6 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_6 !== undefined) { + var prop = getPropertyOfType(objectType, name_6); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_6, symbolToString(objectType.symbol)); return unknownType; } } @@ -12571,7 +14188,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 155) { + if (node.kind === 159) { checkExpression(node.template); } else { @@ -12593,22 +14210,22 @@ var ts; var specializedIndex = -1; var spliceIndex; ts.Debug.assert(!result.length); - for (var i = 0; i < signatures.length; i++) { - var signature = signatures[i]; + for (var _i = 0; _i < signatures.length; _i++) { + var signature = signatures[_i]; var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent = signature.declaration && signature.declaration.parent; + var parent_4 = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { - if (lastParent && parent === lastParent) { + if (lastParent && parent_4 === lastParent) { index++; } else { - lastParent = parent; + lastParent = parent_4; index = cutoffIndex; } } else { index = cutoffIndex = result.length; - lastParent = parent; + lastParent = parent_4; } lastSymbol = symbol; if (signature.hasStringLiterals) { @@ -12624,7 +14241,7 @@ var ts; } function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { - if (args[i].kind === 169) { + if (args[i].kind === 173) { return i; } } @@ -12634,15 +14251,15 @@ var ts; var adjustedArgCount; var typeArguments; var callIsIncomplete; - if (node.kind === 155) { + if (node.kind === 159) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 167) { + if (tagExpression.template.kind === 171) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); - callIsIncomplete = ts.getFullWidth(lastSpan.literal) === 0 || !!lastSpan.literal.isUnterminated; + callIsIncomplete = ts.nodeIsMissing(lastSpan.literal) || !!lastSpan.literal.isUnterminated; } else { var templateLiteral = tagExpression.template; @@ -12653,7 +14270,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 154); + ts.Debug.assert(callExpression.kind === 158); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -12692,20 +14309,28 @@ var ts; }); return getSignatureInstantiation(signature, getInferredTypes(context)); } - function inferTypeArguments(signature, args, excludeArgument) { + function inferTypeArguments(signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var context = createInferenceContext(typeParameters, false); var inferenceMapper = createInferenceMapper(context); + for (var i = 0; i < typeParameters.length; i++) { + if (!context.inferences[i].isFixed) { + context.inferredTypes[i] = undefined; + } + } + if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { + context.failedTypeParameterIndex = undefined; + } for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - if (i === 0 && args[i].parent.kind === 155) { - var argType = globalTemplateStringsArrayType; + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = void 0; + if (i === 0 && args[i].parent.kind === 159) { + argType = globalTemplateStringsArrayType; } else { var mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; - var argType = checkExpressionWithContextualType(arg, paramType, mapper); + argType = checkExpressionWithContextualType(arg, paramType, mapper); } inferTypes(context, argType, paramType); } @@ -12714,26 +14339,19 @@ var ts; for (var i = 0; i < args.length; i++) { if (excludeArgument[i] === false) { var arg = args[i]; - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); inferTypes(context, checkExpressionWithContextualType(arg, paramType, inferenceMapper), paramType); } } } - var inferredTypes = getInferredTypes(context); - context.failedTypeParameterIndex = ts.indexOf(inferredTypes, inferenceFailureType); - for (var i = 0; i < inferredTypes.length; i++) { - if (inferredTypes[i] === inferenceFailureType) { - inferredTypes[i] = unknownType; - } - } - return context; + getInferredTypes(context); } function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; for (var i = 0; i < typeParameters.length; i++) { var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); + var typeArgument = getTypeFromTypeNodeOrHeritageClauseElement(typeArgNode); typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); @@ -12747,9 +14365,11 @@ var ts; function checkApplicableSignature(node, args, signature, relation, excludeArgument, reportErrors) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg.kind !== 170) { - var paramType = getTypeAtPosition(signature, arg.kind === 169 ? -1 : i); - var argType = i === 0 && node.kind === 155 ? globalTemplateStringsArrayType : arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); + if (arg.kind !== 175) { + var paramType = getTypeAtPosition(signature, arg.kind === 173 ? -1 : i); + var argType = i === 0 && node.kind === 159 ? globalTemplateStringsArrayType : + arg.kind === 8 && !reportErrors ? getStringLiteralType(arg) : + checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined, ts.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) { return false; } @@ -12759,10 +14379,10 @@ var ts; } function getEffectiveCallArguments(node) { var args; - if (node.kind === 155) { + if (node.kind === 159) { var template = node.template; args = [template]; - if (template.kind === 167) { + if (template.kind === 171) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -12774,9 +14394,9 @@ var ts; return args; } function getEffectiveTypeArguments(callExpression) { - if (callExpression.expression.kind === 90) { - var containingClass = ts.getAncestor(callExpression, 194); - var baseClassTypeNode = containingClass && ts.getClassBaseTypeNode(containingClass); + if (callExpression.expression.kind === 91) { + var containingClass = ts.getAncestor(callExpression, 201); + var baseClassTypeNode = containingClass && ts.getClassExtendsHeritageClauseElement(containingClass); return baseClassTypeNode && baseClassTypeNode.typeArguments; } else { @@ -12784,11 +14404,11 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray) { - var isTaggedTemplate = node.kind === 155; + var isTaggedTemplate = node.kind === 159; var typeArguments; if (!isTaggedTemplate) { typeArguments = getEffectiveTypeArguments(node); - if (node.expression.kind !== 90) { + if (node.expression.kind !== 91) { ts.forEach(typeArguments, checkSourceElement); } } @@ -12843,33 +14463,37 @@ var ts; error(node, ts.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target); } if (!produceDiagnostics) { - for (var i = 0, n = candidates.length; i < n; i++) { - if (hasCorrectArity(node, args, candidates[i])) { - return candidates[i]; + for (var _i = 0; _i < candidates.length; _i++) { + var candidate = candidates[_i]; + if (hasCorrectArity(node, args, candidate)) { + return candidate; } } } return resolveErrorCall(node); function chooseOverload(candidates, relation) { - for (var i = 0; i < candidates.length; i++) { - if (!hasCorrectArity(node, args, candidates[i])) { + for (var _i = 0; _i < candidates.length; _i++) { + var originalCandidate = candidates[_i]; + if (!hasCorrectArity(node, args, originalCandidate)) { continue; } - var originalCandidate = candidates[i]; - var inferenceResult; + var candidate = void 0; + var typeArgumentsAreValid = void 0; + var inferenceContext = originalCandidate.typeParameters + ? createInferenceContext(originalCandidate.typeParameters, false) + : undefined; while (true) { - var candidate = originalCandidate; + candidate = originalCandidate; if (candidate.typeParameters) { - var typeArgumentTypes; - var typeArgumentsAreValid; + var typeArgumentTypes = void 0; if (typeArguments) { typeArgumentTypes = new Array(candidate.typeParameters.length); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); } else { - inferenceResult = inferTypeArguments(candidate, args, excludeArgument); - typeArgumentsAreValid = inferenceResult.failedTypeParameterIndex < 0; - typeArgumentTypes = inferenceResult.inferredTypes; + inferTypeArguments(candidate, args, excludeArgument, inferenceContext); + typeArgumentsAreValid = inferenceContext.failedTypeParameterIndex === undefined; + typeArgumentTypes = inferenceContext.inferredTypes; } if (!typeArgumentsAreValid) { break; @@ -12893,7 +14517,7 @@ var ts; else { candidateForTypeArgumentError = originalCandidate; if (!typeArguments) { - resultOfFailedInference = inferenceResult; + resultOfFailedInference = inferenceContext; } } } @@ -12906,7 +14530,7 @@ var ts; } } function resolveCallExpression(node, candidatesOutArray) { - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { var superType = checkSuperExpression(node.expression); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, 1), candidatesOutArray); @@ -12990,13 +14614,13 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 153) { + if (node.kind === 157) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 154) { + else if (node.kind === 158) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 155) { + else if (node.kind === 159) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else { @@ -13008,15 +14632,15 @@ var ts; function checkCallExpression(node) { checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); var signature = getResolvedSignature(node); - if (node.expression.kind === 90) { + if (node.expression.kind === 91) { return voidType; } - if (node.kind === 154) { + if (node.kind === 158) { var declaration = signature.declaration; if (declaration && - declaration.kind !== 131 && declaration.kind !== 135 && - declaration.kind !== 139) { + declaration.kind !== 139 && + declaration.kind !== 143) { if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } @@ -13026,14 +14650,11 @@ var ts; return getReturnTypeOfSignature(signature); } function checkTaggedTemplateExpression(node) { - if (languageVersion < 2) { - grammarErrorOnFirstToken(node.template, ts.Diagnostics.Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher); - } return getReturnTypeOfSignature(getResolvedSignature(node)); } function checkTypeAssertion(node) { var exprType = checkExpression(node.expression); - var targetType = getTypeFromTypeNode(node.type); + var targetType = getTypeFromTypeNodeOrHeritageClauseElement(node.type); if (produceDiagnostics && targetType !== unknownType) { var widenedType = getWidenedType(exprType); if (!(isTypeAssignableTo(targetType, widenedType))) { @@ -13044,9 +14665,13 @@ var ts; } function getTypeAtPosition(signature, pos) { if (pos >= 0) { - return signature.hasRestParameter ? pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; + return signature.hasRestParameter ? + pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) : + pos < signature.parameters.length ? getTypeOfSymbol(signature.parameters[pos]) : anyType; } - return signature.hasRestParameter ? getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]) : anyArrayType; + return signature.hasRestParameter ? + getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]) : + anyArrayType; } function assignContextualParameterTypes(signature, context, mapper) { var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); @@ -13066,15 +14691,16 @@ var ts; if (!func.body) { return unknownType; } - if (func.body.kind !== 172) { - var type = checkExpressionCached(func.body, contextualMapper); + var type; + if (func.body.kind !== 179) { + type = checkExpressionCached(func.body, contextualMapper); } else { var types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); if (types.length === 0) { return voidType; } - var type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); + type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); if (!type) { error(func, ts.Diagnostics.No_best_common_type_exists_among_return_expressions); return unknownType; @@ -13104,7 +14730,7 @@ var ts; }); } function bodyContainsSingleThrowStatement(body) { - return (body.statements.length === 1) && (body.statements[0].kind === 188); + return (body.statements.length === 1) && (body.statements[0].kind === 195); } function checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(func, returnType) { if (!produceDiagnostics) { @@ -13113,7 +14739,7 @@ var ts; if (returnType === voidType || returnType === anyType) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 172) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 179) { return; } var bodyBlock = func.body; @@ -13126,9 +14752,9 @@ var ts; error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement); } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 158) { + if (!hasGrammarError && node.kind === 162) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { @@ -13156,25 +14782,25 @@ var ts; checkSignatureDeclaration(node); } } - if (produceDiagnostics && node.kind !== 130 && node.kind !== 129) { + if (produceDiagnostics && node.kind !== 134 && node.kind !== 133) { checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); } return type; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { - ts.Debug.assert(node.kind !== 130 || ts.isObjectLiteralMethod(node)); + ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); if (node.type) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { - if (node.body.kind === 172) { + if (node.body.kind === 179) { checkSourceElement(node.body); } else { var exprType = checkExpression(node.body); if (node.type) { - checkTypeAssignableTo(exprType, getTypeFromTypeNode(node.type), node.body, undefined); + checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement(node.type), node.body, undefined); } checkFunctionExpressionBodies(node.body); } @@ -13187,22 +14813,24 @@ var ts; } return true; } - function checkReferenceExpression(n, invalidReferenceMessage, constantVarianleMessage) { + function checkReferenceExpression(n, invalidReferenceMessage, constantVariableMessage) { function findSymbol(n) { var symbol = getNodeLinks(n).resolvedSymbol; return symbol && getExportSymbolOfValueSymbolIfExported(symbol); } function isReferenceOrErrorExpression(n) { switch (n.kind) { - case 64: + case 65: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; - case 151: + } + case 155: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; - case 152: + } + case 156: return true; - case 157: + case 161: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -13210,20 +14838,22 @@ var ts; } function isConstVariableReference(n) { switch (n.kind) { - case 64: - case 151: + case 65: + case 155: { var symbol = findSymbol(n); - return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 4096) !== 0; - case 152: + return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 8192) !== 0; + } + case 156: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 8) { - var name = index.text; - var prop = getPropertyOfType(getTypeOfSymbol(symbol), name); - return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 4096) !== 0; + var name_7 = index.text; + var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_7); + return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 8192) !== 0; } return false; - case 157: + } + case 161: return isConstVariableReference(n.expression); default: return false; @@ -13234,13 +14864,13 @@ var ts; return false; } if (isConstVariableReference(n)) { - error(n, constantVarianleMessage); + error(n, constantVariableMessage); return false; } return true; } function checkDeleteExpression(node) { - if (node.parserContextFlags & 1 && node.expression.kind === 64) { + if (node.parserContextFlags & 1 && node.expression.kind === 65) { grammarErrorOnNode(node.expression, ts.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode); } var operandType = checkExpression(node.expression); @@ -13294,8 +14924,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (types[i].flags & kind) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (current.flags & kind) { return true; } } @@ -13309,8 +14940,9 @@ var ts; } if (type.flags & 16384) { var types = type.types; - for (var i = 0; i < types.length; i++) { - if (!(types[i].flags & kind)) { + for (var _i = 0; _i < types.length; _i++) { + var current = types[_i]; + if (!(current.flags & kind)) { return false; } } @@ -13344,18 +14976,19 @@ var ts; } function checkObjectLiteralAssignment(node, sourceType, contextualMapper) { var properties = node.properties; - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { - var name = p.name; - var type = sourceType.flags & 1 ? sourceType : getTypeOfPropertyOfType(sourceType, name.text) || - isNumericLiteralName(name.text) && getIndexTypeOfType(sourceType, 1) || - getIndexTypeOfType(sourceType, 0); + for (var _i = 0; _i < properties.length; _i++) { + var p = properties[_i]; + if (p.kind === 224 || p.kind === 225) { + var name_8 = p.name; + var type = sourceType.flags & 1 ? sourceType : + getTypeOfPropertyOfType(sourceType, name_8.text) || + isNumericLiteralName(name_8.text) && getIndexTypeOfType(sourceType, 1) || + getIndexTypeOfType(sourceType, 0); if (type) { - checkDestructuringAssignment(p.initializer || name, type); + checkDestructuringAssignment(p.initializer || name_8, type); } else { - error(name, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name)); + error(name_8, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_8)); } } else { @@ -13372,15 +15005,22 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { var propName = "" + i; - var type = sourceType.flags & 1 ? sourceType : isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : getIndexTypeOfType(sourceType, 1); + var type = sourceType.flags & 1 ? sourceType : + isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : + getIndexTypeOfType(sourceType, 1); if (type) { checkDestructuringAssignment(e, type, contextualMapper); } else { - error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + if (isTupleType(sourceType)) { + error(e, ts.Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), sourceType.elementTypes.length, elements.length); + } + else { + error(e, ts.Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } } } else { @@ -13396,14 +15036,14 @@ var ts; return sourceType; } function checkDestructuringAssignment(target, sourceType, contextualMapper) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 149) { + if (target.kind === 153) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -13420,32 +15060,32 @@ var ts; checkGrammarEvalOrArgumentsInStrictMode(node, node.left); } var operator = node.operatorToken.kind; - if (operator === 52 && (node.left.kind === 150 || node.left.kind === 149)) { + if (operator === 53 && (node.left.kind === 154 || node.left.kind === 153)) { return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper); } var leftType = checkExpression(node.left, contextualMapper); var rightType = checkExpression(node.right, contextualMapper); switch (operator) { case 35: - case 55: - case 36: case 56: - case 37: + case 36: case 57: - case 34: - case 54: - case 40: + case 37: case 58: - case 41: + case 34: + case 55: + case 40: case 59: - case 42: + case 41: case 60: - case 44: - case 62: - case 45: - case 63: - case 43: + case 42: case 61: + case 44: + case 63: + case 45: + case 64: + case 43: + case 62: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) @@ -13465,7 +15105,7 @@ var ts; } return numberType; case 33: - case 53: + case 54: if (leftType.flags & (32 | 64)) leftType = rightType; if (rightType.flags & (32 | 64)) @@ -13489,7 +15129,7 @@ var ts; reportOperatorError(); return anyType; } - if (operator === 53) { + if (operator === 54) { checkAssignmentOperator(resultType); } return resultType; @@ -13508,22 +15148,24 @@ var ts; reportOperatorError(); } return booleanType; - case 86: + case 87: return checkInstanceOfExpression(node, leftType, rightType); - case 85: + case 86: return checkInExpression(node, leftType, rightType); case 48: return rightType; case 49: return getUnionType([leftType, rightType]); - case 52: + case 53: checkAssignmentOperator(rightType); return rightType; case 23: return rightType; } function checkForDisallowedESSymbolOperand(operator) { - var offendingSymbolOperand = someConstituentTypeHasKind(leftType, 1048576) ? node.left : someConstituentTypeHasKind(rightType, 1048576) ? node.right : undefined; + var offendingSymbolOperand = someConstituentTypeHasKind(leftType, 1048576) ? node.left : + someConstituentTypeHasKind(rightType, 1048576) ? node.right : + undefined; if (offendingSymbolOperand) { error(offendingSymbolOperand, ts.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, ts.tokenToString(operator)); return false; @@ -13533,20 +15175,20 @@ var ts; function getSuggestedBooleanOperator(operator) { switch (operator) { case 44: - case 62: + case 63: return 49; case 45: - case 63: + case 64: return 31; case 43: - case 61: + case 62: return 48; default: return undefined; } } function checkAssignmentOperator(valueType) { - if (produceDiagnostics && operator >= 52 && operator <= 63) { + if (produceDiagnostics && operator >= 53 && operator <= 64) { var ok = checkReferenceExpression(node.left, ts.Diagnostics.Invalid_left_hand_side_of_assignment_expression, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); if (ok) { checkTypeAssignableTo(valueType, leftType, node.left, undefined); @@ -13592,14 +15234,14 @@ var ts; return links.resolvedType; } function checkPropertyAssignment(node, contextualMapper) { - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } return checkExpression(node.initializer, contextualMapper); } function checkObjectLiteralMethod(node, contextualMapper) { checkGrammarMethod(node); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); } var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -13625,7 +15267,7 @@ var ts; } function checkExpressionOrQualifiedName(node, contextualMapper) { var type; - if (node.kind == 123) { + if (node.kind == 126) { type = checkQualifiedName(node); } else { @@ -13633,9 +15275,9 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 151 && node.parent.expression === node) || - (node.parent.kind === 152 && node.parent.expression === node) || - ((node.kind === 64 || node.kind === 123) && isInRightSideOfImportOrExportAssignment(node)); + var ok = (node.parent.kind === 155 && node.parent.expression === node) || + (node.parent.kind === 156 && node.parent.expression === node) || + ((node.kind === 65 || node.kind === 126) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); } @@ -13648,65 +15290,67 @@ var ts; } function checkExpressionWorker(node, contextualMapper) { switch (node.kind) { - case 64: + case 65: return checkIdentifier(node); - case 92: + case 93: return checkThisExpression(node); - case 90: + case 91: return checkSuperExpression(node); - case 88: + case 89: return nullType; - case 94: - case 79: + case 95: + case 80: return booleanType; case 7: return checkNumericLiteral(node); - case 167: + case 171: return checkTemplateExpression(node); case 8: case 10: return stringType; case 9: return globalRegExpType; - case 149: - return checkArrayLiteral(node, contextualMapper); - case 150: - return checkObjectLiteral(node, contextualMapper); - case 151: - return checkPropertyAccessExpression(node); - case 152: - return checkIndexedAccess(node); case 153: + return checkArrayLiteral(node, contextualMapper); case 154: - return checkCallExpression(node); + return checkObjectLiteral(node, contextualMapper); case 155: - return checkTaggedTemplateExpression(node); + return checkPropertyAccessExpression(node); case 156: - return checkTypeAssertion(node); + return checkIndexedAccess(node); case 157: - return checkExpression(node.expression, contextualMapper); case 158: + return checkCallExpression(node); case 159: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 161: - return checkTypeOfExpression(node); + return checkTaggedTemplateExpression(node); case 160: - return checkDeleteExpression(node); + return checkTypeAssertion(node); + case 161: + return checkExpression(node.expression, contextualMapper); + case 174: + return checkClassExpression(node); case 162: - return checkVoidExpression(node); case 163: - return checkPrefixUnaryExpression(node); - case 164: - return checkPostfixUnaryExpression(node); + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); case 165: - return checkBinaryExpression(node, contextualMapper); + return checkTypeOfExpression(node); + case 164: + return checkDeleteExpression(node); case 166: - return checkConditionalExpression(node, contextualMapper); - case 169: - return checkSpreadElementExpression(node, contextualMapper); - case 170: - return undefinedType; + return checkVoidExpression(node); + case 167: + return checkPrefixUnaryExpression(node); case 168: + return checkPostfixUnaryExpression(node); + case 169: + return checkBinaryExpression(node, contextualMapper); + case 170: + return checkConditionalExpression(node, contextualMapper); + case 173: + return checkSpreadElementExpression(node, contextualMapper); + case 175: + return undefinedType; + case 172: checkYieldExpression(node); return unknownType; } @@ -13723,12 +15367,18 @@ var ts; } } function checkParameter(node) { - checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + // Grammar checking + // It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs as the + // Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code + // or if its FunctionBody is strict code(11.1.5). + // It is a SyntaxError if the identifier eval or arguments appears within a FormalParameterList of a + // strict mode FunctionLikeDeclaration or FunctionExpression(13.1) + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); checkVariableLikeDeclaration(node); var func = ts.getContainingFunction(node); if (node.flags & 112) { func = ts.getContainingFunction(node); - if (!(func.kind === 131 && ts.nodeIsPresent(func.body))) { + if (!(func.kind === 135 && ts.nodeIsPresent(func.body))) { error(node, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } } @@ -13742,12 +15392,12 @@ var ts; } } function checkSignatureDeclaration(node) { - if (node.kind === 136) { + if (node.kind === 140) { checkGrammarIndexSignature(node); } - else if (node.kind === 138 || node.kind === 193 || node.kind === 139 || - node.kind === 134 || node.kind === 131 || - node.kind === 135) { + else if (node.kind === 142 || node.kind === 200 || node.kind === 143 || + node.kind === 138 || node.kind === 135 || + node.kind === 139) { checkGrammarFunctionLikeDeclaration(node); } checkTypeParameters(node.typeParameters); @@ -13759,10 +15409,10 @@ var ts; checkCollisionWithArgumentsInGeneratedCode(node); if (compilerOptions.noImplicitAny && !node.type) { switch (node.kind) { - case 135: + case 139: error(node, ts.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; - case 134: + case 138: error(node, ts.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); break; } @@ -13771,7 +15421,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 195) { + if (node.kind === 202) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -13781,11 +15431,12 @@ var ts; if (indexSymbol) { var seenNumericIndexer = false; var seenStringIndexer = false; - for (var i = 0, len = indexSymbol.declarations.length; i < len; ++i) { - var declaration = indexSymbol.declarations[i]; + for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) { + var decl = _a[_i]; + var declaration = decl; if (declaration.parameters.length === 1 && declaration.parameters[0].type) { switch (declaration.parameters[0].type.kind) { - case 119: + case 121: if (!seenStringIndexer) { seenStringIndexer = true; } @@ -13793,7 +15444,7 @@ var ts; error(declaration, ts.Diagnostics.Duplicate_string_index_signature); } break; - case 117: + case 119: if (!seenNumericIndexer) { seenNumericIndexer = true; } @@ -13807,7 +15458,7 @@ var ts; } } function checkPropertyDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); } function checkMethodDeclaration(node) { @@ -13830,40 +15481,40 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 153 && n.expression.kind === 90; + return n.kind === 157 && n.expression.kind === 91; } function containsSuperCall(n) { if (isSuperCallExpression(n)) { return true; } switch (n.kind) { - case 158: - case 193: - case 159: - case 150: return false; + case 162: + case 200: + case 163: + case 154: return false; default: return ts.forEachChild(n, containsSuperCall); } } function markThisReferencesAsErrors(n) { - if (n.kind === 92) { + if (n.kind === 93) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 158 && n.kind !== 193) { + else if (n.kind !== 162 && n.kind !== 200) { ts.forEachChild(n, markThisReferencesAsErrors); } } function isInstancePropertyWithInitializer(n) { - return n.kind === 128 && + return n.kind === 132 && !(n.flags & 128) && !!n.initializer; } - if (ts.getClassBaseTypeNode(node.parent)) { + if (ts.getClassExtendsHeritageClauseElement(node.parent)) { if (containsSuperCall(node.body)) { var superCallShouldBeFirst = ts.forEach(node.parent.members, isInstancePropertyWithInitializer) || - ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); + ts.forEach(node.parameters, function (p) { return p.flags & (16 | 32 | 64); }); if (superCallShouldBeFirst) { var statements = node.body.statements; - if (!statements.length || statements[0].kind !== 175 || !isSuperCallExpression(statements[0].expression)) { + if (!statements.length || statements[0].kind !== 182 || !isSuperCallExpression(statements[0].expression)) { error(node, ts.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); } else { @@ -13879,13 +15530,13 @@ var ts; function checkAccessorDeclaration(node) { if (produceDiagnostics) { checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); - if (node.kind === 132) { + if (node.kind === 136) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && !(bodyContainsAReturnStatement(node.body) || bodyContainsSingleThrowStatement(node.body))) { error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value_or_consist_of_a_single_throw_statement); } } if (!ts.hasDynamicName(node)) { - var otherKind = node.kind === 132 ? 133 : 132; + var otherKind = node.kind === 136 ? 137 : 136; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & 112) !== (otherAccessor.flags & 112))) { @@ -13904,9 +15555,18 @@ var ts; } checkFunctionLikeDeclaration(node); } - function checkTypeReference(node) { + function checkMissingDeclaration(node) { + checkDecorators(node); + } + function checkTypeReferenceNode(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkHeritageClauseElement(node) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + function checkTypeReferenceOrHeritageClauseElement(node) { checkGrammarTypeArguments(node, node.typeArguments); - var type = getTypeFromTypeReferenceNode(node); + var type = getTypeFromTypeReferenceOrHeritageClauseElement(node); if (type !== unknownType && node.typeArguments) { var len = node.typeArguments.length; for (var i = 0; i < len; i++) { @@ -13959,9 +15619,9 @@ var ts; return; } var signaturesToCheck; - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 195) { - ts.Debug.assert(signatureDeclarationNode.kind === 134 || signatureDeclarationNode.kind === 135); - var signatureKind = signatureDeclarationNode.kind === 134 ? 0 : 1; + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 202) { + ts.Debug.assert(signatureDeclarationNode.kind === 138 || signatureDeclarationNode.kind === 139); + var signatureKind = signatureDeclarationNode.kind === 138 ? 0 : 1; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); var containingType = getDeclaredTypeOfSymbol(containingSymbol); signaturesToCheck = getSignaturesOfType(containingType, signatureKind); @@ -13969,8 +15629,8 @@ var ts; else { signaturesToCheck = getSignaturesOfSymbol(getSymbolOfNode(signatureDeclarationNode)); } - for (var i = 0; i < signaturesToCheck.length; i++) { - var otherSignature = signaturesToCheck[i]; + for (var _i = 0; _i < signaturesToCheck.length; _i++) { + var otherSignature = signaturesToCheck[_i]; if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { return; } @@ -13979,7 +15639,7 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 195 && ts.isInAmbientContext(n)) { + if (n.parent.kind !== 202 && ts.isInAmbientContext(n)) { if (!(flags & 2)) { flags |= 1; } @@ -14036,7 +15696,7 @@ var ts; var declarations = symbol.declarations; var isConstructor = (symbol.flags & 16384) !== 0; function reportImplementationExpectedError(node) { - if (node.name && ts.getFullWidth(node.name) === 0) { + if (node.name && ts.nodeIsMissing(node.name)) { return; } var seen = false; @@ -14050,16 +15710,16 @@ var ts; }); if (subsequentNode) { if (subsequentNode.kind === node.kind) { - var errorNode = subsequentNode.name || subsequentNode; + var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - ts.Debug.assert(node.kind === 130 || node.kind === 129); + ts.Debug.assert(node.kind === 134 || node.kind === 133); ts.Debug.assert((node.flags & 128) !== (subsequentNode.flags & 128)); var diagnostic = node.flags & 128 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode, diagnostic); + error(errorNode_1, diagnostic); return; } else if (ts.nodeIsPresent(subsequentNode.body)) { - error(errorNode, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); + error(errorNode_1, ts.Diagnostics.Function_implementation_name_must_be_0, ts.declarationNameToString(node.name)); return; } } @@ -14075,14 +15735,15 @@ var ts; var isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & 1536; var duplicateFunctionDeclaration = false; var multipleConstructorImplementation = false; - for (var i = 0; i < declarations.length; i++) { - var node = declarations[i]; + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 195 || node.parent.kind === 141 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 202 || node.parent.kind === 145 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 193 || node.kind === 130 || node.kind === 129 || node.kind === 131) { + if (node.kind === 200 || node.kind === 134 || node.kind === 133 || node.kind === 135) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -14133,9 +15794,10 @@ var ts; var signatures = getSignaturesOfSymbol(symbol); var bodySignature = getSignatureFromDeclaration(bodyDeclaration); if (!bodySignature.hasStringLiterals) { - for (var i = 0, len = signatures.length; i < len; ++i) { - if (!signatures[i].hasStringLiterals && !isSignatureAssignableTo(bodySignature, signatures[i])) { - error(signatures[i].declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); + for (var _a = 0; _a < signatures.length; _a++) { + var signature = signatures[_a]; + if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } } @@ -14147,7 +15809,6 @@ var ts; if (!produceDiagnostics) { return; } - var symbol; var symbol = node.localSymbol; if (!symbol) { symbol = getSymbolOfNode(node); @@ -14179,16 +15840,18 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 195: + case 202: return 2097152; - case 198: - return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 194: - case 197: + case 205: + return d.name.kind === 8 || ts.getModuleInstanceState(d) !== 0 + ? 4194304 | 1048576 + : 4194304; + case 201: + case 204: return 2097152 | 1048576; - case 200: + case 208: var result = 0; - var target = resolveImport(getSymbolOfNode(d)); + var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); return result; default: @@ -14196,6 +15859,49 @@ var ts; } } } + function checkDecorator(node) { + var expression = node.expression; + var exprType = checkExpression(expression); + switch (node.parent.kind) { + case 201: + var classSymbol = getSymbolOfNode(node.parent); + var classConstructorType = getTypeOfSymbol(classSymbol); + var classDecoratorType = instantiateSingleCallFunctionType(globalClassDecoratorType, [classConstructorType]); + checkTypeAssignableTo(exprType, classDecoratorType, node); + break; + case 132: + checkTypeAssignableTo(exprType, globalPropertyDecoratorType, node); + break; + case 134: + case 136: + case 137: + var methodType = getTypeOfNode(node.parent); + var methodDecoratorType = instantiateSingleCallFunctionType(globalMethodDecoratorType, [methodType]); + checkTypeAssignableTo(exprType, methodDecoratorType, node); + break; + case 129: + checkTypeAssignableTo(exprType, globalParameterDecoratorType, node); + break; + } + } + function checkDecorators(node) { + if (!node.decorators) { + return; + } + switch (node.kind) { + case 201: + case 134: + case 136: + case 137: + case 132: + case 129: + emitDecorate = true; + break; + default: + return; + } + ts.forEach(node.decorators, checkDecorator); + } function checkFunctionDeclaration(node) { if (produceDiagnostics) { checkFunctionLikeDeclaration(node) || @@ -14208,8 +15914,9 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkDecorators(node); checkSignatureDeclaration(node); - if (node.name.kind === 124) { + if (node.name && node.name.kind === 127) { checkComputedPropertyName(node.name); } if (!ts.hasDynamicName(node)) { @@ -14227,18 +15934,18 @@ var ts; } checkSourceElement(node.body); if (node.type && !isAccessor(node.kind)) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { reportImplicitAnyError(node, anyType); } } function checkBlock(node) { - if (node.kind === 172) { + if (node.kind === 179) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 199) { + if (ts.isFunctionBlock(node) || node.kind === 206) { checkFunctionExpressionBodies(node); } } @@ -14256,19 +15963,19 @@ var ts; if (!(identifier && identifier.text === name)) { return false; } - if (node.kind === 128 || - node.kind === 127 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || - node.kind === 133) { + if (node.kind === 132 || + node.kind === 131 || + node.kind === 134 || + node.kind === 133 || + node.kind === 136 || + node.kind === 137) { return false; } if (ts.isInAmbientContext(node)) { return false; } var root = getRootDeclaration(node); - if (root.kind === 126 && ts.nodeIsMissing(root.parent.body)) { + if (root.kind === 129 && ts.nodeIsMissing(root.parent.body)) { return false; } return true; @@ -14282,8 +15989,8 @@ var ts; var current = node; while (current) { if (getNodeCheckFlags(current) & 4) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + var isDeclaration_1 = node.kind !== 65; + if (isDeclaration_1) { error(node.name, ts.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference); } else { @@ -14298,13 +16005,13 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "_super")) { return; } - var enclosingClass = ts.getAncestor(node, 194); + var enclosingClass = ts.getAncestor(node, 201); if (!enclosingClass || ts.isInAmbientContext(enclosingClass)) { return; } - if (ts.getClassBaseTypeNode(enclosingClass)) { - var isDeclaration = node.kind !== 64; - if (isDeclaration) { + if (ts.getClassExtendsHeritageClauseElement(enclosingClass)) { + var isDeclaration_2 = node.kind !== 65; + if (isDeclaration_2) { error(node, ts.Diagnostics.Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference); } else { @@ -14316,55 +16023,65 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 198 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 205 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 210 && ts.isExternalModule(parent)) { + if (parent.kind === 227 && ts.isExternalModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } function checkVarDeclaredNamesNotShadowed(node) { - if (node.initializer && (ts.getCombinedNodeFlags(node) & 6144) === 0) { - var symbol = getSymbolOfNode(node); - if (symbol.flags & 1) { - var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); - if (localDeclarationSymbol && - localDeclarationSymbol !== symbol && - localDeclarationSymbol.flags & 2) { - if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 6144) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 192); - var container = varDeclList.parent.kind === 173 && - varDeclList.parent.parent; - var namesShareScope = container && - (container.kind === 172 && ts.isAnyFunction(container.parent) || - (container.kind === 199 && container.kind === 198) || - container.kind === 210); - if (!namesShareScope) { - var name = symbolToString(localDeclarationSymbol); - error(ts.getErrorSpanForNode(node), ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name, name); - } + // - ScriptBody : StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // also occurs in the VarDeclaredNames of StatementList. + if ((ts.getCombinedNodeFlags(node) & 12288) !== 0 || isParameterDeclaration(node)) { + return; + } + if (node.kind === 198 && !node.initializer) { + return; + } + var symbol = getSymbolOfNode(node); + if (symbol.flags & 1) { + var localDeclarationSymbol = resolveName(node, node.name.text, 3, undefined, undefined); + if (localDeclarationSymbol && + localDeclarationSymbol !== symbol && + localDeclarationSymbol.flags & 2) { + if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 12288) { + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 199); + var container = varDeclList.parent.kind === 180 && varDeclList.parent.parent + ? varDeclList.parent.parent + : undefined; + var namesShareScope = container && + (container.kind === 179 && ts.isFunctionLike(container.parent) || + container.kind === 206 || + container.kind === 205 || + container.kind === 227); + if (!namesShareScope) { + var name_9 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_9, name_9); } } } } } function isParameterDeclaration(node) { - while (node.kind === 148) { + while (node.kind === 152) { node = node.parent.parent; } - return node.kind === 126; + return node.kind === 129; } function checkParameterInitializer(node) { - if (getRootDeclaration(node).kind === 126) { - var func = ts.getContainingFunction(node); - visit(node.initializer); + if (getRootDeclaration(node).kind !== 129) { + return; } + var func = ts.getContainingFunction(node); + visit(node.initializer); function visit(n) { - if (n.kind === 64) { + if (n.kind === 65) { var referencedSymbol = getNodeLinks(n).resolvedSymbol; if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, 107455) === referencedSymbol) { - if (referencedSymbol.valueDeclaration.kind === 126) { + if (referencedSymbol.valueDeclaration.kind === 129) { if (referencedSymbol.valueDeclaration === node) { error(n, ts.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer, ts.declarationNameToString(node.name)); return; @@ -14382,8 +16099,9 @@ var ts; } } function checkVariableLikeDeclaration(node) { + checkDecorators(node); checkSourceElement(node.type); - if (node.name.kind === 124) { + if (node.name.kind === 127) { checkComputedPropertyName(node.name); if (node.initializer) { checkExpressionCached(node.initializer); @@ -14392,7 +16110,7 @@ var ts; if (ts.isBindingPattern(node.name)) { ts.forEach(node.name.elements, checkSourceElement); } - if (node.initializer && getRootDeclaration(node).kind === 126 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { + if (node.initializer && getRootDeclaration(node).kind === 129 && ts.nodeIsMissing(ts.getContainingFunction(node).body)) { error(node, ts.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); return; } @@ -14420,9 +16138,9 @@ var ts; checkTypeAssignableTo(checkExpressionCached(node.initializer), declarationType, node, undefined); } } - if (node.kind !== 128 && node.kind !== 127) { + if (node.kind !== 132 && node.kind !== 131) { checkExportsOnMergedDeclarations(node); - if (node.kind === 191 || node.kind === 148) { + if (node.kind === 198 || node.kind === 152) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -14439,7 +16157,7 @@ var ts; return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); + checkGrammarDecorators(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) { @@ -14451,7 +16169,7 @@ var ts; } function inBlockOrObjectLiteralExpression(node) { while (node) { - if (node.kind === 172 || node.kind === 150) { + if (node.kind === 179 || node.kind === 154) { return true; } node = node.parent; @@ -14479,12 +16197,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind == 192) { + if (node.initializer && node.initializer.kind == 199) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -14498,38 +16216,183 @@ var ts; checkSourceElement(node.statement); } function checkForOfStatement(node) { - checkGrammarForOfStatement(node); - } - function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 192) { - var variableDeclarationList = node.initializer; - if (variableDeclarationList.declarations.length >= 1) { - var decl = variableDeclarationList.declarations[0]; - checkVariableDeclaration(decl); - } + if (node.initializer.kind === 199) { + checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; - var exprType = checkExpression(varExpr); - if (!allConstituentTypesHaveKind(exprType, 1 | 258)) { + var iteratedType = checkRightHandSideOfForOf(node.expression); + if (varExpr.kind === 153 || varExpr.kind === 154) { + checkDestructuringAssignment(varExpr, iteratedType || unknownType); + } + else { + var leftType = checkExpression(varExpr); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_of_statement, ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant); + if (iteratedType) { + checkTypeAssignableTo(iteratedType, leftType, varExpr, undefined); + } + } + } + checkSourceElement(node.statement); + } + function checkForInStatement(node) { + checkGrammarForInOrForOfStatement(node); + if (node.initializer.kind === 199) { + var variable = node.initializer.declarations[0]; + if (variable && ts.isBindingPattern(variable.name)) { + error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + checkForInOrForOfVariableDeclaration(node); + } + else { + var varExpr = node.initializer; + var leftType = checkExpression(varExpr); + if (varExpr.kind === 153 || varExpr.kind === 154) { + error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + else if (!allConstituentTypesHaveKind(leftType, 1 | 258)) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); } else { - checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + checkReferenceExpression(varExpr, ts.Diagnostics.Invalid_left_hand_side_in_for_in_statement, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant); } } - var exprType = checkExpression(node.expression); - if (!allConstituentTypesHaveKind(exprType, 1 | 48128 | 512)) { + var rightType = checkExpression(node.expression); + if (!allConstituentTypesHaveKind(rightType, 1 | 48128 | 512)) { error(node.expression, ts.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter); } checkSourceElement(node.statement); } + function checkForInOrForOfVariableDeclaration(iterationStatement) { + var variableDeclarationList = iterationStatement.initializer; + if (variableDeclarationList.declarations.length >= 1) { + var decl = variableDeclarationList.declarations[0]; + checkVariableDeclaration(decl); + } + } + function checkRightHandSideOfForOf(rhsExpression) { + var expressionType = getTypeOfExpression(rhsExpression); + return languageVersion >= 2 + ? checkIteratedType(expressionType, rhsExpression) + : checkElementTypeOfArrayOrString(expressionType, rhsExpression); + } + function checkIteratedType(iterable, expressionForError) { + ts.Debug.assert(languageVersion >= 2); + var iteratedType = getIteratedType(iterable, expressionForError); + if (expressionForError && iteratedType) { + var completeIterableType = globalIterableType !== emptyObjectType + ? createTypeReference(globalIterableType, [iteratedType]) + : emptyObjectType; + checkTypeAssignableTo(iterable, completeIterableType, expressionForError); + } + return iteratedType; + function getIteratedType(iterable, expressionForError) { + // We want to treat type as an iterable, and get the type it is an iterable of. The iterable + // must have the following structure (annotated with the names of the variables below): + // + // { // iterable + // [Symbol.iterator]: { // iteratorFunction + // (): { // iterator + // next: { // iteratorNextFunction + // (): { // iteratorNextResult + // value: T // iteratorNextValue + // } + // } + // } + // } + // } + // + // T is the type we are after. At every level that involves analyzing return types + // of signatures, we union the return types of all the signatures. + // + // Another thing to note is that at any step of this process, we could run into a dead end, + // meaning either the property is missing, or we run into the anyType. If either of these things + // happens, we return undefined to signal that we could not find the iterated type. If a property + // is missing, and the previous step did not result in 'any', then we also give an error if the + // caller requested it. Then the caller can decide what to do in the case where there is no iterated + // type. This is different from returning anyType, because that would signify that we have matched the + // whole pattern and that T (above) is 'any'. + if (allConstituentTypesHaveKind(iterable, 1)) { + return undefined; + } + var iteratorFunction = getTypeOfPropertyOfType(iterable, ts.getPropertyNameForKnownSymbolName("iterator")); + if (iteratorFunction && allConstituentTypesHaveKind(iteratorFunction, 1)) { + return undefined; + } + var iteratorFunctionSignatures = iteratorFunction ? getSignaturesOfType(iteratorFunction, 0) : emptyArray; + if (iteratorFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator); + } + return undefined; + } + var iterator = getUnionType(ts.map(iteratorFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iterator, 1)) { + return undefined; + } + var iteratorNextFunction = getTypeOfPropertyOfType(iterator, "next"); + if (iteratorNextFunction && allConstituentTypesHaveKind(iteratorNextFunction, 1)) { + return undefined; + } + var iteratorNextFunctionSignatures = iteratorNextFunction ? getSignaturesOfType(iteratorNextFunction, 0) : emptyArray; + if (iteratorNextFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method); + } + return undefined; + } + var iteratorNextResult = getUnionType(ts.map(iteratorNextFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iteratorNextResult, 1)) { + return undefined; + } + var iteratorNextValue = getTypeOfPropertyOfType(iteratorNextResult, "value"); + if (!iteratorNextValue) { + if (expressionForError) { + error(expressionForError, ts.Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property); + } + return undefined; + } + return iteratorNextValue; + } + } + function checkElementTypeOfArrayOrString(arrayOrStringType, expressionForError) { + ts.Debug.assert(languageVersion < 2); + var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var hasStringConstituent = arrayOrStringType !== arrayType; + var reportedError = false; + if (hasStringConstituent) { + if (languageVersion < 1) { + error(expressionForError, ts.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher); + reportedError = true; + } + if (arrayType === emptyObjectType) { + return stringType; + } + } + if (!isArrayLikeType(arrayType)) { + if (!reportedError) { + var diagnostic = hasStringConstituent + ? ts.Diagnostics.Type_0_is_not_an_array_type + : ts.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type; + error(expressionForError, diagnostic, typeToString(arrayType)); + } + return hasStringConstituent ? stringType : unknownType; + } + var arrayElementType = getIndexTypeOfType(arrayType, 1) || unknownType; + if (hasStringConstituent) { + if (arrayElementType.flags & 258) { + return stringType; + } + return getUnionType([arrayElementType, stringType]); + } + return arrayElementType; + } function checkBreakOrContinueStatement(node) { checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); } function isGetAccessorWithAnnotatatedSetAccessor(node) { - return !!(node.kind === 132 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 133))); + return !!(node.kind === 136 && getSetAccessorTypeAnnotationNode(ts.getDeclarationOfKind(node.symbol, 137))); } function checkReturnStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { @@ -14543,11 +16406,11 @@ var ts; if (func) { var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); var exprType = checkExpressionCached(node.expression); - if (func.kind === 133) { + if (func.kind === 137) { error(node.expression, ts.Diagnostics.Setters_cannot_return_a_value); } else { - if (func.kind === 131) { + if (func.kind === 135) { if (!isTypeAssignableTo(exprType, returnType)) { error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } @@ -14573,8 +16436,8 @@ var ts; var firstDefaultClause; var hasDuplicateDefaultClause = false; var expressionType = checkExpression(node.expression); - ts.forEach(node.clauses, function (clause) { - if (clause.kind === 204 && !hasDuplicateDefaultClause) { + ts.forEach(node.caseBlock.clauses, function (clause) { + if (clause.kind === 221 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -14586,7 +16449,7 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 203) { + if (produceDiagnostics && clause.kind === 220) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); if (!isTypeAssignableTo(expressionType, caseType)) { @@ -14600,10 +16463,10 @@ var ts; if (!checkGrammarStatementInAmbientContext(node)) { var current = node.parent; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { break; } - if (current.kind === 187 && current.label.text === node.label.text) { + if (current.kind === 194 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -14628,16 +16491,33 @@ var ts; checkBlock(node.tryBlock); var catchClause = node.catchClause; if (catchClause) { - if (catchClause.type) { - var sourceFile = ts.getSourceFileOfNode(node); - var colonStart = ts.skipTrivia(sourceFile.text, catchClause.name.end); - grammarErrorAtPos(sourceFile, colonStart, ":".length, ts.Diagnostics.Catch_clause_parameter_cannot_have_a_type_annotation); + if (catchClause.variableDeclaration) { + if (catchClause.variableDeclaration.name.kind !== 65) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.name, ts.Diagnostics.Catch_clause_variable_name_must_be_an_identifier); + } + else if (catchClause.variableDeclaration.type) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.type, ts.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation); + } + else if (catchClause.variableDeclaration.initializer) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.initializer, ts.Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + } + else { + var identifierName = catchClause.variableDeclaration.name.text; + var locals = catchClause.block.locals; + if (locals && ts.hasProperty(locals, identifierName)) { + var localSymbol = locals[identifierName]; + if (localSymbol && (localSymbol.flags & 2) !== 0) { + grammarErrorOnNode(localSymbol.valueDeclaration, ts.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, identifierName); + } + } + checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.variableDeclaration.name); + } } - checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.name); checkBlock(catchClause.block); } - if (node.finallyBlock) + if (node.finallyBlock) { checkBlock(node.finallyBlock); + } } function checkIndexConstraints(type) { var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1); @@ -14650,10 +16530,10 @@ var ts; checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0); checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1); }); - if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 194) { + if (type.flags & 1024 && type.symbol.valueDeclaration.kind === 201) { var classDeclaration = type.symbol.valueDeclaration; - for (var i = 0; i < classDeclaration.members.length; i++) { - var member = classDeclaration.members[i]; + for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) { + var member = _a[_i]; if (!(member.flags & 128) && ts.hasDynamicName(member)) { var propType = getTypeOfSymbol(member.symbol); checkIndexConstraintForProperty(member.symbol, propType, type, declaredStringIndexer, stringIndexType, 0); @@ -14681,7 +16561,7 @@ var ts; return; } var errorNode; - if (prop.valueDeclaration.name.kind === 124 || prop.parent === containingType.symbol) { + if (prop.valueDeclaration.name.kind === 127 || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } else if (indexDeclaration) { @@ -14692,7 +16572,9 @@ var ts; errorNode = someBaseClassHasBothPropertyAndIndexer ? undefined : containingType.symbol.declarations[0]; } if (errorNode && !isTypeAssignableTo(propertyType, indexType)) { - var errorMessage = indexKind === 0 ? ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 : ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; + var errorMessage = indexKind === 0 + ? ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 + : ts.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; error(errorNode, errorMessage, symbolToString(prop), typeToString(propertyType), typeToString(indexType)); } } @@ -14710,7 +16592,7 @@ var ts; } function checkTypeParameters(typeParameterDeclarations) { if (typeParameterDeclarations) { - for (var i = 0; i < typeParameterDeclarations.length; i++) { + for (var i = 0, n = typeParameterDeclarations.length; i < n; i++) { var node = typeParameterDeclarations[i]; checkTypeParameter(node); if (produceDiagnostics) { @@ -14723,44 +16605,63 @@ var ts; } } } + function checkClassExpression(node) { + grammarErrorOnNode(node, ts.Diagnostics.class_expressions_are_not_currently_supported); + ts.forEach(node.members, checkSourceElement); + return unknownType; + } function checkClassDeclaration(node) { + if (node.parent.kind !== 206 && node.parent.kind !== 227) { + grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + } checkGrammarClassDeclarationHeritageClauses(node); - checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkDecorators(node); + if (node.name) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Class_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } checkTypeParameters(node.typeParameters); - checkCollisionWithCapturedThisVariable(node, node.name); - checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); var type = getDeclaredTypeOfSymbol(symbol); var staticType = getTypeOfSymbol(symbol); - var baseTypeNode = ts.getClassBaseTypeNode(node); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { + if (!ts.isSupportedHeritageClauseElement(baseTypeNode)) { + error(baseTypeNode.expression, ts.Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); + } emitExtends = emitExtends || !ts.isInAmbientContext(node); - checkTypeReference(baseTypeNode); + checkHeritageClauseElement(baseTypeNode); } if (type.baseTypes.length) { if (produceDiagnostics) { var baseType = type.baseTypes[0]; - checkTypeAssignableTo(type, baseType, node.name, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); + checkTypeAssignableTo(type, baseType, node.name || node, ts.Diagnostics.Class_0_incorrectly_extends_base_class_1); var staticBaseType = getTypeOfSymbol(baseType.symbol); - checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); - if (baseType.symbol !== resolveEntityName(node, baseTypeNode.typeName, 107455)) { + checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, ts.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); + if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, 107455)) { error(baseTypeNode, ts.Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); } checkKindsOfPropertyMemberOverrides(type, baseType); } - checkExpressionOrQualifiedName(baseTypeNode.typeName); } - var implementedTypeNodes = ts.getClassImplementedTypeNodes(node); + if (type.baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) { + checkExpressionOrQualifiedName(baseTypeNode.expression); + } + var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { ts.forEach(implementedTypeNodes, function (typeRefNode) { - checkTypeReference(typeRefNode); + if (!ts.isSupportedHeritageClauseElement(typeRefNode)) { + error(typeRefNode.expression, ts.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(typeRefNode); if (produceDiagnostics) { - var t = getTypeFromTypeReferenceNode(typeRefNode); + var t = getTypeFromHeritageClauseElement(typeRefNode); if (t !== unknownType) { var declaredType = (t.flags & 4096) ? t.target : t; if (declaredType.flags & (1024 | 2048)) { - checkTypeAssignableTo(type, t, node.name, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(type, t, node.name || node, ts.Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, ts.Diagnostics.A_class_may_only_implement_another_class_or_interface); @@ -14779,9 +16680,23 @@ var ts; return s.flags & 16777216 ? getSymbolLinks(s).target : s; } function checkKindsOfPropertyMemberOverrides(type, baseType) { + // TypeScript 1.0 spec (April 2014): 8.2.3 + // A derived class inherits all members from its base class it doesn't override. + // Inheritance means that a derived class implicitly contains all non - overridden members of the base class. + // Both public and private property members are inherited, but only public property members can be overridden. + // A property member in a derived class is said to override a property member in a base class + // when the derived class property member has the same name and kind(instance or static) + // as the base class property member. + // The type of an overriding property member must be assignable(section 3.8.4) + // to the type of the overridden property member, or otherwise a compile - time error occurs. + // Base class instance member functions can be overridden by derived class instance member functions, + // but not by other kinds of members. + // Base class instance member variables and accessors can be overridden by + // derived class instance member variables and accessors, but not by other kinds of members. var baseProperties = getPropertiesOfObjectType(baseType); - for (var i = 0, len = baseProperties.length; i < len; ++i) { - var base = getTargetSymbol(baseProperties[i]); + for (var _i = 0; _i < baseProperties.length; _i++) { + var baseProperty = baseProperties[_i]; + var base = getTargetSymbol(baseProperty); if (base.flags & 134217728) { continue; } @@ -14798,7 +16713,7 @@ var ts; if ((base.flags & derived.flags & 8192) || ((base.flags & 98308) && (derived.flags & 98308))) { continue; } - var errorMessage; + var errorMessage = void 0; if (base.flags & 8192) { if (derived.flags & 98304) { errorMessage = ts.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; @@ -14822,7 +16737,7 @@ var ts; } } function isAccessor(kind) { - return kind === 132 || kind === 133; + return kind === 136 || kind === 137; } function areTypeParametersIdentical(list1, list2) { if (!list1 && !list2) { @@ -14843,7 +16758,7 @@ var ts; if (!tp1.constraint || !tp2.constraint) { return false; } - if (!isTypeIdenticalTo(getTypeFromTypeNode(tp1.constraint), getTypeFromTypeNode(tp2.constraint))) { + if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement(tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement(tp2.constraint))) { return false; } } @@ -14856,11 +16771,11 @@ var ts; var seen = {}; ts.forEach(type.declaredProperties, function (p) { seen[p.name] = { prop: p, containingType: type }; }); var ok = true; - for (var i = 0, len = type.baseTypes.length; i < len; ++i) { - var base = type.baseTypes[i]; + for (var _i = 0, _a = type.baseTypes; _i < _a.length; _i++) { + var base = _a[_i]; var properties = getPropertiesOfObjectType(base); - for (var j = 0, proplen = properties.length; j < proplen; ++j) { - var prop = properties[j]; + for (var _b = 0; _b < properties.length; _b++) { + var prop = properties[_b]; if (!ts.hasProperty(seen, prop.name)) { seen[prop.name] = { prop: prop, containingType: base }; } @@ -14881,13 +16796,13 @@ var ts; return ok; } function checkInterfaceDeclaration(node) { - checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 195); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 202); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -14903,14 +16818,19 @@ var ts; } } } - ts.forEach(ts.getInterfaceBaseTypeNodes(node), checkTypeReference); + ts.forEach(ts.getInterfaceBaseTypeNodes(node), function (heritageElement) { + if (!ts.isSupportedHeritageClauseElement(heritageElement)) { + error(heritageElement.expression, ts.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + checkHeritageClauseElement(heritageElement); + }); ts.forEach(node.members, checkSourceElement); if (produceDiagnostics) { checkTypeForDuplicateIndexSignatures(node); } } function checkTypeAliasDeclaration(node) { - checkGrammarModifiers(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_alias_name_cannot_be_0); checkSourceElement(node.type); } @@ -14923,12 +16843,12 @@ var ts; var ambient = ts.isInAmbientContext(node); var enumIsConst = ts.isConst(node); ts.forEach(node.members, function (member) { - if (member.name.kind !== 124 && isNumericLiteralName(member.name.text)) { + if (member.name.kind !== 127 && isNumericLiteralName(member.name.text)) { error(member.name, ts.Diagnostics.An_enum_member_cannot_have_a_numeric_name); } var initializer = member.initializer; if (initializer) { - autoValue = getConstantValueForEnumMemberInitializer(initializer, enumIsConst); + autoValue = getConstantValueForEnumMemberInitializer(initializer); if (autoValue === undefined) { if (enumIsConst) { error(initializer, ts.Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); @@ -14955,11 +16875,11 @@ var ts; }); nodeLinks.flags |= 128; } - function getConstantValueForEnumMemberInitializer(initializer, enumIsConst) { + function getConstantValueForEnumMemberInitializer(initializer) { return evalConstant(initializer); function evalConstant(e) { switch (e.kind) { - case 163: + case 167: var value = evalConstant(e.operand); if (value === undefined) { return undefined; @@ -14967,13 +16887,10 @@ var ts; switch (e.operator) { case 33: return value; case 34: return -value; - case 47: return enumIsConst ? ~value : undefined; + case 47: return ~value; } return undefined; - case 165: - if (!enumIsConst) { - return undefined; - } + case 169: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -14998,36 +16915,47 @@ var ts; return undefined; case 7: return +e.text; - case 157: - return enumIsConst ? evalConstant(e.expression) : undefined; - case 64: - case 152: - case 151: - if (!enumIsConst) { - return undefined; - } + case 161: + return evalConstant(e.expression); + case 65: + case 156: + case 155: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType; var propertyName; - if (e.kind === 64) { + if (e.kind === 65) { enumType = currentType; propertyName = e.text; } else { - if (e.kind === 152) { + var expression; + if (e.kind === 156) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 8) { return undefined; } - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.argumentExpression.text; } else { - var enumType = getTypeOfNode(e.expression); + expression = e.expression; propertyName = e.name.text; } - if (enumType !== currentType) { + var current = expression; + while (current) { + if (current.kind === 65) { + break; + } + else if (current.kind === 155) { + current = current.expression; + } + else { + return undefined; + } + } + enumType = checkExpression(expression); + if (!(enumType.symbol && (enumType.symbol.flags & 384))) { return undefined; } } @@ -15054,17 +16982,20 @@ var ts; if (!produceDiagnostics) { return; } - checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); computeEnumMemberValues(node); + var enumIsConst = ts.isConst(node); + if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) { + error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided); + } var enumSymbol = getSymbolOfNode(node); var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind); if (node === firstDeclaration) { if (enumSymbol.declarations.length > 1) { - var enumIsConst = ts.isConst(node); ts.forEach(enumSymbol.declarations, function (decl) { if (ts.isConstEnumDeclaration(decl) !== enumIsConst) { error(decl.name, ts.Diagnostics.Enum_declarations_must_all_be_const_or_non_const); @@ -15073,7 +17004,7 @@ var ts; } var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 197) { + if (declaration.kind !== 204) { return false; } var enumDeclaration = declaration; @@ -15094,9 +17025,9 @@ var ts; } function getFirstNonAmbientClassOrFunctionDeclaration(symbol) { var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; - if ((declaration.kind === 194 || (declaration.kind === 193 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + if ((declaration.kind === 201 || (declaration.kind === 200 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } } @@ -15104,28 +17035,19 @@ var ts; } function checkModuleDeclaration(node) { if (produceDiagnostics) { - if (!checkGrammarModifiers(node)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } - else if (node.name.kind === 64 && node.body.kind === 199) { - var statements = node.body.statements; - for (var i = 0, n = statements.length; i < n; i++) { - var statement = statements[i]; - if (statement.kind === 201) { - grammarErrorOnNode(statement, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); - } - else if (ts.isExternalModuleImportDeclaration(statement)) { - grammarErrorOnNode(ts.getExternalModuleImportDeclarationExpression(statement), ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); - } - } - } } checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - if (symbol.flags & 512 && symbol.declarations.length > 1 && !ts.isInAmbientContext(node) && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums)) { + if (symbol.flags & 512 + && symbol.declarations.length > 1 + && !ts.isInAmbientContext(node) + && ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) { var classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); if (classOrFunc) { if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(classOrFunc)) { @@ -15148,252 +17070,376 @@ var ts; checkSourceElement(node.body); } function getFirstIdentifier(node) { - while (node.kind === 123) { - node = node.left; + while (true) { + if (node.kind === 126) { + node = node.left; + } + else if (node.kind === 155) { + node = node.expression; + } + else { + break; + } } + ts.Debug.assert(node.kind === 65); return node; } - function checkImportDeclaration(node) { - checkGrammarModifiers(node); + function checkExternalImportOrExportDeclaration(node) { + var moduleName = ts.getExternalModuleName(node); + if (!ts.nodeIsMissing(moduleName) && moduleName.kind !== 8) { + error(moduleName, ts.Diagnostics.String_literal_expected); + return false; + } + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(moduleName, node.kind === 215 ? + ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module : + ts.Diagnostics.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); + return false; + } + if (inAmbientExternalModule && isExternalModuleNameRelative(moduleName.text)) { + error(node, ts.Diagnostics.Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); + return false; + } + return true; + } + function checkAliasSymbol(node) { + var symbol = getSymbolOfNode(node); + var target = resolveAlias(symbol); + if (target !== unknownSymbol) { + var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | + (symbol.flags & 793056 ? 793056 : 0) | + (symbol.flags & 1536 ? 1536 : 0); + if (target.flags & excludedMeanings) { + var message = node.kind === 217 ? + ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : + ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; + error(node, message, symbolToString(symbol)); + } + } + } + function checkImportBinding(node) { checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); - var symbol = getSymbolOfNode(node); - var target; - if (ts.isInternalModuleImportDeclaration(node)) { - target = resolveImport(symbol); - if (target !== unknownSymbol) { - if (target.flags & 107455) { - var moduleName = getFirstIdentifier(node.moduleReference); - if (resolveEntityName(node, moduleName, 107455 | 1536).flags & 1536) { - checkExpressionOrQualifiedName(node.moduleReference); + checkAliasSymbol(node); + } + function checkImportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); + } + if (checkExternalImportOrExportDeclaration(node)) { + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + checkImportBinding(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + checkImportBinding(importClause.namedBindings); } else { - error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + ts.forEach(importClause.namedBindings.elements, checkImportBinding); } } - if (target.flags & 793056) { - checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); - } } } - else { - if (node.parent.kind === 210) { - target = resolveImport(symbol); + } + function checkImportEqualsDeclaration(node) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { + checkImportBinding(node); + if (node.flags & 1) { + markExportAsReferenced(node); } - else if (node.parent.kind === 199 && node.parent.parent.name.kind === 8) { - if (ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - if (isExternalModuleNameRelative(ts.getExternalModuleImportDeclarationExpression(node).text)) { - error(node, ts.Diagnostics.Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); - target = unknownSymbol; + if (ts.isInternalModuleImportEqualsDeclaration(node)) { + var target = resolveAlias(getSymbolOfNode(node)); + if (target !== unknownSymbol) { + if (target.flags & 107455) { + var moduleName = getFirstIdentifier(node.moduleReference); + if (!(resolveEntityName(moduleName, 107455 | 1536).flags & 1536)) { + error(moduleName, ts.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, ts.declarationNameToString(moduleName)); + } } - else { - target = resolveImport(symbol); + if (target.flags & 793056) { + checkTypeNameIsReserved(node.name, ts.Diagnostics.Import_name_cannot_be_0); } } - else { - target = unknownSymbol; - } } else { - target = unknownSymbol; - } - } - if (target !== unknownSymbol) { - var excludedMeanings = (symbol.flags & 107455 ? 107455 : 0) | - (symbol.flags & 793056 ? 793056 : 0) | - (symbol.flags & 1536 ? 1536 : 0); - if (target.flags & excludedMeanings) { - error(node, ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0, symbolToString(symbol)); + if (languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead); + } } } } + function checkExportDeclaration(node) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_declaration_cannot_have_modifiers); + } + if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { + if (node.exportClause) { + ts.forEach(node.exportClause.elements, checkExportSpecifier); + var inAmbientExternalModule = node.parent.kind === 206 && node.parent.parent.name.kind === 8; + if (node.parent.kind !== 227 && !inAmbientExternalModule) { + error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module); + } + } + else { + var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + if (moduleSymbol && moduleSymbol.exports["export="]) { + error(node.moduleSpecifier, ts.Diagnostics.External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk, symbolToString(moduleSymbol)); + } + } + } + } + function checkExportSpecifier(node) { + checkAliasSymbol(node); + if (!node.parent.parent.moduleSpecifier) { + markExportAsReferenced(node); + } + } function checkExportAssignment(node) { - if (!checkGrammarModifiers(node) && (node.flags & 243)) { + var container = node.parent.kind === 227 ? node.parent : node.parent.parent; + if (container.kind === 205 && container.name.kind === 65) { + error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); + return; + } + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_export_assignment_cannot_have_modifiers); } - var container = node.parent; - if (container.kind !== 210) { - container = container.parent; + if (node.expression) { + if (node.expression.kind === 65) { + markExportAsReferenced(node); + } + else { + checkExpressionCached(node.expression); + } + } + if (node.type) { + checkSourceElement(node.type); + if (!ts.isInAmbientContext(node)) { + grammarErrorOnFirstToken(node.type, ts.Diagnostics.A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration); + } + } + checkExternalModuleExports(container); + if (node.isExportEquals && languageVersion >= 2) { + grammarErrorOnNode(node, ts.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead); + } + } + function getModuleStatements(node) { + if (node.kind === 227) { + return node.statements; + } + if (node.kind === 205 && node.body.kind === 206) { + return node.body.statements; + } + return emptyArray; + } + function hasExportedMembers(moduleSymbol) { + for (var id in moduleSymbol.exports) { + if (id !== "export=") { + return true; + } + } + return false; + } + function checkExternalModuleExports(node) { + var moduleSymbol = getSymbolOfNode(node); + var links = getSymbolLinks(moduleSymbol); + if (!links.exportsChecked) { + var exportEqualsSymbol = moduleSymbol.exports["export="]; + if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { + var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; + error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + links.exportsChecked = true; } - checkTypeOfExportAssignmentSymbol(getSymbolOfNode(container)); } function checkSourceElement(node) { if (!node) return; switch (node.kind) { - case 125: - return checkTypeParameter(node); - case 126: - return checkParameter(node); case 128: - case 127: + return checkTypeParameter(node); + case 129: + return checkParameter(node); + case 132: + case 131: return checkPropertyDeclaration(node); + case 142: + case 143: case 138: case 139: - case 134: - case 135: return checkSignatureDeclaration(node); - case 136: - return checkSignatureDeclaration(node); - case 130: - case 129: - return checkMethodDeclaration(node); - case 131: - return checkConstructorDeclaration(node); - case 132: - case 133: - return checkAccessorDeclaration(node); - case 137: - return checkTypeReference(node); case 140: - return checkTypeQuery(node); + return checkSignatureDeclaration(node); + case 134: + case 133: + return checkMethodDeclaration(node); + case 135: + return checkConstructorDeclaration(node); + case 136: + case 137: + return checkAccessorDeclaration(node); case 141: - return checkTypeLiteral(node); - case 142: - return checkArrayType(node); - case 143: - return checkTupleType(node); + return checkTypeReferenceNode(node); case 144: - return checkUnionType(node); + return checkTypeQuery(node); case 145: - return checkSourceElement(node.type); - case 193: - return checkFunctionDeclaration(node); - case 172: - case 199: - return checkBlock(node); - case 173: - return checkVariableStatement(node); - case 175: - return checkExpressionStatement(node); - case 176: - return checkIfStatement(node); - case 177: - return checkDoStatement(node); - case 178: - return checkWhileStatement(node); - case 179: - return checkForStatement(node); - case 180: - return checkForInStatement(node); - case 181: - return checkForOfStatement(node); - case 182: - case 183: - return checkBreakOrContinueStatement(node); - case 184: - return checkReturnStatement(node); - case 185: - return checkWithStatement(node); - case 186: - return checkSwitchStatement(node); - case 187: - return checkLabeledStatement(node); - case 188: - return checkThrowStatement(node); - case 189: - return checkTryStatement(node); - case 191: - return checkVariableDeclaration(node); + return checkTypeLiteral(node); + case 146: + return checkArrayType(node); + case 147: + return checkTupleType(node); case 148: - return checkBindingElement(node); - case 194: - return checkClassDeclaration(node); - case 195: - return checkInterfaceDeclaration(node); - case 196: - return checkTypeAliasDeclaration(node); - case 197: - return checkEnumDeclaration(node); - case 198: - return checkModuleDeclaration(node); + return checkUnionType(node); + case 149: + return checkSourceElement(node.type); case 200: - return checkImportDeclaration(node); - case 201: - return checkExportAssignment(node); - case 174: - checkGrammarStatementInAmbientContext(node); - return; + return checkFunctionDeclaration(node); + case 179: + case 206: + return checkBlock(node); + case 180: + return checkVariableStatement(node); + case 182: + return checkExpressionStatement(node); + case 183: + return checkIfStatement(node); + case 184: + return checkDoStatement(node); + case 185: + return checkWhileStatement(node); + case 186: + return checkForStatement(node); + case 187: + return checkForInStatement(node); + case 188: + return checkForOfStatement(node); + case 189: case 190: + return checkBreakOrContinueStatement(node); + case 191: + return checkReturnStatement(node); + case 192: + return checkWithStatement(node); + case 193: + return checkSwitchStatement(node); + case 194: + return checkLabeledStatement(node); + case 195: + return checkThrowStatement(node); + case 196: + return checkTryStatement(node); + case 198: + return checkVariableDeclaration(node); + case 152: + return checkBindingElement(node); + case 201: + return checkClassDeclaration(node); + case 202: + return checkInterfaceDeclaration(node); + case 203: + return checkTypeAliasDeclaration(node); + case 204: + return checkEnumDeclaration(node); + case 205: + return checkModuleDeclaration(node); + case 209: + return checkImportDeclaration(node); + case 208: + return checkImportEqualsDeclaration(node); + case 215: + return checkExportDeclaration(node); + case 214: + return checkExportAssignment(node); + case 181: checkGrammarStatementInAmbientContext(node); return; + case 197: + checkGrammarStatementInAmbientContext(node); + return; + case 218: + return checkMissingDeclaration(node); } } function checkFunctionExpressionBodies(node) { switch (node.kind) { - case 158: - case 159: + case 162: + case 163: ts.forEach(node.parameters, checkFunctionExpressionBodies); checkFunctionExpressionOrObjectLiteralMethodBody(node); break; - case 130: - case 129: + case 134: + case 133: ts.forEach(node.parameters, checkFunctionExpressionBodies); if (ts.isObjectLiteralMethod(node)) { checkFunctionExpressionOrObjectLiteralMethodBody(node); } break; - case 131: - case 132: - case 133: - case 193: + case 135: + case 136: + case 137: + case 200: ts.forEach(node.parameters, checkFunctionExpressionBodies); break; - case 185: + case 192: checkFunctionExpressionBodies(node.expression); break; - case 126: - case 128: - case 127: - case 146: - case 147: - case 148: - case 149: + case 129: + case 132: + case 131: case 150: - case 207: case 151: case 152: case 153: case 154: + case 224: case 155: - case 167: - case 171: case 156: case 157: - case 161: - case 162: + case 158: + case 159: + case 171: + case 176: case 160: - case 163: - case 164: + case 161: case 165: case 166: + case 164: + case 167: + case 168: case 169: - case 172: - case 199: + case 170: case 173: - case 175: - case 176: - case 177: - case 178: case 179: + case 206: case 180: - case 181: case 182: case 183: case 184: + case 185: case 186: - case 203: - case 204: case 187: case 188: case 189: - case 206: + case 190: case 191: - case 192: + case 193: + case 207: + case 220: + case 221: case 194: - case 197: - case 209: - case 210: + case 195: + case 196: + case 223: + case 198: + case 199: + case 201: + case 204: + case 226: + case 214: + case 227: ts.forEachChild(node, checkFunctionExpressionBodies); break; } @@ -15412,11 +17458,7 @@ var ts; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); if (ts.isExternalModule(node)) { - var symbol = getExportAssignmentSymbol(node.symbol); - if (symbol && symbol.flags & 8388608) { - getSymbolLinks(symbol).referenced = true; - markLinkedImportsAsReferenced(ts.getDeclarationOfKind(symbol, 200)); - } + checkExternalModuleExports(node); } if (potentialThisCollisions.length) { ts.forEach(potentialThisCollisions, checkIfThisIsCapturedInEnclosingScope); @@ -15425,6 +17467,9 @@ var ts; if (emitExtends) { links.flags |= 8; } + if (emitDecorate) { + links.flags |= 512; + } links.flags |= 1; } } @@ -15449,7 +17494,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 185 && node.parent.statement === node) { + if (node.parent.kind === 192 && node.parent.statement === node) { return true; } node = node.parent; @@ -15460,6 +17505,44 @@ var ts; function getSymbolsInScope(location, meaning) { var symbols = {}; var memberFlags = 0; + if (isInsideWithStatementBody(location)) { + return []; + } + populateSymbols(); + return symbolsToArray(symbols); + function populateSymbols() { + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + switch (location.kind) { + case 227: + if (!ts.isExternalModule(location)) { + break; + } + case 205: + copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); + break; + case 204: + copySymbols(getSymbolOfNode(location).exports, meaning & 8); + break; + case 201: + case 202: + if (!(memberFlags & 128)) { + copySymbols(getSymbolOfNode(location).members, meaning & 793056); + } + break; + case 162: + if (location.name) { + copySymbol(location.symbol, meaning); + } + break; + } + memberFlags = location.flags; + location = location.parent; + } + copySymbols(globals, meaning); + } function copySymbol(symbol, meaning) { if (symbol.flags & meaning) { var id = symbol.name; @@ -15485,169 +17568,181 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 210: + case 227: if (!ts.isExternalModule(location)) break; - case 198: + case 205: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 197: + case 204: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 194: - case 195: + case 201: + case 202: if (!(memberFlags & 128)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 158: + case 162: if (location.name) { copySymbol(location.symbol, meaning); } break; - case 206: - if (location.name.text) { - copySymbol(location.symbol, meaning); - } - break; } memberFlags = location.flags; location = location.parent; } copySymbols(globals, meaning); - return ts.mapToArray(symbols); + return symbolsToArray(symbols); } function isTypeDeclarationName(name) { - return name.kind == 64 && + return name.kind == 65 && isTypeDeclaration(name.parent) && name.parent.name === name; } function isTypeDeclaration(node) { switch (node.kind) { - case 125: - case 194: - case 195: - case 196: - case 197: + case 128: + case 201: + case 202: + case 203: + case 204: return true; } } function isTypeReferenceIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 123) + while (node.parent && node.parent.kind === 126) { node = node.parent; - return node.parent && node.parent.kind === 137; + } + return node.parent && node.parent.kind === 141; } - function isTypeNode(node) { - if (137 <= node.kind && node.kind <= 145) { + function isHeritageClauseElementIdentifier(entityName) { + var node = entityName; + while (node.parent && node.parent.kind === 155) { + node = node.parent; + } + return node.parent && node.parent.kind === 177; + } + function isTypeNodeOrHeritageClauseElement(node) { + if (141 <= node.kind && node.kind <= 149) { return true; } switch (node.kind) { - case 110: - case 117: + case 112: case 119: - case 111: - case 120: + case 121: + case 113: + case 122: return true; - case 98: - return node.parent.kind !== 162; + case 99: + return node.parent.kind !== 166; case 8: - return node.parent.kind === 126; - case 64: - if (node.parent.kind === 123 && node.parent.right === node) { + return node.parent.kind === 129; + case 177: + return true; + case 65: + if (node.parent.kind === 126 && node.parent.right === node) { node = node.parent; } - case 123: - ts.Debug.assert(node.kind === 64 || node.kind === 123, "'node' was expected to be a qualified name or identifier in 'isTypeNode'."); - var parent = node.parent; - if (parent.kind === 140) { + else if (node.parent.kind === 155 && node.parent.name === node) { + node = node.parent; + } + case 126: + case 155: + ts.Debug.assert(node.kind === 65 || node.kind === 126 || node.kind === 155, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + var parent_5 = node.parent; + if (parent_5.kind === 144) { return false; } - if (137 <= parent.kind && parent.kind <= 145) { + if (141 <= parent_5.kind && parent_5.kind <= 149) { return true; } - switch (parent.kind) { - case 125: - return node === parent.constraint; + switch (parent_5.kind) { + case 177: + return true; case 128: - case 127: - case 126: - case 191: - return node === parent.type; - case 193: - case 158: - case 159: - case 131: - case 130: - case 129: + return node === parent_5.constraint; case 132: - case 133: - return node === parent.type; - case 134: + case 131: + case 129: + case 198: + return node === parent_5.type; + case 200: + case 162: + case 163: case 135: + case 134: + case 133: case 136: - return node === parent.type; - case 156: - return node === parent.type; - case 153: - case 154: - return parent.typeArguments && ts.indexOf(parent.typeArguments, node) >= 0; - case 155: + case 137: + return node === parent_5.type; + case 138: + case 139: + case 140: + return node === parent_5.type; + case 160: + return node === parent_5.type; + case 157: + case 158: + return parent_5.typeArguments && ts.indexOf(parent_5.typeArguments, node) >= 0; + case 159: return false; } } return false; } - function getLeftSideOfImportOrExportAssignment(nodeOnRightSide) { - while (nodeOnRightSide.parent.kind === 123) { + function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { + while (nodeOnRightSide.parent.kind === 126) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 200) { + if (nodeOnRightSide.parent.kind === 208) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 201) { - return nodeOnRightSide.parent.exportName === nodeOnRightSide && nodeOnRightSide.parent; + if (nodeOnRightSide.parent.kind === 214) { + return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; } function isInRightSideOfImportOrExportAssignment(node) { - return getLeftSideOfImportOrExportAssignment(node) !== undefined; - } - function isRightSideOfQualifiedNameOrPropertyAccess(node) { - return (node.parent.kind === 123 && node.parent.right === node) || - (node.parent.kind === 151 && node.parent.name === node); + return getLeftSideOfImportEqualsOrExportAssignment(node) !== undefined; } function getSymbolOfEntityNameOrPropertyAccessExpression(entityName) { - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(entityName)) { + if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 201) { - return resolveEntityName(entityName.parent.parent, entityName, 107455 | 793056 | 1536 | 8388608); + if (entityName.parent.kind === 214) { + return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 151) { + if (entityName.kind !== 155) { if (isInRightSideOfImportOrExportAssignment(entityName)) { - return getSymbolOfPartOfRightHandSideOfImport(entityName); + return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } } - if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { entityName = entityName.parent; } - if (ts.isExpression(entityName)) { - if (ts.getFullWidth(entityName) === 0) { + if (isHeritageClauseElementIdentifier(entityName)) { + var meaning = entityName.parent.kind === 177 ? 793056 : 1536; + meaning |= 8388608; + return resolveEntityName(entityName, meaning); + } + else if (ts.isExpression(entityName)) { + if (ts.nodeIsMissing(entityName)) { return undefined; } - if (entityName.kind === 64) { + if (entityName.kind === 65) { var meaning = 107455 | 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 151) { + else if (entityName.kind === 155) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } - else if (entityName.kind === 123) { + else if (entityName.kind === 126) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); @@ -15656,9 +17751,9 @@ var ts; } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === 137 ? 793056 : 1536; + var meaning = entityName.parent.kind === 141 ? 793056 : 1536; meaning |= 8388608; - return resolveEntityName(entityName, entityName, meaning); + return resolveEntityName(entityName, meaning); } return undefined; } @@ -15666,36 +17761,39 @@ var ts; if (isInsideWithStatementBody(node)) { return undefined; } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { return getSymbolOfNode(node.parent); } - if (node.kind === 64 && isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 201 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImport(node); + if (node.kind === 65 && isInRightSideOfImportOrExportAssignment(node)) { + return node.parent.kind === 214 + ? getSymbolOfEntityNameOrPropertyAccessExpression(node) + : getSymbolOfPartOfRightHandSideOfImportEquals(node); } switch (node.kind) { - case 64: - case 151: - case 123: + case 65: + case 155: + case 126: return getSymbolOfEntityNameOrPropertyAccessExpression(node); - case 92: - case 90: + case 93: + case 91: var type = checkExpression(node); return type.symbol; - case 112: + case 114: var constructorDeclaration = node.parent; - if (constructorDeclaration && constructorDeclaration.kind === 131) { + if (constructorDeclaration && constructorDeclaration.kind === 135) { return constructorDeclaration.parent.symbol; } return undefined; case 8: - if (ts.isExternalModuleImportDeclaration(node.parent.parent) && - ts.getExternalModuleImportDeclarationExpression(node.parent.parent) === node) { - var importSymbol = getSymbolOfNode(node.parent.parent); - var moduleType = getTypeOfSymbol(importSymbol); - return moduleType ? moduleType.symbol : undefined; + var moduleName; + if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && + ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || + ((node.parent.kind === 209 || node.parent.kind === 215) && + node.parent.moduleSpecifier === node)) { + return resolveExternalModuleName(node, node); } case 7: - if (node.parent.kind == 152 && node.parent.argumentExpression === node) { + if (node.parent.kind == 156 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -15709,8 +17807,8 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 208) { - return resolveEntityName(location, location.name, 107455); + if (location && location.kind === 225) { + return resolveEntityName(location.name, 107455); } return undefined; } @@ -15718,12 +17816,12 @@ var ts; if (isInsideWithStatementBody(node)) { return unknownType; } + if (isTypeNodeOrHeritageClauseElement(node)) { + return getTypeFromTypeNodeOrHeritageClauseElement(node); + } if (ts.isExpression(node)) { return getTypeOfExpression(node); } - if (isTypeNode(node)) { - return getTypeFromTypeNode(node); - } if (isTypeDeclaration(node)) { var symbol = getSymbolOfNode(node); return getDeclaredTypeOfSymbol(symbol); @@ -15736,7 +17834,7 @@ var ts; var symbol = getSymbolOfNode(node); return getTypeOfSymbol(symbol); } - if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (ts.isDeclarationName(node)) { var symbol = getSymbolInfo(node); return symbol && getTypeOfSymbol(symbol); } @@ -15748,13 +17846,13 @@ var ts; return unknownType; } function getTypeOfExpression(expr) { - if (isRightSideOfQualifiedNameOrPropertyAccess(expr)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(expr)) { expr = expr.parent; } return checkExpression(expr); } function getAugmentedPropertiesOfType(type) { - var type = getApparentType(type); + type = getApparentType(type); var propsByName = createSymbolTable(getPropertiesOfType(type)); if (getSignaturesOfType(type, 0).length || getSignaturesOfType(type, 1).length) { ts.forEach(getPropertiesOfType(globalFunctionType), function (p) { @@ -15768,9 +17866,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456) { var symbols = []; - var name = symbol.name; + var name_10 = symbol.name; ts.forEach(getSymbolLinks(symbol).unionType.types, function (t) { - symbols.push(getPropertyOfType(t, name)); + symbols.push(getPropertyOfType(t, name_10)); }); return symbols; } @@ -15783,91 +17881,97 @@ var ts; return [symbol]; } function isExternalModuleSymbol(symbol) { - return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 210; + return symbol.flags & 512 && symbol.declarations.length === 1 && symbol.declarations[0].kind === 227; } - function isNodeDescendentOf(node, ancestor) { + function getAliasNameSubstitution(symbol, getGeneratedNameForNode) { + if (languageVersion >= 2) { + return undefined; + } + var node = getDeclarationOfAliasSymbol(symbol); + if (node) { + if (node.kind === 210) { + return getGeneratedNameForNode(node.parent) + ".default"; + } + if (node.kind === 213) { + var moduleName = getGeneratedNameForNode(node.parent.parent.parent); + var propertyName = node.propertyName || node.name; + return moduleName + "." + ts.unescapeIdentifier(propertyName.text); + } + } + } + function getExportNameSubstitution(symbol, location, getGeneratedNameForNode) { + if (isExternalModuleSymbol(symbol.parent)) { + if (languageVersion >= 2) { + return undefined; + } + return "exports." + ts.unescapeIdentifier(symbol.name); + } + var node = location; + var containerSymbol = getParentOfSymbol(symbol); while (node) { - if (node === ancestor) - return true; + if ((node.kind === 205 || node.kind === 204) && getSymbolOfNode(node) === containerSymbol) { + return getGeneratedNameForNode(node) + "." + ts.unescapeIdentifier(symbol.name); + } node = node.parent; } + } + function getExpressionNameSubstitution(node, getGeneratedNameForNode) { + var symbol = getNodeLinks(node).resolvedSymbol || (ts.isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined); + if (symbol) { + if (symbol.parent) { + return getExportNameSubstitution(symbol, node.parent, getGeneratedNameForNode); + } + var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); + if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { + return getExportNameSubstitution(exportSymbol, node.parent, getGeneratedNameForNode); + } + if (symbol.flags & 8388608) { + return getAliasNameSubstitution(symbol, getGeneratedNameForNode); + } + } + } + function isValueAliasDeclaration(node) { + switch (node.kind) { + case 208: + case 210: + case 211: + case 213: + case 217: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 215: + var exportClause = node.exportClause; + return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); + case 214: + return node.expression && node.expression.kind === 65 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; + } return false; } - function isUniqueLocalName(name, container) { - for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { - if (node.locals && ts.hasProperty(node.locals, name)) { - var symbolWithRelevantName = node.locals[name]; - if (symbolWithRelevantName.flags & (107455 | 1048576)) { - return false; - } - if (symbolWithRelevantName.flags & 8388608) { - var importDeclarationWithRelevantName = ts.getDeclarationOfKind(symbolWithRelevantName, 200); - if (isReferencedImportDeclaration(importDeclarationWithRelevantName)) { - return false; - } - } - } - } - return true; - } - function getLocalNameOfContainer(container) { - var links = getNodeLinks(container); - if (!links.localModuleName) { - var prefix = ""; - var name = ts.unescapeIdentifier(container.name.text); - while (!isUniqueLocalName(ts.escapeIdentifier(prefix + name), container)) { - prefix += "_"; - } - links.localModuleName = prefix + ts.getTextOfNode(container.name); - } - return links.localModuleName; - } - function getLocalNameForSymbol(symbol, location) { - var node = location; - while (node) { - if ((node.kind === 198 || node.kind === 197) && getSymbolOfNode(node) === symbol) { - return getLocalNameOfContainer(node); - } - node = node.parent; - } - ts.Debug.fail("getLocalNameForSymbol failed"); - } - function getExpressionNamePrefix(node) { - var symbol = getNodeLinks(node).resolvedSymbol; - if (symbol) { - var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); - if (symbol !== exportSymbol && !(exportSymbol.flags & 944)) { - symbol = exportSymbol; - } - if (symbol.parent) { - return isExternalModuleSymbol(symbol.parent) ? "exports" : getLocalNameForSymbol(getParentOfSymbol(symbol), node.parent); - } - } - } - function getExportAssignmentName(node) { - var symbol = getExportAssignmentSymbol(getSymbolOfNode(node)); - return symbol && symbolIsValue(symbol) && !isConstEnumSymbol(symbol) ? symbolToString(symbol) : undefined; - } - function isTopLevelValueImportWithEntityName(node) { - if (node.parent.kind !== 210 || !ts.isInternalModuleImportDeclaration(node)) { + function isTopLevelValueImportEqualsWithEntityName(node) { + if (node.parent.kind !== 227 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } - return isImportResolvedToValue(getSymbolOfNode(node)); + var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); + return isValue && node.moduleReference && !ts.nodeIsMissing(node.moduleReference); } - function isImportResolvedToValue(symbol) { - var target = resolveImport(symbol); - return target !== unknownSymbol && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); + function isAliasResolvedToValue(symbol) { + var target = resolveAlias(symbol); + if (target === unknownSymbol && compilerOptions.separateCompilation) { + return true; + } + return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target); } function isConstEnumOrConstEnumOnlyModule(s) { return isConstEnumSymbol(s) || s.constEnumOnlyModule; } - function isReferencedImportDeclaration(node) { - var symbol = getSymbolOfNode(node); - if (getSymbolLinks(symbol).referenced) { - return true; + function isReferencedAliasDeclaration(node, checkChildren) { + if (ts.isAliasSymbolDeclaration(node)) { + var symbol = getSymbolOfNode(node); + if (getSymbolLinks(symbol).referenced) { + return true; + } } - if (node.flags & 1) { - return isImportResolvedToValue(symbol); + if (checkChildren) { + return ts.forEachChild(node, function (node) { return isReferencedAliasDeclaration(node, checkChildren); }); } return false; } @@ -15888,47 +17992,84 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 209) { + if (node.kind === 226) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; if (symbol && (symbol.flags & 8)) { - var declaration = symbol.valueDeclaration; - var constantValue; - if (declaration.kind === 209) { - return getEnumMemberValue(declaration); + if (ts.isConstEnumDeclaration(symbol.valueDeclaration.parent)) { + return getEnumMemberValue(symbol.valueDeclaration); } } return undefined; } function writeTypeOfDeclaration(declaration, enclosingDeclaration, flags, writer) { var symbol = getSymbolOfNode(declaration); - var type = symbol && !(symbol.flags & (2048 | 131072)) ? getTypeOfSymbol(symbol) : unknownType; + var type = symbol && !(symbol.flags & (2048 | 131072)) + ? getTypeOfSymbol(symbol) + : unknownType; getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); } function writeReturnTypeOfSignatureDeclaration(signatureDeclaration, enclosingDeclaration, flags, writer) { var signature = getSignatureFromDeclaration(signatureDeclaration); getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } - function isUnknownIdentifier(location, name) { - return !resolveName(location, name, 107455, undefined, undefined); + function writeTypeOfExpression(expr, enclosingDeclaration, flags, writer) { + var type = getTypeOfExpression(expr); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + function hasGlobalName(name) { + return ts.hasProperty(globals, name); + } + function resolvesToSomeValue(location, name) { + ts.Debug.assert(!ts.nodeIsSynthesized(location), "resolvesToSomeValue called with a synthesized location"); + return !!resolveName(location, name, 107455, undefined, undefined); + } + function getBlockScopedVariableId(n) { + ts.Debug.assert(!ts.nodeIsSynthesized(n)); + var isVariableDeclarationOrBindingElement = n.parent.kind === 152 || (n.parent.kind === 198 && n.parent.name === n); + var symbol = (isVariableDeclarationOrBindingElement ? getSymbolOfNode(n.parent) : undefined) || + getNodeLinks(n).resolvedSymbol || + resolveName(n, n.text, 107455 | 8388608, undefined, undefined); + var isLetOrConst = symbol && + (symbol.flags & 2) && + symbol.valueDeclaration.parent.kind !== 223; + if (isLetOrConst) { + getSymbolLinks(symbol); + return symbol.id; + } + return undefined; + } + function instantiateSingleCallFunctionType(functionType, typeArguments) { + if (functionType === unknownType) { + return unknownType; + } + var signature = getSingleCallSignature(functionType); + if (!signature) { + return unknownType; + } + var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); + return getOrCreateTypeFromSignature(instantiatedSignature); } function createResolver() { return { - getLocalNameOfContainer: getLocalNameOfContainer, - getExpressionNamePrefix: getExpressionNamePrefix, - getExportAssignmentName: getExportAssignmentName, - isReferencedImportDeclaration: isReferencedImportDeclaration, + getExpressionNameSubstitution: getExpressionNameSubstitution, + isValueAliasDeclaration: isValueAliasDeclaration, + hasGlobalName: hasGlobalName, + isReferencedAliasDeclaration: isReferencedAliasDeclaration, getNodeCheckFlags: getNodeCheckFlags, - isTopLevelValueImportWithEntityName: isTopLevelValueImportWithEntityName, + isTopLevelValueImportEqualsWithEntityName: isTopLevelValueImportEqualsWithEntityName, isDeclarationVisible: isDeclarationVisible, isImplementationOfOverload: isImplementationOfOverload, writeTypeOfDeclaration: writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration: writeReturnTypeOfSignatureDeclaration, + writeTypeOfExpression: writeTypeOfExpression, isSymbolAccessible: isSymbolAccessible, isEntityNameVisible: isEntityNameVisible, getConstantValue: getConstantValue, - isUnknownIdentifier: isUnknownIdentifier + resolvesToSomeValue: resolvesToSomeValue, + collectLinkedAliases: collectLinkedAliases, + getBlockScopedVariableId: getBlockScopedVariableId }; } function initializeTypeChecker() { @@ -15937,7 +18078,7 @@ var ts; }); ts.forEach(host.getSourceFiles(), function (file) { if (!ts.isExternalModule(file)) { - extendSymbolTable(globals, file.locals); + mergeSymbolTable(globals, file.locals); } }); getSymbolLinks(undefinedSymbol).type = undefinedType; @@ -15952,10 +18093,16 @@ var ts; globalNumberType = getGlobalType("Number"); globalBooleanType = getGlobalType("Boolean"); globalRegExpType = getGlobalType("RegExp"); + globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); + globalClassDecoratorType = getGlobalType("ClassDecorator"); + globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); + globalMethodDecoratorType = getGlobalType("MethodDecorator"); + globalParameterDecoratorType = getGlobalType("ParameterDecorator"); if (languageVersion >= 2) { globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); globalESSymbolType = getGlobalType("Symbol"); globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); + globalIterableType = getGlobalType("Iterable", 1); } else { globalTemplateStringsArrayType = unknownType; @@ -15964,26 +18111,46 @@ var ts; } anyArrayType = createArrayType(anyType); } + function checkGrammarDecorators(node) { + if (!node.decorators) { + return false; + } + if (!ts.nodeCanBeDecorated(node)) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_not_valid_here); + } + else if (languageVersion < 1) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (node.kind === 136 || node.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { + return grammarErrorOnNode(node, ts.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } + return false; + } function checkGrammarModifiers(node) { switch (node.kind) { - case 132: - case 133: - case 131: - case 128: - case 127: - case 130: - case 129: case 136: - case 194: - case 195: - case 198: - case 197: + case 137: + case 135: + case 132: + case 131: + case 134: + case 133: + case 140: case 201: - case 173: - case 193: - case 196: + case 202: + case 205: + case 204: + case 180: case 200: - case 126: + case 203: + case 209: + case 208: + case 215: + case 214: + case 129: break; default: return false; @@ -15993,17 +18160,17 @@ var ts; } var lastStatic, lastPrivate, lastProtected, lastDeclare; var flags = 0; - for (var i = 0, n = node.modifiers.length; i < n; i++) { - var modifier = node.modifiers[i]; + for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { + var modifier = _a[_i]; switch (modifier.kind) { + case 109: + case 108: case 107: - case 106: - case 105: - var text; - if (modifier.kind === 107) { + var text = void 0; + if (modifier.kind === 109) { text = "public"; } - else if (modifier.kind === 106) { + else if (modifier.kind === 108) { text = "protected"; lastProtected = modifier; } @@ -16017,50 +18184,50 @@ var ts; else if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } flags |= ts.modifierToFlag(modifier.kind); break; - case 108: + case 110: if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "static"); } - else if (node.parent.kind === 199 || node.parent.kind === 210) { + else if (node.parent.kind === 206 || node.parent.kind === 227) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); } flags |= 128; lastStatic = modifier; break; - case 77: + case 78: if (flags & 1) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "export"); } else if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); } flags |= 1; break; - case 113: + case 115: if (flags & 2) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "declare"); } - else if (node.parent.kind === 194) { + else if (node.parent.kind === 201) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } - else if (node.kind === 126) { + else if (node.kind === 129) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 199) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 206) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 2; @@ -16068,7 +18235,7 @@ var ts; break; } } - if (node.kind === 131) { + if (node.kind === 135) { if (flags & 128) { return grammarErrorOnNode(lastStatic, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static"); } @@ -16079,13 +18246,13 @@ var ts; return grammarErrorOnNode(lastPrivate, ts.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "private"); } } - else if (node.kind === 200 && flags & 2) { + else if ((node.kind === 209 || node.kind === 208) && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_import_declaration, "declare"); } - else if (node.kind === 195 && flags & 2) { + else if (node.kind === 202 && flags & 2) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_declare_modifier_cannot_be_used_with_an_interface_declaration, "declare"); } - else if (node.kind === 126 && (flags & 112) && ts.isBindingPattern(node.name)) { + else if (node.kind === 129 && (flags & 112) && ts.isBindingPattern(node.name)) { return grammarErrorOnNode(node, ts.Diagnostics.A_parameter_property_may_not_be_a_binding_pattern); } } @@ -16097,15 +18264,14 @@ var ts; return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Trailing_comma_not_allowed); } } - function checkGrammarTypeParameterList(node, typeParameters) { + function checkGrammarTypeParameterList(node, typeParameters, file) { if (checkGrammarForDisallowedTrailingComma(typeParameters)) { return true; } if (typeParameters && typeParameters.length === 0) { var start = typeParameters.pos - "<".length; - var sourceFile = ts.getSourceFileOfNode(node); - var end = ts.skipTrivia(sourceFile.text, typeParameters.end) + ">".length; - return grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); + var end = ts.skipTrivia(file.text, typeParameters.end) + ">".length; + return grammarErrorAtPos(file, start, end - start, ts.Diagnostics.Type_parameter_list_cannot_be_empty); } } function checkGrammarParameterList(parameters) { @@ -16141,7 +18307,20 @@ var ts; } } function checkGrammarFunctionLikeDeclaration(node) { - return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters) || checkGrammarParameterList(node.parameters); + var file = ts.getSourceFileOfNode(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters, file) || + checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); + } + function checkGrammarArrowFunction(node, file) { + if (node.kind === 163) { + var arrowFunction = node; + var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; + var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; + if (startLine !== endLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, ts.Diagnostics.Line_terminator_not_permitted_before_arrow); + } + } + return false; } function checkGrammarIndexSignatureParameters(node) { var parameter = node.parameters[0]; @@ -16156,7 +18335,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.An_index_signature_cannot_have_a_rest_parameter); } - if (parameter.flags & 243) { + if (parameter.flags & 499) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier); } if (parameter.questionToken) { @@ -16168,7 +18347,7 @@ var ts; if (!parameter.type) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation); } - if (parameter.type.kind !== 119 && parameter.type.kind !== 117) { + if (parameter.type.kind !== 121 && parameter.type.kind !== 119) { return grammarErrorOnNode(parameter.name, ts.Diagnostics.An_index_signature_parameter_type_must_be_string_or_number); } if (!node.type) { @@ -16176,12 +18355,12 @@ var ts; } } function checkGrammarForIndexSignatureModifier(node) { - if (node.flags & 243) { + if (node.flags & 499) { grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_not_permitted_on_index_signature_members); } } function checkGrammarIndexSignature(node) { - checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -16198,9 +18377,9 @@ var ts; function checkGrammarForOmittedArgument(node, arguments) { if (arguments) { var sourceFile = ts.getSourceFileOfNode(node); - for (var i = 0, n = arguments.length; i < n; i++) { - var arg = arguments[i]; - if (arg.kind === 170) { + for (var _i = 0; _i < arguments.length; _i++) { + var arg = arguments[_i]; + if (arg.kind === 175) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -16224,11 +18403,10 @@ var ts; function checkGrammarClassDeclarationHeritageClauses(node) { var seenExtendsClause = false; var seenImplementsClause = false; - if (!checkGrammarModifiers(node) && node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 2); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && node.heritageClauses) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } @@ -16241,7 +18419,7 @@ var ts; seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); if (seenImplementsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.implements_clause_already_seen); } @@ -16254,17 +18432,16 @@ var ts; function checkGrammarInterfaceDeclaration(node) { var seenExtendsClause = false; if (node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - ts.Debug.assert(i <= 1); - var heritageClause = node.heritageClauses[i]; - if (heritageClause.token === 78) { + for (var _i = 0, _a = node.heritageClauses; _i < _a.length; _i++) { + var heritageClause = _a[_i]; + if (heritageClause.token === 79) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.extends_clause_already_seen); } seenExtendsClause = true; } else { - ts.Debug.assert(heritageClause.token === 101); + ts.Debug.assert(heritageClause.token === 103); return grammarErrorOnFirstToken(heritageClause, ts.Diagnostics.Interface_declaration_cannot_have_implements_clause); } checkGrammarHeritageClause(heritageClause); @@ -16273,11 +18450,11 @@ var ts; return false; } function checkGrammarComputedPropertyName(node) { - if (node.kind !== 124) { + if (node.kind !== 127) { return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 165 && computedPropertyName.expression.operatorToken.kind === 23) { + if (computedPropertyName.expression.kind === 169 && computedPropertyName.expression.operatorToken.kind === 23) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } @@ -16301,54 +18478,54 @@ var ts; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; var inStrictMode = (node.parserContextFlags & 1) !== 0; - for (var i = 0, n = node.properties.length; i < n; i++) { - var prop = node.properties[i]; - var name = prop.name; - if (prop.kind === 170 || - name.kind === 124) { - checkGrammarComputedPropertyName(name); + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var name_11 = prop.name; + if (prop.kind === 175 || + name_11.kind === 127) { + checkGrammarComputedPropertyName(name_11); continue; } - var currentKind; - if (prop.kind === 207 || prop.kind === 208) { + var currentKind = void 0; + if (prop.kind === 224 || prop.kind === 225) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name.kind === 7) { - checkGrammarNumbericLiteral(name); + if (name_11.kind === 7) { + checkGrammarNumbericLiteral(name_11); } currentKind = Property; } - else if (prop.kind === 130) { + else if (prop.kind === 134) { currentKind = Property; } - else if (prop.kind === 132) { + else if (prop.kind === 136) { currentKind = GetAccessor; } - else if (prop.kind === 133) { + else if (prop.kind === 137) { currentKind = SetAccesor; } else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name.text)) { - seen[name.text] = currentKind; + if (!ts.hasProperty(seen, name_11.text)) { + seen[name_11.text] = currentKind; } else { - var existingKind = seen[name.text]; + var existingKind = seen[name_11.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name.text] = currentKind | existingKind; + seen[name_11.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -16357,33 +18534,32 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 192) { + if (forInOrOfStatement.initializer.kind === 199) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement + : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } var firstDeclaration = variableList.declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer + : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 180 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + var diagnostic = forInOrOfStatement.kind === 187 + ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation + : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); } } } return false; } - function checkGrammarForOfStatement(forOfStatement) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_not_currently_supported); - if (languageVersion < 2) { - return grammarErrorOnFirstToken(forOfStatement, ts.Diagnostics.for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher); - } - return checkGrammarForInOrForOfStatement(forOfStatement); - } function checkGrammarAccessor(accessor) { var kind = accessor.kind; if (languageVersion < 1) { @@ -16398,10 +18574,10 @@ var ts; else if (accessor.typeParameters) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); } - else if (kind === 132 && accessor.parameters.length) { + else if (kind === 136 && accessor.parameters.length) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_get_accessor_cannot_have_parameters); } - else if (kind === 133) { + else if (kind === 137) { if (accessor.type) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); } @@ -16413,7 +18589,7 @@ var ts; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_set_accessor_cannot_have_rest_parameter); } - else if (parameter.flags & 243) { + else if (parameter.flags & 499) { return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation); } else if (parameter.questionToken) { @@ -16426,7 +18602,7 @@ var ts; } } function checkGrammarForNonSymbolComputedProperty(node, message) { - if (node.kind === 124 && !ts.isWellKnownSymbolSyntactically(node.expression)) { + if (node.kind === 127 && !ts.isWellKnownSymbolSyntactically(node.expression)) { return grammarErrorOnNode(node, message); } } @@ -16436,7 +18612,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 150) { + if (node.parent.kind === 154) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -16444,7 +18620,7 @@ var ts; return grammarErrorAtPos(getSourceFile(node), node.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); } } - if (node.parent.kind === 194) { + if (node.parent.kind === 201) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -16455,22 +18631,22 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol); } } function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 179: - case 180: - case 181: - case 177: - case 178: - return true; + case 186: case 187: + case 188: + case 184: + case 185: + return true; + case 194: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; @@ -16478,21 +18654,22 @@ var ts; function checkGrammarBreakOrContinueStatement(node) { var current = node; while (current) { - if (ts.isAnyFunction(current)) { + if (ts.isFunctionLike(current)) { return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 187: + case 194: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 182 && !isIterationStatement(current.statement, true); + var isMisplacedContinueLabel = node.kind === 189 + && !isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); } return false; } break; - case 186: - if (node.kind === 183 && !node.label) { + case 193: + if (node.kind === 190 && !node.label) { return false; } break; @@ -16505,11 +18682,15 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement + : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 183 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; + var message = node.kind === 190 + ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement + : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } } @@ -16526,16 +18707,14 @@ var ts; return checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarVariableDeclaration(node) { - if (ts.isInAmbientContext(node)) { - if (ts.isBindingPattern(node.name)) { - return grammarErrorOnNode(node, ts.Diagnostics.Destructuring_declarations_are_not_allowed_in_ambient_contexts); + if (node.parent.parent.kind !== 187 && node.parent.parent.kind !== 188) { + if (ts.isInAmbientContext(node)) { + if (node.initializer) { + var equalsTokenLength = "=".length; + return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - equalsTokenLength, equalsTokenLength, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } } - if (node.initializer) { - return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.initializer.pos - 1, 1, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); - } - } - else { - if (!node.initializer) { + else if (!node.initializer) { if (ts.isBindingPattern(node.name) && !ts.isBindingPattern(node.parent)) { return grammarErrorOnNode(node, ts.Diagnostics.A_destructuring_declaration_must_have_an_initializer); } @@ -16549,15 +18728,16 @@ var ts; checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarNameInLetOrConstDeclarations(name) { - if (name.kind === 64) { + if (name.kind === 65) { if (name.text === "let") { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { var elements = name.elements; - for (var i = 0; i < elements.length; ++i) { - checkGrammarNameInLetOrConstDeclarations(elements[i].name); + for (var _i = 0; _i < elements.length; _i++) { + var element = elements[_i]; + checkGrammarNameInLetOrConstDeclarations(element.name); } } } @@ -16569,26 +18749,18 @@ var ts; if (!declarationList.declarations.length) { return grammarErrorAtPos(ts.getSourceFileOfNode(declarationList), declarations.pos, declarations.end - declarations.pos, ts.Diagnostics.Variable_declaration_list_cannot_be_empty); } - if (languageVersion < 2) { - if (ts.isLet(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - else if (ts.isConst(declarationList)) { - return grammarErrorOnFirstToken(declarationList, ts.Diagnostics.const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - } } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 176: - case 177: - case 178: + case 183: + case 184: case 185: - case 179: - case 180: - case 181: - return false; + case 192: + case 186: case 187: + case 188: + return false; + case 194: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -16604,7 +18776,7 @@ var ts; } } function isIntegerLiteral(expression) { - if (expression.kind === 163) { + if (expression.kind === 167) { var unaryExpression = expression; if (unaryExpression.operator === 33 || unaryExpression.operator === 34) { expression = unaryExpression.operand; @@ -16616,14 +18788,14 @@ var ts; return false; } function checkGrammarEnumDeclaration(enumDecl) { - var enumIsConst = (enumDecl.flags & 4096) !== 0; + var enumIsConst = (enumDecl.flags & 8192) !== 0; var hasError = false; if (!enumIsConst) { var inConstantEnumMemberSection = true; var inAmbientContext = ts.isInAmbientContext(enumDecl); - for (var i = 0, n = enumDecl.members.length; i < n; i++) { - var node = enumDecl.members[i]; - if (node.name.kind === 124) { + for (var _i = 0, _a = enumDecl.members; _i < _a.length; _i++) { + var node = _a[_i]; + if (node.name.kind === 127) { hasError = grammarErrorOnNode(node.name, ts.Diagnostics.Computed_property_names_are_not_allowed_in_enums); } else if (inAmbientContext) { @@ -16644,18 +18816,11 @@ var ts; function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } - function scanToken(scanner, pos) { - scanner.setTextPos(pos); - scanner.scan(); - var start = scanner.getTokenPos(); - return start; - } function grammarErrorOnFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - var start = scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, scanner.getTextPos() - start, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2)); return true; } } @@ -16668,16 +18833,17 @@ var ts; function grammarErrorOnNode(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var span = ts.getErrorSpanForNode(node); - var start = span.end > span.pos ? ts.skipTrivia(sourceFile.text, span.pos) : span.pos; - diagnostics.add(ts.createFileDiagnostic(sourceFile, start, span.end - start, message, arg0, arg1, arg2)); + diagnostics.add(ts.createDiagnosticForNode(node, message, arg0, arg1, arg2)); return true; } } - function checkGrammarEvalOrArgumentsInStrictMode(contextNode, identifier) { - if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { - var name = ts.declarationNameToString(identifier); - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, name); + function checkGrammarEvalOrArgumentsInStrictMode(contextNode, name) { + if (name && name.kind === 65) { + var identifier = name; + if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { + var nameText = ts.declarationNameToString(identifier); + return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); + } } } function checkGrammarConstructorTypeParameters(node) { @@ -16691,18 +18857,18 @@ var ts; } } function checkGrammarProperty(node) { - if (node.parent.kind === 194) { + if (node.parent.kind === 201) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional) || checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 195) { + else if (node.parent.kind === 202) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } } - else if (node.parent.kind === 141) { + else if (node.parent.kind === 145) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } @@ -16712,18 +18878,21 @@ var ts; } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 195 || - node.kind === 200 || - node.kind === 201 || - (node.flags & 2)) { + if (node.kind === 202 || + node.kind === 209 || + node.kind === 208 || + node.kind === 215 || + node.kind === 214 || + (node.flags & 2) || + (node.flags & (1 | 256))) { return false; } return grammarErrorOnFirstToken(node, ts.Diagnostics.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file); } function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { - for (var i = 0, n = file.statements.length; i < n; i++) { - var decl = file.statements[i]; - if (ts.isDeclaration(decl) || decl.kind === 173) { + for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { + var decl = _a[_i]; + if (ts.isDeclaration(decl) || decl.kind === 180) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -16739,13 +18908,13 @@ var ts; return getNodeLinks(node).hasReportedStatementInAmbientContext = true; } var links = getNodeLinks(node); - if (!links.hasReportedStatementInAmbientContext && ts.isAnyFunction(node.parent)) { + if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 172 || node.parent.kind === 199 || node.parent.kind === 210) { - var links = getNodeLinks(node.parent); - if (!links.hasReportedStatementInAmbientContext) { - return links.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); + if (node.parent.kind === 179 || node.parent.kind === 206 || node.parent.kind === 227) { + var links_1 = getNodeLinks(node.parent); + if (!links_1.hasReportedStatementInAmbientContext) { + return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); } } else { @@ -16753,7 +18922,7 @@ var ts; } } function checkGrammarNumbericLiteral(node) { - if (node.flags & 8192) { + if (node.flags & 16384) { if (node.parserContextFlags & 1) { return grammarErrorOnNode(node, ts.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode); } @@ -16765,9 +18934,8 @@ var ts; function grammarErrorAfterFirstToken(node, message, arg0, arg1, arg2) { var sourceFile = ts.getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = ts.createScanner(languageVersion, true, sourceFile.text); - scanToken(scanner, node.pos); - diagnostics.add(ts.createFileDiagnostic(sourceFile, scanner.getTextPos(), 0, message, arg0, arg1, arg2)); + var span = ts.getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(ts.createFileDiagnostic(sourceFile, ts.textSpanEnd(span), 0, message, arg0, arg1, arg2)); return true; } } @@ -16776,247 +18944,16 @@ var ts; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); +/// var ts; (function (ts) { - var indentStrings = ["", " "]; - function getIndentString(level) { - if (indentStrings[level] === undefined) { - indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; - } - return indentStrings[level]; - } - ts.getIndentString = getIndentString; - function getIndentSize() { - return indentStrings[1].length; - } - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!ts.isDeclarationFile(sourceFile)) { - if ((ts.isExternalModule(sourceFile) || !compilerOptions.out) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { - return true; - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; - function createTextWriter(newLine) { - var output = ""; - var indent = 0; - var lineStart = true; - var lineCount = 0; - var linePos = 0; - function write(s) { - if (s && s.length) { - if (lineStart) { - output += getIndentString(indent); - lineStart = false; - } - output += s; - } - } - function rawWrite(s) { - if (s !== undefined) { - if (lineStart) { - lineStart = false; - } - output += s; - } - } - function writeLiteral(s) { - if (s && s.length) { - write(s); - var lineStartsOfS = ts.computeLineStarts(s); - if (lineStartsOfS.length > 1) { - lineCount = lineCount + lineStartsOfS.length - 1; - linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; - } - } - } - function writeLine() { - if (!lineStart) { - output += newLine; - lineCount++; - linePos = output.length; - lineStart = true; - } - } - function writeTextOfNode(sourceFile, node) { - write(ts.getSourceTextOfNodeFromSourceFile(sourceFile, node)); - } - return { - write: write, - rawWrite: rawWrite, - writeTextOfNode: writeTextOfNode, - writeLiteral: writeLiteral, - writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, - getIndent: function () { return indent; }, - getTextPos: function () { return output.length; }, - getLine: function () { return lineCount + 1; }, - getColumn: function () { return lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1; }, - getText: function () { return output; } - }; - } - function getLineOfLocalPosition(currentSourceFile, pos) { - return ts.getLineAndCharacterOfPosition(currentSourceFile, pos).line; - } - function emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments) { - if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && - getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { - writer.writeLine(); - } - } - function emitComments(currentSourceFile, writer, comments, trailingSeparator, newLine, writeComment) { - var emitLeadingSpace = !trailingSeparator; - ts.forEach(comments, function (comment) { - if (emitLeadingSpace) { - writer.write(" "); - emitLeadingSpace = false; - } - writeComment(currentSourceFile, writer, comment, newLine); - if (comment.hasTrailingNewLine) { - writer.writeLine(); - } - else if (trailingSeparator) { - writer.write(" "); - } - else { - emitLeadingSpace = true; - } - }); - } - function writeCommentRange(currentSourceFile, writer, comment, newLine) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - var firstCommentLineAndCharacter = ts.getLineAndCharacterOfPosition(currentSourceFile, comment.pos); - var lineCount = ts.getLineStarts(currentSourceFile).length; - var firstCommentLineIndent; - for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { - var nextLineStart = (currentLine + 1) === lineCount ? currentSourceFile.text.length + 1 : ts.getStartPositionOfLine(currentLine + 1, currentSourceFile); - if (pos !== comment.pos) { - if (firstCommentLineIndent === undefined) { - firstCommentLineIndent = calculateIndent(ts.getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); - } - var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); - var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); - if (spacesToEmit > 0) { - var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); - var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); - writer.rawWrite(indentSizeSpaceString); - while (numberOfSingleSpacesToEmit) { - writer.rawWrite(" "); - numberOfSingleSpacesToEmit--; - } - } - else { - writer.rawWrite(""); - } - } - writeTrimmedCurrentLine(pos, nextLineStart); - pos = nextLineStart; - } - } - else { - writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); - } - function writeTrimmedCurrentLine(pos, nextLineStart) { - var end = Math.min(comment.end, nextLineStart - 1); - var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); - if (currentLineText) { - writer.write(currentLineText); - if (end !== comment.end) { - writer.writeLine(); - } - } - else { - writer.writeLiteral(newLine); - } - } - function calculateIndent(pos, end) { - var currentLineIndent = 0; - for (; pos < end && ts.isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { - if (currentSourceFile.text.charCodeAt(pos) === 9) { - currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); - } - else { - currentLineIndent++; - } - } - return currentLineIndent; - } - } - function getFirstConstructorWithBody(node) { - return ts.forEach(node.members, function (member) { - if (member.kind === 131 && ts.nodeIsPresent(member.body)) { - return member; - } - }); - } - function getAllAccessorDeclarations(declarations, accessor) { - var firstAccessor; - var getAccessor; - var setAccessor; - if (ts.hasDynamicName(accessor)) { - firstAccessor = accessor; - if (accessor.kind === 132) { - getAccessor = accessor; - } - else if (accessor.kind === 133) { - setAccessor = accessor; - } - else { - ts.Debug.fail("Accessor has wrong kind"); - } - } - else { - ts.forEach(declarations, function (member) { - if ((member.kind === 132 || member.kind === 133) && (member.flags & 128) === (accessor.flags & 128)) { - var memberName = ts.getPropertyNameForPropertyNameNode(member.name); - var accessorName = ts.getPropertyNameForPropertyNameNode(accessor.name); - if (memberName === accessorName) { - if (!firstAccessor) { - firstAccessor = member; - } - if (member.kind === 132 && !getAccessor) { - getAccessor = member; - } - if (member.kind === 133 && !setAccessor) { - setAccessor = member; - } - } - } - }); - } - return { - firstAccessor: firstAccessor, - getAccessor: getAccessor, - setAccessor: setAccessor - }; - } - function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { - var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); - sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); - return ts.combinePaths(newDirPath, sourceFilePath); - } - function getOwnEmitOutputFilePath(sourceFile, host, extension) { - var compilerOptions = host.getCompilerOptions(); - if (compilerOptions.outDir) { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); - } - else { - var emitOutputFilePathWithoutExtension = ts.removeFileExtension(sourceFile.fileName); - } - return emitOutputFilePathWithoutExtension + extension; - } - function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { - host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); + function getDeclarationDiagnostics(host, resolver, targetSourceFile) { + var diagnostics = []; + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); + return diagnostics; } + ts.getDeclarationDiagnostics = getDeclarationDiagnostics; function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); @@ -17032,33 +18969,47 @@ var ts; var reportedDeclarationError = false; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var aliasDeclarationEmitInfo = []; + var moduleElementDeclarationEmitInfo = []; + var asynchronousSubModuleDeclarationEmitInfo; var referencePathsOutput = ""; if (root) { if (!compilerOptions.noResolve) { var addedGlobalFileReference = false; ts.forEach(root.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - if (referencedFile && ((referencedFile.flags & 1024) || - shouldEmitToOwnFile(referencedFile, compilerOptions) || + if (referencedFile && ((referencedFile.flags & 2048) || + ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || !addedGlobalFileReference)) { writeReferencePath(referencedFile); - if (!isExternalModuleOrDeclarationFile(referencedFile)) { + if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { addedGlobalFileReference = true; } } }); } emitSourceFile(root); + if (moduleElementDeclarationEmitInfo.length) { + var oldWriter = writer; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.isVisible) { + ts.Debug.assert(aliasEmitInfo.node.kind === 209); + createAndSetNewTextWriterWithSymbolWriter(); + ts.Debug.assert(aliasEmitInfo.indent === 0); + writeImportDeclaration(aliasEmitInfo.node); + aliasEmitInfo.asynchronousOutput = writer.getText(); + } + }); + setWriter(oldWriter); + } } else { var emittedReferencedFiles = []; ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!isExternalModuleOrDeclarationFile(sourceFile)) { + if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { if (!compilerOptions.noResolve) { ts.forEach(sourceFile.referencedFiles, function (fileReference) { var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) && + if (referencedFile && (ts.isExternalModuleOrDeclarationFile(referencedFile) && !ts.contains(emittedReferencedFiles, referencedFile))) { writeReferencePath(referencedFile); emittedReferencedFiles.push(referencedFile); @@ -17071,7 +19022,7 @@ var ts; } return { reportedDeclarationError: reportedDeclarationError, - aliasDeclarationEmitInfo: aliasDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -17090,7 +19041,7 @@ var ts; } } function createAndSetNewTextWriterWithSymbolWriter() { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); writer.trackSymbol = trackSymbol; writer.writeKeyword = writer.write; writer.writeOperator = writer.write; @@ -17110,17 +19061,43 @@ var ts; increaseIndent = newWriter.increaseIndent; decreaseIndent = newWriter.decreaseIndent; } - function writeAsychronousImportDeclarations(importDeclarations) { + function writeAsynchronousModuleElements(nodes) { var oldWriter = writer; - ts.forEach(importDeclarations, function (aliasToWrite) { - var aliasEmitInfo = ts.forEach(aliasDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.declaration === aliasToWrite ? declEmitInfo : undefined; }); - if (aliasEmitInfo) { - createAndSetNewTextWriterWithSymbolWriter(); - for (var declarationIndent = aliasEmitInfo.indent; declarationIndent; declarationIndent--) { - increaseIndent(); + ts.forEach(nodes, function (declaration) { + var nodeToCheck; + if (declaration.kind === 198) { + nodeToCheck = declaration.parent.parent; + } + else if (declaration.kind === 212 || declaration.kind === 213 || declaration.kind === 210) { + ts.Debug.fail("We should be getting ImportDeclaration instead to write"); + } + else { + nodeToCheck = declaration; + } + var moduleElementEmitInfo = ts.forEach(moduleElementDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + if (!moduleElementEmitInfo && asynchronousSubModuleDeclarationEmitInfo) { + moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); + } + if (moduleElementEmitInfo) { + if (moduleElementEmitInfo.node.kind === 209) { + moduleElementEmitInfo.isVisible = true; + } + else { + createAndSetNewTextWriterWithSymbolWriter(); + for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { + increaseIndent(); + } + if (nodeToCheck.kind === 205) { + ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); + asynchronousSubModuleDeclarationEmitInfo = []; + } + writeModuleElement(nodeToCheck); + if (nodeToCheck.kind === 205) { + moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; + asynchronousSubModuleDeclarationEmitInfo = undefined; + } + moduleElementEmitInfo.asynchronousOutput = writer.getText(); } - writeImportDeclaration(aliasToWrite); - aliasEmitInfo.asynchronousOutput = writer.getText(); } }); setWriter(oldWriter); @@ -17128,7 +19105,7 @@ var ts; function handleSymbolAccessibilityError(symbolAccesibilityResult) { if (symbolAccesibilityResult.accessibility === 0) { if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { - writeAsychronousImportDeclarations(symbolAccesibilityResult.aliasesToMakeVisible); + writeAsynchronousModuleElements(symbolAccesibilityResult.aliasesToMakeVisible); } } else { @@ -17168,28 +19145,32 @@ var ts; } } function emitLines(nodes) { - for (var i = 0, n = nodes.length; i < n; i++) { - emit(nodes[i]); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + emit(node); } } - function emitSeparatedList(nodes, separator, eachNodeEmitFn) { + function emitSeparatedList(nodes, separator, eachNodeEmitFn, canEmitFn) { var currentWriterPos = writer.getTextPos(); - for (var i = 0, n = nodes.length; i < n; i++) { - if (currentWriterPos !== writer.getTextPos()) { - write(separator); + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; + if (!canEmitFn || canEmitFn(node)) { + if (currentWriterPos !== writer.getTextPos()) { + write(separator); + } + currentWriterPos = writer.getTextPos(); + eachNodeEmitFn(node); } - currentWriterPos = writer.getTextPos(); - eachNodeEmitFn(nodes[i]); } } - function emitCommaList(nodes, eachNodeEmitFn) { - emitSeparatedList(nodes, ", ", eachNodeEmitFn); + function emitCommaList(nodes, eachNodeEmitFn, canEmitFn) { + emitSeparatedList(nodes, ", ", eachNodeEmitFn, canEmitFn); } function writeJsDocComments(declaration) { if (declaration) { var jsDocComments = ts.getJsDocComments(declaration, currentSourceFile); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); - emitComments(currentSourceFile, writer, jsDocComments, true, newLine, writeCommentRange); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); + ts.emitComments(currentSourceFile, writer, jsDocComments, true, newLine, ts.writeCommentRange); } } function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type, getSymbolAccessibilityDiagnostic) { @@ -17198,51 +19179,63 @@ var ts; } function emitType(type) { switch (type.kind) { - case 110: + case 112: + case 121: case 119: - case 117: - case 111: - case 120: - case 98: + case 113: + case 122: + case 99: case 8: return writeTextOfNode(currentSourceFile, type); - case 137: - return emitTypeReference(type); - case 140: - return emitTypeQuery(type); - case 142: - return emitArrayType(type); - case 143: - return emitTupleType(type); - case 144: - return emitUnionType(type); - case 145: - return emitParenType(type); - case 138: - case 139: - return emitSignatureDeclarationWithJsDocComments(type); + case 177: + return emitHeritageClauseElement(type); case 141: + return emitTypeReference(type); + case 144: + return emitTypeQuery(type); + case 146: + return emitArrayType(type); + case 147: + return emitTupleType(type); + case 148: + return emitUnionType(type); + case 149: + return emitParenType(type); + case 142: + case 143: + return emitSignatureDeclarationWithJsDocComments(type); + case 145: return emitTypeLiteral(type); - case 64: + case 65: return emitEntityName(type); - case 123: + case 126: return emitEntityName(type); - default: - ts.Debug.fail("Unknown type annotation: " + type.kind); } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 200 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 208 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); function writeEntityName(entityName) { - if (entityName.kind === 64) { + if (entityName.kind === 65) { writeTextOfNode(currentSourceFile, entityName); } else { - var qualifiedName = entityName; - writeEntityName(qualifiedName.left); + var left = entityName.kind === 126 ? entityName.left : entityName.expression; + var right = entityName.kind === 126 ? entityName.right : entityName.name; + writeEntityName(left); write("."); - writeTextOfNode(currentSourceFile, qualifiedName.right); + writeTextOfNode(currentSourceFile, right); + } + } + } + function emitHeritageClauseElement(node) { + if (ts.isSupportedHeritageClauseElement(node)) { + ts.Debug.assert(node.expression.kind === 65 || node.expression.kind === 155); + emitEntityName(node.expression); + if (node.typeArguments) { + write("<"); + emitCommaList(node.typeArguments, emitType); + write(">"); } } } @@ -17292,17 +19285,101 @@ var ts; emitLines(node.statements); } function emitExportAssignment(node) { - write("export = "); - writeTextOfNode(currentSourceFile, node.exportName); + write(node.isExportEquals ? "export = " : "export default "); + if (node.expression.kind === 65) { + writeTextOfNode(currentSourceFile, node.expression); + } + else { + write(": "); + if (node.type) { + emitType(node.type); + } + else { + writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; + resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, 2, writer); + } + } write(";"); writeLine(); + if (node.expression.kind === 65) { + var nodes = resolver.collectLinkedAliases(node.expression); + writeAsynchronousModuleElements(nodes); + } + function getDefaultExportAccessibilityDiagnostic(diagnostic) { + return { + diagnosticMessage: ts.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, + errorNode: node + }; + } + } + function isModuleElementVisible(node) { + return resolver.isDeclarationVisible(node); + } + function emitModuleElement(node, isModuleElementVisible) { + if (isModuleElementVisible) { + writeModuleElement(node); + } + else if (node.kind === 208 || + (node.parent.kind === 227 && ts.isExternalModule(currentSourceFile))) { + var isVisible; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 227) { + asynchronousSubModuleDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + else { + if (node.kind === 209) { + var importDeclaration = node; + if (importDeclaration.importClause) { + isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || + isVisibleNamedBinding(importDeclaration.importClause.namedBindings); + } + } + moduleElementDeclarationEmitInfo.push({ + node: node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible: isVisible + }); + } + } + } + function writeModuleElement(node) { + switch (node.kind) { + case 200: + return writeFunctionDeclaration(node); + case 180: + return writeVariableStatement(node); + case 202: + return writeInterfaceDeclaration(node); + case 201: + return writeClassDeclaration(node); + case 203: + return writeTypeAliasDeclaration(node); + case 204: + return writeEnumDeclaration(node); + case 205: + return writeModuleDeclaration(node); + case 208: + return writeImportEqualsDeclaration(node); + case 209: + return writeImportDeclaration(node); + default: + ts.Debug.fail("Unknown symbol kind"); + } } function emitModuleElementDeclarationFlags(node) { if (node.parent === currentSourceFile) { if (node.flags & 1) { write("export "); } - if (node.kind !== 195) { + if (node.flags & 256) { + write("default "); + } + else if (node.kind !== 202) { write("declare "); } } @@ -17318,19 +19395,7 @@ var ts; write("static "); } } - function emitImportDeclaration(node) { - var nodeEmitInfo = { - declaration: node, - outputPos: writer.getTextPos(), - indent: writer.getIndent(), - hasWritten: resolver.isDeclarationVisible(node) - }; - aliasDeclarationEmitInfo.push(nodeEmitInfo); - if (nodeEmitInfo.hasWritten) { - writeImportDeclaration(node); - } - } - function writeImportDeclaration(node) { + function writeImportEqualsDeclaration(node) { emitJsDocComments(node); if (node.flags & 1) { write("export "); @@ -17338,13 +19403,13 @@ var ts; write("import "); writeTextOfNode(currentSourceFile, node.name); write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { + if (ts.isInternalModuleImportEqualsDeclaration(node)) { emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); write(";"); } else { write("require("); - writeTextOfNode(currentSourceFile, ts.getExternalModuleImportDeclarationExpression(node)); + writeTextOfNode(currentSourceFile, ts.getExternalModuleImportEqualsDeclarationExpression(node)); write(");"); } writer.writeLine(); @@ -17356,40 +19421,110 @@ var ts; }; } } - function emitModuleDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("module "); - writeTextOfNode(currentSourceFile, node.name); - while (node.body.kind !== 199) { - node = node.body; - write("."); - writeTextOfNode(currentSourceFile, node.name); + function isVisibleNamedBinding(namedBindings) { + if (namedBindings) { + if (namedBindings.kind === 211) { + return resolver.isDeclarationVisible(namedBindings); + } + else { + return ts.forEach(namedBindings.elements, function (namedImport) { return resolver.isDeclarationVisible(namedImport); }); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.body.statements); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; } } - function emitTypeAliasDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("type "); - writeTextOfNode(currentSourceFile, node.name); - write(" = "); - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); - write(";"); - writeLine(); + function writeImportDeclaration(node) { + if (!node.importClause && !(node.flags & 1)) { + return; } + emitJsDocComments(node); + if (node.flags & 1) { + write("export "); + } + write("import "); + if (node.importClause) { + var currentWriterPos = writer.getTextPos(); + if (node.importClause.name && resolver.isDeclarationVisible(node.importClause)) { + writeTextOfNode(currentSourceFile, node.importClause.name); + } + if (node.importClause.namedBindings && isVisibleNamedBinding(node.importClause.namedBindings)) { + if (currentWriterPos !== writer.getTextPos()) { + write(", "); + } + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + writeTextOfNode(currentSourceFile, node.importClause.namedBindings.name); + } + else { + write("{ "); + emitCommaList(node.importClause.namedBindings.elements, emitImportOrExportSpecifier, resolver.isDeclarationVisible); + write(" }"); + } + } + write(" from "); + } + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + write(";"); + writer.writeLine(); + } + function emitImportOrExportSpecifier(node) { + if (node.propertyName) { + writeTextOfNode(currentSourceFile, node.propertyName); + write(" as "); + } + writeTextOfNode(currentSourceFile, node.name); + } + function emitExportSpecifier(node) { + emitImportOrExportSpecifier(node); + var nodes = resolver.collectLinkedAliases(node.propertyName || node.name); + writeAsynchronousModuleElements(nodes); + } + function emitExportDeclaration(node) { + emitJsDocComments(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitCommaList(node.exportClause.elements, emitExportSpecifier); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + } + write(";"); + writer.writeLine(); + } + function writeModuleDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("module "); + writeTextOfNode(currentSourceFile, node.name); + while (node.body.kind !== 206) { + node = node.body; + write("."); + writeTextOfNode(currentSourceFile, node.name); + } + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.body.statements); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + function writeTypeAliasDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("type "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); + write(";"); + writeLine(); function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult) { return { diagnosticMessage: ts.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, @@ -17398,23 +19533,21 @@ var ts; }; } } - function emitEnumDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isConst(node)) { - write("const "); - } - write("enum "); - writeTextOfNode(currentSourceFile, node.name); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); + function writeEnumDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isConst(node)) { + write("const "); } + write("enum "); + writeTextOfNode(currentSourceFile, node.name); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); } function emitEnumMemberDeclaration(node) { emitJsDocComments(node); @@ -17428,7 +19561,7 @@ var ts; writeLine(); } function isPrivateMethodTypeParameter(node) { - return node.parent.kind === 130 && (node.parent.flags & 32); + return node.parent.kind === 134 && (node.parent.flags & 32); } function emitTypeParameters(typeParameters) { function emitTypeParameter(node) { @@ -17438,15 +19571,15 @@ var ts; writeTextOfNode(currentSourceFile, node.name); if (node.constraint && !isPrivateMethodTypeParameter(node)) { write(" extends "); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - (node.parent.parent && node.parent.parent.kind === 141)) { - ts.Debug.assert(node.parent.kind === 130 || - node.parent.kind === 129 || + if (node.parent.kind === 142 || + node.parent.kind === 143 || + (node.parent.parent && node.parent.parent.kind === 145)) { + ts.Debug.assert(node.parent.kind === 134 || + node.parent.kind === 133 || + node.parent.kind === 142 || + node.parent.kind === 143 || node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.kind === 134 || - node.parent.kind === 135); + node.parent.kind === 139); emitType(node.constraint); } else { @@ -17456,31 +19589,31 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 194: + case 201: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 195: + case 202: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; - case 135: + case 139: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 134: + case 138: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; break; - case 130: - case 129: + case 134: + case 133: if (node.parent.flags & 128) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 194) { + else if (node.parent.parent.kind === 201) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 193: + case 200: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -17505,11 +19638,15 @@ var ts; emitCommaList(typeReferences, emitTypeOfTypeReference); } function emitTypeOfTypeReference(node) { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + if (ts.isSupportedHeritageClauseElement(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + } function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 194) { - diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; + if (node.parent.parent.kind === 201) { + diagnosticMessage = isImplementsList ? + ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : + ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1; @@ -17522,7 +19659,7 @@ var ts; } } } - function emitClassDeclaration(node) { + function writeClassDeclaration(node) { function emitParameterProperties(constructorDeclaration) { if (constructorDeclaration) { ts.forEach(constructorDeclaration.parameters, function (param) { @@ -17532,49 +19669,45 @@ var ts; }); } } - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("class "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - var baseTypeNode = ts.getClassBaseTypeNode(node); - if (baseTypeNode) { - emitHeritageClause([baseTypeNode], false); - } - emitHeritageClause(ts.getClassImplementedTypeNodes(node), true); - write(" {"); - writeLine(); - increaseIndent(); - emitParameterProperties(getFirstConstructorWithBody(node)); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("class "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + emitHeritageClause([baseTypeNode], false); } + emitHeritageClause(ts.getClassImplementsHeritageClauseElements(node), true); + write(" {"); + writeLine(); + increaseIndent(); + emitParameterProperties(ts.getFirstConstructorWithBody(node)); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } - function emitInterfaceDeclaration(node) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("interface "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } + function writeInterfaceDeclaration(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("interface "); + writeTextOfNode(currentSourceFile, node.name); + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + emitHeritageClause(ts.getInterfaceBaseTypeNodes(node), false); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; } function emitPropertyDeclaration(node) { if (ts.hasDynamicName(node)) { @@ -17587,40 +19720,90 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 191 || resolver.isDeclarationVisible(node)) { - writeTextOfNode(currentSourceFile, node.name); - if ((node.kind === 128 || node.kind === 127) && ts.hasQuestionToken(node)) { - write("?"); + if (node.kind !== 198 || resolver.isDeclarationVisible(node)) { + if (ts.isBindingPattern(node.name)) { + emitBindingPattern(node.name); } - if ((node.kind === 128 || node.kind === 127) && node.parent.kind === 141) { - emitTypeOfVariableDeclarationFromTypeLiteral(node); + else { + writeTextOfNode(currentSourceFile, node.name); + if ((node.kind === 132 || node.kind === 131) && ts.hasQuestionToken(node)) { + write("?"); + } + if ((node.kind === 132 || node.kind === 131) && node.parent.kind === 145) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.flags & 32)) { + writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } } - else if (!(node.flags & 32)) { - writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } + function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + if (node.kind === 198) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + } + else if (node.kind === 132 || node.kind === 131) { + if (node.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } } } function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - if (node.kind === 191) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; - } - else if (node.kind === 128 || node.kind === 127) { - if (node.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; - } - } + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name } : undefined; } + function emitBindingPattern(bindingPattern) { + var elements = []; + for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { + var element = _a[_i]; + if (element.kind !== 175) { + elements.push(element); + } + } + emitCommaList(elements, emitBindingElement); + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + writeTextOfNode(currentSourceFile, bindingElement.name); + writeTypeOfDeclaration(bindingElement, undefined, getBindingElementTypeVisibilityError); + } + } + } } function emitTypeOfVariableDeclarationFromTypeLiteral(node) { if (node.type) { @@ -17628,40 +19811,41 @@ var ts; emitType(node.type); } } - function emitVariableStatement(node) { - var hasDeclarationWithEmit = ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); - if (hasDeclarationWithEmit) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } - emitCommaList(node.declarationList.declarations, emitVariableDeclaration); - write(";"); - writeLine(); + function isVariableStatementVisible(node) { + return ts.forEach(node.declarationList.declarations, function (varDeclaration) { return resolver.isDeclarationVisible(varDeclaration); }); + } + function writeVariableStatement(node) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (ts.isLet(node.declarationList)) { + write("let "); } + else if (ts.isConst(node.declarationList)) { + write("const "); + } + else { + write("var "); + } + emitCommaList(node.declarationList.declarations, emitVariableDeclaration, resolver.isDeclarationVisible); + write(";"); + writeLine(); } function emitAccessorDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - var accessors = getAllAccessorDeclarations(node.parent.members, node); + var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); + var accessorWithTypeAnnotation; if (node === accessors.firstAccessor) { emitJsDocComments(accessors.getAccessor); emitJsDocComments(accessors.setAccessor); emitClassMemberDeclarationFlags(node); writeTextOfNode(currentSourceFile, node.name); if (!(node.flags & 32)) { - var accessorWithTypeAnnotation = node; + accessorWithTypeAnnotation = node; var type = getTypeAnnotationFromAccessor(node); if (!type) { - var anotherAccessor = node.kind === 132 ? accessors.setAccessor : accessors.getAccessor; + var anotherAccessor = node.kind === 136 ? accessors.setAccessor : accessors.getAccessor; type = getTypeAnnotationFromAccessor(anotherAccessor); if (type) { accessorWithTypeAnnotation = anotherAccessor; @@ -17674,17 +19858,25 @@ var ts; } function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 132 ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type : undefined; + return accessor.kind === 136 + ? accessor.type + : accessor.parameters.length > 0 + ? accessor.parameters[0].type + : undefined; } } function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (accessorWithTypeAnnotation.kind === 133) { + if (accessorWithTypeAnnotation.kind === 137) { if (accessorWithTypeAnnotation.parent.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; } return { diagnosticMessage: diagnosticMessage, @@ -17694,10 +19886,18 @@ var ts; } else { if (accessorWithTypeAnnotation.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; } return { diagnosticMessage: diagnosticMessage, @@ -17707,24 +19907,23 @@ var ts; } } } - function emitFunctionDeclaration(node) { + function writeFunctionDeclaration(node) { if (ts.hasDynamicName(node)) { return; } - if ((node.kind !== 193 || resolver.isDeclarationVisible(node)) && - !resolver.isImplementationOfOverload(node)) { + if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 193) { + if (node.kind === 200) { emitModuleElementDeclarationFlags(node); } - else if (node.kind === 130) { + else if (node.kind === 134) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 193) { + if (node.kind === 200) { write("function "); writeTextOfNode(currentSourceFile, node.name); } - else if (node.kind === 131) { + else if (node.kind === 135) { write("constructor"); } else { @@ -17741,11 +19940,11 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { - if (node.kind === 135 || node.kind === 139) { + if (node.kind === 139 || node.kind === 143) { write("new "); } emitTypeParameters(node.typeParameters); - if (node.kind === 136) { + if (node.kind === 140) { write("["); } else { @@ -17754,20 +19953,20 @@ var ts; var prevEnclosingDeclaration = enclosingDeclaration; enclosingDeclaration = node; emitCommaList(node.parameters, emitParameterDeclaration); - if (node.kind === 136) { + if (node.kind === 140) { write("]"); } else { write(")"); } - var isFunctionTypeOrConstructorType = node.kind === 138 || node.kind === 139; - if (isFunctionTypeOrConstructorType || node.parent.kind === 141) { + var isFunctionTypeOrConstructorType = node.kind === 142 || node.kind === 143; + if (isFunctionTypeOrConstructorType || node.parent.kind === 145) { if (node.type) { write(isFunctionTypeOrConstructorType ? " => " : ": "); emitType(node.type); } } - else if (node.kind !== 131 && !(node.flags & 32)) { + else if (node.kind !== 135 && !(node.flags & 32)) { writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); } enclosingDeclaration = prevEnclosingDeclaration; @@ -17778,29 +19977,49 @@ var ts; function getReturnTypeVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.kind) { - case 135: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + case 139: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 138: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 140: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; break; case 134: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - case 136: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - case 130: - case 129: + case 133: if (node.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; + else if (node.parent.kind === 201) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; } else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 193: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; + case 200: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : + ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; break; default: ts.Debug.fail("This is unknown kind for signature: " + node.kind); @@ -17818,7 +20037,7 @@ var ts; write("..."); } if (ts.isBindingPattern(node.name)) { - write("_" + ts.indexOf(node.parent.parameters, node)); + emitBindingPattern(node.name); } else { writeTextOfNode(currentSourceFile, node.name); @@ -17827,103 +20046,204 @@ var ts; write("?"); } decreaseIndent(); - if (node.parent.kind === 138 || - node.parent.kind === 139 || - node.parent.parent.kind === 141) { + if (node.parent.kind === 142 || + node.parent.kind === 143 || + node.parent.parent.kind === 145) { emitTypeOfVariableDeclarationFromTypeLiteral(node); } else if (!(node.parent.flags & 32)) { writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); } function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage; - switch (node.parent.kind) { - case 131: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - break; - case 135: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 134: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - case 130: - case 129: - if (node.parent.flags & 128) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.parent.kind === 194) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; - } - break; - case 193: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; - break; - default: - ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); - } - return { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { diagnosticMessage: diagnosticMessage, errorNode: node, typeName: node.name - }; + } : undefined; + } + function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { + switch (node.parent.kind) { + case 135: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + case 139: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + case 138: + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 134: + case 133: + if (node.parent.flags & 128) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === 201) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + return symbolAccesibilityResult.errorModuleName ? + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + case 200: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === 2 ? + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : + ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + default: + ts.Debug.fail("This is unknown parent for parameter: " + node.parent.kind); + } + } + function emitBindingPattern(bindingPattern) { + if (bindingPattern.kind === 150) { + write("{"); + emitCommaList(bindingPattern.elements, emitBindingElement); + write("}"); + } + else if (bindingPattern.kind === 151) { + write("["); + var elements = bindingPattern.elements; + emitCommaList(elements, emitBindingElement); + if (elements && elements.hasTrailingComma) { + write(", "); + } + write("]"); + } + } + function emitBindingElement(bindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { + var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage: diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + if (bindingElement.kind === 175) { + write(" "); + } + else if (bindingElement.kind === 152) { + if (bindingElement.propertyName) { + writeTextOfNode(currentSourceFile, bindingElement.propertyName); + write(": "); + emitBindingPattern(bindingElement.name); + } + else if (bindingElement.name) { + if (ts.isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + ts.Debug.assert(bindingElement.name.kind === 65); + if (bindingElement.dotDotDotToken) { + write("..."); + } + writeTextOfNode(currentSourceFile, bindingElement.name); + } + } + } } } function emitNode(node) { switch (node.kind) { - case 131: - case 193: - case 130: - case 129: - return emitFunctionDeclaration(node); + case 200: + case 205: + case 208: + case 202: + case 201: + case 203: + case 204: + return emitModuleElement(node, isModuleElementVisible(node)); + case 180: + return emitModuleElement(node, isVariableStatementVisible(node)); + case 209: + return emitModuleElement(node, !node.importClause); + case 215: + return emitExportDeclaration(node); case 135: case 134: - case 136: - return emitSignatureDeclarationWithJsDocComments(node); - case 132: case 133: + return writeFunctionDeclaration(node); + case 139: + case 138: + case 140: + return emitSignatureDeclarationWithJsDocComments(node); + case 136: + case 137: return emitAccessorDeclaration(node); - case 173: - return emitVariableStatement(node); - case 128: - case 127: + case 132: + case 131: return emitPropertyDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 196: - return emitTypeAliasDeclaration(node); - case 209: + case 226: return emitEnumMemberDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 198: - return emitModuleDeclaration(node); - case 200: - return emitImportDeclaration(node); - case 201: + case 214: return emitExportAssignment(node); - case 210: + case 227: return emitSourceFile(node); } } function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 1024 ? referencedFile.fileName : shouldEmitToOwnFile(referencedFile, compilerOptions) ? getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; + var declFileName = referencedFile.flags & 2048 + ? referencedFile.fileName + : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) + ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") + : ts.removeFileExtension(compilerOptions.out) + ".d.ts"; declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); referencePathsOutput += "/// " + newLine; } } - function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); + if (!emitDeclarationResult.reportedDeclarationError) { + var declarationOutput = emitDeclarationResult.referencePathsOutput + + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); + ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + } + function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { + var appliedSyncOutputPos = 0; + var declarationOutput = ""; + ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { + if (aliasEmitInfo.asynchronousOutput) { + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); + declarationOutput += getDeclarationOutput(aliasEmitInfo.asynchronousOutput, aliasEmitInfo.subModuleElementDeclarationEmitInfo); + appliedSyncOutputPos = aliasEmitInfo.outputPos; + } + }); + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos); + return declarationOutput; + } } - ts.getDeclarationDiagnostics = getDeclarationDiagnostics; + ts.writeDeclarationFile = writeDeclarationFile; +})(ts || (ts = {})); +/// +/// +var ts; +(function (ts) { + function isExternalModuleOrDeclarationFile(sourceFile) { + return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); + } + ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; + var TempFlags; + (function (TempFlags) { + TempFlags[TempFlags["Auto"] = 0] = "Auto"; + TempFlags[TempFlags["CountMask"] = 268435455] = "CountMask"; + TempFlags[TempFlags["_i"] = 268435456] = "_i"; + TempFlags[TempFlags["_n"] = 536870912] = "_n"; + })(TempFlags || (TempFlags = {})); function emitFiles(resolver, host, targetSourceFile) { var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; @@ -17932,8 +20252,8 @@ var ts; var newLine = host.getNewLine(); if (targetSourceFile === undefined) { ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, ".js"); emitFile(jsFilePath, sourceFile); } }); @@ -17942,8 +20262,8 @@ var ts; } } else { - if (shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { + var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); emitFile(jsFilePath, targetSourceFile); } else if (!ts.isDeclarationFile(targetSourceFile) && compilerOptions.out) { @@ -17956,27 +20276,49 @@ var ts; diagnostics: diagnostics, sourceMaps: sourceMapDataList }; + function isNodeDescendentOf(node, ancestor) { + while (node) { + if (node === ancestor) + return true; + node = node.parent; + } + return false; + } + function isUniqueLocalName(name, container) { + for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { + if (node.locals && ts.hasProperty(node.locals, name)) { + if (node.locals[name].flags & (107455 | 1048576 | 8388608)) { + return false; + } + } + } + return true; + } function emitJavaScript(jsFilePath, root) { - var writer = createTextWriter(newLine); + var writer = ts.createTextWriter(newLine); var write = writer.write; var writeTextOfNode = writer.writeTextOfNode; var writeLine = writer.writeLine; var increaseIndent = writer.increaseIndent; var decreaseIndent = writer.decreaseIndent; var currentSourceFile; + var generatedNameSet = {}; + var nodeToGeneratedName = []; + var blockScopedVariableToGeneratedName; + var computedPropertyNamesToGeneratedNames; var extendsEmitted = false; - var tempCount = 0; + var decorateEmitted = false; + var tempFlags = 0; var tempVariables; var tempParameters; + var externalImports; + var exportSpecifiers; + var exportEquals; + var hasExportStars; var writeEmittedFiles = writeJavaScriptFile; - var emitLeadingComments = compilerOptions.removeComments ? function (node) { } : emitLeadingDeclarationComments; - var emitTrailingComments = compilerOptions.removeComments ? function (node) { } : emitTrailingDeclarationComments; - var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfLocalPosition; var detachedCommentsInfo; - var emitDetachedComments = compilerOptions.removeComments ? function (node) { } : emitDetachedCommentsAtPosition; - var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? function (node) { } : emitPinnedOrTripleSlashCommentsOfNode; - var writeComment = writeCommentRange; - var emit = emitNode; + var writeComment = ts.writeCommentRange; + var emit = emitNodeWithoutSourceMap; var emitStart = function (node) { }; var emitEnd = function (node) { }; var emitToken = emitTokenText; @@ -17987,18 +20329,125 @@ var ts; initializeEmitterWithSourceMaps(); } if (root) { - emit(root); + emitSourceFile(root); } else { ts.forEach(host.getSourceFiles(), function (sourceFile) { if (!isExternalModuleOrDeclarationFile(sourceFile)) { - emit(sourceFile); + emitSourceFile(sourceFile); } }); } writeLine(); writeEmittedFiles(writer.getText(), compilerOptions.emitBOM); return; + function emitSourceFile(sourceFile) { + currentSourceFile = sourceFile; + emit(sourceFile); + } + function isUniqueName(name) { + return !resolver.hasGlobalName(name) && + !ts.hasProperty(currentSourceFile.identifiers, name) && + !ts.hasProperty(generatedNameSet, name); + } + function makeTempVariableName(flags) { + if (flags && !(tempFlags & flags)) { + var name = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name)) { + tempFlags |= flags; + return name; + } + } + while (true) { + var count = tempFlags & 268435455; + tempFlags++; + if (count !== 8 && count !== 13) { + var name_12 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_12)) { + return name_12; + } + } + } + } + function makeUniqueName(baseName) { + if (baseName.charCodeAt(baseName.length - 1) !== 95) { + baseName += "_"; + } + var i = 1; + while (true) { + var generatedName = baseName + i; + if (isUniqueName(generatedName)) { + return generatedNameSet[generatedName] = generatedName; + } + i++; + } + } + function assignGeneratedName(node, name) { + nodeToGeneratedName[ts.getNodeId(node)] = ts.unescapeIdentifier(name); + } + function generateNameForFunctionOrClassDeclaration(node) { + if (!node.name) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForModuleOrEnum(node) { + if (node.name.kind === 65) { + var name_13 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_13, node) ? name_13 : makeUniqueName(name_13)); + } + } + function generateNameForImportOrExportDeclaration(node) { + var expr = ts.getExternalModuleName(node); + var baseName = expr.kind === 8 ? + ts.escapeIdentifier(ts.makeIdentifierFromModuleName(expr.text)) : "module"; + assignGeneratedName(node, makeUniqueName(baseName)); + } + function generateNameForImportDeclaration(node) { + if (node.importClause) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportDeclaration(node) { + if (node.moduleSpecifier) { + generateNameForImportOrExportDeclaration(node); + } + } + function generateNameForExportAssignment(node) { + if (node.expression && node.expression.kind !== 65) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + function generateNameForNode(node) { + switch (node.kind) { + case 200: + case 201: + generateNameForFunctionOrClassDeclaration(node); + break; + case 205: + generateNameForModuleOrEnum(node); + generateNameForNode(node.body); + break; + case 204: + generateNameForModuleOrEnum(node); + break; + case 209: + generateNameForImportDeclaration(node); + break; + case 215: + generateNameForExportDeclaration(node); + break; + case 214: + generateNameForExportAssignment(node); + break; + } + } + function getGeneratedNameForNode(node) { + var nodeId = ts.getNodeId(node); + if (!nodeToGeneratedName[nodeId]) { + generateNameForNode(node); + } + return nodeToGeneratedName[nodeId]; + } function initializeEmitterWithSourceMaps() { var sourceMapDir; var sourceMapSourceIndex = -1; @@ -18123,8 +20572,8 @@ var ts; if (scopeName) { var parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { - var name = node.name; - if (!name || name.kind !== 124) { + var name_14 = node.name; + if (!name_14 || name_14.kind !== 127) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -18141,18 +20590,20 @@ var ts; if (scopeName) { recordScopeNameStart(scopeName); } - else if (node.kind === 193 || - node.kind === 158 || - node.kind === 130 || - node.kind === 129 || - node.kind === 132 || + else if (node.kind === 200 || + node.kind === 162 || + node.kind === 134 || node.kind === 133 || - node.kind === 198 || - node.kind === 194 || - node.kind === 197) { + node.kind === 136 || + node.kind === 137 || + node.kind === 205 || + node.kind === 201 || + node.kind === 204) { if (node.name) { - var name = node.name; - scopeName = name.kind === 124 ? ts.getTextOfNode(name) : node.name.text; + var name_15 = node.name; + scopeName = name_15.kind === 127 + ? ts.getTextOfNode(name_15) + : node.name.text; } recordScopeNameStart(scopeName); } @@ -18166,7 +20617,7 @@ var ts; ; function writeCommentRangeWithMap(curentSourceFile, writer, comment, newLine) { recordSourceMapSpan(comment.pos); - writeCommentRange(currentSourceFile, writer, comment, newLine); + ts.writeCommentRange(currentSourceFile, writer, comment, newLine); recordSourceMapSpan(comment.end); } function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings) { @@ -18194,7 +20645,7 @@ var ts; } function writeJavaScriptAndSourceMapFile(emitOutput, writeByteOrderMark) { encodeLastRecordedSourceMapSpan(); - writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); + ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings), false); sourceMapDataList.push(sourceMapData); writeJavaScriptFile(emitOutput + "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL, writeByteOrderMark); } @@ -18217,7 +20668,7 @@ var ts; if (compilerOptions.mapRoot) { sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); if (root) { - sourceMapDir = ts.getDirectoryPath(getSourceFilePathInNewDir(root, host, sourceMapDir)); + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); } if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); @@ -18230,21 +20681,24 @@ var ts; else { sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); } - function emitNodeWithMap(node) { + function emitNodeWithSourceMap(node, allowGeneratedIdentifiers) { if (node) { - if (node.kind != 210) { + if (ts.nodeIsSynthesized(node)) { + return emitNodeWithoutSourceMap(node, false); + } + if (node.kind != 227) { recordEmitNodeStartSpan(node); - emitNode(node); + emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers); recordEmitNodeEndSpan(node); } else { recordNewSourceFileStart(node); - emitNode(node); + emitNodeWithoutSourceMap(node, false); } } } writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithMap; + emit = emitNodeWithSourceMap; emitStart = recordEmitNodeStartSpan; emitEnd = recordEmitNodeEndSpan; emitToken = writeTextWithSpanRecord; @@ -18253,19 +20707,11 @@ var ts; writeComment = writeCommentRangeWithMap; } function writeJavaScriptFile(emitOutput, writeByteOrderMark) { - writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); } - function createTempVariable(location, forLoopVariable) { - var name = forLoopVariable ? "_i" : undefined; - while (true) { - if (name && resolver.isUnknownIdentifier(location, name)) { - break; - } - name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + 97) : tempCount - 25); - tempCount++; - } - var result = ts.createNode(64); - result.text = name; + function createTempVariable(flags) { + var result = ts.createSynthesizedNode(65); + result.text = makeTempVariableName(flags); return result; } function recordTempDeclaration(name) { @@ -18274,8 +20720,8 @@ var ts; } tempVariables.push(name); } - function createAndRecordTempVariable(location) { - var temp = createTempVariable(location, false); + function createAndRecordTempVariable(flags) { + var temp = createTempVariable(flags); recordTempDeclaration(temp); return temp; } @@ -18308,7 +20754,7 @@ var ts; emit(node); } } - function emitParenthesized(node, parenthesized) { + function emitParenthesizedIf(node, parenthesized) { if (parenthesized) { write("("); } @@ -18345,12 +20791,11 @@ var ts; } emit(nodes[i]); } - var closeTokenIsOnSameLineAsLastElement = nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes)); if (nodes.hasTrailingComma && allowTrailingComma) { write(","); } decreaseIndent(); - if (closeTokenIsOnSameLineAsLastElement) { + if (nodeEndPositionsAreOnSameLine(parent, ts.lastOrUndefined(nodes))) { if (spacesBetweenBraces) { write(" "); } @@ -18395,37 +20840,109 @@ var ts; emit(nodes[i]); } } - function isBinaryOrOctalIntegerLiteral(text) { - if (text.length <= 0) { - return false; - } - if (text.charCodeAt(1) === 66 || text.charCodeAt(1) === 98 || - text.charCodeAt(1) === 79 || text.charCodeAt(1) === 111) { - return true; + function isBinaryOrOctalIntegerLiteral(node, text) { + if (node.kind === 7 && text.length > 1) { + switch (text.charCodeAt(1)) { + case 98: + case 66: + case 111: + case 79: + return true; + } } return false; } function emitLiteral(node) { - var text = languageVersion < 2 && ts.isTemplateLiteralKind(node.kind) ? getTemplateLiteralAsStringLiteral(node) : node.parent ? ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node) : node.text; + var text = getLiteralText(node); if (compilerOptions.sourceMap && (node.kind === 8 || ts.isTemplateLiteralKind(node.kind))) { writer.writeLiteral(text); } - else if (languageVersion < 2 && node.kind === 7 && isBinaryOrOctalIntegerLiteral(text)) { + else if (languageVersion < 2 && isBinaryOrOctalIntegerLiteral(node, text)) { write(node.text); } else { write(text); } } - function getTemplateLiteralAsStringLiteral(node) { - return '"' + ts.escapeString(node.text) + '"'; + function getLiteralText(node) { + if (languageVersion < 2 && (ts.isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { + return getQuotedEscapedLiteralText('"', node.text, '"'); + } + if (node.parent) { + return ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + } + switch (node.kind) { + case 8: + return getQuotedEscapedLiteralText('"', node.text, '"'); + case 10: + return getQuotedEscapedLiteralText('`', node.text, '`'); + case 11: + return getQuotedEscapedLiteralText('`', node.text, '${'); + case 12: + return getQuotedEscapedLiteralText('}', node.text, '${'); + case 13: + return getQuotedEscapedLiteralText('}', node.text, '`'); + case 7: + return node.text; + } + ts.Debug.fail("Literal kind '" + node.kind + "' not accounted for."); + } + function getQuotedEscapedLiteralText(leftQuote, text, rightQuote) { + return leftQuote + ts.escapeNonAsciiCharacters(ts.escapeString(text)) + rightQuote; + } + function emitDownlevelRawTemplateLiteral(node) { + var text = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + var isLast = node.kind === 10 || node.kind === 13; + text = text.substring(1, text.length - (isLast ? 1 : 2)); + text = text.replace(/\r\n?/g, "\n"); + text = ts.escapeString(text); + write('"' + text + '"'); + } + function emitDownlevelTaggedTemplateArray(node, literalEmitter) { + write("["); + if (node.template.kind === 10) { + literalEmitter(node.template); + } + else { + literalEmitter(node.template.head); + ts.forEach(node.template.templateSpans, function (child) { + write(", "); + literalEmitter(child.literal); + }); + } + write("]"); + } + function emitDownlevelTaggedTemplate(node) { + var tempVariable = createAndRecordTempVariable(0); + write("("); + emit(tempVariable); + write(" = "); + emitDownlevelTaggedTemplateArray(node, emit); + write(", "); + emit(tempVariable); + write(".raw = "); + emitDownlevelTaggedTemplateArray(node, emitDownlevelRawTemplateLiteral); + write(", "); + emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); + write("("); + emit(tempVariable); + if (node.template.kind === 171) { + ts.forEach(node.template.templateSpans, function (templateSpan) { + write(", "); + var needsParens = templateSpan.expression.kind === 169 + && templateSpan.expression.operatorToken.kind === 23; + emitParenthesizedIf(templateSpan.expression, needsParens); + }); + } + write("))"); } function emitTemplateExpression(node) { if (languageVersion >= 2) { ts.forEachChild(node, emit); return; } - var emitOuterParens = ts.isExpression(node.parent) && templateNeedsParens(node, node.parent); + var emitOuterParens = ts.isExpression(node.parent) + && templateNeedsParens(node, node.parent); if (emitOuterParens) { write("("); } @@ -18434,13 +20951,14 @@ var ts; emitLiteral(node.head); headEmitted = true; } - for (var i = 0; i < node.templateSpans.length; i++) { + for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 157 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; + var needsParens = templateSpan.expression.kind !== 161 + && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); } - emitParenthesized(templateSpan.expression, needsParens); + emitParenthesizedIf(templateSpan.expression, needsParens); if (templateSpan.literal.text.length !== 0) { write(" + "); emitLiteral(templateSpan.literal); @@ -18450,16 +20968,29 @@ var ts; write(")"); } function shouldEmitTemplateHead() { + // If this expression has an empty head literal and the first template span has a non-empty + // literal, then emitting the empty head literal is not necessary. + // `${ foo } and ${ bar }` + // can be emitted as + // foo + " and " + bar + // This is because it is only required that one of the first two operands in the emit + // output must be a string literal, so that the other operand and all following operands + // are forced into strings. + // + // If the first template span has an empty literal, then the head must still be emitted. + // `${ foo }${ bar }` + // must still be emitted as + // "" + foo + bar ts.Debug.assert(node.templateSpans.length !== 0); return node.head.text.length !== 0 || node.templateSpans[0].literal.text.length === 0; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 153: - case 154: - return parent.expression === template; - case 155: case 157: + case 158: + return parent.expression === template; + case 159: + case 161: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -18467,7 +20998,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 165: + case 169: switch (expression.operatorToken.kind) { case 35: case 36: @@ -18479,7 +21010,7 @@ var ts; default: return -1; } - case 166: + case 170: return -1; default: return 1; @@ -18491,11 +21022,27 @@ var ts; emit(span.literal); } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 148); + ts.Debug.assert(node.kind !== 152); if (node.kind === 8) { emitLiteral(node); } - else if (node.kind === 124) { + else if (node.kind === 127) { + if (ts.nodeIsDecorated(node.parent)) { + if (!computedPropertyNamesToGeneratedNames) { + computedPropertyNamesToGeneratedNames = []; + } + var generatedName = computedPropertyNamesToGeneratedNames[node.id]; + if (generatedName) { + write(generatedName); + return; + } + var generatedVariable = createTempVariable(0); + generatedName = generatedVariable.text; + recordTempDeclaration(generatedVariable); + computedPropertyNamesToGeneratedNames[node.id] = generatedName; + write(generatedName); + write(" = "); + } emit(node.expression); } else { @@ -18512,45 +21059,66 @@ var ts; function isNotExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: case 129: - case 193: - case 132: - case 133: - case 158: - case 194: - case 195: - case 197: case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: case 200: - return parent.name === node; - case 183: - case 182: + case 136: + case 137: + case 162: case 201: + case 202: + case 204: + case 205: + case 208: + case 210: + case 211: + return parent.name === node; + case 213: + case 217: + return parent.name === node || parent.propertyName === node; + case 190: + case 189: + case 214: return false; - case 187: + case 194: return node.parent.label === node; - case 206: - return node.parent.name === node; } } function emitExpressionIdentifier(node) { - var prefix = resolver.getExpressionNamePrefix(node); - if (prefix) { - write(prefix); - write("."); + var substitution = resolver.getExpressionNameSubstitution(node, getGeneratedNameForNode); + if (substitution) { + write(substitution); + } + else { + writeTextOfNode(currentSourceFile, node); } - writeTextOfNode(currentSourceFile, node); } - function emitIdentifier(node) { + function getGeneratedNameForIdentifier(node) { + if (ts.nodeIsSynthesized(node) || !blockScopedVariableToGeneratedName) { + return undefined; + } + var variableId = resolver.getBlockScopedVariableId(node); + if (variableId === undefined) { + return undefined; + } + return blockScopedVariableToGeneratedName[variableId]; + } + function emitIdentifier(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers) { + var generatedName = getGeneratedNameForIdentifier(node); + if (generatedName) { + write(generatedName); + return; + } + } if (!node.parent) { write(node.text); } @@ -18570,15 +21138,17 @@ var ts; } } function emitSuper(node) { - var flags = resolver.getNodeCheckFlags(node); - if (flags & 16) { - write("_super.prototype"); - } - else if (flags & 32) { - write("_super"); + if (languageVersion >= 2) { + write("super"); } else { - write("super"); + var flags = resolver.getNodeCheckFlags(node); + if (flags & 16) { + write("_super.prototype"); + } + else { + write("_super"); + } } } function emitObjectBindingPattern(node) { @@ -18595,7 +21165,7 @@ var ts; } function emitBindingElement(node) { if (node.propertyName) { - emit(node.propertyName); + emit(node.propertyName, false); write(": "); } if (node.dotDotDotToken) { @@ -18613,14 +21183,14 @@ var ts; write("..."); emit(node.expression); } - function needsParenthesisForPropertyAccess(node) { + function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { - case 64: - case 149: - case 151: - case 152: + case 65: case 153: + case 155: + case 156: case 157: + case 161: return false; } return true; @@ -18637,14 +21207,14 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 169) { + if (e.kind === 173) { e = e.expression; - emitParenthesized(e, group === 0 && needsParenthesisForPropertyAccess(e)); + emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; } else { var i = pos; - while (i < length && elements[i].kind !== 169) { + while (i < length && elements[i].kind !== 173) { i++; } write("["); @@ -18665,7 +21235,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 169; + return node.kind === 173; } function emitArrayLiteral(node) { var elements = node.elements; @@ -18678,32 +21248,26 @@ var ts; write("]"); } else { - emitListWithSpread(elements, (node.flags & 256) !== 0, elements.hasTrailingComma); + emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma); } } - function createSynthesizedNode(kind) { - var node = ts.createNode(kind); - node.pos = -1; - node.end = -1; - return node; - } function emitDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex) { var parenthesizedObjectLiteral = createDownlevelObjectLiteralWithComputedProperties(node, firstComputedPropertyIndex); return emit(parenthesizedObjectLiteral); } function createDownlevelObjectLiteralWithComputedProperties(originalObjectLiteral, firstComputedPropertyIndex) { - var tempVar = createAndRecordTempVariable(originalObjectLiteral); - var initialObjectLiteral = createSynthesizedNode(150); + var tempVar = createAndRecordTempVariable(0); + var initialObjectLiteral = ts.createSynthesizedNode(154); initialObjectLiteral.properties = originalObjectLiteral.properties.slice(0, firstComputedPropertyIndex); - initialObjectLiteral.flags |= 256; - var propertyPatches = createBinaryExpression(tempVar, 52, initialObjectLiteral); + initialObjectLiteral.flags |= 512; + var propertyPatches = createBinaryExpression(tempVar, 53, initialObjectLiteral); ts.forEach(originalObjectLiteral.properties, function (property) { var patchedProperty = tryCreatePatchingPropertyAssignment(originalObjectLiteral, tempVar, property); if (patchedProperty) { propertyPatches = createBinaryExpression(propertyPatches, 23, patchedProperty); } }); - propertyPatches = createBinaryExpression(propertyPatches, 23, tempVar); + propertyPatches = createBinaryExpression(propertyPatches, 23, createIdentifier(tempVar.text, true)); var result = createParenthesizedExpression(propertyPatches); return result; } @@ -18714,34 +21278,33 @@ var ts; function tryCreatePatchingPropertyAssignment(objectLiteral, tempVar, property) { var leftHandSide = createMemberAccessForPropertyName(tempVar, property.name); var maybeRightHandSide = tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property); - return maybeRightHandSide && createBinaryExpression(leftHandSide, 52, maybeRightHandSide); + return maybeRightHandSide && createBinaryExpression(leftHandSide, 53, maybeRightHandSide, true); } function tryGetRightHandSideOfPatchingPropertyAssignment(objectLiteral, property) { switch (property.kind) { - case 207: + case 224: return property.initializer; - case 208: - var prefix = createIdentifier(resolver.getExpressionNamePrefix(property.name)); - return createPropertyAccessExpression(prefix, property.name); - case 130: + case 225: + return createIdentifier(resolver.getExpressionNameSubstitution(property.name, getGeneratedNameForNode)); + case 134: return createFunctionExpression(property.parameters, property.body); - case 132: - case 133: - var _a = getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; + case 136: + case 137: + var _a = ts.getAllAccessorDeclarations(objectLiteral.properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor; if (firstAccessor !== property) { return undefined; } - var propertyDescriptor = createSynthesizedNode(150); + var propertyDescriptor = ts.createSynthesizedNode(154); var descriptorProperties = []; if (getAccessor) { - var getProperty = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); - descriptorProperties.push(getProperty); + var getProperty_1 = createPropertyAssignment(createIdentifier("get"), createFunctionExpression(getAccessor.parameters, getAccessor.body)); + descriptorProperties.push(getProperty_1); } if (setAccessor) { var setProperty = createPropertyAssignment(createIdentifier("set"), createFunctionExpression(setAccessor.parameters, setAccessor.body)); descriptorProperties.push(setProperty); } - var trueExpr = createSynthesizedNode(94); + var trueExpr = ts.createSynthesizedNode(95); var enumerableTrue = createPropertyAssignment(createIdentifier("enumerable"), trueExpr); descriptorProperties.push(enumerableTrue); var configurableTrue = createPropertyAssignment(createIdentifier("configurable"), trueExpr); @@ -18754,35 +21317,40 @@ var ts; } } function createParenthesizedExpression(expression) { - var result = createSynthesizedNode(157); + var result = ts.createSynthesizedNode(161); result.expression = expression; return result; } function createNodeArray() { var elements = []; - for (var _i = 0; _i < arguments.length; _i++) { - elements[_i - 0] = arguments[_i]; + for (var _a = 0; _a < arguments.length; _a++) { + elements[_a - 0] = arguments[_a]; } var result = elements; result.pos = -1; result.end = -1; return result; } - function createBinaryExpression(left, operator, right) { - var result = createSynthesizedNode(165); - result.operatorToken = createSynthesizedNode(operator); + function createBinaryExpression(left, operator, right, startsOnNewLine) { + var result = ts.createSynthesizedNode(169, startsOnNewLine); + result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } + function createExpressionStatement(expression) { + var result = ts.createSynthesizedNode(182); + result.expression = expression; + return result; + } function createMemberAccessForPropertyName(expression, memberName) { - if (memberName.kind === 64) { + if (memberName.kind === 65) { return createPropertyAccessExpression(expression, memberName); } else if (memberName.kind === 8 || memberName.kind === 7) { return createElementAccessExpression(expression, memberName); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { return createElementAccessExpression(expression, memberName.expression); } else { @@ -18790,36 +21358,37 @@ var ts; } } function createPropertyAssignment(name, initializer) { - var result = createSynthesizedNode(207); + var result = ts.createSynthesizedNode(224); result.name = name; result.initializer = initializer; return result; } function createFunctionExpression(parameters, body) { - var result = createSynthesizedNode(158); + var result = ts.createSynthesizedNode(162); result.parameters = parameters; result.body = body; return result; } function createPropertyAccessExpression(expression, name) { - var result = createSynthesizedNode(151); + var result = ts.createSynthesizedNode(155); result.expression = expression; + result.dotToken = ts.createSynthesizedNode(20); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = createSynthesizedNode(152); + var result = ts.createSynthesizedNode(156); result.expression = expression; result.argumentExpression = argumentExpression; return result; } - function createIdentifier(name) { - var result = createSynthesizedNode(64); + function createIdentifier(name, startsOnNewLine) { + var result = ts.createSynthesizedNode(65, startsOnNewLine); result.text = name; return result; } function createCallExpression(invokedExpression, arguments) { - var result = createSynthesizedNode(153); + var result = ts.createSynthesizedNode(157); result.expression = invokedExpression; result.arguments = arguments; return result; @@ -18830,7 +21399,7 @@ var ts; var numProperties = properties.length; var numInitialNonComputedProperties = numProperties; for (var i = 0, n = properties.length; i < n; i++) { - if (properties[i].name.kind === 124) { + if (properties[i].name.kind === 127) { numInitialNonComputedProperties = i; break; } @@ -18842,7 +21411,6 @@ var ts; } } write("{"); - var properties = node.properties; if (properties.length) { emitLinePreservingList(node, properties, languageVersion >= 1, true); } @@ -18850,47 +21418,78 @@ var ts; } function emitComputedPropertyName(node) { write("["); - emit(node.expression); + emitExpressionForPropertyName(node); write("]"); } function emitMethod(node) { - emit(node.name); + emit(node.name, false); if (languageVersion < 2) { write(": function "); } emitSignatureAndBody(node); } function emitPropertyAssignment(node) { - emit(node.name); + emit(node.name, false); write(": "); emit(node.initializer); } function emitShorthandPropertyAssignment(node) { - emit(node.name); - if (languageVersion <= 1 || resolver.getExpressionNamePrefix(node.name)) { + emit(node.name, false); + if (languageVersion < 2) { + write(": "); + var generatedName = getGeneratedNameForIdentifier(node.name); + if (generatedName) { + write(generatedName); + } + else { + emitExpressionIdentifier(node.name); + } + } + else if (resolver.getExpressionNameSubstitution(node.name, getGeneratedNameForNode)) { write(": "); emitExpressionIdentifier(node.name); } } function tryEmitConstantValue(node) { + if (compilerOptions.separateCompilation) { + return false; + } var constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 151 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 155 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; } return false; } + function indentIfOnDifferentLines(parent, node1, node2, valueToWriteWhenNotIndenting) { + var realNodesAreOnDifferentLines = !ts.nodeIsSynthesized(parent) && !nodeEndIsOnSameLineAsNodeStart(node1, node2); + var synthesizedNodeIsOnDifferentLine = synthesizedNodeStartsOnNewLine(node2); + if (realNodesAreOnDifferentLines || synthesizedNodeIsOnDifferentLine) { + increaseIndent(); + writeLine(); + return true; + } + else { + if (valueToWriteWhenNotIndenting) { + write(valueToWriteWhenNotIndenting); + } + return false; + } + } function emitPropertyAccess(node) { if (tryEmitConstantValue(node)) { return; } emit(node.expression); + var indentedBeforeDot = indentIfOnDifferentLines(node, node.expression, node.dotToken); write("."); - emit(node.name); + var indentedAfterDot = indentIfOnDifferentLines(node, node.dotToken, node.name); + emit(node.name, false); + decreaseIndentIf(indentedBeforeDot, indentedAfterDot); } function emitQualifiedName(node) { emit(node.left); @@ -18907,20 +21506,20 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 169; }); + return ts.forEach(elements, function (e) { return e.kind === 173; }); } function skipParentheses(node) { - while (node.kind === 157 || node.kind === 156) { + while (node.kind === 161 || node.kind === 160) { node = node.expression; } return node; } function emitCallTarget(node) { - if (node.kind === 64 || node.kind === 92 || node.kind === 90) { + if (node.kind === 65 || node.kind === 93 || node.kind === 91) { emit(node); return node; } - var temp = createAndRecordTempVariable(node); + var temp = createAndRecordTempVariable(0); write("("); emit(temp); write(" = "); @@ -18931,18 +21530,18 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 151) { + if (expr.kind === 155) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 152) { + else if (expr.kind === 156) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); write("]"); } - else if (expr.kind === 90) { + else if (expr.kind === 91) { target = expr; write("_super"); } @@ -18951,7 +21550,7 @@ var ts; } write(".apply("); if (target) { - if (target.kind === 90) { + if (target.kind === 91) { emitThis(target); } else { @@ -18971,15 +21570,15 @@ var ts; return; } var superCall = false; - if (node.expression.kind === 90) { - write("_super"); + if (node.expression.kind === 91) { + emitSuper(node.expression); superCall = true; } else { emit(node.expression); - superCall = node.expression.kind === 151 && node.expression.expression.kind === 90; + superCall = node.expression.kind === 155 && node.expression.expression.kind === 91; } - if (superCall) { + if (superCall && languageVersion < 2) { write(".call("); emitThis(node.expression); if (node.arguments.length) { @@ -19004,26 +21603,33 @@ var ts; } } function emitTaggedTemplateExpression(node) { - emit(node.tag); - write(" "); - emit(node.template); + if (languageVersion >= 2) { + emit(node.tag); + write(" "); + emit(node.template); + } + else { + emitDownlevelTaggedTemplate(node); + } } function emitParenExpression(node) { - if (node.expression.kind === 156) { - var operand = node.expression.expression; - while (operand.kind == 156) { - operand = operand.expression; - } - if (operand.kind !== 163 && - operand.kind !== 162 && - operand.kind !== 161 && - operand.kind !== 160 && - operand.kind !== 164 && - operand.kind !== 154 && - !(operand.kind === 153 && node.parent.kind === 154) && - !(operand.kind === 158 && node.parent.kind === 153)) { - emit(operand); - return; + if (!node.parent || node.parent.kind !== 163) { + if (node.expression.kind === 160) { + var operand = node.expression.expression; + while (operand.kind == 160) { + operand = operand.expression; + } + if (operand.kind !== 167 && + operand.kind !== 166 && + operand.kind !== 165 && + operand.kind !== 164 && + operand.kind !== 168 && + operand.kind !== 158 && + !(operand.kind === 157 && node.parent.kind === 158) && + !(operand.kind === 162 && node.parent.kind === 157)) { + emit(operand); + return; + } } } write("("); @@ -19031,23 +21637,23 @@ var ts; write(")"); } function emitDeleteExpression(node) { - write(ts.tokenToString(73)); + write(ts.tokenToString(74)); write(" "); emit(node.expression); } function emitVoidExpression(node) { - write(ts.tokenToString(98)); + write(ts.tokenToString(99)); write(" "); emit(node.expression); } function emitTypeOfExpression(node) { - write(ts.tokenToString(96)); + write(ts.tokenToString(97)); write(" "); emit(node.expression); } function emitPrefixUnaryExpression(node) { write(ts.tokenToString(node.operator)); - if (node.operand.kind === 163) { + if (node.operand.kind === 167) { var operand = node.operand; if (node.operator === 33 && (operand.operator === 33 || operand.operator === 38)) { write(" "); @@ -19063,57 +21669,45 @@ var ts; write(ts.tokenToString(node.operator)); } function emitBinaryExpression(node) { - if (languageVersion < 2 && node.operatorToken.kind === 52 && - (node.left.kind === 150 || node.left.kind === 149)) { - emitDestructuring(node); + if (languageVersion < 2 && node.operatorToken.kind === 53 && + (node.left.kind === 154 || node.left.kind === 153)) { + emitDestructuring(node, node.parent.kind === 182); } else { emit(node.left); - if (node.operatorToken.kind !== 23) { - write(" "); - } + var indentedBeforeOperator = indentIfOnDifferentLines(node, node.left, node.operatorToken, node.operatorToken.kind !== 23 ? " " : undefined); write(ts.tokenToString(node.operatorToken.kind)); - var operatorEnd = ts.getLineAndCharacterOfPosition(currentSourceFile, node.operatorToken.end); - var rightStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.right.pos)); - var onDifferentLine = operatorEnd.line !== rightStart.line; - if (onDifferentLine) { - var exprStart = ts.getLineAndCharacterOfPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); - var firstCharOfExpr = getFirstNonWhitespaceCharacterIndexOnLine(exprStart.line); - var shouldIndent = rightStart.character > firstCharOfExpr; - if (shouldIndent) { - increaseIndent(); - } - writeLine(); - } - else { - write(" "); - } + var indentedAfterOperator = indentIfOnDifferentLines(node, node.operatorToken, node.right, " "); emit(node.right); - if (shouldIndent) { - decreaseIndent(); - } + decreaseIndentIf(indentedBeforeOperator, indentedAfterOperator); } } - function getFirstNonWhitespaceCharacterIndexOnLine(line) { - var lineStart = ts.getLineStarts(currentSourceFile)[line]; - var text = currentSourceFile.text; - for (var i = lineStart; i < text.length; i++) { - var ch = text.charCodeAt(i); - if (!ts.isWhiteSpace(text.charCodeAt(i)) || ts.isLineBreak(ch)) { - break; - } - } - return i - lineStart; + function synthesizedNodeStartsOnNewLine(node) { + return ts.nodeIsSynthesized(node) && node.startsOnNewLine; } function emitConditionalExpression(node) { emit(node.condition); - write(" ? "); + var indentedBeforeQuestion = indentIfOnDifferentLines(node, node.condition, node.questionToken, " "); + write("?"); + var indentedAfterQuestion = indentIfOnDifferentLines(node, node.questionToken, node.whenTrue, " "); emit(node.whenTrue); - write(" : "); + decreaseIndentIf(indentedBeforeQuestion, indentedAfterQuestion); + var indentedBeforeColon = indentIfOnDifferentLines(node, node.whenTrue, node.colonToken, " "); + write(":"); + var indentedAfterColon = indentIfOnDifferentLines(node, node.colonToken, node.whenFalse, " "); emit(node.whenFalse); + decreaseIndentIf(indentedBeforeColon, indentedAfterColon); + } + function decreaseIndentIf(value1, value2) { + if (value1) { + decreaseIndent(); + } + if (value2) { + decreaseIndent(); + } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 172) { + if (node && node.kind === 179) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -19128,12 +21722,12 @@ var ts; emitToken(14, node.pos); increaseIndent(); scopeEmitStart(node.parent); - if (node.kind === 199) { - ts.Debug.assert(node.parent.kind === 198); + if (node.kind === 206) { + ts.Debug.assert(node.parent.kind === 205); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 199) { + if (node.kind === 206) { emitTempDeclarations(true); } decreaseIndent(); @@ -19142,7 +21736,7 @@ var ts; scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 172) { + if (node.kind === 179) { write(" "); emit(node); } @@ -19154,11 +21748,11 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesized(node.expression, node.expression.kind === 159); + emitParenthesizedIf(node.expression, node.expression.kind === 163); write(";"); } function emitIfStatement(node) { - var endPos = emitToken(83, node.pos); + var endPos = emitToken(84, node.pos); write(" "); endPos = emitToken(16, endPos); emit(node.expression); @@ -19166,8 +21760,8 @@ var ts; emitEmbeddedStatement(node.thenStatement); if (node.elseStatement) { writeLine(); - emitToken(75, node.thenStatement.end); - if (node.elseStatement.kind === 176) { + emitToken(76, node.thenStatement.end); + if (node.elseStatement.kind === 183) { write(" "); emit(node.elseStatement); } @@ -19179,7 +21773,7 @@ var ts; function emitDoStatement(node) { write("do"); emitEmbeddedStatement(node.statement); - if (node.statement.kind === 172) { + if (node.statement.kind === 179) { write(" "); } else { @@ -19195,24 +21789,40 @@ var ts; write(")"); emitEmbeddedStatement(node.statement); } + function emitStartOfVariableDeclarationList(decl, startPos) { + var tokenKind = 98; + if (decl && languageVersion >= 2) { + if (ts.isLet(decl)) { + tokenKind = 105; + } + else if (ts.isConst(decl)) { + tokenKind = 70; + } + } + if (startPos !== undefined) { + emitToken(tokenKind, startPos); + } + else { + switch (tokenKind) { + case 98: + return write("var "); + case 105: + return write("let "); + case 70: + return write("const "); + } + } + } function emitForStatement(node) { - var endPos = emitToken(81, node.pos); + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer && node.initializer.kind === 192) { + if (node.initializer && node.initializer.kind === 199) { var variableDeclarationList = node.initializer; var declarations = variableDeclarationList.declarations; - if (declarations[0] && ts.isLet(declarations[0])) { - emitToken(103, endPos); - } - else if (declarations[0] && ts.isConst(declarations[0])) { - emitToken(69, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(declarations[0], endPos); write(" "); - emitCommaList(variableDeclarationList.declarations); + emitCommaList(declarations); } else if (node.initializer) { emit(node.initializer); @@ -19225,19 +21835,17 @@ var ts; emitEmbeddedStatement(node.statement); } function emitForInOrForOfStatement(node) { - var endPos = emitToken(81, node.pos); + if (languageVersion < 2 && node.kind === 188) { + return emitDownLevelForOfStatement(node); + } + var endPos = emitToken(82, node.pos); write(" "); endPos = emitToken(16, endPos); - if (node.initializer.kind === 192) { + if (node.initializer.kind === 199) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { var decl = variableDeclarationList.declarations[0]; - if (ts.isLet(decl)) { - emitToken(103, endPos); - } - else { - emitToken(97, endPos); - } + emitStartOfVariableDeclarationList(decl, endPos); write(" "); emit(decl); } @@ -19245,7 +21853,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 180) { + if (node.kind === 187) { write(" in "); } else { @@ -19255,13 +21863,113 @@ var ts; emitToken(17, node.expression.end); emitEmbeddedStatement(node.statement); } + function emitDownLevelForOfStatement(node) { + // The following ES6 code: + // + // for (let v of expr) { } + // + // should be emitted as + // + // for (let _i = 0, _a = expr; _i < _a.length; _i++) { + // let v = _a[_i]; + // } + // + // where _a and _i are temps emitted to capture the RHS and the counter, + // respectively. + // When the left hand side is an expression instead of a let declaration, + // the "let v" is not emitted. + // When the left hand side is a let/const, the v is renamed if there is + // another v in scope. + // Note that all assignments to the LHS are emitted in the body, including + // all destructuring. + // Note also that because an extra statement is needed to assign to the LHS, + // for-of bodies are always emitted as blocks. + var endPos = emitToken(82, node.pos); + write(" "); + endPos = emitToken(16, endPos); + var rhsIsIdentifier = node.expression.kind === 65; + var counter = createTempVariable(268435456); + var rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(0); + emitStart(node.expression); + write("var "); + emitNodeWithoutSourceMap(counter); + write(" = 0"); + emitEnd(node.expression); + if (!rhsIsIdentifier) { + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); + } + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write(" < "); + emitNodeWithoutSourceMap(rhsReference); + write(".length"); + emitEnd(node.initializer); + write("; "); + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write("++"); + emitEnd(node.initializer); + emitToken(17, node.expression.end); + write(" {"); + writeLine(); + increaseIndent(); + var rhsIterationValue = createElementAccessExpression(rhsReference, counter); + emitStart(node.initializer); + if (node.initializer.kind === 199) { + write("var "); + var variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length > 0) { + var declaration = variableDeclarationList.declarations[0]; + if (ts.isBindingPattern(declaration.name)) { + emitDestructuring(declaration, false, rhsIterationValue); + } + else { + emitNodeWithoutSourceMap(declaration); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + emitNodeWithoutSourceMap(createTempVariable(0)); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + var assignmentExpression = createBinaryExpression(node.initializer, 53, rhsIterationValue, false); + if (node.initializer.kind === 153 || node.initializer.kind === 154) { + emitDestructuring(assignmentExpression, true, undefined, node); + } + else { + emitNodeWithoutSourceMap(assignmentExpression); + } + } + emitEnd(node.initializer); + write(";"); + if (node.statement.kind === 179) { + emitLines(node.statement.statements); + } + else { + writeLine(); + emit(node.statement); + } + writeLine(); + decreaseIndent(); + write("}"); + } function emitBreakOrContinueStatement(node) { - emitToken(node.kind === 183 ? 65 : 70, node.pos); + emitToken(node.kind === 190 ? 66 : 71, node.pos); emitOptional(" ", node.label); write(";"); } function emitReturnStatement(node) { - emitToken(89, node.pos); + emitToken(90, node.pos); emitOptional(" ", node.expression); write(";"); } @@ -19272,13 +21980,16 @@ var ts; emitEmbeddedStatement(node.statement); } function emitSwitchStatement(node) { - var endPos = emitToken(91, node.pos); + var endPos = emitToken(92, node.pos); write(" "); emitToken(16, endPos); emit(node.expression); endPos = emitToken(17, node.expression.end); write(" "); - emitToken(14, endPos); + emitCaseBlock(node.caseBlock, endPos); + } + function emitCaseBlock(node, startPos) { + emitToken(14, startPos); increaseIndent(); emitLines(node.clauses); decreaseIndent(); @@ -19286,19 +21997,19 @@ var ts; emitToken(15, node.clauses.end); } function nodeStartPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node1.pos)) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function nodeEndPositionsAreOnSameLine(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, node2.end); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, node2.end); } function nodeEndIsOnSameLineAsNodeStart(node1, node2) { - return getLineOfLocalPosition(currentSourceFile, node1.end) === - getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); + return ts.getLineOfLocalPosition(currentSourceFile, node1.end) === + ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 203) { + if (node.kind === 220) { write("case "); emit(node.expression); write(":"); @@ -19333,16 +22044,16 @@ var ts; } function emitCatchClause(node) { writeLine(); - var endPos = emitToken(67, node.pos); + var endPos = emitToken(68, node.pos); write(" "); emitToken(16, endPos); - emit(node.name); - emitToken(17, node.name.end); + emit(node.variableDeclaration); + emitToken(17, node.variableDeclaration ? node.variableDeclaration.end : endPos); write(" "); emitBlock(node.block); } function emitDebuggerStatement(node) { - emitToken(71, node.pos); + emitToken(72, node.pos); write(";"); } function emitLabelledStatement(node) { @@ -19353,33 +22064,83 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 198); + } while (node && node.kind !== 205); return node; } + function emitContainingModuleName(node) { + var container = getContainingModule(node); + write(container ? getGeneratedNameForNode(container) : "exports"); + } function emitModuleMemberName(node) { emitStart(node.name); if (ts.getCombinedNodeFlags(node) & 1) { var container = getContainingModule(node); - write(container ? resolver.getLocalNameOfContainer(container) : "exports"); - write("."); + if (container) { + write(getGeneratedNameForNode(container)); + write("."); + } + else if (languageVersion < 2) { + write("exports."); + } } - emitNode(node.name); + emitNodeWithoutSourceMap(node.name); emitEnd(node.name); } - function emitDestructuring(root, value) { + function createVoidZero() { + var zero = ts.createSynthesizedNode(7); + zero.text = "0"; + var result = ts.createSynthesizedNode(166); + result.expression = zero; + return result; + } + function emitExportMemberAssignment(node) { + if (node.flags & 1) { + writeLine(); + emitStart(node); + if (node.flags & 256) { + write("exports.default"); + } + else { + emitModuleMemberName(node); + } + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + } + function emitExportMemberAssignments(name) { + if (!exportEquals && exportSpecifiers && ts.hasProperty(exportSpecifiers, name.text)) { + for (var _a = 0, _b = exportSpecifiers[name.text]; _a < _b.length; _a++) { + var specifier = _b[_a]; + writeLine(); + emitStart(specifier.name); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier.name); + write(" = "); + emitExpressionIdentifier(name); + write(";"); + } + } + } + function emitDestructuring(root, isAssignmentExpressionStatement, value, lowestNonSynthesizedAncestor) { var emitCount = 0; - var isDeclaration = (root.kind === 191 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 126; - if (root.kind === 165) { + var isDeclaration = (root.kind === 198 && !(ts.getCombinedNodeFlags(root) & 1)) || root.kind === 129; + if (root.kind === 169) { emitAssignmentExpression(root); } else { + ts.Debug.assert(!isAssignmentExpressionStatement); emitBindingElement(root, value); } function emitAssignment(name, value) { if (emitCount++) { write(", "); } - if (name.parent && (name.parent.kind === 191 || name.parent.kind === 148)) { + renameNonTopLevelLetAndConst(name); + if (name.parent && (name.parent.kind === 198 || name.parent.kind === 152)) { emitModuleMemberName(name.parent); } else { @@ -19389,8 +22150,8 @@ var ts; emit(value); } function ensureIdentifier(expr) { - if (expr.kind !== 64) { - var identifier = createTempVariable(root); + if (expr.kind !== 65) { + var identifier = createTempVariable(0); if (!isDeclaration) { recordTempDeclaration(identifier); } @@ -19399,49 +22160,44 @@ var ts; } return expr; } - function createVoidZero() { - var zero = ts.createNode(7); - zero.text = "0"; - var result = ts.createNode(162); - result.expression = zero; - return result; - } function createDefaultValueCheck(value, defaultValue) { value = ensureIdentifier(value); - var equals = ts.createNode(165); + var equals = ts.createSynthesizedNode(169); equals.left = value; - equals.operatorToken = ts.createNode(30); + equals.operatorToken = ts.createSynthesizedNode(30); equals.right = createVoidZero(); - var cond = ts.createNode(166); - cond.condition = equals; - cond.whenTrue = defaultValue; - cond.whenFalse = value; + return createConditionalExpression(equals, defaultValue, value); + } + function createConditionalExpression(condition, whenTrue, whenFalse) { + var cond = ts.createSynthesizedNode(170); + cond.condition = condition; + cond.questionToken = ts.createSynthesizedNode(50); + cond.whenTrue = whenTrue; + cond.colonToken = ts.createSynthesizedNode(51); + cond.whenFalse = whenFalse; return cond; } function createNumericLiteral(value) { - var node = ts.createNode(7); + var node = ts.createSynthesizedNode(7); node.text = "" + value; return node; } function parenthesizeForAccess(expr) { - if (expr.kind === 64 || expr.kind === 151 || expr.kind === 152) { + if (expr.kind === 65 || expr.kind === 155 || expr.kind === 156) { return expr; } - var node = ts.createNode(157); + var node = ts.createSynthesizedNode(161); node.expression = expr; return node; } function createPropertyAccess(object, propName) { - if (propName.kind !== 64) { + if (propName.kind !== 65) { return createElementAccess(object, propName); } - var node = ts.createNode(151); - node.expression = parenthesizeForAccess(object); - node.name = propName; - return node; + return createPropertyAccessExpression(parenthesizeForAccess(object), propName); } function createElementAccess(object, index) { - var node = ts.createNode(152); + var node = ts.createSynthesizedNode(156); node.expression = parenthesizeForAccess(object); node.argumentExpression = index; return node; @@ -19451,9 +22207,9 @@ var ts; if (properties.length !== 1) { value = ensureIdentifier(value); } - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; - if (p.kind === 207 || p.kind === 208) { + for (var _a = 0; _a < properties.length; _a++) { + var p = properties[_a]; + if (p.kind === 224 || p.kind === 225) { var propName = (p.name); emitDestructuringAssignment(p.initializer || propName, createPropertyAccess(value, propName)); } @@ -19466,8 +22222,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 170) { - if (e.kind !== 169) { + if (e.kind !== 175) { + if (e.kind !== 173) { emitDestructuringAssignment(e, createElementAccess(value, createNumericLiteral(i))); } else { @@ -19481,14 +22237,14 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 165 && target.operatorToken.kind === 52) { + if (target.kind === 169 && target.operatorToken.kind === 53) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 150) { + if (target.kind === 154) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 149) { + else if (target.kind === 153) { emitArrayLiteralAssignment(target, value); } else { @@ -19498,18 +22254,18 @@ var ts; function emitAssignmentExpression(root) { var target = root.left; var value = root.right; - if (root.parent.kind === 175) { + if (isAssignmentExpressionStatement) { emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write("("); } value = ensureIdentifier(value); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 157) { + if (root.parent.kind !== 161) { write(")"); } } @@ -19529,11 +22285,11 @@ var ts; } for (var i = 0; i < elements.length; i++) { var element = elements[i]; - if (pattern.kind === 146) { + if (pattern.kind === 150) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccess(value, propName)); } - else if (element.kind !== 170) { + else if (element.kind !== 175) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccess(value, createNumericLiteral(i))); } @@ -19555,7 +22311,7 @@ var ts; function emitVariableDeclaration(node) { if (ts.isBindingPattern(node.name)) { if (languageVersion < 2) { - emitDestructuring(node); + emitDestructuring(node, false); } else { emit(node.name); @@ -19563,34 +22319,100 @@ var ts; } } else { + renameNonTopLevelLetAndConst(node.name); emitModuleMemberName(node); - emitOptional(" = ", node.initializer); + var initializer = node.initializer; + if (!initializer && languageVersion < 2) { + var isUninitializedLet = (resolver.getNodeCheckFlags(node) & 256) && + (getCombinedFlagsForIdentifier(node.name) & 4096); + if (isUninitializedLet && + node.parent.parent.kind !== 187 && + node.parent.parent.kind !== 188) { + initializer = createVoidZero(); + } + } + emitOptional(" = ", initializer); } } + function emitExportVariableAssignments(node) { + if (node.kind === 175) { + return; + } + var name = node.name; + if (name.kind === 65) { + emitExportMemberAssignments(name); + } + else if (ts.isBindingPattern(name)) { + ts.forEach(name.elements, emitExportVariableAssignments); + } + } + function getCombinedFlagsForIdentifier(node) { + if (!node.parent || (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return 0; + } + return ts.getCombinedNodeFlags(node.parent); + } + function renameNonTopLevelLetAndConst(node) { + if (languageVersion >= 2 || + ts.nodeIsSynthesized(node) || + node.kind !== 65 || + (node.parent.kind !== 198 && node.parent.kind !== 152)) { + return; + } + var combinedFlags = getCombinedFlagsForIdentifier(node); + if (((combinedFlags & 12288) === 0) || combinedFlags & 1) { + return; + } + var list = ts.getAncestor(node, 199); + if (list.parent.kind === 180) { + var isSourceFileLevelBinding = list.parent.parent.kind === 227; + var isModuleLevelBinding = list.parent.parent.kind === 206; + var isFunctionLevelBinding = list.parent.parent.kind === 179 && ts.isFunctionLike(list.parent.parent.parent); + if (isSourceFileLevelBinding || isModuleLevelBinding || isFunctionLevelBinding) { + return; + } + } + var blockScopeContainer = ts.getEnclosingBlockScopeContainer(node); + var parent = blockScopeContainer.kind === 227 + ? blockScopeContainer + : blockScopeContainer.parent; + if (resolver.resolvesToSomeValue(parent, node.text)) { + var variableId = resolver.getBlockScopedVariableId(node); + if (!blockScopedVariableToGeneratedName) { + blockScopedVariableToGeneratedName = []; + } + var generatedName = makeUniqueName(node.text); + blockScopedVariableToGeneratedName[variableId] = generatedName; + } + } + function isES6ExportedDeclaration(node) { + return !!(node.flags & 1) && + languageVersion >= 2 && + node.parent.kind === 227; + } function emitVariableStatement(node) { if (!(node.flags & 1)) { - if (ts.isLet(node.declarationList)) { - write("let "); - } - else if (ts.isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } + emitStartOfVariableDeclarationList(node.declarationList); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + emitStartOfVariableDeclarationList(node.declarationList); } emitCommaList(node.declarationList.declarations); write(";"); + if (languageVersion < 2 && node.parent === currentSourceFile) { + ts.forEach(node.declarationList.declarations, emitExportVariableAssignments); + } } function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name = createTempVariable(node); + var name_16 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name); - emit(name); + tempParameters.push(name_16); + emit(name_16); } else { emit(node.name); @@ -19611,7 +22433,7 @@ var ts; if (ts.isBindingPattern(p.name)) { writeLine(); write("var "); - emitDestructuring(p, tempParameters[tempIndex]); + emitDestructuring(p, false, tempParameters[tempIndex]); write(";"); tempIndex++; } @@ -19619,14 +22441,14 @@ var ts; writeLine(); emitStart(p); write("if ("); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" === void 0)"); emitEnd(p); write(" { "); emitStart(p); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" = "); - emitNode(p.initializer); + emitNodeWithoutSourceMap(p.initializer); emitEnd(p); write("; }"); } @@ -19637,12 +22459,12 @@ var ts; if (languageVersion < 2 && ts.hasRestParameters(node)) { var restIndex = node.parameters.length - 1; var restParam = node.parameters[restIndex]; - var tempName = createTempVariable(node, true).text; + var tempName = createTempVariable(268435456).text; writeLine(); emitLeadingComments(restParam); emitStart(restParam); write("var "); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write(" = [];"); emitEnd(restParam); emitTrailingComments(restParam); @@ -19663,7 +22485,7 @@ var ts; increaseIndent(); writeLine(); emitStart(restParam); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write("[" + tempName + " - " + restIndex + "] = arguments[" + tempName + "];"); emitEnd(restParam); decreaseIndent(); @@ -19672,28 +22494,53 @@ var ts; } } function emitAccessor(node) { - write(node.kind === 132 ? "get " : "set "); - emit(node.name); + write(node.kind === 136 ? "get " : "set "); + emit(node.name, false); emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 159 && languageVersion >= 2; + return node.kind === 163 && languageVersion >= 2; + } + function emitDeclarationName(node) { + if (node.name) { + emitNodeWithoutSourceMap(node.name); + } + else { + write(getGeneratedNameForNode(node)); + } + } + function shouldEmitFunctionName(node) { + if (node.kind === 162) { + return !!node.name; + } + if (node.kind === 200) { + return !!node.name || languageVersion < 2; + } } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - if (node.kind !== 130 && node.kind !== 129) { + if (node.kind !== 134 && node.kind !== 133) { emitLeadingComments(node); } if (!shouldEmitAsArrowFunction(node)) { + if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } write("function "); } - if (node.kind === 193 || (node.kind === 158 && node.name)) { - emit(node.name); + if (shouldEmitFunctionName(node)) { + emitDeclarationName(node); } emitSignatureAndBody(node); - if (node.kind !== 130 && node.kind !== 129) { + if (languageVersion < 2 && node.kind === 200 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); + } + if (node.kind !== 134 && node.kind !== 133) { emitTrailingComments(node); } } @@ -19724,10 +22571,10 @@ var ts; emitSignatureParameters(node); } function emitSignatureAndBody(node) { - var saveTempCount = tempCount; + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; var saveTempParameters = tempParameters; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; tempParameters = undefined; if (shouldEmitAsArrowFunction(node)) { @@ -19737,25 +22584,19 @@ var ts; else { emitSignatureParameters(node); } - if (isSingleLineEmptyBlock(node.body) || !node.body) { + if (!node.body) { write(" { }"); } - else if (node.body.kind === 172) { + else if (node.body.kind === 179) { emitBlockFunctionBody(node, node.body); } else { emitExpressionFunctionBody(node, node.body); } - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); - write(";"); + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); } - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; tempParameters = saveTempParameters; } @@ -19765,6 +22606,18 @@ var ts; emitRestParameter(node); } function emitExpressionFunctionBody(node, body) { + if (languageVersion < 2) { + emitDownLevelExpressionFunctionBody(node, body); + return; + } + write(" "); + var current = body; + while (current.kind === 160) { + current = current.expression; + } + emitParenthesizedIf(body, current.kind === 154); + } + function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); scopeEmitStart(node); increaseIndent(); @@ -19777,7 +22630,7 @@ var ts; write(" "); emitStart(body); write("return "); - emitNode(body, true); + emit(body); emitEnd(body); write(";"); emitTempDeclarations(false); @@ -19788,7 +22641,7 @@ var ts; writeLine(); emitLeadingComments(node.body); write("return "); - emit(node.body, true); + emit(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(true); @@ -19803,17 +22656,18 @@ var ts; function emitBlockFunctionBody(node, body) { write(" {"); scopeEmitStart(node); - var outPos = writer.getTextPos(); + var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedComments(body.statements); var startIndex = emitDirectivePrologues(body.statements, true); emitFunctionBodyPreamble(node); decreaseIndent(); - var preambleEmitted = writer.getTextPos() !== outPos; + var preambleEmitted = writer.getTextPos() !== initialTextPos; if (!preambleEmitted && nodeEndIsOnSameLineAsNodeStart(body, body)) { - for (var i = 0, n = body.statements.length; i < n; i++) { + for (var _a = 0, _b = body.statements; _a < _b.length; _a++) { + var statement = _b[_a]; write(" "); - emit(body.statements[i]); + emit(statement); } emitTempDeclarations(false); write(" "); @@ -19833,11 +22687,11 @@ var ts; function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 175) { + if (statement && statement.kind === 182) { var expr = statement.expression; - if (expr && expr.kind === 153) { + if (expr && expr.kind === 157) { var func = expr.expression; - if (func && func.kind === 90) { + if (func && func.kind === 91) { return statement; } } @@ -19851,7 +22705,7 @@ var ts; emitStart(param); emitStart(param.name); write("this."); - emitNode(param.name); + emitNodeWithoutSourceMap(param.name); emitEnd(param.name); write(" = "); emit(param.name); @@ -19863,26 +22717,26 @@ var ts; function emitMemberAccessForPropertyName(memberName) { if (memberName.kind === 8 || memberName.kind === 7) { write("["); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); write("]"); } - else if (memberName.kind === 124) { + else if (memberName.kind === 127) { emitComputedPropertyName(memberName); } else { write("."); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); } } function emitMemberAssignments(node, staticFlag) { ts.forEach(node.members, function (member) { - if (member.kind === 128 && (member.flags & 128) === staticFlag && member.initializer) { + if (member.kind === 132 && (member.flags & 128) === staticFlag && member.initializer) { writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); if (staticFlag) { - emitNode(node.name); + emitDeclarationName(node); } else { write("this"); @@ -19897,20 +22751,21 @@ var ts; } }); } - function emitMemberFunctions(node) { + function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 130 || node.kind === 129) { + if (member.kind === 178) { + writeLine(); + write(";"); + } + else if (member.kind === 134 || node.kind === 133) { if (!member.body) { - return emitPinnedOrTripleSlashComments(member); + return emitOnlyPinnedOrTripleSlashComments(member); } writeLine(); emitLeadingComments(member); emitStart(member); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); emitMemberAccessForPropertyName(member.name); emitEnd(member.name); write(" = "); @@ -19921,17 +22776,14 @@ var ts; write(";"); emitTrailingComments(member); } - else if (member.kind === 132 || member.kind === 133) { - var accessors = getAllAccessorDeclarations(node.members, member); + else if (member.kind === 136 || member.kind === 137) { + var accessors = ts.getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); emitStart(member); write("Object.defineProperty("); emitStart(member.name); - emitNode(node.name); - if (!(member.flags & 128)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); emitEnd(member.name); @@ -19971,36 +22823,267 @@ var ts; } }); } + function emitMemberFunctionsForES6AndHigher(node) { + for (var _a = 0, _b = node.members; _a < _b.length; _a++) { + var member = _b[_a]; + if ((member.kind === 134 || node.kind === 133) && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + else if (member.kind === 134 || + member.kind === 136 || + member.kind === 137) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & 128) { + write("static "); + } + if (member.kind === 136) { + write("get "); + } + else if (member.kind === 137) { + write("set "); + } + emit(member.name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + else if (member.kind === 178) { + writeLine(); + write(";"); + } + } + } + function emitConstructor(node, baseTypeElement) { + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + var hasInstancePropertyWithInitializer = false; + ts.forEach(node.members, function (member) { + if (member.kind === 135 && !member.body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + if (member.kind === 132 && member.initializer && (member.flags & 128) === 0) { + hasInstancePropertyWithInitializer = true; + } + }); + var ctor = ts.getFirstConstructorWithBody(node); + if (languageVersion >= 2 && !ctor && !hasInstancePropertyWithInitializer) { + return; + } + if (ctor) { + emitLeadingComments(ctor); + } + emitStart(ctor || node); + if (languageVersion < 2) { + write("function "); + emitDeclarationName(node); + emitSignatureParameters(ctor); + } + else { + write("constructor"); + if (ctor) { + emitSignatureParameters(ctor); + } + else { + if (baseTypeElement) { + write("(...args)"); + } + else { + write("()"); + } + } + } + write(" {"); + scopeEmitStart(node, "constructor"); + increaseIndent(); + if (ctor) { + emitDetachedComments(ctor.body.statements); + } + emitCaptureThisForNodeIfNecessary(node); + if (ctor) { + emitDefaultValueAssignments(ctor); + emitRestParameter(ctor); + if (baseTypeElement) { + var superCall = findInitialSuperCall(ctor); + if (superCall) { + writeLine(); + emit(superCall); + } + } + emitParameterPropertyAssignments(ctor); + } + else { + if (baseTypeElement) { + writeLine(); + emitStart(baseTypeElement); + if (languageVersion < 2) { + write("_super.apply(this, arguments);"); + } + else { + write("super(...args);"); + } + emitEnd(baseTypeElement); + } + } + emitMemberAssignments(node, 0); + if (ctor) { + var statements = ctor.body.statements; + if (superCall) { + statements = statements.slice(1); + } + emitLines(statements); + } + emitTempDeclarations(true); + writeLine(); + if (ctor) { + emitLeadingCommentsOfPosition(ctor.body.statements.end); + } + decreaseIndent(); + emitToken(15, ctor ? ctor.body.statements.end : node.members.end); + scopeEmitEnd(); + emitEnd(ctor || node); + if (ctor) { + emitTrailingComments(ctor); + } + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + function emitClassExpression(node) { + return emitClassLikeDeclaration(node); + } function emitClassDeclaration(node) { - write("var "); - emit(node.name); - write(" = (function ("); - var baseTypeNode = ts.getClassBaseTypeNode(node); + return emitClassLikeDeclaration(node); + } + function emitClassLikeDeclaration(node) { + if (languageVersion < 2) { + emitClassLikeDeclarationBelowES6(node); + } + else { + emitClassLikeDeclarationForES6AndHigher(node); + } + } + function emitClassLikeDeclarationForES6AndHigher(node) { + var thisNodeIsDecorated = ts.nodeIsDecorated(node); + if (node.kind === 201) { + if (thisNodeIsDecorated) { + if (isES6ExportedDeclaration(node) && !(node.flags & 256)) { + write("export "); + } + write("let "); + emitDeclarationName(node); + write(" = "); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & 256) { + write("default "); + } + } + } + write("class"); + if ((node.name || !(node.flags & 256)) && !thisNodeIsDecorated) { + write(" "); + emitDeclarationName(node); + } + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write(" extends "); + emit(baseTypeNode.expression); + } + write(" {"); + increaseIndent(); + scopeEmitStart(node); + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES6AndHigher(node); + decreaseIndent(); + writeLine(); + emitToken(15, node.members.end); + scopeEmitEnd(); + if (thisNodeIsDecorated) { + write(";"); + if (node.name) { + writeLine(); + write("Object.defineProperty("); + emitDeclarationName(node); + write(", \"name\", { value: \""); + emitDeclarationName(node); + write("\", configurable: true });"); + writeLine(); + } + } + writeLine(); + emitMemberAssignments(node, 128); + emitDecoratorsOfClass(node); + if (!isES6ExportedDeclaration(node) && (node.flags & 1)) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + else if (isES6ExportedDeclaration(node) && (node.flags & 256) && thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + function emitClassLikeDeclarationBelowES6(node) { + if (node.kind === 201) { + write("var "); + emitDeclarationName(node); + write(" = "); + } + write("(function ("); + var baseTypeNode = ts.getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { write("_super"); } write(") {"); + var saveTempFlags = tempFlags; + var saveTempVariables = tempVariables; + var saveTempParameters = tempParameters; + var saveComputedPropertyNamesToGeneratedNames = computedPropertyNamesToGeneratedNames; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); write("__extends("); - emit(node.name); + emitDeclarationName(node); write(", _super);"); emitEnd(baseTypeNode); } writeLine(); - emitConstructorOfClass(); - emitMemberFunctions(node); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES5AndLower(node); emitMemberAssignments(node, 128); writeLine(); - function emitClassReturnStatement() { + emitDecoratorsOfClass(node); + writeLine(); + emitToken(15, node.members.end, function () { write("return "); - emitNode(node.name); - } - emitToken(15, node.members.end, emitClassReturnStatement); + emitDeclarationName(node); + }); write(";"); + emitTempDeclarations(true); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + computedPropertyNamesToGeneratedNames = saveComputedPropertyNamesToGeneratedNames; decreaseIndent(); writeLine(); emitToken(15, node.members.end); @@ -20008,103 +23091,170 @@ var ts; emitStart(node); write(")("); if (baseTypeNode) { - emit(baseTypeNode.typeName); + emit(baseTypeNode.expression); } - write(");"); - emitEnd(node); - if (node.flags & 1) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); + write(")"); + if (node.kind === 201) { write(";"); } - function emitConstructorOfClass() { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - var saveTempParameters = tempParameters; - tempCount = 0; - tempVariables = undefined; - tempParameters = undefined; - ts.forEach(node.members, function (member) { - if (member.kind === 131 && !member.body) { - emitPinnedOrTripleSlashComments(member); - } - }); - var ctor = getFirstConstructorWithBody(node); - if (ctor) { - emitLeadingComments(ctor); - } - emitStart(ctor || node); - write("function "); - emit(node.name); - emitSignatureParameters(ctor); - write(" {"); - scopeEmitStart(node, "constructor"); - increaseIndent(); - if (ctor) { - emitDetachedComments(ctor.body.statements); - } - emitCaptureThisForNodeIfNecessary(node); - if (ctor) { - emitDefaultValueAssignments(ctor); - emitRestParameter(ctor); - if (baseTypeNode) { - var superCall = findInitialSuperCall(ctor); - if (superCall) { - writeLine(); - emit(superCall); - } - } - emitParameterPropertyAssignments(ctor); - } - else { - if (baseTypeNode) { - writeLine(); - emitStart(baseTypeNode); - write("_super.apply(this, arguments);"); - emitEnd(baseTypeNode); - } - } - emitMemberAssignments(node, 0); - if (ctor) { - var statements = ctor.body.statements; - if (superCall) - statements = statements.slice(1); - emitLines(statements); - } - emitTempDeclarations(true); - writeLine(); - if (ctor) { - emitLeadingCommentsOfPosition(ctor.body.statements.end); - } - decreaseIndent(); - emitToken(15, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); - emitEnd(ctor || node); - if (ctor) { - emitTrailingComments(ctor); - } - tempCount = saveTempCount; - tempVariables = saveTempVariables; - tempParameters = saveTempParameters; + emitEnd(node); + if (node.kind === 201) { + emitExportMemberAssignment(node); + } + if (languageVersion < 2 && node.parent === currentSourceFile && node.name) { + emitExportMemberAssignments(node.name); } } + function emitClassMemberPrefix(node, member) { + emitDeclarationName(node); + if (!(member.flags & 128)) { + write(".prototype"); + } + } + function emitDecoratorsOfClass(node) { + emitDecoratorsOfMembers(node, 0); + emitDecoratorsOfMembers(node, 128); + emitDecoratorsOfConstructor(node); + } + function emitDecoratorsOfConstructor(node) { + var constructor = ts.getFirstConstructorWithBody(node); + if (constructor) { + emitDecoratorsOfParameters(node, constructor); + } + if (!ts.nodeIsDecorated(node)) { + return; + } + writeLine(); + emitStart(node); + emitDeclarationName(node); + write(" = "); + emitDecorateStart(node.decorators); + emitDeclarationName(node); + write(");"); + emitEnd(node); + writeLine(); + } + function emitDecoratorsOfMembers(node, staticFlag) { + ts.forEach(node.members, function (member) { + if ((member.flags & 128) !== staticFlag) { + return; + } + var decorators; + switch (member.kind) { + case 134: + emitDecoratorsOfParameters(node, member); + decorators = member.decorators; + break; + case 136: + case 137: + var accessors = ts.getAllAccessorDeclarations(node.members, member); + if (member !== accessors.firstAccessor) { + return; + } + if (accessors.setAccessor) { + emitDecoratorsOfParameters(node, accessors.setAccessor); + } + decorators = accessors.firstAccessor.decorators; + if (!decorators && accessors.secondAccessor) { + decorators = accessors.secondAccessor.decorators; + } + break; + case 132: + decorators = member.decorators; + break; + default: + return; + } + if (!decorators) { + return; + } + writeLine(); + emitStart(member); + if (member.kind !== 132) { + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", "); + } + emitDecorateStart(decorators); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + if (member.kind !== 132) { + write(", Object.getOwnPropertyDescriptor("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write("))"); + } + write(");"); + emitEnd(member); + writeLine(); + }); + } + function emitDecoratorsOfParameters(node, member) { + ts.forEach(member.parameters, function (parameter, parameterIndex) { + if (!ts.nodeIsDecorated(parameter)) { + return; + } + writeLine(); + emitStart(parameter); + emitDecorateStart(parameter.decorators); + emitStart(parameter.name); + if (member.kind === 135) { + emitDeclarationName(node); + write(", void 0"); + } + else { + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + } + write(", "); + write(String(parameterIndex)); + emitEnd(parameter.name); + write(");"); + emitEnd(parameter); + writeLine(); + }); + } + function emitDecorateStart(decorators) { + write("__decorate(["); + var decoratorCount = decorators.length; + for (var i = 0; i < decoratorCount; i++) { + if (i > 0) { + write(", "); + } + var decorator = decorators[i]; + emitStart(decorator); + emit(decorator.expression); + emitEnd(decorator); + } + write("], "); + } function emitInterfaceDeclaration(node) { - emitPinnedOrTripleSlashComments(node); + emitOnlyPinnedOrTripleSlashComments(node); } function shouldEmitEnumDeclaration(node) { var isConstEnum = ts.isConst(node); - return !isConstEnum || compilerOptions.preserveConstEnums; + return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation; } function emitEnumDeclaration(node) { if (!shouldEmitEnumDeclaration(node)) { return; } - if (!(node.flags & 1)) { + if (!(node.flags & 1) || isES6ExportedDeclaration(node)) { emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); emitEnd(node); @@ -20114,7 +23264,7 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") {"); increaseIndent(); @@ -20130,7 +23280,7 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (node.flags & 1) { + if (!isES6ExportedDeclaration(node) && node.flags & 1) { writeLine(); emitStart(node); write("var "); @@ -20140,13 +23290,16 @@ var ts; emitEnd(node); write(";"); } + if (languageVersion < 2 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } } function emitEnumMember(node) { var enumParent = node.parent; emitStart(node); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); - write(resolver.getLocalNameOfContainer(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); emitExpressionForPropertyName(node.name); write("] = "); @@ -20157,14 +23310,12 @@ var ts; write(";"); } function writeEnumMemberDeclarationValue(member) { - if (!member.initializer || ts.isConst(member.parent)) { - var value = resolver.getConstantValue(member); - if (value !== undefined) { - write(value.toString()); - return; - } + var value = resolver.getConstantValue(member); + if (value !== undefined) { + write(value.toString()); + return; } - if (member.initializer) { + else if (member.initializer) { emit(member.initializer); } else { @@ -20172,20 +23323,23 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 198) { + if (moduleDeclaration.body.kind === 205) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } } function shouldEmitModuleDeclaration(node) { - return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums); + return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation); } function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); write(";"); @@ -20194,16 +23348,16 @@ var ts; emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getLocalNameOfContainer(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 199) { - var saveTempCount = tempCount; + if (node.body.kind === 206) { + var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; - tempCount = 0; + tempFlags = 0; tempVariables = undefined; emit(node.body); - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; } else { @@ -20220,7 +23374,7 @@ var ts; scopeEmitEnd(); } write(")("); - if (node.flags & 1) { + if ((node.flags & 1) && !isES6ExportedDeclaration(node)) { emit(node.name); write(" = "); } @@ -20229,66 +23383,313 @@ var ts; emitModuleMemberName(node); write(" = {}));"); emitEnd(node); + if (!isES6ExportedDeclaration(node) && node.name.kind === 65 && node.parent === currentSourceFile) { + emitExportMemberAssignments(node.name); + } + } + function emitRequire(moduleName) { + if (moduleName.kind === 8) { + write("require("); + emitStart(moduleName); + emitLiteral(moduleName); + emitEnd(moduleName); + emitToken(17, moduleName.end); + } + else { + write("require()"); + } + } + function getNamespaceDeclarationNode(node) { + if (node.kind === 208) { + return node; + } + var importClause = node.importClause; + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 211) { + return importClause.namedBindings; + } + } + function isDefaultImport(node) { + return node.kind === 209 && node.importClause && !!node.importClause.name; + } + function emitExportImportAssignments(node) { + if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { + emitExportMemberAssignments(node.name); + } + ts.forEachChild(node, emitExportImportAssignments); } function emitImportDeclaration(node) { - var emitImportDeclaration = resolver.isReferencedImportDeclaration(node); - if (!emitImportDeclaration) { - emitImportDeclaration = !ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportWithEntityName(node); + if (languageVersion < 2) { + return emitExternalImportDeclaration(node); } - if (emitImportDeclaration) { - if (ts.isExternalModuleImportDeclaration(node) && node.parent.kind === 210 && compilerOptions.module === 2) { - if (node.flags & 1) { - writeLine(); - emitLeadingComments(node); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - write(";"); - emitEnd(node); - emitTrailingComments(node); + if (node.importClause) { + var shouldEmitDefaultBindings = resolver.isReferencedAliasDeclaration(node.importClause); + var shouldEmitNamedBindings = node.importClause.namedBindings && resolver.isReferencedAliasDeclaration(node.importClause.namedBindings, true); + if (shouldEmitDefaultBindings || shouldEmitNamedBindings) { + write("import "); + emitStart(node.importClause); + if (shouldEmitDefaultBindings) { + emit(node.importClause.name); + if (shouldEmitNamedBindings) { + write(", "); + } } + if (shouldEmitNamedBindings) { + emitLeadingComments(node.importClause.namedBindings); + emitStart(node.importClause.namedBindings); + if (node.importClause.namedBindings.kind === 211) { + write("* as "); + emit(node.importClause.namedBindings.name); + } + else { + write("{ "); + emitExportOrImportSpecifierList(node.importClause.namedBindings.elements, resolver.isReferencedAliasDeclaration); + write(" }"); + } + emitEnd(node.importClause.namedBindings); + emitTrailingComments(node.importClause.namedBindings); + } + emitEnd(node.importClause); + write(" from "); + emit(node.moduleSpecifier); + write(";"); } - else { - writeLine(); + } + else { + write("import "); + emit(node.moduleSpecifier); + write(";"); + } + } + function emitExternalImportDeclaration(node) { + if (ts.contains(externalImports, node)) { + var isExportedImport = node.kind === 208 && (node.flags & 1) !== 0; + var namespaceDeclaration = getNamespaceDeclarationNode(node); + if (compilerOptions.module !== 2) { emitLeadingComments(node); emitStart(node); - if (!(node.flags & 1)) - write("var "); - emitModuleMemberName(node); - write(" = "); - if (ts.isInternalModuleImportDeclaration(node)) { - emit(node.moduleReference); + if (namespaceDeclaration && !isDefaultImport(node)) { + if (!isExportedImport) + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); } else { - var literal = ts.getExternalModuleImportDeclarationExpression(node); - write("require("); - emitStart(literal); - emitLiteral(literal); - emitEnd(literal); - emitToken(17, literal.end); + var isNakedImport = 209 && !node.importClause; + if (!isNakedImport) { + write("var "); + write(getGeneratedNameForNode(node)); + write(" = "); + } + } + emitRequire(ts.getExternalModuleName(node)); + if (namespaceDeclaration && isDefaultImport(node)) { + write(", "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); } write(";"); emitEnd(node); + emitExportImportAssignments(node); emitTrailingComments(node); } + else { + if (isExportedImport) { + emitModuleMemberName(namespaceDeclaration); + write(" = "); + emit(namespaceDeclaration.name); + write(";"); + } + else if (namespaceDeclaration && isDefaultImport(node)) { + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + write(";"); + } + emitExportImportAssignments(node); + } } } - function getExternalImportDeclarations(node) { - var result = []; - ts.forEach(node.statements, function (statement) { - if (ts.isExternalModuleImportDeclaration(statement) && resolver.isReferencedImportDeclaration(statement)) { - result.push(statement); + function emitImportEqualsDeclaration(node) { + if (ts.isExternalModuleImportEqualsDeclaration(node)) { + emitExternalImportDeclaration(node); + return; + } + if (resolver.isReferencedAliasDeclaration(node) || + (!ts.isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node))) { + emitLeadingComments(node); + emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + write("var "); } - }); - return result; + else if (!(node.flags & 1)) { + write("var "); + } + emitModuleMemberName(node); + write(" = "); + emit(node.moduleReference); + write(";"); + emitEnd(node); + emitExportImportAssignments(node); + emitTrailingComments(node); + } } - function getFirstExportAssignment(sourceFile) { - return ts.forEach(sourceFile.statements, function (node) { - if (node.kind === 201) { - return node; + function emitExportDeclaration(node) { + if (languageVersion < 2) { + if (node.moduleSpecifier && (!node.exportClause || resolver.isValueAliasDeclaration(node))) { + emitStart(node); + var generatedName = getGeneratedNameForNode(node); + if (node.exportClause) { + if (compilerOptions.module !== 2) { + write("var "); + write(generatedName); + write(" = "); + emitRequire(ts.getExternalModuleName(node)); + write(";"); + } + for (var _a = 0, _b = node.exportClause.elements; _a < _b.length; _a++) { + var specifier = _b[_a]; + if (resolver.isValueAliasDeclaration(specifier)) { + writeLine(); + emitStart(specifier); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + write(" = "); + write(generatedName); + write("."); + emitNodeWithoutSourceMap(specifier.propertyName || specifier.name); + write(";"); + emitEnd(specifier); + } + } + } + else { + writeLine(); + write("__export("); + if (compilerOptions.module !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); + } + emitEnd(node); } - }); + } + else { + if (!node.exportClause || resolver.isValueAliasDeclaration(node)) { + emitStart(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitExportOrImportSpecifierList(node.exportClause.elements, resolver.isValueAliasDeclaration); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + emitNodeWithoutSourceMap(node.moduleSpecifier); + } + write(";"); + emitEnd(node); + } + } + } + function emitExportOrImportSpecifierList(specifiers, shouldEmit) { + ts.Debug.assert(languageVersion >= 2); + var needsComma = false; + for (var _a = 0; _a < specifiers.length; _a++) { + var specifier = specifiers[_a]; + if (shouldEmit(specifier)) { + if (needsComma) { + write(", "); + } + emitStart(specifier); + if (specifier.propertyName) { + emitNodeWithoutSourceMap(specifier.propertyName); + write(" as "); + } + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier); + needsComma = true; + } + } + } + function emitExportAssignment(node) { + if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { + if (languageVersion >= 2) { + writeLine(); + emitStart(node); + write("export default "); + var expression = node.expression; + emit(expression); + if (expression.kind !== 200 && + expression.kind !== 201) { + write(";"); + } + emitEnd(node); + } + else { + writeLine(); + emitStart(node); + emitContainingModuleName(node); + write(".default = "); + emit(node.expression); + write(";"); + emitEnd(node); + } + } + } + function collectExternalModuleInfo(sourceFile) { + externalImports = []; + exportSpecifiers = {}; + exportEquals = undefined; + hasExportStars = false; + for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { + var node = _b[_a]; + switch (node.kind) { + case 209: + if (!node.importClause || + resolver.isReferencedAliasDeclaration(node.importClause, true)) { + externalImports.push(node); + } + break; + case 208: + if (node.moduleReference.kind === 219 && resolver.isReferencedAliasDeclaration(node)) { + externalImports.push(node); + } + break; + case 215: + if (node.moduleSpecifier) { + if (!node.exportClause) { + externalImports.push(node); + hasExportStars = true; + } + else if (resolver.isValueAliasDeclaration(node)) { + externalImports.push(node); + } + } + else { + for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { + var specifier = _d[_c]; + var name_17 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_17] || (exportSpecifiers[name_17] = [])).push(specifier); + } + } + break; + case 214: + if (node.isExportEquals && !exportEquals) { + exportEquals = node; + } + break; + } + } } function sortAMDModules(amdModules) { return amdModules.sort(function (moduleA, moduleB) { @@ -20303,8 +23704,20 @@ var ts; } }); } + function emitExportStarHelper() { + if (hasExportStars) { + writeLine(); + write("function __export(m) {"); + increaseIndent(); + writeLine(); + write("for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];"); + decreaseIndent(); + writeLine(); + write("}"); + } + } function emitAMDModule(node, startIndex) { - var imports = getExternalImportDeclarations(node); + collectExternalModuleInfo(node); writeLine(); write("define("); sortAMDModules(node.amdDependencies); @@ -20312,62 +23725,78 @@ var ts; write("\"" + node.amdModuleName + "\", "); } write("[\"require\", \"exports\""); - ts.forEach(imports, function (imp) { + for (var _a = 0; _a < externalImports.length; _a++) { + var importNode = externalImports[_a]; write(", "); - emitLiteral(ts.getExternalModuleImportDeclarationExpression(imp)); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var moduleName = ts.getExternalModuleName(importNode); + if (moduleName.kind === 8) { + emitLiteral(moduleName); + } + else { + write("\"\""); + } + } + for (var _b = 0, _c = node.amdDependencies; _b < _c.length; _b++) { + var amdDependency = _c[_b]; var text = "\"" + amdDependency.path + "\""; write(", "); write(text); - }); + } write("], function (require, exports"); - ts.forEach(imports, function (imp) { + for (var _d = 0; _d < externalImports.length; _d++) { + var importNode = externalImports[_d]; write(", "); - emit(imp.name); - }); - ts.forEach(node.amdDependencies, function (amdDependency) { + var namespaceDeclaration = getNamespaceDeclarationNode(importNode); + if (namespaceDeclaration && !isDefaultImport(importNode)) { + emit(namespaceDeclaration.name); + } + else { + write(getGeneratedNameForNode(importNode)); + } + } + for (var _e = 0, _f = node.amdDependencies; _e < _f.length; _e++) { + var amdDependency = _f[_e]; if (amdDependency.name) { write(", "); write(amdDependency.name); } - }); + } write(") {"); increaseIndent(); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { - writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("return "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); - write(";"); - emitEnd(exportAssignment); - } + emitExportEquals(true); decreaseIndent(); writeLine(); write("});"); } function emitCommonJSModule(node, startIndex) { + collectExternalModuleInfo(node); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { + emitExportEquals(false); + } + function emitES6Module(node, startIndex) { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(true); + } + function emitExportEquals(emitAsReturn) { + if (exportEquals && resolver.isValueAliasDeclaration(exportEquals)) { writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("module.exports = "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); + emitStart(exportEquals); + write(emitAsReturn ? "return " : "module.exports = "); + emit(exportEquals.expression); write(";"); - emitEnd(exportAssignment); + emitEnd(exportEquals); } } function emitDirectivePrologues(statements, startWithNewLine) { @@ -20384,12 +23813,21 @@ var ts; } return statements.length; } - function emitSourceFile(node) { - currentSourceFile = node; + function writeHelper(text) { + var lines = text.split(/\r\n|\r|\n/g); + for (var i = 0; i < lines.length; ++i) { + var line = lines[i]; + if (line.length) { + writeLine(); + write(line); + } + } + } + function emitSourceFileNode(node) { writeLine(); emitDetachedComments(node); var startIndex = emitDirectivePrologues(node.statements, false); - if (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8) { + if ((languageVersion < 2) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & 8)) { writeLine(); write("var __extends = this.__extends || function (d, b) {"); increaseIndent(); @@ -20406,8 +23844,15 @@ var ts; write("};"); extendsEmitted = true; } + if (!decorateEmitted && resolver.getNodeCheckFlags(node) & 512) { + writeHelper("\nvar __decorate = this.__decorate || function (decorators, target, key, value) {\n var kind = typeof (arguments.length == 2 ? value = target : value);\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n switch (kind) {\n case \"function\": value = decorator(value) || value; break;\n case \"number\": decorator(target, key, value); break;\n case \"undefined\": decorator(target, key); break;\n case \"object\": value = decorator(target, key, value) || value; break;\n }\n }\n return value;\n};"); + decorateEmitted = true; + } if (ts.isExternalModule(node)) { - if (compilerOptions.module === 2) { + if (languageVersion >= 2) { + emitES6Module(node, startIndex); + } + else if (compilerOptions.module === 2) { emitAMDModule(node, startIndex); } else { @@ -20415,64 +23860,77 @@ var ts; } } else { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(true); } emitLeadingComments(node.endOfFileToken); } - function emitNode(node, disableComments) { + function emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers) { if (!node) { return; } if (node.flags & 2) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - var emitComments = !disableComments && shouldEmitLeadingAndTrailingComments(node); + var emitComments = shouldEmitLeadingAndTrailingComments(node); if (emitComments) { emitLeadingComments(node); } - emitJavaScriptWorker(node); + emitJavaScriptWorker(node, allowGeneratedIdentifiers); if (emitComments) { emitTrailingComments(node); } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 195: - case 193: + case 202: case 200: - case 196: - case 201: + case 209: + case 208: + case 203: + case 214: return false; - case 198: + case 205: return shouldEmitModuleDeclaration(node); - case 197: + case 204: return shouldEmitEnumDeclaration(node); } + if (node.kind !== 179 && + node.parent && + node.parent.kind === 163 && + node.parent.body === node && + compilerOptions.target <= 1) { + return false; + } return true; } - function emitJavaScriptWorker(node) { + function emitJavaScriptWorker(node, allowGeneratedIdentifiers) { + if (allowGeneratedIdentifiers === void 0) { allowGeneratedIdentifiers = true; } switch (node.kind) { - case 64: - return emitIdentifier(node); - case 126: - return emitParameter(node); - case 130: + case 65: + return emitIdentifier(node, allowGeneratedIdentifiers); case 129: - return emitMethod(node); - case 132: + return emitParameter(node); + case 134: case 133: + return emitMethod(node); + case 136: + case 137: return emitAccessor(node); - case 92: + case 93: return emitThis(node); - case 90: + case 91: return emitSuper(node); - case 88: + case 89: return write("null"); - case 94: + case 95: return write("true"); - case 79: + case 80: return write("false"); case 7: case 8: @@ -20482,122 +23940,130 @@ var ts; case 12: case 13: return emitLiteral(node); - case 167: - return emitTemplateExpression(node); case 171: - return emitTemplateSpan(node); - case 123: - return emitQualifiedName(node); - case 146: - return emitObjectBindingPattern(node); - case 147: - return emitArrayBindingPattern(node); - case 148: - return emitBindingElement(node); - case 149: - return emitArrayLiteral(node); - case 150: - return emitObjectLiteral(node); - case 207: - return emitPropertyAssignment(node); - case 208: - return emitShorthandPropertyAssignment(node); - case 124: - return emitComputedPropertyName(node); - case 151: - return emitPropertyAccess(node); - case 152: - return emitIndexedAccess(node); - case 153: - return emitCallExpression(node); - case 154: - return emitNewExpression(node); - case 155: - return emitTaggedTemplateExpression(node); - case 156: - return emit(node.expression); - case 157: - return emitParenExpression(node); - case 193: - case 158: - case 159: - return emitFunctionDeclaration(node); - case 160: - return emitDeleteExpression(node); - case 161: - return emitTypeOfExpression(node); - case 162: - return emitVoidExpression(node); - case 163: - return emitPrefixUnaryExpression(node); - case 164: - return emitPostfixUnaryExpression(node); - case 165: - return emitBinaryExpression(node); - case 166: - return emitConditionalExpression(node); - case 169: - return emitSpreadElementExpression(node); - case 170: - return; - case 172: - case 199: - return emitBlock(node); - case 173: - return emitVariableStatement(node); - case 174: - return write(";"); - case 175: - return emitExpressionStatement(node); + return emitTemplateExpression(node); case 176: - return emitIfStatement(node); - case 177: - return emitDoStatement(node); - case 178: - return emitWhileStatement(node); - case 179: - return emitForStatement(node); - case 181: - case 180: - return emitForInOrForOfStatement(node); - case 182: - case 183: - return emitBreakOrContinueStatement(node); - case 184: - return emitReturnStatement(node); - case 185: - return emitWithStatement(node); - case 186: - return emitSwitchStatement(node); - case 203: - case 204: - return emitCaseOrDefaultClause(node); - case 187: - return emitLabelledStatement(node); - case 188: - return emitThrowStatement(node); - case 189: - return emitTryStatement(node); - case 206: - return emitCatchClause(node); - case 190: - return emitDebuggerStatement(node); - case 191: - return emitVariableDeclaration(node); - case 194: - return emitClassDeclaration(node); - case 195: - return emitInterfaceDeclaration(node); - case 197: - return emitEnumDeclaration(node); - case 209: - return emitEnumMember(node); - case 198: - return emitModuleDeclaration(node); + return emitTemplateSpan(node); + case 126: + return emitQualifiedName(node); + case 150: + return emitObjectBindingPattern(node); + case 151: + return emitArrayBindingPattern(node); + case 152: + return emitBindingElement(node); + case 153: + return emitArrayLiteral(node); + case 154: + return emitObjectLiteral(node); + case 224: + return emitPropertyAssignment(node); + case 225: + return emitShorthandPropertyAssignment(node); + case 127: + return emitComputedPropertyName(node); + case 155: + return emitPropertyAccess(node); + case 156: + return emitIndexedAccess(node); + case 157: + return emitCallExpression(node); + case 158: + return emitNewExpression(node); + case 159: + return emitTaggedTemplateExpression(node); + case 160: + return emit(node.expression); + case 161: + return emitParenExpression(node); case 200: + case 162: + case 163: + return emitFunctionDeclaration(node); + case 164: + return emitDeleteExpression(node); + case 165: + return emitTypeOfExpression(node); + case 166: + return emitVoidExpression(node); + case 167: + return emitPrefixUnaryExpression(node); + case 168: + return emitPostfixUnaryExpression(node); + case 169: + return emitBinaryExpression(node); + case 170: + return emitConditionalExpression(node); + case 173: + return emitSpreadElementExpression(node); + case 175: + return; + case 179: + case 206: + return emitBlock(node); + case 180: + return emitVariableStatement(node); + case 181: + return write(";"); + case 182: + return emitExpressionStatement(node); + case 183: + return emitIfStatement(node); + case 184: + return emitDoStatement(node); + case 185: + return emitWhileStatement(node); + case 186: + return emitForStatement(node); + case 188: + case 187: + return emitForInOrForOfStatement(node); + case 189: + case 190: + return emitBreakOrContinueStatement(node); + case 191: + return emitReturnStatement(node); + case 192: + return emitWithStatement(node); + case 193: + return emitSwitchStatement(node); + case 220: + case 221: + return emitCaseOrDefaultClause(node); + case 194: + return emitLabelledStatement(node); + case 195: + return emitThrowStatement(node); + case 196: + return emitTryStatement(node); + case 223: + return emitCatchClause(node); + case 197: + return emitDebuggerStatement(node); + case 198: + return emitVariableDeclaration(node); + case 174: + return emitClassExpression(node); + case 201: + return emitClassDeclaration(node); + case 202: + return emitInterfaceDeclaration(node); + case 204: + return emitEnumDeclaration(node); + case 226: + return emitEnumMember(node); + case 205: + return emitModuleDeclaration(node); + case 209: return emitImportDeclaration(node); - case 210: - return emitSourceFile(node); + case 208: + return emitImportEqualsDeclaration(node); + case 215: + return emitExportDeclaration(node); + case 214: + return emitExportAssignment(node); + case 227: + return emitSourceFileNode(node); } } function hasDetachedComments(pos) { @@ -20613,34 +24079,50 @@ var ts; } return leadingComments; } + function filterComments(ranges, onlyPinnedOrTripleSlashComments) { + if (ranges && onlyPinnedOrTripleSlashComments) { + ranges = ts.filter(ranges, isPinnedOrTripleSlashComment); + if (ranges.length === 0) { + return undefined; + } + } + return ranges; + } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.pos !== node.parent.pos) { - var leadingComments; + if (node.parent.kind === 227 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { - leadingComments = getLeadingCommentsWithoutDetachedComments(); + return getLeadingCommentsWithoutDetachedComments(); } else { - leadingComments = ts.getLeadingCommentRangesOfNode(node, currentSourceFile); + return ts.getLeadingCommentRangesOfNode(node, currentSourceFile); } - return leadingComments; } } } - function emitLeadingDeclarationComments(node) { - var leadingComments = getLeadingCommentsToEmit(node); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); - } - function emitTrailingDeclarationComments(node) { + function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 210 || node.end !== node.parent.end) { - var trailingComments = ts.getTrailingCommentRanges(currentSourceFile.text, node.end); - emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + if (node.parent.kind === 227 || node.end !== node.parent.end) { + return ts.getTrailingCommentRanges(currentSourceFile.text, node.end); } } } - function emitLeadingCommentsOfLocalPosition(pos) { + function emitOnlyPinnedOrTripleSlashComments(node) { + emitLeadingCommentsWorker(node, true); + } + function emitLeadingComments(node) { + return emitLeadingCommentsWorker(node, compilerOptions.removeComments); + } + function emitLeadingCommentsWorker(node, onlyPinnedOrTripleSlashComments) { + var leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + } + function emitTrailingComments(node) { + var trailingComments = filterComments(getTrailingCommentsToEmit(node), compilerOptions.removeComments); + ts.emitComments(currentSourceFile, writer, trailingComments, false, newLine, writeComment); + } + function emitLeadingCommentsOfPosition(pos) { var leadingComments; if (hasDetachedComments(pos)) { leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -20648,18 +24130,19 @@ var ts; else { leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, pos); } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); - emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); + leadingComments = filterComments(leadingComments, compilerOptions.removeComments); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); + ts.emitComments(currentSourceFile, writer, leadingComments, true, newLine, writeComment); } - function emitDetachedCommentsAtPosition(node) { + function emitDetachedComments(node) { var leadingComments = ts.getLeadingCommentRanges(currentSourceFile.text, node.pos); if (leadingComments) { var detachedComments = []; var lastComment; ts.forEach(leadingComments, function (comment) { if (lastComment) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, lastComment.end); - var commentLine = getLineOfLocalPosition(currentSourceFile, comment.pos); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, lastComment.end); + var commentLine = ts.getLineOfLocalPosition(currentSourceFile, comment.pos); if (commentLine >= lastCommentLine + 2) { return detachedComments; } @@ -20668,11 +24151,11 @@ var ts; lastComment = comment; }); if (detachedComments.length) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); - var nodeLine = getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); + var lastCommentLine = ts.getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); + var nodeLine = ts.getLineOfLocalPosition(currentSourceFile, ts.skipTrivia(currentSourceFile.text, node.pos)); if (nodeLine >= lastCommentLine + 2) { - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); - emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); + ts.emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + ts.emitComments(currentSourceFile, writer, detachedComments, true, newLine, writeComment); var currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; if (detachedCommentsInfo) { detachedCommentsInfo.push(currentDetachedCommentInfo); @@ -20684,52 +24167,53 @@ var ts; } } } - function emitPinnedOrTripleSlashCommentsOfNode(node) { - var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); - function isPinnedOrTripleSlashComment(comment) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; - } - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && - currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { - return true; - } + function isPinnedOrTripleSlashComment(comment) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 42) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === 33; + } + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === 47 && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === 47 && + currentSourceFile.text.substring(comment.pos, comment.end).match(ts.fullTripleSlashReferencePathRegEx)) { + return true; } - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, pinnedComments); - emitComments(currentSourceFile, writer, pinnedComments, true, newLine, writeComment); - } - } - function writeDeclarationFile(jsFilePath, sourceFile) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - if (!emitDeclarationResult.reportedDeclarationError) { - var declarationOutput = emitDeclarationResult.referencePathsOutput; - var appliedSyncOutputPos = 0; - ts.forEach(emitDeclarationResult.aliasDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.asynchronousOutput) { - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); - declarationOutput += aliasEmitInfo.asynchronousOutput; - appliedSyncOutputPos = aliasEmitInfo.outputPos; - } - }); - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos); - writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, compilerOptions.emitBOM); } } function emitFile(jsFilePath, sourceFile) { emitJavaScript(jsFilePath, sourceFile); if (compilerOptions.declaration) { - writeDeclarationFile(jsFilePath, sourceFile); + ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); } } } ts.emitFiles = emitFiles; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { + ts.programTime = 0; ts.emitTime = 0; - function createCompilerHost(options) { + ts.ioReadTime = 0; + ts.ioWriteTime = 0; + ts.version = "1.5.0"; + function findConfigFile(searchPath) { + var fileName = "tsconfig.json"; + while (true) { + if (ts.sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + fileName = "../" + fileName; + } + return undefined; + } + ts.findConfigFile = findConfigFile; + function createCompilerHost(options, setParentNodes) { var currentDirectory; var existingDirectories = {}; function getCanonicalFileName(fileName) { @@ -20737,38 +24221,45 @@ var ts; } var unsupportedFileEncodingErrorCode = -2147024809; function getSourceFile(fileName, languageVersion, onError) { + var text; try { - var text = ts.sys.readFile(fileName, options.charset); + var start = new Date().getTime(); + text = ts.sys.readFile(fileName, options.charset); + ts.ioReadTime += new Date().getTime() - start; } catch (e) { if (onError) { - onError(e.number === unsupportedFileEncodingErrorCode ? ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_file_encoding).messageText : e.message); + onError(e.number === unsupportedFileEncodingErrorCode + ? ts.createCompilerDiagnostic(ts.Diagnostics.Unsupported_file_encoding).messageText + : e.message); } text = ""; } - return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion) : undefined; + return text !== undefined ? ts.createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; + } + function directoryExists(directoryPath) { + if (ts.hasProperty(existingDirectories, directoryPath)) { + return true; + } + if (ts.sys.directoryExists(directoryPath)) { + existingDirectories[directoryPath] = true; + return true; + } + return false; + } + function ensureDirectoriesExist(directoryPath) { + if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { + var parentDirectory = ts.getDirectoryPath(directoryPath); + ensureDirectoriesExist(parentDirectory); + ts.sys.createDirectory(directoryPath); + } } function writeFile(fileName, data, writeByteOrderMark, onError) { - function directoryExists(directoryPath) { - if (ts.hasProperty(existingDirectories, directoryPath)) { - return true; - } - if (ts.sys.directoryExists(directoryPath)) { - existingDirectories[directoryPath] = true; - return true; - } - return false; - } - function ensureDirectoriesExist(directoryPath) { - if (directoryPath.length > ts.getRootLength(directoryPath) && !directoryExists(directoryPath)) { - var parentDirectory = ts.getDirectoryPath(directoryPath); - ensureDirectoriesExist(parentDirectory); - ts.sys.createDirectory(directoryPath); - } - } try { + var start = new Date().getTime(); ensureDirectoriesExist(ts.getDirectoryPath(ts.normalizePath(fileName))); ts.sys.writeFile(fileName, data, writeByteOrderMark); + ts.ioWriteTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -20789,6 +24280,9 @@ var ts; ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program) { var diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + if (program.getCompilerOptions().declaration) { + diagnostics.concat(program.getDeclarationDiagnostics()); + } return ts.sortAndDeduplicateDiagnostics(diagnostics); } ts.getPreEmitDiagnostics = getPreEmitDiagnostics; @@ -20822,14 +24316,16 @@ var ts; var diagnostics = ts.createDiagnosticCollection(); var seenNoDefaultLib = options.noLib; var commonSourceDirectory; + var diagnosticsProducingTypeChecker; + var noDiagnosticsTypeChecker; + var start = new Date().getTime(); host = host || createCompilerHost(options); ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); if (!seenNoDefaultLib) { processRootFile(host.getDefaultLibFileName(options), true); } verifyCompilerOptions(); - var diagnosticsProducingTypeChecker; - var noDiagnosticsTypeChecker; + ts.programTime += new Date().getTime() - start; program = { getSourceFile: getSourceFile, getSourceFiles: function () { return files; }, @@ -20867,16 +24363,13 @@ var ts; function getTypeChecker() { return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = ts.createTypeChecker(program, false)); } - function getDeclarationDiagnostics(targetSourceFile) { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(targetSourceFile); - return ts.getDeclarationDiagnostics(getEmitHost(), resolver, targetSourceFile); - } function emit(sourceFile, writeFileCallback) { if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) { return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; } + var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); var start = new Date().getTime(); - var emitResult = ts.emitFiles(getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile), getEmitHost(writeFileCallback), sourceFile); + var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile); ts.emitTime += new Date().getTime() - start; return emitResult; } @@ -20900,6 +24393,9 @@ var ts; function getSemanticDiagnostics(sourceFile) { return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile); } + function getDeclarationDiagnostics(sourceFile) { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile); + } function getSyntacticDiagnosticsForFile(sourceFile) { return sourceFile.parseDiagnostics; } @@ -20911,6 +24407,13 @@ var ts; var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); } + function getDeclarationDiagnosticsForFile(sourceFile) { + if (!ts.isDeclarationFile(sourceFile)) { + var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + var writeFile = function () { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); + } + } function getGlobalDiagnostics() { var typeChecker = getDiagnosticsProducingTypeChecker(); var allDiagnostics = []; @@ -20925,9 +24428,11 @@ var ts; processSourceFile(ts.normalizePath(fileName), isDefaultLib); } function processSourceFile(fileName, isDefaultLib, refFile, refPos, refEnd) { + var start; + var length; if (refEnd !== undefined && refPos !== undefined) { - var start = refPos; - var length = refEnd - refPos; + start = refPos; + length = refEnd - refPos; } var diagnostic; if (hasExtension(fileName)) { @@ -20993,8 +24498,8 @@ var ts; files.push(file); } } + return file; } - return file; function getSourceFileFromCache(fileName, canonicalName, useAbsolutePath) { var file = filesByName[canonicalName]; if (file && host.useCaseSensitiveFileNames()) { @@ -21014,30 +24519,31 @@ var ts; } function processImportedModules(file, basePath) { ts.forEach(file.statements, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); - var moduleName = nameLiteral.text; - if (moduleName) { - var searchPath = basePath; - while (true) { - var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - if (findModuleSourceFile(searchName + ".ts", nameLiteral) || findModuleSourceFile(searchName + ".d.ts", nameLiteral)) { - break; + if (node.kind === 209 || node.kind === 208 || node.kind === 215) { + var moduleNameExpr = ts.getExternalModuleName(node); + if (moduleNameExpr && moduleNameExpr.kind === 8) { + var moduleNameText = moduleNameExpr.text; + if (moduleNameText) { + var searchPath = basePath; + while (true) { + var searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleNameText)); + if (findModuleSourceFile(searchName + ".ts", moduleNameExpr) || findModuleSourceFile(searchName + ".d.ts", moduleNameExpr)) { + break; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; } - var parentPath = ts.getDirectoryPath(searchPath); - if (parentPath === searchPath) { - break; - } - searchPath = parentPath; } } } - else if (node.kind === 198 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { + else if (node.kind === 205 && node.name.kind === 8 && (node.flags & 2 || ts.isDeclarationFile(file))) { ts.forEachChild(node.body, function (node) { - if (ts.isExternalModuleImportDeclaration(node) && - ts.getExternalModuleImportDeclarationExpression(node).kind === 8) { - var nameLiteral = ts.getExternalModuleImportDeclarationExpression(node); + if (ts.isExternalModuleImportEqualsDeclaration(node) && + ts.getExternalModuleImportEqualsDeclarationExpression(node).kind === 8) { + var nameLiteral = ts.getExternalModuleImportEqualsDeclarationExpression(node); var moduleName = nameLiteral.text; if (moduleName) { var searchName = ts.normalizePath(ts.combinePaths(basePath, moduleName)); @@ -21055,6 +24561,20 @@ var ts; } } function verifyCompilerOptions() { + if (options.separateCompilation) { + if (options.sourceMap) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation)); + } + if (options.declaration) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation)); + } + if (options.noEmitOnError) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation)); + } + if (options.out) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation)); + } + } if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { if (options.mapRoot) { diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option)); @@ -21064,20 +24584,33 @@ var ts; } return; } - var firstExternalModule = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); - if (firstExternalModule && !options.module) { - var externalModuleErrorSpan = ts.getErrorSpanForNode(firstExternalModule.externalModuleIndicator); - var errorStart = ts.skipTrivia(firstExternalModule.text, externalModuleErrorSpan.pos); - var errorLength = externalModuleErrorSpan.end - errorStart; - diagnostics.add(ts.createFileDiagnostic(firstExternalModule, errorStart, errorLength, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + var languageVersion = options.target || 0; + var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; }); + if (options.separateCompilation) { + if (!options.module && languageVersion < 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + } + var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; }); + if (firstNonExternalModuleSourceFile) { + var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); + diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided)); + } + } + else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { + var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); + diagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + } + if (options.module && languageVersion >= 2) { + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher)); } if (options.outDir || options.sourceRoot || (options.mapRoot && - (!options.out || firstExternalModule !== undefined))) { + (!options.out || firstExternalModuleSourceFile !== undefined))) { var commonPathComponents; ts.forEach(files, function (sourceFile) { - if (!(sourceFile.flags & 1024) && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { + if (!(sourceFile.flags & 2048) + && !ts.fileExtensionIs(sourceFile.fileName, ".js")) { var sourcePathComponents = ts.getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); sourcePathComponents.pop(); if (commonPathComponents) { @@ -21117,6 +24650,10 @@ var ts; } ts.createProgram = createProgram; })(ts || (ts = {})); +/// +/// +/// +/// var ts; (function (ts) { ts.optionDeclarations = [ @@ -21124,10 +24661,6 @@ var ts; name: "charset", type: "string" }, - { - name: "codepage", - type: "number" - }, { name: "declaration", shortName: "d", @@ -21193,10 +24726,6 @@ var ts; name: "noLib", type: "boolean" }, - { - name: "noLibCheck", - type: "boolean" - }, { name: "noResolve", type: "boolean" @@ -21232,6 +24761,10 @@ var ts; type: "boolean", description: ts.Diagnostics.Do_not_emit_comments_to_output }, + { + name: "separateCompilation", + type: "boolean" + }, { name: "sourceMap", type: "boolean", @@ -21455,6 +24988,20 @@ var ts; } ts.parseConfigFile = parseConfigFile; })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// var ts; (function (ts) { var OutliningElementsCollector; @@ -21474,14 +25021,7 @@ var ts; } } function autoCollapse(node) { - switch (node.kind) { - case 199: - case 194: - case 195: - case 197: - return false; - } - return true; + return ts.isFunctionBlock(node) && node.parent.kind !== 163; } var depth = 0; var maxDepth = 20; @@ -21490,30 +25030,30 @@ var ts; return; } switch (n.kind) { - case 172: + case 179: if (!ts.isFunctionBlock(n)) { - var parent = n.parent; + var parent_6 = n.parent; var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); - if (parent.kind === 177 || - parent.kind === 180 || - parent.kind === 181 || - parent.kind === 179 || - parent.kind === 176 || - parent.kind === 178 || - parent.kind === 185 || - parent.kind === 206) { - addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + if (parent_6.kind === 184 || + parent_6.kind === 187 || + parent_6.kind === 188 || + parent_6.kind === 186 || + parent_6.kind === 183 || + parent_6.kind === 185 || + parent_6.kind === 192 || + parent_6.kind === 223) { + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent.kind === 189) { - var tryStatement = parent; + if (parent_6.kind === 196) { + var tryStatement = parent_6; if (tryStatement.tryBlock === n) { - addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + addOutliningSpan(parent_6, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { - var finallyKeyword = ts.findChildOfKind(tryStatement, 80, sourceFile); + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); if (finallyKeyword) { addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); break; @@ -21529,21 +25069,23 @@ var ts; }); break; } - case 199: + case 206: { var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; - case 194: - case 195: - case 197: - case 150: - case 186: + } + case 201: + case 202: + case 204: + case 154: + case 207: { var openBrace = ts.findChildOfKind(n, 14, sourceFile); var closeBrace = ts.findChildOfKind(n, 15, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; - case 149: + } + case 153: var openBracket = ts.findChildOfKind(n, 18, sourceFile); var closeBracket = ts.findChildOfKind(n, 19, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -21563,27 +25105,33 @@ var ts; (function (ts) { var NavigateTo; (function (NavigateTo) { - var MatchKind; - (function (MatchKind) { - MatchKind[MatchKind["none"] = 0] = "none"; - MatchKind[MatchKind["exact"] = 1] = "exact"; - MatchKind[MatchKind["substring"] = 2] = "substring"; - MatchKind[MatchKind["prefix"] = 3] = "prefix"; - })(MatchKind || (MatchKind = {})); function getNavigateToItems(program, cancellationToken, searchValue, maxResultCount) { - var terms = searchValue.split(" "); - var searchTerms = ts.map(terms, function (t) { return ({ caseSensitive: hasAnyUpperCaseCharacter(t), term: t }); }); + var patternMatcher = ts.createPatternMatcher(searchValue); var rawItems = []; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); - var fileName = sourceFile.fileName; var declarations = sourceFile.getNamedDeclarations(); - for (var i = 0, n = declarations.length; i < n; i++) { - var declaration = declarations[i]; - var name = declaration.name.text; - var matchKind = getMatchKind(searchTerms, name); - if (matchKind !== 0) { - rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, declaration: declaration }); + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var name = getDeclarationName(declaration); + if (name !== undefined) { + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); + if (!matches) { + continue; + } + if (patternMatcher.patternContainsDots) { + var containers = getContainers(declaration); + if (!containers) { + return undefined; + } + matches = patternMatcher.getMatches(containers, name); + if (!matches) { + continue; + } + } + var fileName = sourceFile.fileName; + var matchKind = bestMatchKind(matches); + rawItems.push({ name: name, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } }); @@ -21593,6 +25141,98 @@ var ts; } var items = ts.map(rawItems, createNavigateToItem); return items; + function allMatchesAreCaseSensitive(matches) { + ts.Debug.assert(matches.length > 0); + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + if (!match.isCaseSensitive) { + return false; + } + } + return true; + } + function getDeclarationName(declaration) { + var result = getTextOfIdentifierOrLiteral(declaration.name); + if (result !== undefined) { + return result; + } + if (declaration.name.kind === 127) { + var expr = declaration.name.expression; + if (expr.kind === 155) { + return expr.name.text; + } + return getTextOfIdentifierOrLiteral(expr); + } + return undefined; + } + function getTextOfIdentifierOrLiteral(node) { + if (node.kind === 65 || + node.kind === 8 || + node.kind === 7) { + return node.text; + } + return undefined; + } + function tryAddSingleDeclarationName(declaration, containers) { + if (declaration && declaration.name) { + var text = getTextOfIdentifierOrLiteral(declaration.name); + if (text !== undefined) { + containers.unshift(text); + } + else if (declaration.name.kind === 127) { + return tryAddComputedPropertyName(declaration.name.expression, containers, true); + } + else { + return false; + } + } + return true; + } + function tryAddComputedPropertyName(expression, containers, includeLastPortion) { + var text = getTextOfIdentifierOrLiteral(expression); + if (text !== undefined) { + if (includeLastPortion) { + containers.unshift(text); + } + return true; + } + if (expression.kind === 155) { + var propertyAccess = expression; + if (includeLastPortion) { + containers.unshift(propertyAccess.name.text); + } + return tryAddComputedPropertyName(propertyAccess.expression, containers, true); + } + return false; + } + function getContainers(declaration) { + var containers = []; + if (declaration.name.kind === 127) { + if (!tryAddComputedPropertyName(declaration.name.expression, containers, false)) { + return undefined; + } + } + declaration = ts.getContainerNode(declaration); + while (declaration) { + if (!tryAddSingleDeclarationName(declaration, containers)) { + return undefined; + } + declaration = ts.getContainerNode(declaration); + } + return containers; + } + function bestMatchKind(matches) { + ts.Debug.assert(matches.length > 0); + var bestMatchKind = ts.PatternMatchKind.camelCase; + for (var _i = 0; _i < matches.length; _i++) { + var match = matches[_i]; + var kind = match.kind; + if (kind < bestMatchKind) { + bestMatchKind = kind; + } + } + return bestMatchKind; + } var baseSensitivity = { sensitivity: "base" }; function compareNavigateToItems(i1, i2) { return i1.matchKind - i2.matchKind || @@ -21606,48 +25246,19 @@ var ts; name: rawItem.name, kind: ts.getNodeKind(declaration), kindModifiers: ts.getNodeModifiers(declaration), - matchKind: MatchKind[rawItem.matchKind], + matchKind: ts.PatternMatchKind[rawItem.matchKind], + isCaseSensitive: rawItem.isCaseSensitive, fileName: rawItem.fileName, textSpan: ts.createTextSpanFromBounds(declaration.getStart(), declaration.getEnd()), containerName: container && container.name ? container.name.text : "", containerKind: container && container.name ? ts.getNodeKind(container) : "" }; } - function hasAnyUpperCaseCharacter(s) { - for (var i = 0, n = s.length; i < n; i++) { - var c = s.charCodeAt(i); - if ((65 <= c && c <= 90) || - (c >= 127 && s.charAt(i).toLocaleLowerCase() !== s.charAt(i))) { - return true; - } - } - return false; - } - function getMatchKind(searchTerms, name) { - var matchKind = 0; - if (name) { - for (var j = 0, n = searchTerms.length; j < n; j++) { - var searchTerm = searchTerms[j]; - var nameToSearch = searchTerm.caseSensitive ? name : name.toLocaleLowerCase(); - var index = nameToSearch.indexOf(searchTerm.term); - if (index < 0) { - return 0; - } - var termKind = 2; - if (index === 0) { - termKind = name.length === searchTerm.term.length ? 1 : 3; - } - if (matchKind === 0 || termKind < matchKind) { - matchKind = termKind; - } - } - } - return matchKind; - } } NavigateTo.getNavigateToItems = getNavigateToItems; })(NavigateTo = ts.NavigateTo || (ts.NavigateTo = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { var NavigationBar; @@ -21660,14 +25271,14 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 198: + case 205: do { current = current.parent; - } while (current.kind === 198); - case 194: - case 197: - case 195: - case 193: + } while (current.kind === 205); + case 201: + case 204: + case 202: + case 200: indent++; } current = current.parent; @@ -21678,25 +25289,50 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 173: + case 180: ts.forEach(node.declarationList.declarations, visit); break; - case 146: - case 147: + case 150: + case 151: ts.forEach(node.elements, visit); break; - case 148: - case 191: + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + childNodes.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + childNodes.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; + case 152: + case 198: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } - case 194: - case 197: - case 195: - case 198: - case 193: + case 201: + case 204: + case 202: + case 205: + case 200: + case 208: + case 213: + case 217: childNodes.push(node); + break; } } ts.forEach(nodes, visit); @@ -21726,20 +25362,20 @@ var ts; } function addTopLevelNodes(nodes, topLevelNodes) { nodes = sortNodes(nodes); - for (var i = 0, n = nodes.length; i < n; i++) { - var node = nodes[i]; + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; switch (node.kind) { - case 194: - case 197: - case 195: + case 201: + case 204: + case 202: topLevelNodes.push(node); break; - case 198: + case 205: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 193: + case 200: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -21750,9 +25386,9 @@ var ts; } } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 193) { - if (functionDeclaration.body && functionDeclaration.body.kind === 172) { - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 193 && !isEmpty(s.name.text); })) { + if (functionDeclaration.kind === 200) { + if (functionDeclaration.body && functionDeclaration.body.kind === 179) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 200 && !isEmpty(s.name.text); })) { return true; } if (!ts.isFunctionBlock(functionDeclaration.parent)) { @@ -21765,19 +25401,19 @@ var ts; function getItemsWorker(nodes, createItem) { var items = []; var keyToItem = {}; - for (var i = 0, n = nodes.length; i < n; i++) { - var child = nodes[i]; - var item = createItem(child); - if (item !== undefined) { - if (item.text.length > 0) { - var key = item.text + "-" + item.kind + "-" + item.indent; + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + var item_3 = createItem(child); + if (item_3 !== undefined) { + if (item_3.text.length > 0) { + var key = item_3.text + "-" + item_3.kind + "-" + item_3.indent; var itemWithSameName = keyToItem[key]; if (itemWithSameName) { - merge(itemWithSameName, item); + merge(itemWithSameName, item_3); } else { - keyToItem[key] = item; - items.push(item); + keyToItem[key] = item_3; + items.push(item_3); } } } @@ -21790,10 +25426,10 @@ var ts; if (!target.childItems) { target.childItems = []; } - outer: for (var i = 0, n = source.childItems.length; i < n; i++) { - var sourceChild = source.childItems[i]; - for (var j = 0, m = target.childItems.length; j < m; j++) { - var targetChild = target.childItems[j]; + outer: for (var _i = 0, _a = source.childItems; _i < _a.length; _i++) { + var sourceChild = _a[_i]; + for (var _b = 0, _c = target.childItems; _b < _c.length; _b++) { + var targetChild = _c[_b]; if (targetChild.text === sourceChild.text && targetChild.kind === sourceChild.kind) { merge(targetChild, sourceChild); continue outer; @@ -21805,42 +25441,42 @@ var ts; } function createChildItem(node) { switch (node.kind) { - case 126: + case 129: if (ts.isBindingPattern(node.name)) { break; } - if ((node.flags & 243) === 0) { + if ((node.flags & 499) === 0) { return undefined; } return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 130: - case 129: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); - case 132: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); - case 133: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); - case 136: - return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 209: - return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); case 134: - return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); - case 135: - return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); - case 128: - case 127: + case 133: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberFunctionElement); + case 136: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberGetAccessorElement); + case 137: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); + case 140: + return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); + case 226: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 193: + case 138: + return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); + case 139: + return createItem(node, "new()", ts.ScriptElementKind.constructSignatureElement); + case 132: + case 131: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); + case 200: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 191: - case 148: + case 198: + case 152: var variableDeclarationNode; - var name; - if (node.kind === 148) { - name = node.name; + var name_18; + if (node.kind === 152) { + name_18 = node.name; variableDeclarationNode = node; - while (variableDeclarationNode && variableDeclarationNode.kind !== 191) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 198) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -21848,19 +25484,25 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name = node.name; + name_18 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_18), ts.ScriptElementKind.variableElement); } - case 131: + case 135: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); + case 217: + case 213: + case 208: + case 210: + case 211: + return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; function createItem(node, name, scriptElementKind) { @@ -21889,17 +25531,17 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 210: + case 227: return createSourceFileItem(node); - case 194: + case 201: return createClassItem(node); - case 197: + case 204: return createEnumItem(node); - case 195: + case 202: return createIterfaceItem(node); - case 198: + case 205: return createModuleItem(node); - case 193: + case 200: return createFunctionItem(node); } return undefined; @@ -21909,7 +25551,7 @@ var ts; } var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 198) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 205) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -21921,9 +25563,9 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.name && node.body && node.body.kind === 172) { + if ((node.name || node.flags & 256) && node.body && node.body.kind === 179) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); - return getNavigationBarItem(node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + return getNavigationBarItem((!node.name && node.flags & 256) ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } return undefined; } @@ -21933,22 +25575,25 @@ var ts; return undefined; } hasGlobalNode = true; - var rootName = ts.isExternalModule(node) ? "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(node.fileName)))) + "\"" : ""; + var rootName = ts.isExternalModule(node) + ? "\"" + ts.escapeString(ts.getBaseFileName(ts.removeFileExtension(ts.normalizePath(node.fileName)))) + "\"" + : ""; return getNavigationBarItem(rootName, ts.ScriptElementKind.moduleElement, ts.ScriptElementKindModifier.none, [getNodeSpan(node)], childItems); } function createClassItem(node) { var childItems; if (node.members) { var constructor = ts.forEach(node.members, function (member) { - return member.kind === 131 && member; + return member.kind === 135 && member; }); var nodes = removeDynamicallyNamedProperties(node); if (constructor) { - nodes.push.apply(nodes, constructor.parameters); + nodes.push.apply(nodes, ts.filter(constructor.parameters, function (p) { return !ts.isBindingPattern(p.name); })); } - var childItems = getItemsWorker(sortNodes(nodes), createChildItem); + childItems = getItemsWorker(sortNodes(nodes), createChildItem); } - return getNavigationBarItem(node.name.text, ts.ScriptElementKind.classElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); + var nodeName = !node.name && (node.flags & 256) ? "default" : node.name.text; + return getNavigationBarItem(nodeName, ts.ScriptElementKind.classElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createEnumItem(node) { var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); @@ -21960,19 +25605,21 @@ var ts; } } function removeComputedProperties(node) { - return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 124; }); + return ts.filter(node.members, function (member) { return member.name === undefined || member.name.kind !== 127; }); } function removeDynamicallyNamedProperties(node) { return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 198) { + while (node.body.kind === 205) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 210 ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); + return node.kind === 227 + ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) + : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } function getTextOfNode(node) { return ts.getTextOfNodeFromSourceText(sourceFile.text, node); @@ -21984,10 +25631,10 @@ var ts; var ts; (function (ts) { (function (PatternMatchKind) { - PatternMatchKind[PatternMatchKind["Exact"] = 0] = "Exact"; - PatternMatchKind[PatternMatchKind["Prefix"] = 1] = "Prefix"; - PatternMatchKind[PatternMatchKind["Substring"] = 2] = "Substring"; - PatternMatchKind[PatternMatchKind["CamelCase"] = 3] = "CamelCase"; + PatternMatchKind[PatternMatchKind["exact"] = 0] = "exact"; + PatternMatchKind[PatternMatchKind["prefix"] = 1] = "prefix"; + PatternMatchKind[PatternMatchKind["substring"] = 2] = "substring"; + PatternMatchKind[PatternMatchKind["camelCase"] = 3] = "camelCase"; })(ts.PatternMatchKind || (ts.PatternMatchKind = {})); var PatternMatchKind = ts.PatternMatchKind; function createPatternMatch(kind, punctuationStripped, isCaseSensitive, camelCaseWeight) { @@ -22018,7 +25665,7 @@ var ts; } return matchSegment(candidate, ts.lastOrUndefined(dotSeparatedSegments)); } - function getMatches(candidate, dottedContainer) { + function getMatches(candidateContainers, candidate) { if (skipMatch(candidate)) { return undefined; } @@ -22026,15 +25673,14 @@ var ts; if (!candidateMatch) { return undefined; } - dottedContainer = dottedContainer || ""; - var containerParts = dottedContainer.split("."); - if (dotSeparatedSegments.length - 1 > containerParts.length) { - return null; + candidateContainers = candidateContainers || []; + if (dotSeparatedSegments.length - 1 > candidateContainers.length) { + return undefined; } var totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = containerParts.length - 1; i >= 0; i--, j--) { + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { var segment = dotSeparatedSegments[i]; - var containerName = containerParts[j]; + var containerName = candidateContainers[j]; var containerMatch = matchSegment(containerName, segment); if (!containerMatch) { return undefined; @@ -22053,27 +25699,27 @@ var ts; var index = indexOfIgnoringCase(candidate, chunk.textLowerCase); if (index === 0) { if (chunk.text.length === candidate.length) { - return createPatternMatch(0, punctuationStripped, candidate === chunk.text); + return createPatternMatch(PatternMatchKind.exact, punctuationStripped, candidate === chunk.text); } else { - return createPatternMatch(1, punctuationStripped, startsWith(candidate, chunk.text)); + return createPatternMatch(PatternMatchKind.prefix, punctuationStripped, startsWith(candidate, chunk.text)); } } var isLowercase = chunk.isLowerCase; if (isLowercase) { if (index > 0) { var wordSpans = getWordSpans(candidate); - for (var i = 0, n = wordSpans.length; i < n; i++) { - var span = wordSpans[i]; + for (var _i = 0; _i < wordSpans.length; _i++) { + var span = wordSpans[_i]; if (partStartsWith(candidate, span, chunk.text, true)) { - return createPatternMatch(2, punctuationStripped, partStartsWith(candidate, span, chunk.text, false)); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, partStartsWith(candidate, span, chunk.text, false)); } } } } else { if (candidate.indexOf(chunk.text) > 0) { - return createPatternMatch(2, punctuationStripped, true); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, true); } } if (!isLowercase) { @@ -22081,18 +25727,18 @@ var ts; var candidateParts = getWordSpans(candidate); var camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, false); if (camelCaseWeight !== undefined) { - return createPatternMatch(3, punctuationStripped, true, camelCaseWeight); + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, true, camelCaseWeight); } camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, true); if (camelCaseWeight !== undefined) { - return createPatternMatch(3, punctuationStripped, false, camelCaseWeight); + return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, false, camelCaseWeight); } } } if (isLowercase) { if (chunk.text.length < candidate.length) { if (index > 0 && isUpperCaseLetter(candidate.charCodeAt(index))) { - return createPatternMatch(2, punctuationStripped, false); + return createPatternMatch(PatternMatchKind.substring, punctuationStripped, false); } } } @@ -22116,8 +25762,8 @@ var ts; } var subWordTextChunks = segment.subWordTextChunks; var matches = undefined; - for (var i = 0, n = subWordTextChunks.length; i < n; i++) { - var subWordTextChunk = subWordTextChunks[i]; + for (var _i = 0; _i < subWordTextChunks.length; _i++) { + var subWordTextChunk = subWordTextChunks[_i]; var result = matchTextChunk(candidate, subWordTextChunk, true); if (!result) { return undefined; @@ -22221,7 +25867,7 @@ var ts; return result1.kind - result2.kind; } function compareCamelCase(result1, result2) { - if (result1.kind === 3 && result2.kind === 3) { + if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { return result2.camelCaseWeight - result1.camelCaseWeight; } return 0; @@ -22427,10 +26073,13 @@ var ts; function transitionFromLowerToUpper(identifier, word, index) { var lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); - var transition = word ? (currentIsUpper && !lastIsUpper) : currentIsUpper; + var transition = word + ? (currentIsUpper && !lastIsUpper) + : currentIsUpper; return transition; } })(ts || (ts = {})); +/// var ts; (function (ts) { var SignatureHelp; @@ -22461,7 +26110,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 153 || node.parent.kind === 154) { + if (node.parent.kind === 157 || node.parent.kind === 158) { var callExpression = node.parent; if (node.kind === 24 || node.kind === 16) { @@ -22473,40 +26122,42 @@ var ts; invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: 0, - argumentCount: getCommaBasedArgCount(list) + argumentCount: getArgumentCount(list) }; } var listItemInfo = ts.findListItemInfo(node); if (listItemInfo) { var list = listItemInfo.list; var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; - var argumentIndex = (listItemInfo.listItemIndex + 1) >> 1; + var argumentIndex = getArgumentIndex(list, node); + var argumentCount = getArgumentCount(list); + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { kind: isTypeArgList ? 0 : 1, invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: argumentIndex, - argumentCount: getCommaBasedArgCount(list) + argumentCount: argumentCount }; } } - else if (node.kind === 10 && node.parent.kind === 155) { + else if (node.kind === 10 && node.parent.kind === 159) { if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, 0); } } - else if (node.kind === 11 && node.parent.parent.kind === 155) { + else if (node.kind === 11 && node.parent.parent.kind === 159) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 167); + ts.Debug.assert(templateExpression.kind === 171); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 171 && node.parent.parent.parent.kind === 155) { + else if (node.parent.kind === 176 && node.parent.parent.parent.kind === 159) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 167); + ts.Debug.assert(templateExpression.kind === 171); if (node.kind === 13 && !ts.isInsideTemplateLiteral(node, position)) { return undefined; } @@ -22516,8 +26167,27 @@ var ts; } return undefined; } - function getCommaBasedArgCount(argumentsList) { - return argumentsList.getChildCount() === 0 ? 0 : 1 + ts.countWhere(argumentsList.getChildren(), function (arg) { return arg.kind === 23; }); + function getArgumentIndex(argumentsList, node) { + var argumentIndex = 0; + var listChildren = argumentsList.getChildren(); + for (var _i = 0; _i < listChildren.length; _i++) { + var child = listChildren[_i]; + if (child === node) { + break; + } + if (child.kind !== 23) { + argumentIndex++; + } + } + return argumentIndex; + } + function getArgumentCount(argumentsList) { + var listChildren = argumentsList.getChildren(); + var argumentCount = ts.countWhere(listChildren, function (arg) { return arg.kind !== 23; }); + if (listChildren.length > 0 && ts.lastOrUndefined(listChildren).kind === 23) { + argumentCount++; + } + return argumentCount; } function getArgumentIndexForTemplatePiece(spanIndex, node) { ts.Debug.assert(position >= node.getStart(), "Assumed 'position' could not occur before node."); @@ -22530,7 +26200,10 @@ var ts; return spanIndex + 1; } function getArgumentListInfoForTemplate(tagExpression, argumentIndex) { - var argumentCount = tagExpression.template.kind === 10 ? 1 : tagExpression.template.templateSpans.length + 1; + var argumentCount = tagExpression.template.kind === 10 + ? 1 + : tagExpression.template.templateSpans.length + 1; + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { kind: 2, invocation: tagExpression, @@ -22548,7 +26221,7 @@ var ts; var template = taggedTemplate.template; var applicableSpanStart = template.getStart(); var applicableSpanEnd = template.getEnd(); - if (template.kind === 167) { + if (template.kind === 171) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, false); @@ -22557,16 +26230,16 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 210; n = n.parent) { + for (var n = node; n.kind !== 227; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } if (n.pos < n.parent.pos || n.end > n.parent.end) { ts.Debug.fail("Node of kind " + n.kind + " is not a subspan of its parent of kind " + n.parent.kind); } - var argumentInfo = getImmediatelyContainingArgumentInfo(n); - if (argumentInfo) { - return argumentInfo; + var argumentInfo_1 = getImmediatelyContainingArgumentInfo(n); + if (argumentInfo_1) { + return argumentInfo_1; } } return undefined; @@ -22645,6 +26318,7 @@ var ts; if (selectedItemIndex < 0) { selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); } + ts.Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, "argumentCount < argumentIndex, " + argumentCount + " < " + argumentIndex); return { items: items, applicableSpan: applicableSpan, @@ -22728,6 +26402,129 @@ var ts; return start < end; } ts.startEndOverlapsWithStartEnd = startEndOverlapsWithStartEnd; + function positionBelongsToNode(candidate, position, sourceFile) { + return candidate.end > position || !isCompletedNode(candidate, sourceFile); + } + ts.positionBelongsToNode = positionBelongsToNode; + function isCompletedNode(n, sourceFile) { + if (ts.nodeIsMissing(n)) { + return false; + } + switch (n.kind) { + case 201: + case 202: + case 204: + case 154: + case 150: + case 145: + case 179: + case 206: + case 207: + return nodeEndsWith(n, 15, sourceFile); + case 223: + return isCompletedNode(n.block, sourceFile); + case 158: + if (!n.arguments) { + return true; + } + case 157: + case 161: + case 149: + return nodeEndsWith(n, 17, sourceFile); + case 142: + case 143: + return isCompletedNode(n.type, sourceFile); + case 135: + case 136: + case 137: + case 200: + case 162: + case 134: + case 133: + case 139: + case 138: + case 163: + if (n.body) { + return isCompletedNode(n.body, sourceFile); + } + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 17, sourceFile); + case 205: + return n.body && isCompletedNode(n.body, sourceFile); + case 183: + if (n.elseStatement) { + return isCompletedNode(n.elseStatement, sourceFile); + } + return isCompletedNode(n.thenStatement, sourceFile); + case 182: + return isCompletedNode(n.expression, sourceFile); + case 153: + case 151: + case 156: + case 127: + case 147: + return nodeEndsWith(n, 19, sourceFile); + case 140: + if (n.type) { + return isCompletedNode(n.type, sourceFile); + } + return hasChildOfKind(n, 19, sourceFile); + case 220: + case 221: + return false; + case 186: + case 187: + case 188: + case 185: + return isCompletedNode(n.statement, sourceFile); + case 184: + var hasWhileKeyword = findChildOfKind(n, 100, sourceFile); + if (hasWhileKeyword) { + return nodeEndsWith(n, 17, sourceFile); + } + return isCompletedNode(n.statement, sourceFile); + case 144: + return isCompletedNode(n.exprName, sourceFile); + case 165: + case 164: + case 166: + case 172: + case 173: + var unaryWordExpression = n; + return isCompletedNode(unaryWordExpression.expression, sourceFile); + case 159: + return isCompletedNode(n.template, sourceFile); + case 171: + var lastSpan = ts.lastOrUndefined(n.templateSpans); + return isCompletedNode(lastSpan, sourceFile); + case 176: + return ts.nodeIsPresent(n.literal); + case 167: + return isCompletedNode(n.operand, sourceFile); + case 169: + return isCompletedNode(n.right, sourceFile); + case 170: + return isCompletedNode(n.whenFalse, sourceFile); + default: + return true; + } + } + ts.isCompletedNode = isCompletedNode; + function nodeEndsWith(n, expectedLastToken, sourceFile) { + var children = n.getChildren(sourceFile); + if (children.length) { + var last = children[children.length - 1]; + if (last.kind === expectedLastToken) { + return true; + } + else if (last.kind === 22 && children.length !== 1) { + return children[children.length - 2].kind === expectedLastToken; + } + } + return false; + } function findListItemInfo(node) { var list = findContainingList(node); if (!list) { @@ -22741,16 +26538,21 @@ var ts; }; } ts.findListItemInfo = findListItemInfo; + function hasChildOfKind(n, kind, sourceFile) { + return !!findChildOfKind(n, kind, sourceFile); + } + ts.hasChildOfKind = hasChildOfKind; function findChildOfKind(n, kind, sourceFile) { return ts.forEach(n.getChildren(sourceFile), function (c) { return c.kind === kind && c; }); } ts.findChildOfKind = findChildOfKind; function findContainingList(node) { var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { - if (c.kind === 211 && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 228 && c.pos <= node.pos && c.end >= node.end) { return c; } }); + ts.Debug.assert(!syntaxList || ts.contains(syntaxList.getChildren(), node)); return syntaxList; } ts.findContainingList = findContainingList; @@ -22811,10 +26613,10 @@ var ts; return n; } var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { - var child = children[i]; + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; var shouldDiveInChildNode = (child.pos <= previousToken.pos && child.end > previousToken.end) || - (child.pos === previousToken.end); + (child.pos === previousToken.end); if (shouldDiveInChildNode && nodeHasTokens(child)) { return find(child); } @@ -22838,7 +26640,7 @@ var ts; return n; } var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { + for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; if (nodeHasTokens(child)) { if (position <= child.end) { @@ -22852,7 +26654,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 210); + ts.Debug.assert(startNode !== undefined || n.kind === 227); if (children.length) { var candidate = findRightmostChildNodeWithTokens(children, children.length); return candidate && findRightmostToken(candidate); @@ -22889,22 +26691,23 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 137 || node.kind === 153) { + if (node.kind === 141 || node.kind === 157) { return node.typeArguments; } - if (ts.isAnyFunction(node) || node.kind === 194 || node.kind === 195) { + if (ts.isFunctionLike(node) || node.kind === 201 || node.kind === 202) { return node.typeParameters; } return undefined; } ts.getTypeArgumentOrTypeParameterList = getTypeArgumentOrTypeParameterList; function isToken(n) { - return n.kind >= 0 && n.kind <= 122; + return n.kind >= 0 && n.kind <= 125; } ts.isToken = isToken; function isWord(kind) { - return kind === 64 || ts.isKeyword(kind); + return kind === 65 || ts.isKeyword(kind); } + ts.isWord = isWord; function isPropertyName(kind) { return kind === 8 || kind === 7 || isWord(kind); } @@ -22913,13 +26716,24 @@ var ts; } ts.isComment = isComment; function isPunctuation(kind) { - return 14 <= kind && kind <= 63; + return 14 <= kind && kind <= 64; } ts.isPunctuation = isPunctuation; function isInsideTemplateLiteral(node, position) { - return ts.isTemplateLiteralKind(node.kind) && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); + return ts.isTemplateLiteralKind(node.kind) + && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); } ts.isInsideTemplateLiteral = isInsideTemplateLiteral; + function isAccessibilityModifier(kind) { + switch (kind) { + case 109: + case 107: + case 108: + return true; + } + return false; + } + ts.isAccessibilityModifier = isAccessibilityModifier; function compareDataObjects(dst, src) { for (var e in dst) { if (typeof dst[e] === "object") { @@ -22940,7 +26754,7 @@ var ts; var ts; (function (ts) { function isFirstDeclarationOfSymbolParameter(symbol) { - return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 126; + return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === 129; } ts.isFirstDeclarationOfSymbolParameter = isFirstDeclarationOfSymbolParameter; var displayPartWriter = getDisplayPartWriter(); @@ -22951,12 +26765,12 @@ var ts; resetWriter(); return { displayParts: function () { return displayParts; }, - writeKeyword: function (text) { return writeKind(text, 5); }, - writeOperator: function (text) { return writeKind(text, 12); }, - writePunctuation: function (text) { return writeKind(text, 15); }, - writeSpace: function (text) { return writeKind(text, 16); }, - writeStringLiteral: function (text) { return writeKind(text, 8); }, - writeParameter: function (text) { return writeKind(text, 13); }, + writeKeyword: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.keyword); }, + writeOperator: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.operator); }, + writePunctuation: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.punctuation); }, + writeSpace: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.space); }, + writeStringLiteral: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.stringLiteral); }, + writeParameter: function (text) { return writeKind(text, ts.SymbolDisplayPartKind.parameterName); }, writeSymbol: writeSymbol, writeLine: writeLine, increaseIndent: function () { indent++; }, @@ -22968,7 +26782,7 @@ var ts; if (lineStart) { var indentString = ts.getIndentString(indent); if (indentString) { - displayParts.push(displayPart(indentString, 16)); + displayParts.push(displayPart(indentString, ts.SymbolDisplayPartKind.space)); } lineStart = false; } @@ -22996,48 +26810,48 @@ var ts; function displayPartKind(symbol) { var flags = symbol.flags; if (flags & 3) { - return isFirstDeclarationOfSymbolParameter(symbol) ? 13 : 9; + return isFirstDeclarationOfSymbolParameter(symbol) ? ts.SymbolDisplayPartKind.parameterName : ts.SymbolDisplayPartKind.localName; } else if (flags & 4) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 32768) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 65536) { - return 14; + return ts.SymbolDisplayPartKind.propertyName; } else if (flags & 8) { - return 19; + return ts.SymbolDisplayPartKind.enumMemberName; } else if (flags & 16) { - return 20; + return ts.SymbolDisplayPartKind.functionName; } else if (flags & 32) { - return 1; + return ts.SymbolDisplayPartKind.className; } else if (flags & 64) { - return 4; + return ts.SymbolDisplayPartKind.interfaceName; } else if (flags & 384) { - return 2; + return ts.SymbolDisplayPartKind.enumName; } else if (flags & 1536) { - return 11; + return ts.SymbolDisplayPartKind.moduleName; } else if (flags & 8192) { - return 10; + return ts.SymbolDisplayPartKind.methodName; } else if (flags & 262144) { - return 18; + return ts.SymbolDisplayPartKind.typeParameterName; } else if (flags & 524288) { - return 0; + return ts.SymbolDisplayPartKind.aliasName; } else if (flags & 8388608) { - return 0; + return ts.SymbolDisplayPartKind.aliasName; } - return 17; + return ts.SymbolDisplayPartKind.text; } } ts.symbolPart = symbolPart; @@ -23049,27 +26863,34 @@ var ts; } ts.displayPart = displayPart; function spacePart() { - return displayPart(" ", 16); + return displayPart(" ", ts.SymbolDisplayPartKind.space); } ts.spacePart = spacePart; function keywordPart(kind) { - return displayPart(ts.tokenToString(kind), 5); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.keyword); } ts.keywordPart = keywordPart; function punctuationPart(kind) { - return displayPart(ts.tokenToString(kind), 15); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.punctuation); } ts.punctuationPart = punctuationPart; function operatorPart(kind) { - return displayPart(ts.tokenToString(kind), 12); + return displayPart(ts.tokenToString(kind), ts.SymbolDisplayPartKind.operator); } ts.operatorPart = operatorPart; + function textOrKeywordPart(text) { + var kind = ts.stringToToken(text); + return kind === undefined + ? textPart(text) + : keywordPart(kind); + } + ts.textOrKeywordPart = textOrKeywordPart; function textPart(text) { - return displayPart(text, 17); + return displayPart(text, ts.SymbolDisplayPartKind.text); } ts.textPart = textPart; function lineBreakPart() { - return displayPart("\n", 6); + return displayPart("\n", ts.SymbolDisplayPartKind.lineBreak); } ts.lineBreakPart = lineBreakPart; function mapToDisplayParts(writeDisplayParts) { @@ -23098,6 +26919,8 @@ var ts; } ts.signatureToDisplayParts = signatureToDisplayParts; })(ts || (ts = {})); +/// +/// var ts; (function (ts) { var formatting; @@ -23149,21 +26972,21 @@ var ts; var t; var pos = scanner.getStartPos(); while (pos < endPos) { - var t = scanner.getToken(); - if (!ts.isTrivia(t)) { + var t_2 = scanner.getToken(); + if (!ts.isTrivia(t_2)) { break; } scanner.scan(); - var item = { + var item_4 = { pos: pos, end: scanner.getStartPos(), - kind: t + kind: t_2 }; pos = scanner.getStartPos(); if (!leadingTrivia) { leadingTrivia = []; } - leadingTrivia.push(item); + leadingTrivia.push(item_4); } savedPos = scanner.getStartPos(); } @@ -23171,8 +26994,8 @@ var ts; if (node) { switch (node.kind) { case 27: - case 59: case 60: + case 61: case 42: case 41: return true; @@ -23188,7 +27011,7 @@ var ts; container.kind === 13; } function startsWithSlashToken(t) { - return t === 36 || t === 56; + return t === 36 || t === 57; } function readTokenInfo(n) { if (!isOnToken()) { @@ -23198,7 +27021,13 @@ var ts; token: undefined }; } - var expectedScanAction = shouldRescanGreaterThanToken(n) ? 1 : shouldRescanSlashToken(n) ? 2 : shouldRescanTemplateToken(n) ? 3 : 0; + var expectedScanAction = shouldRescanGreaterThanToken(n) + ? 1 + : shouldRescanSlashToken(n) + ? 2 + : shouldRescanTemplateToken(n) + ? 3 + : 0; if (lastTokenInfo && expectedScanAction === lastScanAction) { return fixTokenKind(lastTokenInfo, n); } @@ -23274,6 +27103,21 @@ var ts; formatting.getFormattingScanner = getFormattingScanner; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23352,6 +27196,21 @@ var ts; formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23366,6 +27225,21 @@ var ts; var FormattingRequestKind = formatting.FormattingRequestKind; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23387,6 +27261,21 @@ var ts; formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23400,6 +27289,21 @@ var ts; var RuleAction = formatting.RuleAction; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23430,6 +27334,21 @@ var ts; formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23441,6 +27360,21 @@ var ts; var RuleFlags = formatting.RuleFlags; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23468,6 +27402,21 @@ var ts; formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23487,8 +27436,9 @@ var ts; if (this.IsAny()) { return true; } - for (var i = 0, len = this.customContextChecks.length; i < len; i++) { - if (!this.customContextChecks[i](context)) { + for (var _i = 0, _a = this.customContextChecks; _i < _a.length; _i++) { + var check = _a[_i]; + if (!check(context)) { return false; } } @@ -23500,23 +27450,42 @@ var ts; formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; (function (formatting) { var Rules = (function () { function Rules() { + /// + /// Common Rules + /// this.IgnoreBeforeComment = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.Comments), formatting.RuleOperation.create1(1)); this.IgnoreAfterLineComment = new formatting.Rule(formatting.RuleDescriptor.create3(2, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create1(1)); this.NoSpaceBeforeSemicolon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeColon = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 51), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); - this.NoSpaceBeforeQMark = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 50), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); + this.NoSpaceBeforeQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 50), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); this.SpaceAfterColon = new formatting.Rule(formatting.RuleDescriptor.create3(51, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 2)); - this.SpaceAfterQMark = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 2)); + this.SpaceAfterQuestionMarkInConditionalOperator = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsConditionalOperatorContext), 2)); + this.NoSpaceAfterQuestionMark = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceAfterSemicolon = new formatting.Rule(formatting.RuleDescriptor.create3(22, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsAfterCodeBlockContext), 2)); - this.SpaceBetweenCloseBraceAndElse = new formatting.Rule(formatting.RuleDescriptor.create1(15, 75), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceBetweenCloseBraceAndWhile = new formatting.Rule(formatting.RuleDescriptor.create1(15, 99), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBetweenCloseBraceAndElse = new formatting.Rule(formatting.RuleDescriptor.create1(15, 76), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBetweenCloseBraceAndWhile = new formatting.Rule(formatting.RuleDescriptor.create1(15, 100), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.NoSpaceAfterCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create3(15, formatting.Shared.TokenRange.FromTokens([17, 19, 23, 22])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeDot = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterDot = new formatting.Rule(formatting.RuleDescriptor.create3(20, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); @@ -23525,10 +27494,10 @@ var ts; this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 19), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.FunctionOpenBraceLeftTokenRange = formatting.Shared.TokenRange.AnyIncludingMultilineComments; - this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); - this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([64, 3]); + this.SpaceBeforeOpenBraceInFunction = new formatting.Rule(formatting.RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); + this.TypeScriptOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([65, 3]); this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock = new formatting.Rule(formatting.RuleDescriptor.create2(this.TypeScriptOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsTypeScriptDeclWithBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); - this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([17, 3, 74, 95, 80, 75]); + this.ControlOpenBraceLeftTokenRange = formatting.Shared.TokenRange.FromTokens([17, 3, 75, 96, 81, 76]); this.SpaceBeforeOpenBraceInControl = new formatting.Rule(formatting.RuleDescriptor.create2(this.ControlOpenBraceLeftTokenRange, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsControlDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), 2), 1); this.SpaceAfterOpenBrace = new formatting.Rule(formatting.RuleDescriptor.create3(14, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); this.SpaceBeforeCloseBrace = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSingleLineBlockContext), 2)); @@ -23547,24 +27516,25 @@ var ts; this.SpaceAfterSubtractWhenFollowedByUnaryMinus = new formatting.Rule(formatting.RuleDescriptor.create1(34, 34), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterSubtractWhenFollowedByPredecrement = new formatting.Rule(formatting.RuleDescriptor.create1(34, 39), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.NoSpaceBeforeComma = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 23), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([97, 93, 87, 73, 89, 96]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterCertainKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([98, 94, 88, 74, 90, 97]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterLetConstInVariableDeclaration = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([105, 70]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), 2)); this.NoSpaceBeforeOpenParenInFuncCall = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), 8)); - this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(82, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.SpaceAfterFunctionInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create3(83, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); this.NoSpaceBeforeOpenParenInFuncDecl = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), 8)); - this.SpaceAfterVoidOperator = new formatting.Rule(formatting.RuleDescriptor.create3(98, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsVoidOpContext), 2)); - this.NoSpaceBetweenReturnAndSemicolon = new formatting.Rule(formatting.RuleDescriptor.create1(89, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceBetweenStatements = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([17, 74, 75, 66]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotForContext), 2)); - this.SpaceAfterTryFinally = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([95, 80]), 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceAfterGetSetInMember = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([114, 118]), 64), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.SpaceAfterVoidOperator = new formatting.Rule(formatting.RuleDescriptor.create3(99, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsVoidOpContext), 2)); + this.NoSpaceBetweenReturnAndSemicolon = new formatting.Rule(formatting.RuleDescriptor.create1(90, 22), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceBetweenStatements = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([17, 75, 76, 67]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotForContext), 2)); + this.SpaceAfterTryFinally = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([96, 81]), 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceAfterGetSetInMember = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([116, 120]), 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); this.SpaceBeforeBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryKeywordOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterBinaryKeywordOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryKeywordOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); - this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(112, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([115, 116]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([68, 113, 76, 77, 78, 114, 101, 84, 102, 115, 105, 107, 118, 108]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([78, 101])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceAfterConstructor = new formatting.Rule(formatting.RuleDescriptor.create1(114, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterModuleImport = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.FromTokens([117, 118]), 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([69, 115, 77, 78, 79, 116, 103, 85, 104, 117, 107, 109, 120, 110]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([79, 103])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(8, 14), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(32, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 64), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(21, 65), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOptionalParameters = new formatting.Rule(formatting.RuleDescriptor.create3(50, formatting.Shared.TokenRange.FromTokens([17, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); this.NoSpaceBeforeOpenAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.TypeNames, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); this.NoSpaceBetweenCloseParenAndAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create1(17, 24), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); @@ -23573,50 +27543,52 @@ var ts; this.NoSpaceAfterCloseAngularBracket = new formatting.Rule(formatting.RuleDescriptor.create3(25, formatting.Shared.TokenRange.FromTokens([16, 18, 25, 23])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsTypeArgumentOrParameterContext), 8)); this.NoSpaceBetweenEmptyInterfaceBraceBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(14, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsObjectTypeContext), 8)); this.HighPriorityCommonRules = - [ - this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQMark, this.SpaceAfterQMark, - this.NoSpaceBeforeDot, this.NoSpaceAfterDot, - this.NoSpaceAfterUnaryPrefixOperator, - this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, - this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, - this.SpaceAfterPostincrementWhenFollowedByAdd, - this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, - this.SpaceAfterPostdecrementWhenFollowedBySubtract, - this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, - this.NoSpaceAfterCloseBrace, - this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, - this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, - this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, - this.NoSpaceBetweenReturnAndSemicolon, - this.SpaceAfterCertainKeywords, - this.NoSpaceBeforeOpenParenInFuncCall, - this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, - this.SpaceAfterVoidOperator, - this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, - this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, - this.SpaceAfterModuleName, - this.SpaceAfterArrow, - this.NoSpaceAfterEllipsis, - this.NoSpaceAfterOptionalParameters, - this.NoSpaceBetweenEmptyInterfaceBraceBrackets, - this.NoSpaceBeforeOpenAngularBracket, - this.NoSpaceBetweenCloseParenAndAngularBracket, - this.NoSpaceAfterOpenAngularBracket, - this.NoSpaceBeforeCloseAngularBracket, - this.NoSpaceAfterCloseAngularBracket - ]; + [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket + ]; this.LowPriorityCommonRules = - [ - this.NoSpaceBeforeSemicolon, - this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, - this.NoSpaceBeforeComma, - this.NoSpaceBeforeOpenBracket, this.NoSpaceAfterOpenBracket, - this.NoSpaceBeforeCloseBracket, this.NoSpaceAfterCloseBracket, - this.SpaceAfterSemicolon, - this.NoSpaceBeforeOpenParenInFuncDecl, - this.SpaceBetweenStatements, this.SpaceAfterTryFinally - ]; + [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, this.NoSpaceAfterOpenBracket, + this.NoSpaceBeforeCloseBracket, this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(23, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); @@ -23635,47 +27607,68 @@ var ts; this.NoSpaceBetweenParens = new formatting.Rule(formatting.RuleDescriptor.create1(16, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOpenParen = new formatting.Rule(formatting.RuleDescriptor.create3(16, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeCloseParen = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(82, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); - this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(82, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); + this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); + this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(83, 16), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name in o) { - if (o[name] === rule) { - return name; + for (var name_19 in o) { + if (o[name_19] === rule) { + return name_19; } } throw new Error("Unknown rule"); }; Rules.IsForContext = function (context) { - return context.contextNode.kind === 179; + return context.contextNode.kind === 186; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 165: - case 166: + case 169: + case 170: return true; - case 200: - case 191: - case 126: - case 209: - case 128: - case 127: - return context.currentTokenSpan.kind === 52 || context.nextTokenSpan.kind === 52; - case 180: - return context.currentTokenSpan.kind === 85 || context.nextTokenSpan.kind === 85; - case 181: - return context.currentTokenSpan.kind === 122 || context.nextTokenSpan.kind === 122; + case 208: + case 198: + case 129: + case 226: + case 132: + case 131: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; + case 187: + return context.currentTokenSpan.kind === 86 || context.nextTokenSpan.kind === 86; + case 188: + return context.currentTokenSpan.kind === 125 || context.nextTokenSpan.kind === 125; + case 152: + return context.currentTokenSpan.kind === 53 || context.nextTokenSpan.kind === 53; } return false; }; Rules.IsNotBinaryOpContext = function (context) { return !Rules.IsBinaryOpContext(context); }; + Rules.IsConditionalOperatorContext = function (context) { + return context.contextNode.kind === 170; + }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { + //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. + //// + //// Ex: + //// if (1) { .... + //// * ) and { are on the same line so apply the rule. Here we don't care whether it's same or multi block context + //// + //// Ex: + //// if (1) + //// { ... } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we don't format. + //// + //// Ex: + //// if (1) + //// { ... + //// } + //// * ) and { are on differnet lines. We only need to format if the block is multiline context. So in this case we format. return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); }; Rules.IsBeforeMultilineBlockContext = function (context) { @@ -23698,26 +27691,26 @@ var ts; return true; } switch (node.kind) { - case 172: - case 186: - case 150: - case 199: + case 179: + case 207: + case 154: + case 206: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 193: - case 130: - case 129: - case 132: - case 133: + case 200: case 134: - case 158: - case 131: - case 159: - case 195: + case 133: + case 136: + case 137: + case 138: + case 162: + case 135: + case 163: + case 202: return true; } return false; @@ -23727,53 +27720,53 @@ var ts; }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 194: - case 195: - case 197: - case 141: - case 198: + case 201: + case 202: + case 204: + case 145: + case 205: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 194: - case 198: - case 197: - case 172: + case 201: + case 205: + case 204: + case 179: + case 223: case 206: - case 199: - case 186: + case 193: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 176: + case 183: + case 193: case 186: - case 179: - case 180: - case 181: - case 178: - case 189: - case 177: + case 187: + case 188: case 185: - case 206: + case 196: + case 184: + case 192: + case 223: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 150; + return context.contextNode.kind === 154; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 153; + return context.contextNode.kind === 157; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 154; + return context.contextNode.kind === 158; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -23784,32 +27777,36 @@ var ts; Rules.IsSameLineTokenContext = function (context) { return context.TokensAreOnSameLine(); }; + Rules.IsStartOfVariableDeclarationList = function (context) { + return context.currentTokenParent.kind === 199 && + context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; + }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind != 2; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 198; + return context.contextNode.kind === 205; }; Rules.IsObjectTypeContext = function (context) { - return context.contextNode.kind === 141; + return context.contextNode.kind === 145; }; Rules.IsTypeArgumentOrParameter = function (token, parent) { if (token.kind !== 24 && token.kind !== 25) { return false; } switch (parent.kind) { - case 137: - case 194: - case 195: - case 193: - case 158: - case 159: - case 130: - case 129: + case 141: + case 201: + case 202: + case 200: + case 162: + case 163: case 134: - case 135: - case 153: - case 154: + case 133: + case 138: + case 139: + case 157: + case 158: return true; default: return false; @@ -23820,13 +27817,28 @@ var ts; Rules.IsTypeArgumentOrParameter(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 98 && context.currentTokenParent.kind === 162; + return context.currentTokenSpan.kind === 99 && context.currentTokenParent.kind === 166; }; return Rules; })(); formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -23842,7 +27854,7 @@ var ts; return result; }; RulesMap.prototype.Initialize = function (rules) { - this.mapRowLength = 122 + 1; + this.mapRowLength = 125 + 1; this.map = new Array(this.mapRowLength * this.mapRowLength); var rulesBucketConstructionStateList = new Array(this.map.length); this.FillRules(rules, rulesBucketConstructionStateList); @@ -23877,10 +27889,11 @@ var ts; var bucketIndex = this.GetRuleBucketIndex(context.currentTokenSpan.kind, context.nextTokenSpan.kind); var bucket = this.map[bucketIndex]; if (bucket != null) { - for (var i = 0, len = bucket.Rules().length; i < len; i++) { - var rule = bucket.Rules()[i]; - if (rule.Operation.Context.InContext(context)) + for (var _i = 0, _a = bucket.Rules(); _i < _a.length; _i++) { + var rule = _a[_i]; + if (rule.Operation.Context.InContext(context)) { return rule; + } } } return null; @@ -23935,13 +27948,19 @@ var ts; RulesBucket.prototype.AddRule = function (rule, specificTokens, constructionState, rulesBucketIndex) { var position; if (rule.Operation.Action == 1) { - position = specificTokens ? 0 : RulesPosition.IgnoreRulesAny; + position = specificTokens ? + RulesPosition.IgnoreRulesSpecific : + RulesPosition.IgnoreRulesAny; } else if (!rule.Operation.Context.IsAny()) { - position = specificTokens ? RulesPosition.ContextRulesSpecific : RulesPosition.ContextRulesAny; + position = specificTokens ? + RulesPosition.ContextRulesSpecific : + RulesPosition.ContextRulesAny; } else { - position = specificTokens ? RulesPosition.NoContextRulesSpecific : RulesPosition.NoContextRulesAny; + position = specificTokens ? + RulesPosition.NoContextRulesSpecific : + RulesPosition.NoContextRulesAny; } var state = constructionState[rulesBucketIndex]; if (state === undefined) { @@ -23956,6 +27975,21 @@ var ts; formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -24011,7 +28045,7 @@ var ts; } TokenAllAccess.prototype.GetTokens = function () { var result = []; - for (var token = 0; token <= 122; token++) { + for (var token = 0; token <= 125; token++) { result.push(token); } return result; @@ -24053,23 +28087,64 @@ var ts; }; TokenRange.Any = TokenRange.AllTokens(); TokenRange.AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([3])); - TokenRange.Keywords = TokenRange.FromRange(65, 122); - TokenRange.BinaryOperators = TokenRange.FromRange(24, 63); - TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([85, 86, 122]); + TokenRange.Keywords = TokenRange.FromRange(66, 125); + TokenRange.BinaryOperators = TokenRange.FromRange(24, 64); + TokenRange.BinaryKeywordOperators = TokenRange.FromTokens([86, 87, 125]); TokenRange.UnaryPrefixOperators = TokenRange.FromTokens([38, 39, 47, 46]); - TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([7, 64, 16, 18, 14, 92, 87]); - TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([64, 16, 92, 87]); - TokenRange.UnaryPostincrementExpressions = TokenRange.FromTokens([64, 17, 19, 87]); - TokenRange.UnaryPredecrementExpressions = TokenRange.FromTokens([64, 16, 92, 87]); - TokenRange.UnaryPostdecrementExpressions = TokenRange.FromTokens([64, 17, 19, 87]); + TokenRange.UnaryPrefixExpressions = TokenRange.FromTokens([7, 65, 16, 18, 14, 93, 88]); + TokenRange.UnaryPreincrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostincrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); + TokenRange.UnaryPredecrementExpressions = TokenRange.FromTokens([65, 16, 93, 88]); + TokenRange.UnaryPostdecrementExpressions = TokenRange.FromTokens([65, 17, 19, 88]); TokenRange.Comments = TokenRange.FromTokens([2, 3]); - TokenRange.TypeNames = TokenRange.FromTokens([64, 117, 119, 111, 120, 98, 110]); + TokenRange.TypeNames = TokenRange.FromTokens([65, 119, 121, 113, 122, 99, 112]); return TokenRange; })(); Shared.TokenRange = TokenRange; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var ts; (function (ts) { var formatting; @@ -24155,6 +28230,10 @@ var ts; formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// +/// +/// +/// var ts; (function (ts) { var formatting; @@ -24228,17 +28307,17 @@ var ts; } function isListElement(parent, node) { switch (parent.kind) { - case 194: - case 195: + case 201: + case 202: return ts.rangeContainsRange(parent.members, node); - case 198: + case 205: var body = parent.body; - return body && body.kind === 172 && ts.rangeContainsRange(body.statements, node); - case 210: - case 172: - case 199: - return ts.rangeContainsRange(parent.statements, node); + return body && body.kind === 179 && ts.rangeContainsRange(body.statements, node); + case 227: + case 179: case 206: + return ts.rangeContainsRange(parent.statements, node); + case 223: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -24260,7 +28339,9 @@ var ts; if (!errors.length) { return rangeHasNoErrors; } - var sorted = errors.filter(function (d) { return ts.rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length); }).sort(function (e1, e2) { return e1.start - e2.start; }); + var sorted = errors + .filter(function (d) { return ts.rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length); }) + .sort(function (e1, e2) { return e1.start - e2.start; }); if (!sorted.length) { return rangeHasNoErrors; } @@ -24355,9 +28436,9 @@ var ts; if (indentation === -1) { if (isSomeBlock(node.kind)) { if (isSomeBlock(parent.kind) || - parent.kind === 210 || - parent.kind === 203 || - parent.kind === 204) { + parent.kind === 227 || + parent.kind === 220 || + parent.kind === 221) { indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); } else { @@ -24383,6 +28464,26 @@ var ts; delta: delta }; } + function getFirstNonDecoratorTokenOfNode(node) { + if (node.modifiers && node.modifiers.length) { + return node.modifiers[0].kind; + } + switch (node.kind) { + case 201: return 69; + case 202: return 104; + case 200: return 83; + case 204: return 204; + case 136: return 116; + case 137: return 120; + case 134: + if (node.asteriskToken) { + return 35; + } + case 132: + case 129: + return node.name.kind; + } + } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { getIndentationForComment: function (kind) { @@ -24394,13 +28495,19 @@ var ts; return indentation; }, getIndentationForToken: function (line, kind) { + if (nodeStartLine !== line && node.decorators) { + if (kind === getFirstNonDecoratorTokenOfNode(node)) { + return indentation; + } + } switch (kind) { case 14: case 15: case 18: case 19: - case 75: - case 99: + case 76: + case 100: + case 52: return indentation; default: return nodeStartLine !== line ? indentation + delta : indentation; @@ -24494,8 +28601,8 @@ var ts; } else if (tokenInfo.token.kind === listStartToken) { startLine = sourceFile.getLineAndCharacterOfPosition(tokenInfo.token.pos).line; - var indentation = computeIndentation(tokenInfo.token, startLine, -1, parent, parentDynamicIndentation, startLine); - listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation.indentation, indentation.delta); + var indentation_1 = computeIndentation(tokenInfo.token, startLine, -1, parent, parentDynamicIndentation, startLine); + listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation_1.indentation, indentation_1.delta); consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation); } else { @@ -24504,8 +28611,9 @@ var ts; } } var inheritedIndentation = -1; - for (var i = 0, len = nodes.length; i < len; ++i) { - inheritedIndentation = processChildNode(nodes[i], inheritedIndentation, node, listDynamicIndentation, startLine, true); + for (var _i = 0; _i < nodes.length; _i++) { + var child = nodes[_i]; + inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, true); } if (listEndToken !== 0) { if (formattingScanner.isOnToken()) { @@ -24548,8 +28656,8 @@ var ts; if (indentToken) { var indentNextTokenOrTrivia = true; if (currentTokenInfo.leadingTrivia) { - for (var i = 0, len = currentTokenInfo.leadingTrivia.length; i < len; ++i) { - var triviaItem = currentTokenInfo.leadingTrivia[i]; + for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { + var triviaItem = _a[_i]; if (!ts.rangeContainsRange(originalRange, triviaItem)) { continue; } @@ -24562,8 +28670,8 @@ var ts; break; case 2: if (indentNextTokenOrTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); - insertIndentation(triviaItem.pos, commentIndentation, false); + var commentIndentation_1 = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + insertIndentation(triviaItem.pos, commentIndentation_1, false); indentNextTokenOrTrivia = false; } break; @@ -24583,8 +28691,8 @@ var ts; } } function processTrivia(trivia, parent, contextNode, dynamicIndentation) { - for (var i = 0, len = trivia.length; i < len; ++i) { - var triviaItem = trivia[i]; + for (var _i = 0; _i < trivia.length; _i++) { + var triviaItem = trivia[_i]; if (ts.isComment(triviaItem.kind) && ts.rangeContainsRange(originalRange, triviaItem)) { var triviaItemStart = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos); processRange(triviaItem, triviaItemStart, parent, contextNode, dynamicIndentation); @@ -24630,8 +28738,8 @@ var ts; } } trimTrailingWhitespaces = - (rule.Operation.Action & (4 | 2)) && - rule.Flag !== 1; + (rule.Operation.Action & (4 | 2)) && + rule.Flag !== 1; } else { trimTrailingWhitespaces = true; @@ -24657,6 +28765,7 @@ var ts; function indentMultilineComment(commentRange, indentation, firstLineIsIndented) { var startLine = sourceFile.getLineAndCharacterOfPosition(commentRange.pos).line; var endLine = sourceFile.getLineAndCharacterOfPosition(commentRange.end).line; + var parts; if (startLine === endLine) { if (!firstLineIsIndented) { insertIndentation(commentRange.pos, indentation, false); @@ -24664,7 +28773,7 @@ var ts; return; } else { - var parts = []; + parts = []; var startPos = commentRange.pos; for (var line = startLine; line < endLine; ++line) { var endOfLine = ts.getEndLinePosition(line, sourceFile); @@ -24674,8 +28783,8 @@ var ts; parts.push({ pos: startPos, end: commentRange.end }); } var startLinePos = ts.getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumnInFirstPart = formatting.SmartIndenter.findFirstNonWhitespaceColumn(startLinePos, parts[0].pos, sourceFile, options); - if (indentation === nonWhitespaceColumnInFirstPart) { + var nonWhitespaceColumnInFirstPart = formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(startLinePos, parts[0].pos, sourceFile, options); + if (indentation === nonWhitespaceColumnInFirstPart.column) { return; } var startIndex = 0; @@ -24683,17 +28792,19 @@ var ts; startIndex = 1; startLine++; } - var delta = indentation - nonWhitespaceColumnInFirstPart; + var delta = indentation - nonWhitespaceColumnInFirstPart.column; for (var i = startIndex, len = parts.length; i < len; ++i, ++startLine) { - var startLinePos = ts.getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumn = i === 0 ? nonWhitespaceColumnInFirstPart : formatting.SmartIndenter.findFirstNonWhitespaceColumn(parts[i].pos, parts[i].end, sourceFile, options); - var newIndentation = nonWhitespaceColumn + delta; + var startLinePos_1 = ts.getStartPositionOfLine(startLine, sourceFile); + var nonWhitespaceCharacterAndColumn = i === 0 + ? nonWhitespaceColumnInFirstPart + : formatting.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(parts[i].pos, parts[i].end, sourceFile, options); + var newIndentation = nonWhitespaceCharacterAndColumn.column + delta; if (newIndentation > 0) { var indentationString = getIndentationString(newIndentation, options); - recordReplace(startLinePos, nonWhitespaceColumn, indentationString); + recordReplace(startLinePos_1, nonWhitespaceCharacterAndColumn.character, indentationString); } else { - recordDelete(startLinePos, nonWhitespaceColumn); + recordDelete(startLinePos_1, nonWhitespaceCharacterAndColumn.character); } } } @@ -24760,20 +28871,20 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 172: - case 199: + case 179: + case 206: return true; } return false; } function getOpenTokenForList(node, list) { switch (node.kind) { - case 131: - case 193: - case 158: - case 130: - case 129: - case 159: + case 135: + case 200: + case 162: + case 134: + case 133: + case 163: if (node.typeParameters === list) { return 24; } @@ -24781,8 +28892,8 @@ var ts; return 16; } break; - case 153: - case 154: + case 157: + case 158: if (node.typeArguments === list) { return 24; } @@ -24790,7 +28901,7 @@ var ts; return 16; } break; - case 137: + case 141: if (node.typeArguments === list) { return 24; } @@ -24806,9 +28917,15 @@ var ts; } return 0; } + var internedSizes; var internedTabsIndentation; var internedSpacesIndentation; function getIndentationString(indentation, options) { + var resetInternedStrings = !internedSizes || (internedSizes.tabSize !== options.TabSize || internedSizes.indentSize !== options.IndentSize); + if (resetInternedStrings) { + internedSizes = { tabSize: options.TabSize, indentSize: options.IndentSize }; + internedTabsIndentation = internedSpacesIndentation = undefined; + } if (!options.ConvertTabsToSpaces) { var tabs = Math.floor(indentation / options.TabSize); var spaces = indentation - tabs * options.TabSize; @@ -24851,12 +28968,17 @@ var ts; formatting.getIndentationString = getIndentationString; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// var ts; (function (ts) { var formatting; (function (formatting) { var SmartIndenter; (function (SmartIndenter) { + var Value; + (function (Value) { + Value[Value["Unknown"] = -1] = "Unknown"; + })(Value || (Value = {})); function getIndentation(position, sourceFile, options) { if (position > sourceFile.text.length) { return 0; @@ -24866,16 +28988,16 @@ var ts; return 0; } var precedingTokenIsLiteral = precedingToken.kind === 8 || - precedingToken.kind === 9 || - precedingToken.kind === 10 || - precedingToken.kind === 11 || - precedingToken.kind === 12 || - precedingToken.kind === 13; + precedingToken.kind === 9 || + precedingToken.kind === 10 || + precedingToken.kind === 11 || + precedingToken.kind === 12 || + precedingToken.kind === 13; if (precedingTokenIsLiteral && precedingToken.getStart(sourceFile) <= position && precedingToken.end > position) { return 0; } var lineAtPosition = sourceFile.getLineAndCharacterOfPosition(position).line; - if (precedingToken.kind === 23 && precedingToken.parent.kind !== 165) { + if (precedingToken.kind === 23 && precedingToken.parent.kind !== 169) { var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1) { return actualIndentation; @@ -24886,7 +29008,7 @@ var ts; var currentStart; var indentationDelta; while (current) { - if (positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { indentationDelta = 0; @@ -24931,7 +29053,7 @@ var ts; } parentStart = getParentStart(parent, current, sourceFile); var parentAndChildShareLine = parentStart.line === currentStart.line || - childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); + childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); if (useActualIndentation) { var actualIndentation = getActualIndentationForNode(current, parent, currentStart, parentAndChildShareLine, sourceFile, options); if (actualIndentation !== -1) { @@ -24956,12 +29078,16 @@ var ts; } function getActualIndentationForListItemBeforeComma(commaToken, sourceFile, options) { var commaItemInfo = ts.findListItemInfo(commaToken); - ts.Debug.assert(commaItemInfo && commaItemInfo.listItemIndex > 0); - return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + if (commaItemInfo && commaItemInfo.listItemIndex > 0) { + return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + } + else { + return -1; + } } function getActualIndentationForNode(current, parent, currentLineAndChar, parentAndChildShareLine, sourceFile, options) { var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 210 || !parentAndChildShareLine); + (parent.kind === 227 || !parentAndChildShareLine); if (!useActualIndentation) { return -1; } @@ -24984,12 +29110,9 @@ var ts; function getStartLineAndCharacterForNode(n, sourceFile) { return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } - function positionBelongsToNode(candidate, position, sourceFile) { - return candidate.end > position || !isCompletedNode(candidate, sourceFile); - } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 176 && parent.elseStatement === child) { - var elseKeyword = ts.findChildOfKind(parent, 75, sourceFile); + if (parent.kind === 183 && parent.elseStatement === child) { + var elseKeyword = ts.findChildOfKind(parent, 76, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; return elseKeywordStartLine === childStartLine; @@ -25000,23 +29123,23 @@ var ts; function getContainingList(node, sourceFile) { if (node.parent) { switch (node.parent.kind) { - case 137: + case 141: if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, node.getStart(sourceFile), node.getEnd())) { return node.parent.typeArguments; } break; - case 150: + case 154: return node.parent.properties; - case 149: + case 153: return node.parent.elements; - case 193: - case 158: - case 159: - case 130: - case 129: + case 200: + case 162: + case 163: case 134: - case 135: + case 133: + case 138: + case 139: { var start = node.getStart(sourceFile); if (node.parent.typeParameters && ts.rangeContainsStartEnd(node.parent.typeParameters, start, node.getEnd())) { @@ -25026,8 +29149,9 @@ var ts; return node.parent.parameters; } break; - case 154: - case 153: + } + case 158: + case 157: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -25038,6 +29162,7 @@ var ts; return node.parent.arguments; } break; + } } } return undefined; @@ -25070,12 +29195,13 @@ var ts; var lineStart = sourceFile.getPositionOfLineAndCharacter(lineAndCharacter.line, 0); return findFirstNonWhitespaceColumn(lineStart, lineStart + lineAndCharacter.character, sourceFile, options); } - function findFirstNonWhitespaceColumn(startPos, endPos, sourceFile, options) { + function findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options) { + var character = 0; var column = 0; for (var pos = startPos; pos < endPos; ++pos) { var ch = sourceFile.text.charCodeAt(pos); if (!ts.isWhiteSpace(ch)) { - return column; + break; } if (ch === 9) { column += options.TabSize + (column % options.TabSize); @@ -25083,31 +29209,39 @@ var ts; else { column++; } + character++; } - return column; + return { column: column, character: character }; + } + SmartIndenter.findFirstNonWhitespaceCharacterAndColumn = findFirstNonWhitespaceCharacterAndColumn; + function findFirstNonWhitespaceColumn(startPos, endPos, sourceFile, options) { + return findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options).column; } SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 194: - case 195: - case 197: - case 149: - case 172: - case 199: - case 150: - case 141: - case 186: - case 204: - case 203: - case 157: - case 153: - case 154: - case 173: - case 191: case 201: - case 184: - case 166: + case 202: + case 204: + case 153: + case 179: + case 206: + case 154: + case 145: + case 147: + case 207: + case 221: + case 220: + case 161: + case 157: + case 158: + case 180: + case 198: + case 214: + case 191: + case 170: + case 151: + case 150: return true; } return false; @@ -25117,100 +29251,46 @@ var ts; return true; } switch (parent) { - case 177: - case 178: - case 180: - case 181: - case 179: - case 176: - case 193: - case 158: - case 130: - case 129: - case 159: - case 131: - case 132: + case 184: + case 185: + case 187: + case 188: + case 186: + case 183: + case 200: + case 162: + case 134: case 133: - return child !== 172; + case 138: + case 163: + case 135: + case 136: + case 137: + return child !== 179; default: return false; } } SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; - function nodeEndsWith(n, expectedLastToken, sourceFile) { - var children = n.getChildren(sourceFile); - if (children.length) { - var last = children[children.length - 1]; - if (last.kind === expectedLastToken) { - return true; - } - else if (last.kind === 22 && children.length !== 1) { - return children[children.length - 2].kind === expectedLastToken; - } - } - return false; - } - function isCompletedNode(n, sourceFile) { - if (n.getFullWidth() === 0) { - return false; - } - switch (n.kind) { - case 194: - case 195: - case 197: - case 150: - case 172: - case 199: - case 186: - return nodeEndsWith(n, 15, sourceFile); - case 206: - return isCompletedNode(n.block, sourceFile); - case 157: - case 134: - case 153: - case 135: - return nodeEndsWith(n, 17, sourceFile); - case 193: - case 158: - case 130: - case 129: - case 159: - return !n.body || isCompletedNode(n.body, sourceFile); - case 198: - return n.body && isCompletedNode(n.body, sourceFile); - case 176: - if (n.elseStatement) { - return isCompletedNode(n.elseStatement, sourceFile); - } - return isCompletedNode(n.thenStatement, sourceFile); - case 175: - return isCompletedNode(n.expression, sourceFile); - case 149: - return nodeEndsWith(n, 19, sourceFile); - case 203: - case 204: - return false; - case 178: - return isCompletedNode(n.statement, sourceFile); - case 177: - var hasWhileKeyword = ts.findChildOfKind(n, 99, sourceFile); - if (hasWhileKeyword) { - return nodeEndsWith(n, 17, sourceFile); - } - return isCompletedNode(n.statement, sourceFile); - default: - return true; - } - } })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); +/// var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } __.prototype = b.prototype; d.prototype = new __(); }; +/// +/// +/// +/// +/// +/// +/// +/// +/// var ts; (function (ts) { ts.servicesVersion = "0.4"; @@ -25282,17 +29362,17 @@ var ts; while (pos < end) { var token = scanner.scan(); var textPos = scanner.getTextPos(); - nodes.push(createNode(token, pos, textPos, 512, this)); + nodes.push(createNode(token, pos, textPos, 1024, this)); pos = textPos; } return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(211, nodes.pos, nodes.end, 512, this); + var list = createNode(228, nodes.pos, nodes.end, 1024, this); list._children = []; var pos = nodes.pos; - for (var i = 0, len = nodes.length; i < len; i++) { - var node = nodes[i]; + for (var _i = 0; _i < nodes.length; _i++) { + var node = nodes[_i]; if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -25306,9 +29386,10 @@ var ts; }; NodeObject.prototype.createChildren = function (sourceFile) { var _this = this; - if (this.kind >= 123) { + var children; + if (this.kind >= 126) { scanner.setText((sourceFile || this.getSourceFile()).text); - var children = []; + children = []; var pos = this.pos; var processNode = function (node) { if (pos < node.pos) { @@ -25349,9 +29430,9 @@ var ts; }; NodeObject.prototype.getFirstToken = function (sourceFile) { var children = this.getChildren(); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (child.kind < 123) { + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; + if (child.kind < 126) { return child; } return child.getFirstToken(sourceFile); @@ -25361,7 +29442,7 @@ var ts; var children = this.getChildren(sourceFile); for (var i = children.length - 1; i >= 0; i--) { var child = children[i]; - if (child.kind < 123) { + if (child.kind < 126) { return child; } return child.getLastToken(sourceFile); @@ -25407,7 +29488,7 @@ var ts; ts.forEach(declarations, function (declaration, indexOfDeclaration) { if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { var sourceFileOfDeclaration = ts.getSourceFileOfNode(declaration); - if (canUseParsedParamTagComments && declaration.kind === 126) { + if (canUseParsedParamTagComments && declaration.kind === 129) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedParamJsDocComment) { @@ -25415,13 +29496,13 @@ var ts; } }); } - if (declaration.kind === 198 && declaration.body.kind === 198) { + if (declaration.kind === 205 && declaration.body.kind === 205) { return; } - while (declaration.kind === 198 && declaration.parent.kind === 198) { + while (declaration.kind === 205 && declaration.parent.kind === 205) { declaration = declaration.parent; } - ts.forEach(getJsDocCommentTextRange(declaration.kind === 191 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 198 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { jsDocCommentParts.push.apply(jsDocCommentParts, cleanedJsDocComment); @@ -25466,8 +29547,9 @@ var ts; return isName(pos, end, sourceFile, paramTag); } function pushDocCommentLineText(docComments, text, blankLineCount) { - while (blankLineCount--) + while (blankLineCount--) { docComments.push(ts.textPart("")); + } docComments.push(ts.textPart(text)); } function getCleanedJsDocComment(pos, end, sourceFile) { @@ -25705,12 +29787,14 @@ var ts; var namedDeclarations = []; ts.forEachChild(sourceFile, function visit(node) { switch (node.kind) { - case 193: - case 130: - case 129: + case 200: + case 134: + case 133: var functionDeclaration = node; if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { - var lastDeclaration = namedDeclarations.length > 0 ? namedDeclarations[namedDeclarations.length - 1] : undefined; + var lastDeclaration = namedDeclarations.length > 0 ? + namedDeclarations[namedDeclarations.length - 1] : + undefined; if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { if (functionDeclaration.body && !lastDeclaration.body) { namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; @@ -25722,46 +29806,72 @@ var ts; ts.forEachChild(node, visit); } break; - case 194: - case 195: - case 196: - case 197: - case 198: - case 200: - case 132: - case 133: - case 141: + case 201: + case 202: + case 203: + case 204: + case 205: + case 208: + case 217: + case 213: + case 208: + case 210: + case 211: + case 136: + case 137: + case 145: if (node.name) { namedDeclarations.push(node); } - case 131: - case 173: - case 192: - case 146: - case 147: + case 135: + case 180: case 199: + case 150: + case 151: + case 206: ts.forEachChild(node, visit); break; - case 172: + case 179: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } break; - case 126: + case 129: if (!(node.flags & 112)) { break; } - case 191: - case 148: + case 198: + case 152: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 209: - case 128: - case 127: + case 226: + case 132: + case 131: namedDeclarations.push(node); break; + case 215: + if (node.exportClause) { + ts.forEach(node.exportClause.elements, visit); + } + break; + case 209: + var importClause = node.importClause; + if (importClause) { + if (importClause.name) { + namedDeclarations.push(importClause); + } + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === 211) { + namedDeclarations.push(importClause.namedBindings); + } + else { + ts.forEach(importClause.namedBindings.elements, visit); + } + } + } + break; } }); this.namedDeclarations = namedDeclarations; @@ -25908,14 +30018,14 @@ var ts; return false; } return ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 158) { + if (declaration.kind === 162) { return true; } - if (declaration.kind !== 191 && declaration.kind !== 193) { + if (declaration.kind !== 198 && declaration.kind !== 200) { return false; } - for (var parent = declaration.parent; !ts.isFunctionBlock(parent); parent = parent.parent) { - if (parent.kind === 210 || parent.kind === 199) { + for (var parent_7 = declaration.parent; !ts.isFunctionBlock(parent_7); parent_7 = parent_7.parent) { + if (parent_7.kind === 227 || parent_7.kind === 206) { return false; } } @@ -25956,8 +30066,9 @@ var ts; this.host = host; this.fileNameToEntry = {}; var rootFileNames = host.getScriptFileNames(); - for (var i = 0, n = rootFileNames.length; i < n; i++) { - this.createEntry(rootFileNames[i]); + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + this.createEntry(fileName); } this._compilationSettings = host.getCompilationSettings() || getDefaultCompilerOptions(); } @@ -26005,66 +30116,71 @@ var ts; var file = this.getEntry(fileName); return file && file.scriptSnapshot; }; - HostCache.prototype.getChangeRange = function (fileName, lastKnownVersion, oldScriptSnapshot) { - var currentVersion = this.getVersion(fileName); - if (lastKnownVersion === currentVersion) { - return ts.unchangedTextChangeRange; - } - var scriptSnapshot = this.getScriptSnapshot(fileName); - return scriptSnapshot.getChangeRange(oldScriptSnapshot); - }; return HostCache; })(); var SyntaxTreeCache = (function () { function SyntaxTreeCache(host) { this.host = host; - this.currentFileName = ""; - this.currentFileVersion = null; - this.currentSourceFile = null; } - SyntaxTreeCache.prototype.log = function (message) { - if (this.host.log) { - this.host.log(message); + SyntaxTreeCache.prototype.getCurrentSourceFile = function (fileName) { + var scriptSnapshot = this.host.getScriptSnapshot(fileName); + if (!scriptSnapshot) { + throw new Error("Could not find file: '" + fileName + "'."); } - }; - SyntaxTreeCache.prototype.initialize = function (fileName) { - var start = new Date().getTime(); - this.hostCache = new HostCache(this.host); - this.log("SyntaxTreeCache.Initialize: new HostCache: " + (new Date().getTime() - start)); - var version = this.hostCache.getVersion(fileName); + var version = this.host.getScriptVersion(fileName); var sourceFile; if (this.currentFileName !== fileName) { - var scriptSnapshot = this.hostCache.getScriptSnapshot(fileName); - var start = new Date().getTime(); sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2, version, true); - this.log("SyntaxTreeCache.Initialize: createSourceFile: " + (new Date().getTime() - start)); } else if (this.currentFileVersion !== version) { - var scriptSnapshot = this.hostCache.getScriptSnapshot(fileName); - var editRange = this.hostCache.getChangeRange(fileName, this.currentFileVersion, this.currentSourceFile.scriptSnapshot); - var start = new Date().getTime(); + var editRange = scriptSnapshot.getChangeRange(this.currentFileScriptSnapshot); sourceFile = updateLanguageServiceSourceFile(this.currentSourceFile, scriptSnapshot, version, editRange); - this.log("SyntaxTreeCache.Initialize: updateSourceFile: " + (new Date().getTime() - start)); } if (sourceFile) { this.currentFileVersion = version; this.currentFileName = fileName; + this.currentFileScriptSnapshot = scriptSnapshot; this.currentSourceFile = sourceFile; } - }; - SyntaxTreeCache.prototype.getCurrentSourceFile = function (fileName) { - this.initialize(fileName); return this.currentSourceFile; }; - SyntaxTreeCache.prototype.getCurrentScriptSnapshot = function (fileName) { - return this.getCurrentSourceFile(fileName).scriptSnapshot; - }; return SyntaxTreeCache; })(); function setSourceFileFields(sourceFile, scriptSnapshot, version) { sourceFile.version = version; sourceFile.scriptSnapshot = scriptSnapshot; } + function transpile(input, compilerOptions, fileName, diagnostics) { + var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions(); + options.separateCompilation = true; + options.allowNonTsExtensions = true; + var inputFileName = fileName || "module.ts"; + var sourceFile = ts.createSourceFile(inputFileName, input, options.target); + if (diagnostics && sourceFile.parseDiagnostics) { + diagnostics.push.apply(diagnostics, sourceFile.parseDiagnostics); + } + var outputText; + var compilerHost = { + getSourceFile: function (fileName, target) { return fileName === inputFileName ? sourceFile : undefined; }, + writeFile: function (name, text, writeByteOrderMark) { + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + outputText = text; + }, + getDefaultLibFileName: function () { return "lib.d.ts"; }, + useCaseSensitiveFileNames: function () { return false; }, + getCanonicalFileName: function (fileName) { return fileName; }, + getCurrentDirectory: function () { return ""; }, + getNewLine: function () { return "\r\n"; } + }; + var program = ts.createProgram([inputFileName], options, compilerHost); + if (diagnostics) { + diagnostics.push.apply(diagnostics, program.getGlobalDiagnostics()); + } + program.emit(); + ts.Debug.assert(outputText !== undefined, "Output generation failed"); + return outputText; + } + ts.transpile = transpile; function createLanguageServiceSourceFile(fileName, scriptSnapshot, scriptTarget, version, setNodeParents) { var sourceFile = ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), scriptTarget, setNodeParents); setSourceFileFields(sourceFile, scriptSnapshot, version); @@ -26108,7 +30224,7 @@ var ts; var entry = entries[i]; sourceFiles.push({ name: i, - refCount: entry.refCount, + refCount: entry.languageServiceRefCount, references: entry.owners.slice(0) }); } @@ -26121,34 +30237,40 @@ var ts; return JSON.stringify(bucketInfoArray, null, 2); } function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, true); + } + function updateDocument(fileName, compilationSettings, scriptSnapshot, version) { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, false); + } + function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) { var bucket = getBucketForCompilationSettings(compilationSettings, true); var entry = ts.lookUp(bucket, fileName); if (!entry) { + ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, false); bucket[fileName] = entry = { sourceFile: sourceFile, - refCount: 0, + languageServiceRefCount: 0, owners: [] }; } - entry.refCount++; - return entry.sourceFile; - } - function updateDocument(sourceFile, fileName, compilationSettings, scriptSnapshot, version, textChangeRange) { - var bucket = getBucketForCompilationSettings(compilationSettings, false); - ts.Debug.assert(bucket !== undefined); - var entry = ts.lookUp(bucket, fileName); - ts.Debug.assert(entry !== undefined); - entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, textChangeRange); + else { + if (entry.sourceFile.version !== version) { + entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, scriptSnapshot.getChangeRange(entry.sourceFile.scriptSnapshot)); + } + } + if (acquiring) { + entry.languageServiceRefCount++; + } return entry.sourceFile; } function releaseDocument(fileName, compilationSettings) { var bucket = getBucketForCompilationSettings(compilationSettings, false); ts.Debug.assert(bucket !== undefined); var entry = ts.lookUp(bucket, fileName); - entry.refCount--; - ts.Debug.assert(entry.refCount >= 0); - if (entry.refCount === 0) { + entry.languageServiceRefCount--; + ts.Debug.assert(entry.languageServiceRefCount >= 0); + if (entry.languageServiceRefCount === 0) { delete bucket[fileName]; } } @@ -26179,31 +30301,111 @@ var ts; } }); } + function recordModuleName() { + var importPath = scanner.getTokenValue(); + var pos = scanner.getTokenPos(); + importedFiles.push({ + fileName: importPath, + pos: pos, + end: pos + importPath.length + }); + } function processImport() { scanner.setText(sourceText); var token = scanner.scan(); while (token !== 1) { - if (token === 84) { + if (token === 85) { token = scanner.scan(); - if (token === 64) { - token = scanner.scan(); - if (token === 52) { + if (token === 8) { + recordModuleName(); + continue; + } + else { + if (token === 65) { token = scanner.scan(); - if (token === 116) { + if (token === 124) { token = scanner.scan(); - if (token === 16) { + if (token === 8) { + recordModuleName(); + continue; + } + } + else if (token === 53) { + token = scanner.scan(); + if (token === 118) { token = scanner.scan(); - if (token === 8) { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + if (token === 16) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + continue; + } } } } + else if (token === 23) { + token = scanner.scan(); + } + else { + continue; + } + } + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 102) { + token = scanner.scan(); + if (token === 65) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + } + } + } + else if (token === 78) { + token = scanner.scan(); + if (token === 14) { + token = scanner.scan(); + while (token !== 15) { + token = scanner.scan(); + } + if (token === 15) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } + } + } + } + else if (token === 35) { + token = scanner.scan(); + if (token === 124) { + token = scanner.scan(); + if (token === 8) { + recordModuleName(); + } } } } @@ -26220,7 +30422,7 @@ var ts; ts.preProcessFile = preProcessFile; function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 187 && referenceNode.label.text === labelName) { + if (referenceNode.kind === 194 && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -26228,17 +30430,17 @@ var ts; return undefined; } function isJumpStatementTarget(node) { - return node.kind === 64 && - (node.parent.kind === 183 || node.parent.kind === 182) && + return node.kind === 65 && + (node.parent.kind === 190 || node.parent.kind === 189) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { - return node.kind === 64 && - node.parent.kind === 187 && + return node.kind === 65 && + node.parent.kind === 194 && node.parent.label === node; } function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 187; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 194; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -26249,48 +30451,48 @@ var ts; return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } function isRightSideOfQualifiedName(node) { - return node.parent.kind === 123 && node.parent.right === node; + return node.parent.kind === 126 && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 151 && node.parent.name === node; + return node && node.parent && node.parent.kind === 155 && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 153 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 157 && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 154 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 158 && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 198 && node.parent.name === node; + return node.parent.kind === 205 && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { - return node.kind === 64 && - ts.isAnyFunction(node.parent) && node.parent.name === node; + return node.kind === 65 && + ts.isFunctionLike(node.parent) && node.parent.name === node; } function isNameOfPropertyAssignment(node) { - return (node.kind === 64 || node.kind === 8 || node.kind === 7) && - (node.parent.kind === 207 || node.parent.kind === 208) && node.parent.name === node; + return (node.kind === 65 || node.kind === 8 || node.kind === 7) && + (node.parent.kind === 224 || node.parent.kind === 225) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 8 || node.kind === 7) { switch (node.parent.kind) { - case 128: - case 127: - case 207: - case 209: - case 130: - case 129: case 132: + case 131: + case 224: + case 226: + case 134: case 133: - case 198: + case 136: + case 137: + case 205: return node.parent.name === node; - case 152: + case 156: return node.parent.argumentExpression === node; } } @@ -26299,7 +30501,7 @@ var ts; function isNameOfExternalModuleImportOrDeclaration(node) { if (node.kind === 8) { return isNameOfModuleDeclaration(node) || - (ts.isExternalModuleImportDeclaration(node.parent.parent) && ts.getExternalModuleImportDeclarationExpression(node.parent.parent) === node); + (ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node); } return false; } @@ -26343,7 +30545,7 @@ var ts; BreakContinueSearchType[BreakContinueSearchType["All"] = 3] = "All"; })(BreakContinueSearchType || (BreakContinueSearchType = {})); var keywordCompletions = []; - for (var i = 65; i <= 122; i++) { + for (var i = 66; i <= 125; i++) { keywordCompletions.push({ name: ts.tokenToString(i), kind: ScriptElementKind.keyword, @@ -26357,17 +30559,17 @@ var ts; return undefined; } switch (node.kind) { - case 210: - case 130: - case 129: - case 193: - case 158: - case 132: + case 227: + case 134: case 133: - case 194: - case 195: - case 197: - case 198: + case 200: + case 162: + case 136: + case 137: + case 201: + case 202: + case 204: + case 205: return node; } } @@ -26375,29 +30577,39 @@ var ts; ts.getContainerNode = getContainerNode; function getNodeKind(node) { switch (node.kind) { - case 198: return ScriptElementKind.moduleElement; - case 194: return ScriptElementKind.classElement; - case 195: return ScriptElementKind.interfaceElement; - case 196: return ScriptElementKind.typeElement; - case 197: return ScriptElementKind.enumElement; - case 191: - return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 193: return ScriptElementKind.functionElement; - case 132: return ScriptElementKind.memberGetAccessorElement; - case 133: return ScriptElementKind.memberSetAccessorElement; - case 130: - case 129: + case 205: return ScriptElementKind.moduleElement; + case 201: return ScriptElementKind.classElement; + case 202: return ScriptElementKind.interfaceElement; + case 203: return ScriptElementKind.typeElement; + case 204: return ScriptElementKind.enumElement; + case 198: + return ts.isConst(node) + ? ScriptElementKind.constElement + : ts.isLet(node) + ? ScriptElementKind.letElement + : ScriptElementKind.variableElement; + case 200: return ScriptElementKind.functionElement; + case 136: return ScriptElementKind.memberGetAccessorElement; + case 137: return ScriptElementKind.memberSetAccessorElement; + case 134: + case 133: return ScriptElementKind.memberFunctionElement; - case 128: - case 127: + case 132: + case 131: return ScriptElementKind.memberVariableElement; - case 136: return ScriptElementKind.indexSignatureElement; - case 135: return ScriptElementKind.constructSignatureElement; - case 134: return ScriptElementKind.callSignatureElement; - case 131: return ScriptElementKind.constructorImplementationElement; - case 125: return ScriptElementKind.typeParameterElement; - case 209: return ScriptElementKind.variableElement; - case 126: return (node.flags & 112) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 140: return ScriptElementKind.indexSignatureElement; + case 139: return ScriptElementKind.constructSignatureElement; + case 138: return ScriptElementKind.callSignatureElement; + case 135: return ScriptElementKind.constructorImplementationElement; + case 128: return ScriptElementKind.typeParameterElement; + case 226: return ScriptElementKind.variableElement; + case 129: return (node.flags & 112) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case 208: + case 213: + case 210: + case 217: + case 211: + return ScriptElementKind.alias; } return ScriptElementKind.unknown; } @@ -26410,7 +30622,6 @@ var ts; var typeInfoResolver; var useCaseSensitivefileNames = false; var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); - var activeCompletionSession; if (!ts.localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) { ts.localizedDiagnosticMessages = host.getLocalizedDiagnosticMessages(); } @@ -26423,6 +30634,7 @@ var ts; return useCaseSensitivefileNames ? fileName : fileName.toLowerCase(); } function getValidSourceFile(fileName) { + fileName = ts.normalizeSlashes(fileName); var sourceFile = program.getSourceFile(getCanonicalFileName(fileName)); if (!sourceFile) { throw new Error("Could not find file: '" + fileName + "'."); @@ -26456,8 +30668,9 @@ var ts; }); if (program) { var oldSourceFiles = program.getSourceFiles(); - for (var i = 0, n = oldSourceFiles.length; i < n; i++) { - var fileName = oldSourceFiles[i].fileName; + for (var _i = 0; _i < oldSourceFiles.length; _i++) { + var oldSourceFile = oldSourceFiles[_i]; + var fileName = oldSourceFile.fileName; if (!newProgram.getSourceFile(fileName) || changesInCompilationSettingsAffectSyntax) { documentRegistry.releaseDocument(fileName, oldSettings); } @@ -26474,11 +30687,7 @@ var ts; if (!changesInCompilationSettingsAffectSyntax) { var oldSourceFile = program && program.getSourceFile(fileName); if (oldSourceFile) { - if (sourceFileUpToDate(oldSourceFile)) { - return oldSourceFile; - } - var textChangeRange = hostCache.getChangeRange(fileName, oldSourceFile.version, oldSourceFile.scriptSnapshot); - return documentRegistry.updateDocument(oldSourceFile, fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version, textChangeRange); + return documentRegistry.updateDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } } return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); @@ -26494,8 +30703,9 @@ var ts; if (program.getSourceFiles().length !== rootFileNames.length) { return false; } - for (var i = 0, n = rootFileNames.length; i < n; i++) { - if (!sourceFileUpToDate(program.getSourceFile(rootFileNames[i]))) { + for (var _i = 0; _i < rootFileNames.length; _i++) { + var fileName = rootFileNames[_i]; + if (!sourceFileUpToDate(program.getSourceFile(fileName))) { return false; } } @@ -26513,52 +30723,65 @@ var ts; } function dispose() { if (program) { - ts.forEach(program.getSourceFiles(), function (f) { documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); }); + ts.forEach(program.getSourceFiles(), function (f) { + return documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); + }); } } function getSyntacticDiagnostics(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); return program.getSyntacticDiagnostics(getValidSourceFile(fileName)); } function getSemanticDiagnostics(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var targetSourceFile = getValidSourceFile(fileName); var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile); if (!program.getCompilerOptions().declaration) { return semanticDiagnostics; } var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile); - return semanticDiagnostics.concat(declarationDiagnostics); + return ts.concatenate(semanticDiagnostics, declarationDiagnostics); } function getCompilerOptionsDiagnostics() { synchronizeHostData(); return program.getGlobalDiagnostics(); } - function getValidCompletionEntryDisplayName(symbol, target) { + function getCompletionEntryDisplayName(symbol, target, performCharacterChecks) { var displayName = symbol.getName(); - if (displayName && displayName.length > 0) { - var firstCharCode = displayName.charCodeAt(0); - if ((symbol.flags & 1536) && (firstCharCode === 39 || firstCharCode === 34)) { - return undefined; - } - if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && - (firstCharCode === 39 || firstCharCode === 34)) { - displayName = displayName.substring(1, displayName.length - 1); - } - var isValid = ts.isIdentifierStart(displayName.charCodeAt(0), target); - for (var i = 1, n = displayName.length; isValid && i < n; i++) { - isValid = ts.isIdentifierPart(displayName.charCodeAt(i), target); - } - if (isValid) { - return ts.unescapeIdentifier(displayName); + if (!displayName) { + return undefined; + } + if (displayName === "default") { + var localSymbol = ts.getLocalSymbolForExportDefault(symbol); + if (localSymbol && localSymbol.name) { + displayName = symbol.valueDeclaration.localSymbol.name; } } - return undefined; + var firstCharCode = displayName.charCodeAt(0); + if ((symbol.flags & 1536) && (firstCharCode === 39 || firstCharCode === 34)) { + return undefined; + } + if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && + (firstCharCode === 39 || firstCharCode === 34)) { + displayName = displayName.substring(1, displayName.length - 1); + } + if (!displayName) { + return undefined; + } + if (performCharacterChecks) { + if (!ts.isIdentifierStart(displayName.charCodeAt(0), target)) { + return undefined; + } + for (var i = 1, n = displayName.length; i < n; i++) { + if (!ts.isIdentifierPart(displayName.charCodeAt(i), target)) { + return undefined; + } + } + } + return ts.unescapeIdentifier(displayName); } function createCompletionEntry(symbol, typeChecker, location) { - var displayName = getValidCompletionEntryDisplayName(symbol, program.getCompilerOptions().target); + var displayName = getCompletionEntryDisplayName(symbol, program.getCompilerOptions().target, true); if (!displayName) { return undefined; } @@ -26568,62 +30791,53 @@ var ts; kindModifiers: getSymbolModifiers(symbol) }; } - function getCompletionsAtPosition(fileName, position) { - synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); + function getCompletionData(fileName, position) { var syntacticStart = new Date().getTime(); var sourceFile = getValidSourceFile(fileName); var start = new Date().getTime(); var currentToken = ts.getTokenAtPosition(sourceFile, position); - log("getCompletionsAtPosition: Get current token: " + (new Date().getTime() - start)); - var start = new Date().getTime(); + log("getCompletionData: Get current token: " + (new Date().getTime() - start)); + start = new Date().getTime(); var insideComment = isInsideComment(sourceFile, currentToken, position); - log("getCompletionsAtPosition: Is inside comment: " + (new Date().getTime() - start)); + log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); if (insideComment) { log("Returning an empty list because completion was inside a comment."); return undefined; } - var start = new Date().getTime(); + start = new Date().getTime(); var previousToken = ts.findPrecedingToken(position, sourceFile); - log("getCompletionsAtPosition: Get previous token 1: " + (new Date().getTime() - start)); - if (previousToken && position <= previousToken.end && previousToken.kind === 64) { - var start = new Date().getTime(); - previousToken = ts.findPrecedingToken(previousToken.pos, sourceFile); - log("getCompletionsAtPosition: Get previous token 2: " + (new Date().getTime() - start)); + log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); + var contextToken = previousToken; + if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { + var start_1 = new Date().getTime(); + contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_1)); } - if (previousToken && isCompletionListBlocker(previousToken)) { + if (contextToken && isCompletionListBlocker(contextToken)) { log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - var node; - var isRightOfDot; - if (previousToken && previousToken.kind === 20 && previousToken.parent.kind === 151) { - node = previousToken.parent.expression; + var node = currentToken; + var isRightOfDot = false; + if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 155) { + node = contextToken.parent.expression; isRightOfDot = true; } - else if (previousToken && previousToken.kind === 20 && previousToken.parent.kind === 123) { - node = previousToken.parent.left; + else if (contextToken && contextToken.kind === 20 && contextToken.parent.kind === 126) { + node = contextToken.parent.left; isRightOfDot = true; } - else { - node = currentToken; - isRightOfDot = false; - } - activeCompletionSession = { - fileName: fileName, - position: position, - entries: [], - symbols: {}, - typeChecker: typeInfoResolver - }; - log("getCompletionsAtPosition: Syntactic work: " + (new Date().getTime() - syntacticStart)); var location = ts.getTouchingPropertyName(sourceFile, position); + var target = program.getCompilerOptions().target; var semanticStart = new Date().getTime(); + var isMemberCompletion; + var isNewIdentifierLocation; + var symbols; if (isRightOfDot) { - var symbols = []; - var isMemberCompletion = true; - var isNewIdentifierLocation = false; - if (node.kind === 64 || node.kind === 123 || node.kind === 151) { + symbols = []; + isMemberCompletion = true; + isNewIdentifierLocation = false; + if (node.kind === 65 || node.kind === 126 || node.kind === 155) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol && symbol.flags & 8388608) { symbol = typeInfoResolver.getAliasedSymbol(symbol); @@ -26644,10 +30858,9 @@ var ts; } }); } - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); } else { - var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(previousToken); + var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(contextToken); if (containingObjectLiteral) { isMemberCompletion = true; isNewIdentifierLocation = true; @@ -26657,41 +30870,41 @@ var ts; } var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); if (contextualTypeMembers && contextualTypeMembers.length > 0) { - var filteredMembers = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); - getCompletionEntriesFromSymbols(filteredMembers, activeCompletionSession); + symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); + } + } + else if (ts.getAncestor(contextToken, 210)) { + isMemberCompletion = true; + isNewIdentifierLocation = true; + if (showCompletionsInImportsClause(contextToken)) { + var importDeclaration = ts.getAncestor(contextToken, 209); + ts.Debug.assert(importDeclaration !== undefined); + var exports = typeInfoResolver.getExportsOfExternalModule(importDeclaration); + symbols = filterModuleExports(exports, importDeclaration); } } else { isMemberCompletion = false; - isNewIdentifierLocation = isNewIdentifierDefinitionLocation(previousToken); + isNewIdentifierLocation = isNewIdentifierDefinitionLocation(contextToken); + if (previousToken !== contextToken) { + ts.Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); + } + var adjustedPosition = previousToken !== contextToken ? + previousToken.getStart() : + position; + var scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile; var symbolMeanings = 793056 | 107455 | 1536 | 8388608; - var symbols = typeInfoResolver.getSymbolsInScope(node, symbolMeanings); - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); + symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings); } } - if (!isMemberCompletion) { - Array.prototype.push.apply(activeCompletionSession.entries, keywordCompletions); - } - log("getCompletionsAtPosition: Semantic work: " + (new Date().getTime() - semanticStart)); - return { - isMemberCompletion: isMemberCompletion, - isNewIdentifierLocation: isNewIdentifierLocation, - isBuilder: isNewIdentifierDefinitionLocation, - entries: activeCompletionSession.entries - }; - function getCompletionEntriesFromSymbols(symbols, session) { - var start = new Date().getTime(); - ts.forEach(symbols, function (symbol) { - var entry = createCompletionEntry(symbol, session.typeChecker, location); - if (entry) { - var id = ts.escapeIdentifier(entry.name); - if (!ts.lookUp(session.symbols, id)) { - session.entries.push(entry); - session.symbols[id] = symbol; - } - } - }); - log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart)); + return { symbols: symbols, isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, location: location }; + function getScopeNode(initialToken, position, sourceFile) { + var scope = initialToken; + while (scope && !ts.positionBelongsToNode(scope, position, sourceFile)) { + scope = scope.parent; + } + return scope; } function isCompletionListBlocker(previousToken) { var start = new Date().getTime(); @@ -26701,32 +30914,48 @@ var ts; log("getCompletionsAtPosition: isCompletionListBlocker: " + (new Date().getTime() - start)); return result; } + function showCompletionsInImportsClause(node) { + if (node) { + if (node.kind === 14 || node.kind === 23) { + return node.parent.kind === 212; + } + } + return false; + } function isNewIdentifierDefinitionLocation(previousToken) { if (previousToken) { var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 23: - return containingNodeKind === 153 || containingNodeKind === 131 || containingNodeKind === 154 || containingNodeKind === 149 || containingNodeKind === 165; + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 153 + || containingNodeKind === 169; case 16: - return containingNodeKind === 153 || containingNodeKind === 131 || containingNodeKind === 154 || containingNodeKind === 157; + return containingNodeKind === 157 + || containingNodeKind === 135 + || containingNodeKind === 158 + || containingNodeKind === 161; case 18: - return containingNodeKind === 149; - case 115: + return containingNodeKind === 153; + case 117: return true; case 20: - return containingNodeKind === 198; + return containingNodeKind === 205; case 14: - return containingNodeKind === 194; - case 52: - return containingNodeKind === 191 || containingNodeKind === 165; + return containingNodeKind === 201; + case 53: + return containingNodeKind === 198 + || containingNodeKind === 169; case 11: - return containingNodeKind === 167; - case 12: return containingNodeKind === 171; + case 12: + return containingNodeKind === 176; + case 109: case 107: - case 105: - case 106: - return containingNodeKind === 128; + case 108: + return containingNodeKind === 132; } switch (previousToken.getText()) { case "public": @@ -26738,10 +30967,12 @@ var ts; return false; } function isInStringOrRegularExpressionOrTemplateLiteral(previousToken) { - if (previousToken.kind === 8 || previousToken.kind === 9 || ts.isTemplateLiteralKind(previousToken.kind)) { - var start = previousToken.getStart(); + if (previousToken.kind === 8 + || previousToken.kind === 9 + || ts.isTemplateLiteralKind(previousToken.kind)) { + var start_2 = previousToken.getStart(); var end = previousToken.getEnd(); - if (start < position && position < end) { + if (start_2 < position && position < end) { return true; } else if (position === end) { @@ -26751,13 +30982,14 @@ var ts; return false; } function getContainingObjectLiteralApplicableForCompletion(previousToken) { + // The locations in an object literal expression that are applicable for completion are property name definition locations. if (previousToken) { - var parent = previousToken.parent; + var parent_8 = previousToken.parent; switch (previousToken.kind) { case 14: case 23: - if (parent && parent.kind === 150) { - return parent; + if (parent_8 && parent_8.kind === 154) { + return parent_8; } break; } @@ -26766,16 +30998,16 @@ var ts; } function isFunction(kind) { switch (kind) { - case 158: - case 159: - case 193: - case 130: - case 129: - case 132: - case 133: + case 162: + case 163: + case 200: case 134: - case 135: + case 133: case 136: + case 137: + case 138: + case 139: + case 140: return true; } return false; @@ -26785,58 +31017,58 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 23: - return containingNodeKind === 191 || - containingNodeKind === 192 || - containingNodeKind === 173 || - containingNodeKind === 197 || + return containingNodeKind === 198 || + containingNodeKind === 199 || + containingNodeKind === 180 || + containingNodeKind === 204 || isFunction(containingNodeKind) || - containingNodeKind === 194 || - containingNodeKind === 193 || - containingNodeKind === 195 || - containingNodeKind === 147 || - containingNodeKind === 146; + containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || + containingNodeKind === 151 || + containingNodeKind === 150; case 20: - return containingNodeKind === 147; + return containingNodeKind === 151; case 18: - return containingNodeKind === 147; + return containingNodeKind === 151; case 16: - return containingNodeKind === 206 || + return containingNodeKind === 223 || isFunction(containingNodeKind); case 14: - return containingNodeKind === 197 || - containingNodeKind === 195 || - containingNodeKind === 141 || - containingNodeKind === 146; + return containingNodeKind === 204 || + containingNodeKind === 202 || + containingNodeKind === 145 || + containingNodeKind === 150; case 22: - return containingNodeKind === 127 && - (previousToken.parent.parent.kind === 195 || - previousToken.parent.parent.kind === 141); + return containingNodeKind === 131 && + (previousToken.parent.parent.kind === 202 || + previousToken.parent.parent.kind === 145); case 24: - return containingNodeKind === 194 || - containingNodeKind === 193 || - containingNodeKind === 195 || + return containingNodeKind === 201 || + containingNodeKind === 200 || + containingNodeKind === 202 || isFunction(containingNodeKind); - case 108: - return containingNodeKind === 128; + case 110: + return containingNodeKind === 132; case 21: - return containingNodeKind === 126 || - containingNodeKind === 131 || - (previousToken.parent.parent.kind === 147); - case 107: - case 105: - case 106: - return containingNodeKind === 126; - case 68: - case 76: - case 102: - case 82: - case 97: - case 114: - case 118: - case 84: - case 103: - case 69: + return containingNodeKind === 129 || + containingNodeKind === 135 || + (previousToken.parent.parent.kind === 151); case 109: + case 107: + case 108: + return containingNodeKind === 129; + case 69: + case 77: + case 104: + case 83: + case 98: + case 116: + case 120: + case 85: + case 105: + case 70: + case 111: return true; } switch (previousToken.getText()) { @@ -26861,13 +31093,30 @@ var ts; } return false; } + function filterModuleExports(exports, importDeclaration) { + var exisingImports = {}; + if (!importDeclaration.importClause) { + return exports; + } + if (importDeclaration.importClause.namedBindings && + importDeclaration.importClause.namedBindings.kind === 212) { + ts.forEach(importDeclaration.importClause.namedBindings.elements, function (el) { + var name = el.propertyName || el.name; + exisingImports[name.text] = true; + }); + } + if (ts.isEmpty(exisingImports)) { + return exports; + } + return ts.filter(exports, function (e) { return !ts.lookUp(exisingImports, e.name); }); + } function filterContextualMembersList(contextualMemberSymbols, existingMembers) { if (!existingMembers || existingMembers.length === 0) { return contextualMemberSymbols; } var existingMemberNames = {}; ts.forEach(existingMembers, function (m) { - if (m.kind !== 207 && m.kind !== 208) { + if (m.kind !== 224 && m.kind !== 225) { return; } if (m.getStart() <= position && position <= m.getEnd()) { @@ -26884,36 +31133,69 @@ var ts; return filteredMembers; } } - function getCompletionEntryDetails(fileName, position, entryName) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getValidSourceFile(fileName); - var session = activeCompletionSession; - if (!session || session.fileName !== fileName || session.position !== position) { + function getCompletionsAtPosition(fileName, position) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (!completionData) { return undefined; } - var symbol = ts.lookUp(activeCompletionSession.symbols, ts.escapeIdentifier(entryName)); - if (symbol) { - var location = ts.getTouchingPropertyName(sourceFile, position); - var completionEntry = createCompletionEntry(symbol, session.typeChecker, location); - ts.Debug.assert(session.typeChecker.getTypeOfSymbolAtLocation(symbol, location) !== undefined, "Could not find type for symbol"); - var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, session.typeChecker, location, 7); - return { - name: entryName, - kind: displayPartsDocumentationsAndSymbolKind.symbolKind, - kindModifiers: completionEntry.kindModifiers, - displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, - documentation: displayPartsDocumentationsAndSymbolKind.documentation - }; + var symbols = completionData.symbols, isMemberCompletion = completionData.isMemberCompletion, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location; + if (!symbols || symbols.length === 0) { + return undefined; } - else { + var entries = getCompletionEntriesFromSymbols(symbols); + if (!isMemberCompletion) { + ts.addRange(entries, keywordCompletions); + } + return { isMemberCompletion: isMemberCompletion, isNewIdentifierLocation: isNewIdentifierLocation, entries: entries }; + function getCompletionEntriesFromSymbols(symbols) { + var start = new Date().getTime(); + var entries = []; + var nameToSymbol = {}; + for (var _i = 0; _i < symbols.length; _i++) { + var symbol = symbols[_i]; + var entry = createCompletionEntry(symbol, typeInfoResolver, location); + if (entry) { + var id = ts.escapeIdentifier(entry.name); + if (!ts.lookUp(nameToSymbol, id)) { + entries.push(entry); + nameToSymbol[id] = symbol; + } + } + } + log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + return entries; + } + } + function getCompletionEntryDetails(fileName, position, entryName) { + synchronizeHostData(); + var completionData = getCompletionData(fileName, position); + if (completionData) { + var symbols = completionData.symbols, location_2 = completionData.location; + var target = program.getCompilerOptions().target; + var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayName(s, target, false) === entryName ? s : undefined; }); + if (symbol) { + var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, typeInfoResolver, location_2, 7); + return { + name: entryName, + kind: displayPartsDocumentationsAndSymbolKind.symbolKind, + kindModifiers: getSymbolModifiers(symbol), + displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, + documentation: displayPartsDocumentationsAndSymbolKind.documentation + }; + } + } + var keywordCompletion = ts.forEach(keywordCompletions, function (c) { return c.name === entryName; }); + if (keywordCompletion) { return { name: entryName, kind: ScriptElementKind.keyword, kindModifiers: ScriptElementKindModifier.none, - displayParts: [ts.displayPart(entryName, 5)], + displayParts: [ts.displayPart(entryName, SymbolDisplayPartKind.keyword)], documentation: undefined }; } + return undefined; } function getSymbolKind(symbol, typeResolver, location) { var flags = symbol.getFlags(); @@ -27008,7 +31290,9 @@ var ts; return ScriptElementKind.unknown; } function getSymbolModifiers(symbol) { - return symbol && symbol.declarations && symbol.declarations.length > 0 ? ts.getNodeModifiers(symbol.declarations[0]) : ScriptElementKindModifier.none; + return symbol && symbol.declarations && symbol.declarations.length > 0 + ? ts.getNodeModifiers(symbol.declarations[0]) + : ScriptElementKindModifier.none; } function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, enclosingDeclaration, typeResolver, location, semanticMeaning) { if (semanticMeaning === void 0) { semanticMeaning = getMeaningFromLocation(location); } @@ -27017,20 +31301,22 @@ var ts; var symbolFlags = symbol.flags; var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); var hasAddedSymbolInfo; + var type; if (symbolKind !== ScriptElementKind.unknown || symbolFlags & 32 || symbolFlags & 8388608) { if (symbolKind === ScriptElementKind.memberGetAccessorElement || symbolKind === ScriptElementKind.memberSetAccessorElement) { symbolKind = ScriptElementKind.memberVariableElement; } - var type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + var signature; + type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 151) { + if (location.parent && location.parent.kind === 155) { var right = location.parent.name; if (right === location || (right && right.getFullWidth() === 0)) { location = location.parent; } } var callExpression; - if (location.kind === 153 || location.kind === 154) { + if (location.kind === 157 || location.kind === 158) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -27042,7 +31328,7 @@ var ts; if (!signature && candidateSignatures.length) { signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 154 || callExpression.expression.kind === 90; + var useConstructSignatures = callExpression.kind === 158 || callExpression.expression.kind === 91; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target || signature)) { signature = allSignatures.length ? allSignatures[0] : undefined; @@ -27054,12 +31340,10 @@ var ts; } else if (symbolFlags & 8388608) { symbolKind = ScriptElementKind.alias; - displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.textPart(symbolKind)); - displayParts.push(ts.punctuationPart(17)); + pushTypePart(symbolKind); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(87)); + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } addFullSymbolName(symbol); @@ -27077,7 +31361,7 @@ var ts; displayParts.push(ts.punctuationPart(51)); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(87)); + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } if (!(type.flags & 32768)) { @@ -27092,22 +31376,21 @@ var ts; } } else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & 98304)) || - (location.kind === 112 && location.parent.kind === 131)) { - var signature; + (location.kind === 114 && location.parent.kind === 135)) { var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === 131 ? type.getConstructSignatures() : type.getCallSignatures(); + var allSignatures = functionDeclaration.kind === 135 ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeResolver.isImplementationOfOverload(functionDeclaration)) { signature = typeResolver.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; } - if (functionDeclaration.kind === 131) { + if (functionDeclaration.kind === 135) { symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } else { - addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 134 && + addPrefixForAnyFunctionOrVar(functionDeclaration.kind === 138 && !(type.symbol.flags & 2048 || type.symbol.flags & 4096) ? type.symbol : symbol, symbolKind); } addSignatureDisplayParts(signature, allSignatures); @@ -27116,41 +31399,41 @@ var ts; } } if (symbolFlags & 32 && !hasAddedSymbolInfo) { - displayParts.push(ts.keywordPart(68)); + displayParts.push(ts.keywordPart(69)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); writeTypeParametersOfSymbol(symbol, sourceFile); } if ((symbolFlags & 64) && (semanticMeaning & 2)) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(102)); + displayParts.push(ts.keywordPart(104)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); writeTypeParametersOfSymbol(symbol, sourceFile); } if (symbolFlags & 524288) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(121)); + displayParts.push(ts.keywordPart(123)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); displayParts.push.apply(displayParts, ts.typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration)); } if (symbolFlags & 384) { addNewLineIfDisplayPartsExist(); if (ts.forEach(symbol.declarations, ts.isConstEnumDeclaration)) { - displayParts.push(ts.keywordPart(69)); + displayParts.push(ts.keywordPart(70)); displayParts.push(ts.spacePart()); } - displayParts.push(ts.keywordPart(76)); + displayParts.push(ts.keywordPart(77)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } if (symbolFlags & 1536) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(115)); + displayParts.push(ts.keywordPart(117)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } @@ -27162,20 +31445,20 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); displayParts.push(ts.spacePart()); - displayParts.push(ts.keywordPart(85)); + displayParts.push(ts.keywordPart(86)); displayParts.push(ts.spacePart()); if (symbol.parent) { addFullSymbolName(symbol.parent, enclosingDeclaration); writeTypeParametersOfSymbol(symbol.parent, enclosingDeclaration); } else { - var signatureDeclaration = ts.getDeclarationOfKind(symbol, 125).parent; + var signatureDeclaration = ts.getDeclarationOfKind(symbol, 128).parent; var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); - if (signatureDeclaration.kind === 135) { - displayParts.push(ts.keywordPart(87)); + if (signatureDeclaration.kind === 139) { + displayParts.push(ts.keywordPart(88)); displayParts.push(ts.spacePart()); } - else if (signatureDeclaration.kind !== 134 && signatureDeclaration.name) { + else if (signatureDeclaration.kind !== 138 && signatureDeclaration.name) { addFullSymbolName(signatureDeclaration.symbol); } displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, sourceFile, 32)); @@ -27184,38 +31467,38 @@ var ts; if (symbolFlags & 8) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 209) { + if (declaration.kind === 226) { var constantValue = typeResolver.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); - displayParts.push(ts.displayPart(constantValue.toString(), 7)); + displayParts.push(ts.displayPart(constantValue.toString(), SymbolDisplayPartKind.numericLiteral)); } } } if (symbolFlags & 8388608) { addNewLineIfDisplayPartsExist(); - displayParts.push(ts.keywordPart(84)); + displayParts.push(ts.keywordPart(85)); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 200) { - var importDeclaration = declaration; - if (ts.isExternalModuleImportDeclaration(importDeclaration)) { + if (declaration.kind === 208) { + var importEqualsDeclaration = declaration; + if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); - displayParts.push(ts.keywordPart(116)); + displayParts.push(ts.keywordPart(118)); displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.displayPart(ts.getTextOfNode(ts.getExternalModuleImportDeclarationExpression(importDeclaration)), 8)); + displayParts.push(ts.displayPart(ts.getTextOfNode(ts.getExternalModuleImportEqualsDeclarationExpression(importEqualsDeclaration)), SymbolDisplayPartKind.stringLiteral)); displayParts.push(ts.punctuationPart(17)); } else { - var internalAliasSymbol = typeResolver.getSymbolAtLocation(importDeclaration.moduleReference); + var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); if (internalAliasSymbol) { displayParts.push(ts.spacePart()); - displayParts.push(ts.operatorPart(52)); + displayParts.push(ts.operatorPart(53)); displayParts.push(ts.spacePart()); addFullSymbolName(internalAliasSymbol, enclosingDeclaration); } @@ -27274,20 +31557,34 @@ var ts; function addPrefixForAnyFunctionOrVar(symbol, symbolKind) { addNewLineIfDisplayPartsExist(); if (symbolKind) { - displayParts.push(ts.punctuationPart(16)); - displayParts.push(ts.textPart(symbolKind)); - displayParts.push(ts.punctuationPart(17)); + pushTypePart(symbolKind); displayParts.push(ts.spacePart()); addFullSymbolName(symbol); } } + function pushTypePart(symbolKind) { + switch (symbolKind) { + case ScriptElementKind.variableElement: + case ScriptElementKind.functionElement: + case ScriptElementKind.letElement: + case ScriptElementKind.constElement: + case ScriptElementKind.constructorImplementationElement: + displayParts.push(ts.textOrKeywordPart(symbolKind)); + return; + default: + displayParts.push(ts.punctuationPart(16)); + displayParts.push(ts.textOrKeywordPart(symbolKind)); + displayParts.push(ts.punctuationPart(17)); + return; + } + } function addSignatureDisplayParts(signature, allSignatures, flags) { displayParts.push.apply(displayParts, ts.signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | 32)); if (allSignatures.length > 1) { displayParts.push(ts.spacePart()); displayParts.push(ts.punctuationPart(16)); displayParts.push(ts.operatorPart(33)); - displayParts.push(ts.displayPart((allSignatures.length - 1).toString(), 7)); + displayParts.push(ts.displayPart((allSignatures.length - 1).toString(), SymbolDisplayPartKind.numericLiteral)); displayParts.push(ts.spacePart()); displayParts.push(ts.textPart(allSignatures.length === 2 ? "overload" : "overloads")); displayParts.push(ts.punctuationPart(17)); @@ -27303,7 +31600,6 @@ var ts; } function getQuickInfoAtPosition(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { @@ -27312,11 +31608,11 @@ var ts; var symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { switch (node.kind) { - case 64: - case 151: - case 123: - case 92: - case 90: + case 65: + case 155: + case 126: + case 93: + case 91: var type = typeInfoResolver.getTypeAtLocation(node); if (type) { return { @@ -27339,9 +31635,18 @@ var ts; documentation: displayPartsDocumentationsAndKind.documentation }; } + function createDefinitionInfo(node, symbolKind, symbolName, containerName) { + return { + fileName: node.getSourceFile().fileName, + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()), + kind: symbolKind, + name: symbolName, + containerKind: undefined, + containerName: containerName + }; + } function getDefinitionAtPosition(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { @@ -27350,7 +31655,7 @@ var ts; if (isJumpStatementTarget(node)) { var labelName = node.text; var label = getTargetLabel(node.parent, node.text); - return label ? [getDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; + return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, undefined)] : undefined; } var comment = ts.forEach(sourceFile.referencedFiles, function (r) { return (r.pos <= position && position < r.end) ? r : undefined; }); if (comment) { @@ -27371,18 +31676,24 @@ var ts; if (!symbol) { return undefined; } - var result = []; - if (node.parent.kind === 208) { + if (symbol.flags & 8388608) { + var declaration = symbol.declarations[0]; + if (node.kind === 65 && node.parent === declaration) { + symbol = typeInfoResolver.getAliasedSymbol(symbol); + } + } + if (node.parent.kind === 225) { var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); + if (!shorthandSymbol) { + return []; + } var shorthandDeclarations = shorthandSymbol.getDeclarations(); var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); - ts.forEach(shorthandDeclarations, function (declaration) { - result.push(getDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName)); - }); - return result; + return ts.map(shorthandDeclarations, function (declaration) { return createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName); }); } + var result = []; var declarations = symbol.getDeclarations(); var symbolName = typeInfoResolver.symbolToString(symbol); var symbolKind = getSymbolKind(symbol, typeInfoResolver, node); @@ -27391,46 +31702,15 @@ var ts; if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { ts.forEach(declarations, function (declaration) { - result.push(getDefinitionInfo(declaration, symbolKind, symbolName, containerName)); + result.push(createDefinitionInfo(declaration, symbolKind, symbolName, containerName)); }); } return result; - function getDefinitionInfo(node, symbolKind, symbolName, containerName) { - return { - fileName: node.getSourceFile().fileName, - textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()), - kind: symbolKind, - name: symbolName, - containerKind: undefined, - containerName: containerName - }; - } - function tryAddSignature(signatureDeclarations, selectConstructors, symbolKind, symbolName, containerName, result) { - var declarations = []; - var definition; - ts.forEach(signatureDeclarations, function (d) { - if ((selectConstructors && d.kind === 131) || - (!selectConstructors && (d.kind === 193 || d.kind === 130 || d.kind === 129))) { - declarations.push(d); - if (d.body) - definition = d; - } - }); - if (definition) { - result.push(getDefinitionInfo(definition, symbolKind, symbolName, containerName)); - return true; - } - else if (declarations.length) { - result.push(getDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); - return true; - } - return false; - } function tryAddConstructSignature(symbol, location, symbolKind, symbolName, containerName, result) { - if (isNewExpressionTarget(location) || location.kind === 112) { + if (isNewExpressionTarget(location) || location.kind === 114) { if (symbol.flags & 32) { var classDeclaration = symbol.getDeclarations()[0]; - ts.Debug.assert(classDeclaration && classDeclaration.kind === 194); + ts.Debug.assert(classDeclaration && classDeclaration.kind === 201); return tryAddSignature(classDeclaration.members, true, symbolKind, symbolName, containerName, result); } } @@ -27442,115 +31722,146 @@ var ts; } return false; } + function tryAddSignature(signatureDeclarations, selectConstructors, symbolKind, symbolName, containerName, result) { + var declarations = []; + var definition; + ts.forEach(signatureDeclarations, function (d) { + if ((selectConstructors && d.kind === 135) || + (!selectConstructors && (d.kind === 200 || d.kind === 134 || d.kind === 133))) { + declarations.push(d); + if (d.body) + definition = d; + } + }); + if (definition) { + result.push(createDefinitionInfo(definition, symbolKind, symbolName, containerName)); + return true; + } + else if (declarations.length) { + result.push(createDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); + return true; + } + return false; + } } function getOccurrencesAtPosition(fileName, position) { + var results = getOccurrencesAtPositionCore(fileName, position); + if (results) { + var sourceFile = getCanonicalFileName(ts.normalizeSlashes(fileName)); + results.forEach(function (value) { + var targetFile = getCanonicalFileName(ts.normalizeSlashes(value.fileName)); + ts.Debug.assert(sourceFile == targetFile, "Unexpected file in results. Found results in " + targetFile + " expected only results in " + sourceFile + "."); + }); + } + return results; + } + function getOccurrencesAtPositionCore(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingWord(sourceFile, position); if (!node) { return undefined; } - if (node.kind === 64 || node.kind === 92 || node.kind === 90 || + if (node.kind === 65 || node.kind === 93 || node.kind === 91 || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { - return getReferencesForNode(node, [sourceFile], true, false, false); + return convertReferences(getReferencesForNode(node, [sourceFile], true, false, false)); } switch (node.kind) { - case 83: - case 75: - if (hasKind(node.parent, 176)) { + case 84: + case 76: + if (hasKind(node.parent, 183)) { return getIfElseOccurrences(node.parent); } break; - case 89: - if (hasKind(node.parent, 184)) { + case 90: + if (hasKind(node.parent, 191)) { return getReturnOccurrences(node.parent); } break; - case 93: - if (hasKind(node.parent, 188)) { + case 94: + if (hasKind(node.parent, 195)) { return getThrowOccurrences(node.parent); } break; - case 67: - if (hasKind(parent(parent(node)), 189)) { + case 68: + if (hasKind(parent(parent(node)), 196)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; - case 95: - case 80: - if (hasKind(parent(node), 189)) { + case 96: + case 81: + if (hasKind(parent(node), 196)) { return getTryCatchFinallyOccurrences(node.parent); } break; - case 91: - if (hasKind(node.parent, 186)) { + case 92: + if (hasKind(node.parent, 193)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; - case 66: - case 72: - if (hasKind(parent(parent(node)), 186)) { - return getSwitchCaseDefaultOccurrences(node.parent.parent); + case 67: + case 73: + if (hasKind(parent(parent(parent(node))), 193)) { + return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; - case 65: - case 70: - if (hasKind(node.parent, 183) || hasKind(node.parent, 182)) { + case 66: + case 71: + if (hasKind(node.parent, 190) || hasKind(node.parent, 189)) { return getBreakOrContinueStatementOccurences(node.parent); } break; - case 81: - if (hasKind(node.parent, 179) || - hasKind(node.parent, 180) || - hasKind(node.parent, 181)) { + case 82: + if (hasKind(node.parent, 186) || + hasKind(node.parent, 187) || + hasKind(node.parent, 188)) { return getLoopBreakContinueOccurrences(node.parent); } break; - case 99: - case 74: - if (hasKind(node.parent, 178) || hasKind(node.parent, 177)) { + case 100: + case 75: + if (hasKind(node.parent, 185) || hasKind(node.parent, 184)) { return getLoopBreakContinueOccurrences(node.parent); } break; - case 112: - if (hasKind(node.parent, 131)) { - return getConstructorOccurrences(node.parent); - } - break; case 114: - case 118: - if (hasKind(node.parent, 132) || hasKind(node.parent, 133)) { + if (hasKind(node.parent, 135)) { + return getConstructorOccurrences(node.parent); + } + break; + case 116: + case 120: + if (hasKind(node.parent, 136) || hasKind(node.parent, 137)) { return getGetAndSetOccurrences(node.parent); } default: if (ts.isModifier(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 173)) { + (ts.isDeclaration(node.parent) || node.parent.kind === 180)) { return getModifierOccurrences(node.kind, node.parent); } } return undefined; function getIfElseOccurrences(ifStatement) { var keywords = []; - while (hasKind(ifStatement.parent, 176) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 183) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } while (ifStatement) { var children = ifStatement.getChildren(); - pushKeywordIf(keywords, children[0], 83); + pushKeywordIf(keywords, children[0], 84); for (var i = children.length - 1; i >= 0; i--) { - if (pushKeywordIf(keywords, children[i], 75)) { + if (pushKeywordIf(keywords, children[i], 76)) { break; } } - if (!hasKind(ifStatement.elseStatement, 176)) { + if (!hasKind(ifStatement.elseStatement, 183)) { break; } ifStatement = ifStatement.elseStatement; } var result = []; for (var i = 0; i < keywords.length; i++) { - if (keywords[i].kind === 75 && i < keywords.length - 1) { + if (keywords[i].kind === 76 && i < keywords.length - 1) { var elseKeyword = keywords[i]; var ifKeyword = keywords[i + 1]; var shouldHighlightNextKeyword = true; @@ -27576,15 +31887,15 @@ var ts; } function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); - if (!(func && hasKind(func.body, 172))) { + if (!(func && hasKind(func.body, 179))) { return undefined; } var keywords = []; ts.forEachReturnStatement(func.body, function (returnStatement) { - pushKeywordIf(keywords, returnStatement.getFirstToken(), 89); + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); }); ts.forEach(aggregateOwnedThrowStatements(func.body), function (throwStatement) { - pushKeywordIf(keywords, throwStatement.getFirstToken(), 93); + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); }); return ts.map(keywords, getReferenceEntryFromNode); } @@ -27595,11 +31906,11 @@ var ts; } var keywords = []; ts.forEach(aggregateOwnedThrowStatements(owner), function (throwStatement) { - pushKeywordIf(keywords, throwStatement.getFirstToken(), 93); + pushKeywordIf(keywords, throwStatement.getFirstToken(), 94); }); if (ts.isFunctionBlock(owner)) { ts.forEachReturnStatement(owner, function (returnStatement) { - pushKeywordIf(keywords, returnStatement.getFirstToken(), 89); + pushKeywordIf(keywords, returnStatement.getFirstToken(), 90); }); } return ts.map(keywords, getReferenceEntryFromNode); @@ -27609,10 +31920,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 188) { + if (node.kind === 195) { statementAccumulator.push(node); } - else if (node.kind === 189) { + else if (node.kind === 196) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -27624,7 +31935,7 @@ var ts; aggregate(tryStatement.finallyBlock); } } - else if (!ts.isAnyFunction(node)) { + else if (!ts.isFunctionLike(node)) { ts.forEachChild(node, aggregate); } } @@ -27633,39 +31944,39 @@ var ts; function getThrowStatementOwner(throwStatement) { var child = throwStatement; while (child.parent) { - var parent = child.parent; - if (ts.isFunctionBlock(parent) || parent.kind === 210) { - return parent; + var parent_9 = child.parent; + if (ts.isFunctionBlock(parent_9) || parent_9.kind === 227) { + return parent_9; } - if (parent.kind === 189) { - var tryStatement = parent; + if (parent_9.kind === 196) { + var tryStatement = parent_9; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; } } - child = parent; + child = parent_9; } return undefined; } function getTryCatchFinallyOccurrences(tryStatement) { var keywords = []; - pushKeywordIf(keywords, tryStatement.getFirstToken(), 95); + pushKeywordIf(keywords, tryStatement.getFirstToken(), 96); if (tryStatement.catchClause) { - pushKeywordIf(keywords, tryStatement.catchClause.getFirstToken(), 67); + pushKeywordIf(keywords, tryStatement.catchClause.getFirstToken(), 68); } if (tryStatement.finallyBlock) { - var finallyKeyword = ts.findChildOfKind(tryStatement, 80, sourceFile); - pushKeywordIf(keywords, finallyKeyword, 80); + var finallyKeyword = ts.findChildOfKind(tryStatement, 81, sourceFile); + pushKeywordIf(keywords, finallyKeyword, 81); } return ts.map(keywords, getReferenceEntryFromNode); } function getLoopBreakContinueOccurrences(loopNode) { var keywords = []; - if (pushKeywordIf(keywords, loopNode.getFirstToken(), 81, 99, 74)) { - if (loopNode.kind === 177) { + if (pushKeywordIf(keywords, loopNode.getFirstToken(), 82, 100, 75)) { + if (loopNode.kind === 184) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { - if (pushKeywordIf(keywords, loopTokens[i], 99)) { + if (pushKeywordIf(keywords, loopTokens[i], 100)) { break; } } @@ -27674,20 +31985,20 @@ var ts; var breaksAndContinues = aggregateAllBreakAndContinueStatements(loopNode.statement); ts.forEach(breaksAndContinues, function (statement) { if (ownsBreakOrContinueStatement(loopNode, statement)) { - pushKeywordIf(keywords, statement.getFirstToken(), 65, 70); + pushKeywordIf(keywords, statement.getFirstToken(), 66, 71); } }); return ts.map(keywords, getReferenceEntryFromNode); } function getSwitchCaseDefaultOccurrences(switchStatement) { var keywords = []; - pushKeywordIf(keywords, switchStatement.getFirstToken(), 91); - ts.forEach(switchStatement.clauses, function (clause) { - pushKeywordIf(keywords, clause.getFirstToken(), 66, 72); + pushKeywordIf(keywords, switchStatement.getFirstToken(), 92); + ts.forEach(switchStatement.caseBlock.clauses, function (clause) { + pushKeywordIf(keywords, clause.getFirstToken(), 67, 73); var breaksAndContinues = aggregateAllBreakAndContinueStatements(clause); ts.forEach(breaksAndContinues, function (statement) { if (ownsBreakOrContinueStatement(switchStatement, statement)) { - pushKeywordIf(keywords, statement.getFirstToken(), 65); + pushKeywordIf(keywords, statement.getFirstToken(), 66); } }); }); @@ -27697,13 +32008,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 179: - case 180: - case 181: - case 177: - case 178: - return getLoopBreakContinueOccurrences(owner); case 186: + case 187: + case 188: + case 184: + case 185: + return getLoopBreakContinueOccurrences(owner); + case 193: return getSwitchCaseDefaultOccurrences(owner); } } @@ -27714,10 +32025,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 183 || node.kind === 182) { + if (node.kind === 190 || node.kind === 189) { statementAccumulator.push(node); } - else if (!ts.isAnyFunction(node)) { + else if (!ts.isFunctionLike(node)) { ts.forEachChild(node, aggregate); } } @@ -27728,23 +32039,23 @@ var ts; return actualOwner && actualOwner === owner; } function getBreakOrContinueOwner(statement) { - for (var node = statement.parent; node; node = node.parent) { - switch (node.kind) { - case 186: - if (statement.kind === 182) { + for (var node_1 = statement.parent; node_1; node_1 = node_1.parent) { + switch (node_1.kind) { + case 193: + if (statement.kind === 189) { continue; } - case 179: - case 180: - case 181: - case 178: - case 177: - if (!statement.label || isLabeledBy(node, statement.label.text)) { - return node; + case 186: + case 187: + case 188: + case 185: + case 184: + if (!statement.label || isLabeledBy(node_1, statement.label.text)) { + return node_1; } break; default: - if (ts.isAnyFunction(node)) { + if (ts.isFunctionLike(node_1)) { return undefined; } break; @@ -27757,38 +32068,38 @@ var ts; var keywords = []; ts.forEach(declarations, function (declaration) { ts.forEach(declaration.getChildren(), function (token) { - return pushKeywordIf(keywords, token, 112); + return pushKeywordIf(keywords, token, 114); }); }); return ts.map(keywords, getReferenceEntryFromNode); } function getGetAndSetOccurrences(accessorDeclaration) { var keywords = []; - tryPushAccessorKeyword(accessorDeclaration.symbol, 132); - tryPushAccessorKeyword(accessorDeclaration.symbol, 133); + tryPushAccessorKeyword(accessorDeclaration.symbol, 136); + tryPushAccessorKeyword(accessorDeclaration.symbol, 137); return ts.map(keywords, getReferenceEntryFromNode); function tryPushAccessorKeyword(accessorSymbol, accessorKind) { var accessor = ts.getDeclarationOfKind(accessorSymbol, accessorKind); if (accessor) { - ts.forEach(accessor.getChildren(), function (child) { return pushKeywordIf(keywords, child, 114, 118); }); + ts.forEach(accessor.getChildren(), function (child) { return pushKeywordIf(keywords, child, 116, 120); }); } } } function getModifierOccurrences(modifier, declaration) { var container = declaration.parent; - if (declaration.flags & 112) { - if (!(container.kind === 194 || - (declaration.kind === 126 && hasKind(container, 131)))) { + if (ts.isAccessibilityModifier(modifier)) { + if (!(container.kind === 201 || + (declaration.kind === 129 && hasKind(container, 135)))) { return undefined; } } - else if (declaration.flags & 128) { - if (container.kind !== 194) { + else if (modifier === 110) { + if (container.kind !== 201) { return undefined; } } - else if (declaration.flags & (1 | 2)) { - if (!(container.kind === 199 || container.kind === 210)) { + else if (modifier === 78 || modifier === 115) { + if (!(container.kind === 206 || container.kind === 227)) { return undefined; } } @@ -27799,18 +32110,18 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 199: - case 210: + case 206: + case 227: nodes = container.statements; break; - case 131: + case 135: nodes = container.parameters.concat(container.parent.members); break; - case 194: + case 201: nodes = container.members; if (modifierFlag & 112) { var constructor = ts.forEach(container.members, function (member) { - return member.kind === 131 && member; + return member.kind === 135 && member; }); if (constructor) { nodes = nodes.concat(constructor.parameters); @@ -27828,17 +32139,17 @@ var ts; return ts.map(keywords, getReferenceEntryFromNode); function getFlagFromModifier(modifier) { switch (modifier) { - case 107: + case 109: return 16; - case 105: + case 107: return 32; - case 106: - return 64; case 108: + return 64; + case 110: return 128; - case 77: + case 78: return 1; - case 113: + case 115: return 2; default: ts.Debug.fail(); @@ -27863,65 +32174,63 @@ var ts; return false; } } + function convertReferences(referenceSymbols) { + if (!referenceSymbols) { + return undefined; + } + var referenceEntries = []; + for (var _i = 0; _i < referenceSymbols.length; _i++) { + var referenceSymbol = referenceSymbols[_i]; + ts.addRange(referenceEntries, referenceSymbol.references); + } + return referenceEntries; + } function findRenameLocations(fileName, position, findInStrings, findInComments) { - return findReferences(fileName, position, findInStrings, findInComments); + var referencedSymbols = findReferencedSymbols(fileName, position, findInStrings, findInComments); + return convertReferences(referencedSymbols); } function getReferencesAtPosition(fileName, position) { - return findReferences(fileName, position, false, false); + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return convertReferences(referencedSymbols); } - function findReferences(fileName, position, findInStrings, findInComments) { + function findReferences(fileName, position) { + var referencedSymbols = findReferencedSymbols(fileName, position, false, false); + return ts.filter(referencedSymbols, function (rs) { return !!rs.definition; }); + } + function findReferencedSymbols(fileName, position, findInStrings, findInComments) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingPropertyName(sourceFile, position); if (!node) { return undefined; } - if (node.kind !== 64 && + if (node.kind !== 65 && !isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && !isNameOfExternalModuleImportOrDeclaration(node)) { return undefined; } - ts.Debug.assert(node.kind === 64 || node.kind === 7 || node.kind === 8); + ts.Debug.assert(node.kind === 65 || node.kind === 7 || node.kind === 8); return getReferencesForNode(node, program.getSourceFiles(), false, findInStrings, findInComments); } - function initializeNameTable(sourceFile) { - var nameTable = {}; - walk(sourceFile); - sourceFile.nameTable = nameTable; - function walk(node) { - switch (node.kind) { - case 64: - nameTable[node.text] = node.text; - break; - case 8: - case 7: - nameTable[node.text] = node.text; - break; - default: - ts.forEachChild(node, walk); - } - } - } function getReferencesForNode(node, sourceFiles, searchOnlyInCurrentFile, findInStrings, findInComments) { if (isLabelName(node)) { if (isJumpStatementTarget(node)) { var labelDefinition = getTargetLabel(node.parent, node.text); - return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : [getReferenceEntryFromNode(node)]; + return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : undefined; } else { return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 92) { + if (node.kind === 93) { return getReferencesForThisKeyword(node, sourceFiles); } - if (node.kind === 90) { + if (node.kind === 91) { return getReferencesForSuperKeyword(node); } var symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { - return [getReferenceEntryFromNode(node)]; + return undefined; } var declarations = symbol.declarations; if (!declarations || !declarations.length) { @@ -27929,46 +32238,78 @@ var ts; } var result; var searchMeaning = getIntersectingMeaningFromDeclarations(getMeaningFromLocation(node), declarations); - var declaredName = getDeclaredName(symbol); + var declaredName = getDeclaredName(symbol, node); var scope = getSymbolScope(symbol); + var symbolToIndex = []; if (scope) { result = []; - getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { if (searchOnlyInCurrentFile) { ts.Debug.assert(sourceFiles.length === 1); result = []; - getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { - var internedName = getInternedName(symbol, declarations); + var internedName = getInternedName(symbol, node, declarations); ts.forEach(sourceFiles, function (sourceFile) { cancellationToken.throwIfCancellationRequested(); - if (!sourceFile.nameTable) { - initializeNameTable(sourceFile); - } - ts.Debug.assert(sourceFile.nameTable !== undefined); - if (ts.lookUp(sourceFile.nameTable, internedName)) { + var nameTable = getNameTable(sourceFile); + if (ts.lookUp(nameTable, internedName)) { result = result || []; - getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } }); } } return result; - function getDeclaredName(symbol) { - var name = typeInfoResolver.symbolToString(symbol); + function getDefinition(symbol) { + var info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node); + var name = ts.map(info.displayParts, function (p) { return p.text; }).join(""); + var declarations = symbol.declarations; + if (!declarations || declarations.length === 0) { + return undefined; + } + return { + containerKind: "", + containerName: "", + name: name, + kind: info.symbolKind, + fileName: declarations[0].getSourceFile().fileName, + textSpan: ts.createTextSpan(declarations[0].getStart(), 0) + }; + } + function isImportOrExportSpecifierName(location) { + return location.parent && + (location.parent.kind === 213 || location.parent.kind === 217) && + location.parent.propertyName === location; + } + function isImportOrExportSpecifierImportSymbol(symbol) { + return (symbol.flags & 8388608) && ts.forEach(symbol.declarations, function (declaration) { + return declaration.kind === 213 || declaration.kind === 217; + }); + } + function getDeclaredName(symbol, location) { + var functionExpression = ts.forEach(symbol.declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name; + if (functionExpression && functionExpression.name) { + name = functionExpression.name.text; + } + if (isImportOrExportSpecifierName(location)) { + return location.getText(); + } + name = typeInfoResolver.symbolToString(symbol); return stripQuotes(name); } - function getInternedName(symbol, declarations) { - var functionExpression = ts.forEach(declarations, function (d) { return d.kind === 158 ? d : undefined; }); - if (functionExpression && functionExpression.name) { - var name = functionExpression.name.text; - } - else { - var name = symbol.name; + function getInternedName(symbol, location, declarations) { + if (isImportOrExportSpecifierName(location)) { + return location.getText(); } + var functionExpression = ts.forEach(declarations, function (d) { return d.kind === 162 ? d : undefined; }); + var name = functionExpression && functionExpression.name + ? functionExpression.name.text + : symbol.name; return stripQuotes(name); } function stripQuotes(name) { @@ -27980,27 +32321,31 @@ var ts; return name; } function getSymbolScope(symbol) { - if (symbol.getFlags() && (4 | 8192)) { + if (symbol.flags & (4 | 8192)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 32) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 194); + return ts.getAncestor(privateDeclaration, 201); } } - if (symbol.parent || (symbol.getFlags() & 268435456)) { + if (symbol.flags & 8388608) { + return undefined; + } + if (symbol.parent || (symbol.flags & 268435456)) { return undefined; } var scope = undefined; var declarations = symbol.getDeclarations(); if (declarations) { - for (var i = 0, n = declarations.length; i < n; i++) { - var container = getContainerNode(declarations[i]); + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var container = getContainerNode(declaration); if (!container) { return undefined; } if (scope && scope !== container) { return undefined; } - if (container.kind === 210 && !ts.isExternalModule(container)) { + if (container.kind === 227 && !ts.isExternalModule(container)) { return undefined; } scope = container; @@ -28031,7 +32376,7 @@ var ts; return positions; } function getLabelReferencesInNode(container, targetLabel) { - var result = []; + var references = []; var sourceFile = container.getSourceFile(); var labelName = targetLabel.text; var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd()); @@ -28043,15 +32388,23 @@ var ts; } if (node === targetLabel || (isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel)) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + var definition = { + containerKind: "", + containerName: "", + fileName: targetLabel.getSourceFile().fileName, + kind: ScriptElementKind.label, + name: labelName, + textSpan: ts.createTextSpanFromBounds(targetLabel.getStart(), targetLabel.getEnd()) + }; + return [{ definition: definition, references: references }]; } function isValidReferencePosition(node, searchSymbolName) { if (node) { switch (node.kind) { - case 64: + case 65: return node.getWidth() === searchSymbolName.length; case 8: if (isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || @@ -28068,7 +32421,7 @@ var ts; } return false; } - function getReferencesInNode(container, searchSymbol, searchText, searchLocation, searchMeaning, findInStrings, findInComments, result) { + function getReferencesInNode(container, searchSymbol, searchText, searchLocation, searchMeaning, findInStrings, findInComments, result, symbolToIndex) { var sourceFile = container.getSourceFile(); var tripleSlashDirectivePrefixRegex = /^\/\/\/\s*= 0) { - result.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); + var referencedSymbol = getReferencedSymbol(shorthandValueSymbol); + referencedSymbol.references.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); } } }); } + return; + function getReferencedSymbol(symbol) { + var symbolId = ts.getSymbolId(symbol); + var index = symbolToIndex[symbolId]; + if (index === undefined) { + index = result.length; + symbolToIndex[symbolId] = index; + result.push({ + definition: getDefinition(symbol), + references: [] + }); + } + return result[index]; + } function isInString(position) { var token = ts.getTokenAtPosition(sourceFile, position); return token && token.kind === 8 && position > token.getStart(); @@ -28131,103 +32504,115 @@ var ts; } var staticFlag = 128; switch (searchSpaceNode.kind) { - case 128: - case 127: - case 130: - case 129: - case 131: case 132: + case 131: + case 134: case 133: + case 135: + case 136: + case 137: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; default: return undefined; } - var result = []; + var references = []; var sourceFile = searchSpaceNode.getSourceFile(); var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 90) { + if (!node || node.kind !== 91) { return; } var container = ts.getSuperContainer(node, false); if (container && (128 & container.flags) === staticFlag && container.parent.symbol === searchSpaceNode.symbol) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + var definition = getDefinition(searchSpaceNode.symbol); + return [{ definition: definition, references: references }]; } function getReferencesForThisKeyword(thisOrSuperKeyword, sourceFiles) { var searchSpaceNode = ts.getThisContainer(thisOrSuperKeyword, false); var staticFlag = 128; switch (searchSpaceNode.kind) { - case 130: - case 129: + case 134: + case 133: if (ts.isObjectLiteralMethod(searchSpaceNode)) { break; } - case 128: - case 127: - case 131: case 132: - case 133: + case 131: + case 135: + case 136: + case 137: staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; - case 210: + case 227: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } - case 193: - case 158: + case 200: + case 162: break; default: return undefined; } - var result = []; - if (searchSpaceNode.kind === 210) { + var references = []; + var possiblePositions; + if (searchSpaceNode.kind === 227) { ts.forEach(sourceFiles, function (sourceFile) { - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); - getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, result); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); + getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); }); } else { var sourceFile = searchSpaceNode.getSourceFile(); - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); - getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, references); } - return result; + return [{ + definition: { + containerKind: "", + containerName: "", + fileName: node.getSourceFile().fileName, + kind: ScriptElementKind.variableElement, + name: "this", + textSpan: ts.createTextSpanFromBounds(node.getStart(), node.getEnd()) + }, + references: references + }]; function getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result) { ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 92) { + if (!node || node.kind !== 93) { return; } var container = ts.getThisContainer(node, false); switch (searchSpaceNode.kind) { - case 158: - case 193: + case 162: + case 200: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 130: - case 129: + case 134: + case 133: if (ts.isObjectLiteralMethod(searchSpaceNode) && searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } break; - case 194: + case 201: if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 128) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 210: - if (container.kind === 210 && !ts.isExternalModule(container)) { + case 227: + if (container.kind === 227 && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -28237,6 +32622,9 @@ var ts; } function populateSearchSymbolSet(symbol, location) { var result = [symbol]; + if (isImportOrExportSpecifierImportSymbol(symbol)) { + result.push(typeInfoResolver.getAliasedSymbol(symbol)); + } if (isNameOfPropertyAssignment(location)) { ts.forEach(getPropertySymbolsFromContextualType(location), function (contextualSymbol) { result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol)); @@ -28259,11 +32647,11 @@ var ts; function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { if (symbol && symbol.flags & (32 | 64)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 194) { - getPropertySymbolFromTypeReference(ts.getClassBaseTypeNode(declaration)); - ts.forEach(ts.getClassImplementedTypeNodes(declaration), getPropertySymbolFromTypeReference); + if (declaration.kind === 201) { + getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); + ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 195) { + else if (declaration.kind === 202) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -28282,53 +32670,59 @@ var ts; } } } - function isRelatableToSearchSet(searchSymbols, referenceSymbol, referenceLocation) { + function getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation) { if (searchSymbols.indexOf(referenceSymbol) >= 0) { - return true; + return referenceSymbol; + } + if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) { + var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol); + if (searchSymbols.indexOf(aliasedSymbol) >= 0) { + return aliasedSymbol; + } } if (isNameOfPropertyAssignment(referenceLocation)) { return ts.forEach(getPropertySymbolsFromContextualType(referenceLocation), function (contextualSymbol) { - return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0; }); + return ts.forEach(typeInfoResolver.getRootSymbols(contextualSymbol), function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); }); } return ts.forEach(typeInfoResolver.getRootSymbols(referenceSymbol), function (rootSymbol) { if (searchSymbols.indexOf(rootSymbol) >= 0) { - return true; + return rootSymbol; } if (rootSymbol.parent && rootSymbol.parent.flags & (32 | 64)) { - var result = []; - getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result); - return ts.forEach(result, function (s) { return searchSymbols.indexOf(s) >= 0; }); + var result_2 = []; + getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result_2); + return ts.forEach(result_2, function (s) { return searchSymbols.indexOf(s) >= 0 ? s : undefined; }); } - return false; + return undefined; }); } function getPropertySymbolsFromContextualType(node) { if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name = node.text; + var name_20 = node.text; if (contextualType) { if (contextualType.flags & 16384) { - var unionProperty = contextualType.getProperty(name); + var unionProperty = contextualType.getProperty(name_20); if (unionProperty) { return [unionProperty]; } else { - var result = []; + var result_3 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name); + var symbol = t.getProperty(name_20); if (symbol) { - result.push(symbol); + result_3.push(symbol); } }); - return result; + return result_3; } } else { - var symbol = contextualType.getProperty(name); - if (symbol) { - return [symbol]; + var symbol_1 = contextualType.getProperty(name_20); + if (symbol_1) { + return [symbol_1]; } } } @@ -28337,10 +32731,12 @@ var ts; } function getIntersectingMeaningFromDeclarations(meaning, declarations) { if (declarations) { + var lastIterationMeaning; do { - var lastIterationMeaning = meaning; - for (var i = 0, n = declarations.length; i < n; i++) { - var declarationMeaning = getMeaningFromDeclaration(declarations[i]); + lastIterationMeaning = meaning; + for (var _i = 0; _i < declarations.length; _i++) { + var declaration = declarations[_i]; + var declarationMeaning = getMeaningFromDeclaration(declaration); if (declarationMeaning & meaning) { meaning |= declarationMeaning; } @@ -28364,17 +32760,17 @@ var ts; }; } function isWriteAccess(node) { - if (node.kind === 64 && ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (node.kind === 65 && ts.isDeclarationName(node)) { return true; } var parent = node.parent; if (parent) { - if (parent.kind === 164 || parent.kind === 163) { + if (parent.kind === 168 || parent.kind === 167) { return true; } - else if (parent.kind === 165 && parent.left === node) { + else if (parent.kind === 169 && parent.left === node) { var operator = parent.operatorToken.kind; - return 52 <= operator && operator <= 63; + return 53 <= operator && operator <= 64; } } return false; @@ -28384,11 +32780,10 @@ var ts; return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); } function containErrors(diagnostics) { - return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === 1; }); + return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); } function getEmitOutput(fileName) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var outputFiles = []; function writeFile(fileName, data, writeByteOrderMark) { @@ -28406,33 +32801,33 @@ var ts; } function getMeaningFromDeclaration(node) { switch (node.kind) { - case 126: - case 191: - case 148: - case 128: - case 127: - case 207: - case 208: - case 209: - case 130: case 129: - case 131: - case 132: - case 133: - case 193: - case 158: - case 159: - case 206: - return 1; - case 125: - case 195: - case 196: - case 141: - return 2; - case 194: - case 197: - return 1 | 2; case 198: + case 152: + case 132: + case 131: + case 224: + case 225: + case 226: + case 134: + case 133: + case 135: + case 136: + case 137: + case 200: + case 162: + case 163: + case 223: + return 1; + case 128: + case 202: + case 203: + case 145: + return 2; + case 201: + case 204: + return 1 | 2; + case 205: if (node.name.kind === 8) { return 4 | 1; } @@ -28442,52 +32837,78 @@ var ts; else { return 4; } - case 200: + case 212: + case 213: + case 208: + case 209: + case 214: + case 215: return 1 | 2 | 4; - case 210: + case 227: return 4 | 1; } + return 1 | 2 | 4; ts.Debug.fail("Unknown declaration type"); } function isTypeReference(node) { - if (isRightSideOfQualifiedName(node)) { + if (ts.isRightSideOfQualifiedNameOrPropertyAccess(node)) { node = node.parent; } - return node.parent.kind === 137; + return node.parent.kind === 141 || node.parent.kind === 177; } function isNamespaceReference(node) { + return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); + } + function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 123) { - while (root.parent && root.parent.kind === 123) + if (root.parent.kind === 155) { + while (root.parent && root.parent.kind === 155) { root = root.parent; + } + isLastClause = root.name === node; + } + if (!isLastClause && root.parent.kind === 177 && root.parent.parent.kind === 222) { + var decl = root.parent.parent.parent; + return (decl.kind === 201 && root.parent.parent.token === 103) || + (decl.kind === 202 && root.parent.parent.token === 79); + } + return false; + } + function isQualifiedNameNamespaceReference(node) { + var root = node; + var isLastClause = true; + if (root.parent.kind === 126) { + while (root.parent && root.parent.kind === 126) { + root = root.parent; + } isLastClause = root.right === node; } - return root.parent.kind === 137 && !isLastClause; + return root.parent.kind === 141 && !isLastClause; } function isInRightSideOfImport(node) { - while (node.parent.kind === 123) { + while (node.parent.kind === 126) { node = node.parent; } - return ts.isInternalModuleImportDeclaration(node.parent) && node.parent.moduleReference === node; + return ts.isInternalModuleImportEqualsDeclaration(node.parent) && node.parent.moduleReference === node; } - function getMeaningFromRightHandSideOfImport(node) { - ts.Debug.assert(node.kind === 64); - if (node.parent.kind === 123 && + function getMeaningFromRightHandSideOfImportEquals(node) { + ts.Debug.assert(node.kind === 65); + if (node.parent.kind === 126 && node.parent.right === node && - node.parent.parent.kind === 200) { + node.parent.parent.kind === 208) { return 1 | 2 | 4; } return 4; } function getMeaningFromLocation(node) { - if (node.parent.kind === 201) { + if (node.parent.kind === 214) { return 1 | 2 | 4; } else if (isInRightSideOfImport(node)) { - return getMeaningFromRightHandSideOfImport(node); + return getMeaningFromRightHandSideOfImportEquals(node); } - else if (ts.isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + else if (ts.isDeclarationName(node)) { return getMeaningFromDeclaration(node.parent); } else if (isTypeReference(node)) { @@ -28502,31 +32923,28 @@ var ts; } function getSignatureHelpItems(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); return ts.SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); } - function getCurrentSourceFile(fileName) { - fileName = ts.normalizeSlashes(fileName); - var currentSourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - return currentSourceFile; + function getSourceFile(fileName) { + return syntaxTreeCache.getCurrentSourceFile(fileName); } function getNameOrDottedNameSpan(fileName, startPos, endPos) { - fileName = ts.normalizeSlashes(fileName); - var node = ts.getTouchingPropertyName(getCurrentSourceFile(fileName), startPos); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + var node = ts.getTouchingPropertyName(sourceFile, startPos); if (!node) { return; } switch (node.kind) { - case 151: - case 123: + case 155: + case 126: case 8: - case 79: - case 94: - case 88: - case 90: - case 92: - case 64: + case 80: + case 95: + case 89: + case 91: + case 93: + case 65: break; default: return; @@ -28537,7 +32955,7 @@ var ts; nodeForStartPos = nodeForStartPos.parent; } else if (isNameOfModuleDeclaration(nodeForStartPos)) { - if (nodeForStartPos.parent.parent.kind === 198 && + if (nodeForStartPos.parent.parent.kind === 205 && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { nodeForStartPos = nodeForStartPos.parent.parent.name; } @@ -28552,16 +32970,15 @@ var ts; return ts.createTextSpanFromBounds(nodeForStartPos.getStart(), node.getEnd()); } function getBreakpointStatementAtPosition(fileName, position) { - fileName = ts.normalizeSlashes(fileName); - return ts.BreakpointResolver.spanInSourceFileAtLocation(getCurrentSourceFile(fileName), position); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.BreakpointResolver.spanInSourceFileAtLocation(sourceFile, position); } function getNavigationBarItems(fileName) { - fileName = ts.normalizeSlashes(fileName); - return ts.NavigationBar.getNavigationBarItems(getCurrentSourceFile(fileName)); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + return ts.NavigationBar.getNavigationBarItems(sourceFile); } function getSemanticClassifications(fileName, span) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var result = []; processNode(sourceFile); @@ -28594,13 +33011,13 @@ var ts; return undefined; function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 198 && ts.getModuleInstanceState(declaration) == 1; + return declaration.kind === 205 && ts.getModuleInstanceState(declaration) == 1; }); } } function processNode(node) { if (node && ts.textSpanIntersectsWith(span, node.getStart(), node.getWidth())) { - if (node.kind === 64 && node.getWidth() > 0) { + if (node.kind === 65 && node.getWidth() > 0) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol) { var type = classifySymbol(symbol, getMeaningFromLocation(node)); @@ -28617,8 +33034,7 @@ var ts; } } function getSyntacticClassifications(fileName, span) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); var triviaScanner = ts.createScanner(2, false, sourceFile.text); var mergeConflictScanner = ts.createScanner(2, false, sourceFile.text); var result = []; @@ -28712,17 +33128,17 @@ var ts; } if (ts.isPunctuation(tokenKind)) { if (token) { - if (tokenKind === 52) { - if (token.parent.kind === 191 || - token.parent.kind === 128 || - token.parent.kind === 126) { + if (tokenKind === 53) { + if (token.parent.kind === 198 || + token.parent.kind === 132 || + token.parent.kind === 129) { return ClassificationTypeNames.operator; } } - if (token.parent.kind === 165 || - token.parent.kind === 163 || - token.parent.kind === 164 || - token.parent.kind === 166) { + if (token.parent.kind === 169 || + token.parent.kind === 167 || + token.parent.kind === 168 || + token.parent.kind === 170) { return ClassificationTypeNames.operator; } } @@ -28740,30 +33156,30 @@ var ts; else if (ts.isTemplateLiteralKind(tokenKind)) { return ClassificationTypeNames.stringLiteral; } - else if (tokenKind === 64) { + else if (tokenKind === 65) { if (token) { switch (token.parent.kind) { - case 194: + case 201: if (token.parent.name === token) { return ClassificationTypeNames.className; } return; - case 125: + case 128: if (token.parent.name === token) { return ClassificationTypeNames.typeParameterName; } return; - case 195: + case 202: if (token.parent.name === token) { return ClassificationTypeNames.interfaceName; } return; - case 197: + case 204: if (token.parent.name === token) { return ClassificationTypeNames.enumName; } return; - case 198: + case 205: if (token.parent.name === token) { return ClassificationTypeNames.moduleName; } @@ -28776,8 +33192,8 @@ var ts; function processElement(element) { if (ts.textSpanIntersectsWith(span, element.getFullStart(), element.getFullWidth())) { var children = element.getChildren(); - for (var i = 0, n = children.length; i < n; i++) { - var child = children[i]; + for (var _i = 0; _i < children.length; _i++) { + var child = children[_i]; if (ts.isToken(child)) { classifyToken(child); } @@ -28789,12 +33205,11 @@ var ts; } } function getOutliningSpans(fileName) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.OutliningElementsCollector.collectElements(sourceFile); } function getBraceMatchingAtPosition(fileName, position) { - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); var result = []; var token = ts.getTouchingToken(sourceFile, position); if (token.getStart(sourceFile) === position) { @@ -28802,8 +33217,8 @@ var ts; if (matchKind) { var parentElement = token.parent; var childNodes = parentElement.getChildren(sourceFile); - for (var i = 0, n = childNodes.length; i < n; i++) { - var current = childNodes[i]; + for (var _i = 0; _i < childNodes.length; _i++) { + var current = childNodes[_i]; if (current.kind === matchKind) { var range1 = ts.createTextSpan(token.getStart(sourceFile), token.getWidth(sourceFile)); var range2 = ts.createTextSpan(current.getStart(sourceFile), current.getWidth(sourceFile)); @@ -28834,28 +33249,24 @@ var ts; } } function getIndentationAtPosition(fileName, position, editorOptions) { - fileName = ts.normalizeSlashes(fileName); var start = new Date().getTime(); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); log("getIndentationAtPosition: getCurrentSourceFile: " + (new Date().getTime() - start)); - var start = new Date().getTime(); + start = new Date().getTime(); var result = ts.formatting.SmartIndenter.getIndentation(position, sourceFile, editorOptions); log("getIndentationAtPosition: computeIndentation : " + (new Date().getTime() - start)); return result; } function getFormattingEditsForRange(fileName, start, end, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.formatting.formatSelection(start, end, sourceFile, getRuleProvider(options), options); } function getFormattingEditsForDocument(fileName, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return ts.formatting.formatDocument(sourceFile, getRuleProvider(options), options); } function getFormattingEditsAfterKeystroke(fileName, position, key, options) { - fileName = ts.normalizeSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); + var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); if (key === "}") { return ts.formatting.formatOnClosingCurly(position, sourceFile, getRuleProvider(options), options); } @@ -28869,7 +33280,6 @@ var ts; } function getTodoComments(fileName, descriptors) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); cancellationToken.throwIfCancellationRequested(); var fileContents = sourceFile.text; @@ -28910,6 +33320,8 @@ var ts; return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } function getTodoCommentsRegExp() { + // NOTE: ?: means 'non-capture group'. It allows us to have groups without having to + // filter them out later in the final result array. var singleLineCommentStart = /(?:\/\/+\s*)/.source; var multiLineCommentStart = /(?:\/\*+\s*)/.source; var anyNumberOfSpacesAndAsterixesAtStartOfLine = /(?:^(?:\s|\*)*)/.source; @@ -28929,19 +33341,19 @@ var ts; } function getRenameInfo(fileName, position) { synchronizeHostData(); - fileName = ts.normalizeSlashes(fileName); var sourceFile = getValidSourceFile(fileName); var node = ts.getTouchingWord(sourceFile, position); - if (node && node.kind === 64) { + if (node && node.kind === 65) { var symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol) { var declarations = symbol.getDeclarations(); if (declarations && declarations.length > 0) { var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); if (defaultLibFileName) { - for (var i = 0; i < declarations.length; i++) { - var sourceFile = declarations[i].getSourceFile(); - if (sourceFile && getCanonicalFileName(ts.normalizePath(sourceFile.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + for (var _i = 0; _i < declarations.length; _i++) { + var current = declarations[_i]; + var sourceFile_1 = current.getSourceFile(); + if (sourceFile_1 && getCanonicalFileName(ts.normalizePath(sourceFile_1.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key)); } } @@ -28988,6 +33400,7 @@ var ts; getQuickInfoAtPosition: getQuickInfoAtPosition, getDefinitionAtPosition: getDefinitionAtPosition, getReferencesAtPosition: getReferencesAtPosition, + findReferences: findReferences, getOccurrencesAtPosition: getOccurrencesAtPosition, getNameOrDottedNameSpan: getNameOrDottedNameSpan, getBreakpointStatementAtPosition: getBreakpointStatementAtPosition, @@ -29003,42 +33416,68 @@ var ts; getFormattingEditsForDocument: getFormattingEditsForDocument, getFormattingEditsAfterKeystroke: getFormattingEditsAfterKeystroke, getEmitOutput: getEmitOutput, - getSourceFile: getCurrentSourceFile, + getSourceFile: getSourceFile, getProgram: getProgram }; } ts.createLanguageService = createLanguageService; + function getNameTable(sourceFile) { + if (!sourceFile.nameTable) { + initializeNameTable(sourceFile); + } + return sourceFile.nameTable; + } + ts.getNameTable = getNameTable; + function initializeNameTable(sourceFile) { + var nameTable = {}; + walk(sourceFile); + sourceFile.nameTable = nameTable; + function walk(node) { + switch (node.kind) { + case 65: + nameTable[node.text] = node.text; + break; + case 8: + case 7: + if (ts.isDeclarationName(node) || + node.parent.kind === 219 || + isArgumentOfElementAccessExpression(node)) { + nameTable[node.text] = node.text; + } + break; + default: + ts.forEachChild(node, walk); + } + } + } + function isArgumentOfElementAccessExpression(node) { + return node && + node.parent && + node.parent.kind === 156 && + node.parent.argumentExpression === node; + } function createClassifier() { var scanner = ts.createScanner(2, false); var noRegexTable = []; - noRegexTable[64] = true; + noRegexTable[65] = true; noRegexTable[8] = true; noRegexTable[7] = true; noRegexTable[9] = true; - noRegexTable[92] = true; + noRegexTable[93] = true; noRegexTable[38] = true; noRegexTable[39] = true; noRegexTable[17] = true; noRegexTable[19] = true; noRegexTable[15] = true; - noRegexTable[94] = true; - noRegexTable[79] = true; + noRegexTable[95] = true; + noRegexTable[80] = true; var templateStack = []; - function isAccessibilityModifier(kind) { - switch (kind) { - case 107: - case 105: - case 106: - return true; - } - return false; - } function canFollow(keyword1, keyword2) { - if (isAccessibilityModifier(keyword1)) { - if (keyword2 === 114 || - keyword2 === 118 || - keyword2 === 112 || - keyword2 === 108) { + if (ts.isAccessibilityModifier(keyword1)) { + if (keyword2 === 116 || + keyword2 === 120 || + keyword2 === 114 || + keyword2 === 110) { return true; } return false; @@ -29085,31 +33524,31 @@ var ts; do { token = scanner.scan(); if (!ts.isTrivia(token)) { - if ((token === 36 || token === 56) && !noRegexTable[lastNonTriviaToken]) { + if ((token === 36 || token === 57) && !noRegexTable[lastNonTriviaToken]) { if (scanner.reScanSlashToken() === 9) { token = 9; } } else if (lastNonTriviaToken === 20 && isKeyword(token)) { - token = 64; + token = 65; } else if (isKeyword(lastNonTriviaToken) && isKeyword(token) && !canFollow(lastNonTriviaToken, token)) { - token = 64; + token = 65; } - else if (lastNonTriviaToken === 64 && + else if (lastNonTriviaToken === 65 && token === 24) { angleBracketStack++; } else if (token === 25 && angleBracketStack > 0) { angleBracketStack--; } - else if (token === 110 || + else if (token === 112 || + token === 121 || token === 119 || - token === 117 || - token === 111 || - token === 120) { + token === 113 || + token === 122) { if (angleBracketStack > 0 && !syntacticClassifierAbsent) { - token = 64; + token = 65; } } else if (token === 11) { @@ -29158,7 +33597,9 @@ var ts; } if (numBackslashes & 1) { var quoteChar = tokenText.charCodeAt(0); - result.finalLexState = quoteChar === 34 ? 3 : 2; + result.finalLexState = quoteChar === 34 + ? 3 + : 2; } } } @@ -29208,8 +33649,8 @@ var ts; case 25: case 26: case 27: + case 87: case 86: - case 85: case 28: case 29: case 30: @@ -29219,18 +33660,18 @@ var ts; case 44: case 48: case 49: - case 62: - case 61: case 63: - case 58: + case 62: + case 64: case 59: case 60: - case 53: + case 61: case 54: case 55: case 56: case 57: - case 52: + case 58: + case 53: case 23: return true; default: @@ -29251,38 +33692,38 @@ var ts; } } function isKeyword(token) { - return token >= 65 && token <= 122; + return token >= 66 && token <= 125; } function classFromKind(token) { if (isKeyword(token)) { - return 1; + return TokenClass.Keyword; } else if (isBinaryExpressionOperatorToken(token) || isPrefixUnaryExpressionOperatorToken(token)) { - return 2; + return TokenClass.Operator; } - else if (token >= 14 && token <= 63) { - return 0; + else if (token >= 14 && token <= 64) { + return TokenClass.Punctuation; } switch (token) { case 7: - return 6; + return TokenClass.NumberLiteral; case 8: - return 7; + return TokenClass.StringLiteral; case 9: - return 8; + return TokenClass.RegExpLiteral; case 6: case 3: case 2: - return 3; + return TokenClass.Comment; case 5: case 4: - return 4; - case 64: + return TokenClass.Whitespace; + case 65: default: if (ts.isTemplateLiteralKind(token)) { - return 7; + return TokenClass.StringLiteral; } - return 5; + return TokenClass.Identifier; } } return { getClassificationsForLine: getClassificationsForLine }; @@ -29300,7 +33741,7 @@ var ts; getNodeConstructor: function (kind) { function Node() { } - var proto = kind === 210 ? new SourceFileObject() : new NodeObject(); + var proto = kind === 227 ? new SourceFileObject() : new NodeObject(); proto.kind = kind; proto.pos = 0; proto.end = 0; @@ -29316,12 +33757,15 @@ var ts; } initializeServices(); })(ts || (ts = {})); +// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0. +// See LICENSE.txt in the project root for complete license information. +/// var ts; (function (ts) { var BreakpointResolver; (function (BreakpointResolver) { function spanInSourceFileAtLocation(sourceFile, position) { - if (sourceFile.flags & 1024) { + if (sourceFile.flags & 2048) { return undefined; } var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); @@ -29354,94 +33798,101 @@ var ts; function spanInNode(node) { if (node) { if (ts.isExpression(node)) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return spanInPreviousNode(node); } - if (node.parent.kind === 179) { + if (node.parent.kind === 186) { return textSpan(node); } - if (node.parent.kind === 165 && node.parent.operatorToken.kind === 23) { + if (node.parent.kind === 169 && node.parent.operatorToken.kind === 23) { return textSpan(node); } - if (node.parent.kind == 159 && node.parent.body == node) { + if (node.parent.kind == 163 && node.parent.body == node) { return textSpan(node); } } switch (node.kind) { - case 173: + case 180: return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 191: - case 128: - case 127: - return spanInVariableDeclaration(node); - case 126: - return spanInParameterDeclaration(node); - case 193: - case 130: - case 129: + case 198: case 132: - case 133: case 131: - case 158: - case 159: + return spanInVariableDeclaration(node); + case 129: + return spanInParameterDeclaration(node); + case 200: + case 134: + case 133: + case 136: + case 137: + case 135: + case 162: + case 163: return spanInFunctionDeclaration(node); - case 172: + case 179: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } - case 199: - return spanInBlock(node); case 206: + return spanInBlock(node); + case 223: return spanInBlock(node.block); - case 175: + case 182: return textSpan(node.expression); - case 184: + case 191: return textSpan(node.getChildAt(0), node.expression); - case 178: + case 185: return textSpan(node, ts.findNextToken(node.expression, node)); - case 177: + case 184: + return spanInNode(node.statement); + case 197: + return textSpan(node.getChildAt(0)); + case 183: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 194: return spanInNode(node.statement); case 190: - return textSpan(node.getChildAt(0)); - case 176: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 187: - return spanInNode(node.statement); - case 183: - case 182: - return textSpan(node.getChildAt(0), node.label); - case 179: - return spanInForStatement(node); - case 180: - case 181: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 186: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 203: - case 204: - return spanInNode(node.statements[0]); case 189: - return spanInBlock(node.tryBlock); + return textSpan(node.getChildAt(0), node.label); + case 186: + return spanInForStatement(node); + case 187: case 188: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 193: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 220: + case 221: + return spanInNode(node.statements[0]); + case 196: + return spanInBlock(node.tryBlock); + case 195: return textSpan(node, node.expression); - case 201: - return textSpan(node, node.exportName); - case 200: + case 214: + if (!node.expression) { + return undefined; + } + return textSpan(node, node.expression); + case 208: return textSpan(node, node.moduleReference); - case 198: + case 209: + return textSpan(node, node.moduleSpecifier); + case 215: + return textSpan(node, node.moduleSpecifier); + case 205: if (ts.getModuleInstanceState(node) !== 1) { return undefined; } - case 194: - case 197: - case 209: - case 153: - case 154: + case 201: + case 204: + case 226: + case 157: + case 158: return textSpan(node); - case 185: + case 192: return spanInNode(node.statement); - case 195: - case 196: + case 202: + case 203: return undefined; case 22: case 1: @@ -29461,33 +33912,37 @@ var ts; case 25: case 24: return spanInGreaterThanOrLessThanToken(node); - case 99: + case 100: return spanInWhileKeyword(node); - case 75: - case 67: - case 80: + case 76: + case 68: + case 81: return spanInNextNode(node); default: - if (node.parent.kind === 207 && node.parent.name === node) { + if (node.parent.kind === 224 && node.parent.name === node) { return spanInNode(node.parent.initializer); } - if (node.parent.kind === 156 && node.parent.type === node) { + if (node.parent.kind === 160 && node.parent.type === node) { return spanInNode(node.parent.expression); } - if (ts.isAnyFunction(node.parent) && node.parent.type === node) { + if (ts.isFunctionLike(node.parent) && node.parent.type === node) { return spanInPreviousNode(node); } return spanInNode(node.parent); } } function spanInVariableDeclaration(variableDeclaration) { - if (variableDeclaration.parent.parent.kind === 180 || - variableDeclaration.parent.parent.kind === 181) { + if (variableDeclaration.parent.parent.kind === 187 || + variableDeclaration.parent.parent.kind === 188) { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === 173; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 179 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); - var declarations = isParentVariableStatement ? variableDeclaration.parent.parent.declarationList.declarations : isDeclarationOfForStatement ? variableDeclaration.parent.parent.initializer.declarations : undefined; + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 180; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 186 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var declarations = isParentVariableStatement + ? variableDeclaration.parent.parent.declarationList.declarations + : isDeclarationOfForStatement + ? variableDeclaration.parent.parent.initializer.declarations + : undefined; if (variableDeclaration.initializer || (variableDeclaration.flags & 1)) { if (declarations && declarations[0] === variableDeclaration) { if (isParentVariableStatement) { @@ -29528,7 +33983,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 1) || - (functionDeclaration.parent.kind === 194 && functionDeclaration.kind !== 131); + (functionDeclaration.parent.kind === 201 && functionDeclaration.kind !== 135); } function spanInFunctionDeclaration(functionDeclaration) { if (!functionDeclaration.body) { @@ -29548,23 +34003,23 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 198: + case 205: if (ts.getModuleInstanceState(block.parent) !== 1) { return undefined; } - case 178: - case 176: - case 180: - case 181: + case 185: + case 183: + case 187: + case 188: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); - case 179: + case 186: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } return spanInNode(block.statements[0]); } function spanInForStatement(forStatement) { if (forStatement.initializer) { - if (forStatement.initializer.kind === 192) { + if (forStatement.initializer.kind === 199) { var variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); @@ -29583,36 +34038,36 @@ var ts; } function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 197: + case 204: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 194: + case 201: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 186: - return spanInNodeIfStartsOnSameLine(node.parent, node.parent.clauses[0]); + case 207: + return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } return spanInNode(node.parent); } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 199: + case 206: if (ts.getModuleInstanceState(node.parent.parent) !== 1) { return undefined; } - case 197: - case 194: + case 204: + case 201: return textSpan(node); - case 172: + case 179: if (ts.isFunctionBlock(node.parent)) { return textSpan(node); } - case 206: + case 223: return spanInNode(node.parent.statements[node.parent.statements.length - 1]); ; - case 186: - var switchStatement = node.parent; - var lastClause = switchStatement.clauses[switchStatement.clauses.length - 1]; + case 207: + var caseBlock = node.parent; + var lastClause = caseBlock.clauses[caseBlock.clauses.length - 1]; if (lastClause) { return spanInNode(lastClause.statements[lastClause.statements.length - 1]); } @@ -29622,24 +34077,24 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInCloseParenToken(node) { switch (node.parent.kind) { - case 158: - case 193: - case 159: - case 130: - case 129: - case 132: + case 162: + case 200: + case 163: + case 134: case 133: - case 131: - case 178: - case 177: - case 179: + case 136: + case 137: + case 135: + case 185: + case 184: + case 186: return spanInPreviousNode(node); default: return spanInNode(node.parent); @@ -29647,19 +34102,19 @@ var ts; return spanInNode(node.parent); } function spanInColonToken(node) { - if (ts.isAnyFunction(node.parent) || node.parent.kind === 207) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 224) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 156) { + if (node.parent.kind === 160) { return spanInNode(node.parent.expression); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 177) { + if (node.parent.kind === 184) { return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); } return spanInNode(node.parent); @@ -29669,6 +34124,21 @@ var ts; BreakpointResolver.spanInSourceFileAtLocation = spanInSourceFileAtLocation; })(BreakpointResolver = ts.BreakpointResolver || (ts.BreakpointResolver = {})); })(ts || (ts = {})); +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/// var debugObjectHost = this; var ts; (function (ts) { @@ -29752,7 +34222,12 @@ var ts; return this.shimHost.getCurrentDirectory(); }; LanguageServiceShimHostAdapter.prototype.getDefaultLibFileName = function (options) { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + try { + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + } + catch (e) { + return ""; + } }; return LanguageServiceShimHostAdapter; })(); @@ -29948,6 +34423,12 @@ var ts; return _this.languageService.getReferencesAtPosition(fileName, position); }); }; + LanguageServiceShimObject.prototype.findReferences = function (fileName, position) { + var _this = this; + return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { + return _this.languageService.findReferences(fileName, position); + }); + }; LanguageServiceShimObject.prototype.getOccurrencesAtPosition = function (fileName, position) { var _this = this; return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { @@ -30157,3 +34638,4 @@ var TypeScript; Services.TypeScriptServicesFactory = ts.TypeScriptServicesFactory; })(Services = TypeScript.Services || (TypeScript.Services = {})); })(TypeScript || (TypeScript = {})); +var toolsVersion = "1.4"; diff --git a/bin/typescriptServices_internal.d.ts b/bin/typescriptServices_internal.d.ts index 12860e9edc8..f0f86ebfe02 100644 --- a/bin/typescriptServices_internal.d.ts +++ b/bin/typescriptServices_internal.d.ts @@ -41,6 +41,10 @@ declare module ts { */ function lastOrUndefined(array: T[]): T; function binarySearch(array: number[], value: number): number; + function reduceLeft(array: T[], f: (a: T, x: T) => T): T; + function reduceLeft(array: T[], f: (a: U, x: T) => U, initial: U): U; + function reduceRight(array: T[], f: (a: T, x: T) => T): T; + function reduceRight(array: T[], f: (a: U, x: T) => U, initial: U): U; function hasProperty(map: Map, key: string): boolean; function getProperty(map: Map, key: string): T; function isEmpty(map: Map): boolean; @@ -49,7 +53,6 @@ declare module ts { function forEachValue(map: Map, callback: (value: T) => U): U; function forEachKey(map: Map, callback: (key: string) => U): U; function lookUp(map: Map, key: string): T; - function mapToArray(map: Map): T[]; function copyMap(source: Map, target: Map): void; /** * Creates a map from the elements of an array. @@ -62,7 +65,7 @@ declare module ts { * index in the array will be the one associated with the produced key. */ function arrayToMap(array: T[], makeKey: (value: T) => string): Map; - var localizedDiagnosticMessages: Map; + let localizedDiagnosticMessages: Map; function getLocaleSpecificMessage(message: string): string; function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage, ...args: any[]): Diagnostic; function createCompilerDiagnostic(message: DiagnosticMessage, ...args: any[]): Diagnostic; @@ -74,7 +77,7 @@ declare module ts { function deduplicateSortedDiagnostics(diagnostics: Diagnostic[]): Diagnostic[]; function normalizeSlashes(path: string): string; function getRootLength(path: string): number; - var directorySeparator: string; + let directorySeparator: string; function normalizePath(path: string): string; function getDirectoryPath(path: string): string; function isUrl(path: string): boolean; @@ -87,12 +90,6 @@ declare module ts { function combinePaths(path1: string, path2: string): string; function fileExtensionIs(path: string, extension: string): boolean; function removeFileExtension(path: string): string; - /** - * Based heavily on the abstract 'Quote' operation from ECMA-262 (24.3.2.2), - * but augmented for a few select characters. - * Note that this doesn't actually wrap the input in double quotes. - */ - function escapeString(s: string): string; function getDefaultLibFileName(options: CompilerOptions): string; interface ObjectAllocator { getNodeConstructor(kind: SyntaxKind): new () => Node; @@ -100,7 +97,7 @@ declare module ts { getTypeConstructor(): new (checker: TypeChecker, flags: TypeFlags) => Type; getSignatureConstructor(): new (checker: TypeChecker) => Signature; } - var objectAllocator: ObjectAllocator; + let objectAllocator: ObjectAllocator; const enum AssertionLevel { None = 0, Normal = 1, @@ -143,6 +140,11 @@ declare module ts { diagnosticMessage?: DiagnosticMessage; isNoDefaultLib?: boolean; } + interface SynthesizedNode extends Node { + leadingCommentRanges?: CommentRange[]; + trailingCommentRanges?: CommentRange[]; + startsOnNewLine: boolean; + } function getDeclarationOfKind(symbol: Symbol, kind: SyntaxKind): Declaration; interface StringSymbolWriter extends SymbolWriter { string(): string; @@ -170,10 +172,14 @@ declare module ts { function getTextOfNode(node: Node): string; function escapeIdentifier(identifier: string): string; function unescapeIdentifier(identifier: string): string; + function makeIdentifierFromModuleName(moduleName: string): string; + function isBlockOrCatchScoped(declaration: Declaration): boolean; + function getEnclosingBlockScopeContainer(node: Node): Node; + function isCatchClauseVariableDeclaration(declaration: Declaration): boolean; function declarationNameToString(name: DeclarationName): string; function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): Diagnostic; function createDiagnosticForNodeFromMessageChain(node: Node, messageChain: DiagnosticMessageChain): Diagnostic; - function getErrorSpanForNode(node: Node): Node; + function getErrorSpanForNode(sourceFile: SourceFile, node: Node): TextSpan; function isExternalModule(file: SourceFile): boolean; function isDeclarationFile(file: SourceFile): boolean; function isConstEnumDeclaration(node: Node): boolean; @@ -181,22 +187,27 @@ declare module ts { function isConst(node: Node): boolean; function isLet(node: Node): boolean; function isPrologueDirective(node: Node): boolean; - function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode?: SourceFile): CommentRange[]; + function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): CommentRange[]; function getJsDocComments(node: Node, sourceFileOfNode: SourceFile): CommentRange[]; - var fullTripleSlashReferencePathRegEx: RegExp; + let fullTripleSlashReferencePathRegEx: RegExp; function forEachReturnStatement(body: Block, visitor: (stmt: ReturnStatement) => T): T; - function isAnyFunction(node: Node): boolean; + function isFunctionLike(node: Node): boolean; function isFunctionBlock(node: Node): boolean; function isObjectLiteralMethod(node: Node): boolean; function getContainingFunction(node: Node): FunctionLikeDeclaration; function getThisContainer(node: Node, includeArrowFunctions: boolean): Node; function getSuperContainer(node: Node, includeFunctions: boolean): Node; function getInvokedExpression(node: CallLikeExpression): Expression; + function nodeCanBeDecorated(node: Node): boolean; + function nodeIsDecorated(node: Node): boolean; + function childIsDecorated(node: Node): boolean; + function nodeOrChildIsDecorated(node: Node): boolean; function isExpression(node: Node): boolean; function isInstantiatedModule(node: ModuleDeclaration, preserveConstEnums: boolean): boolean; - function isExternalModuleImportDeclaration(node: Node): boolean; - function getExternalModuleImportDeclarationExpression(node: Node): Expression; - function isInternalModuleImportDeclaration(node: Node): boolean; + function isExternalModuleImportEqualsDeclaration(node: Node): boolean; + function getExternalModuleImportEqualsDeclarationExpression(node: Node): Expression; + function isInternalModuleImportEqualsDeclaration(node: Node): boolean; + function getExternalModuleName(node: Node): Expression; function hasDotDotDotToken(node: Node): boolean; function hasQuestionToken(node: Node): boolean; function hasRestParameters(s: SignatureDeclaration): boolean; @@ -207,10 +218,12 @@ declare module ts { function isInAmbientContext(node: Node): boolean; function isDeclaration(node: Node): boolean; function isStatement(n: Node): boolean; - function isDeclarationOrFunctionExpressionOrCatchVariableName(name: Node): boolean; - function getClassBaseTypeNode(node: ClassDeclaration): TypeReferenceNode; - function getClassImplementedTypeNodes(node: ClassDeclaration): NodeArray; - function getInterfaceBaseTypeNodes(node: InterfaceDeclaration): NodeArray; + function isClassElement(n: Node): boolean; + function isDeclarationName(name: Node): boolean; + function isAliasSymbolDeclaration(node: Node): boolean; + function getClassExtendsHeritageClauseElement(node: ClassLikeDeclaration): HeritageClauseElement; + function getClassImplementsHeritageClauseElements(node: ClassDeclaration): NodeArray; + function getInterfaceBaseTypeNodes(node: InterfaceDeclaration): NodeArray; function getHeritageClause(clauses: NodeArray, kind: SyntaxKind): HeritageClause; function tryResolveScriptReference(host: ScriptReferenceHost, sourceFile: SourceFile, reference: FileReference): SourceFile; function getAncestor(node: Node, kind: SyntaxKind): Node; @@ -253,7 +266,7 @@ declare module ts { function textChangeRangeNewSpan(range: TextChangeRange): TextSpan; function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange; - var unchangedTextChangeRange: TextChangeRange; + let unchangedTextChangeRange: TextChangeRange; /** * Called to merge all the changes that occurred across several versions of a script snapshot * into a single change. i.e. if a user keeps making successive edits to a script we will @@ -263,11 +276,64 @@ declare module ts { * Vn. */ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; + function nodeStartsNewLexicalEnvironment(n: Node): boolean; + function nodeIsSynthesized(node: Node): boolean; + function createSynthesizedNode(kind: SyntaxKind, startsOnNewLine?: boolean): Node; + /** + * Based heavily on the abstract 'Quote'/'QuoteJSONString' operation from ECMA-262 (24.3.2.2), + * but augmented for a few select characters (e.g. lineSeparator, paragraphSeparator, nextLine) + * Note that this doesn't actually wrap the input in double quotes. + */ + function escapeString(s: string): string; + function escapeNonAsciiCharacters(s: string): string; + interface EmitTextWriter { + write(s: string): void; + writeTextOfNode(sourceFile: SourceFile, node: Node): void; + writeLine(): void; + increaseIndent(): void; + decreaseIndent(): void; + getText(): string; + rawWrite(s: string): void; + writeLiteral(s: string): void; + getTextPos(): number; + getLine(): number; + getColumn(): number; + getIndent(): number; + } + function getIndentString(level: number): string; + function getIndentSize(): number; + function createTextWriter(newLine: String): EmitTextWriter; + function getOwnEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost, extension: string): string; + function getSourceFilePathInNewDir(sourceFile: SourceFile, host: EmitHost, newDirPath: string): string; + function writeFile(host: EmitHost, diagnostics: Diagnostic[], fileName: string, data: string, writeByteOrderMark: boolean): void; + function getLineOfLocalPosition(currentSourceFile: SourceFile, pos: number): number; + function getFirstConstructorWithBody(node: ClassLikeDeclaration): ConstructorDeclaration; + function shouldEmitToOwnFile(sourceFile: SourceFile, compilerOptions: CompilerOptions): boolean; + function getAllAccessorDeclarations(declarations: NodeArray, accessor: AccessorDeclaration): { + firstAccessor: AccessorDeclaration; + secondAccessor: AccessorDeclaration; + getAccessor: AccessorDeclaration; + setAccessor: AccessorDeclaration; + }; + function emitNewLineBeforeLeadingComments(currentSourceFile: SourceFile, writer: EmitTextWriter, node: TextRange, leadingComments: CommentRange[]): void; + function emitComments(currentSourceFile: SourceFile, writer: EmitTextWriter, comments: CommentRange[], trailingSeparator: boolean, newLine: string, writeComment: (currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string) => void): void; + function writeCommentRange(currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string): void; + function isSupportedHeritageClauseElement(node: HeritageClauseElement): boolean; + function isRightSideOfQualifiedNameOrPropertyAccess(node: Node): boolean; + function getLocalSymbolForExportDefault(symbol: Symbol): Symbol; } declare module ts { - var optionDeclarations: CommandLineOption[]; - function parseCommandLine(commandLine: string[]): ParsedCommandLine; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; } declare module ts { @@ -282,7 +348,10 @@ declare module ts { function rangeContainsStartEnd(range: TextRange, start: number, end: number): boolean; function rangeOverlapsWithStartEnd(r1: TextRange, start: number, end: number): boolean; function startEndOverlapsWithStartEnd(start1: number, end1: number, start2: number, end2: number): boolean; + function positionBelongsToNode(candidate: Node, position: number, sourceFile: SourceFile): boolean; + function isCompletedNode(n: Node, sourceFile: SourceFile): boolean; function findListItemInfo(node: Node): ListItemInfo; + function hasChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): boolean; function findChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): Node; function findContainingList(node: Node): Node; function getTouchingWord(sourceFile: SourceFile, position: number): Node; @@ -305,9 +374,11 @@ declare module ts { function getNodeModifiers(node: Node): string; function getTypeArgumentOrTypeParameterList(node: Node): NodeArray; function isToken(n: Node): boolean; + function isWord(kind: SyntaxKind): boolean; function isComment(kind: SyntaxKind): boolean; function isPunctuation(kind: SyntaxKind): boolean; function isInsideTemplateLiteral(node: LiteralExpression, position: number): boolean; + function isAccessibilityModifier(kind: SyntaxKind): boolean; function compareDataObjects(dst: any, src: any): boolean; } declare module ts { @@ -318,6 +389,7 @@ declare module ts { function keywordPart(kind: SyntaxKind): SymbolDisplayPart; function punctuationPart(kind: SyntaxKind): SymbolDisplayPart; function operatorPart(kind: SyntaxKind): SymbolDisplayPart; + function textOrKeywordPart(text: string): SymbolDisplayPart; function textPart(text: string): SymbolDisplayPart; function lineBreakPart(): SymbolDisplayPart; function mapToDisplayParts(writeDisplayParts: (writer: DisplayPartsSymbolWriter) => void): SymbolDisplayPart[]; diff --git a/bin/typescript_internal.d.ts b/bin/typescript_internal.d.ts index 3a11b69cb91..6fc997c62d5 100644 --- a/bin/typescript_internal.d.ts +++ b/bin/typescript_internal.d.ts @@ -41,6 +41,10 @@ declare module "typescript" { */ function lastOrUndefined(array: T[]): T; function binarySearch(array: number[], value: number): number; + function reduceLeft(array: T[], f: (a: T, x: T) => T): T; + function reduceLeft(array: T[], f: (a: U, x: T) => U, initial: U): U; + function reduceRight(array: T[], f: (a: T, x: T) => T): T; + function reduceRight(array: T[], f: (a: U, x: T) => U, initial: U): U; function hasProperty(map: Map, key: string): boolean; function getProperty(map: Map, key: string): T; function isEmpty(map: Map): boolean; @@ -49,7 +53,6 @@ declare module "typescript" { function forEachValue(map: Map, callback: (value: T) => U): U; function forEachKey(map: Map, callback: (key: string) => U): U; function lookUp(map: Map, key: string): T; - function mapToArray(map: Map): T[]; function copyMap(source: Map, target: Map): void; /** * Creates a map from the elements of an array. @@ -62,7 +65,7 @@ declare module "typescript" { * index in the array will be the one associated with the produced key. */ function arrayToMap(array: T[], makeKey: (value: T) => string): Map; - var localizedDiagnosticMessages: Map; + let localizedDiagnosticMessages: Map; function getLocaleSpecificMessage(message: string): string; function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage, ...args: any[]): Diagnostic; function createCompilerDiagnostic(message: DiagnosticMessage, ...args: any[]): Diagnostic; @@ -74,7 +77,7 @@ declare module "typescript" { function deduplicateSortedDiagnostics(diagnostics: Diagnostic[]): Diagnostic[]; function normalizeSlashes(path: string): string; function getRootLength(path: string): number; - var directorySeparator: string; + let directorySeparator: string; function normalizePath(path: string): string; function getDirectoryPath(path: string): string; function isUrl(path: string): boolean; @@ -87,12 +90,6 @@ declare module "typescript" { function combinePaths(path1: string, path2: string): string; function fileExtensionIs(path: string, extension: string): boolean; function removeFileExtension(path: string): string; - /** - * Based heavily on the abstract 'Quote' operation from ECMA-262 (24.3.2.2), - * but augmented for a few select characters. - * Note that this doesn't actually wrap the input in double quotes. - */ - function escapeString(s: string): string; function getDefaultLibFileName(options: CompilerOptions): string; interface ObjectAllocator { getNodeConstructor(kind: SyntaxKind): new () => Node; @@ -100,7 +97,7 @@ declare module "typescript" { getTypeConstructor(): new (checker: TypeChecker, flags: TypeFlags) => Type; getSignatureConstructor(): new (checker: TypeChecker) => Signature; } - var objectAllocator: ObjectAllocator; + let objectAllocator: ObjectAllocator; const enum AssertionLevel { None = 0, Normal = 1, @@ -143,6 +140,11 @@ declare module "typescript" { diagnosticMessage?: DiagnosticMessage; isNoDefaultLib?: boolean; } + interface SynthesizedNode extends Node { + leadingCommentRanges?: CommentRange[]; + trailingCommentRanges?: CommentRange[]; + startsOnNewLine: boolean; + } function getDeclarationOfKind(symbol: Symbol, kind: SyntaxKind): Declaration; interface StringSymbolWriter extends SymbolWriter { string(): string; @@ -170,10 +172,14 @@ declare module "typescript" { function getTextOfNode(node: Node): string; function escapeIdentifier(identifier: string): string; function unescapeIdentifier(identifier: string): string; + function makeIdentifierFromModuleName(moduleName: string): string; + function isBlockOrCatchScoped(declaration: Declaration): boolean; + function getEnclosingBlockScopeContainer(node: Node): Node; + function isCatchClauseVariableDeclaration(declaration: Declaration): boolean; function declarationNameToString(name: DeclarationName): string; function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): Diagnostic; function createDiagnosticForNodeFromMessageChain(node: Node, messageChain: DiagnosticMessageChain): Diagnostic; - function getErrorSpanForNode(node: Node): Node; + function getErrorSpanForNode(sourceFile: SourceFile, node: Node): TextSpan; function isExternalModule(file: SourceFile): boolean; function isDeclarationFile(file: SourceFile): boolean; function isConstEnumDeclaration(node: Node): boolean; @@ -181,22 +187,27 @@ declare module "typescript" { function isConst(node: Node): boolean; function isLet(node: Node): boolean; function isPrologueDirective(node: Node): boolean; - function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode?: SourceFile): CommentRange[]; + function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): CommentRange[]; function getJsDocComments(node: Node, sourceFileOfNode: SourceFile): CommentRange[]; - var fullTripleSlashReferencePathRegEx: RegExp; + let fullTripleSlashReferencePathRegEx: RegExp; function forEachReturnStatement(body: Block, visitor: (stmt: ReturnStatement) => T): T; - function isAnyFunction(node: Node): boolean; + function isFunctionLike(node: Node): boolean; function isFunctionBlock(node: Node): boolean; function isObjectLiteralMethod(node: Node): boolean; function getContainingFunction(node: Node): FunctionLikeDeclaration; function getThisContainer(node: Node, includeArrowFunctions: boolean): Node; function getSuperContainer(node: Node, includeFunctions: boolean): Node; function getInvokedExpression(node: CallLikeExpression): Expression; + function nodeCanBeDecorated(node: Node): boolean; + function nodeIsDecorated(node: Node): boolean; + function childIsDecorated(node: Node): boolean; + function nodeOrChildIsDecorated(node: Node): boolean; function isExpression(node: Node): boolean; function isInstantiatedModule(node: ModuleDeclaration, preserveConstEnums: boolean): boolean; - function isExternalModuleImportDeclaration(node: Node): boolean; - function getExternalModuleImportDeclarationExpression(node: Node): Expression; - function isInternalModuleImportDeclaration(node: Node): boolean; + function isExternalModuleImportEqualsDeclaration(node: Node): boolean; + function getExternalModuleImportEqualsDeclarationExpression(node: Node): Expression; + function isInternalModuleImportEqualsDeclaration(node: Node): boolean; + function getExternalModuleName(node: Node): Expression; function hasDotDotDotToken(node: Node): boolean; function hasQuestionToken(node: Node): boolean; function hasRestParameters(s: SignatureDeclaration): boolean; @@ -207,10 +218,12 @@ declare module "typescript" { function isInAmbientContext(node: Node): boolean; function isDeclaration(node: Node): boolean; function isStatement(n: Node): boolean; - function isDeclarationOrFunctionExpressionOrCatchVariableName(name: Node): boolean; - function getClassBaseTypeNode(node: ClassDeclaration): TypeReferenceNode; - function getClassImplementedTypeNodes(node: ClassDeclaration): NodeArray; - function getInterfaceBaseTypeNodes(node: InterfaceDeclaration): NodeArray; + function isClassElement(n: Node): boolean; + function isDeclarationName(name: Node): boolean; + function isAliasSymbolDeclaration(node: Node): boolean; + function getClassExtendsHeritageClauseElement(node: ClassLikeDeclaration): HeritageClauseElement; + function getClassImplementsHeritageClauseElements(node: ClassDeclaration): NodeArray; + function getInterfaceBaseTypeNodes(node: InterfaceDeclaration): NodeArray; function getHeritageClause(clauses: NodeArray, kind: SyntaxKind): HeritageClause; function tryResolveScriptReference(host: ScriptReferenceHost, sourceFile: SourceFile, reference: FileReference): SourceFile; function getAncestor(node: Node, kind: SyntaxKind): Node; @@ -253,7 +266,7 @@ declare module "typescript" { function textChangeRangeNewSpan(range: TextChangeRange): TextSpan; function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange; - var unchangedTextChangeRange: TextChangeRange; + let unchangedTextChangeRange: TextChangeRange; /** * Called to merge all the changes that occurred across several versions of a script snapshot * into a single change. i.e. if a user keeps making successive edits to a script we will @@ -263,11 +276,64 @@ declare module "typescript" { * Vn. */ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; + function nodeStartsNewLexicalEnvironment(n: Node): boolean; + function nodeIsSynthesized(node: Node): boolean; + function createSynthesizedNode(kind: SyntaxKind, startsOnNewLine?: boolean): Node; + /** + * Based heavily on the abstract 'Quote'/'QuoteJSONString' operation from ECMA-262 (24.3.2.2), + * but augmented for a few select characters (e.g. lineSeparator, paragraphSeparator, nextLine) + * Note that this doesn't actually wrap the input in double quotes. + */ + function escapeString(s: string): string; + function escapeNonAsciiCharacters(s: string): string; + interface EmitTextWriter { + write(s: string): void; + writeTextOfNode(sourceFile: SourceFile, node: Node): void; + writeLine(): void; + increaseIndent(): void; + decreaseIndent(): void; + getText(): string; + rawWrite(s: string): void; + writeLiteral(s: string): void; + getTextPos(): number; + getLine(): number; + getColumn(): number; + getIndent(): number; + } + function getIndentString(level: number): string; + function getIndentSize(): number; + function createTextWriter(newLine: String): EmitTextWriter; + function getOwnEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost, extension: string): string; + function getSourceFilePathInNewDir(sourceFile: SourceFile, host: EmitHost, newDirPath: string): string; + function writeFile(host: EmitHost, diagnostics: Diagnostic[], fileName: string, data: string, writeByteOrderMark: boolean): void; + function getLineOfLocalPosition(currentSourceFile: SourceFile, pos: number): number; + function getFirstConstructorWithBody(node: ClassLikeDeclaration): ConstructorDeclaration; + function shouldEmitToOwnFile(sourceFile: SourceFile, compilerOptions: CompilerOptions): boolean; + function getAllAccessorDeclarations(declarations: NodeArray, accessor: AccessorDeclaration): { + firstAccessor: AccessorDeclaration; + secondAccessor: AccessorDeclaration; + getAccessor: AccessorDeclaration; + setAccessor: AccessorDeclaration; + }; + function emitNewLineBeforeLeadingComments(currentSourceFile: SourceFile, writer: EmitTextWriter, node: TextRange, leadingComments: CommentRange[]): void; + function emitComments(currentSourceFile: SourceFile, writer: EmitTextWriter, comments: CommentRange[], trailingSeparator: boolean, newLine: string, writeComment: (currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string) => void): void; + function writeCommentRange(currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string): void; + function isSupportedHeritageClauseElement(node: HeritageClauseElement): boolean; + function isRightSideOfQualifiedNameOrPropertyAccess(node: Node): boolean; + function getLocalSymbolForExportDefault(symbol: Symbol): Symbol; } declare module "typescript" { - var optionDeclarations: CommandLineOption[]; - function parseCommandLine(commandLine: string[]): ParsedCommandLine; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; } declare module "typescript" { @@ -282,7 +348,10 @@ declare module "typescript" { function rangeContainsStartEnd(range: TextRange, start: number, end: number): boolean; function rangeOverlapsWithStartEnd(r1: TextRange, start: number, end: number): boolean; function startEndOverlapsWithStartEnd(start1: number, end1: number, start2: number, end2: number): boolean; + function positionBelongsToNode(candidate: Node, position: number, sourceFile: SourceFile): boolean; + function isCompletedNode(n: Node, sourceFile: SourceFile): boolean; function findListItemInfo(node: Node): ListItemInfo; + function hasChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): boolean; function findChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): Node; function findContainingList(node: Node): Node; function getTouchingWord(sourceFile: SourceFile, position: number): Node; @@ -305,9 +374,11 @@ declare module "typescript" { function getNodeModifiers(node: Node): string; function getTypeArgumentOrTypeParameterList(node: Node): NodeArray; function isToken(n: Node): boolean; + function isWord(kind: SyntaxKind): boolean; function isComment(kind: SyntaxKind): boolean; function isPunctuation(kind: SyntaxKind): boolean; function isInsideTemplateLiteral(node: LiteralExpression, position: number): boolean; + function isAccessibilityModifier(kind: SyntaxKind): boolean; function compareDataObjects(dst: any, src: any): boolean; } declare module "typescript" { @@ -318,6 +389,7 @@ declare module "typescript" { function keywordPart(kind: SyntaxKind): SymbolDisplayPart; function punctuationPart(kind: SyntaxKind): SymbolDisplayPart; function operatorPart(kind: SyntaxKind): SymbolDisplayPart; + function textOrKeywordPart(text: string): SymbolDisplayPart; function textPart(text: string): SymbolDisplayPart; function lineBreakPart(): SymbolDisplayPart; function mapToDisplayParts(writeDisplayParts: (writer: DisplayPartsSymbolWriter) => void): SymbolDisplayPart[]; diff --git a/doc/TypeScript Language Specification (Change Markup).docx b/doc/TypeScript Language Specification (Change Markup).docx index bc996cae590..fd2688234c3 100644 Binary files a/doc/TypeScript Language Specification (Change Markup).docx and b/doc/TypeScript Language Specification (Change Markup).docx differ diff --git a/doc/TypeScript Language Specification.docx b/doc/TypeScript Language Specification.docx index 6858fa905df..62604fa5bc4 100644 Binary files a/doc/TypeScript Language Specification.docx and b/doc/TypeScript Language Specification.docx differ diff --git a/doc/spec.md b/doc/spec.md index 66a622d9e73..cff436d5fc0 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -545,7 +545,7 @@ class CheckingAccount extends BankAccount { } ``` -In this example, the class 'CheckingAccount' *derives* from class 'BankAccount'. The constructor for 'CheckingAccount' calls the constructor for class 'BankAccount' using the 'super' keyword. In the emitted JavaScript code, the prototype of 'CheckingAccount' will chain to the prototype of 'BankingAccount'. +In this example, the class 'CheckingAccount' *derives* from class 'BankAccount'. The constructor for 'CheckingAccount' calls the constructor for class 'BankAccount' using the 'super' keyword. In the emitted JavaScript code, the prototype of 'CheckingAccount' will chain to the prototype of 'BankAccount'. TypeScript classes may also specify static members. Static class members become properties of the class constructor. diff --git a/package.json b/package.json index 9261174b68f..c33f2a93ec1 100644 --- a/package.json +++ b/package.json @@ -38,10 +38,9 @@ "mocha": "latest", "chai": "latest", "browserify": "latest", - "istanbul": "latest", - "codeclimate-test-reporter": "latest" + "istanbul": "latest" }, "scripts": { - "test": "jake generate-code-coverage" + "test": "jake runtests" } } diff --git a/scripts/VSDevMode.ps1 b/scripts/VSDevMode.ps1 index 21cc1f48ac1..47694286edc 100644 --- a/scripts/VSDevMode.ps1 +++ b/scripts/VSDevMode.ps1 @@ -2,7 +2,7 @@ .SYNOPSIS Run this PowerShell script to enable dev mode and/or a custom script for the TypeScript language service, e.g. -PS C:\> .\scripts\VSDevMode.ps1 -enableDevMode -tsScript C:\src\TypeScript\built\local\typescriptServices.js +PS C:\> .\scripts\VSDevMode.ps1 -enableDevMode -tsScript C:\src\TypeScript\built\local\ Note: If you get security errors, try running powershell as an Administrator and with the "-executionPolicy remoteSigned" switch @@ -13,7 +13,7 @@ Set to "12" for Dev12 (VS2013) or "14" (the default) for Dev14 (VS2015) Pass this switch to enable attaching a debugger to the language service .PARAMETER tsScript -The path to a custom language service script to use, e.g. "C:\src\TypeScript\built\local\typescriptServices.js" +The path to a directory containing a custom language service script to use (typescriptServices.js), e.g. "C:\src\TypeScript\built\local\" #> Param( [int]$vsVersion = 14, @@ -37,12 +37,38 @@ if(!(Test-Path $tsRegKey)){ } if($tsScript -ne ""){ - if(!(Test-Path $tsScript)){ - Throw "Could not locate the TypeScript language service script at ${tsScript}" + $tsScriptServices = "${tsScript}\typescriptServices.js" + $tsScriptlib = "${tsScript}\lib.d.ts" + $tsES6Scriptlib = "${tsScript}\lib.es6.d.ts" + + if(!(Test-Path $tsScriptServices)){ + Throw "Could not locate the TypeScript language service script at ${tsScriptServices}" + } + else { + $path = resolve-path ${tsScriptServices} + Set-ItemProperty -path $tsRegKey -name CustomTypeScriptServicesFileLocation -value "${path}" + Write-Host "Enabled custom TypeScript language service at ${path} for Dev${vsVersion}" + } + + if(!(Test-Path $tsScriptlib)){ + Throw "Could not locate the TypeScript default library at ${tsScriptlib}" + } + else { + $path = resolve-path ${tsScriptlib} + Set-ItemProperty -path $tsRegKey -name CustomDefaultLibraryLocation -value "${path}" + Write-Host "Enabled custom TypeScript default library at ${path} for Dev${vsVersion}" + } + + if(!(Test-Path $tsES6Scriptlib)){ + Throw "Could not locate the TypeScript default ES6 library at ${tsES6Scriptlib}" + } + else { + $path = resolve-path ${tsES6Scriptlib} + Set-ItemProperty -path $tsRegKey -name CustomDefaultES6LibraryLocation -value "${path}" + Write-Host "Enabled custom TypeScript default ES6 library at ${path} for Dev${vsVersion}" } - Set-ItemProperty -path $tsRegKey -name CustomTypeScriptServicesFileLocation -value "${tsScript}" - Write-Host "Enabled custom TypeScript language service at ${tsScript} for Dev${vsVersion}" } + if($enableDevMode){ Set-ItemProperty -path $tsRegKey -name EnableDevMode -value 1 Write-Host "Enabled developer mode for Dev${vsVersion}" diff --git a/scripts/processDiagnosticMessages.ts b/scripts/processDiagnosticMessages.ts index 0d32c605fdc..b97e4a2ea54 100644 --- a/scripts/processDiagnosticMessages.ts +++ b/scripts/processDiagnosticMessages.ts @@ -65,8 +65,7 @@ function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, nameMap: ' ' + convertPropertyName(nameMap[name]) + ': { code: ' + diagnosticDetails.code + ', category: DiagnosticCategory.' + diagnosticDetails.category + - ', key: "' + name.replace('"', '\\"') + '"' + - (diagnosticDetails.isEarly ? ', isEarly: true' : '') + + ', key: "' + name.replace(/[\"]/g, '\\"') + '"' + ' },\r\n'; } diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index c26d3369f3f..494570c85c1 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1,7 +1,7 @@ /// module ts { - /* @internal */ export var bindTime = 0; + /* @internal */ export let bindTime = 0; export const enum ModuleInstanceState { NonInstantiated = 0, @@ -25,7 +25,7 @@ module ts { } // 4. other uninstantiated module declarations. else if (node.kind === SyntaxKind.ModuleBlock) { - var state = ModuleInstanceState.NonInstantiated; + let state = ModuleInstanceState.NonInstantiated; forEachChild(node, n => { switch (getModuleInstanceState(n)) { case ModuleInstanceState.NonInstantiated: @@ -52,22 +52,23 @@ module ts { } export function bindSourceFile(file: SourceFile): void { - var start = new Date().getTime(); + let start = new Date().getTime(); bindSourceFileWorker(file); bindTime += new Date().getTime() - start; } function bindSourceFileWorker(file: SourceFile): void { - var parent: Node; - var container: Node; - var blockScopeContainer: Node; - var lastContainer: Node; - var symbolCount = 0; - var Symbol = objectAllocator.getSymbolConstructor(); + let parent: Node; + let container: Node; + let blockScopeContainer: Node; + let lastContainer: Node; + let symbolCount = 0; + let Symbol = objectAllocator.getSymbolConstructor(); if (!file.locals) { file.locals = {}; - container = blockScopeContainer = file; + container = file; + setBlockScopeContainer(file, /*cleanLocals*/ false); bind(file); file.symbolCount = symbolCount; } @@ -77,6 +78,13 @@ module ts { return new Symbol(flags, name); } + function setBlockScopeContainer(node: Node, cleanLocals: boolean) { + blockScopeContainer = node; + if (cleanLocals) { + blockScopeContainer.locals = undefined; + } + } + function addDeclarationToSymbol(symbol: Symbol, node: Declaration, symbolKind: SymbolFlags) { symbol.flags |= symbolKind; if (!symbol.declarations) symbol.declarations = []; @@ -95,7 +103,7 @@ module ts { return '"' + (node.name).text + '"'; } if (node.name.kind === SyntaxKind.ComputedPropertyName) { - var nameExpression = (node.name).expression; + let nameExpression = (node.name).expression; Debug.assert(isWellKnownSymbolSyntactically(nameExpression)); return getPropertyNameForKnownSymbolName((nameExpression).name.text); } @@ -112,6 +120,13 @@ module ts { return "__new"; case SyntaxKind.IndexSignature: return "__index"; + case SyntaxKind.ExportDeclaration: + return "__export"; + case SyntaxKind.ExportAssignment: + return (node).isExportEquals ? "export=" : "default"; + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ClassDeclaration: + return node.flags & NodeFlags.Default ? "default" : undefined; } } @@ -122,9 +137,12 @@ module ts { function declareSymbol(symbols: SymbolTable, parent: Symbol, node: Declaration, includes: SymbolFlags, excludes: SymbolFlags): Symbol { Debug.assert(!hasDynamicName(node)); - var name = getDeclarationName(node); + // The exported symbol for an export default function/class node is always named "default" + let name = node.flags & NodeFlags.Default && parent ? "default" : getDeclarationName(node); + + let symbol: Symbol; if (name !== undefined) { - var symbol = hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); + symbol = hasProperty(symbols, name) ? symbols[name] : (symbols[name] = createSymbol(0, name)); if (symbol.flags & excludes) { if (node.name) { node.name.parent = node; @@ -132,14 +150,14 @@ module ts { // Report errors every position with duplicate declaration // Report errors on previous encountered declarations - var message = symbol.flags & SymbolFlags.BlockScopedVariable + let message = symbol.flags & SymbolFlags.BlockScopedVariable ? Diagnostics.Cannot_redeclare_block_scoped_variable_0 : Diagnostics.Duplicate_identifier_0; forEach(symbol.declarations, declaration => { - file.bindDiagnostics.push(createDiagnosticForNode(declaration.name, message, getDisplayName(declaration))); + file.bindDiagnostics.push(createDiagnosticForNode(declaration.name || declaration, message, getDisplayName(declaration))); }); - file.bindDiagnostics.push(createDiagnosticForNode(node.name, message, getDisplayName(node))); + file.bindDiagnostics.push(createDiagnosticForNode(node.name || node, message, getDisplayName(node))); symbol = createSymbol(0, name); } @@ -150,12 +168,12 @@ module ts { addDeclarationToSymbol(symbol, node, includes); symbol.parent = parent; - if (node.kind === SyntaxKind.ClassDeclaration && symbol.exports) { + if ((node.kind === SyntaxKind.ClassDeclaration || node.kind === SyntaxKind.ClassExpression) && symbol.exports) { // TypeScript 1.0 spec (April 2014): 8.4 // Every class automatically contains a static property member named 'prototype', // the type of which is an instantiation of the class type with type Any supplied as a type argument for each type parameter. // It is an error to explicitly declare a static property member with the name 'prototype'. - var prototypeSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Prototype, "prototype"); + let prototypeSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Prototype, "prototype"); if (hasProperty(symbol.exports, prototypeSymbol.name)) { if (node.name) { node.name.parent = node; @@ -170,17 +188,9 @@ module ts { return symbol; } - function isAmbientContext(node: Node): boolean { - while (node) { - if (node.flags & NodeFlags.Ambient) return true; - node = node.parent; - } - return false; - } - function declareModuleMember(node: Declaration, symbolKind: SymbolFlags, symbolExcludes: SymbolFlags) { - var hasExportModifier = getCombinedNodeFlags(node) & NodeFlags.Export; - if (symbolKind & SymbolFlags.Import) { + let hasExportModifier = getCombinedNodeFlags(node) & NodeFlags.Export; + if (symbolKind & SymbolFlags.Alias) { if (node.kind === SyntaxKind.ExportSpecifier || (node.kind === SyntaxKind.ImportEqualsDeclaration && hasExportModifier)) { declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); } @@ -200,11 +210,11 @@ module ts { // 2. When we checkIdentifier in the checker, we set its resolved symbol to the local symbol, // but return the export symbol (by calling getExportSymbolOfValueSymbolIfExported). That way // when the emitter comes back to it, it knows not to qualify the name if it was found in a containing scope. - if (hasExportModifier || isAmbientContext(container)) { - var exportKind = (symbolKind & SymbolFlags.Value ? SymbolFlags.ExportValue : 0) | + if (hasExportModifier || container.flags & NodeFlags.ExportContext) { + let exportKind = (symbolKind & SymbolFlags.Value ? SymbolFlags.ExportValue : 0) | (symbolKind & SymbolFlags.Type ? SymbolFlags.ExportType : 0) | (symbolKind & SymbolFlags.Namespace ? SymbolFlags.ExportNamespace : 0); - var local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); + let local = declareSymbol(container.locals, undefined, node, exportKind, symbolExcludes); local.exportSymbol = declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); node.localSymbol = local; } @@ -221,9 +231,9 @@ module ts { node.locals = {}; } - var saveParent = parent; - var saveContainer = container; - var savedBlockScopeContainer = blockScopeContainer; + let saveParent = parent; + let saveContainer = container; + let savedBlockScopeContainer = blockScopeContainer; parent = node; if (symbolKind & SymbolFlags.IsContainer) { container = node; @@ -236,7 +246,13 @@ module ts { } if (isBlockScopeContainer) { - blockScopeContainer = node; + // in incremental scenarios we might reuse nodes that already have locals being allocated + // during the bind step these locals should be dropped to prevent using stale data. + // locals should always be dropped unless they were previously initialized by the binder + // these cases are: + // - node has locals (symbolKind & HasLocals) !== 0 + // - node is a source file + setBlockScopeContainer(node, /*cleanLocals*/ (symbolKind & SymbolFlags.HasLocals) === 0 && node.kind !== SyntaxKind.SourceFile); } forEachChild(node, bind); @@ -270,6 +286,7 @@ module ts { case SyntaxKind.ArrowFunction: declareSymbol(container.locals, undefined, node, symbolKind, symbolExcludes); break; + case SyntaxKind.ClassExpression: case SyntaxKind.ClassDeclaration: if (node.flags & NodeFlags.Static) { declareSymbol(container.symbol.exports, container.symbol, node, symbolKind, symbolExcludes); @@ -287,36 +304,62 @@ module ts { bindChildren(node, symbolKind, isBlockScopeContainer); } + function isAmbientContext(node: Node): boolean { + while (node) { + if (node.flags & NodeFlags.Ambient) return true; + node = node.parent; + } + return false; + } + + function hasExportDeclarations(node: ModuleDeclaration | SourceFile): boolean { + var body = node.kind === SyntaxKind.SourceFile ? node : (node).body; + if (body.kind === SyntaxKind.SourceFile || body.kind === SyntaxKind.ModuleBlock) { + for (let stat of (body).statements) { + if (stat.kind === SyntaxKind.ExportDeclaration || stat.kind === SyntaxKind.ExportAssignment) { + return true; + } + } + } + return false; + } + + function setExportContextFlag(node: ModuleDeclaration | SourceFile) { + // A declaration source file or ambient module declaration that contains no export declarations (but possibly regular + // declarations with export modifiers) is an export context in which declarations are implicitly exported. + if (isAmbientContext(node) && !hasExportDeclarations(node)) { + node.flags |= NodeFlags.ExportContext; + } + else { + node.flags &= ~NodeFlags.ExportContext; + } + } + function bindModuleDeclaration(node: ModuleDeclaration) { + setExportContextFlag(node); if (node.name.kind === SyntaxKind.StringLiteral) { bindDeclaration(node, SymbolFlags.ValueModule, SymbolFlags.ValueModuleExcludes, /*isBlockScopeContainer*/ true); } else { - var state = getModuleInstanceState(node); + let state = getModuleInstanceState(node); if (state === ModuleInstanceState.NonInstantiated) { bindDeclaration(node, SymbolFlags.NamespaceModule, SymbolFlags.NamespaceModuleExcludes, /*isBlockScopeContainer*/ true); } else { bindDeclaration(node, SymbolFlags.ValueModule, SymbolFlags.ValueModuleExcludes, /*isBlockScopeContainer*/ true); - if (state === ModuleInstanceState.ConstEnumOnly) { - // mark value module as module that contains only enums - node.symbol.constEnumOnlyModule = true; + let currentModuleIsConstEnumOnly = state === ModuleInstanceState.ConstEnumOnly; + if (node.symbol.constEnumOnlyModule === undefined) { + // non-merged case - use the current state + node.symbol.constEnumOnlyModule = currentModuleIsConstEnumOnly; } - else if (node.symbol.constEnumOnlyModule) { - // const only value module was merged with instantiated module - reset flag - node.symbol.constEnumOnlyModule = false; + else { + // merged case: module is const enum only if all its pieces are non-instantiated or const enum + node.symbol.constEnumOnlyModule = node.symbol.constEnumOnlyModule && currentModuleIsConstEnumOnly; } } } } - function bindExportDeclaration(node: ExportDeclaration) { - if (!node.exportClause) { - ((container).exportStars || ((container).exportStars = [])).push(node); - } - bindChildren(node, 0, /*isBlockScopeContainer*/ false); - } - function bindFunctionOrConstructorType(node: SignatureDeclaration) { // For a given function symbol "<...>(...) => T" we want to generate a symbol identical // to the one we would get for: { <...>(...): T } @@ -325,50 +368,48 @@ module ts { // symbol as its sole member. To the rest of the system, this symbol will be indistinguishable // from an actual type literal symbol you would have gotten had you used the long form. - var symbol = createSymbol(SymbolFlags.Signature, getDeclarationName(node)); + let symbol = createSymbol(SymbolFlags.Signature, getDeclarationName(node)); addDeclarationToSymbol(symbol, node, SymbolFlags.Signature); bindChildren(node, SymbolFlags.Signature, /*isBlockScopeContainer:*/ false); - var typeLiteralSymbol = createSymbol(SymbolFlags.TypeLiteral, "__type"); + let typeLiteralSymbol = createSymbol(SymbolFlags.TypeLiteral, "__type"); addDeclarationToSymbol(typeLiteralSymbol, node, SymbolFlags.TypeLiteral); typeLiteralSymbol.members = {}; typeLiteralSymbol.members[node.kind === SyntaxKind.FunctionType ? "__call" : "__new"] = symbol } function bindAnonymousDeclaration(node: Declaration, symbolKind: SymbolFlags, name: string, isBlockScopeContainer: boolean) { - var symbol = createSymbol(symbolKind, name); + let symbol = createSymbol(symbolKind, name); addDeclarationToSymbol(symbol, node, symbolKind); bindChildren(node, symbolKind, isBlockScopeContainer); } function bindCatchVariableDeclaration(node: CatchClause) { - var symbol = createSymbol(SymbolFlags.FunctionScopedVariable, node.name.text || "__missing"); - addDeclarationToSymbol(symbol, node, SymbolFlags.FunctionScopedVariable); - var saveParent = parent; - var savedBlockScopeContainer = blockScopeContainer; - parent = blockScopeContainer = node; - forEachChild(node, bind); - parent = saveParent; - blockScopeContainer = savedBlockScopeContainer; + bindChildren(node, /*symbolKind:*/ 0, /*isBlockScopeContainer:*/ true); } - function bindBlockScopedVariableDeclaration(node: Declaration) { + function bindBlockScopedDeclaration(node: Declaration, symbolKind: SymbolFlags, symbolExcludes: SymbolFlags) { switch (blockScopeContainer.kind) { case SyntaxKind.ModuleDeclaration: - declareModuleMember(node, SymbolFlags.BlockScopedVariable, SymbolFlags.BlockScopedVariableExcludes); + declareModuleMember(node, symbolKind, symbolExcludes); break; case SyntaxKind.SourceFile: if (isExternalModule(container)) { - declareModuleMember(node, SymbolFlags.BlockScopedVariable, SymbolFlags.BlockScopedVariableExcludes); + declareModuleMember(node, symbolKind, symbolExcludes); break; } + // fall through. default: if (!blockScopeContainer.locals) { blockScopeContainer.locals = {}; } - declareSymbol(blockScopeContainer.locals, undefined, node, SymbolFlags.BlockScopedVariable, SymbolFlags.BlockScopedVariableExcludes); + declareSymbol(blockScopeContainer.locals, undefined, node, symbolKind, symbolExcludes); } - bindChildren(node, SymbolFlags.BlockScopedVariable, /*isBlockScopeContainer*/ false); + bindChildren(node, symbolKind, /*isBlockScopeContainer*/ false); + } + + function bindBlockScopedVariableDeclaration(node: Declaration) { + bindBlockScopedDeclaration(node, SymbolFlags.BlockScopedVariable, SymbolFlags.BlockScopedVariableExcludes); } function getDestructuringParameterName(node: Declaration) { @@ -377,6 +418,7 @@ module ts { function bind(node: Node) { node.parent = parent; + switch (node.kind) { case SyntaxKind.TypeParameter: bindDeclaration(node, SymbolFlags.TypeParameter, SymbolFlags.TypeParameterExcludes, /*isBlockScopeContainer*/ false); @@ -389,7 +431,7 @@ module ts { if (isBindingPattern((node).name)) { bindChildren(node, 0, /*isBlockScopeContainer*/ false); } - else if (getCombinedNodeFlags(node) & NodeFlags.BlockScoped) { + else if (isBlockOrCatchScoped(node)) { bindBlockScopedVariableDeclaration(node); } else { @@ -449,11 +491,14 @@ module ts { case SyntaxKind.ArrowFunction: bindAnonymousDeclaration(node, SymbolFlags.Function, "__function", /*isBlockScopeContainer*/ true); break; + case SyntaxKind.ClassExpression: + bindAnonymousDeclaration(node, SymbolFlags.Class, "__class", /*isBlockScopeContainer*/ false); + break; case SyntaxKind.CatchClause: bindCatchVariableDeclaration(node); break; case SyntaxKind.ClassDeclaration: - bindDeclaration(node, SymbolFlags.Class, SymbolFlags.ClassExcludes, /*isBlockScopeContainer*/ false); + bindBlockScopedDeclaration(node, SymbolFlags.Class, SymbolFlags.ClassExcludes); break; case SyntaxKind.InterfaceDeclaration: bindDeclaration(node, SymbolFlags.Interface, SymbolFlags.InterfaceExcludes, /*isBlockScopeContainer*/ false); @@ -476,20 +521,36 @@ module ts { case SyntaxKind.NamespaceImport: case SyntaxKind.ImportSpecifier: case SyntaxKind.ExportSpecifier: - bindDeclaration(node, SymbolFlags.Import, SymbolFlags.ImportExcludes, /*isBlockScopeContainer*/ false); - break; - case SyntaxKind.ExportDeclaration: - bindExportDeclaration(node); + bindDeclaration(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes, /*isBlockScopeContainer*/ false); break; case SyntaxKind.ImportClause: if ((node).name) { - bindDeclaration(node, SymbolFlags.Import, SymbolFlags.ImportExcludes, /*isBlockScopeContainer*/ false); + bindDeclaration(node, SymbolFlags.Alias, SymbolFlags.AliasExcludes, /*isBlockScopeContainer*/ false); } else { bindChildren(node, 0, /*isBlockScopeContainer*/ false); } break; + case SyntaxKind.ExportDeclaration: + if (!(node).exportClause) { + // All export * declarations are collected in an __export symbol + declareSymbol(container.symbol.exports, container.symbol, node, SymbolFlags.ExportStar, 0); + } + bindChildren(node, 0, /*isBlockScopeContainer*/ false); + break; + case SyntaxKind.ExportAssignment: + if ((node).expression && (node).expression.kind === SyntaxKind.Identifier) { + // An export default clause with an identifier exports all meanings of that identifier + declareSymbol(container.symbol.exports, container.symbol, node, SymbolFlags.Alias, SymbolFlags.PropertyExcludes | SymbolFlags.AliasExcludes); + } + else { + // An export default clause with an expression exports a value + declareSymbol(container.symbol.exports, container.symbol, node, SymbolFlags.Property, SymbolFlags.PropertyExcludes | SymbolFlags.AliasExcludes); + } + bindChildren(node, 0, /*isBlockScopeContainer*/ false); + break; case SyntaxKind.SourceFile: + setExportContextFlag(node); if (isExternalModule(node)) { bindAnonymousDeclaration(node, SymbolFlags.ValueModule, '"' + removeFileExtension((node).fileName) + '"', /*isBlockScopeContainer*/ true); break; @@ -500,20 +561,20 @@ module ts { // Otherwise this won't be considered as redeclaration of a block scoped local: // function foo() { // let x; - // var x; + // let x; // } - // 'var x' will be placed into the function locals and 'let x' - into the locals of the block - bindChildren(node, 0, /*isBlockScopeContainer*/ !isAnyFunction(node.parent)); + // 'let x' will be placed into the function locals and 'let x' - into the locals of the block + bindChildren(node, 0, /*isBlockScopeContainer*/ !isFunctionLike(node.parent)); break; case SyntaxKind.CatchClause: case SyntaxKind.ForStatement: case SyntaxKind.ForInStatement: case SyntaxKind.ForOfStatement: - case SyntaxKind.SwitchStatement: + case SyntaxKind.CaseBlock: bindChildren(node, 0, /*isBlockScopeContainer*/ true); break; default: - var saveParent = parent; + let saveParent = parent; parent = node; forEachChild(node, bind); parent = saveParent; @@ -532,9 +593,9 @@ module ts { // containing class. if (node.flags & NodeFlags.AccessibilityModifier && node.parent.kind === SyntaxKind.Constructor && - node.parent.parent.kind === SyntaxKind.ClassDeclaration) { + (node.parent.parent.kind === SyntaxKind.ClassDeclaration || node.parent.parent.kind === SyntaxKind.ClassExpression)) { - var classDeclaration = node.parent.parent; + let classDeclaration = node.parent.parent; declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, SymbolFlags.Property, SymbolFlags.PropertyExcludes); } } diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index acb90c4767b..58e3a71a680 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1,28 +1,46 @@ /// module ts { - var nextSymbolId = 1; - var nextNodeId = 1; - var nextMergeId = 1; + let nextSymbolId = 1; + let nextNodeId = 1; + let nextMergeId = 1; - /* @internal */ export var checkTime = 0; + // @internal + export function getNodeId(node: Node): number { + if (!node.id) node.id = nextNodeId++; + return node.id; + } + + /* @internal */ export let checkTime = 0; + + /* @internal */ + export function getSymbolId(symbol: Symbol): number { + if (!symbol.id) { + symbol.id = nextSymbolId++; + } + + return symbol.id; + } export function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker { - var Symbol = objectAllocator.getSymbolConstructor(); - var Type = objectAllocator.getTypeConstructor(); - var Signature = objectAllocator.getSignatureConstructor(); + let Symbol = objectAllocator.getSymbolConstructor(); + let Type = objectAllocator.getTypeConstructor(); + let Signature = objectAllocator.getSignatureConstructor(); - var typeCount = 0; + let typeCount = 0; - var emptyArray: any[] = []; - var emptySymbols: SymbolTable = {}; + let emptyArray: any[] = []; + let emptySymbols: SymbolTable = {}; - var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || ScriptTarget.ES3; + let compilerOptions = host.getCompilerOptions(); + let languageVersion = compilerOptions.target || ScriptTarget.ES3; - var emitResolver = createResolver(); + let emitResolver = createResolver(); - var checker: TypeChecker = { + let undefinedSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "undefined"); + let argumentsSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "arguments"); + + let checker: TypeChecker = { getNodeCount: () => sum(host.getSourceFiles(), "nodeCount"), getIdentifierCount: () => sum(host.getSourceFiles(), "identifierCount"), getSymbolCount: () => sum(host.getSourceFiles(), "symbolCount"), @@ -54,64 +72,69 @@ module ts { isValidPropertyAccess, getSignatureFromDeclaration, isImplementationOfOverload, - getAliasedSymbol: resolveImport, + getAliasedSymbol: resolveAlias, getEmitResolver, + getExportsOfModule: getExportsOfModuleAsArray, }; - var undefinedSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "undefined"); - var argumentsSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "arguments"); - var unknownSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "unknown"); - var resolvingSymbol = createSymbol(SymbolFlags.Transient, "__resolving__"); + let unknownSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "unknown"); + let resolvingSymbol = createSymbol(SymbolFlags.Transient, "__resolving__"); - var anyType = createIntrinsicType(TypeFlags.Any, "any"); - var stringType = createIntrinsicType(TypeFlags.String, "string"); - var numberType = createIntrinsicType(TypeFlags.Number, "number"); - var booleanType = createIntrinsicType(TypeFlags.Boolean, "boolean"); - var esSymbolType = createIntrinsicType(TypeFlags.ESSymbol, "symbol"); - var voidType = createIntrinsicType(TypeFlags.Void, "void"); - var undefinedType = createIntrinsicType(TypeFlags.Undefined | TypeFlags.ContainsUndefinedOrNull, "undefined"); - var nullType = createIntrinsicType(TypeFlags.Null | TypeFlags.ContainsUndefinedOrNull, "null"); - var unknownType = createIntrinsicType(TypeFlags.Any, "unknown"); - var resolvingType = createIntrinsicType(TypeFlags.Any, "__resolving__"); + let anyType = createIntrinsicType(TypeFlags.Any, "any"); + let stringType = createIntrinsicType(TypeFlags.String, "string"); + let numberType = createIntrinsicType(TypeFlags.Number, "number"); + let booleanType = createIntrinsicType(TypeFlags.Boolean, "boolean"); + let esSymbolType = createIntrinsicType(TypeFlags.ESSymbol, "symbol"); + let voidType = createIntrinsicType(TypeFlags.Void, "void"); + let undefinedType = createIntrinsicType(TypeFlags.Undefined | TypeFlags.ContainsUndefinedOrNull, "undefined"); + let nullType = createIntrinsicType(TypeFlags.Null | TypeFlags.ContainsUndefinedOrNull, "null"); + let unknownType = createIntrinsicType(TypeFlags.Any, "unknown"); + let resolvingType = createIntrinsicType(TypeFlags.Any, "__resolving__"); - var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var inferenceFailureType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + let emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + let anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + let noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + + let anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); + let unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); + let globals: SymbolTable = {}; - var globals: SymbolTable = {}; + let globalArraySymbol: Symbol; + let globalESSymbolConstructorSymbol: Symbol; - var globalArraySymbol: Symbol; - var globalESSymbolConstructorSymbol: Symbol; + let globalObjectType: ObjectType; + let globalFunctionType: ObjectType; + let globalArrayType: ObjectType; + let globalStringType: ObjectType; + let globalNumberType: ObjectType; + let globalBooleanType: ObjectType; + let globalRegExpType: ObjectType; + let globalTemplateStringsArrayType: ObjectType; + let globalESSymbolType: ObjectType; + let globalIterableType: ObjectType; - var globalObjectType: ObjectType; - var globalFunctionType: ObjectType; - var globalArrayType: ObjectType; - var globalStringType: ObjectType; - var globalNumberType: ObjectType; - var globalBooleanType: ObjectType; - var globalRegExpType: ObjectType; - var globalTemplateStringsArrayType: ObjectType; - var globalESSymbolType: ObjectType; + let anyArrayType: Type; + let globalTypedPropertyDescriptorType: ObjectType; + let globalClassDecoratorType: ObjectType; + let globalParameterDecoratorType: ObjectType; + let globalPropertyDecoratorType: ObjectType; + let globalMethodDecoratorType: ObjectType; + + let tupleTypes: Map = {}; + let unionTypes: Map = {}; + let stringLiteralTypes: Map = {}; + let emitExtends = false; + let emitDecorate = false; - var anyArrayType: Type; + let mergedSymbols: Symbol[] = []; + let symbolLinks: SymbolLinks[] = []; + let nodeLinks: NodeLinks[] = []; + let potentialThisCollisions: Node[] = []; - var tupleTypes: Map = {}; - var unionTypes: Map = {}; - var stringLiteralTypes: Map = {}; - var emitExtends = false; + let diagnostics = createDiagnosticCollection(); - var mergedSymbols: Symbol[] = []; - var symbolLinks: SymbolLinks[] = []; - var nodeLinks: NodeLinks[] = []; - var potentialThisCollisions: Node[] = []; - - var diagnostics = createDiagnosticCollection(); - - var primitiveTypeInfo: Map<{ type: Type; flags: TypeFlags }> = { + let primitiveTypeInfo: Map<{ type: Type; flags: TypeFlags }> = { "string": { type: stringType, flags: TypeFlags.StringLike @@ -138,7 +161,7 @@ module ts { } function error(location: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): void { - var diagnostic = location + let diagnostic = location ? createDiagnosticForNode(location, message, arg0, arg1, arg2) : createCompilerDiagnostic(message, arg0, arg1, arg2); diagnostics.add(diagnostic); @@ -149,7 +172,7 @@ module ts { } function getExcludedSymbolFlags(flags: SymbolFlags): SymbolFlags { - var result: SymbolFlags = 0; + let result: SymbolFlags = 0; if (flags & SymbolFlags.BlockScopedVariable) result |= SymbolFlags.BlockScopedVariableExcludes; if (flags & SymbolFlags.FunctionScopedVariable) result |= SymbolFlags.FunctionScopedVariableExcludes; if (flags & SymbolFlags.Property) result |= SymbolFlags.PropertyExcludes; @@ -165,7 +188,7 @@ module ts { if (flags & SymbolFlags.SetAccessor) result |= SymbolFlags.SetAccessorExcludes; if (flags & SymbolFlags.TypeParameter) result |= SymbolFlags.TypeParameterExcludes; if (flags & SymbolFlags.TypeAlias) result |= SymbolFlags.TypeAliasExcludes; - if (flags & SymbolFlags.Import) result |= SymbolFlags.ImportExcludes; + if (flags & SymbolFlags.Alias) result |= SymbolFlags.AliasExcludes; return result; } @@ -175,7 +198,7 @@ module ts { } function cloneSymbol(symbol: Symbol): Symbol { - var result = createSymbol(symbol.flags | SymbolFlags.Merged, symbol.name); + let result = createSymbol(symbol.flags | SymbolFlags.Merged, symbol.name); result.declarations = symbol.declarations.slice(0); result.parent = symbol.parent; if (symbol.valueDeclaration) result.valueDeclaration = symbol.valueDeclaration; @@ -208,7 +231,7 @@ module ts { recordMergedSymbol(target, source); } else { - var message = target.flags & SymbolFlags.BlockScopedVariable || source.flags & SymbolFlags.BlockScopedVariable + let message = target.flags & SymbolFlags.BlockScopedVariable || source.flags & SymbolFlags.BlockScopedVariable ? Diagnostics.Cannot_redeclare_block_scoped_variable_0 : Diagnostics.Duplicate_identifier_0; forEach(source.declarations, node => { error(node.name ? node.name : node, message, symbolToString(source)); @@ -220,8 +243,8 @@ module ts { } function cloneSymbolTable(symbolTable: SymbolTable): SymbolTable { - var result: SymbolTable = {}; - for (var id in symbolTable) { + let result: SymbolTable = {}; + for (let id in symbolTable) { if (hasProperty(symbolTable, id)) { result[id] = symbolTable[id]; } @@ -230,13 +253,13 @@ module ts { } function mergeSymbolTable(target: SymbolTable, source: SymbolTable) { - for (var id in source) { + for (let id in source) { if (hasProperty(source, id)) { if (!hasProperty(target, id)) { target[id] = source[id]; } else { - var symbol = target[id]; + let symbol = target[id]; if (!(symbol.flags & SymbolFlags.Merged)) { target[id] = symbol = cloneSymbol(symbol); } @@ -246,23 +269,15 @@ module ts { } } - function extendSymbolTable(target: SymbolTable, source: SymbolTable) { - for (var id in source) { - if (!hasProperty(target, id)) { - target[id] = source[id]; - } - } - } - function getSymbolLinks(symbol: Symbol): SymbolLinks { if (symbol.flags & SymbolFlags.Transient) return symbol; - if (!symbol.id) symbol.id = nextSymbolId++; - return symbolLinks[symbol.id] || (symbolLinks[symbol.id] = {}); + var id = getSymbolId(symbol); + return symbolLinks[id] || (symbolLinks[id] = {}); } function getNodeLinks(node: Node): NodeLinks { - if (!node.id) node.id = nextNodeId++; - return nodeLinks[node.id] || (nodeLinks[node.id] = {}); + let nodeId = getNodeId(node); + return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node: Node): SourceFile { @@ -275,29 +290,26 @@ module ts { function getSymbol(symbols: SymbolTable, name: string, meaning: SymbolFlags): Symbol { if (meaning && hasProperty(symbols, name)) { - var symbol = symbols[name]; + let symbol = symbols[name]; Debug.assert((symbol.flags & SymbolFlags.Instantiated) === 0, "Should never get an instantiated symbol here."); if (symbol.flags & meaning) { return symbol; } - - if (symbol.flags & SymbolFlags.Import) { - var target = resolveImport(symbol); - // unknown symbol will mean that there were reported error during import resolution - // treat it as positive answer to avoid cascading errors + if (symbol.flags & SymbolFlags.Alias) { + let target = resolveAlias(symbol); + // Unknown symbol means an error occurred in alias resolution, treat it as positive answer to avoid cascading errors if (target === unknownSymbol || target.flags & meaning) { return symbol; } } } - // return undefined if we can't find a symbol. } /** Returns true if node1 is defined before node 2**/ function isDefinedBefore(node1: Node, node2: Node): boolean { - var file1 = getSourceFileOfNode(node1); - var file2 = getSourceFileOfNode(node2); + let file1 = getSourceFileOfNode(node1); + let file2 = getSourceFileOfNode(node2); if (file1 === file2) { return node1.pos <= node2.pos; } @@ -306,7 +318,7 @@ module ts { return true; } - var sourceFiles = host.getSourceFiles(); + let sourceFiles = host.getSourceFiles(); return sourceFiles.indexOf(file1) <= sourceFiles.indexOf(file2); } @@ -314,10 +326,11 @@ module ts { // the nameNotFoundMessage argument is not undefined. Returns the resolved symbol, or undefined if no symbol with // the given name can be found. function resolveName(location: Node, name: string, meaning: SymbolFlags, nameNotFoundMessage: DiagnosticMessage, nameArg: string | Identifier): Symbol { - var result: Symbol; - var lastLocation: Node; - var propertyWithInvalidInitializer: Node; - var errorLocation = location; + let result: Symbol; + let lastLocation: Node; + let propertyWithInvalidInitializer: Node; + let errorLocation = location; + let grandparent: Node; loop: while (location) { // Locals of a source file are not in scope (because they get merged into the global symbol table) @@ -331,7 +344,15 @@ module ts { if (!isExternalModule(location)) break; case SyntaxKind.ModuleDeclaration: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & SymbolFlags.ModuleMember)) { - if (!(result.flags & SymbolFlags.Import && getDeclarationOfImportSymbol(result).kind === SyntaxKind.ExportSpecifier)) { + if (result.flags & meaning || !(result.flags & SymbolFlags.Alias && getDeclarationOfAliasSymbol(result).kind === SyntaxKind.ExportSpecifier)) { + break loop; + } + result = undefined; + } + else if (location.kind === SyntaxKind.SourceFile) { + result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & SymbolFlags.ModuleMember); + let localSymbol = getLocalSymbolForExportDefault(result); + if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { break loop; } result = undefined; @@ -345,13 +366,13 @@ module ts { case SyntaxKind.PropertyDeclaration: case SyntaxKind.PropertySignature: // TypeScript 1.0 spec (April 2014): 8.4.1 - // Initializer expressions for instance member variables are evaluated in the scope - // of the class constructor body but are not permitted to reference parameters or - // local variables of the constructor. This effectively means that entities from outer scopes - // by the same name as a constructor parameter or local variable are inaccessible + // Initializer expressions for instance member variables are evaluated in the scope + // of the class constructor body but are not permitted to reference parameters or + // local variables of the constructor. This effectively means that entities from outer scopes + // by the same name as a constructor parameter or local variable are inaccessible // in initializer expressions for instance member variables. if (location.parent.kind === SyntaxKind.ClassDeclaration && !(location.flags & NodeFlags.Static)) { - var ctor = findConstructorDeclaration(location.parent); + let ctor = findConstructorDeclaration(location.parent); if (ctor && ctor.locals) { if (getSymbol(ctor.locals, name, meaning & SymbolFlags.Value)) { // Remember the property node, it will be used later to report appropriate error @@ -383,7 +404,7 @@ module ts { // } // case SyntaxKind.ComputedPropertyName: - var grandparent = location.parent.parent; + grandparent = location.parent.parent; if (grandparent.kind === SyntaxKind.ClassDeclaration || grandparent.kind === SyntaxKind.InterfaceDeclaration) { // A reference to this grandparent's type parameters would be an error if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & SymbolFlags.Type)) { @@ -409,19 +430,41 @@ module ts { result = argumentsSymbol; break loop; } - var id = (location).name; - if (id && name === id.text) { + let functionName = (location).name; + if (functionName && name === functionName.text) { result = location.symbol; break loop; } break; - case SyntaxKind.CatchClause: - var id = (location).name; - if (name === id.text) { + case SyntaxKind.ClassExpression: + let className = (location).name; + if (className && name === className.text) { result = location.symbol; break loop; } break; + case SyntaxKind.Decorator: + // Decorators are resolved at the class declaration. Resolving at the parameter + // or member would result in looking up locals in the method. + // + // function y() {} + // class C { + // method(@y x, y) {} // <-- decorator y should be resolved at the class declaration, not the parameter. + // } + // + if (location.parent && location.parent.kind === SyntaxKind.Parameter) { + location = location.parent; + } + // + // function y() {} + // class C { + // @y method(x, y) {} // <-- decorator y should be resolved at the class declaration, not the method. + // } + // + if (location.parent && isClassElement(location.parent)) { + location = location.parent; + } + break; } lastLocation = location; location = location.parent; @@ -443,70 +486,186 @@ module ts { if (propertyWithInvalidInitializer) { // We have a match, but the reference occurred within a property initializer and the identifier also binds // to a local variable in the constructor where the code will be emitted. - var propertyName = (propertyWithInvalidInitializer).name; + let propertyName = (propertyWithInvalidInitializer).name; error(errorLocation, Diagnostics.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor, declarationNameToString(propertyName), typeof nameArg === "string" ? nameArg : declarationNameToString(nameArg)); return undefined; } if (result.flags & SymbolFlags.BlockScopedVariable) { - // Block-scoped variables cannot be used before their definition - var declaration = forEach(result.declarations, d => getCombinedNodeFlags(d) & NodeFlags.BlockScoped ? d : undefined); - Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isDefinedBefore(declaration, errorLocation)) { - error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationNameToString(declaration.name)); - } + checkResolvedBlockScopedVariable(result, errorLocation); } } return result; } - function isImportSymbolDeclaration(node: Node): boolean { - return node.kind === SyntaxKind.ImportEqualsDeclaration || - node.kind === SyntaxKind.ImportClause && !!(node).name || - node.kind === SyntaxKind.NamespaceImport || - node.kind === SyntaxKind.ImportSpecifier || - node.kind === SyntaxKind.ExportSpecifier; + function checkResolvedBlockScopedVariable(result: Symbol, errorLocation: Node): void { + Debug.assert((result.flags & SymbolFlags.BlockScopedVariable) !== 0) + // Block-scoped variables cannot be used before their definition + let declaration = forEach(result.declarations, d => isBlockOrCatchScoped(d) ? d : undefined); + + Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); + + // first check if usage is lexically located after the declaration + let isUsedBeforeDeclaration = !isDefinedBefore(declaration, errorLocation); + if (!isUsedBeforeDeclaration) { + // lexical check succeeded however code still can be illegal. + // - block scoped variables cannot be used in its initializers + // let x = x; // illegal but usage is lexically after definition + // - in ForIn/ForOf statements variable cannot be contained in expression part + // for (let x in x) + // for (let x of x) + + // climb up to the variable declaration skipping binding patterns + let variableDeclaration = getAncestor(declaration, SyntaxKind.VariableDeclaration); + let container = getEnclosingBlockScopeContainer(variableDeclaration); + + if (variableDeclaration.parent.parent.kind === SyntaxKind.VariableStatement || + variableDeclaration.parent.parent.kind === SyntaxKind.ForStatement) { + // variable statement/for statement case, + // use site should not be inside variable declaration (initializer of declaration or binding element) + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, variableDeclaration, container); + } + else if (variableDeclaration.parent.parent.kind === SyntaxKind.ForOfStatement || + variableDeclaration.parent.parent.kind === SyntaxKind.ForInStatement) { + // ForIn/ForOf case - use site should not be used in expression part + let expression = (variableDeclaration.parent.parent).expression; + isUsedBeforeDeclaration = isSameScopeDescendentOf(errorLocation, expression, container); + } + } + if (isUsedBeforeDeclaration) { + error(errorLocation, Diagnostics.Block_scoped_variable_0_used_before_its_declaration, declarationNameToString(declaration.name)); + } } - function getDeclarationOfImportSymbol(symbol: Symbol): Declaration { - return forEach(symbol.declarations, d => isImportSymbolDeclaration(d) ? d : undefined); + /* Starting from 'initial' node walk up the parent chain until 'stopAt' node is reached. + * If at any point current node is equal to 'parent' node - return true. + * Return false if 'stopAt' node is reached or isFunctionLike(current) === true. + */ + function isSameScopeDescendentOf(initial: Node, parent: Node, stopAt: Node): boolean { + if (!parent) { + return false; + } + for (let current = initial; current && current !== stopAt && !isFunctionLike(current); current = current.parent) { + if (current === parent) { + return true; + } + } + return false; + } + + function getAnyImportSyntax(node: Node): AnyImportSyntax { + if (isAliasSymbolDeclaration(node)) { + if (node.kind === SyntaxKind.ImportEqualsDeclaration) { + return node; + } + + while (node && node.kind !== SyntaxKind.ImportDeclaration) { + node = node.parent; + } + return node; + } + } + + function getDeclarationOfAliasSymbol(symbol: Symbol): Declaration { + return forEach(symbol.declarations, d => isAliasSymbolDeclaration(d) ? d : undefined); } function getTargetOfImportEqualsDeclaration(node: ImportEqualsDeclaration): Symbol { if (node.moduleReference.kind === SyntaxKind.ExternalModuleReference) { - var moduleSymbol = resolveExternalModuleName(node, getExternalModuleImportEqualsDeclarationExpression(node)); - var exportAssignmentSymbol = moduleSymbol && getResolvedExportAssignmentSymbol(moduleSymbol); - return exportAssignmentSymbol || moduleSymbol; + return resolveExternalModuleSymbol(resolveExternalModuleName(node, getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); } function getTargetOfImportClause(node: ImportClause): Symbol { - var moduleSymbol = resolveExternalModuleName(node, (node.parent).moduleSpecifier); + let moduleSymbol = resolveExternalModuleName(node, (node.parent).moduleSpecifier); if (moduleSymbol) { - var exportAssignmentSymbol = getResolvedExportAssignmentSymbol(moduleSymbol); - if (!exportAssignmentSymbol) { - error(node.name, Diagnostics.External_module_0_has_no_default_export_or_export_assignment, symbolToString(moduleSymbol)); + let exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); + if (!exportDefaultSymbol) { + error(node.name, Diagnostics.External_module_0_has_no_default_export, symbolToString(moduleSymbol)); } - return exportAssignmentSymbol; + return exportDefaultSymbol; } } function getTargetOfNamespaceImport(node: NamespaceImport): Symbol { - return resolveExternalModuleName(node, (node.parent.parent).moduleSpecifier); + var moduleSpecifier = (node.parent.parent).moduleSpecifier; + return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); + } + + function getMemberOfModuleVariable(moduleSymbol: Symbol, name: string): Symbol { + if (moduleSymbol.flags & SymbolFlags.Variable) { + let typeAnnotation = (moduleSymbol.valueDeclaration).type; + if (typeAnnotation) { + return getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name); + } + } + } + + // This function creates a synthetic symbol that combines the value side of one symbol with the + // type/namespace side of another symbol. Consider this example: + // + // declare module graphics { + // interface Point { + // x: number; + // y: number; + // } + // } + // declare var graphics: { + // Point: new (x: number, y: number) => graphics.Point; + // } + // declare module "graphics" { + // export = graphics; + // } + // + // An 'import { Point } from "graphics"' needs to create a symbol that combines the value side 'Point' + // property with the type/namespace side interface 'Point'. + function combineValueAndTypeSymbols(valueSymbol: Symbol, typeSymbol: Symbol): Symbol { + if (valueSymbol.flags & (SymbolFlags.Type | SymbolFlags.Namespace)) { + return valueSymbol; + } + let result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.name); + result.declarations = concatenate(valueSymbol.declarations, typeSymbol.declarations); + result.parent = valueSymbol.parent || typeSymbol.parent; + if (valueSymbol.valueDeclaration) result.valueDeclaration = valueSymbol.valueDeclaration; + if (typeSymbol.members) result.members = typeSymbol.members; + if (valueSymbol.exports) result.exports = valueSymbol.exports; + return result; + } + + function getExportOfModule(symbol: Symbol, name: string): Symbol { + if (symbol.flags & SymbolFlags.Module) { + let exports = getExportsOfSymbol(symbol); + if (hasProperty(exports, name)) { + return resolveSymbol(exports[name]); + } + } + } + + function getPropertyOfVariable(symbol: Symbol, name: string): Symbol { + if (symbol.flags & SymbolFlags.Variable) { + var typeAnnotation = (symbol.valueDeclaration).type; + if (typeAnnotation) { + return resolveSymbol(getPropertyOfType(getTypeFromTypeNodeOrHeritageClauseElement(typeAnnotation), name)); + } + } } function getExternalModuleMember(node: ImportDeclaration | ExportDeclaration, specifier: ImportOrExportSpecifier): Symbol { - var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); - if (moduleSymbol) { - var name = specifier.propertyName || specifier.name; + let moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + let targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); + if (targetSymbol) { + let name = specifier.propertyName || specifier.name; if (name.text) { - var symbol = getSymbol(getExportsOfSymbol(moduleSymbol), name.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); + let symbolFromModule = getExportOfModule(targetSymbol, name.text); + let symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text); + let symbol = symbolFromModule && symbolFromVariable ? + combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : + symbolFromModule || symbolFromVariable; if (!symbol) { error(name, Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), declarationNameToString(name)); - return; } - return symbol.flags & (SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace) ? symbol : resolveImport(symbol); + return symbol; } } } @@ -518,10 +677,14 @@ module ts { function getTargetOfExportSpecifier(node: ExportSpecifier): Symbol { return (node.parent.parent).moduleSpecifier ? getExternalModuleMember(node.parent.parent, node) : - resolveEntityName(node, node.propertyName || node.name, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); + resolveEntityName(node.propertyName || node.name, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); } - function getTargetOfImportDeclaration(node: Declaration): Symbol { + function getTargetOfExportAssignment(node: ExportAssignment): Symbol { + return node.expression && resolveEntityName(node.expression, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); + } + + function getTargetOfAliasDeclaration(node: Declaration): Symbol { switch (node.kind) { case SyntaxKind.ImportEqualsDeclaration: return getTargetOfImportEqualsDeclaration(node); @@ -533,16 +696,22 @@ module ts { return getTargetOfImportSpecifier(node); case SyntaxKind.ExportSpecifier: return getTargetOfExportSpecifier(node); + case SyntaxKind.ExportAssignment: + return getTargetOfExportAssignment(node); } } - function resolveImport(symbol: Symbol): Symbol { - Debug.assert((symbol.flags & SymbolFlags.Import) !== 0, "Should only get Imports here."); - var links = getSymbolLinks(symbol); + function resolveSymbol(symbol: Symbol): Symbol { + return symbol && symbol.flags & SymbolFlags.Alias && !(symbol.flags & (SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace)) ? resolveAlias(symbol) : symbol; + } + + function resolveAlias(symbol: Symbol): Symbol { + Debug.assert((symbol.flags & SymbolFlags.Alias) !== 0, "Should only get Alias here."); + let links = getSymbolLinks(symbol); if (!links.target) { links.target = resolvingSymbol; - var node = getDeclarationOfImportSymbol(symbol); - var target = getTargetOfImportDeclaration(node); + let node = getDeclarationOfAliasSymbol(symbol); + let target = getTargetOfAliasDeclaration(node); if (links.target === resolvingSymbol) { links.target = target || unknownSymbol; } @@ -556,6 +725,43 @@ module ts { return links.target; } + function markExportAsReferenced(node: ImportEqualsDeclaration | ExportAssignment | ExportSpecifier) { + let symbol = getSymbolOfNode(node); + let target = resolveAlias(symbol); + if (target) { + let markAlias = + (target === unknownSymbol && compilerOptions.separateCompilation) || + (target !== unknownSymbol && (target.flags & SymbolFlags.Value) && !isConstEnumOrConstEnumOnlyModule(target)); + + if (markAlias) { + markAliasSymbolAsReferenced(symbol); + } + } + } + + // When an alias symbol is referenced, we need to mark the entity it references as referenced and in turn repeat that until + // we reach a non-alias or an exported entity (which is always considered referenced). We do this by checking the target of + // the alias as an expression (which recursively takes us back here if the target references another alias). + function markAliasSymbolAsReferenced(symbol: Symbol) { + let links = getSymbolLinks(symbol); + if (!links.referenced) { + links.referenced = true; + let node = getDeclarationOfAliasSymbol(symbol); + if (node.kind === SyntaxKind.ExportAssignment && (node).expression) { + // export default + checkExpressionCached((node).expression); + } + else if (node.kind === SyntaxKind.ExportSpecifier) { + // export { } or export { as foo } + checkExpressionCached((node).propertyName || (node).name); + } + else if (isInternalModuleImportEqualsDeclaration(node)) { + // import foo = + checkExpressionCached((node).moduleReference); + } + } + } + // This function is only for imports with entity names function getSymbolOfPartOfRightHandSideOfImportEquals(entityName: EntityName, importDeclaration?: ImportEqualsDeclaration): Symbol { if (!importDeclaration) { @@ -573,13 +779,13 @@ module ts { } // Check for case 1 and 3 in the above example if (entityName.kind === SyntaxKind.Identifier || entityName.parent.kind === SyntaxKind.QualifiedName) { - return resolveEntityName(importDeclaration, entityName, SymbolFlags.Namespace); + return resolveEntityName(entityName, SymbolFlags.Namespace); } else { // Case 2 in above example // entityName.kind could be a QualifiedName or a Missing identifier Debug.assert(entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration); - return resolveEntityName(importDeclaration, entityName, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); + return resolveEntityName(entityName, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace); } } @@ -587,31 +793,38 @@ module ts { return symbol.parent ? getFullyQualifiedName(symbol.parent) + "." + symbolToString(symbol) : symbolToString(symbol); } - // Resolves a qualified name and any involved import aliases - function resolveEntityName(location: Node, name: EntityName, meaning: SymbolFlags): Symbol { - if (getFullWidth(name) === 0) { + // Resolves a qualified name and any involved aliases + function resolveEntityName(name: EntityName | Expression, meaning: SymbolFlags): Symbol { + if (nodeIsMissing(name)) { return undefined; } + let symbol: Symbol; if (name.kind === SyntaxKind.Identifier) { - var symbol = resolveName(location,(name).text, meaning, Diagnostics.Cannot_find_name_0, name); + symbol = resolveName(name, (name).text, meaning, Diagnostics.Cannot_find_name_0, name); if (!symbol) { - return; - } - } - else if (name.kind === SyntaxKind.QualifiedName) { - var namespace = resolveEntityName(location,(name).left, SymbolFlags.Namespace); - if (!namespace || namespace === unknownSymbol || getFullWidth((name).right) === 0) return; - var symbol = getSymbol(getExportsOfSymbol(namespace), (name).right.text, meaning); - if (!symbol) { - error(location, Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), - declarationNameToString((name).right)); - return; + return undefined; } } + else if (name.kind === SyntaxKind.QualifiedName || name.kind === SyntaxKind.PropertyAccessExpression) { + let left = name.kind === SyntaxKind.QualifiedName ? (name).left : (name).expression; + let right = name.kind === SyntaxKind.QualifiedName ? (name).right : (name).name; + let namespace = resolveEntityName(left, SymbolFlags.Namespace); + if (!namespace || namespace === unknownSymbol || nodeIsMissing(right)) { + return undefined; + } + symbol = getSymbol(getExportsOfSymbol(namespace), right.text, meaning); + if (!symbol) { + error(right, Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(namespace), declarationNameToString(right)); + return undefined; + } + } + else { + Debug.fail("Unknown entity name kind."); + } Debug.assert((symbol.flags & SymbolFlags.Instantiated) === 0, "Should never get an instantiated symbol here."); - return symbol.flags & meaning ? symbol : resolveImport(symbol); + return symbol.flags & meaning ? symbol : resolveAlias(symbol); } function isExternalModuleNameRelative(moduleName: string): boolean { @@ -625,27 +838,32 @@ module ts { return; } - var moduleReferenceLiteral = moduleReferenceExpression; - var searchPath = getDirectoryPath(getSourceFile(location).fileName); + let moduleReferenceLiteral = moduleReferenceExpression; + let searchPath = getDirectoryPath(getSourceFile(location).fileName); // Module names are escaped in our symbol table. However, string literal values aren't. // Escape the name in the "require(...)" clause to ensure we find the right symbol. - var moduleName = escapeIdentifier(moduleReferenceLiteral.text); + let moduleName = escapeIdentifier(moduleReferenceLiteral.text); if (!moduleName) return; - var isRelative = isExternalModuleNameRelative(moduleName); + let isRelative = isExternalModuleNameRelative(moduleName); if (!isRelative) { - var symbol = getSymbol(globals, '"' + moduleName + '"', SymbolFlags.ValueModule); + let symbol = getSymbol(globals, '"' + moduleName + '"', SymbolFlags.ValueModule); if (symbol) { return symbol; } } + let sourceFile: SourceFile; while (true) { - var fileName = normalizePath(combinePaths(searchPath, moduleName)); - var sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); - if (sourceFile || isRelative) break; - var parentPath = getDirectoryPath(searchPath); - if (parentPath === searchPath) break; + let fileName = normalizePath(combinePaths(searchPath, moduleName)); + sourceFile = host.getSourceFile(fileName + ".ts") || host.getSourceFile(fileName + ".d.ts"); + if (sourceFile || isRelative) { + break; + } + let parentPath = getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } searchPath = parentPath; } if (sourceFile) { @@ -658,108 +876,79 @@ module ts { error(moduleReferenceLiteral, Diagnostics.Cannot_find_external_module_0, moduleName); } - function getResolvedExportAssignmentSymbol(moduleSymbol: Symbol): Symbol { - var symbol = getExportAssignmentSymbol(moduleSymbol); - if (symbol) { - if (symbol.flags & (SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace)) { - return symbol; - } - if (symbol.flags & SymbolFlags.Import) { - return resolveImport(symbol); - } + // An external module with an 'export =' declaration resolves to the target of the 'export =' declaration, + // and an external module with no 'export =' declaration resolves to the module itself. + function resolveExternalModuleSymbol(moduleSymbol: Symbol): Symbol { + return moduleSymbol && resolveSymbol(moduleSymbol.exports["export="]) || moduleSymbol; + } + + // An external module with an 'export =' declaration may be referenced as an ES6 module provided the 'export =' + // references a symbol that is at least declared as a module or a variable. The target of the 'export =' may + // combine other declarations with the module or variable (e.g. a class/module, function/module, interface/variable). + function resolveESModuleSymbol(moduleSymbol: Symbol, moduleReferenceExpression: Expression): Symbol { + let symbol = resolveExternalModuleSymbol(moduleSymbol); + if (symbol && !(symbol.flags & (SymbolFlags.Module | SymbolFlags.Variable))) { + error(moduleReferenceExpression, Diagnostics.External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); + symbol = undefined; } + return symbol; } - function getExportAssignmentSymbol(symbol: Symbol): Symbol { - checkTypeOfExportAssignmentSymbol(symbol); - return getSymbolLinks(symbol).exportAssignmentSymbol; + function getExportAssignmentSymbol(moduleSymbol: Symbol): Symbol { + return moduleSymbol.exports["export="]; } - function checkTypeOfExportAssignmentSymbol(containerSymbol: Symbol): void { - var symbolLinks = getSymbolLinks(containerSymbol); - if (!symbolLinks.exportAssignmentChecked) { - var exportInformation = collectExportInformationForSourceFileOrModule(containerSymbol); - if (exportInformation.exportAssignments.length) { - if (exportInformation.exportAssignments.length > 1) { - // TypeScript 1.0 spec (April 2014): 11.2.4 - // It is an error for an external module to contain more than one export assignment. - forEach(exportInformation.exportAssignments, node => error(node, Diagnostics.A_module_cannot_have_more_than_one_export_assignment)); - } - var node = exportInformation.exportAssignments[0]; - if (exportInformation.hasExportedMember) { - // TypeScript 1.0 spec (April 2014): 11.2.3 - // If an external module contains an export assignment it is an error - // for the external module to also contain export declarations. - // The two types of exports are mutually exclusive. - error(node, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); - } - if (node.exportName.text) { - var meaning = SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace; - var exportSymbol = resolveName(node, node.exportName.text, meaning, Diagnostics.Cannot_find_name_0, node.exportName); - } - symbolLinks.exportAssignmentSymbol = exportSymbol || unknownSymbol; - } - symbolLinks.exportAssignmentChecked = true; - } - } - - function collectExportInformationForSourceFileOrModule(symbol: Symbol) { - var seenExportedMember = false; - var result: ExportAssignment[] = []; - forEach(symbol.declarations, declaration => { - var block = (declaration.kind === SyntaxKind.SourceFile ? declaration : (declaration).body); - forEach(block.statements, node => { - if (node.kind === SyntaxKind.ExportAssignment) { - result.push(node); - } - else { - seenExportedMember = seenExportedMember || (node.flags & NodeFlags.Export) !== 0; - } - }); - }); - return { - hasExportedMember: seenExportedMember, - exportAssignments: result - }; + function getExportsOfModuleAsArray(moduleSymbol: Symbol): Symbol[] { + return symbolsToArray(getExportsOfModule(moduleSymbol)); } function getExportsOfSymbol(symbol: Symbol): SymbolTable { - return symbol.flags & SymbolFlags.Module ? getExportsOfModule(symbol) : symbol.exports; + return symbol.flags & SymbolFlags.Module ? getExportsOfModule(symbol) : symbol.exports || emptySymbols; } - function getExportsOfModule(symbol: Symbol): SymbolTable { - var links = getSymbolLinks(symbol); - return links.resolvedExports || (links.resolvedExports = getExportsForModule(symbol)); + function getExportsOfModule(moduleSymbol: Symbol): SymbolTable { + let links = getSymbolLinks(moduleSymbol); + return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function getExportsForModule(symbol: Symbol): SymbolTable { - var result: SymbolTable; - var visitedSymbols: Symbol[] = []; - visit(symbol); - return result; + function extendExportSymbols(target: SymbolTable, source: SymbolTable) { + for (let id in source) { + if (id !== "default" && !hasProperty(target, id)) { + target[id] = source[id]; + } + } + } + function getExportsForModule(moduleSymbol: Symbol): SymbolTable { + let result: SymbolTable; + let visitedSymbols: Symbol[] = []; + visit(moduleSymbol); + return result || moduleSymbol.exports; + + // The ES6 spec permits export * declarations in a module to circularly reference the module itself. For example, + // module 'a' can 'export * from "b"' and 'b' can 'export * from "a"' without error. function visit(symbol: Symbol) { - if (!contains(visitedSymbols, symbol)) { + if (symbol.flags & SymbolFlags.HasExports && !contains(visitedSymbols, symbol)) { visitedSymbols.push(symbol); - if (!result) { - result = symbol.exports; - } - else { - extendSymbolTable(result, symbol.exports); - } - forEach(symbol.declarations, node => { - if (node.kind === SyntaxKind.SourceFile || node.kind === SyntaxKind.ModuleDeclaration) { - forEach((node).exportStars, exportStar => { - visit(resolveExternalModuleName(exportStar, exportStar.moduleSpecifier)); - }); + if (symbol !== moduleSymbol) { + if (!result) { + result = cloneSymbolTable(moduleSymbol.exports); } - }); + extendExportSymbols(result, symbol.exports); + } + // All export * declarations are collected in an __export symbol by the binder + let exportStars = symbol.exports["__export"]; + if (exportStars) { + for (let node of exportStars.declarations) { + visit(resolveExternalModuleName(node, (node).moduleSpecifier)); + } + } } } } function getMergedSymbol(symbol: Symbol): Symbol { - var merged: Symbol; + let merged: Symbol; return symbol && symbol.mergeId && (merged = mergedSymbols[symbol.mergeId]) ? merged : symbol; } @@ -789,18 +978,17 @@ module ts { return true; } - // If it is an import, then it is a value if the symbol it resolves to is a value. - if (symbol.flags & SymbolFlags.Import) { - return (resolveImport(symbol).flags & SymbolFlags.Value) !== 0; + // If it is an alias, then it is a value if the symbol it resolves to is a value. + if (symbol.flags & SymbolFlags.Alias) { + return (resolveAlias(symbol).flags & SymbolFlags.Value) !== 0; } return false; } function findConstructorDeclaration(node: ClassDeclaration): ConstructorDeclaration { - var members = node.members; - for (var i = 0; i < members.length; i++) { - var member = members[i]; + let members = node.members; + for (let member of members) { if (member.kind === SyntaxKind.Constructor && nodeIsPresent((member).body)) { return member; } @@ -808,19 +996,19 @@ module ts { } function createType(flags: TypeFlags): Type { - var result = new Type(checker, flags); + let result = new Type(checker, flags); result.id = typeCount++; return result; } function createIntrinsicType(kind: TypeFlags, intrinsicName: string): IntrinsicType { - var type = createType(kind); + let type = createType(kind); type.intrinsicName = intrinsicName; return type; } function createObjectType(kind: TypeFlags, symbol?: Symbol): ObjectType { - var type = createType(kind); + let type = createType(kind); type.symbol = symbol; return type; } @@ -837,12 +1025,12 @@ module ts { } function getNamedMembers(members: SymbolTable): Symbol[] { - var result: Symbol[]; - for (var id in members) { + let result: Symbol[]; + for (let id in members) { if (hasProperty(members, id)) { if (!isReservedMemberName(id)) { if (!result) result = []; - var symbol = members[id]; + let symbol = members[id]; if (symbolIsValue(symbol)) { result.push(symbol); } @@ -868,8 +1056,8 @@ module ts { } function forEachSymbolTableInScope(enclosingDeclaration: Node, callback: (symbolTable: SymbolTable) => T): T { - var result: T; - for (var location = enclosingDeclaration; location; location = location.parent) { + let result: T; + for (let location = enclosingDeclaration; location; location = location.parent) { // Locals of a source file are not in scope (because they get merged into the global symbol table) if (location.locals && !isGlobalSourceFile(location)) { if (result = callback(location.locals)) { @@ -912,14 +1100,14 @@ module ts { } // If symbol needs qualification, make sure that parent is accessible, if it is then this symbol is accessible too - var accessibleParent = getAccessibleSymbolChain(symbolFromSymbolTable.parent, enclosingDeclaration, getQualifiedLeftMeaning(meaning), useOnlyExternalAliasing); + let accessibleParent = getAccessibleSymbolChain(symbolFromSymbolTable.parent, enclosingDeclaration, getQualifiedLeftMeaning(meaning), useOnlyExternalAliasing); return !!accessibleParent; } function isAccessible(symbolFromSymbolTable: Symbol, resolvedAliasSymbol?: Symbol) { if (symbol === (resolvedAliasSymbol || symbolFromSymbolTable)) { // if the symbolFromSymbolTable is not external module (it could be if it was determined as ambient external module and would be in globals table) - // and if symbolfrom symbolTable or alias resolution matches the symbol, + // and if symbolfrom symbolTable or alias resolution matches the symbol, // check the symbol can be qualified, it is only then this symbol is accessible return !forEach(symbolFromSymbolTable.declarations, hasExternalModuleSymbol) && canQualifySymbol(symbolFromSymbolTable, meaning); @@ -933,19 +1121,19 @@ module ts { // Check if symbol is any of the alias return forEachValue(symbols, symbolFromSymbolTable => { - if (symbolFromSymbolTable.flags & SymbolFlags.Import) { + if (symbolFromSymbolTable.flags & SymbolFlags.Alias && symbolFromSymbolTable.name !== "export=") { if (!useOnlyExternalAliasing || // We can use any type of alias to get the name // Is this external alias, then use it to name ts.forEach(symbolFromSymbolTable.declarations, isExternalModuleImportEqualsDeclaration)) { - var resolvedImportedSymbol = resolveImport(symbolFromSymbolTable); - if (isAccessible(symbolFromSymbolTable, resolveImport(symbolFromSymbolTable))) { + let resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); + if (isAccessible(symbolFromSymbolTable, resolveAlias(symbolFromSymbolTable))) { return [symbolFromSymbolTable]; } // Look in the exported members, if we can find accessibleSymbolChain, symbol is accessible using this chain // but only if the symbolFromSymbolTable can be qualified - var accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; + let accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; if (accessibleSymbolsFromExports && canQualifySymbol(symbolFromSymbolTable, getQualifiedLeftMeaning(meaning))) { return [symbolFromSymbolTable].concat(accessibleSymbolsFromExports); } @@ -960,7 +1148,7 @@ module ts { } function needsQualification(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags) { - var qualify = false; + let qualify = false; forEachSymbolTableInScope(enclosingDeclaration, symbolTable => { // If symbol of this name is not available in the symbol table we are ok if (!hasProperty(symbolTable, symbol.name)) { @@ -968,14 +1156,14 @@ module ts { return false; } // If the symbol with this name is present it should refer to the symbol - var symbolFromSymbolTable = symbolTable[symbol.name]; + let symbolFromSymbolTable = symbolTable[symbol.name]; if (symbolFromSymbolTable === symbol) { // No need to qualify return true; } // Qualify if the symbol from symbol table has same meaning as expected - symbolFromSymbolTable = (symbolFromSymbolTable.flags & SymbolFlags.Import) ? resolveImport(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & SymbolFlags.Alias) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -990,13 +1178,13 @@ module ts { function isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult { if (symbol && enclosingDeclaration && !(symbol.flags & SymbolFlags.TypeParameter)) { - var initialSymbol = symbol; - var meaningToLook = meaning; + let initialSymbol = symbol; + let meaningToLook = meaning; while (symbol) { // Symbol is accessible if it by itself is accessible - var accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaningToLook, /*useOnlyExternalAliasing*/ false); + let accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaningToLook, /*useOnlyExternalAliasing*/ false); if (accessibleSymbolChain) { - var hasAccessibleDeclarations = hasVisibleDeclarations(accessibleSymbolChain[0]); + let hasAccessibleDeclarations = hasVisibleDeclarations(accessibleSymbolChain[0]); if (!hasAccessibleDeclarations) { return { accessibility: SymbolAccessibility.NotAccessible, @@ -1014,20 +1202,20 @@ module ts { // export class c { // } // } - // var x: typeof m.c + // let x: typeof m.c // In the above example when we start with checking if typeof m.c symbol is accessible, - // we are going to see if c can be accessed in scope directly. + // we are going to see if c can be accessed in scope directly. // But it can't, hence the accessible is going to be undefined, but that doesn't mean m.c is inaccessible // It is accessible if the parent m is accessible because then m.c can be accessed through qualification meaningToLook = getQualifiedLeftMeaning(meaning); symbol = getParentOfSymbol(symbol); } - // This could be a symbol that is not exported in the external module + // This could be a symbol that is not exported in the external module // or it could be a symbol from different external module that is not aliased and hence cannot be named - var symbolExternalModule = forEach(initialSymbol.declarations, getExternalModuleContainer); + let symbolExternalModule = forEach(initialSymbol.declarations, getExternalModuleContainer); if (symbolExternalModule) { - var enclosingExternalModule = getExternalModuleContainer(enclosingDeclaration); + let enclosingExternalModule = getExternalModuleContainer(enclosingDeclaration); if (symbolExternalModule !== enclosingExternalModule) { // name from different external module that is not visible return { @@ -1062,7 +1250,7 @@ module ts { } function hasVisibleDeclarations(symbol: Symbol): SymbolVisibilityResult { - var aliasesToMakeVisible: ImportEqualsDeclaration[]; + let aliasesToMakeVisible: AnyImportSyntax[]; if (forEach(symbol.declarations, declaration => !getIsDeclarationVisible(declaration))) { return undefined; } @@ -1070,19 +1258,21 @@ module ts { function getIsDeclarationVisible(declaration: Declaration) { if (!isDeclarationVisible(declaration)) { - // Mark the unexported alias as visible if its parent is visible + // Mark the unexported alias as visible if its parent is visible // because these kind of aliases can be used to name types in declaration file - if (declaration.kind === SyntaxKind.ImportEqualsDeclaration && - !(declaration.flags & NodeFlags.Export) && - isDeclarationVisible(declaration.parent)) { + + var anyImportSyntax = getAnyImportSyntax(declaration); + if (anyImportSyntax && + !(anyImportSyntax.flags & NodeFlags.Export) && // import clause without export + isDeclarationVisible(anyImportSyntax.parent)) { getNodeLinks(declaration).isVisible = true; if (aliasesToMakeVisible) { - if (!contains(aliasesToMakeVisible, declaration)) { - aliasesToMakeVisible.push(declaration); + if (!contains(aliasesToMakeVisible, anyImportSyntax)) { + aliasesToMakeVisible.push(anyImportSyntax); } } else { - aliasesToMakeVisible = [declaration]; + aliasesToMakeVisible = [anyImportSyntax]; } return true; } @@ -1095,17 +1285,17 @@ module ts { } } - function isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult { + function isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult { // get symbol of the first identifier of the entityName - var meaning: SymbolFlags; + let meaning: SymbolFlags; if (entityName.parent.kind === SyntaxKind.TypeQuery) { // Typeof value meaning = SymbolFlags.Value | SymbolFlags.ExportValue; } - else if (entityName.kind === SyntaxKind.QualifiedName || + else if (entityName.kind === SyntaxKind.QualifiedName || entityName.kind === SyntaxKind.PropertyAccessExpression || entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration) { // Left identifier from type reference or TypeAlias - // Entity name of the import declaration + // Entity name of the import declaration meaning = SymbolFlags.Namespace; } else { @@ -1113,8 +1303,8 @@ module ts { meaning = SymbolFlags.Type; } - var firstIdentifier = getFirstIdentifier(entityName); - var symbol = resolveName(enclosingDeclaration, (firstIdentifier).text, meaning, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined); + let firstIdentifier = getFirstIdentifier(entityName); + let symbol = resolveName(enclosingDeclaration, (firstIdentifier).text, meaning, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined); // Verify if the symbol is accessible return (symbol && hasVisibleDeclarations(symbol)) || { @@ -1137,23 +1327,23 @@ module ts { } function symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string { - var writer = getSingleLineStringWriter(); + let writer = getSingleLineStringWriter(); getSymbolDisplayBuilder().buildSymbolDisplay(symbol, writer, enclosingDeclaration, meaning); - var result = writer.string(); + let result = writer.string(); releaseStringWriter(writer); return result; } function typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string { - var writer = getSingleLineStringWriter(); + let writer = getSingleLineStringWriter(); getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); - var result = writer.string(); + let result = writer.string(); releaseStringWriter(writer); - var maxLength = compilerOptions.noErrorTruncation || flags & TypeFormatFlags.NoTruncation ? undefined : 100; + let maxLength = compilerOptions.noErrorTruncation || flags & TypeFormatFlags.NoTruncation ? undefined : 100; if (maxLength && result.length >= maxLength) { result = result.substr(0, maxLength - "...".length) + "..."; } @@ -1163,7 +1353,7 @@ module ts { function getTypeAliasForTypeLiteral(type: Type): Symbol { if (type.symbol && type.symbol.flags & SymbolFlags.TypeLiteral) { - var node = type.symbol.declarations[0].parent; + let node = type.symbol.declarations[0].parent; while (node.kind === SyntaxKind.ParenthesizedType) { node = node.parent; } @@ -1175,7 +1365,7 @@ module ts { } // This is for caching the result of getSymbolDisplayBuilder. Do not access directly. - var _displayBuilder: SymbolDisplayBuilder; + let _displayBuilder: SymbolDisplayBuilder; function getSymbolDisplayBuilder(): SymbolDisplayBuilder { /** * Writes only the name of the symbol out to the writer. Uses the original source text @@ -1183,7 +1373,7 @@ module ts { */ function appendSymbolNameOnly(symbol: Symbol, writer: SymbolWriter): void { if (symbol.declarations && symbol.declarations.length > 0) { - var declaration = symbol.declarations[0]; + let declaration = symbol.declarations[0]; if (declaration.name) { writer.writeSymbol(declarationNameToString(declaration.name), symbol); return; @@ -1198,7 +1388,7 @@ module ts { * Meaning needs to be specified if the enclosing declaration is given */ function buildSymbolDisplay(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags, typeFlags?: TypeFormatFlags): void { - var parentSymbol: Symbol; + let parentSymbol: Symbol; function appendParentTypeArgumentsAndSymbolName(symbol: Symbol): void { if (parentSymbol) { // Write type arguments of instantiated class/interface here @@ -1217,8 +1407,8 @@ module ts { appendSymbolNameOnly(symbol, writer); } - // Let the writer know we just wrote out a symbol. The declaration emitter writer uses - // this to determine if an import it has previously seen (and not written out) needs + // Let the writer know we just wrote out a symbol. The declaration emitter writer uses + // this to determine if an import it has previously seen (and not written out) needs // to be written to the file once the walk of the tree is complete. // // NOTE(cyrusn): This approach feels somewhat unfortunate. A simple pass over the tree @@ -1227,7 +1417,7 @@ module ts { writer.trackSymbol(symbol, enclosingDeclaration, meaning); function walkSymbol(symbol: Symbol, meaning: SymbolFlags): void { if (symbol) { - var accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, !!(flags & SymbolFormatFlags.UseOnlyExternalAliasing)); + let accessibleSymbolChain = getAccessibleSymbolChain(symbol, enclosingDeclaration, meaning, !!(flags & SymbolFormatFlags.UseOnlyExternalAliasing)); if (!accessibleSymbolChain || needsQualification(accessibleSymbolChain[0], enclosingDeclaration, accessibleSymbolChain.length === 1 ? meaning : getQualifiedLeftMeaning(meaning))) { @@ -1239,8 +1429,8 @@ module ts { } if (accessibleSymbolChain) { - for (var i = 0, n = accessibleSymbolChain.length; i < n; i++) { - appendParentTypeArgumentsAndSymbolName(accessibleSymbolChain[i]); + for (let accessibleSymbol of accessibleSymbolChain) { + appendParentTypeArgumentsAndSymbolName(accessibleSymbol); } } else { @@ -1262,8 +1452,8 @@ module ts { // Get qualified name if the symbol is not a type parameter // and there is an enclosing declaration or we specifically // asked for it - var isTypeParameter = symbol.flags & SymbolFlags.TypeParameter; - var typeFormatFlag = TypeFormatFlags.UseFullyQualifiedType & typeFlags; + let isTypeParameter = symbol.flags & SymbolFlags.TypeParameter; + let typeFormatFlag = TypeFormatFlags.UseFullyQualifiedType & typeFlags; if (!isTypeParameter && (enclosingDeclaration || typeFormatFlag)) { walkSymbol(symbol, meaning); return; @@ -1273,7 +1463,7 @@ module ts { } function buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, globalFlags?: TypeFormatFlags, typeStack?: Type[]) { - var globalFlagsToPass = globalFlags & TypeFormatFlags.WriteOwnNameForAnyLike; + let globalFlagsToPass = globalFlags & TypeFormatFlags.WriteOwnNameForAnyLike; return writeType(type, globalFlags); function writeType(type: Type, flags: TypeFormatFlags) { @@ -1314,7 +1504,7 @@ module ts { } function writeTypeList(types: Type[], union: boolean) { - for (var i = 0; i < types.length; i++) { + for (let i = 0; i < types.length; i++) { if (i > 0) { if (union) { writeSpace(writer); @@ -1367,7 +1557,7 @@ module ts { } else if (typeStack && contains(typeStack, type)) { // If type is an anonymous type literal in a type alias declaration, use type alias name - var typeAlias = getTypeAliasForTypeLiteral(type); + let typeAlias = getTypeAliasForTypeLiteral(type); if (typeAlias) { // The specified symbol flags need to be reinterpreted as type flags buildSymbolDisplay(typeAlias, writer, enclosingDeclaration, SymbolFlags.Type, SymbolFormatFlags.None, flags); @@ -1388,9 +1578,9 @@ module ts { function shouldWriteTypeOfFunctionSymbol() { if (type.symbol) { - var isStaticMethodSymbol = !!(type.symbol.flags & SymbolFlags.Method && // typeof static method + let isStaticMethodSymbol = !!(type.symbol.flags & SymbolFlags.Method && // typeof static method ts.forEach(type.symbol.declarations, declaration => declaration.flags & NodeFlags.Static)); - var isNonLocalFunctionSymbol = !!(type.symbol.flags & SymbolFlags.Function) && + let isNonLocalFunctionSymbol = !!(type.symbol.flags & SymbolFlags.Function) && (type.symbol.parent || // is exported function symbol ts.forEach(type.symbol.declarations, declaration => declaration.parent.kind === SyntaxKind.SourceFile || declaration.parent.kind === SyntaxKind.ModuleBlock)); @@ -1411,7 +1601,7 @@ module ts { } function getIndexerParameterName(type: ObjectType, indexKind: IndexKind, fallbackName: string): string { - var declaration = getIndexDeclarationOfSymbol(type.symbol, indexKind); + let declaration = getIndexDeclarationOfSymbol(type.symbol, indexKind); if (!declaration) { // declaration might not be found if indexer was added from the contextual type. // in this case use fallback name @@ -1422,7 +1612,7 @@ module ts { } function writeLiteralType(type: ObjectType, flags: TypeFormatFlags) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); if (!resolved.properties.length && !resolved.stringIndexType && !resolved.numberIndexType) { if (!resolved.callSignatures.length && !resolved.constructSignatures.length) { writePunctuation(writer, SyntaxKind.OpenBraceToken); @@ -1457,21 +1647,21 @@ module ts { writePunctuation(writer, SyntaxKind.OpenBraceToken); writer.writeLine(); writer.increaseIndent(); - for (var i = 0; i < resolved.callSignatures.length; i++) { - buildSignatureDisplay(resolved.callSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + for (let signature of resolved.callSignatures) { + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } - for (var i = 0; i < resolved.constructSignatures.length; i++) { + for (let signature of resolved.constructSignatures) { writeKeyword(writer, SyntaxKind.NewKeyword); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[i], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } if (resolved.stringIndexType) { - // [x: string]: + // [x: string]: writePunctuation(writer, SyntaxKind.OpenBracketToken); writer.writeParameter(getIndexerParameterName(resolved, IndexKind.String, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); @@ -1485,7 +1675,7 @@ module ts { writer.writeLine(); } if (resolved.numberIndexType) { - // [x: number]: + // [x: number]: writePunctuation(writer, SyntaxKind.OpenBracketToken); writer.writeParameter(getIndexerParameterName(resolved, IndexKind.Number, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); @@ -1498,17 +1688,16 @@ module ts { writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } - for (var i = 0; i < resolved.properties.length; i++) { - var p = resolved.properties[i]; - var t = getTypeOfSymbol(p); + for (let p of resolved.properties) { + let t = getTypeOfSymbol(p); if (p.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(t).length) { - var signatures = getSignaturesOfType(t, SignatureKind.Call); - for (var j = 0; j < signatures.length; j++) { + let signatures = getSignaturesOfType(t, SignatureKind.Call); + for (let signature of signatures) { buildSymbolDisplay(p, writer); if (p.flags & SymbolFlags.Optional) { writePunctuation(writer, SyntaxKind.QuestionToken); } - buildSignatureDisplay(signatures[j], writer, enclosingDeclaration, globalFlagsToPass, typeStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, typeStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } @@ -1531,7 +1720,7 @@ module ts { } function buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags) { - var targetSymbol = getTargetSymbol(symbol); + let targetSymbol = getTargetSymbol(symbol); if (targetSymbol.flags & SymbolFlags.Class || targetSymbol.flags & SymbolFlags.Interface) { buildDisplayForTypeParametersAndDelimiters(getTypeParametersOfClassOrInterface(symbol), writer, enclosingDeclaraiton, flags); } @@ -1539,7 +1728,7 @@ module ts { function buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, typeStack?: Type[]) { appendSymbolNameOnly(tp.symbol, writer); - var constraint = getConstraintOfTypeParameter(tp); + let constraint = getConstraintOfTypeParameter(tp); if (constraint) { writeSpace(writer); writeKeyword(writer, SyntaxKind.ExtendsKeyword); @@ -1565,7 +1754,7 @@ module ts { function buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, typeStack?: Type[]) { if (typeParameters && typeParameters.length) { writePunctuation(writer, SyntaxKind.LessThanToken); - for (var i = 0; i < typeParameters.length; i++) { + for (let i = 0; i < typeParameters.length; i++) { if (i > 0) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); @@ -1579,7 +1768,7 @@ module ts { function buildDisplayForTypeArgumentsAndDelimiters(typeParameters: TypeParameter[], mapper: TypeMapper, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, typeStack?: Type[]) { if (typeParameters && typeParameters.length) { writePunctuation(writer, SyntaxKind.LessThanToken); - for (var i = 0; i < typeParameters.length; i++) { + for (let i = 0; i < typeParameters.length; i++) { if (i > 0) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); @@ -1592,7 +1781,7 @@ module ts { function buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, typeStack?: Type[]) { writePunctuation(writer, SyntaxKind.OpenParenToken); - for (var i = 0; i < parameters.length; i++) { + for (let i = 0; i < parameters.length; i++) { if (i > 0) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); @@ -1661,20 +1850,21 @@ module ts { function isUsedInExportAssignment(node: Node) { // Get source File and see if it is external module and has export assigned symbol - var externalModule = getContainingExternalModule(node); + let externalModule = getContainingExternalModule(node); + let exportAssignmentSymbol: Symbol; + let resolvedExportSymbol: Symbol; if (externalModule) { // This is export assigned symbol node - var externalModuleSymbol = getSymbolOfNode(externalModule); - var exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var resolvedExportSymbol: Symbol; - var symbolOfNode = getSymbolOfNode(node); + let externalModuleSymbol = getSymbolOfNode(externalModule); + exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); + let symbolOfNode = getSymbolOfNode(node); if (isSymbolUsedInExportAssignment(symbolOfNode)) { return true; } - // if symbolOfNode is import declaration, resolve the symbol declaration and check - if (symbolOfNode.flags & SymbolFlags.Import) { - return isSymbolUsedInExportAssignment(resolveImport(symbolOfNode)); + // if symbolOfNode is alias declaration, resolve the symbol declaration and check + if (symbolOfNode.flags & SymbolFlags.Alias) { + return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); } } @@ -1684,9 +1874,9 @@ module ts { return true; } - if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & SymbolFlags.Import)) { - // if export assigned symbol is import declaration, resolve the import - resolvedExportSymbol = resolvedExportSymbol || resolveImport(exportAssignmentSymbol); + if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & SymbolFlags.Alias)) { + // if export assigned symbol is alias declaration, resolve the alias + resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); if (resolvedExportSymbol === symbol) { return true; } @@ -1706,8 +1896,15 @@ module ts { function determineIfDeclarationIsVisible() { switch (node.kind) { - case SyntaxKind.VariableDeclaration: case SyntaxKind.BindingElement: + return isDeclarationVisible(node.parent.parent); + case SyntaxKind.VariableDeclaration: + if (isBindingPattern(node.name) && + !(node.name).elements.length) { + // If the binding pattern is empty, this variable declaration is not visible + return false; + } + // Otherwise fall through case SyntaxKind.ModuleDeclaration: case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: @@ -1715,11 +1912,11 @@ module ts { case SyntaxKind.FunctionDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.ImportEqualsDeclaration: - var parent = getDeclarationContainer(node); + let parent = getDeclarationContainer(node); // If the node is not exported or it is not ambient module element (except import declaration) if (!(getCombinedNodeFlags(node) & NodeFlags.Export) && !(node.kind !== SyntaxKind.ImportEqualsDeclaration && parent.kind !== SyntaxKind.SourceFile && isInAmbientContext(parent))) { - return isGlobalSourceFile(parent) || isUsedInExportAssignment(node); + return isGlobalSourceFile(parent); } // Exported members/ambient module elements (exception import declaration) are visible if parent is visible return isDeclarationVisible(parent); @@ -1751,20 +1948,31 @@ module ts { case SyntaxKind.UnionType: case SyntaxKind.ParenthesizedType: return isDeclarationVisible(node.parent); - + + // Default binding, import specifier and namespace import is visible + // only on demand so by default it is not visible + case SyntaxKind.ImportClause: + case SyntaxKind.NamespaceImport: + case SyntaxKind.ImportSpecifier: + return false; + // Type parameters are always visible case SyntaxKind.TypeParameter: // Source file is always visible case SyntaxKind.SourceFile: return true; + // Export assignements do not create name bindings outside the module + case SyntaxKind.ExportAssignment: + return false; + default: Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } } if (node) { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (links.isVisible === undefined) { links.isVisible = !!determineIfDeclarationIsVisible(); } @@ -1772,6 +1980,40 @@ module ts { } } + function collectLinkedAliases(node: Identifier): Node[]{ + var exportSymbol: Symbol; + if (node.parent && node.parent.kind === SyntaxKind.ExportAssignment) { + exportSymbol = resolveName(node.parent, node.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace, Diagnostics.Cannot_find_name_0, node); + } + else if (node.parent.kind === SyntaxKind.ExportSpecifier) { + exportSymbol = getTargetOfExportSpecifier(node.parent); + } + var result: Node[] = []; + if (exportSymbol) { + buildVisibleNodeList(exportSymbol.declarations); + } + return result; + + function buildVisibleNodeList(declarations: Declaration[]) { + forEach(declarations, declaration => { + getNodeLinks(declaration).isVisible = true; + var resultNode = getAnyImportSyntax(declaration) || declaration; + if (!contains(result, resultNode)) { + result.push(resultNode); + } + + if (isInternalModuleImportEqualsDeclaration(declaration)) { + // Add the referenced top container visible + var internalModuleReference = (declaration).moduleReference; + var firstIdentifier = getFirstIdentifier(internalModuleReference); + var importSymbol = resolveName(declaration, firstIdentifier.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace, + Diagnostics.Cannot_find_name_0, firstIdentifier); + buildVisibleNodeList(importSymbol.declarations); + } + }); + } + } + function getRootDeclaration(node: Node): Node { while (node.kind === SyntaxKind.BindingElement) { node = node.parent.parent; @@ -1782,30 +2024,30 @@ module ts { function getDeclarationContainer(node: Node): Node { node = getRootDeclaration(node); - // Parent chain: + // Parent chain: // VaribleDeclaration -> VariableDeclarationList -> VariableStatement -> 'Declaration Container' return node.kind === SyntaxKind.VariableDeclaration ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype: Symbol): Type { // TypeScript 1.0 spec (April 2014): 8.4 - // Every class automatically contains a static property member named 'prototype', + // Every class automatically contains a static property member named 'prototype', // the type of which is an instantiation of the class type with type Any supplied as a type argument for each type parameter. // It is an error to explicitly declare a static property member with the name 'prototype'. - var classType = getDeclaredTypeOfSymbol(prototype.parent); + let classType = getDeclaredTypeOfSymbol(prototype.parent); return classType.typeParameters ? createTypeReference(classType, map(classType.typeParameters, _ => anyType)) : classType; } // Return the type of the given property in the given type, or undefined if no such property exists function getTypeOfPropertyOfType(type: Type, name: string): Type { - var prop = getPropertyOfType(type, name); + let prop = getPropertyOfType(type, name); return prop ? getTypeOfSymbol(prop) : undefined; } // Return the inferred type for a binding element function getTypeForBindingElement(declaration: BindingElement): Type { - var pattern = declaration.parent; - var parentType = getTypeForVariableLikeDeclaration(pattern.parent); + let pattern = declaration.parent; + let parentType = getTypeForVariableLikeDeclaration(pattern.parent); // If parent has the unknown (error) type, then so does this binding element if (parentType === unknownType) { return unknownType; @@ -1819,12 +2061,14 @@ module ts { } return parentType; } + + let type: Type; if (pattern.kind === SyntaxKind.ObjectBindingPattern) { // Use explicitly specified property name ({ p: xxx } form), or otherwise the implied name ({ p } form) - var name = declaration.propertyName || declaration.name; + let name = declaration.propertyName || declaration.name; // Use type of the specified property, or otherwise, for a numeric name, the type of the numeric index signature, // or otherwise the type of the string index signature. - var type = getTypeOfPropertyOfType(parentType, name.text) || + type = getTypeOfPropertyOfType(parentType, name.text) || isNumericLiteralName(name.text) && getIndexTypeOfType(parentType, IndexKind.Number) || getIndexTypeOfType(parentType, IndexKind.String); if (!type) { @@ -1840,16 +2084,21 @@ module ts { } if (!declaration.dotDotDotToken) { // Use specific property type when parent is a tuple or numeric index type when parent is an array - var propName = "" + indexOf(pattern.elements, declaration); - var type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, IndexKind.Number); + let propName = "" + indexOf(pattern.elements, declaration); + type = isTupleLikeType(parentType) ? getTypeOfPropertyOfType(parentType, propName) : getIndexTypeOfType(parentType, IndexKind.Number); if (!type) { - error(declaration, Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + if (isTupleType(parentType)) { + error(declaration, Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(parentType), (parentType).elementTypes.length, pattern.elements.length); + } + else { + error(declaration, Diagnostics.Type_0_has_no_property_1, typeToString(parentType), propName); + } return unknownType; } } else { // Rest element has an array type with the same element type as the parent type - var type = createArrayType(getIndexTypeOfType(parentType, IndexKind.Number)); + type = createArrayType(getIndexTypeOfType(parentType, IndexKind.Number)); } } return type; @@ -1861,24 +2110,31 @@ module ts { if (declaration.parent.parent.kind === SyntaxKind.ForInStatement) { return anyType; } + if (declaration.parent.parent.kind === SyntaxKind.ForOfStatement) { + // checkRightHandSideOfForOf will return undefined if the for-of expression type was + // missing properties/signatures required to get its iteratedType (like + // [Symbol.iterator] or next). This may be because we accessed properties from anyType, + // or it may have led to an error inside getIteratedType. + return checkRightHandSideOfForOf((declaration.parent.parent).expression) || anyType; + } if (isBindingPattern(declaration.parent)) { return getTypeForBindingElement(declaration); } // Use type from type annotation if one is present if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } if (declaration.kind === SyntaxKind.Parameter) { - var func = declaration.parent; + let func = declaration.parent; // For a parameter of a set accessor, use the type of the get accessor if one is present if (func.kind === SyntaxKind.SetAccessor && !hasDynamicName(func)) { - var getter = getDeclarationOfKind(declaration.parent.symbol, SyntaxKind.GetAccessor); + let getter = getDeclarationOfKind(declaration.parent.symbol, SyntaxKind.GetAccessor); if (getter) { return getReturnTypeOfSignature(getSignatureFromDeclaration(getter)); } } // Use contextual parameter type if one is available - var type = getContextuallyTypedParameterType(declaration); + let type = getContextuallyTypedParameterType(declaration); if (type) { return type; } @@ -1910,11 +2166,11 @@ module ts { // Return the type implied by an object binding pattern function getTypeFromObjectBindingPattern(pattern: BindingPattern): Type { - var members: SymbolTable = {}; + let members: SymbolTable = {}; forEach(pattern.elements, e => { - var flags = SymbolFlags.Property | SymbolFlags.Transient | (e.initializer ? SymbolFlags.Optional : 0); - var name = e.propertyName || e.name; - var symbol = createSymbol(flags, name.text); + let flags = SymbolFlags.Property | SymbolFlags.Transient | (e.initializer ? SymbolFlags.Optional : 0); + let name = e.propertyName || e.name; + let symbol = createSymbol(flags, name.text); symbol.type = getTypeFromBindingElement(e); members[symbol.name] = symbol; }); @@ -1923,8 +2179,8 @@ module ts { // Return the type implied by an array binding pattern function getTypeFromArrayBindingPattern(pattern: BindingPattern): Type { - var hasSpreadElement: boolean = false; - var elementTypes: Type[] = []; + let hasSpreadElement: boolean = false; + let elementTypes: Type[] = []; forEach(pattern.elements, e => { elementTypes.push(e.kind === SyntaxKind.OmittedExpression || e.dotDotDotToken ? anyType : getTypeFromBindingElement(e)); if (e.dotDotDotToken) { @@ -1957,7 +2213,7 @@ module ts { // binding pattern [x, s = ""]. Because the contextual type is a tuple type, the resulting type of [1, "one"] is the // tuple type [number, string]. Thus, the type inferred for 'x' is number and the type inferred for 's' is string. function getWidenedTypeForVariableLikeDeclaration(declaration: VariableLikeDeclaration, reportErrors?: boolean): Type { - var type = getTypeForVariableLikeDeclaration(declaration); + let type = getTypeForVariableLikeDeclaration(declaration); if (type) { if (reportErrors) { reportErrorsFromWidening(declaration, type); @@ -1976,7 +2232,7 @@ module ts { type = declaration.dotDotDotToken ? anyArrayType : anyType; // Report implicit any errors unless this is a private property within an ambient declaration if (reportErrors && compilerOptions.noImplicitAny) { - var root = getRootDeclaration(declaration); + let root = getRootDeclaration(declaration); if (!isPrivateWithinAmbient(root) && !(root.kind === SyntaxKind.Parameter && isPrivateWithinAmbient(root.parent))) { reportImplicitAnyError(declaration, type); } @@ -1985,20 +2241,33 @@ module ts { } function getTypeOfVariableOrParameterOrProperty(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.type) { // Handle prototype property if (symbol.flags & SymbolFlags.Prototype) { return links.type = getTypeOfPrototypeProperty(symbol); } // Handle catch clause variables - var declaration = symbol.valueDeclaration; - if (declaration.kind === SyntaxKind.CatchClause) { + let declaration = symbol.valueDeclaration; + if (declaration.parent.kind === SyntaxKind.CatchClause) { return links.type = anyType; } + // Handle export default expressions + if (declaration.kind === SyntaxKind.ExportAssignment) { + var exportAssignment = declaration; + if (exportAssignment.expression) { + return links.type = checkExpression(exportAssignment.expression); + } + else if (exportAssignment.type) { + return links.type = getTypeFromTypeNodeOrHeritageClauseElement(exportAssignment.type); + } + else { + return links.type = anyType; + } + } // Handle variable, parameter or property links.type = resolvingType; - var type = getWidenedTypeForVariableLikeDeclaration(declaration, /*reportErrors*/ true); + let type = getWidenedTypeForVariableLikeDeclaration(declaration, /*reportErrors*/ true); if (links.type === resolvingType) { links.type = type; } @@ -2006,7 +2275,7 @@ module ts { else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var diagnostic = (symbol.valueDeclaration).type ? + let diagnostic = (symbol.valueDeclaration).type ? Diagnostics._0_implicitly_has_type_any_because_it_is_referenced_directly_or_indirectly_in_its_own_type_annotation : Diagnostics._0_implicitly_has_type_any_because_it_is_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer; error(symbol.valueDeclaration, diagnostic, symbolToString(symbol)); @@ -2022,18 +2291,18 @@ module ts { function getAnnotatedAccessorType(accessor: AccessorDeclaration): Type { if (accessor) { if (accessor.kind === SyntaxKind.GetAccessor) { - return accessor.type && getTypeFromTypeNode(accessor.type); + return accessor.type && getTypeFromTypeNodeOrHeritageClauseElement(accessor.type); } else { - var setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); - return setterTypeAnnotation && getTypeFromTypeNode(setterTypeAnnotation); + let setterTypeAnnotation = getSetAccessorTypeAnnotationNode(accessor); + return setterTypeAnnotation && getTypeFromTypeNodeOrHeritageClauseElement(setterTypeAnnotation); } } return undefined; } function getTypeOfAccessors(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); checkAndStoreTypeOfAccessors(symbol, links); return links.type; } @@ -2042,19 +2311,19 @@ module ts { links = links || getSymbolLinks(symbol); if (!links.type) { links.type = resolvingType; - var getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); - var setter = getDeclarationOfKind(symbol, SyntaxKind.SetAccessor); + let getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); + let setter = getDeclarationOfKind(symbol, SyntaxKind.SetAccessor); - var type: Type; + let type: Type; // First try to see if the user specified a return type on the get-accessor. - var getterReturnType = getAnnotatedAccessorType(getter); + let getterReturnType = getAnnotatedAccessorType(getter); if (getterReturnType) { type = getterReturnType; } else { // If the user didn't specify a return type, try to use the set-accessor's parameter type. - var setterParameterType = getAnnotatedAccessorType(setter); + let setterParameterType = getAnnotatedAccessorType(setter); if (setterParameterType) { type = setterParameterType; } @@ -2081,14 +2350,14 @@ module ts { else if (links.type === resolvingType) { links.type = anyType; if (compilerOptions.noImplicitAny) { - var getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); + let getter = getDeclarationOfKind(symbol, SyntaxKind.GetAccessor); error(getter, Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol)); } } } function getTypeOfFuncClassEnumModule(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.type) { links.type = createObjectType(TypeFlags.Anonymous, symbol); } @@ -2096,23 +2365,23 @@ module ts { } function getTypeOfEnumMember(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.type) { links.type = getDeclaredTypeOfEnum(getParentOfSymbol(symbol)); } return links.type; } - function getTypeOfImport(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + function getTypeOfAlias(symbol: Symbol): Type { + let links = getSymbolLinks(symbol); if (!links.type) { - links.type = getTypeOfSymbol(resolveImport(symbol)); + links.type = getTypeOfSymbol(resolveAlias(symbol)); } return links.type; } function getTypeOfInstantiatedSymbol(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.type) { links.type = instantiateType(getTypeOfSymbol(links.target), links.mapper); } @@ -2135,8 +2404,8 @@ module ts { if (symbol.flags & SymbolFlags.Accessor) { return getTypeOfAccessors(symbol); } - if (symbol.flags & SymbolFlags.Import) { - return getTypeOfImport(symbol); + if (symbol.flags & SymbolFlags.Alias) { + return getTypeOfAlias(symbol); } return unknownType; } @@ -2148,7 +2417,7 @@ module ts { function hasBaseType(type: InterfaceType, checkBase: InterfaceType) { return check(type); function check(type: InterfaceType): boolean { - var target = getTargetType(type); + let target = getTargetType(type); return target === checkBase || forEach(target.baseTypes, check); } } @@ -2157,13 +2426,13 @@ module ts { // the same, but even if they're not we still need the complete list to ensure instantiations supply type arguments // for all type parameters. function getTypeParametersOfClassOrInterface(symbol: Symbol): TypeParameter[] { - var result: TypeParameter[]; + let result: TypeParameter[]; forEach(symbol.declarations, node => { if (node.kind === SyntaxKind.InterfaceDeclaration || node.kind === SyntaxKind.ClassDeclaration) { - var declaration = node; + let declaration = node; if (declaration.typeParameters && declaration.typeParameters.length) { forEach(declaration.typeParameters, node => { - var tp = getDeclaredTypeOfTypeParameter(getSymbolOfNode(node)); + let tp = getDeclaredTypeOfTypeParameter(getSymbolOfNode(node)); if (!result) { result = [tp]; } @@ -2178,10 +2447,10 @@ module ts { } function getDeclaredTypeOfClass(symbol: Symbol): InterfaceType { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.declaredType) { - var type = links.declaredType = createObjectType(TypeFlags.Class, symbol); - var typeParameters = getTypeParametersOfClassOrInterface(symbol); + let type = links.declaredType = createObjectType(TypeFlags.Class, symbol); + let typeParameters = getTypeParametersOfClassOrInterface(symbol); if (typeParameters) { type.flags |= TypeFlags.Reference; type.typeParameters = typeParameters; @@ -2191,10 +2460,10 @@ module ts { (type).typeArguments = type.typeParameters; } type.baseTypes = []; - var declaration = getDeclarationOfKind(symbol, SyntaxKind.ClassDeclaration); - var baseTypeNode = getClassBaseTypeNode(declaration); + let declaration = getDeclarationOfKind(symbol, SyntaxKind.ClassDeclaration); + let baseTypeNode = getClassExtendsHeritageClauseElement(declaration); if (baseTypeNode) { - var baseType = getTypeFromTypeReferenceNode(baseTypeNode); + let baseType = getTypeFromHeritageClauseElement(baseTypeNode); if (baseType !== unknownType) { if (getTargetType(baseType).flags & TypeFlags.Class) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -2219,10 +2488,10 @@ module ts { } function getDeclaredTypeOfInterface(symbol: Symbol): InterfaceType { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.declaredType) { - var type = links.declaredType = createObjectType(TypeFlags.Interface, symbol); - var typeParameters = getTypeParametersOfClassOrInterface(symbol); + let type = links.declaredType = createObjectType(TypeFlags.Interface, symbol); + let typeParameters = getTypeParametersOfClassOrInterface(symbol); if (typeParameters) { type.flags |= TypeFlags.Reference; type.typeParameters = typeParameters; @@ -2235,7 +2504,8 @@ module ts { forEach(symbol.declarations, declaration => { if (declaration.kind === SyntaxKind.InterfaceDeclaration && getInterfaceBaseTypeNodes(declaration)) { forEach(getInterfaceBaseTypeNodes(declaration), node => { - var baseType = getTypeFromTypeReferenceNode(node); + let baseType = getTypeFromHeritageClauseElement(node); + if (baseType !== unknownType) { if (getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface)) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -2262,27 +2532,27 @@ module ts { } function getDeclaredTypeOfTypeAlias(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.declaredType) { links.declaredType = resolvingType; - var declaration = getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration); - var type = getTypeFromTypeNode(declaration.type); + let declaration = getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration); + let type = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); if (links.declaredType === resolvingType) { links.declaredType = type; } } else if (links.declaredType === resolvingType) { links.declaredType = unknownType; - var declaration = getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration); + let declaration = getDeclarationOfKind(symbol, SyntaxKind.TypeAliasDeclaration); error(declaration.name, Diagnostics.Type_alias_0_circularly_references_itself, symbolToString(symbol)); } return links.declaredType; } function getDeclaredTypeOfEnum(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.declaredType) { - var type = createType(TypeFlags.Enum); + let type = createType(TypeFlags.Enum); type.symbol = symbol; links.declaredType = type; } @@ -2290,9 +2560,9 @@ module ts { } function getDeclaredTypeOfTypeParameter(symbol: Symbol): TypeParameter { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); if (!links.declaredType) { - var type = createType(TypeFlags.TypeParameter); + let type = createType(TypeFlags.TypeParameter); type.symbol = symbol; if (!(getDeclarationOfKind(symbol, SyntaxKind.TypeParameter)).constraint) { type.constraint = noConstraintType; @@ -2302,10 +2572,10 @@ module ts { return links.declaredType; } - function getDeclaredTypeOfImport(symbol: Symbol): Type { - var links = getSymbolLinks(symbol); + function getDeclaredTypeOfAlias(symbol: Symbol): Type { + let links = getSymbolLinks(symbol); if (!links.declaredType) { - links.declaredType = getDeclaredTypeOfSymbol(resolveImport(symbol)); + links.declaredType = getDeclaredTypeOfSymbol(resolveAlias(symbol)); } return links.declaredType; } @@ -2327,33 +2597,30 @@ module ts { if (symbol.flags & SymbolFlags.TypeParameter) { return getDeclaredTypeOfTypeParameter(symbol); } - if (symbol.flags & SymbolFlags.Import) { - return getDeclaredTypeOfImport(symbol); + if (symbol.flags & SymbolFlags.Alias) { + return getDeclaredTypeOfAlias(symbol); } return unknownType; } function createSymbolTable(symbols: Symbol[]): SymbolTable { - var result: SymbolTable = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + let result: SymbolTable = {}; + for (let symbol of symbols) { result[symbol.name] = symbol; } return result; } function createInstantiatedSymbolTable(symbols: Symbol[], mapper: TypeMapper): SymbolTable { - var result: SymbolTable = {}; - for (var i = 0; i < symbols.length; i++) { - var symbol = symbols[i]; + let result: SymbolTable = {}; + for (let symbol of symbols) { result[symbol.name] = instantiateSymbol(symbol, mapper); } return result; } function addInheritedMembers(symbols: SymbolTable, baseSymbols: Symbol[]) { - for (var i = 0; i < baseSymbols.length; i++) { - var s = baseSymbols[i]; + for (let s of baseSymbols) { if (!hasProperty(symbols, s.name)) { symbols[s.name] = s; } @@ -2362,18 +2629,18 @@ module ts { function addInheritedSignatures(signatures: Signature[], baseSignatures: Signature[]) { if (baseSignatures) { - for (var i = 0; i < baseSignatures.length; i++) { - signatures.push(baseSignatures[i]); + for (let signature of baseSignatures) { + signatures.push(signature); } } } function resolveClassOrInterfaceMembers(type: InterfaceType): void { - var members = type.symbol.members; - var callSignatures = type.declaredCallSignatures; - var constructSignatures = type.declaredConstructSignatures; - var stringIndexType = type.declaredStringIndexType; - var numberIndexType = type.declaredNumberIndexType; + let members = type.symbol.members; + let callSignatures = type.declaredCallSignatures; + let constructSignatures = type.declaredConstructSignatures; + let stringIndexType = type.declaredStringIndexType; + let numberIndexType = type.declaredNumberIndexType; if (type.baseTypes.length) { members = createSymbolTable(type.declaredProperties); forEach(type.baseTypes, baseType => { @@ -2388,15 +2655,15 @@ module ts { } function resolveTypeReferenceMembers(type: TypeReference): void { - var target = type.target; - var mapper = createTypeMapper(target.typeParameters, type.typeArguments); - var members = createInstantiatedSymbolTable(target.declaredProperties, mapper); - var callSignatures = instantiateList(target.declaredCallSignatures, mapper, instantiateSignature); - var constructSignatures = instantiateList(target.declaredConstructSignatures, mapper, instantiateSignature); - var stringIndexType = target.declaredStringIndexType ? instantiateType(target.declaredStringIndexType, mapper) : undefined; - var numberIndexType = target.declaredNumberIndexType ? instantiateType(target.declaredNumberIndexType, mapper) : undefined; + let target = type.target; + let mapper = createTypeMapper(target.typeParameters, type.typeArguments); + let members = createInstantiatedSymbolTable(target.declaredProperties, mapper); + let callSignatures = instantiateList(target.declaredCallSignatures, mapper, instantiateSignature); + let constructSignatures = instantiateList(target.declaredConstructSignatures, mapper, instantiateSignature); + let stringIndexType = target.declaredStringIndexType ? instantiateType(target.declaredStringIndexType, mapper) : undefined; + let numberIndexType = target.declaredNumberIndexType ? instantiateType(target.declaredNumberIndexType, mapper) : undefined; forEach(target.baseTypes, baseType => { - var instantiatedBaseType = instantiateType(baseType, mapper); + let instantiatedBaseType = instantiateType(baseType, mapper); addInheritedMembers(members, getPropertiesOfObjectType(instantiatedBaseType)); callSignatures = concatenate(callSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Call)); constructSignatures = concatenate(constructSignatures, getSignaturesOfType(instantiatedBaseType, SignatureKind.Construct)); @@ -2408,7 +2675,7 @@ module ts { function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], resolvedReturnType: Type, minArgumentCount: number, hasRestParameter: boolean, hasStringLiterals: boolean): Signature { - var sig = new Signature(checker); + let sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; @@ -2426,10 +2693,10 @@ module ts { function getDefaultConstructSignatures(classType: InterfaceType): Signature[] { if (classType.baseTypes.length) { - var baseType = classType.baseTypes[0]; - var baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), SignatureKind.Construct); + let baseType = classType.baseTypes[0]; + let baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), SignatureKind.Construct); return map(baseSignatures, baseSignature => { - var signature = baseType.flags & TypeFlags.Reference ? + let signature = baseType.flags & TypeFlags.Reference ? getSignatureInstantiation(baseSignature, (baseType).typeArguments) : cloneSignature(baseSignature); signature.typeParameters = classType.typeParameters; signature.resolvedReturnType = classType; @@ -2440,9 +2707,9 @@ module ts { } function createTupleTypeMemberSymbols(memberTypes: Type[]): SymbolTable { - var members: SymbolTable = {}; - for (var i = 0; i < memberTypes.length; i++) { - var symbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "" + i); + let members: SymbolTable = {}; + for (let i = 0; i < memberTypes.length; i++) { + let symbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "" + i); symbol.type = memberTypes[i]; members[i] = symbol; } @@ -2450,8 +2717,8 @@ module ts { } function resolveTupleTypeMembers(type: TupleType) { - var arrayType = resolveObjectOrUnionTypeMembers(createArrayType(getUnionType(type.elementTypes))); - var members = createTupleTypeMemberSymbols(type.elementTypes); + let arrayType = resolveObjectOrUnionTypeMembers(createArrayType(getUnionType(type.elementTypes))); + let members = createTupleTypeMemberSymbols(type.elementTypes); addInheritedMembers(members, arrayType.properties); setObjectTypeMembers(type, members, arrayType.callSignatures, arrayType.constructSignatures, arrayType.stringIndexType, arrayType.numberIndexType); } @@ -2460,7 +2727,7 @@ module ts { if (s.length !== t.length) { return false; } - for (var i = 0; i < s.length; i++) { + for (let i = 0; i < s.length; i++) { if (!compareSignatures(s[i], t[i], /*compareReturnTypes*/ false, compareTypes)) { return false; } @@ -2472,21 +2739,21 @@ module ts { // and if none of the signatures are generic, return a list of signatures that has substitutes a union of the // return types of the corresponding signatures in each resulting signature. function getUnionSignatures(types: Type[], kind: SignatureKind): Signature[] { - var signatureLists = map(types, t => getSignaturesOfType(t, kind)); - var signatures = signatureLists[0]; - for (var i = 0; i < signatures.length; i++) { - if (signatures[i].typeParameters) { + let signatureLists = map(types, t => getSignaturesOfType(t, kind)); + let signatures = signatureLists[0]; + for (let signature of signatures) { + if (signature.typeParameters) { return emptyArray; } } - for (var i = 1; i < signatureLists.length; i++) { + for (let i = 1; i < signatureLists.length; i++) { if (!signatureListsIdentical(signatures, signatureLists[i])) { return emptyArray; } } - var result = map(signatures, cloneSignature); + let result = map(signatures, cloneSignature); for (var i = 0; i < result.length; i++) { - var s = result[i]; + let s = result[i]; // Clear resolved return type we possibly got from cloneSignature s.resolvedReturnType = undefined; s.unionSignatures = map(signatureLists, signatures => signatures[i]); @@ -2495,9 +2762,9 @@ module ts { } function getUnionIndexType(types: Type[], kind: IndexKind): Type { - var indexTypes: Type[] = []; - for (var i = 0; i < types.length; i++) { - var indexType = getIndexTypeOfType(types[i], kind); + let indexTypes: Type[] = []; + for (let type of types) { + let indexType = getIndexTypeOfType(type, kind); if (!indexType) { return undefined; } @@ -2509,27 +2776,33 @@ module ts { function resolveUnionTypeMembers(type: UnionType) { // The members and properties collections are empty for union types. To get all properties of a union // type use getPropertiesOfType (only the language service uses this). - var callSignatures = getUnionSignatures(type.types, SignatureKind.Call); - var constructSignatures = getUnionSignatures(type.types, SignatureKind.Construct); - var stringIndexType = getUnionIndexType(type.types, IndexKind.String); - var numberIndexType = getUnionIndexType(type.types, IndexKind.Number); + let callSignatures = getUnionSignatures(type.types, SignatureKind.Call); + let constructSignatures = getUnionSignatures(type.types, SignatureKind.Construct); + let stringIndexType = getUnionIndexType(type.types, IndexKind.String); + let numberIndexType = getUnionIndexType(type.types, IndexKind.Number); setObjectTypeMembers(type, emptySymbols, callSignatures, constructSignatures, stringIndexType, numberIndexType); } function resolveAnonymousTypeMembers(type: ObjectType) { - var symbol = type.symbol; + let symbol = type.symbol; + let members: SymbolTable; + let callSignatures: Signature[]; + let constructSignatures: Signature[]; + let stringIndexType: Type; + let numberIndexType: Type; + if (symbol.flags & SymbolFlags.TypeLiteral) { - var members = symbol.members; - var callSignatures = getSignaturesOfSymbol(members["__call"]); - var constructSignatures = getSignaturesOfSymbol(members["__new"]); - var stringIndexType = getIndexTypeOfSymbol(symbol, IndexKind.String); - var numberIndexType = getIndexTypeOfSymbol(symbol, IndexKind.Number); + members = symbol.members; + callSignatures = getSignaturesOfSymbol(members["__call"]); + constructSignatures = getSignaturesOfSymbol(members["__new"]); + stringIndexType = getIndexTypeOfSymbol(symbol, IndexKind.String); + numberIndexType = getIndexTypeOfSymbol(symbol, IndexKind.Number); } else { // Combinations of function, class, enum and module - var members = emptySymbols; - var callSignatures: Signature[] = emptyArray; - var constructSignatures: Signature[] = emptyArray; + members = emptySymbols; + callSignatures = emptyArray; + constructSignatures = emptyArray; if (symbol.flags & SymbolFlags.HasExports) { members = getExportsOfSymbol(symbol); } @@ -2537,7 +2810,7 @@ module ts { callSignatures = getSignaturesOfSymbol(symbol); } if (symbol.flags & SymbolFlags.Class) { - var classType = getDeclaredTypeOfClass(symbol); + let classType = getDeclaredTypeOfClass(symbol); constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); if (!constructSignatures.length) { constructSignatures = getDefaultConstructSignatures(classType); @@ -2547,8 +2820,8 @@ module ts { addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(classType.baseTypes[0].symbol))); } } - var stringIndexType: Type = undefined; - var numberIndexType: Type = (symbol.flags & SymbolFlags.Enum) ? stringType : undefined; + stringIndexType = undefined; + numberIndexType = (symbol.flags & SymbolFlags.Enum) ? stringType : undefined; } setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } @@ -2586,9 +2859,9 @@ module ts { // the symbol for that property. Otherwise return undefined. function getPropertyOfObjectType(type: Type, name: string): Symbol { if (type.flags & TypeFlags.ObjectType) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); if (hasProperty(resolved.members, name)) { - var symbol = resolved.members[name]; + let symbol = resolved.members[name]; if (symbolIsValue(symbol)) { return symbol; } @@ -2597,9 +2870,9 @@ module ts { } function getPropertiesOfUnionType(type: UnionType): Symbol[] { - var result: Symbol[] = []; + let result: Symbol[] = []; forEach(getPropertiesOfType(type.types[0]), prop => { - var unionProp = getPropertyOfUnionType(type, prop.name); + let unionProp = getPropertyOfUnionType(type, prop.name); if (unionProp) { result.push(unionProp); } @@ -2642,12 +2915,12 @@ module ts { } function createUnionProperty(unionType: UnionType, name: string): Symbol { - var types = unionType.types; - var props: Symbol[]; - for (var i = 0; i < types.length; i++) { - var type = getApparentType(types[i]); + let types = unionType.types; + let props: Symbol[]; + for (let current of types) { + let type = getApparentType(current); if (type !== unknownType) { - var prop = getPropertyOfType(type, name); + let prop = getPropertyOfType(type, name); if (!prop) { return undefined; } @@ -2659,16 +2932,15 @@ module ts { } } } - var propTypes: Type[] = []; - var declarations: Declaration[] = []; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; + let propTypes: Type[] = []; + let declarations: Declaration[] = []; + for (let prop of props) { if (prop.declarations) { declarations.push.apply(declarations, prop.declarations); } propTypes.push(getTypeOfSymbol(prop)); } - var result = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | SymbolFlags.UnionProperty, name); + let result = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | SymbolFlags.UnionProperty, name); result.unionType = unionType; result.declarations = declarations; result.type = getUnionType(propTypes); @@ -2676,11 +2948,11 @@ module ts { } function getPropertyOfUnionType(type: UnionType, name: string): Symbol { - var properties = type.resolvedProperties || (type.resolvedProperties = {}); + let properties = type.resolvedProperties || (type.resolvedProperties = {}); if (hasProperty(properties, name)) { return properties[name]; } - var property = createUnionProperty(type, name); + let property = createUnionProperty(type, name); if (property) { properties[name] = property; } @@ -2700,15 +2972,15 @@ module ts { return undefined; } } - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); if (hasProperty(resolved.members, name)) { - var symbol = resolved.members[name]; + let symbol = resolved.members[name]; if (symbolIsValue(symbol)) { return symbol; } } if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) { - var symbol = getPropertyOfObjectType(globalFunctionType, name); + let symbol = getPropertyOfObjectType(globalFunctionType, name); if (symbol) return symbol; } return getPropertyOfObjectType(globalObjectType, name); @@ -2716,7 +2988,7 @@ module ts { function getSignaturesOfObjectOrUnionType(type: Type, kind: SignatureKind): Signature[] { if (type.flags & (TypeFlags.ObjectType | TypeFlags.Union)) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); return kind === SignatureKind.Call ? resolved.callSignatures : resolved.constructSignatures; } return emptyArray; @@ -2730,7 +3002,7 @@ module ts { function getIndexTypeOfObjectOrUnionType(type: Type, kind: IndexKind): Type { if (type.flags & (TypeFlags.ObjectType | TypeFlags.Union)) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); return kind === IndexKind.String ? resolved.stringIndexType : resolved.numberIndexType; } } @@ -2744,9 +3016,9 @@ module ts { // Return list of type parameters with duplicates removed (duplicate identifier errors are generated in the actual // type checking functions). function getTypeParametersFromDeclaration(typeParameterDeclarations: TypeParameterDeclaration[]): TypeParameter[] { - var result: TypeParameter[] = []; + let result: TypeParameter[] = []; forEach(typeParameterDeclarations, node => { - var tp = getDeclaredTypeOfTypeParameter(node.symbol); + let tp = getDeclaredTypeOfTypeParameter(node.symbol); if (!contains(result, tp)) { result.push(tp); } @@ -2754,17 +3026,27 @@ module ts { return result; } + function symbolsToArray(symbols: SymbolTable): Symbol[] { + let result: Symbol[] = []; + for (let id in symbols) { + if (!isReservedMemberName(id)) { + result.push(symbols[id]); + } + } + return result; + } + function getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature { - var links = getNodeLinks(declaration); + let links = getNodeLinks(declaration); if (!links.resolvedSignature) { - var classType = declaration.kind === SyntaxKind.Constructor ? getDeclaredTypeOfClass((declaration.parent).symbol) : undefined; - var typeParameters = classType ? classType.typeParameters : + let classType = declaration.kind === SyntaxKind.Constructor ? getDeclaredTypeOfClass((declaration.parent).symbol) : undefined; + let typeParameters = classType ? classType.typeParameters : declaration.typeParameters ? getTypeParametersFromDeclaration(declaration.typeParameters) : undefined; - var parameters: Symbol[] = []; - var hasStringLiterals = false; - var minArgumentCount = -1; - for (var i = 0, n = declaration.parameters.length; i < n; i++) { - var param = declaration.parameters[i]; + let parameters: Symbol[] = []; + let hasStringLiterals = false; + let minArgumentCount = -1; + for (let i = 0, n = declaration.parameters.length; i < n; i++) { + let param = declaration.parameters[i]; parameters.push(param.symbol); if (param.type && param.type.kind === SyntaxKind.StringLiteral) { hasStringLiterals = true; @@ -2780,18 +3062,18 @@ module ts { minArgumentCount = declaration.parameters.length; } - var returnType: Type; + let returnType: Type; if (classType) { returnType = classType; } else if (declaration.type) { - returnType = getTypeFromTypeNode(declaration.type); + returnType = getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } else { // TypeScript 1.0 spec (April 2014): // If only one accessor includes a type annotation, the other behaves as if it had the same type annotation. if (declaration.kind === SyntaxKind.GetAccessor && !hasDynamicName(declaration)) { - var setter = getDeclarationOfKind(declaration.symbol, SyntaxKind.SetAccessor); + let setter = getDeclarationOfKind(declaration.symbol, SyntaxKind.SetAccessor); returnType = getAnnotatedAccessorType(setter); } @@ -2808,9 +3090,9 @@ module ts { function getSignaturesOfSymbol(symbol: Symbol): Signature[] { if (!symbol) return emptyArray; - var result: Signature[] = []; - for (var i = 0, len = symbol.declarations.length; i < len; i++) { - var node = symbol.declarations[i]; + let result: Signature[] = []; + for (let i = 0, len = symbol.declarations.length; i < len; i++) { + let node = symbol.declarations[i]; switch (node.kind) { case SyntaxKind.FunctionType: case SyntaxKind.ConstructorType: @@ -2829,7 +3111,7 @@ module ts { // an implementation node if it has a body and the previous node is of the same kind and immediately // precedes the implementation node (i.e. has the same parent and ends where the implementation starts). if (i > 0 && (node).body) { - var previous = symbol.declarations[i - 1]; + let previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { break; } @@ -2843,14 +3125,15 @@ module ts { function getReturnTypeOfSignature(signature: Signature): Type { if (!signature.resolvedReturnType) { signature.resolvedReturnType = resolvingType; + let type: Type; if (signature.target) { - var type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); + type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } else if (signature.unionSignatures) { - var type = getUnionType(map(signature.unionSignatures, getReturnTypeOfSignature)); + type = getUnionType(map(signature.unionSignatures, getReturnTypeOfSignature)); } else { - var type = getReturnTypeFromBody(signature.declaration); + type = getReturnTypeFromBody(signature.declaration); } if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = type; @@ -2859,7 +3142,7 @@ module ts { else if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = anyType; if (compilerOptions.noImplicitAny) { - var declaration = signature.declaration; + let declaration = signature.declaration; if (declaration.name) { error(declaration.name, Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, declarationNameToString(declaration.name)); } @@ -2873,7 +3156,7 @@ module ts { function getRestTypeOfSignature(signature: Signature): Type { if (signature.hasRestParameter) { - var type = getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]); + let type = getTypeOfSymbol(signature.parameters[signature.parameters.length - 1]); if (type.flags & TypeFlags.Reference && (type).target === globalArrayType) { return (type).typeArguments[0]; } @@ -2904,8 +3187,8 @@ module ts { // object type literal or interface (using the new keyword). Each way of declaring a constructor // will result in a different declaration kind. if (!signature.isolatedSignatureType) { - var isConstructor = signature.declaration.kind === SyntaxKind.Constructor || signature.declaration.kind === SyntaxKind.ConstructSignature; - var type = createObjectType(TypeFlags.Anonymous | TypeFlags.FromSignature); + let isConstructor = signature.declaration.kind === SyntaxKind.Constructor || signature.declaration.kind === SyntaxKind.ConstructSignature; + let type = createObjectType(TypeFlags.Anonymous | TypeFlags.FromSignature); type.members = emptySymbols; type.properties = emptyArray; type.callSignatures = !isConstructor ? [signature] : emptyArray; @@ -2921,14 +3204,14 @@ module ts { } function getIndexDeclarationOfSymbol(symbol: Symbol, kind: IndexKind): SignatureDeclaration { - var syntaxKind = kind === IndexKind.Number ? SyntaxKind.NumberKeyword : SyntaxKind.StringKeyword; - var indexSymbol = getIndexSymbol(symbol); + let syntaxKind = kind === IndexKind.Number ? SyntaxKind.NumberKeyword : SyntaxKind.StringKeyword; + let indexSymbol = getIndexSymbol(symbol); if (indexSymbol) { - var len = indexSymbol.declarations.length; - for (var i = 0; i < len; i++) { - var node = indexSymbol.declarations[i]; + let len = indexSymbol.declarations.length; + for (let decl of indexSymbol.declarations) { + let node = decl; if (node.parameters.length === 1) { - var parameter = node.parameters[0]; + let parameter = node.parameters[0]; if (parameter && parameter.type && parameter.type.kind === syntaxKind) { return node; } @@ -2940,20 +3223,20 @@ module ts { } function getIndexTypeOfSymbol(symbol: Symbol, kind: IndexKind): Type { - var declaration = getIndexDeclarationOfSymbol(symbol, kind); + let declaration = getIndexDeclarationOfSymbol(symbol, kind); return declaration - ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType + ? declaration.type ? getTypeFromTypeNodeOrHeritageClauseElement(declaration.type) : anyType : undefined; } function getConstraintOfTypeParameter(type: TypeParameter): Type { if (!type.constraint) { if (type.target) { - var targetConstraint = getConstraintOfTypeParameter(type.target); + let targetConstraint = getConstraintOfTypeParameter(type.target); type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode((getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint); + type.constraint = getTypeFromTypeNodeOrHeritageClauseElement((getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint); } } return type.constraint === noConstraintType ? undefined : type.constraint; @@ -2966,9 +3249,12 @@ module ts { case 2: return types[0].id + "," + types[1].id; default: - var result = ""; - for (var i = 0; i < types.length; i++) { - if (i > 0) result += ","; + let result = ""; + for (let i = 0; i < types.length; i++) { + if (i > 0) { + result += ","; + } + result += types[i].id; } return result; @@ -2979,18 +3265,18 @@ module ts { // It is only necessary to do so if a constituent type might be the undefined type, the null type, or the type // of an object literal (since those types have widening related information we need to track). function getWideningFlagsOfTypes(types: Type[]): TypeFlags { - var result: TypeFlags = 0; - for (var i = 0; i < types.length; i++) { - result |= types[i].flags; + let result: TypeFlags = 0; + for (let type of types) { + result |= type.flags; } return result & TypeFlags.RequiresWidening; } function createTypeReference(target: GenericType, typeArguments: Type[]): TypeReference { - var id = getTypeListId(typeArguments); - var type = target.instantiations[id]; + let id = getTypeListId(typeArguments); + let type = target.instantiations[id]; if (!type) { - var flags = TypeFlags.Reference | getWideningFlagsOfTypes(typeArguments); + let flags = TypeFlags.Reference | getWideningFlagsOfTypes(typeArguments); type = target.instantiations[id] = createObjectType(flags, target.symbol); type.target = target; type.typeArguments = typeArguments; @@ -2998,14 +3284,14 @@ module ts { return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode: TypeReferenceNode, typeParameterSymbol: Symbol): boolean { - var links = getNodeLinks(typeReferenceNode); + function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode: TypeReferenceNode | HeritageClauseElement, typeParameterSymbol: Symbol): boolean { + let links = getNodeLinks(typeReferenceNode); if (links.isIllegalTypeReferenceInConstraint !== undefined) { return links.isIllegalTypeReferenceInConstraint; } // bubble up to the declaration - var currentNode: Node = typeReferenceNode; + let currentNode: Node = typeReferenceNode; // forEach === exists while (!forEach(typeParameterSymbol.declarations, d => d.parent === currentNode.parent)) { currentNode = currentNode.parent; @@ -3016,19 +3302,19 @@ module ts { } function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter: TypeParameterDeclaration): void { - var typeParameterSymbol: Symbol; + let typeParameterSymbol: Symbol; function check(n: Node): void { if (n.kind === SyntaxKind.TypeReference && (n).typeName.kind === SyntaxKind.Identifier) { - var links = getNodeLinks(n); + let links = getNodeLinks(n); if (links.isIllegalTypeReferenceInConstraint === undefined) { - var symbol = resolveName(typeParameter, ((n).typeName).text, SymbolFlags.Type, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); + let symbol = resolveName(typeParameter, ((n).typeName).text, SymbolFlags.Type, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); if (symbol && (symbol.flags & SymbolFlags.TypeParameter)) { // TypeScript 1.0 spec (April 2014): 3.4.1 - // Type parameters declared in a particular type parameter list + // Type parameters declared in a particular type parameter list // may not be referenced in constraints in that type parameter list - + // symbol.declaration.parent === typeParameter.parent - // -> typeParameter and symbol.declaration originate from the same type parameter list + // -> typeParameter and symbol.declaration originate from the same type parameter list // -> illegal for all declarations in symbol // forEach === exists links.isIllegalTypeReferenceInConstraint = forEach(symbol.declarations, d => d.parent == typeParameter.parent); @@ -3047,51 +3333,69 @@ module ts { } } - function getTypeFromTypeReferenceNode(node: TypeReferenceNode): Type { - var links = getNodeLinks(node); + function getTypeFromTypeReference(node: TypeReferenceNode): Type { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + + function getTypeFromHeritageClauseElement(node: HeritageClauseElement): Type { + return getTypeFromTypeReferenceOrHeritageClauseElement(node); + } + + function getTypeFromTypeReferenceOrHeritageClauseElement(node: TypeReferenceNode | HeritageClauseElement): Type { + let links = getNodeLinks(node); if (!links.resolvedType) { - var symbol = resolveEntityName(node, node.typeName, SymbolFlags.Type); - if (symbol) { - var type: Type; - if ((symbol.flags & SymbolFlags.TypeParameter) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - // TypeScript 1.0 spec (April 2014): 3.4.1 - // Type parameters declared in a particular type parameter list - // may not be referenced in constraints in that type parameter list - // Implementation: such type references are resolved to 'unknown' type that usually denotes error - type = unknownType; - } - else { - type = getDeclaredTypeOfSymbol(symbol); - if (type.flags & (TypeFlags.Class | TypeFlags.Interface) && type.flags & TypeFlags.Reference) { - var typeParameters = (type).typeParameters; - if (node.typeArguments && node.typeArguments.length === typeParameters.length) { - type = createTypeReference(type, map(node.typeArguments, getTypeFromTypeNode)); - } - else { - error(node, Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType), typeParameters.length); - type = undefined; - } + let type: Type; + + // We don't currently support heritage clauses with complex expressions in them. + // For these cases, we just set the type to be the unknownType. + if (node.kind !== SyntaxKind.HeritageClauseElement || isSupportedHeritageClauseElement(node)) { + let typeNameOrExpression = node.kind === SyntaxKind.TypeReference + ? (node).typeName + : (node).expression; + + let symbol = resolveEntityName(typeNameOrExpression, SymbolFlags.Type); + if (symbol) { + if ((symbol.flags & SymbolFlags.TypeParameter) && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { + // TypeScript 1.0 spec (April 2014): 3.4.1 + // Type parameters declared in a particular type parameter list + // may not be referenced in constraints in that type parameter list + // Implementation: such type references are resolved to 'unknown' type that usually denotes error + type = unknownType; } else { - if (node.typeArguments) { - error(node, Diagnostics.Type_0_is_not_generic, typeToString(type)); - type = undefined; + type = getDeclaredTypeOfSymbol(symbol); + if (type.flags & (TypeFlags.Class | TypeFlags.Interface) && type.flags & TypeFlags.Reference) { + let typeParameters = (type).typeParameters; + if (node.typeArguments && node.typeArguments.length === typeParameters.length) { + type = createTypeReference(type, map(node.typeArguments, getTypeFromTypeNodeOrHeritageClauseElement)); + } + else { + error(node, Diagnostics.Generic_type_0_requires_1_type_argument_s, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType), typeParameters.length); + type = undefined; + } + } + else { + if (node.typeArguments) { + error(node, Diagnostics.Type_0_is_not_generic, typeToString(type)); + type = undefined; + } } } } } + links.resolvedType = type || unknownType; } return links.resolvedType; } function getTypeFromTypeQueryNode(node: TypeQueryNode): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { // TypeScript 1.0 spec (April 2014): 3.6.3 // The expression is processed as an identifier expression (section 4.3) // or property access expression(section 4.10), - // the widened type(section 3.9) of which becomes the result. + // the widened type(section 3.9) of which becomes the result. links.resolvedType = getWidenedType(checkExpressionOrQualifiedName(node.exprName)); } return links.resolvedType; @@ -3100,9 +3404,8 @@ module ts { function getTypeOfGlobalSymbol(symbol: Symbol, arity: number): ObjectType { function getTypeDeclaration(symbol: Symbol): Declaration { - var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + let declarations = symbol.declarations; + for (let declaration of declarations) { switch (declaration.kind) { case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: @@ -3115,7 +3418,7 @@ module ts { if (!symbol) { return emptyObjectType; } - var type = getDeclaredTypeOfSymbol(symbol); + let type = getDeclaredTypeOfSymbol(symbol); if (!(type.flags & TypeFlags.ObjectType)) { error(getTypeDeclaration(symbol), Diagnostics.Global_type_0_must_be_a_class_or_interface_type, symbol.name); return emptyObjectType; @@ -3139,8 +3442,8 @@ module ts { return resolveName(undefined, name, meaning, diagnostic, name); } - function getGlobalType(name: string): ObjectType { - return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), 0); + function getGlobalType(name: string, arity = 0): ObjectType { + return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } function getGlobalESSymbolConstructorSymbol() { @@ -3151,21 +3454,21 @@ module ts { // globalArrayType will be undefined if we get here during creation of the Array type. This for example happens if // user code augments the Array type with call or construct signatures that have an array type as the return type. // We instead use globalArraySymbol to obtain the (not yet fully constructed) Array type. - var arrayType = globalArrayType || getDeclaredTypeOfSymbol(globalArraySymbol); + let arrayType = globalArrayType || getDeclaredTypeOfSymbol(globalArraySymbol); return arrayType !== emptyObjectType ? createTypeReference(arrayType, [elementType]) : emptyObjectType; } function getTypeFromArrayTypeNode(node: ArrayTypeNode): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createArrayType(getTypeFromTypeNode(node.elementType)); + links.resolvedType = createArrayType(getTypeFromTypeNodeOrHeritageClauseElement(node.elementType)); } return links.resolvedType; } function createTupleType(elementTypes: Type[]) { - var id = getTypeListId(elementTypes); - var type = tupleTypes[id]; + let id = getTypeListId(elementTypes); + let type = tupleTypes[id]; if (!type) { type = tupleTypes[id] = createObjectType(TypeFlags.Tuple); type.elementTypes = elementTypes; @@ -3174,9 +3477,9 @@ module ts { } function getTypeFromTupleTypeNode(node: TupleTypeNode): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromTypeNode)); + links.resolvedType = createTupleType(map(node.elementTypes, getTypeFromTypeNodeOrHeritageClauseElement)); } return links.resolvedType; } @@ -3186,8 +3489,8 @@ module ts { addTypesToSortedSet(sortedSet, (type).types); } else { - var i = 0; - var id = type.id; + let i = 0; + let id = type.id; while (i < sortedSet.length && sortedSet[i].id < id) { i++; } @@ -3198,14 +3501,14 @@ module ts { } function addTypesToSortedSet(sortedTypes: Type[], types: Type[]) { - for (var i = 0, len = types.length; i < len; i++) { - addTypeToSortedSet(sortedTypes, types[i]); + for (let type of types) { + addTypeToSortedSet(sortedTypes, type); } } function isSubtypeOfAny(candidate: Type, types: Type[]): boolean { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && isTypeSubtypeOf(candidate, types[i])) { + for (let type of types) { + if (candidate !== type && isTypeSubtypeOf(candidate, type)) { return true; } } @@ -3213,7 +3516,7 @@ module ts { } function removeSubtypes(types: Type[]) { - var i = types.length; + let i = types.length; while (i > 0) { i--; if (isSubtypeOfAny(types[i], types)) { @@ -3223,8 +3526,8 @@ module ts { } function containsAnyType(types: Type[]) { - for (var i = 0; i < types.length; i++) { - if (types[i].flags & TypeFlags.Any) { + for (let type of types) { + if (type.flags & TypeFlags.Any) { return true; } } @@ -3232,7 +3535,7 @@ module ts { } function removeAllButLast(types: Type[], typeToRemove: Type) { - var i = types.length; + let i = types.length; while (i > 0 && types.length > 1) { i--; if (types[i] === typeToRemove) { @@ -3245,7 +3548,7 @@ module ts { if (types.length === 0) { return emptyObjectType; } - var sortedTypes: Type[] = []; + let sortedTypes: Type[] = []; addTypesToSortedSet(sortedTypes, types); if (noSubtypeReduction) { if (containsAnyType(sortedTypes)) { @@ -3260,8 +3563,8 @@ module ts { if (sortedTypes.length === 1) { return sortedTypes[0]; } - var id = getTypeListId(sortedTypes); - var type = unionTypes[id]; + let id = getTypeListId(sortedTypes); + let type = unionTypes[id]; if (!type) { type = unionTypes[id] = createObjectType(TypeFlags.Union | getWideningFlagsOfTypes(sortedTypes)); type.types = sortedTypes; @@ -3270,15 +3573,15 @@ module ts { } function getTypeFromUnionTypeNode(node: UnionTypeNode): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNode), /*noSubtypeReduction*/ true); + links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNodeOrHeritageClauseElement), /*noSubtypeReduction*/ true); } return links.resolvedType; } function getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node: Node): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { // Deferred resolution of members is handled by resolveObjectTypeMembers links.resolvedType = createObjectType(TypeFlags.Anonymous, node.symbol); @@ -3291,20 +3594,20 @@ module ts { return stringLiteralTypes[node.text]; } - var type = stringLiteralTypes[node.text] = createType(TypeFlags.StringLiteral); + let type = stringLiteralTypes[node.text] = createType(TypeFlags.StringLiteral); type.text = getTextOfNode(node); return type; } function getTypeFromStringLiteral(node: LiteralExpression): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { links.resolvedType = getStringLiteralType(node); } return links.resolvedType; } - function getTypeFromTypeNode(node: TypeNode | LiteralExpression): Type { + function getTypeFromTypeNodeOrHeritageClauseElement(node: TypeNode | LiteralExpression | HeritageClauseElement): Type { switch (node.kind) { case SyntaxKind.AnyKeyword: return anyType; @@ -3321,7 +3624,9 @@ module ts { case SyntaxKind.StringLiteral: return getTypeFromStringLiteral(node); case SyntaxKind.TypeReference: - return getTypeFromTypeReferenceNode(node); + return getTypeFromTypeReference(node); + case SyntaxKind.HeritageClauseElement: + return getTypeFromHeritageClauseElement(node); case SyntaxKind.TypeQuery: return getTypeFromTypeQueryNode(node); case SyntaxKind.ArrayType: @@ -3331,7 +3636,7 @@ module ts { case SyntaxKind.UnionType: return getTypeFromUnionTypeNode(node); case SyntaxKind.ParenthesizedType: - return getTypeFromTypeNode((node).type); + return getTypeFromTypeNodeOrHeritageClauseElement((node).type); case SyntaxKind.FunctionType: case SyntaxKind.ConstructorType: case SyntaxKind.TypeLiteral: @@ -3340,7 +3645,7 @@ module ts { // Callers should first ensure this by calling isTypeNode case SyntaxKind.Identifier: case SyntaxKind.QualifiedName: - var symbol = getSymbolInfo(node); + let symbol = getSymbolInfo(node); return symbol && getDeclaredTypeOfSymbol(symbol); default: return unknownType; @@ -3349,9 +3654,9 @@ module ts { function instantiateList(items: T[], mapper: TypeMapper, instantiator: (item: T, mapper: TypeMapper) => T): T[] { if (items && items.length) { - var result: T[] = []; - for (var i = 0; i < items.length; i++) { - result.push(instantiator(items[i], mapper)); + let result: T[] = []; + for (let v of items) { + result.push(instantiator(v, mapper)); } return result; } @@ -3372,8 +3677,10 @@ module ts { case 2: return createBinaryTypeMapper(sources[0], targets[0], sources[1], targets[1]); } return t => { - for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) return targets[i]; + for (let i = 0; i < sources.length; i++) { + if (t === sources[i]) { + return targets[i]; + } } return t; }; @@ -3393,8 +3700,10 @@ module ts { case 2: return createBinaryTypeEraser(sources[0], sources[1]); } return t => { - for (var i = 0; i < sources.length; i++) { - if (t === sources[i]) return anyType; + for (let source of sources) { + if (t === source) { + return anyType; + } } return t; }; @@ -3402,8 +3711,9 @@ module ts { function createInferenceMapper(context: InferenceContext): TypeMapper { return t => { - for (var i = 0; i < context.typeParameters.length; i++) { + for (let i = 0; i < context.typeParameters.length; i++) { if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; return getInferredType(context, i); } } @@ -3420,7 +3730,7 @@ module ts { } function instantiateTypeParameter(typeParameter: TypeParameter, mapper: TypeMapper): TypeParameter { - var result = createType(TypeFlags.TypeParameter); + let result = createType(TypeFlags.TypeParameter); result.symbol = typeParameter.symbol; if (typeParameter.constraint) { result.constraint = instantiateType(typeParameter.constraint, mapper); @@ -3433,11 +3743,12 @@ module ts { } function instantiateSignature(signature: Signature, mapper: TypeMapper, eraseTypeParameters?: boolean): Signature { + let freshTypeParameters: TypeParameter[]; if (signature.typeParameters && !eraseTypeParameters) { - var freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); } - var result = createSignature(signature.declaration, freshTypeParameters, + let result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), signature.resolvedReturnType ? instantiateType(signature.resolvedReturnType, mapper) : undefined, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); @@ -3448,7 +3759,7 @@ module ts { function instantiateSymbol(symbol: Symbol, mapper: TypeMapper): Symbol { if (symbol.flags & SymbolFlags.Instantiated) { - var links = getSymbolLinks(symbol); + let links = getSymbolLinks(symbol); // If symbol being instantiated is itself a instantiation, fetch the original target and combine the // type mappers. This ensures that original type identities are properly preserved and that aliases // always reference a non-aliases. @@ -3456,9 +3767,9 @@ module ts { mapper = combineTypeMappers(links.mapper, mapper); } - // Keep the flags from the symbol we're instantiating. Mark that is instantiated, and + // Keep the flags from the symbol we're instantiating. Mark that is instantiated, and // also transient so that we can just store data on it directly. - var result = createSymbol(SymbolFlags.Instantiated | SymbolFlags.Transient | symbol.flags, symbol.name); + let result = createSymbol(SymbolFlags.Instantiated | SymbolFlags.Transient | symbol.flags, symbol.name); result.declarations = symbol.declarations; result.parent = symbol.parent; result.target = symbol; @@ -3471,13 +3782,13 @@ module ts { } function instantiateAnonymousType(type: ObjectType, mapper: TypeMapper): ObjectType { - var result = createObjectType(TypeFlags.Anonymous, type.symbol); + let result = createObjectType(TypeFlags.Anonymous, type.symbol); result.properties = instantiateList(getPropertiesOfObjectType(type), mapper, instantiateSymbol); result.members = createSymbolTable(result.properties); result.callSignatures = instantiateList(getSignaturesOfType(type, SignatureKind.Call), mapper, instantiateSignature); result.constructSignatures = instantiateList(getSignaturesOfType(type, SignatureKind.Construct), mapper, instantiateSignature); - var stringIndexType = getIndexTypeOfType(type, IndexKind.String); - var numberIndexType = getIndexTypeOfType(type, IndexKind.Number); + let stringIndexType = getIndexTypeOfType(type, IndexKind.String); + let numberIndexType = getIndexTypeOfType(type, IndexKind.Number); if (stringIndexType) result.stringIndexType = instantiateType(stringIndexType, mapper); if (numberIndexType) result.numberIndexType = instantiateType(numberIndexType, mapper); return result; @@ -3522,7 +3833,7 @@ module ts { isContextSensitive((node).whenFalse); case SyntaxKind.BinaryExpression: return (node).operatorToken.kind === SyntaxKind.BarBarToken && - (isContextSensitive((node).left) || isContextSensitive((node).right)); + (isContextSensitive((node).left) || isContextSensitive((node).right)); case SyntaxKind.PropertyAssignment: return isContextSensitive((node).initializer); case SyntaxKind.MethodDeclaration: @@ -3541,9 +3852,9 @@ module ts { function getTypeWithoutConstructors(type: Type): Type { if (type.flags & TypeFlags.ObjectType) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); if (resolved.constructSignatures.length) { - var result = createObjectType(TypeFlags.Anonymous, type.symbol); + let result = createObjectType(TypeFlags.Anonymous, type.symbol); result.members = resolved.members; result.properties = resolved.properties; result.callSignatures = resolved.callSignatures; @@ -3556,9 +3867,9 @@ module ts { // TYPE CHECKING - var subtypeRelation: Map = {}; - var assignableRelation: Map = {}; - var identityRelation: Map = {}; + let subtypeRelation: Map = {}; + let assignableRelation: Map = {}; + let identityRelation: Map = {}; function isTypeIdenticalTo(source: Type, target: Type): boolean { return checkTypeRelatedTo(source, target, identityRelation, /*errorNode*/ undefined); @@ -3585,8 +3896,8 @@ module ts { } function isSignatureAssignableTo(source: Signature, target: Signature): boolean { - var sourceType = getOrCreateTypeFromSignature(source); - var targetType = getOrCreateTypeFromSignature(target); + let sourceType = getOrCreateTypeFromSignature(source); + let targetType = getOrCreateTypeFromSignature(target); return checkTypeRelatedTo(sourceType, targetType, assignableRelation, /*errorNode*/ undefined); } @@ -3598,17 +3909,18 @@ module ts { headMessage?: DiagnosticMessage, containingMessageChain?: DiagnosticMessageChain): boolean { - var errorInfo: DiagnosticMessageChain; - var sourceStack: ObjectType[]; - var targetStack: ObjectType[]; - var maybeStack: Map[]; - var expandingFlags: number; - var depth = 0; - var overflow = false; + let errorInfo: DiagnosticMessageChain; + let sourceStack: ObjectType[]; + let targetStack: ObjectType[]; + let maybeStack: Map[]; + let expandingFlags: number; + let depth = 0; + let overflow = false; + let elaborateErrors = false; Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking"); - var result = isRelatedTo(source, target, errorNode !== undefined, headMessage); + let result = isRelatedTo(source, target, errorNode !== undefined, headMessage); if (overflow) { error(errorNode, Diagnostics.Excessive_stack_depth_comparing_types_0_and_1, typeToString(source), typeToString(target)); } @@ -3619,7 +3931,8 @@ module ts { // where errors were being reported. if (errorInfo.next === undefined) { errorInfo = undefined; - isRelatedTo(source, target, errorNode !== undefined, headMessage, /* elaborateErrors */ true); + elaborateErrors = true; + isRelatedTo(source, target, errorNode !== undefined, headMessage); } if (containingMessageChain) { errorInfo = concatenateDiagnosticMessageChains(containingMessageChain, errorInfo); @@ -3637,8 +3950,8 @@ module ts { // Ternary.True if they are related with no assumptions, // Ternary.Maybe if they are related with assumptions of other relationships, or // Ternary.False if they are not related. - function isRelatedTo(source: Type, target: Type, reportErrors?: boolean, headMessage?: DiagnosticMessage, elaborateErrors = false): Ternary { - var result: Ternary; + function isRelatedTo(source: Type, target: Type, reportErrors?: boolean, headMessage?: DiagnosticMessage): Ternary { + let result: Ternary; // both types are the same - covers 'they are the same primitive type or both are Any' or the same type parameter cases if (source === target) return Ternary.True; if (relation !== identityRelation) { @@ -3691,7 +4004,7 @@ module ts { } } else { - var saveErrorInfo = errorInfo; + let saveErrorInfo = errorInfo; if (source.flags & TypeFlags.Reference && target.flags & TypeFlags.Reference && (source).target === (target).target) { // We have type references to same target type, see if relationship holds for all type arguments if (result = typesRelatedTo((source).typeArguments, (target).typeArguments, reportErrors)) { @@ -3700,19 +4013,19 @@ module ts { } // Even if relationship doesn't hold for type arguments, it may hold in a structural comparison // Report structural errors only if we haven't reported any errors yet - var reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; + let reportStructuralErrors = reportErrors && errorInfo === saveErrorInfo; // identity relation does not use apparent type - var sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); + let sourceOrApparentType = relation === identityRelation ? source : getApparentType(source); if (sourceOrApparentType.flags & TypeFlags.ObjectType && target.flags & TypeFlags.ObjectType && - (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors, elaborateErrors))) { + (result = objectTypeRelatedTo(sourceOrApparentType, target, reportStructuralErrors))) { errorInfo = saveErrorInfo; return result; } } if (reportErrors) { headMessage = headMessage || Diagnostics.Type_0_is_not_assignable_to_type_1; - var sourceType = typeToString(source); - var targetType = typeToString(target); + let sourceType = typeToString(source); + let targetType = typeToString(target); if (sourceType === targetType) { sourceType = typeToString(source, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType); targetType = typeToString(target, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType); @@ -3723,10 +4036,10 @@ module ts { } function unionTypeRelatedToUnionType(source: UnionType, target: UnionType): Ternary { - var result = Ternary.True; - var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = typeRelatedToUnionType(sourceTypes[i], target, false); + let result = Ternary.True; + let sourceTypes = source.types; + for (let sourceType of sourceTypes) { + let related = typeRelatedToUnionType(sourceType, target, false); if (!related) { return Ternary.False; } @@ -3736,9 +4049,9 @@ module ts { } function typeRelatedToUnionType(source: Type, target: UnionType, reportErrors: boolean): Ternary { - var targetTypes = target.types; - for (var i = 0, len = targetTypes.length; i < len; i++) { - var related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); + let targetTypes = target.types; + for (let i = 0, len = targetTypes.length; i < len; i++) { + let related = isRelatedTo(source, targetTypes[i], reportErrors && i === len - 1); if (related) { return related; } @@ -3747,10 +4060,10 @@ module ts { } function unionTypeRelatedToType(source: UnionType, target: Type, reportErrors: boolean): Ternary { - var result = Ternary.True; - var sourceTypes = source.types; - for (var i = 0, len = sourceTypes.length; i < len; i++) { - var related = isRelatedTo(sourceTypes[i], target, reportErrors); + let result = Ternary.True; + let sourceTypes = source.types; + for (let sourceType of sourceTypes) { + let related = isRelatedTo(sourceType, target, reportErrors); if (!related) { return Ternary.False; } @@ -3760,9 +4073,9 @@ module ts { } function typesRelatedTo(sources: Type[], targets: Type[], reportErrors: boolean): Ternary { - var result = Ternary.True; - for (var i = 0, len = sources.length; i < len; i++) { - var related = isRelatedTo(sources[i], targets[i], reportErrors); + let result = Ternary.True; + for (let i = 0, len = sources.length; i < len; i++) { + let related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return Ternary.False; } @@ -3787,7 +4100,7 @@ module ts { } else { while (true) { - var constraint = getConstraintOfTypeParameter(source); + let constraint = getConstraintOfTypeParameter(source); if (constraint === target) return Ternary.True; if (!(constraint && constraint.flags & TypeFlags.TypeParameter)) break; source = constraint; @@ -3801,13 +4114,13 @@ module ts { // Third, check if both types are part of deeply nested chains of generic type instantiations and if so assume the types are // equal and infinitely expanding. Fourth, if we have reached a depth of 100 nested comparisons, assume we have runaway recursion // and issue an error. Otherwise, actually compare the structure of the two types. - function objectTypeRelatedTo(source: ObjectType, target: ObjectType, reportErrors: boolean, elaborateErrors = false): Ternary { + function objectTypeRelatedTo(source: ObjectType, target: ObjectType, reportErrors: boolean): Ternary { if (overflow) { return Ternary.False; } - var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; - var related = relation[id]; - //var related: RelationComparisonResult = undefined; // relation[id]; + let id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; + let related = relation[id]; + //let related: RelationComparisonResult = undefined; // relation[id]; if (related !== undefined) { // If we computed this relation already and it was failed and reported, or if we're not being asked to elaborate // errors, we can use the cached value. Otherwise, recompute the relation @@ -3816,7 +4129,7 @@ module ts { } } if (depth > 0) { - for (var i = 0; i < depth; i++) { + for (let i = 0; i < depth; i++) { // If source and target are already being compared, consider them related with assumptions if (maybeStack[i][id]) { return Ternary.Maybe; @@ -3838,14 +4151,15 @@ module ts { maybeStack[depth] = {}; maybeStack[depth][id] = RelationComparisonResult.Succeeded; depth++; - var saveExpandingFlags = expandingFlags; + let saveExpandingFlags = expandingFlags; if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack)) expandingFlags |= 2; + let result: Ternary; if (expandingFlags === 3) { - var result = Ternary.Maybe; + result = Ternary.Maybe; } else { - var result = propertiesRelatedTo(source, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { result &= signaturesRelatedTo(source, target, SignatureKind.Call, reportErrors); if (result) { @@ -3862,9 +4176,9 @@ module ts { expandingFlags = saveExpandingFlags; depth--; if (result) { - var maybeCache = maybeStack[depth]; + let maybeCache = maybeStack[depth]; // If result is definitely true, copy assumptions to global cache, else copy to next level up - var destinationCache = (result === Ternary.True || depth === 0) ? relation : maybeStack[depth - 1]; + let destinationCache = (result === Ternary.True || depth === 0) ? relation : maybeStack[depth - 1]; copyMap(maybeCache, destinationCache); } else { @@ -3882,10 +4196,10 @@ module ts { // some level beyond that. function isDeeplyNestedGeneric(type: ObjectType, stack: ObjectType[]): boolean { if (type.flags & TypeFlags.Reference && depth >= 10) { - var target = (type).target; - var count = 0; - for (var i = 0; i < depth; i++) { - var t = stack[i]; + let target = (type).target; + let count = 0; + for (let i = 0; i < depth; i++) { + let t = stack[i]; if (t.flags & TypeFlags.Reference && (t).target === target) { count++; if (count >= 10) return true; @@ -3899,12 +4213,11 @@ module ts { if (relation === identityRelation) { return propertiesIdenticalTo(source, target); } - var result = Ternary.True; - var properties = getPropertiesOfObjectType(target); - var requireOptionalProperties = relation === subtypeRelation && !(source.flags & TypeFlags.ObjectLiteral); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; - var sourceProp = getPropertyOfType(source, targetProp.name); + let result = Ternary.True; + let properties = getPropertiesOfObjectType(target); + let requireOptionalProperties = relation === subtypeRelation && !(source.flags & TypeFlags.ObjectLiteral); + for (let targetProp of properties) { + let sourceProp = getPropertyOfType(source, targetProp.name); if (sourceProp !== targetProp) { if (!sourceProp) { if (!(targetProp.flags & SymbolFlags.Optional) || requireOptionalProperties) { @@ -3915,8 +4228,8 @@ module ts { } } else if (!(targetProp.flags & SymbolFlags.Prototype)) { - var sourceFlags = getDeclarationFlagsFromSymbol(sourceProp); - var targetFlags = getDeclarationFlagsFromSymbol(targetProp); + let sourceFlags = getDeclarationFlagsFromSymbol(sourceProp); + let targetFlags = getDeclarationFlagsFromSymbol(targetProp); if (sourceFlags & NodeFlags.Private || targetFlags & NodeFlags.Private) { if (sourceProp.valueDeclaration !== targetProp.valueDeclaration) { if (reportErrors) { @@ -3933,9 +4246,9 @@ module ts { } } else if (targetFlags & NodeFlags.Protected) { - var sourceDeclaredInClass = sourceProp.parent && sourceProp.parent.flags & SymbolFlags.Class; - var sourceClass = sourceDeclaredInClass ? getDeclaredTypeOfSymbol(sourceProp.parent) : undefined; - var targetClass = getDeclaredTypeOfSymbol(targetProp.parent); + let sourceDeclaredInClass = sourceProp.parent && sourceProp.parent.flags & SymbolFlags.Class; + let sourceClass = sourceDeclaredInClass ? getDeclaredTypeOfSymbol(sourceProp.parent) : undefined; + let targetClass = getDeclaredTypeOfSymbol(targetProp.parent); if (!sourceClass || !hasBaseType(sourceClass, targetClass)) { if (reportErrors) { reportError(Diagnostics.Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2, @@ -3951,7 +4264,7 @@ module ts { } return Ternary.False; } - var related = isRelatedTo(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp), reportErrors); + let related = isRelatedTo(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp), reportErrors); if (!related) { if (reportErrors) { reportError(Diagnostics.Types_of_property_0_are_incompatible, symbolToString(targetProp)); @@ -3964,7 +4277,7 @@ module ts { // S is a subtype of a type T, and T is a supertype of S if ... // S' and T are object types and, for each member M in T.. // M is a property and S' contains a property N where - // if M is a required property, N is also a required property + // if M is a required property, N is also a required property // (M - property in T) // (N - property in S) if (reportErrors) { @@ -3980,19 +4293,18 @@ module ts { } function propertiesIdenticalTo(source: ObjectType, target: ObjectType): Ternary { - var sourceProperties = getPropertiesOfObjectType(source); - var targetProperties = getPropertiesOfObjectType(target); + let sourceProperties = getPropertiesOfObjectType(source); + let targetProperties = getPropertiesOfObjectType(target); if (sourceProperties.length !== targetProperties.length) { return Ternary.False; } - var result = Ternary.True; - for (var i = 0, len = sourceProperties.length; i < len; ++i) { - var sourceProp = sourceProperties[i]; - var targetProp = getPropertyOfObjectType(target, sourceProp.name); + let result = Ternary.True; + for (let sourceProp of sourceProperties) { + let targetProp = getPropertyOfObjectType(target, sourceProp.name); if (!targetProp) { return Ternary.False; } - var related = compareProperties(sourceProp, targetProp, isRelatedTo); + let related = compareProperties(sourceProp, targetProp, isRelatedTo); if (!related) { return Ternary.False; } @@ -4008,18 +4320,16 @@ module ts { if (target === anyFunctionType || source === anyFunctionType) { return Ternary.True; } - var sourceSignatures = getSignaturesOfType(source, kind); - var targetSignatures = getSignaturesOfType(target, kind); - var result = Ternary.True; - var saveErrorInfo = errorInfo; - outer: for (var i = 0; i < targetSignatures.length; i++) { - var t = targetSignatures[i]; + let sourceSignatures = getSignaturesOfType(source, kind); + let targetSignatures = getSignaturesOfType(target, kind); + let result = Ternary.True; + let saveErrorInfo = errorInfo; + outer: for (let t of targetSignatures) { if (!t.hasStringLiterals || target.flags & TypeFlags.FromSignature) { - var localErrors = reportErrors; - for (var j = 0; j < sourceSignatures.length; j++) { - var s = sourceSignatures[j]; + let localErrors = reportErrors; + for (let s of sourceSignatures) { if (!s.hasStringLiterals || source.flags & TypeFlags.FromSignature) { - var related = signatureRelatedTo(s, t, localErrors); + let related = signatureRelatedTo(s, t, localErrors); if (related) { result &= related; errorInfo = saveErrorInfo; @@ -4042,9 +4352,9 @@ module ts { if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { return Ternary.False; } - var sourceMax = source.parameters.length; - var targetMax = target.parameters.length; - var checkCount: number; + let sourceMax = source.parameters.length; + let targetMax = target.parameters.length; + let checkCount: number; if (source.hasRestParameter && target.hasRestParameter) { checkCount = sourceMax > targetMax ? sourceMax : targetMax; sourceMax--; @@ -4065,12 +4375,12 @@ module ts { // M and N (the signatures) are instantiated using type Any as the type argument for all type parameters declared by M and N source = getErasedSignature(source); target = getErasedSignature(target); - var result = Ternary.True; - for (var i = 0; i < checkCount; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); - var saveErrorInfo = errorInfo; - var related = isRelatedTo(s, t, reportErrors); + let result = Ternary.True; + for (let i = 0; i < checkCount; i++) { + let s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + let t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + let saveErrorInfo = errorInfo; + let related = isRelatedTo(s, t, reportErrors); if (!related) { related = isRelatedTo(t, s, false); if (!related) { @@ -4085,21 +4395,21 @@ module ts { } result &= related; } - var t = getReturnTypeOfSignature(target); + let t = getReturnTypeOfSignature(target); if (t === voidType) return result; - var s = getReturnTypeOfSignature(source); + let s = getReturnTypeOfSignature(source); return result & isRelatedTo(s, t, reportErrors); } function signaturesIdenticalTo(source: ObjectType, target: ObjectType, kind: SignatureKind): Ternary { - var sourceSignatures = getSignaturesOfType(source, kind); - var targetSignatures = getSignaturesOfType(target, kind); + let sourceSignatures = getSignaturesOfType(source, kind); + let targetSignatures = getSignaturesOfType(target, kind); if (sourceSignatures.length !== targetSignatures.length) { return Ternary.False; } - var result = Ternary.True; - for (var i = 0, len = sourceSignatures.length; i < len; ++i) { - var related = compareSignatures(sourceSignatures[i], targetSignatures[i], /*compareReturnTypes*/ true, isRelatedTo); + let result = Ternary.True; + for (let i = 0, len = sourceSignatures.length; i < len; ++i) { + let related = compareSignatures(sourceSignatures[i], targetSignatures[i], /*compareReturnTypes*/ true, isRelatedTo); if (!related) { return Ternary.False; } @@ -4112,16 +4422,16 @@ module ts { if (relation === identityRelation) { return indexTypesIdenticalTo(IndexKind.String, source, target); } - var targetType = getIndexTypeOfType(target, IndexKind.String); + let targetType = getIndexTypeOfType(target, IndexKind.String); if (targetType) { - var sourceType = getIndexTypeOfType(source, IndexKind.String); + let sourceType = getIndexTypeOfType(source, IndexKind.String); if (!sourceType) { if (reportErrors) { reportError(Diagnostics.Index_signature_is_missing_in_type_0, typeToString(source)); } return Ternary.False; } - var related = isRelatedTo(sourceType, targetType, reportErrors); + let related = isRelatedTo(sourceType, targetType, reportErrors); if (!related) { if (reportErrors) { reportError(Diagnostics.Index_signatures_are_incompatible); @@ -4137,22 +4447,23 @@ module ts { if (relation === identityRelation) { return indexTypesIdenticalTo(IndexKind.Number, source, target); } - var targetType = getIndexTypeOfType(target, IndexKind.Number); + let targetType = getIndexTypeOfType(target, IndexKind.Number); if (targetType) { - var sourceStringType = getIndexTypeOfType(source, IndexKind.String); - var sourceNumberType = getIndexTypeOfType(source, IndexKind.Number); + let sourceStringType = getIndexTypeOfType(source, IndexKind.String); + let sourceNumberType = getIndexTypeOfType(source, IndexKind.Number); if (!(sourceStringType || sourceNumberType)) { if (reportErrors) { reportError(Diagnostics.Index_signature_is_missing_in_type_0, typeToString(source)); } return Ternary.False; } + let related: Ternary; if (sourceStringType && sourceNumberType) { // If we know for sure we're testing both string and numeric index types then only report errors from the second one - var related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { - var related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); } if (!related) { if (reportErrors) { @@ -4166,8 +4477,8 @@ module ts { } function indexTypesIdenticalTo(indexKind: IndexKind, source: ObjectType, target: ObjectType): Ternary { - var targetType = getIndexTypeOfType(target, indexKind); - var sourceType = getIndexTypeOfType(source, indexKind); + let targetType = getIndexTypeOfType(target, indexKind); + let sourceType = getIndexTypeOfType(source, indexKind); if (!sourceType && !targetType) { return Ternary.True; } @@ -4189,8 +4500,8 @@ module ts { if (sourceProp === targetProp) { return Ternary.True; } - var sourcePropAccessibility = getDeclarationFlagsFromSymbol(sourceProp) & (NodeFlags.Private | NodeFlags.Protected); - var targetPropAccessibility = getDeclarationFlagsFromSymbol(targetProp) & (NodeFlags.Private | NodeFlags.Protected); + let sourcePropAccessibility = getDeclarationFlagsFromSymbol(sourceProp) & (NodeFlags.Private | NodeFlags.Protected); + let targetPropAccessibility = getDeclarationFlagsFromSymbol(targetProp) & (NodeFlags.Private | NodeFlags.Protected); if (sourcePropAccessibility !== targetPropAccessibility) { return Ternary.False; } @@ -4216,13 +4527,13 @@ module ts { source.hasRestParameter !== target.hasRestParameter) { return Ternary.False; } - var result = Ternary.True; + let result = Ternary.True; if (source.typeParameters && target.typeParameters) { if (source.typeParameters.length !== target.typeParameters.length) { return Ternary.False; } - for (var i = 0, len = source.typeParameters.length; i < len; ++i) { - var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); + for (let i = 0, len = source.typeParameters.length; i < len; ++i) { + let related = compareTypes(source.typeParameters[i], target.typeParameters[i]); if (!related) { return Ternary.False; } @@ -4236,10 +4547,10 @@ module ts { // M and N (the signatures) are instantiated using type Any as the type argument for all type parameters declared by M and N source = getErasedSignature(source); target = getErasedSignature(target); - for (var i = 0, len = source.parameters.length; i < len; i++) { - var s = source.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); - var t = target.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); - var related = compareTypes(s, t); + for (let i = 0, len = source.parameters.length; i < len; i++) { + let s = source.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); + let t = target.hasRestParameter && i === len - 1 ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]); + let related = compareTypes(s, t); if (!related) { return Ternary.False; } @@ -4252,8 +4563,8 @@ module ts { } function isSupertypeOfEach(candidate: Type, types: Type[]): boolean { - for (var i = 0, len = types.length; i < len; i++) { - if (candidate !== types[i] && !isTypeSubtypeOf(types[i], candidate)) return false; + for (let type of types) { + if (candidate !== type && !isTypeSubtypeOf(type, candidate)) return false; } return true; } @@ -4263,14 +4574,17 @@ module ts { } function reportNoCommonSupertypeError(types: Type[], errorLocation: Node, errorMessageChainHead: DiagnosticMessageChain): void { - var bestSupertype: Type; - var bestSupertypeDownfallType: Type; // The type that caused bestSupertype not to be the common supertype - var bestSupertypeScore = 0; + // The downfallType/bestSupertypeDownfallType is the first type that caused a particular candidate + // to not be the common supertype. So if it weren't for this one downfallType (and possibly others), + // the type in question could have been the common supertype. + let bestSupertype: Type; + let bestSupertypeDownfallType: Type; + let bestSupertypeScore = 0; - for (var i = 0; i < types.length; i++) { - var score = 0; - var downfallType: Type = undefined; - for (var j = 0; j < types.length; j++) { + for (let i = 0; i < types.length; i++) { + let score = 0; + let downfallType: Type = undefined; + for (let j = 0; j < types.length; j++) { if (isTypeSubtypeOf(types[j], types[i])) { score++; } @@ -4279,6 +4593,8 @@ module ts { } } + Debug.assert(!!downfallType, "If there is no common supertype, each type should have a downfallType"); + if (score > bestSupertypeScore) { bestSupertype = types[i]; bestSupertypeDownfallType = downfallType; @@ -4311,14 +4627,22 @@ module ts { return !!getPropertyOfType(type, "0"); } + /** + * Check if a Type was written as a tuple type literal. + * Prefer using isTupleLikeType() unless the use of `elementTypes` is required. + */ + function isTupleType(type: Type): boolean { + return (type.flags & TypeFlags.Tuple) && !!(type).elementTypes; + } + function getWidenedTypeOfObjectLiteral(type: Type): Type { - var properties = getPropertiesOfObjectType(type); - var members: SymbolTable = {}; + let properties = getPropertiesOfObjectType(type); + let members: SymbolTable = {}; forEach(properties, p => { - var propType = getTypeOfSymbol(p); - var widenedType = getWidenedType(propType); + let propType = getTypeOfSymbol(p); + let widenedType = getWidenedType(propType); if (propType !== widenedType) { - var symbol = createSymbol(p.flags | SymbolFlags.Transient, p.name); + let symbol = createSymbol(p.flags | SymbolFlags.Transient, p.name); symbol.declarations = p.declarations; symbol.parent = p.parent; symbol.type = widenedType; @@ -4328,8 +4652,8 @@ module ts { } members[p.name] = p; }); - var stringIndexType = getIndexTypeOfType(type, IndexKind.String); - var numberIndexType = getIndexTypeOfType(type, IndexKind.Number); + let stringIndexType = getIndexTypeOfType(type, IndexKind.String); + let numberIndexType = getIndexTypeOfType(type, IndexKind.Number); if (stringIndexType) stringIndexType = getWidenedType(stringIndexType); if (numberIndexType) numberIndexType = getWidenedType(numberIndexType); return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); @@ -4355,7 +4679,7 @@ module ts { function reportWideningErrorsInType(type: Type): boolean { if (type.flags & TypeFlags.Union) { - var errorReported = false; + let errorReported = false; forEach((type).types, t => { if (reportWideningErrorsInType(t)) { errorReported = true; @@ -4367,9 +4691,9 @@ module ts { return reportWideningErrorsInType((type).typeArguments[0]); } if (type.flags & TypeFlags.ObjectLiteral) { - var errorReported = false; + let errorReported = false; forEach(getPropertiesOfObjectType(type), p => { - var t = getTypeOfSymbol(p); + let t = getTypeOfSymbol(p); if (t.flags & TypeFlags.ContainsUndefinedOrNull) { if (!reportWideningErrorsInType(t)) { error(p.valueDeclaration, Diagnostics.Object_literal_s_property_0_implicitly_has_an_1_type, p.name, typeToString(getWidenedType(t))); @@ -4383,14 +4707,15 @@ module ts { } function reportImplicitAnyError(declaration: Declaration, type: Type) { - var typeAsString = typeToString(getWidenedType(type)); + let typeAsString = typeToString(getWidenedType(type)); + let diagnostic: DiagnosticMessage; switch (declaration.kind) { case SyntaxKind.PropertyDeclaration: case SyntaxKind.PropertySignature: - var diagnostic = Diagnostics.Member_0_implicitly_has_an_1_type; + diagnostic = Diagnostics.Member_0_implicitly_has_an_1_type; break; case SyntaxKind.Parameter: - var diagnostic = (declaration).dotDotDotToken ? + diagnostic = (declaration).dotDotDotToken ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Parameter_0_implicitly_has_an_1_type; break; @@ -4405,10 +4730,10 @@ module ts { error(declaration, Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; } - var diagnostic = Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; + diagnostic = Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type; break; default: - var diagnostic = Diagnostics.Variable_0_implicitly_has_an_1_type; + diagnostic = Diagnostics.Variable_0_implicitly_has_an_1_type; } error(declaration, diagnostic, declarationNameToString(declaration.name), typeAsString); } @@ -4423,9 +4748,9 @@ module ts { } function forEachMatchingParameterType(source: Signature, target: Signature, callback: (s: Type, t: Type) => void) { - var sourceMax = source.parameters.length; - var targetMax = target.parameters.length; - var count: number; + let sourceMax = source.parameters.length; + let targetMax = target.parameters.length; + let count: number; if (source.hasRestParameter && target.hasRestParameter) { count = sourceMax > targetMax ? sourceMax : targetMax; sourceMax--; @@ -4442,48 +4767,51 @@ module ts { else { count = sourceMax < targetMax ? sourceMax : targetMax; } - for (var i = 0; i < count; i++) { - var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); - var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + for (let i = 0; i < count; i++) { + let s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + let t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); callback(s, t); } } function createInferenceContext(typeParameters: TypeParameter[], inferUnionTypes: boolean): InferenceContext { - var inferences: TypeInferences[] = []; - for (var i = 0; i < typeParameters.length; i++) { - inferences.push({ primary: undefined, secondary: undefined }); + let inferences: TypeInferences[] = []; + for (let unused of typeParameters) { + inferences.push({ primary: undefined, secondary: undefined, isFixed: false }); } return { - typeParameters: typeParameters, - inferUnionTypes: inferUnionTypes, - inferenceCount: 0, - inferences: inferences, + typeParameters, + inferUnionTypes, + inferences, inferredTypes: new Array(typeParameters.length), }; } function inferTypes(context: InferenceContext, source: Type, target: Type) { - var sourceStack: Type[]; - var targetStack: Type[]; - var depth = 0; - var inferiority = 0; + let sourceStack: Type[]; + let targetStack: Type[]; + let depth = 0; + let inferiority = 0; inferFromTypes(source, target); function isInProcess(source: Type, target: Type) { - for (var i = 0; i < depth; i++) { - if (source === sourceStack[i] && target === targetStack[i]) return true; + for (let i = 0; i < depth; i++) { + if (source === sourceStack[i] && target === targetStack[i]) { + return true; + } } return false; } function isWithinDepthLimit(type: Type, stack: Type[]) { if (depth >= 5) { - var target = (type).target; - var count = 0; - for (var i = 0; i < depth; i++) { - var t = stack[i]; - if (t.flags & TypeFlags.Reference && (t).target === target) count++; + let target = (type).target; + let count = 0; + for (let i = 0; i < depth; i++) { + let t = stack[i]; + if (t.flags & TypeFlags.Reference && (t).target === target) { + count++; + } } return count < 5; } @@ -4496,33 +4824,42 @@ module ts { } if (target.flags & TypeFlags.TypeParameter) { // If target is a type parameter, make an inference - var typeParameters = context.typeParameters; - for (var i = 0; i < typeParameters.length; i++) { + let typeParameters = context.typeParameters; + for (let i = 0; i < typeParameters.length; i++) { if (target === typeParameters[i]) { - var inferences = context.inferences[i]; - var candidates = inferiority ? - inferences.secondary || (inferences.secondary = []) : - inferences.primary || (inferences.primary = []); - if (!contains(candidates, source)) candidates.push(source); - break; + let inferences = context.inferences[i]; + if (!inferences.isFixed) { + // Any inferences that are made to a type parameter in a union type are inferior + // to inferences made to a flat (non-union) type. This is because if we infer to + // T | string[], we really don't know if we should be inferring to T or not (because + // the correct constituent on the target side could be string[]). Therefore, we put + // such inferior inferences into a secondary bucket, and only use them if the primary + // bucket is empty. + let candidates = inferiority ? + inferences.secondary || (inferences.secondary = []) : + inferences.primary || (inferences.primary = []); + if (!contains(candidates, source)) { + candidates.push(source); + } + } + return; } } } else if (source.flags & TypeFlags.Reference && target.flags & TypeFlags.Reference && (source).target === (target).target) { // If source and target are references to the same generic type, infer from type arguments - var sourceTypes = (source).typeArguments; - var targetTypes = (target).typeArguments; - for (var i = 0; i < sourceTypes.length; i++) { + let sourceTypes = (source).typeArguments; + let targetTypes = (target).typeArguments; + for (let i = 0; i < sourceTypes.length; i++) { inferFromTypes(sourceTypes[i], targetTypes[i]); } } else if (target.flags & TypeFlags.Union) { - var targetTypes = (target).types; - var typeParameterCount = 0; - var typeParameter: TypeParameter; + let targetTypes = (target).types; + let typeParameterCount = 0; + let typeParameter: TypeParameter; // First infer to each type in union that isn't a type parameter - for (var i = 0; i < targetTypes.length; i++) { - var t = targetTypes[i]; + for (let t of targetTypes) { if (t.flags & TypeFlags.TypeParameter && contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -4540,9 +4877,9 @@ module ts { } else if (source.flags & TypeFlags.Union) { // Source is a union type, infer from each consituent type - var sourceTypes = (source).types; - for (var i = 0; i < sourceTypes.length; i++) { - inferFromTypes(sourceTypes[i], target); + let sourceTypes = (source).types; + for (let sourceType of sourceTypes) { + inferFromTypes(sourceType, target); } } else if (source.flags & TypeFlags.ObjectType && (target.flags & (TypeFlags.Reference | TypeFlags.Tuple) || @@ -4568,10 +4905,9 @@ module ts { } function inferFromProperties(source: Type, target: Type) { - var properties = getPropertiesOfObjectType(target); - for (var i = 0; i < properties.length; i++) { - var targetProp = properties[i]; - var sourceProp = getPropertyOfObjectType(source, targetProp.name); + let properties = getPropertiesOfObjectType(target); + for (let targetProp of properties) { + let sourceProp = getPropertyOfObjectType(source, targetProp.name); if (sourceProp) { inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp)); } @@ -4579,12 +4915,12 @@ module ts { } function inferFromSignatures(source: Type, target: Type, kind: SignatureKind) { - var sourceSignatures = getSignaturesOfType(source, kind); - var targetSignatures = getSignaturesOfType(target, kind); - var sourceLen = sourceSignatures.length; - var targetLen = targetSignatures.length; - var len = sourceLen < targetLen ? sourceLen : targetLen; - for (var i = 0; i < len; i++) { + let sourceSignatures = getSignaturesOfType(source, kind); + let targetSignatures = getSignaturesOfType(target, kind); + let sourceLen = sourceSignatures.length; + let targetLen = targetSignatures.length; + let len = sourceLen < targetLen ? sourceLen : targetLen; + for (let i = 0; i < len; i++) { inferFromSignature(getErasedSignature(sourceSignatures[sourceLen - len + i]), getErasedSignature(targetSignatures[targetLen - len + i])); } } @@ -4595,9 +4931,9 @@ module ts { } function inferFromIndexTypes(source: Type, target: Type, sourceKind: IndexKind, targetKind: IndexKind) { - var targetIndexType = getIndexTypeOfType(target, targetKind); + let targetIndexType = getIndexTypeOfType(target, targetKind); if (targetIndexType) { - var sourceIndexType = getIndexTypeOfType(source, sourceKind); + let sourceIndexType = getIndexTypeOfType(source, sourceKind); if (sourceIndexType) { inferFromTypes(sourceIndexType, targetIndexType); } @@ -4606,34 +4942,48 @@ module ts { } function getInferenceCandidates(context: InferenceContext, index: number): Type[] { - var inferences = context.inferences[index]; + let inferences = context.inferences[index]; return inferences.primary || inferences.secondary || emptyArray; } function getInferredType(context: InferenceContext, index: number): Type { - var inferredType = context.inferredTypes[index]; + let inferredType = context.inferredTypes[index]; + let inferenceSucceeded: boolean; if (!inferredType) { - var inferences = getInferenceCandidates(context, index); + let inferences = getInferenceCandidates(context, index); if (inferences.length) { - // Infer widened union or supertype, or the undefined type for no common supertype - var unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); - inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : inferenceFailureType; + // Infer widened union or supertype, or the unknown type for no common supertype + let unionOrSuperType = context.inferUnionTypes ? getUnionType(inferences) : getCommonSupertype(inferences); + inferredType = unionOrSuperType ? getWidenedType(unionOrSuperType) : unknownType; + inferenceSucceeded = !!unionOrSuperType; } else { - // Infer the empty object type when no inferences were made + // Infer the empty object type when no inferences were made. It is important to remember that + // in this case, inference still succeeds, meaning there is no error for not having inference + // candidates. An inference error only occurs when there are *conflicting* candidates, i.e. + // candidates with no common supertype. inferredType = emptyObjectType; + inferenceSucceeded = true; } - if (inferredType !== inferenceFailureType) { - var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); + + // Only do the constraint check if inference succeeded (to prevent cascading errors) + if (inferenceSucceeded) { + let constraint = getConstraintOfTypeParameter(context.typeParameters[index]); inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; } + else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { + // If inference failed, it is necessary to record the index of the failed type parameter (the one we are on). + // It might be that inference has already failed on a later type parameter on a previous call to inferTypeArguments. + // So if this failure is on preceding type parameter, this type parameter is the new failure index. + context.failedTypeParameterIndex = index; + } context.inferredTypes[index] = inferredType; } return inferredType; } function getInferredTypes(context: InferenceContext): Type[] { - for (var i = 0; i < context.inferredTypes.length; i++) { + for (let i = 0; i < context.inferredTypes.length; i++) { getInferredType(context, i); } @@ -4647,9 +4997,9 @@ module ts { // EXPRESSION TYPE CHECKING function getResolvedSymbol(node: Identifier): Symbol { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedSymbol) { - links.resolvedSymbol = (getFullWidth(node) > 0 && resolveName(node, node.text, SymbolFlags.Value | SymbolFlags.ExportValue, Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; + links.resolvedSymbol = (!nodeIsMissing(node) && resolveName(node, node.text, SymbolFlags.Value | SymbolFlags.ExportValue, Diagnostics.Cannot_find_name_0, node)) || unknownSymbol; } return links.resolvedSymbol; } @@ -4675,17 +5025,22 @@ module ts { // For a union type, remove all constituent types that are of the given type kind (when isOfTypeKind is true) // or not of the given type kind (when isOfTypeKind is false) - function removeTypesFromUnionType(type: Type, typeKind: TypeFlags, isOfTypeKind: boolean): Type { + function removeTypesFromUnionType(type: Type, typeKind: TypeFlags, isOfTypeKind: boolean, allowEmptyUnionResult: boolean): Type { if (type.flags & TypeFlags.Union) { - var types = (type).types; + let types = (type).types; if (forEach(types, t => !!(t.flags & typeKind) === isOfTypeKind)) { // Above we checked if we have anything to remove, now use the opposite test to do the removal - var narrowedType = getUnionType(filter(types, t => !(t.flags & typeKind) === isOfTypeKind)); - if (narrowedType !== emptyObjectType) { + let narrowedType = getUnionType(filter(types, t => !(t.flags & typeKind) === isOfTypeKind)); + if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { return narrowedType; } } } + else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { + // Use getUnionType(emptyArray) instead of emptyObjectType in case the way empty union types + // are represented ever changes. + return getUnionType(emptyArray); + } return type; } @@ -4695,9 +5050,9 @@ module ts { // Check if a given variable is assigned within a given syntax node function isVariableAssignedWithin(symbol: Symbol, node: Node): boolean { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (links.assignmentChecks) { - var cachedResult = links.assignmentChecks[symbol.id]; + let cachedResult = links.assignmentChecks[symbol.id]; if (cachedResult !== undefined) { return cachedResult; } @@ -4709,7 +5064,7 @@ module ts { function isAssignedInBinaryExpression(node: BinaryExpression) { if (node.operatorToken.kind >= SyntaxKind.FirstAssignment && node.operatorToken.kind <= SyntaxKind.LastAssignment) { - var n = node.left; + let n = node.left; while (n.kind === SyntaxKind.ParenthesizedExpression) { n = (n).expression; } @@ -4778,8 +5133,8 @@ module ts { function resolveLocation(node: Node) { // Resolve location from top down towards node if it is a context sensitive expression // That helps in making sure not assigning types as any when resolved out of order - var containerNodes: Node[] = []; - for (var parent = node.parent; parent; parent = parent.parent) { + let containerNodes: Node[] = []; + for (let parent = node.parent; parent; parent = parent.parent) { if ((isExpression(parent) || isObjectLiteralMethod(node)) && isContextSensitive(parent)) { containerNodes.unshift(parent); @@ -4801,9 +5156,9 @@ module ts { function getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type { resolveLocation(node); - // Get the narrowed type of symbol at given location instead of just getting + // Get the narrowed type of symbol at given location instead of just getting // the type of the symbol. - // eg. + // eg. // function foo(a: string | number) { // if (typeof a === "string") { // a/**/ @@ -4818,13 +5173,13 @@ module ts { // Get the narrowed type of a given symbol at a given location function getNarrowedTypeOfSymbol(symbol: Symbol, node: Node) { - var type = getTypeOfSymbol(symbol); + let type = getTypeOfSymbol(symbol); // Only narrow when symbol is variable of type any or an object, union, or type parameter type if (node && symbol.flags & SymbolFlags.Variable && type.flags & (TypeFlags.Any | TypeFlags.ObjectType | TypeFlags.Union | TypeFlags.TypeParameter)) { loop: while (node.parent) { - var child = node; + let child = node; node = node.parent; - var narrowedType = type; + let narrowedType = type; switch (node.kind) { case SyntaxKind.IfStatement: // In a branch of an if statement, narrow based on controlling expression @@ -4876,19 +5231,20 @@ module ts { if (expr.left.kind !== SyntaxKind.TypeOfExpression || expr.right.kind !== SyntaxKind.StringLiteral) { return type; } - var left = expr.left; - var right = expr.right; + let left = expr.left; + let right = expr.right; if (left.expression.kind !== SyntaxKind.Identifier || getResolvedSymbol(left.expression) !== symbol) { return type; } - var typeInfo = primitiveTypeInfo[right.text]; + let typeInfo = primitiveTypeInfo[right.text]; if (expr.operatorToken.kind === SyntaxKind.ExclamationEqualsEqualsToken) { assumeTrue = !assumeTrue; } if (assumeTrue) { // Assumed result is true. If check was not for a primitive type, remove all primitive types if (!typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ TypeFlags.StringLike | TypeFlags.NumberLike | TypeFlags.Boolean | TypeFlags.ESSymbol, /*isOfTypeKind*/ true); + return removeTypesFromUnionType(type, /*typeKind*/ TypeFlags.StringLike | TypeFlags.NumberLike | TypeFlags.Boolean | TypeFlags.ESSymbol, + /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); } // Check was for a primitive type, return that primitive type if it is a subtype if (isTypeSubtypeOf(typeInfo.type, type)) { @@ -4896,12 +5252,12 @@ module ts { } // Otherwise, remove all types that aren't of the primitive type kind. This can happen when the type is // union of enum types and other types. - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ false); + return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ false, /*allowEmptyUnionResult*/ false); } else { // Assumed result is false. If check was for a primitive type, remove that primitive type if (typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ true); + return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); } // Otherwise we don't have enough information to do anything. return type; @@ -4944,16 +5300,16 @@ module ts { return type; } // Check that right operand is a function type with a prototype property - var rightType = checkExpression(expr.right); + let rightType = checkExpression(expr.right); if (!isTypeSubtypeOf(rightType, globalFunctionType)) { return type; } // Target type is type of prototype property - var prototypeProperty = getPropertyOfType(rightType, "prototype"); + let prototypeProperty = getPropertyOfType(rightType, "prototype"); if (!prototypeProperty) { return type; } - var targetType = getTypeOfSymbol(prototypeProperty); + let targetType = getTypeOfSymbol(prototypeProperty); // Narrow to target type if it is a subtype of current type if (isTypeSubtypeOf(targetType, type)) { return targetType; @@ -4972,7 +5328,7 @@ module ts { case SyntaxKind.ParenthesizedExpression: return narrowType(type, (expr).expression, assumeTrue); case SyntaxKind.BinaryExpression: - var operator = (expr).operatorToken.kind; + let operator = (expr).operatorToken.kind; if (operator === SyntaxKind.EqualsEqualsEqualsToken || operator === SyntaxKind.ExclamationEqualsEqualsToken) { return narrowTypeByEquality(type, expr, assumeTrue); } @@ -4988,7 +5344,7 @@ module ts { break; case SyntaxKind.PrefixUnaryExpression: if ((expr).operator === SyntaxKind.ExclamationToken) { - return narrowType(type,(expr).operand, !assumeTrue); + return narrowType(type, (expr).operand, !assumeTrue); } break; } @@ -4996,24 +5352,8 @@ module ts { } } - /*Transitively mark all linked imports as referenced*/ - function markLinkedImportsAsReferenced(node: ImportEqualsDeclaration): void { - if (node) { - var nodeLinks = getNodeLinks(node); - while (nodeLinks.importOnRightSide) { - var rightSide = nodeLinks.importOnRightSide; - nodeLinks.importOnRightSide = undefined; - - getSymbolLinks(rightSide).referenced = true; - Debug.assert((rightSide.flags & SymbolFlags.Import) !== 0); - - nodeLinks = getNodeLinks(getDeclarationOfKind(rightSide, SyntaxKind.ImportEqualsDeclaration)) - } - } - } - function checkIdentifier(node: Identifier): Type { - var symbol = getResolvedSymbol(node); + let symbol = getResolvedSymbol(node); // As noted in ECMAScript 6 language spec, arrow functions never have an arguments objects. // Although in down-level emit of arrow function, we emit it using function expression which means that @@ -5025,54 +5365,71 @@ module ts { error(node, Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression); } - if (symbol.flags & SymbolFlags.Import) { - - //var symbolLinks = getSymbolLinks(symbol); - //if (!symbolLinks.referenced) { - // if (!isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol))) { - // symbolLinks.referenced = true; - // } - //} - - // TODO: AndersH: This needs to be simplified. In an import of the form "import x = a.b.c;" we only need - // to resolve "a" and mark it as referenced. If "b" and/or "c" are aliases, we would be able to access them - // unless they're exported, and in that case they're already implicitly referenced. - - var symbolLinks = getSymbolLinks(symbol); - if (!symbolLinks.referenced) { - var importOrExportAssignment = getLeftSideOfImportEqualsOrExportAssignment(node); - - // decision about whether import is referenced can be made now if - // - import that are used anywhere except right side of import declarations - // - imports that are used on the right side of exported import declarations - // for other cases defer decision until the check of left side - if (!importOrExportAssignment || - (importOrExportAssignment.flags & NodeFlags.Export) || - (importOrExportAssignment.kind === SyntaxKind.ExportAssignment)) { - // Mark the import as referenced so that we emit it in the final .js file. - // exception: identifiers that appear in type queries, const enums, modules that contain only const enums - symbolLinks.referenced = !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol)); - } - else { - var nodeLinks = getNodeLinks(importOrExportAssignment); - Debug.assert(!nodeLinks.importOnRightSide); - nodeLinks.importOnRightSide = symbol; - } - } - - if (symbolLinks.referenced) { - markLinkedImportsAsReferenced(getDeclarationOfKind(symbol, SyntaxKind.ImportEqualsDeclaration)); - } + if (symbol.flags & SymbolFlags.Alias && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); } checkCollisionWithCapturedSuperVariable(node, node); checkCollisionWithCapturedThisVariable(node, node); + checkBlockScopedBindingCapturedInLoop(node, symbol); return getNarrowedTypeOfSymbol(getExportSymbolOfValueSymbolIfExported(symbol), node); } + function isInsideFunction(node: Node, threshold: Node): boolean { + let current = node; + while (current && current !== threshold) { + if (isFunctionLike(current)) { + return true; + } + current = current.parent; + } + + return false; + } + + function checkBlockScopedBindingCapturedInLoop(node: Identifier, symbol: Symbol): void { + if (languageVersion >= ScriptTarget.ES6 || + (symbol.flags & SymbolFlags.BlockScopedVariable) === 0 || + symbol.valueDeclaration.parent.kind === SyntaxKind.CatchClause) { + return; + } + + // - check if binding is used in some function + // (stop the walk when reaching container of binding declaration) + // - if first check succeeded - check if variable is declared inside the loop + + // nesting structure: + // (variable declaration or binding element) -> variable declaration list -> container + let container: Node = symbol.valueDeclaration; + while (container.kind !== SyntaxKind.VariableDeclarationList) { + container = container.parent; + } + // get the parent of variable declaration list + container = container.parent; + if (container.kind === SyntaxKind.VariableStatement) { + // if parent is variable statement - get its parent + container = container.parent; + } + + let inFunction = isInsideFunction(node.parent, container); + + let current = container; + while (current && !nodeStartsNewLexicalEnvironment(current)) { + if (isIterationStatement(current, /*lookInLabeledStatements*/ false)) { + if (inFunction) { + grammarErrorOnFirstToken(current, Diagnostics.Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher, declarationNameToString(node)); + } + // mark value declaration so during emit they can have a special handling + getNodeLinks(symbol.valueDeclaration).flags |= NodeCheckFlags.BlockScopedBindingInLoop; + break; + } + current = current.parent; + } + } + function captureLexicalThis(node: Node, container: Node): void { - var classNode = container.parent && container.parent.kind === SyntaxKind.ClassDeclaration ? container.parent : undefined; + let classNode = container.parent && container.parent.kind === SyntaxKind.ClassDeclaration ? container.parent : undefined; getNodeLinks(node).flags |= NodeCheckFlags.LexicalThis; if (container.kind === SyntaxKind.PropertyDeclaration || container.kind === SyntaxKind.Constructor) { getNodeLinks(classNode).flags |= NodeCheckFlags.CaptureThis; @@ -5085,8 +5442,8 @@ module ts { function checkThisExpression(node: Node): Type { // Stop at the first arrow function so that we can // tell whether 'this' needs to be captured. - var container = getThisContainer(node, /* includeArrowFunctions */ true); - var needToCaptureLexicalThis = false; + let container = getThisContainer(node, /* includeArrowFunctions */ true); + let needToCaptureLexicalThis = false; // Now skip arrow functions to get the "real" owner of 'this'. if (container.kind === SyntaxKind.ArrowFunction) { @@ -5127,16 +5484,16 @@ module ts { captureLexicalThis(node, container); } - var classNode = container.parent && container.parent.kind === SyntaxKind.ClassDeclaration ? container.parent : undefined; + let classNode = container.parent && container.parent.kind === SyntaxKind.ClassDeclaration ? container.parent : undefined; if (classNode) { - var symbol = getSymbolOfNode(classNode); + let symbol = getSymbolOfNode(classNode); return container.flags & NodeFlags.Static ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol); } return anyType; } function isInConstructorArgumentInitializer(node: Node, constructorDecl: Node): boolean { - for (var n = node; n && n !== constructorDecl; n = n.parent) { + for (let n = node; n && n !== constructorDecl; n = n.parent) { if (n.kind === SyntaxKind.Parameter) { return true; } @@ -5145,11 +5502,11 @@ module ts { } function checkSuperExpression(node: Node): Type { - var isCallExpression = node.parent.kind === SyntaxKind.CallExpression && (node.parent).expression === node; - var enclosingClass = getAncestor(node, SyntaxKind.ClassDeclaration); - var baseClass: Type; - if (enclosingClass && getClassBaseTypeNode(enclosingClass)) { - var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); + let isCallExpression = node.parent.kind === SyntaxKind.CallExpression && (node.parent).expression === node; + let enclosingClass = getAncestor(node, SyntaxKind.ClassDeclaration); + let baseClass: Type; + if (enclosingClass && getClassExtendsHeritageClauseElement(enclosingClass)) { + let classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); baseClass = classType.baseTypes.length && classType.baseTypes[0]; } @@ -5158,10 +5515,11 @@ module ts { return unknownType; } - var container = getSuperContainer(node, /*includeFunctions*/ true); + let container = getSuperContainer(node, /*includeFunctions*/ true); if (container) { - var canUseSuperExpression = false; + let canUseSuperExpression = false; + let needToCaptureLexicalThis: boolean; if (isCallExpression) { // TS 1.0 SPEC (April 2014): 4.8.1 // Super calls are only permitted in constructors of derived classes @@ -5174,7 +5532,7 @@ module ts { // - In a static member function or static member accessor // super property access might appear in arrow functions with arbitrary deep nesting - var needToCaptureLexicalThis = false; + needToCaptureLexicalThis = false; while (container && container.kind === SyntaxKind.ArrowFunction) { container = getSuperContainer(container, /*includeFunctions*/ true); needToCaptureLexicalThis = true; @@ -5203,7 +5561,7 @@ module ts { } if (canUseSuperExpression) { - var returnType: Type; + let returnType: Type; if ((container.flags & NodeFlags.Static) || isCallExpression) { getNodeLinks(node).flags |= NodeCheckFlags.SuperStatic; @@ -5247,14 +5605,14 @@ module ts { // Return contextual type of parameter or undefined if no contextual type is available function getContextuallyTypedParameterType(parameter: ParameterDeclaration): Type { if (isFunctionExpressionOrArrowFunction(parameter.parent)) { - var func = parameter.parent; + let func = parameter.parent; if (isContextSensitive(func)) { - var contextualSignature = getContextualSignature(func); + let contextualSignature = getContextualSignature(func); if (contextualSignature) { - var funcHasRestParameters = hasRestParameters(func); - var len = func.parameters.length - (funcHasRestParameters ? 1 : 0); - var indexOfParameter = indexOf(func.parameters, parameter); + let funcHasRestParameters = hasRestParameters(func); + let len = func.parameters.length - (funcHasRestParameters ? 1 : 0); + let indexOfParameter = indexOf(func.parameters, parameter); if (indexOfParameter < len) { return getTypeAtPosition(contextualSignature, indexOfParameter); } @@ -5276,13 +5634,13 @@ module ts { // of the parameter. Otherwise, in a variable or parameter declaration with a binding pattern name, the contextual // type of an initializer expression is the type implied by the binding pattern. function getContextualTypeForInitializerExpression(node: Expression): Type { - var declaration = node.parent; + let declaration = node.parent; if (node === declaration.initializer) { if (declaration.type) { - return getTypeFromTypeNode(declaration.type); + return getTypeFromTypeNodeOrHeritageClauseElement(declaration.type); } if (declaration.kind === SyntaxKind.Parameter) { - var type = getContextuallyTypedParameterType(declaration); + let type = getContextuallyTypedParameterType(declaration); if (type) { return type; } @@ -5295,7 +5653,7 @@ module ts { } function getContextualTypeForReturnExpression(node: Expression): Type { - var func = getContainingFunction(node); + let func = getContainingFunction(node); if (func) { // If the containing function has a return type annotation, is a constructor, or is a get accessor whose // corresponding set accessor has a type annotation, return statements in the function are contextually typed @@ -5304,7 +5662,7 @@ module ts { } // Otherwise, if the containing function is contextually typed by a function type with exactly one call signature // and that call signature is non-generic, return statements are contextually typed by the return type of the signature - var signature = getContextualSignatureForFunctionLikeDeclaration(func); + let signature = getContextualSignatureForFunctionLikeDeclaration(func); if (signature) { return getReturnTypeOfSignature(signature); } @@ -5314,10 +5672,10 @@ module ts { // In a typed function call, an argument or substitution expression is contextually typed by the type of the corresponding parameter. function getContextualTypeForArgument(callTarget: CallLikeExpression, arg: Expression): Type { - var args = getEffectiveCallArguments(callTarget); - var argIndex = indexOf(args, arg); + let args = getEffectiveCallArguments(callTarget); + let argIndex = indexOf(args, arg); if (argIndex >= 0) { - var signature = getResolvedSignature(callTarget); + let signature = getResolvedSignature(callTarget); return getTypeAtPosition(signature, argIndex); } return undefined; @@ -5332,8 +5690,8 @@ module ts { } function getContextualTypeForBinaryOperand(node: Expression): Type { - var binaryExpression = node.parent; - var operator = binaryExpression.operatorToken.kind; + let binaryExpression = node.parent; + let operator = binaryExpression.operatorToken.kind; if (operator >= SyntaxKind.FirstAssignment && operator <= SyntaxKind.LastAssignment) { // In an assignment expression, the right operand is contextually typed by the type of the left operand. if (node === binaryExpression.right) { @@ -5343,7 +5701,7 @@ module ts { else if (operator === SyntaxKind.BarBarToken) { // When an || expression has a contextual type, the operands are contextually typed by that type. When an || // expression has no contextual type, the right operand is contextually typed by the type of the left operand. - var type = getContextualType(binaryExpression); + let type = getContextualType(binaryExpression); if (!type && node === binaryExpression.right) { type = checkExpression(binaryExpression.left); } @@ -5359,11 +5717,11 @@ module ts { if (!(type.flags & TypeFlags.Union)) { return mapper(type); } - var types = (type).types; - var mappedType: Type; - var mappedTypes: Type[]; - for (var i = 0; i < types.length; i++) { - var t = mapper(types[i]); + let types = (type).types; + let mappedType: Type; + let mappedTypes: Type[]; + for (let current of types) { + let t = mapper(current); if (t) { if (!mappedType) { mappedType = t; @@ -5381,7 +5739,7 @@ module ts { function getTypeOfPropertyOfContextualType(type: Type, name: string) { return applyToContextualType(type, t => { - var prop = getPropertyOfObjectType(t, name); + let prop = getPropertyOfObjectType(t, name); return prop ? getTypeOfSymbol(prop) : undefined; }); } @@ -5414,20 +5772,20 @@ module ts { } function getContextualTypeForObjectLiteralElement(element: ObjectLiteralElement) { - var objectLiteral = element.parent; - var type = getContextualType(objectLiteral); + let objectLiteral = element.parent; + let type = getContextualType(objectLiteral); if (type) { if (!hasDynamicName(element)) { // For a (non-symbol) computed property, there is no reason to look up the name // in the type. It will just be "__computed", which does not appear in any // SymbolTable. - var symbolName = getSymbolOfNode(element).name; - var propertyType = getTypeOfPropertyOfContextualType(type, symbolName); + let symbolName = getSymbolOfNode(element).name; + let propertyType = getTypeOfPropertyOfContextualType(type, symbolName); if (propertyType) { return propertyType; } } - + return isNumericName(element.name) && getIndexTypeOfContextualType(type, IndexKind.Number) || getIndexTypeOfContextualType(type, IndexKind.String); } @@ -5436,21 +5794,24 @@ module ts { } // In an array literal contextually typed by a type T, the contextual type of an element expression at index N is - // the type of the property with the numeric name N in T, if one exists. Otherwise, it is the type of the numeric - // index signature in T, if one exists. + // the type of the property with the numeric name N in T, if one exists. Otherwise, if T has a numeric index signature, + // it is the type of the numeric index signature in T. Otherwise, in ES6 and higher, the contextual type is the iterated + // type of T. function getContextualTypeForElementExpression(node: Expression): Type { - var arrayLiteral = node.parent; - var type = getContextualType(arrayLiteral); + let arrayLiteral = node.parent; + let type = getContextualType(arrayLiteral); if (type) { - var index = indexOf(arrayLiteral.elements, node); - return getTypeOfPropertyOfContextualType(type, "" + index) || getIndexTypeOfContextualType(type, IndexKind.Number); + let index = indexOf(arrayLiteral.elements, node); + return getTypeOfPropertyOfContextualType(type, "" + index) + || getIndexTypeOfContextualType(type, IndexKind.Number) + || (languageVersion >= ScriptTarget.ES6 ? checkIteratedType(type, /*expressionForError*/ undefined) : undefined); } return undefined; } // In a contextually typed conditional expression, the true/false expressions are contextually typed by the same type. function getContextualTypeForConditionalOperand(node: Expression): Type { - var conditional = node.parent; + let conditional = node.parent; return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } @@ -5464,7 +5825,7 @@ module ts { if (node.contextualType) { return node.contextualType; } - var parent = node.parent; + let parent = node.parent; switch (parent.kind) { case SyntaxKind.VariableDeclaration: case SyntaxKind.Parameter: @@ -5479,7 +5840,7 @@ module ts { case SyntaxKind.NewExpression: return getContextualTypeForArgument(parent, node); case SyntaxKind.TypeAssertionExpression: - return getTypeFromTypeNode((parent).type); + return getTypeFromTypeNodeOrHeritageClauseElement((parent).type); case SyntaxKind.BinaryExpression: return getContextualTypeForBinaryOperand(node); case SyntaxKind.PropertyAssignment: @@ -5500,9 +5861,9 @@ module ts { // If the given type is an object or union type, if that type has a single signature, and if // that signature is non-generic, return the signature. Otherwise return undefined. function getNonGenericSignature(type: Type): Signature { - var signatures = getSignaturesOfObjectOrUnionType(type, SignatureKind.Call); + let signatures = getSignaturesOfObjectOrUnionType(type, SignatureKind.Call); if (signatures.length === 1) { - var signature = signatures[0]; + let signature = signatures[0]; if (!signature.typeParameters) { return signature; } @@ -5520,12 +5881,12 @@ module ts { // Return the contextual signature for a given expression node. A contextual type provides a // contextual signature if it has a single call signature and if that call signature is non-generic. - // If the contextual type is a union type, get the signature from each type possible and if they are - // all identical ignoring their return type, the result is same signature but with return type as + // If the contextual type is a union type, get the signature from each type possible and if they are + // all identical ignoring their return type, the result is same signature but with return type as // union type of return types from these signatures function getContextualSignature(node: FunctionExpression | MethodDeclaration): Signature { Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node)); - var type = isObjectLiteralMethod(node) + let type = isObjectLiteralMethod(node) ? getContextualTypeForObjectLiteralMethod(node) : getContextualType(node); if (!type) { @@ -5534,17 +5895,17 @@ module ts { if (!(type.flags & TypeFlags.Union)) { return getNonGenericSignature(type); } - var signatureList: Signature[]; - var types = (type).types; - for (var i = 0; i < types.length; i++) { + let signatureList: Signature[]; + let types = (type).types; + for (let current of types) { // The signature set of all constituent type with call signatures should match // So number of signatures allowed is either 0 or 1 if (signatureList && - getSignaturesOfObjectOrUnionType(types[i], SignatureKind.Call).length > 1) { + getSignaturesOfObjectOrUnionType(current, SignatureKind.Call).length > 1) { return undefined; } - var signature = getNonGenericSignature(types[i]); + let signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { // This signature will contribute to contextual union signature @@ -5562,7 +5923,7 @@ module ts { } // Result is union of signatures collected (return type is union of return types of this signature set) - var result: Signature; + let result: Signature; if (signatureList) { result = cloneSignature(signatureList[0]); // Clear resolved return type we possibly got from cloneSignature @@ -5582,7 +5943,7 @@ module ts { // assignment in an object literal that is an assignment target, or if it is parented by an array literal that is // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. function isAssignmentTarget(node: Node): boolean { - var parent = node.parent; + let parent = node.parent; if (parent.kind === SyntaxKind.BinaryExpression && (parent).operatorToken.kind === SyntaxKind.EqualsToken && (parent).left === node) { return true; } @@ -5596,7 +5957,7 @@ module ts { } function checkSpreadElementExpression(node: SpreadElementExpression, contextualMapper?: TypeMapper): Type { - var type = checkExpressionCached(node.expression, contextualMapper); + let type = checkExpressionCached(node.expression, contextualMapper); if (!isArrayLikeType(type)) { error(node.expression, Diagnostics.Type_0_is_not_an_array_type, typeToString(type)); return unknownType; @@ -5605,14 +5966,14 @@ module ts { } function checkArrayLiteral(node: ArrayLiteralExpression, contextualMapper?: TypeMapper): Type { - var elements = node.elements; + let elements = node.elements; if (!elements.length) { return createArrayType(undefinedType); } - var hasSpreadElement: boolean = false; - var elementTypes: Type[] = []; + let hasSpreadElement: boolean = false; + let elementTypes: Type[] = []; forEach(elements, e => { - var type = checkExpression(e, contextualMapper); + let type = checkExpression(e, contextualMapper); if (e.kind === SyntaxKind.SpreadElementExpression) { elementTypes.push(getIndexTypeOfType(type, IndexKind.Number) || anyType); hasSpreadElement = true; @@ -5622,7 +5983,7 @@ module ts { } }); if (!hasSpreadElement) { - var contextualType = getContextualType(node); + let contextualType = getContextualType(node); if (contextualType && contextualTypeIsTupleLikeType(contextualType) || isAssignmentTarget(node)) { return createTupleType(elementTypes); } @@ -5666,7 +6027,7 @@ module ts { } function checkComputedPropertyName(node: ComputedPropertyName): Type { - var links = getNodeLinks(node.expression); + let links = getNodeLinks(node.expression); if (!links.resolvedType) { links.resolvedType = checkExpression(node.expression); @@ -5687,31 +6048,31 @@ module ts { // Grammar checking checkGrammarObjectLiteralExpression(node); - var propertiesTable: SymbolTable = {}; - var propertiesArray: Symbol[] = []; - var contextualType = getContextualType(node); - var typeFlags: TypeFlags; + let propertiesTable: SymbolTable = {}; + let propertiesArray: Symbol[] = []; + let contextualType = getContextualType(node); + let typeFlags: TypeFlags; - for (var i = 0; i < node.properties.length; i++) { - var memberDecl = node.properties[i]; - var member = memberDecl.symbol; + for (let memberDecl of node.properties) { + let member = memberDecl.symbol; if (memberDecl.kind === SyntaxKind.PropertyAssignment || memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment || isObjectLiteralMethod(memberDecl)) { + let type: Type; if (memberDecl.kind === SyntaxKind.PropertyAssignment) { - var type = checkPropertyAssignment(memberDecl, contextualMapper); + type = checkPropertyAssignment(memberDecl, contextualMapper); } else if (memberDecl.kind === SyntaxKind.MethodDeclaration) { - var type = checkObjectLiteralMethod(memberDecl, contextualMapper); + type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { Debug.assert(memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment); - var type = memberDecl.name.kind === SyntaxKind.ComputedPropertyName + type = memberDecl.name.kind === SyntaxKind.ComputedPropertyName ? unknownType : checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; - var prop = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | member.flags, member.name); + let prop = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | member.flags, member.name); prop.declarations = member.declarations; prop.parent = member.parent; if (member.valueDeclaration) { @@ -5724,9 +6085,9 @@ module ts { } else { // TypeScript 1.0 spec (April 2014) - // A get accessor declaration is processed in the same manner as + // A get accessor declaration is processed in the same manner as // an ordinary function declaration(section 6.1) with no parameters. - // A set accessor declaration is processed in the same manner + // A set accessor declaration is processed in the same manner // as an ordinary function declaration with a single parameter and a Void return type. Debug.assert(memberDecl.kind === SyntaxKind.GetAccessor || memberDecl.kind === SyntaxKind.SetAccessor); checkAccessorDeclaration(memberDecl); @@ -5738,29 +6099,29 @@ module ts { propertiesArray.push(member); } - var stringIndexType = getIndexType(IndexKind.String); - var numberIndexType = getIndexType(IndexKind.Number); - var result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); + let stringIndexType = getIndexType(IndexKind.String); + let numberIndexType = getIndexType(IndexKind.Number); + let result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexType, numberIndexType); result.flags |= TypeFlags.ObjectLiteral | TypeFlags.ContainsObjectLiteral | (typeFlags & TypeFlags.ContainsUndefinedOrNull); return result; function getIndexType(kind: IndexKind) { if (contextualType && contextualTypeHasIndexSignature(contextualType, kind)) { - var propTypes: Type[] = []; - for (var i = 0; i < propertiesArray.length; i++) { - var propertyDecl = node.properties[i]; + let propTypes: Type[] = []; + for (let i = 0; i < propertiesArray.length; i++) { + let propertyDecl = node.properties[i]; if (kind === IndexKind.String || isNumericName(propertyDecl.name)) { // Do not call getSymbolOfNode(propertyDecl), as that will get the // original symbol for the node. We actually want to get the symbol // created by checkObjectLiteral, since that will be appropriately // contextually typed and resolved. - var type = getTypeOfSymbol(propertiesArray[i]); + let type = getTypeOfSymbol(propertiesArray[i]); if (!contains(propTypes, type)) { propTypes.push(type); } } } - var result = propTypes.length ? getUnionType(propTypes) : undefinedType; + let result = propTypes.length ? getUnionType(propTypes) : undefinedType; typeFlags |= result.flags; return result; } @@ -5779,16 +6140,16 @@ module ts { } function checkClassPropertyAccess(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, type: Type, prop: Symbol) { - var flags = getDeclarationFlagsFromSymbol(prop); + let flags = getDeclarationFlagsFromSymbol(prop); // Public properties are always accessible if (!(flags & (NodeFlags.Private | NodeFlags.Protected))) { return; } // Property is known to be private or protected at this point // Get the declaring and enclosing class instance types - var enclosingClassDeclaration = getAncestor(node, SyntaxKind.ClassDeclaration); - var enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; - var declaringClass = getDeclaredTypeOfSymbol(prop.parent); + let enclosingClassDeclaration = getAncestor(node, SyntaxKind.ClassDeclaration); + let enclosingClass = enclosingClassDeclaration ? getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClassDeclaration)) : undefined; + let declaringClass = getDeclaredTypeOfSymbol(prop.parent); // Private property is accessible if declaring and enclosing class are the same if (flags & NodeFlags.Private) { if (declaringClass !== enclosingClass) { @@ -5825,15 +6186,15 @@ module ts { } function checkPropertyAccessExpressionOrQualifiedName(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, right: Identifier) { - var type = checkExpressionOrQualifiedName(left); + let type = checkExpressionOrQualifiedName(left); if (type === unknownType) return type; if (type !== anyType) { - var apparentType = getApparentType(getWidenedType(type)); + let apparentType = getApparentType(getWidenedType(type)); if (apparentType === unknownType) { // handle cases when type is Type parameter with invalid constraint return unknownType; } - var prop = getPropertyOfType(apparentType, right.text); + let prop = getPropertyOfType(apparentType, right.text); if (!prop) { if (right.text) { error(right, Diagnostics.Property_0_does_not_exist_on_type_1, declarationNameToString(right), typeToString(type)); @@ -5843,11 +6204,11 @@ module ts { getNodeLinks(node).resolvedSymbol = prop; if (prop.parent && prop.parent.flags & SymbolFlags.Class) { // TS 1.0 spec (April 2014): 4.8.2 - // - In a constructor, instance member function, instance member accessor, or - // instance member variable initializer where this references a derived class instance, + // - In a constructor, instance member function, instance member accessor, or + // instance member variable initializer where this references a derived class instance, // a super property access is permitted and must specify a public instance member function of the base class. - // - In a static member function or static member accessor - // where this references the constructor function object of a derived class, + // - In a static member function or static member accessor + // where this references the constructor function object of a derived class, // a super property access is permitted and must specify a public static member function of the base class. if (left.kind === SyntaxKind.SuperKeyword && getDeclarationKindFromSymbol(prop) !== SyntaxKind.MethodDeclaration) { error(right, Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); @@ -5862,19 +6223,19 @@ module ts { } function isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean { - var left = node.kind === SyntaxKind.PropertyAccessExpression + let left = node.kind === SyntaxKind.PropertyAccessExpression ? (node).expression : (node).left; - var type = checkExpressionOrQualifiedName(left); + let type = checkExpressionOrQualifiedName(left); if (type !== unknownType && type !== anyType) { - var prop = getPropertyOfType(getWidenedType(type), propertyName); + let prop = getPropertyOfType(getWidenedType(type), propertyName); if (prop && prop.parent && prop.parent.flags & SymbolFlags.Class) { if (left.kind === SyntaxKind.SuperKeyword && getDeclarationKindFromSymbol(prop) !== SyntaxKind.MethodDeclaration) { return false; } else { - var modificationCount = diagnostics.getModificationCount(); + let modificationCount = diagnostics.getModificationCount(); checkClassPropertyAccess(node, left, type, prop); return diagnostics.getModificationCount() === modificationCount; } @@ -5886,28 +6247,28 @@ module ts { function checkIndexedAccess(node: ElementAccessExpression): Type { // Grammar checking if (!node.argumentExpression) { - var sourceFile = getSourceFile(node); + let sourceFile = getSourceFile(node); if (node.parent.kind === SyntaxKind.NewExpression && (node.parent).expression === node) { - var start = skipTrivia(sourceFile.text, node.expression.end); - var end = node.end; + let start = skipTrivia(sourceFile.text, node.expression.end); + let end = node.end; grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); } else { - var start = node.end - "]".length; - var end = node.end; + let start = node.end - "]".length; + let end = node.end; grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.Expression_expected); } } // Obtain base constraint such that we can bail out if the constraint is an unknown type - var objectType = getApparentType(checkExpression(node.expression)); - var indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; + let objectType = getApparentType(checkExpression(node.expression)); + let indexType = node.argumentExpression ? checkExpression(node.argumentExpression) : unknownType; if (objectType === unknownType) { return unknownType; } - var isConstEnum = isConstEnumObjectType(objectType); + let isConstEnum = isConstEnumObjectType(objectType); if (isConstEnum && (!node.argumentExpression || node.argumentExpression.kind !== SyntaxKind.StringLiteral)) { error(node.argumentExpression, Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal); @@ -5915,19 +6276,19 @@ module ts { } // TypeScript 1.0 spec (April 2014): 4.10 Property Access - // - If IndexExpr is a string literal or a numeric literal and ObjExpr's apparent type has a property with the name + // - If IndexExpr is a string literal or a numeric literal and ObjExpr's apparent type has a property with the name // given by that literal(converted to its string representation in the case of a numeric literal), the property access is of the type of that property. - // - Otherwise, if ObjExpr's apparent type has a numeric index signature and IndexExpr is of type Any, the Number primitive type, or an enum type, + // - Otherwise, if ObjExpr's apparent type has a numeric index signature and IndexExpr is of type Any, the Number primitive type, or an enum type, // the property access is of the type of that index signature. - // - Otherwise, if ObjExpr's apparent type has a string index signature and IndexExpr is of type Any, the String or Number primitive type, or an enum type, + // - Otherwise, if ObjExpr's apparent type has a string index signature and IndexExpr is of type Any, the String or Number primitive type, or an enum type, // the property access is of the type of that index signature. // - Otherwise, if IndexExpr is of type Any, the String or Number primitive type, or an enum type, the property access is of type Any. // See if we can index as a property. if (node.argumentExpression) { - var name = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + let name = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); if (name !== undefined) { - var prop = getPropertyOfType(objectType, name); + let prop = getPropertyOfType(objectType, name); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); @@ -5944,14 +6305,14 @@ module ts { // Try to use a number indexer. if (allConstituentTypesHaveKind(indexType, TypeFlags.Any | TypeFlags.NumberLike)) { - var numberIndexType = getIndexTypeOfType(objectType, IndexKind.Number); + let numberIndexType = getIndexTypeOfType(objectType, IndexKind.Number); if (numberIndexType) { return numberIndexType; } } // Try to use string indexing. - var stringIndexType = getIndexTypeOfType(objectType, IndexKind.String); + let stringIndexType = getIndexTypeOfType(objectType, IndexKind.String); if (stringIndexType) { return stringIndexType; } @@ -5981,7 +6342,7 @@ module ts { return (indexArgumentExpression).text; } if (checkThatExpressionIsProperSymbolReference(indexArgumentExpression, indexArgumentType, /*reportError*/ false)) { - var rightHandSideName = ((indexArgumentExpression).name).text; + let rightHandSideName = ((indexArgumentExpression).name).text; return getPropertyNameForKnownSymbolName(rightHandSideName); } @@ -6015,13 +6376,13 @@ module ts { // The name is Symbol., so make sure Symbol actually resolves to the // global Symbol object - var leftHandSide = (expression).expression; - var leftHandSideSymbol = getResolvedSymbol(leftHandSide); + let leftHandSide = (expression).expression; + let leftHandSideSymbol = getResolvedSymbol(leftHandSide); if (!leftHandSideSymbol) { return false; } - - var globalESSymbol = getGlobalESSymbolConstructorSymbol(); + + let globalESSymbol = getGlobalESSymbolConstructorSymbol(); if (!globalESSymbol) { // Already errored when we tried to look up the symbol return false; @@ -6060,20 +6421,19 @@ module ts { // so order how inherited signatures are processed is still preserved. // interface A { (x: string): void } // interface B extends A { (x: 'foo'): string } - // var b: B; + // let b: B; // b('foo') // <- here overloads should be processed as [(x:'foo'): string, (x: string): void] function reorderCandidates(signatures: Signature[], result: Signature[]): void { - var lastParent: Node; - var lastSymbol: Symbol; - var cutoffIndex: number = 0; - var index: number; - var specializedIndex: number = -1; - var spliceIndex: number; + let lastParent: Node; + let lastSymbol: Symbol; + let cutoffIndex: number = 0; + let index: number; + let specializedIndex: number = -1; + let spliceIndex: number; Debug.assert(!result.length); - for (var i = 0; i < signatures.length; i++) { - var signature = signatures[i]; - var symbol = signature.declaration && getSymbolOfNode(signature.declaration); - var parent = signature.declaration && signature.declaration.parent; + for (let signature of signatures) { + let symbol = signature.declaration && getSymbolOfNode(signature.declaration); + let parent = signature.declaration && signature.declaration.parent; if (!lastSymbol || symbol === lastSymbol) { if (lastParent && parent === lastParent) { index++; @@ -6110,7 +6470,7 @@ module ts { } function getSpreadArgumentIndex(args: Expression[]): number { - for (var i = 0; i < args.length; i++) { + for (let i = 0; i < args.length; i++) { if (args[i].kind === SyntaxKind.SpreadElementExpression) { return i; } @@ -6119,12 +6479,12 @@ module ts { } function hasCorrectArity(node: CallLikeExpression, args: Expression[], signature: Signature) { - var adjustedArgCount: number; // Apparent number of arguments we will have in this call - var typeArguments: NodeArray; // Type arguments (undefined if none) - var callIsIncomplete: boolean; // In incomplete call we want to be lenient when we have too few arguments + let adjustedArgCount: number; // Apparent number of arguments we will have in this call + let typeArguments: NodeArray; // Type arguments (undefined if none) + let callIsIncomplete: boolean; // In incomplete call we want to be lenient when we have too few arguments if (node.kind === SyntaxKind.TaggedTemplateExpression) { - var tagExpression = node; + let tagExpression = node; // Even if the call is incomplete, we'll have a missing expression as our last argument, // so we can say the count is just the arg list length @@ -6134,29 +6494,29 @@ module ts { if (tagExpression.template.kind === SyntaxKind.TemplateExpression) { // If a tagged template expression lacks a tail literal, the call is incomplete. // Specifically, a template only can end in a TemplateTail or a Missing literal. - var templateExpression = tagExpression.template; - var lastSpan = lastOrUndefined(templateExpression.templateSpans); + let templateExpression = tagExpression.template; + let lastSpan = lastOrUndefined(templateExpression.templateSpans); Debug.assert(lastSpan !== undefined); // we should always have at least one span. - callIsIncomplete = getFullWidth(lastSpan.literal) === 0 || !!lastSpan.literal.isUnterminated; + callIsIncomplete = nodeIsMissing(lastSpan.literal) || !!lastSpan.literal.isUnterminated; } else { // If the template didn't end in a backtick, or its beginning occurred right prior to EOF, // then this might actually turn out to be a TemplateHead in the future; // so we consider the call to be incomplete. - var templateLiteral = tagExpression.template; + let templateLiteral = tagExpression.template; Debug.assert(templateLiteral.kind === SyntaxKind.NoSubstitutionTemplateLiteral); callIsIncomplete = !!templateLiteral.isUnterminated; } } else { - var callExpression = node; + let callExpression = node; if (!callExpression.arguments) { // This only happens when we have something of the form: 'new C' Debug.assert(callExpression.kind === SyntaxKind.NewExpression); return signature.minArgumentCount === 0; } - + // For IDE scenarios we may have an incomplete call, so a trailing comma is tantamount to adding another argument. adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -6168,7 +6528,7 @@ module ts { // If the user supplied type arguments, but the number of type arguments does not match // the declared number of type parameters, the call has an incorrect arity. - var hasRightNumberOfTypeArgs = !typeArguments || + let hasRightNumberOfTypeArgs = !typeArguments || (signature.typeParameters && typeArguments.length === signature.typeParameters.length); if (!hasRightNumberOfTypeArgs) { return false; @@ -6176,7 +6536,7 @@ module ts { // If spread arguments are present, check that they correspond to a rest parameter. If so, no // further checking is necessary. - var spreadArgIndex = getSpreadArgumentIndex(args); + let spreadArgIndex = getSpreadArgumentIndex(args); if (spreadArgIndex >= 0) { return signature.hasRestParameter && spreadArgIndex >= signature.parameters.length - 1; } @@ -6187,14 +6547,14 @@ module ts { } // If the call is incomplete, we should skip the lower bound check. - var hasEnoughArguments = adjustedArgCount >= signature.minArgumentCount; + let hasEnoughArguments = adjustedArgCount >= signature.minArgumentCount; return callIsIncomplete || hasEnoughArguments; } // If type has a single call signature and no other members, return that signature. Otherwise, return undefined. function getSingleCallSignature(type: Type): Signature { if (type.flags & TypeFlags.ObjectType) { - var resolved = resolveObjectOrUnionTypeMembers(type); + let resolved = resolveObjectOrUnionTypeMembers(type); if (resolved.callSignatures.length === 1 && resolved.constructSignatures.length === 0 && resolved.properties.length === 0 && !resolved.stringIndexType && !resolved.numberIndexType) { return resolved.callSignatures[0]; @@ -6205,7 +6565,7 @@ module ts { // Instantiate a generic signature in the context of a non-generic signature (section 3.8.5 in TypeScript spec) function instantiateSignatureInContextOf(signature: Signature, contextualSignature: Signature, contextualMapper: TypeMapper): Signature { - var context = createInferenceContext(signature.typeParameters, /*inferUnionTypes*/ true); + let context = createInferenceContext(signature.typeParameters, /*inferUnionTypes*/ true); forEachMatchingParameterType(contextualSignature, signature, (source, target) => { // Type parameters from outer context referenced by source type are fixed by instantiation of the source type inferTypes(context, instantiateType(source, contextualMapper), target); @@ -6213,25 +6573,47 @@ module ts { return getSignatureInstantiation(signature, getInferredTypes(context)); } - function inferTypeArguments(signature: Signature, args: Expression[], excludeArgument: boolean[]): InferenceContext { - var typeParameters = signature.typeParameters; - var context = createInferenceContext(typeParameters, /*inferUnionTypes*/ false); - var inferenceMapper = createInferenceMapper(context); + function inferTypeArguments(signature: Signature, args: Expression[], excludeArgument: boolean[], context: InferenceContext): void { + let typeParameters = signature.typeParameters; + let inferenceMapper = createInferenceMapper(context); + + // Clear out all the inference results from the last time inferTypeArguments was called on this context + for (let i = 0; i < typeParameters.length; i++) { + // As an optimization, we don't have to clear (and later recompute) inferred types + // for type parameters that have already been fixed on the previous call to inferTypeArguments. + // It would be just as correct to reset all of them. But then we'd be repeating the same work + // for the type parameters that were fixed, namely the work done by getInferredType. + if (!context.inferences[i].isFixed) { + context.inferredTypes[i] = undefined; + } + } + + // On this call to inferTypeArguments, we may get more inferences for certain type parameters that were not + // fixed last time. This means that a type parameter that failed inference last time may succeed this time, + // or vice versa. Therefore, the failedTypeParameterIndex is useless if it points to an unfixed type parameter, + // because it may change. So here we reset it. However, getInferredType will not revisit any type parameters + // that were previously fixed. So if a fixed type parameter failed previously, it will fail again because + // it will contain the exact same set of inferences. So if we reset the index from a fixed type parameter, + // we will lose information that we won't recover this time around. + if (context.failedTypeParameterIndex !== undefined && !context.inferences[context.failedTypeParameterIndex].isFixed) { + context.failedTypeParameterIndex = undefined; + } // We perform two passes over the arguments. In the first pass we infer from all arguments, but use // wildcards for all context sensitive function expressions. - for (var i = 0; i < args.length; i++) { - var arg = args[i]; + for (let i = 0; i < args.length; i++) { + let arg = args[i]; if (arg.kind !== SyntaxKind.OmittedExpression) { - var paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); + let paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); + let argType: Type; if (i === 0 && args[i].parent.kind === SyntaxKind.TaggedTemplateExpression) { - var argType = globalTemplateStringsArrayType; + argType = globalTemplateStringsArrayType; } else { // For context sensitive arguments we pass the identityMapper, which is a signal to treat all // context sensitive function expressions as wildcards - var mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; - var argType = checkExpressionWithContextualType(arg, paramType, mapper); + let mapper = excludeArgument && excludeArgument[i] !== undefined ? identityMapper : inferenceMapper; + argType = checkExpressionWithContextualType(arg, paramType, mapper); } inferTypes(context, argType, paramType); } @@ -6241,40 +6623,29 @@ module ts { // time treating function expressions normally (which may cause previously inferred type arguments to be fixed // as we construct types for contextually typed parameters) if (excludeArgument) { - for (var i = 0; i < args.length; i++) { + for (let i = 0; i < args.length; i++) { // No need to check for omitted args and template expressions, their exlusion value is always undefined if (excludeArgument[i] === false) { - var arg = args[i]; - var paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); + let arg = args[i]; + let paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); inferTypes(context, checkExpressionWithContextualType(arg, paramType, inferenceMapper), paramType); } } } - var inferredTypes = getInferredTypes(context); - // Inference has failed if the inferenceFailureType type is in list of inferences - context.failedTypeParameterIndex = indexOf(inferredTypes, inferenceFailureType); - - // Wipe out the inferenceFailureType from the array so that error recovery can work properly - for (var i = 0; i < inferredTypes.length; i++) { - if (inferredTypes[i] === inferenceFailureType) { - inferredTypes[i] = unknownType; - } - } - - return context; + getInferredTypes(context); } function checkTypeArguments(signature: Signature, typeArguments: TypeNode[], typeArgumentResultTypes: Type[], reportErrors: boolean): boolean { - var typeParameters = signature.typeParameters; - var typeArgumentsAreAssignable = true; - for (var i = 0; i < typeParameters.length; i++) { - var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); + let typeParameters = signature.typeParameters; + let typeArgumentsAreAssignable = true; + for (let i = 0; i < typeParameters.length; i++) { + let typeArgNode = typeArguments[i]; + let typeArgument = getTypeFromTypeNodeOrHeritageClauseElement(typeArgNode); // Do not push on this array! It has a preallocated length typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable /* so far */) { - var constraint = getConstraintOfTypeParameter(typeParameters[i]); + let constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); @@ -6285,16 +6656,16 @@ module ts { } function checkApplicableSignature(node: CallLikeExpression, args: Expression[], signature: Signature, relation: Map, excludeArgument: boolean[], reportErrors: boolean) { - for (var i = 0; i < args.length; i++) { - var arg = args[i]; + for (let i = 0; i < args.length; i++) { + let arg = args[i]; if (arg.kind !== SyntaxKind.OmittedExpression) { // Check spread elements against rest type (from arity check we know spread argument corresponds to a rest parameter) - var paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); + let paramType = getTypeAtPosition(signature, arg.kind === SyntaxKind.SpreadElementExpression ? -1 : i); // A tagged template expression provides a special first argument, and string literals get string literal types // unless we're reporting errors - var argType = i === 0 && node.kind === SyntaxKind.TaggedTemplateExpression ? globalTemplateStringsArrayType : + let argType = i === 0 && node.kind === SyntaxKind.TaggedTemplateExpression ? globalTemplateStringsArrayType : arg.kind === SyntaxKind.StringLiteral && !reportErrors ? getStringLiteralType(arg) : - checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); + checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); // Use argument expression as error location when reporting errors if (!checkTypeRelatedTo(argType, paramType, relation, reportErrors ? arg : undefined, Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1)) { @@ -6313,9 +6684,9 @@ module ts { * expressions, where the first element of the list is the template for error reporting purposes. */ function getEffectiveCallArguments(node: CallLikeExpression): Expression[] { - var args: Expression[]; + let args: Expression[]; if (node.kind === SyntaxKind.TaggedTemplateExpression) { - var template = (node).template; + let template = (node).template; args = [template]; if (template.kind === SyntaxKind.TemplateExpression) { @@ -6343,8 +6714,8 @@ module ts { */ function getEffectiveTypeArguments(callExpression: CallExpression): TypeNode[] { if (callExpression.expression.kind === SyntaxKind.SuperKeyword) { - var containingClass = getAncestor(callExpression, SyntaxKind.ClassDeclaration); - var baseClassTypeNode = containingClass && getClassBaseTypeNode(containingClass); + let containingClass = getAncestor(callExpression, SyntaxKind.ClassDeclaration); + let baseClassTypeNode = containingClass && getClassExtendsHeritageClauseElement(containingClass); return baseClassTypeNode && baseClassTypeNode.typeArguments; } else { @@ -6354,9 +6725,9 @@ module ts { } function resolveCall(node: CallLikeExpression, signatures: Signature[], candidatesOutArray: Signature[]): Signature { - var isTaggedTemplate = node.kind === SyntaxKind.TaggedTemplateExpression; + let isTaggedTemplate = node.kind === SyntaxKind.TaggedTemplateExpression; - var typeArguments: TypeNode[]; + let typeArguments: TypeNode[]; if (!isTaggedTemplate) { typeArguments = getEffectiveTypeArguments(node); @@ -6367,7 +6738,7 @@ module ts { } } - var candidates = candidatesOutArray || []; + let candidates = candidatesOutArray || []; // reorderCandidates fills up the candidates array directly reorderCandidates(signatures, candidates); if (!candidates.length) { @@ -6375,8 +6746,8 @@ module ts { return resolveErrorCall(node); } - var args = getEffectiveCallArguments(node); - + let args = getEffectiveCallArguments(node); + // The following applies to any value of 'excludeArgument[i]': // - true: the argument at 'i' is susceptible to a one-time permanent contextual typing. // - undefined: the argument at 'i' is *not* susceptible to permanent contextual typing. @@ -6388,8 +6759,8 @@ module ts { // // For a tagged template, then the first argument be 'undefined' if necessary // because it represents a TemplateStringsArray. - var excludeArgument: boolean[]; - for (var i = isTaggedTemplate ? 1 : 0; i < args.length; i++) { + let excludeArgument: boolean[]; + for (let i = isTaggedTemplate ? 1 : 0; i < args.length; i++) { if (isContextSensitive(args[i])) { if (!excludeArgument) { excludeArgument = new Array(args.length); @@ -6419,10 +6790,10 @@ module ts { // function foo() {} // foo(0, true); // - var candidateForArgumentError: Signature; - var candidateForTypeArgumentError: Signature; - var resultOfFailedInference: InferenceContext; - var result: Signature; + let candidateForArgumentError: Signature; + let candidateForTypeArgumentError: Signature; + let resultOfFailedInference: InferenceContext; + let result: Signature; // Section 4.12.1: // if the candidate list contains one or more signatures for which the type of each argument @@ -6466,10 +6837,10 @@ module ts { } else { Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); - var failedTypeParameter = candidateForTypeArgumentError.typeParameters[resultOfFailedInference.failedTypeParameterIndex]; - var inferenceCandidates = getInferenceCandidates(resultOfFailedInference, resultOfFailedInference.failedTypeParameterIndex); + let failedTypeParameter = candidateForTypeArgumentError.typeParameters[resultOfFailedInference.failedTypeParameterIndex]; + let inferenceCandidates = getInferenceCandidates(resultOfFailedInference, resultOfFailedInference.failedTypeParameterIndex); - var diagnosticChainHead = chainDiagnosticMessages(/*details*/ undefined, // details will be provided by call to reportNoCommonSupertypeError + let diagnosticChainHead = chainDiagnosticMessages(/*details*/ undefined, // details will be provided by call to reportNoCommonSupertypeError Diagnostics.The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly, typeToString(failedTypeParameter)); @@ -6486,9 +6857,9 @@ module ts { // declare function f(a: { xa: number; xb: number; }); // f({ | if (!produceDiagnostics) { - for (var i = 0, n = candidates.length; i < n; i++) { - if (hasCorrectArity(node, args, candidates[i])) { - return candidates[i]; + for (let candidate of candidates) { + if (hasCorrectArity(node, args, candidate)) { + return candidate; } } } @@ -6496,27 +6867,29 @@ module ts { return resolveErrorCall(node); function chooseOverload(candidates: Signature[], relation: Map) { - for (var i = 0; i < candidates.length; i++) { - if (!hasCorrectArity(node, args, candidates[i])) { + for (let originalCandidate of candidates) { + if (!hasCorrectArity(node, args, originalCandidate)) { continue; } - - var originalCandidate = candidates[i]; - var inferenceResult: InferenceContext; + + let candidate: Signature; + let typeArgumentsAreValid: boolean; + let inferenceContext = originalCandidate.typeParameters + ? createInferenceContext(originalCandidate.typeParameters, /*inferUnionTypes*/ false) + : undefined; while (true) { - var candidate = originalCandidate; + candidate = originalCandidate; if (candidate.typeParameters) { - var typeArgumentTypes: Type[]; - var typeArgumentsAreValid: boolean; + let typeArgumentTypes: Type[]; if (typeArguments) { typeArgumentTypes = new Array(candidate.typeParameters.length); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, /*reportErrors*/ false) } else { - inferenceResult = inferTypeArguments(candidate, args, excludeArgument); - typeArgumentsAreValid = inferenceResult.failedTypeParameterIndex < 0; - typeArgumentTypes = inferenceResult.inferredTypes; + inferTypeArguments(candidate, args, excludeArgument, inferenceContext); + typeArgumentsAreValid = inferenceContext.failedTypeParameterIndex === undefined; + typeArgumentTypes = inferenceContext.inferredTypes; } if (!typeArgumentsAreValid) { break; @@ -6526,7 +6899,7 @@ module ts { if (!checkApplicableSignature(node, args, candidate, relation, excludeArgument, /*reportErrors*/ false)) { break; } - var index = excludeArgument ? indexOf(excludeArgument, true) : -1; + let index = excludeArgument ? indexOf(excludeArgument, true) : -1; if (index < 0) { return candidate; } @@ -6539,14 +6912,14 @@ module ts { // report an error based on the arguments. If there was an issue with type // arguments, then we can only report an error based on the type arguments. if (originalCandidate.typeParameters) { - var instantiatedCandidate = candidate; + let instantiatedCandidate = candidate; if (typeArgumentsAreValid) { candidateForArgumentError = instantiatedCandidate; } else { candidateForTypeArgumentError = originalCandidate; if (!typeArguments) { - resultOfFailedInference = inferenceResult; + resultOfFailedInference = inferenceContext; } } } @@ -6563,15 +6936,15 @@ module ts { function resolveCallExpression(node: CallExpression, candidatesOutArray: Signature[]): Signature { if (node.expression.kind === SyntaxKind.SuperKeyword) { - var superType = checkSuperExpression(node.expression); + let superType = checkSuperExpression(node.expression); if (superType !== unknownType) { return resolveCall(node, getSignaturesOfType(superType, SignatureKind.Construct), candidatesOutArray); } return resolveUntypedCall(node); } - var funcType = checkExpression(node.expression); - var apparentType = getApparentType(funcType); + let funcType = checkExpression(node.expression); + let apparentType = getApparentType(funcType); if (apparentType === unknownType) { // Another error has already been reported @@ -6582,9 +6955,9 @@ module ts { // but we are not including call signatures that may have been added to the Object or // Function interface, since they have none by default. This is a bit of a leap of faith // that the user will not add any. - var callSignatures = getSignaturesOfType(apparentType, SignatureKind.Call); + let callSignatures = getSignaturesOfType(apparentType, SignatureKind.Call); - var constructSignatures = getSignaturesOfType(apparentType, SignatureKind.Construct); + let constructSignatures = getSignaturesOfType(apparentType, SignatureKind.Construct); // TS 1.0 spec: 4.12 // If FuncExpr is of type Any, or of an object type that has no call or construct signatures // but is a subtype of the Function interface, the call is an untyped function call. In an @@ -6615,13 +6988,13 @@ module ts { function resolveNewExpression(node: NewExpression, candidatesOutArray: Signature[]): Signature { if (node.arguments && languageVersion < ScriptTarget.ES6) { - var spreadIndex = getSpreadArgumentIndex(node.arguments); + let spreadIndex = getSpreadArgumentIndex(node.arguments); if (spreadIndex >= 0) { error(node.arguments[spreadIndex], Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_6_and_higher); } } - var expressionType = checkExpression(node.expression); + let expressionType = checkExpression(node.expression); // TS 1.0 spec: 4.11 // If ConstructExpr is of type Any, Args can be any argument // list and the result of the operation is of type Any. @@ -6647,7 +7020,7 @@ module ts { // but we are not including construct signatures that may have been added to the Object or // Function interface, since they have none by default. This is a bit of a leap of faith // that the user will not add any. - var constructSignatures = getSignaturesOfType(expressionType, SignatureKind.Construct); + let constructSignatures = getSignaturesOfType(expressionType, SignatureKind.Construct); if (constructSignatures.length) { return resolveCall(node, constructSignatures, candidatesOutArray); } @@ -6656,9 +7029,9 @@ module ts { // one or more call signatures, the expression is processed as a function call. A compile-time // error occurs if the result of the function call is not Void. The type of the result of the // operation is Any. - var callSignatures = getSignaturesOfType(expressionType, SignatureKind.Call); + let callSignatures = getSignaturesOfType(expressionType, SignatureKind.Call); if (callSignatures.length) { - var signature = resolveCall(node, callSignatures, candidatesOutArray); + let signature = resolveCall(node, callSignatures, candidatesOutArray); if (getReturnTypeOfSignature(signature) !== voidType) { error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword); } @@ -6670,15 +7043,15 @@ module ts { } function resolveTaggedTemplateExpression(node: TaggedTemplateExpression, candidatesOutArray: Signature[]): Signature { - var tagType = checkExpression(node.tag); - var apparentType = getApparentType(tagType); + let tagType = checkExpression(node.tag); + let apparentType = getApparentType(tagType); if (apparentType === unknownType) { // Another error has already been reported return resolveErrorCall(node); } - var callSignatures = getSignaturesOfType(apparentType, SignatureKind.Call); + let callSignatures = getSignaturesOfType(apparentType, SignatureKind.Call); if (tagType === anyType || (!callSignatures.length && !(tagType.flags & TypeFlags.Union) && isTypeAssignableTo(tagType, globalFunctionType))) { return resolveUntypedCall(node); @@ -6695,7 +7068,7 @@ module ts { // candidatesOutArray is passed by signature help in the language service, and collectCandidates // must fill it up with the appropriate candidate signatures function getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[]): Signature { - var links = getNodeLinks(node); + let links = getNodeLinks(node); // If getResolvedSignature has already been called, we will have cached the resolvedSignature. // However, it is possible that either candidatesOutArray was not passed in the first time, // or that a different candidatesOutArray was passed in. Therefore, we need to redo the work @@ -6723,12 +7096,12 @@ module ts { // Grammar checking; stop grammar-checking if checkGrammarTypeArguments return true checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); - var signature = getResolvedSignature(node); + let signature = getResolvedSignature(node); if (node.expression.kind === SyntaxKind.SuperKeyword) { return voidType; } if (node.kind === SyntaxKind.NewExpression) { - var declaration = signature.declaration; + let declaration = signature.declaration; if (declaration && declaration.kind !== SyntaxKind.Constructor && declaration.kind !== SyntaxKind.ConstructSignature && @@ -6745,19 +7118,14 @@ module ts { } function checkTaggedTemplateExpression(node: TaggedTemplateExpression): Type { - // Grammar checking - if (languageVersion < ScriptTarget.ES6) { - grammarErrorOnFirstToken(node.template, Diagnostics.Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - return getReturnTypeOfSignature(getResolvedSignature(node)); } function checkTypeAssertion(node: TypeAssertion): Type { - var exprType = checkExpression(node.expression); - var targetType = getTypeFromTypeNode(node.type); + let exprType = checkExpression(node.expression); + let targetType = getTypeFromTypeNodeOrHeritageClauseElement(node.type); if (produceDiagnostics && targetType !== unknownType) { - var widenedType = getWidenedType(exprType); + let widenedType = getWidenedType(exprType); if (!(isTypeAssignableTo(targetType, widenedType))) { checkTypeAssignableTo(exprType, targetType, node, Diagnostics.Neither_type_0_nor_type_1_is_assignable_to_the_other); } @@ -6777,36 +7145,37 @@ module ts { } function assignContextualParameterTypes(signature: Signature, context: Signature, mapper: TypeMapper) { - var len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); - for (var i = 0; i < len; i++) { - var parameter = signature.parameters[i]; - var links = getSymbolLinks(parameter); + let len = signature.parameters.length - (signature.hasRestParameter ? 1 : 0); + for (let i = 0; i < len; i++) { + let parameter = signature.parameters[i]; + let links = getSymbolLinks(parameter); links.type = instantiateType(getTypeAtPosition(context, i), mapper); } if (signature.hasRestParameter && context.hasRestParameter && signature.parameters.length >= context.parameters.length) { - var parameter = signature.parameters[signature.parameters.length - 1]; - var links = getSymbolLinks(parameter); + let parameter = signature.parameters[signature.parameters.length - 1]; + let links = getSymbolLinks(parameter); links.type = instantiateType(getTypeOfSymbol(context.parameters[context.parameters.length - 1]), mapper); } } function getReturnTypeFromBody(func: FunctionLikeDeclaration, contextualMapper?: TypeMapper): Type { - var contextualSignature = getContextualSignatureForFunctionLikeDeclaration(func); + let contextualSignature = getContextualSignatureForFunctionLikeDeclaration(func); if (!func.body) { return unknownType; } + let type: Type; if (func.body.kind !== SyntaxKind.Block) { - var type = checkExpressionCached(func.body, contextualMapper); + type = checkExpressionCached(func.body, contextualMapper); } else { // Aggregate the types of expressions within all the return statements. - var types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); + let types = checkAndAggregateReturnExpressionTypes(func.body, contextualMapper); if (types.length === 0) { return voidType; } // When return statements are contextually typed we allow the return type to be a union type. Otherwise we require the // return expressions to have a best common supertype. - var type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); + type = contextualSignature ? getUnionType(types) : getCommonSupertype(types); if (!type) { error(func, Diagnostics.No_best_common_type_exists_among_return_expressions); return unknownType; @@ -6820,12 +7189,12 @@ module ts { /// Returns a set of types relating to every return expression relating to a function block. function checkAndAggregateReturnExpressionTypes(body: Block, contextualMapper?: TypeMapper): Type[] { - var aggregatedTypes: Type[] = []; + let aggregatedTypes: Type[] = []; forEachReturnStatement(body, returnStatement => { - var expr = returnStatement.expression; + let expr = returnStatement.expression; if (expr) { - var type = checkExpressionCached(expr, contextualMapper); + let type = checkExpressionCached(expr, contextualMapper); if (!contains(aggregatedTypes, type)) { aggregatedTypes.push(type); } @@ -6864,7 +7233,7 @@ module ts { return; } - var bodyBlock = func.body; + let bodyBlock = func.body; // Ensure the body has at least one return expression. if (bodyContainsAReturnStatement(bodyBlock)) { @@ -6886,7 +7255,7 @@ module ts { Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node)); // Grammar checking - var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + let hasGrammarError = checkGrammarFunctionLikeDeclaration(node); if (!hasGrammarError && node.kind === SyntaxKind.FunctionExpression) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } @@ -6895,24 +7264,24 @@ module ts { if (contextualMapper === identityMapper && isContextSensitive(node)) { return anyFunctionType; } - var links = getNodeLinks(node); - var type = getTypeOfSymbol(node.symbol); + let links = getNodeLinks(node); + let type = getTypeOfSymbol(node.symbol); // Check if function expression is contextually typed and assign parameter types if so if (!(links.flags & NodeCheckFlags.ContextChecked)) { - var contextualSignature = getContextualSignature(node); + let contextualSignature = getContextualSignature(node); // If a type check is started at a function expression that is an argument of a function call, obtaining the // contextual type may recursively get back to here during overload resolution of the call. If so, we will have // already assigned contextual types. if (!(links.flags & NodeCheckFlags.ContextChecked)) { links.flags |= NodeCheckFlags.ContextChecked; if (contextualSignature) { - var signature = getSignaturesOfType(type, SignatureKind.Call)[0]; + let signature = getSignaturesOfType(type, SignatureKind.Call)[0]; if (isContextSensitive(node)) { assignContextualParameterTypes(signature, contextualSignature, contextualMapper || identityMapper); } if (!node.type) { signature.resolvedReturnType = resolvingType; - var returnType = getReturnTypeFromBody(node, contextualMapper); + let returnType = getReturnTypeFromBody(node, contextualMapper); if (signature.resolvedReturnType === resolvingType) { signature.resolvedReturnType = returnType; } @@ -6924,7 +7293,7 @@ module ts { if (produceDiagnostics && node.kind !== SyntaxKind.MethodDeclaration && node.kind !== SyntaxKind.MethodSignature) { checkCollisionWithCapturedSuperVariable(node, (node).name); - checkCollisionWithCapturedThisVariable(node,(node).name); + checkCollisionWithCapturedThisVariable(node, (node).name); } return type; @@ -6933,7 +7302,7 @@ module ts { function checkFunctionExpressionOrObjectLiteralMethodBody(node: FunctionExpression | MethodDeclaration) { Debug.assert(node.kind !== SyntaxKind.MethodDeclaration || isObjectLiteralMethod(node)); if (node.type) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { @@ -6941,9 +7310,9 @@ module ts { checkSourceElement(node.body); } else { - var exprType = checkExpression(node.body); + let exprType = checkExpression(node.body); if (node.type) { - checkTypeAssignableTo(exprType, getTypeFromTypeNode(node.type), node.body, /*headMessage*/ undefined); + checkTypeAssignableTo(exprType, getTypeFromTypeNodeOrHeritageClauseElement(node.type), node.body, /*headMessage*/ undefined); } checkFunctionExpressionBodies(node.body); } @@ -6958,9 +7327,9 @@ module ts { return true; } - function checkReferenceExpression(n: Node, invalidReferenceMessage: DiagnosticMessage, constantVarianleMessage: DiagnosticMessage): boolean { + function checkReferenceExpression(n: Node, invalidReferenceMessage: DiagnosticMessage, constantVariableMessage: DiagnosticMessage): boolean { function findSymbol(n: Node): Symbol { - var symbol = getNodeLinks(n).resolvedSymbol; + let symbol = getNodeLinks(n).resolvedSymbol; // Because we got the symbol from the resolvedSymbol property, it might be of kind // SymbolFlags.ExportValue. In this case it is necessary to get the actual export // symbol, which will have the correct flags set on it. @@ -6969,24 +7338,26 @@ module ts { function isReferenceOrErrorExpression(n: Node): boolean { // TypeScript 1.0 spec (April 2014): - // Expressions are classified as values or references. + // Expressions are classified as values or references. // References are the subset of expressions that are permitted as the target of an assignment. - // Specifically, references are combinations of identifiers(section 4.3), parentheses(section 4.7), + // Specifically, references are combinations of identifiers(section 4.3), parentheses(section 4.7), // and property accesses(section 4.10). // All other expression constructs described in this chapter are classified as values. switch (n.kind) { - case SyntaxKind.Identifier: - var symbol = findSymbol(n); + case SyntaxKind.Identifier: { + let symbol = findSymbol(n); // TypeScript 1.0 spec (April 2014): 4.3 - // An identifier expression that references a variable or parameter is classified as a reference. + // An identifier expression that references a variable or parameter is classified as a reference. // An identifier expression that references any other kind of entity is classified as a value(and therefore cannot be the target of an assignment). return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & SymbolFlags.Variable) !== 0; - case SyntaxKind.PropertyAccessExpression: - var symbol = findSymbol(n); + } + case SyntaxKind.PropertyAccessExpression: { + let symbol = findSymbol(n); // TypeScript 1.0 spec (April 2014): 4.10 // A property access expression is always classified as a reference. // NOTE (not in spec): assignment to enum members should not be allowed return !symbol || symbol === unknownSymbol || (symbol.flags & ~SymbolFlags.EnumMember) !== 0; + } case SyntaxKind.ElementAccessExpression: // old compiler doesn't check indexed assess return true; @@ -7000,19 +7371,20 @@ module ts { function isConstVariableReference(n: Node): boolean { switch (n.kind) { case SyntaxKind.Identifier: - case SyntaxKind.PropertyAccessExpression: - var symbol = findSymbol(n); + case SyntaxKind.PropertyAccessExpression: { + let symbol = findSymbol(n); return symbol && (symbol.flags & SymbolFlags.Variable) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & NodeFlags.Const) !== 0; - case SyntaxKind.ElementAccessExpression: - var index = (n).argumentExpression; - var symbol = findSymbol((n).expression); - + } + case SyntaxKind.ElementAccessExpression: { + let index = (n).argumentExpression; + let symbol = findSymbol((n).expression); if (symbol && index && index.kind === SyntaxKind.StringLiteral) { - var name = (index).text; - var prop = getPropertyOfType(getTypeOfSymbol(symbol), name); + let name = (index).text; + let prop = getPropertyOfType(getTypeOfSymbol(symbol), name); return prop && (prop.flags & SymbolFlags.Variable) !== 0 && (getDeclarationFlagsFromSymbol(prop) & NodeFlags.Const) !== 0; } return false; + } case SyntaxKind.ParenthesizedExpression: return isConstVariableReference((n).expression); default: @@ -7024,10 +7396,12 @@ module ts { error(n, invalidReferenceMessage); return false; } + if (isConstVariableReference(n)) { - error(n, constantVarianleMessage); + error(n, constantVariableMessage); return false; } + return true; } @@ -7039,17 +7413,17 @@ module ts { grammarErrorOnNode(node.expression, Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode); } - var operandType = checkExpression(node.expression); + let operandType = checkExpression(node.expression); return booleanType; } function checkTypeOfExpression(node: TypeOfExpression): Type { - var operandType = checkExpression(node.expression); + let operandType = checkExpression(node.expression); return stringType; } function checkVoidExpression(node: VoidExpression): Type { - var operandType = checkExpression(node.expression); + let operandType = checkExpression(node.expression); return undefinedType; } @@ -7062,7 +7436,7 @@ module ts { checkGrammarEvalOrArgumentsInStrictMode(node, node.operand); } - var operandType = checkExpression(node.operand); + let operandType = checkExpression(node.operand); switch (node.operator) { case SyntaxKind.PlusToken: case SyntaxKind.MinusToken: @@ -7075,7 +7449,7 @@ module ts { return booleanType; case SyntaxKind.PlusPlusToken: case SyntaxKind.MinusMinusToken: - var ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + let ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, @@ -7094,8 +7468,8 @@ module ts { // operated upon by a Prefix Increment(11.4.4) or a Prefix Decrement(11.4.5) operator. checkGrammarEvalOrArgumentsInStrictMode(node, node.operand); - var operandType = checkExpression(node.operand); - var ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); + let operandType = checkExpression(node.operand); + let ok = checkArithmeticOperandType(node.operand, operandType, Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type); if (ok) { // run check only if former checks succeeded to avoid reporting cascading errors checkReferenceExpression(node.operand, @@ -7112,9 +7486,9 @@ module ts { return true; } if (type.flags & TypeFlags.Union) { - var types = (type).types; - for (var i = 0; i < types.length; i++) { - if (types[i].flags & kind) { + let types = (type).types; + for (let current of types) { + if (current.flags & kind) { return true; } } @@ -7129,9 +7503,9 @@ module ts { return true; } if (type.flags & TypeFlags.Union) { - var types = (type).types; - for (var i = 0; i < types.length; i++) { - if (!(types[i].flags & kind)) { + let types = (type).types; + for (let current of types) { + if (!(current.flags & kind)) { return false; } } @@ -7151,7 +7525,7 @@ module ts { function checkInstanceOfExpression(node: BinaryExpression, leftType: Type, rightType: Type): Type { // TypeScript 1.0 spec (April 2014): 4.15.4 // The instanceof operator requires the left operand to be of type Any, an object type, or a type parameter type, - // and the right operand to be of type Any or a subtype of the 'Function' interface type. + // and the right operand to be of type Any or a subtype of the 'Function' interface type. // The result is always of the Boolean primitive type. // NOTE: do not raise error if leftType is unknown as related error was already reported if (allConstituentTypesHaveKind(leftType, TypeFlags.Primitive)) { @@ -7179,13 +7553,12 @@ module ts { } function checkObjectLiteralAssignment(node: ObjectLiteralExpression, sourceType: Type, contextualMapper?: TypeMapper): Type { - var properties = node.properties; - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; + let properties = node.properties; + for (let p of properties) { if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { // TODO(andersh): Computed property support - var name = (p).name; - var type = sourceType.flags & TypeFlags.Any ? sourceType : + let name = (p).name; + let type = sourceType.flags & TypeFlags.Any ? sourceType : getTypeOfPropertyOfType(sourceType, name.text) || isNumericLiteralName(name.text) && getIndexTypeOfType(sourceType, IndexKind.Number) || getIndexTypeOfType(sourceType, IndexKind.String); @@ -7209,20 +7582,25 @@ module ts { error(node, Diagnostics.Type_0_is_not_an_array_type, typeToString(sourceType)); return sourceType; } - var elements = node.elements; - for (var i = 0; i < elements.length; i++) { - var e = elements[i]; + let elements = node.elements; + for (let i = 0; i < elements.length; i++) { + let e = elements[i]; if (e.kind !== SyntaxKind.OmittedExpression) { if (e.kind !== SyntaxKind.SpreadElementExpression) { - var propName = "" + i; - var type = sourceType.flags & TypeFlags.Any ? sourceType : + let propName = "" + i; + let type = sourceType.flags & TypeFlags.Any ? sourceType : isTupleLikeType(sourceType) ? getTypeOfPropertyOfType(sourceType, propName) : - getIndexTypeOfType(sourceType, IndexKind.Number); + getIndexTypeOfType(sourceType, IndexKind.Number); if (type) { checkDestructuringAssignment(e, type, contextualMapper); } else { - error(e, Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + if (isTupleType(sourceType)) { + error(e, Diagnostics.Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2, typeToString(sourceType), (sourceType).elementTypes.length, elements.length); + } + else { + error(e, Diagnostics.Type_0_has_no_property_1, typeToString(sourceType), propName); + } } } else { @@ -7253,7 +7631,7 @@ module ts { } function checkReferenceAssignment(target: Expression, sourceType: Type, contextualMapper?: TypeMapper): Type { - var targetType = checkExpression(target, contextualMapper); + let targetType = checkExpression(target, contextualMapper); if (checkReferenceExpression(target, Diagnostics.Invalid_left_hand_side_of_assignment_expression, Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant)) { checkTypeAssignableTo(sourceType, targetType, target, /*headMessage*/ undefined); } @@ -7268,12 +7646,12 @@ module ts { checkGrammarEvalOrArgumentsInStrictMode(node, node.left); } - var operator = node.operatorToken.kind; + let operator = node.operatorToken.kind; if (operator === SyntaxKind.EqualsToken && (node.left.kind === SyntaxKind.ObjectLiteralExpression || node.left.kind === SyntaxKind.ArrayLiteralExpression)) { return checkDestructuringAssignment(node.left, checkExpression(node.right, contextualMapper), contextualMapper); } - var leftType = checkExpression(node.left, contextualMapper); - var rightType = checkExpression(node.right, contextualMapper); + let leftType = checkExpression(node.left, contextualMapper); + let rightType = checkExpression(node.right, contextualMapper); switch (operator) { case SyntaxKind.AsteriskToken: case SyntaxKind.AsteriskEqualsToken: @@ -7297,15 +7675,15 @@ module ts { case SyntaxKind.AmpersandEqualsToken: // TypeScript 1.0 spec (April 2014): 4.15.1 // These operators require their operands to be of type Any, the Number primitive type, - // or an enum type. Operands of an enum type are treated + // or an enum type. Operands of an enum type are treated // as having the primitive type Number. If one operand is the null or undefined value, // it is treated as having the type of the other operand. // The result is always of the Number primitive type. if (leftType.flags & (TypeFlags.Undefined | TypeFlags.Null)) leftType = rightType; if (rightType.flags & (TypeFlags.Undefined | TypeFlags.Null)) rightType = leftType; - var suggestedOperator: SyntaxKind; - // if a user tries to apply a bitwise operator to 2 boolean operands + let suggestedOperator: SyntaxKind; + // if a user tries to apply a bitwise operator to 2 boolean operands // try and return them a helpful suggestion if ((leftType.flags & TypeFlags.Boolean) && (rightType.flags & TypeFlags.Boolean) && @@ -7313,9 +7691,9 @@ module ts { error(node, Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, tokenToString(node.operatorToken.kind), tokenToString(suggestedOperator)); } else { - // otherwise just check each operand separately and report errors as normal - var leftOk = checkArithmeticOperandType(node.left, leftType, Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); - var rightOk = checkArithmeticOperandType(node.right, rightType, Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); + // otherwise just check each operand separately and report errors as normal + let leftOk = checkArithmeticOperandType(node.left, leftType, Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); + let rightOk = checkArithmeticOperandType(node.right, rightType, Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type); if (leftOk && rightOk) { checkAssignmentOperator(numberType); } @@ -7332,7 +7710,7 @@ module ts { if (leftType.flags & (TypeFlags.Undefined | TypeFlags.Null)) leftType = rightType; if (rightType.flags & (TypeFlags.Undefined | TypeFlags.Null)) rightType = leftType; - var resultType: Type; + let resultType: Type; if (allConstituentTypesHaveKind(leftType, TypeFlags.NumberLike) && allConstituentTypesHaveKind(rightType, TypeFlags.NumberLike)) { // Operands of an enum type are treated as having the primitive type Number. // If both operands are of the Number primitive type, the result is of the Number primitive type. @@ -7395,9 +7773,9 @@ module ts { return rightType; } - // Return type is true if there was no error, false if there was an error. + // Return true if there was no error, false if there was an error. function checkForDisallowedESSymbolOperand(operator: SyntaxKind): boolean { - var offendingSymbolOperand = + let offendingSymbolOperand = someConstituentTypeHasKind(leftType, TypeFlags.ESSymbol) ? node.left : someConstituentTypeHasKind(rightType, TypeFlags.ESSymbol) ? node.right : undefined; @@ -7431,9 +7809,9 @@ module ts { // An assignment of the form // VarExpr = ValueExpr // requires VarExpr to be classified as a reference - // A compound assignment furthermore requires VarExpr to be classified as a reference (section 4.1) + // A compound assignment furthermore requires VarExpr to be classified as a reference (section 4.1) // and the type of the non - compound operation to be assignable to the type of VarExpr. - var ok = checkReferenceExpression(node.left, Diagnostics.Invalid_left_hand_side_of_assignment_expression, Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + let ok = checkReferenceExpression(node.left, Diagnostics.Invalid_left_hand_side_of_assignment_expression, Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); // Use default messages if (ok) { // to avoid cascading errors check assignability only if 'isReference' check succeeded and no errors were reported @@ -7459,8 +7837,8 @@ module ts { function checkConditionalExpression(node: ConditionalExpression, contextualMapper?: TypeMapper): Type { checkExpression(node.condition); - var type1 = checkExpression(node.whenTrue, contextualMapper); - var type2 = checkExpression(node.whenFalse, contextualMapper); + let type1 = checkExpression(node.whenTrue, contextualMapper); + let type2 = checkExpression(node.whenFalse, contextualMapper); return getUnionType([type1, type2]); } @@ -7478,15 +7856,15 @@ module ts { } function checkExpressionWithContextualType(node: Expression, contextualType: Type, contextualMapper?: TypeMapper): Type { - var saveContextualType = node.contextualType; + let saveContextualType = node.contextualType; node.contextualType = contextualType; - var result = checkExpression(node, contextualMapper); + let result = checkExpression(node, contextualMapper); node.contextualType = saveContextualType; return result; } function checkExpressionCached(node: Expression, contextualMapper?: TypeMapper): Type { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!links.resolvedType) { links.resolvedType = checkExpression(node, contextualMapper); } @@ -7515,17 +7893,17 @@ module ts { checkComputedPropertyName(node.name); } - var uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); + let uninstantiatedType = checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); return instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } function instantiateTypeWithSingleGenericCallSignature(node: Expression | MethodDeclaration, type: Type, contextualMapper?: TypeMapper) { if (contextualMapper && contextualMapper !== identityMapper) { - var signature = getSingleCallSignature(type); + let signature = getSingleCallSignature(type); if (signature && signature.typeParameters) { - var contextualType = getContextualType(node); + let contextualType = getContextualType(node); if (contextualType) { - var contextualSignature = getSingleCallSignature(contextualType); + let contextualSignature = getSingleCallSignature(contextualType); if (contextualSignature && !contextualSignature.typeParameters) { return getOrCreateTypeFromSignature(instantiateSignatureInContextOf(signature, contextualSignature, contextualMapper)); } @@ -7548,21 +7926,21 @@ module ts { // have the wildcard function type; this form of type check is used during overload resolution to exclude // contextually typed function and arrow expressions in the initial phase. function checkExpressionOrQualifiedName(node: Expression | QualifiedName, contextualMapper?: TypeMapper): Type { - var type: Type; + let type: Type; if (node.kind == SyntaxKind.QualifiedName) { type = checkQualifiedName(node); } else { - var uninstantiatedType = checkExpressionWorker(node, contextualMapper); + let uninstantiatedType = checkExpressionWorker(node, contextualMapper); type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { // enum object type for const enums are only permitted in: - // - 'left' in property access + // - 'left' in property access // - 'object' in indexed access // - target in rhs of import statement - var ok = + let ok = (node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent).expression === node) || (node.parent.kind === SyntaxKind.ElementAccessExpression && (node.parent).expression === node) || ((node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName) && isInRightSideOfImportOrExportAssignment(node)); @@ -7619,6 +7997,8 @@ module ts { return checkTypeAssertion(node); case SyntaxKind.ParenthesizedExpression: return checkExpression((node).expression, contextualMapper); + case SyntaxKind.ClassExpression: + return checkClassExpression(node); case SyntaxKind.FunctionExpression: case SyntaxKind.ArrowFunction: return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); @@ -7672,10 +8052,10 @@ module ts { // strict mode FunctionLikeDeclaration or FunctionExpression(13.1) // Grammar checking - checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); checkVariableLikeDeclaration(node); - var func = getContainingFunction(node); + let func = getContainingFunction(node); if (node.flags & NodeFlags.AccessibilityModifier) { func = getContainingFunction(node); if (!(func.kind === SyntaxKind.Constructor && nodeIsPresent(func.body))) { @@ -7699,8 +8079,8 @@ module ts { } // TODO (yuisu): Remove this check in else-if when SyntaxKind.Construct is moved and ambient context is handled else if (node.kind === SyntaxKind.FunctionType || node.kind === SyntaxKind.FunctionDeclaration || node.kind === SyntaxKind.ConstructorType || - node.kind === SyntaxKind.CallSignature || node.kind === SyntaxKind.Constructor || - node.kind === SyntaxKind.ConstructSignature){ + node.kind === SyntaxKind.CallSignature || node.kind === SyntaxKind.Constructor || + node.kind === SyntaxKind.ConstructSignature) { checkGrammarFunctionLikeDeclaration(node); } @@ -7731,7 +8111,7 @@ module ts { function checkTypeForDuplicateIndexSignatures(node: Node) { if (node.kind === SyntaxKind.InterfaceDeclaration) { - var nodeSymbol = getSymbolOfNode(node); + let nodeSymbol = getSymbolOfNode(node); // in case of merging interface declaration it is possible that we'll enter this check procedure several times for every declaration // to prevent this run check only for the first declaration of a given kind if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { @@ -7742,12 +8122,12 @@ module ts { // TypeScript 1.0 spec (April 2014) // 3.7.4: An object type can contain at most one string index signature and one numeric index signature. // 8.5: A class declaration can have at most one string index member declaration and one numeric index member declaration - var indexSymbol = getIndexSymbol(getSymbolOfNode(node)); + let indexSymbol = getIndexSymbol(getSymbolOfNode(node)); if (indexSymbol) { - var seenNumericIndexer = false; - var seenStringIndexer = false; - for (var i = 0, len = indexSymbol.declarations.length; i < len; ++i) { - var declaration = indexSymbol.declarations[i]; + let seenNumericIndexer = false; + let seenStringIndexer = false; + for (let decl of indexSymbol.declarations) { + let declaration = decl; if (declaration.parameters.length === 1 && declaration.parameters[0].type) { switch (declaration.parameters[0].type.kind) { case SyntaxKind.StringKeyword: @@ -7774,7 +8154,7 @@ module ts { function checkPropertyDeclaration(node: PropertyDeclaration) { // Grammar checking - checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarProperty(node) || checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); } @@ -7795,8 +8175,8 @@ module ts { checkSourceElement(node.body); - var symbol = getSymbolOfNode(node); - var firstDeclaration = getDeclarationOfKind(symbol, node.kind); + let symbol = getSymbolOfNode(node); + let firstDeclaration = getDeclarationOfKind(symbol, node.kind); // Only type check the symbol once if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(symbol); @@ -7844,21 +8224,21 @@ module ts { } // TS 1.0 spec (April 2014): 8.3.2 - // Constructors of classes with no extends clause may not contain super calls, whereas + // Constructors of classes with no extends clause may not contain super calls, whereas // constructors of derived classes must contain at least one super call somewhere in their function body. - if (getClassBaseTypeNode(node.parent)) { + if (getClassExtendsHeritageClauseElement(node.parent)) { if (containsSuperCall(node.body)) { // The first statement in the body of a constructor must be a super call if both of the following are true: // - The containing class is a derived class. - // - The constructor declares parameter properties + // - The constructor declares parameter properties // or the containing class declares instance member variables with initializers. - var superCallShouldBeFirst = + let superCallShouldBeFirst = forEach((node.parent).members, isInstancePropertyWithInitializer) || forEach(node.parameters, p => p.flags & (NodeFlags.Public | NodeFlags.Private | NodeFlags.Protected)); if (superCallShouldBeFirst) { - var statements = (node.body).statements; + let statements = (node.body).statements; if (!statements.length || statements[0].kind !== SyntaxKind.ExpressionStatement || !isSuperCallExpression((statements[0]).expression)) { error(node, Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties); } @@ -7888,15 +8268,15 @@ module ts { if (!hasDynamicName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. - var otherKind = node.kind === SyntaxKind.GetAccessor ? SyntaxKind.SetAccessor : SyntaxKind.GetAccessor; - var otherAccessor = getDeclarationOfKind(node.symbol, otherKind); + let otherKind = node.kind === SyntaxKind.GetAccessor ? SyntaxKind.SetAccessor : SyntaxKind.GetAccessor; + let otherAccessor = getDeclarationOfKind(node.symbol, otherKind); if (otherAccessor) { if (((node.flags & NodeFlags.AccessibilityModifier) !== (otherAccessor.flags & NodeFlags.AccessibilityModifier))) { error(node.name, Diagnostics.Getter_and_setter_accessors_do_not_agree_in_visibility); } - var currentAccessorType = getAnnotatedAccessorType(node); - var otherAccessorType = getAnnotatedAccessorType(otherAccessor); + let currentAccessorType = getAnnotatedAccessorType(node); + let otherAccessorType = getAnnotatedAccessorType(otherAccessor); // TypeScript 1.0 spec (April 2014): 4.5 // If both accessors include type annotations, the specified types must be identical. if (currentAccessorType && otherAccessorType) { @@ -7913,19 +8293,31 @@ module ts { checkFunctionLikeDeclaration(node); } - function checkTypeReference(node: TypeReferenceNode) { + function checkMissingDeclaration(node: Node) { + checkDecorators(node); + } + + function checkTypeReferenceNode(node: TypeReferenceNode) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + + function checkHeritageClauseElement(node: HeritageClauseElement) { + return checkTypeReferenceOrHeritageClauseElement(node); + } + + function checkTypeReferenceOrHeritageClauseElement(node: TypeReferenceNode | HeritageClauseElement) { // Grammar checking checkGrammarTypeArguments(node, node.typeArguments); - var type = getTypeFromTypeReferenceNode(node); + let type = getTypeFromTypeReferenceOrHeritageClauseElement(node); if (type !== unknownType && node.typeArguments) { // Do type argument local checks only if referenced type is successfully resolved - var len = node.typeArguments.length; - for (var i = 0; i < len; i++) { + let len = node.typeArguments.length; + for (let i = 0; i < len; i++) { checkSourceElement(node.typeArguments[i]); - var constraint = getConstraintOfTypeParameter((type).target.typeParameters[i]); + let constraint = getConstraintOfTypeParameter((type).target.typeParameters[i]); if (produceDiagnostics && constraint) { - var typeArgument = (type).typeArguments[i]; + let typeArgument = (type).typeArguments[i]; checkTypeAssignableTo(typeArgument, constraint, node, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } @@ -7939,7 +8331,7 @@ module ts { function checkTypeLiteral(node: TypeLiteralNode) { forEach(node.members, checkSourceElement); if (produceDiagnostics) { - var type = getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); + let type = getTypeFromTypeLiteralOrFunctionOrConstructorTypeNode(node); checkIndexConstraints(type); checkTypeForDuplicateIndexSignatures(node); } @@ -7951,7 +8343,7 @@ module ts { function checkTupleType(node: TupleTypeNode) { // Grammar checking - var hasErrorFromDisallowedTrailingComma = checkGrammarForDisallowedTrailingComma(node.elementTypes); + let hasErrorFromDisallowedTrailingComma = checkGrammarForDisallowedTrailingComma(node.elementTypes); if (!hasErrorFromDisallowedTrailingComma && node.elementTypes.length === 0) { grammarErrorOnNode(node, Diagnostics.A_tuple_type_element_list_cannot_be_empty); } @@ -7971,7 +8363,7 @@ module ts { if (!produceDiagnostics) { return; } - var signature = getSignatureFromDeclaration(signatureDeclarationNode); + let signature = getSignatureFromDeclaration(signatureDeclarationNode); if (!signature.hasStringLiterals) { return; } @@ -7986,22 +8378,21 @@ module ts { // TypeScript 1.0 spec (April 2014): 3.7.2.4 // Every specialized call or construct signature in an object type must be assignable // to at least one non-specialized call or construct signature in the same object type - var signaturesToCheck: Signature[]; + let signaturesToCheck: Signature[]; // Unnamed (call\construct) signatures in interfaces are inherited and not shadowed so examining just node symbol won't give complete answer. // Use declaring type to obtain full list of signatures. if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === SyntaxKind.InterfaceDeclaration) { Debug.assert(signatureDeclarationNode.kind === SyntaxKind.CallSignature || signatureDeclarationNode.kind === SyntaxKind.ConstructSignature); - var signatureKind = signatureDeclarationNode.kind === SyntaxKind.CallSignature ? SignatureKind.Call : SignatureKind.Construct; - var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); - var containingType = getDeclaredTypeOfSymbol(containingSymbol); + let signatureKind = signatureDeclarationNode.kind === SyntaxKind.CallSignature ? SignatureKind.Call : SignatureKind.Construct; + let containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); + let containingType = getDeclaredTypeOfSymbol(containingSymbol); signaturesToCheck = getSignaturesOfType(containingType, signatureKind); } else { signaturesToCheck = getSignaturesOfSymbol(getSymbolOfNode(signatureDeclarationNode)); } - for (var i = 0; i < signaturesToCheck.length; i++) { - var otherSignature = signaturesToCheck[i]; + for (let otherSignature of signaturesToCheck) { if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { return; } @@ -8011,7 +8402,7 @@ module ts { } function getEffectiveDeclarationFlags(n: Node, flagsToCheck: NodeFlags) { - var flags = getCombinedNodeFlags(n); + let flags = getCombinedNodeFlags(n); if (n.parent.kind !== SyntaxKind.InterfaceDeclaration && isInAmbientContext(n)) { if (!(flags & NodeFlags.Ambient)) { // It is nested in an ambient context, which means it is automatically exported @@ -8034,19 +8425,19 @@ module ts { // The caveat is that if some overloads are defined in lib.d.ts, we don't want to // report the errors on those. To achieve this, we will say that the implementation is // the canonical signature only if it is in the same container as the first overload - var implementationSharesContainerWithFirstOverload = implementation !== undefined && implementation.parent === overloads[0].parent; + let implementationSharesContainerWithFirstOverload = implementation !== undefined && implementation.parent === overloads[0].parent; return implementationSharesContainerWithFirstOverload ? implementation : overloads[0]; } function checkFlagAgreementBetweenOverloads(overloads: Declaration[], implementation: FunctionLikeDeclaration, flagsToCheck: NodeFlags, someOverloadFlags: NodeFlags, allOverloadFlags: NodeFlags): void { // Error if some overloads have a flag that is not shared by all overloads. To find the // deviations, we XOR someOverloadFlags with allOverloadFlags - var someButNotAllOverloadFlags = someOverloadFlags ^ allOverloadFlags; + let someButNotAllOverloadFlags = someOverloadFlags ^ allOverloadFlags; if (someButNotAllOverloadFlags !== 0) { - var canonicalFlags = getEffectiveDeclarationFlags(getCanonicalOverload(overloads, implementation), flagsToCheck); + let canonicalFlags = getEffectiveDeclarationFlags(getCanonicalOverload(overloads, implementation), flagsToCheck); forEach(overloads, o => { - var deviation = getEffectiveDeclarationFlags(o, flagsToCheck) ^ canonicalFlags; + let deviation = getEffectiveDeclarationFlags(o, flagsToCheck) ^ canonicalFlags; if (deviation & NodeFlags.Export) { error(o.name, Diagnostics.Overload_signatures_must_all_be_exported_or_not_exported); } @@ -8062,9 +8453,9 @@ module ts { function checkQuestionTokenAgreementBetweenOverloads(overloads: Declaration[], implementation: FunctionLikeDeclaration, someHaveQuestionToken: boolean, allHaveQuestionToken: boolean): void { if (someHaveQuestionToken !== allHaveQuestionToken) { - var canonicalHasQuestionToken = hasQuestionToken(getCanonicalOverload(overloads, implementation)); + let canonicalHasQuestionToken = hasQuestionToken(getCanonicalOverload(overloads, implementation)); forEach(overloads, o => { - var deviation = hasQuestionToken(o) !== canonicalHasQuestionToken; + let deviation = hasQuestionToken(o) !== canonicalHasQuestionToken; if (deviation) { error(o.name, Diagnostics.Overload_signatures_must_all_be_optional_or_required); } @@ -8072,26 +8463,26 @@ module ts { } } - var flagsToCheck: NodeFlags = NodeFlags.Export | NodeFlags.Ambient | NodeFlags.Private | NodeFlags.Protected; - var someNodeFlags: NodeFlags = 0; - var allNodeFlags = flagsToCheck; - var someHaveQuestionToken = false; - var allHaveQuestionToken = true; - var hasOverloads = false; - var bodyDeclaration: FunctionLikeDeclaration; - var lastSeenNonAmbientDeclaration: FunctionLikeDeclaration; - var previousDeclaration: FunctionLikeDeclaration; + let flagsToCheck: NodeFlags = NodeFlags.Export | NodeFlags.Ambient | NodeFlags.Private | NodeFlags.Protected; + let someNodeFlags: NodeFlags = 0; + let allNodeFlags = flagsToCheck; + let someHaveQuestionToken = false; + let allHaveQuestionToken = true; + let hasOverloads = false; + let bodyDeclaration: FunctionLikeDeclaration; + let lastSeenNonAmbientDeclaration: FunctionLikeDeclaration; + let previousDeclaration: FunctionLikeDeclaration; - var declarations = symbol.declarations; - var isConstructor = (symbol.flags & SymbolFlags.Constructor) !== 0; + let declarations = symbol.declarations; + let isConstructor = (symbol.flags & SymbolFlags.Constructor) !== 0; function reportImplementationExpectedError(node: FunctionLikeDeclaration): void { - if (node.name && getFullWidth(node.name) === 0) { + if (node.name && nodeIsMissing(node.name)) { return; } - var seen = false; - var subsequentNode = forEachChild(node.parent, c => { + let seen = false; + let subsequentNode = forEachChild(node.parent, c => { if (seen) { return c; } @@ -8101,13 +8492,13 @@ module ts { }); if (subsequentNode) { if (subsequentNode.kind === node.kind) { - var errorNode: Node = (subsequentNode).name || subsequentNode; + let errorNode: Node = (subsequentNode).name || subsequentNode; // TODO(jfreeman): These are methods, so handle computed name case if (node.name && (subsequentNode).name && (node.name).text === ((subsequentNode).name).text) { // the only situation when this is possible (same kind\same name but different symbol) - mixed static and instance class members Debug.assert(node.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature); Debug.assert((node.flags & NodeFlags.Static) !== (subsequentNode.flags & NodeFlags.Static)); - var diagnostic = node.flags & NodeFlags.Static ? Diagnostics.Function_overload_must_be_static : Diagnostics.Function_overload_must_not_be_static; + let diagnostic = node.flags & NodeFlags.Static ? Diagnostics.Function_overload_must_be_static : Diagnostics.Function_overload_must_not_be_static; error(errorNode, diagnostic); return; } @@ -8117,7 +8508,7 @@ module ts { } } } - var errorNode: Node = node.name || node; + let errorNode: Node = node.name || node; if (isConstructor) { error(errorNode, Diagnostics.Constructor_implementation_is_missing); } @@ -8128,13 +8519,13 @@ module ts { // when checking exported function declarations across modules check only duplicate implementations // names and consistency of modifiers are verified when we check local symbol - var isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & SymbolFlags.Module; - var duplicateFunctionDeclaration = false; - var multipleConstructorImplementation = false; - for (var i = 0; i < declarations.length; i++) { - var node = declarations[i]; - var inAmbientContext = isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === SyntaxKind.InterfaceDeclaration || node.parent.kind === SyntaxKind.TypeLiteral || inAmbientContext; + let isExportSymbolInsideModule = symbol.parent && symbol.parent.flags & SymbolFlags.Module; + let duplicateFunctionDeclaration = false; + let multipleConstructorImplementation = false; + for (let current of declarations) { + let node = current; + let inAmbientContext = isInAmbientContext(node); + let inAmbientContextOrInterface = node.parent.kind === SyntaxKind.InterfaceDeclaration || node.parent.kind === SyntaxKind.TypeLiteral || inAmbientContext; if (inAmbientContextOrInterface) { // check if declarations are consecutive only if they are non-ambient // 1. ambient declarations can be interleaved @@ -8147,7 +8538,7 @@ module ts { } if (node.kind === SyntaxKind.FunctionDeclaration || node.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature || node.kind === SyntaxKind.Constructor) { - var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); + let currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; someHaveQuestionToken = someHaveQuestionToken || hasQuestionToken(node); @@ -8203,14 +8594,14 @@ module ts { checkQuestionTokenAgreementBetweenOverloads(declarations, bodyDeclaration, someHaveQuestionToken, allHaveQuestionToken); if (bodyDeclaration) { - var signatures = getSignaturesOfSymbol(symbol); - var bodySignature = getSignatureFromDeclaration(bodyDeclaration); + let signatures = getSignaturesOfSymbol(symbol); + let bodySignature = getSignatureFromDeclaration(bodyDeclaration); // If the implementation signature has string literals, we will have reported an error in // checkSpecializedSignatureDeclaration if (!bodySignature.hasStringLiterals) { // TypeScript 1.0 spec (April 2014): 6.1 - // If a function declaration includes overloads, the overloads determine the call - // signatures of the type given to the function object + // If a function declaration includes overloads, the overloads determine the call + // signatures of the type given to the function object // and the function implementation signature must be assignable to that type // // TypeScript 1.0 spec (April 2014): 3.8.4 @@ -8222,9 +8613,9 @@ module ts { // function g(x: string, y: string) { } // // The implementation is completely unrelated to the specialized signature, yet we do not check this. - for (var i = 0, len = signatures.length; i < len; ++i) { - if (!signatures[i].hasStringLiterals && !isSignatureAssignableTo(bodySignature, signatures[i])) { - error(signatures[i].declaration, Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); + for (let signature of signatures) { + if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + error(signature.declaration, Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } } @@ -8238,13 +8629,11 @@ module ts { return; } - var symbol: Symbol; - // Exports should be checked only if enclosing module contains both exported and non exported declarations. // In case if all declarations are non-exported check is unnecessary. // if localSymbol is defined on node then node itself is exported - check is required - var symbol = node.localSymbol; + let symbol = node.localSymbol; if (!symbol) { // local symbol is undefined => this declaration is non-exported. // however symbol might contain other declarations that are exported @@ -8260,12 +8649,12 @@ module ts { return; } - // we use SymbolFlags.ExportValue, SymbolFlags.ExportType and SymbolFlags.ExportNamespace + // we use SymbolFlags.ExportValue, SymbolFlags.ExportType and SymbolFlags.ExportNamespace // to denote disjoint declarationSpaces (without making new enum type). - var exportedDeclarationSpaces: SymbolFlags = 0; - var nonExportedDeclarationSpaces: SymbolFlags = 0; + let exportedDeclarationSpaces: SymbolFlags = 0; + let nonExportedDeclarationSpaces: SymbolFlags = 0; forEach(symbol.declarations, d => { - var declarationSpaces = getDeclarationSpaces(d); + let declarationSpaces = getDeclarationSpaces(d); if (getEffectiveDeclarationFlags(d, NodeFlags.Export)) { exportedDeclarationSpaces |= declarationSpaces; } @@ -8274,7 +8663,7 @@ module ts { } }); - var commonDeclarationSpace = exportedDeclarationSpaces & nonExportedDeclarationSpaces; + let commonDeclarationSpace = exportedDeclarationSpaces & nonExportedDeclarationSpaces; if (commonDeclarationSpace) { // declaration spaces for exported and non-exported declarations intersect @@ -8297,8 +8686,8 @@ module ts { case SyntaxKind.EnumDeclaration: return SymbolFlags.ExportType | SymbolFlags.ExportValue; case SyntaxKind.ImportEqualsDeclaration: - var result: SymbolFlags = 0; - var target = resolveImport(getSymbolOfNode(d)); + let result: SymbolFlags = 0; + let target = resolveAlias(getSymbolOfNode(d)); forEach(target.declarations, d => { result |= getDeclarationSpaces(d); }); return result; default: @@ -8307,12 +8696,66 @@ module ts { } } + /** Check a decorator */ + function checkDecorator(node: Decorator): void { + let expression: Expression = node.expression; + let exprType = checkExpression(expression); + + switch (node.parent.kind) { + case SyntaxKind.ClassDeclaration: + let classSymbol = getSymbolOfNode(node.parent); + let classConstructorType = getTypeOfSymbol(classSymbol); + let classDecoratorType = instantiateSingleCallFunctionType(globalClassDecoratorType, [classConstructorType]); + checkTypeAssignableTo(exprType, classDecoratorType, node); + break; + + case SyntaxKind.PropertyDeclaration: + checkTypeAssignableTo(exprType, globalPropertyDecoratorType, node); + break; + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + let methodType = getTypeOfNode(node.parent); + let methodDecoratorType = instantiateSingleCallFunctionType(globalMethodDecoratorType, [methodType]); + checkTypeAssignableTo(exprType, methodDecoratorType, node); + break; + + case SyntaxKind.Parameter: + checkTypeAssignableTo(exprType, globalParameterDecoratorType, node); + break; + } + } + + /** Check the decorators of a node */ + function checkDecorators(node: Node): void { + if (!node.decorators) { + return; + } + + switch (node.kind) { + case SyntaxKind.ClassDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.Parameter: + emitDecorate = true; + break; + + default: + return; + } + + forEach(node.decorators, checkDecorator); + } + function checkFunctionDeclaration(node: FunctionDeclaration): void { if (produceDiagnostics) { checkFunctionLikeDeclaration(node) || - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || - checkGrammarFunctionName(node.name) || - checkGrammarForGenerator(node); + checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || + checkGrammarFunctionName(node.name) || + checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); @@ -8321,12 +8764,13 @@ module ts { } function checkFunctionLikeDeclaration(node: FunctionLikeDeclaration): void { + checkDecorators(node); checkSignatureDeclaration(node); // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. - if (node.name.kind === SyntaxKind.ComputedPropertyName) { + if (node.name && node.name.kind === SyntaxKind.ComputedPropertyName) { // This check will account for methods in class/interface declarations, // as well as accessors in classes/object literals checkComputedPropertyName(node.name); @@ -8336,10 +8780,10 @@ module ts { // first we want to check the local symbol that contain this declaration // - if node.localSymbol !== undefined - this is current declaration is exported and localSymbol points to the local symbol // - if node.localSymbol === undefined - this node is non-exported so we can just pick the result of getSymbolOfNode - var symbol = getSymbolOfNode(node); - var localSymbol = node.localSymbol || symbol; + let symbol = getSymbolOfNode(node); + let localSymbol = node.localSymbol || symbol; - var firstDeclaration = getDeclarationOfKind(localSymbol, node.kind); + let firstDeclaration = getDeclarationOfKind(localSymbol, node.kind); // Only type check the symbol once if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(localSymbol); @@ -8356,7 +8800,7 @@ module ts { checkSourceElement(node.body); if (node.type && !isAccessor(node.kind)) { - checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); + checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } // Report an implicit any error if there is no body, no explicit return type, and node is not a private method @@ -8411,7 +8855,7 @@ module ts { return false; } - var root = getRootDeclaration(node); + let root = getRootDeclaration(node); if (root.kind === SyntaxKind.Parameter && nodeIsMissing((root.parent).body)) { // just an overload - no codegen impact return false; @@ -8419,7 +8863,7 @@ module ts { return true; } - + function checkCollisionWithCapturedThisVariable(node: Node, name: Identifier): void { if (needCollisionCheckForIdentifier(node, name, "_this")) { potentialThisCollisions.push(node); @@ -8428,10 +8872,10 @@ module ts { // this function will run after checking the source file so 'CaptureThis' is correct for all nodes function checkIfThisIsCapturedInEnclosingScope(node: Node): void { - var current = node; - while (current) { + let current = node; + while (current) { if (getNodeCheckFlags(current) & NodeCheckFlags.CaptureThis) { - var isDeclaration = node.kind !== SyntaxKind.Identifier; + let isDeclaration = node.kind !== SyntaxKind.Identifier; if (isDeclaration) { error((node).name, Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference); } @@ -8450,14 +8894,14 @@ module ts { } // bubble up and find containing type - var enclosingClass = getAncestor(node, SyntaxKind.ClassDeclaration); + let enclosingClass = getAncestor(node, SyntaxKind.ClassDeclaration); // if containing type was not found or it is ambient - exit (no codegen) if (!enclosingClass || isInAmbientContext(enclosingClass)) { return; } - if (getClassBaseTypeNode(enclosingClass)) { - var isDeclaration = node.kind !== SyntaxKind.Identifier; + if (getClassExtendsHeritageClauseElement(enclosingClass)) { + let isDeclaration = node.kind !== SyntaxKind.Identifier; if (isDeclaration) { error(node, Diagnostics.Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference); } @@ -8478,7 +8922,7 @@ module ts { } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent - var parent = getDeclarationContainer(node); + let parent = getDeclarationContainer(node); if (parent.kind === SyntaxKind.SourceFile && isExternalModule(parent)) { // If the declaration happens to be in external module, report error that require and exports are reserved keywords error(name, Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module, @@ -8488,11 +8932,11 @@ module ts { function checkVarDeclaredNamesNotShadowed(node: VariableDeclaration | BindingElement) { // - ScriptBody : StatementList - // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList // also occurs in the VarDeclaredNames of StatementList. // - Block : { StatementList } - // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList + // It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList // also occurs in the VarDeclaredNames of StatementList. // Variable declarations are hoisted to the top of their function scope. They can shadow @@ -8501,46 +8945,58 @@ module ts { // A non-initialized declaration is a no-op as the block declaration will resolve before the var // declaration. the problem is if the declaration has an initializer. this will act as a write to the // block declared value. this is fine for let, but not const. - // Only consider declarations with initializers, uninitialized var declarations will not + // Only consider declarations with initializers, uninitialized let declarations will not // step on a let/const variable. - // Do not consider let and const declarations, as duplicate block-scoped declarations + // Do not consider let and const declarations, as duplicate block-scoped declarations // are handled by the binder. - // We are only looking for var declarations that step on let\const declarations from a + // We are only looking for let declarations that step on let\const declarations from a // different scope. e.g.: // { // const x = 0; // localDeclarationSymbol obtained after name resolution will correspond to this declaration - // var x = 0; // symbol for this declaration will be 'symbol' + // let x = 0; // symbol for this declaration will be 'symbol' // } - if (node.initializer && (getCombinedNodeFlags(node) & NodeFlags.BlockScoped) === 0) { - var symbol = getSymbolOfNode(node); - if (symbol.flags & SymbolFlags.FunctionScopedVariable) { - var localDeclarationSymbol = resolveName(node, (node.name).text, SymbolFlags.Variable, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined); - if (localDeclarationSymbol && - localDeclarationSymbol !== symbol && - localDeclarationSymbol.flags & SymbolFlags.BlockScopedVariable) { - if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & NodeFlags.BlockScoped) { - var varDeclList = getAncestor(localDeclarationSymbol.valueDeclaration, SyntaxKind.VariableDeclarationList); - var container = - varDeclList.parent.kind === SyntaxKind.VariableStatement && - varDeclList.parent.parent; - - // names of block-scoped and function scoped variables can collide only - // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) - var namesShareScope = - container && - (container.kind === SyntaxKind.Block && isAnyFunction(container.parent) || - (container.kind === SyntaxKind.ModuleBlock && container.kind === SyntaxKind.ModuleDeclaration) || - container.kind === SyntaxKind.SourceFile); + // skip block-scoped variables and parameters + if ((getCombinedNodeFlags(node) & NodeFlags.BlockScoped) !== 0 || isParameterDeclaration(node)) { + return; + } - // here we know that function scoped variable is shadowed by block scoped one - // if they are defined in the same scope - binder has already reported redeclaration error - // otherwise if variable has an initializer - show error that initialization will fail - // since LHS will be block scoped name instead of function scoped - if (!namesShareScope) { - var name = symbolToString(localDeclarationSymbol); - error(getErrorSpanForNode(node), Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name, name); - } + // skip variable declarations that don't have initializers + // NOTE: in ES6 spec initializer is required in variable declarations where name is binding pattern + // so we'll always treat binding elements as initialized + if (node.kind === SyntaxKind.VariableDeclaration && !node.initializer) { + return; + } + + var symbol = getSymbolOfNode(node); + if (symbol.flags & SymbolFlags.FunctionScopedVariable) { + let localDeclarationSymbol = resolveName(node, (node.name).text, SymbolFlags.Variable, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined); + if (localDeclarationSymbol && + localDeclarationSymbol !== symbol && + localDeclarationSymbol.flags & SymbolFlags.BlockScopedVariable) { + if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & NodeFlags.BlockScoped) { + let varDeclList = getAncestor(localDeclarationSymbol.valueDeclaration, SyntaxKind.VariableDeclarationList); + let container = + varDeclList.parent.kind === SyntaxKind.VariableStatement && varDeclList.parent.parent + ? varDeclList.parent.parent + : undefined; + + // names of block-scoped and function scoped variables can collide only + // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) + let namesShareScope = + container && + (container.kind === SyntaxKind.Block && isFunctionLike(container.parent) || + container.kind === SyntaxKind.ModuleBlock || + container.kind === SyntaxKind.ModuleDeclaration || + container.kind === SyntaxKind.SourceFile); + + // here we know that function scoped variable is shadowed by block scoped one + // if they are defined in the same scope - binder has already reported redeclaration error + // otherwise if variable has an initializer - show error that initialization will fail + // since LHS will be block scoped name instead of function scoped + if (!namesShareScope) { + let name = symbolToString(localDeclarationSymbol); + error(node, Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name, name); } } } @@ -8556,14 +9012,17 @@ module ts { // Check that a parameter initializer contains no references to parameters declared to the right of itself function checkParameterInitializer(node: VariableLikeDeclaration): void { - if (getRootDeclaration(node).kind === SyntaxKind.Parameter) { - var func = getContainingFunction(node); - visit(node.initializer); + if (getRootDeclaration(node).kind !== SyntaxKind.Parameter) { + return; } + + let func = getContainingFunction(node); + visit(node.initializer); + function visit(n: Node) { if (n.kind === SyntaxKind.Identifier) { - var referencedSymbol = getNodeLinks(n).resolvedSymbol; - // check FunctionLikeDeclaration.locals (stores parameters\function local variable) + let referencedSymbol = getNodeLinks(n).resolvedSymbol; + // check FunctionLikeDeclaration.locals (stores parameters\function local variable) // if it contains entry with a specified name and if this entry matches the resolved symbol if (referencedSymbol && referencedSymbol !== unknownSymbol && getSymbol(func.locals, referencedSymbol.name, SymbolFlags.Value) === referencedSymbol) { if (referencedSymbol.valueDeclaration.kind === SyntaxKind.Parameter) { @@ -8588,6 +9047,7 @@ module ts { // Check variable, parameter, or property declaration function checkVariableLikeDeclaration(node: VariableLikeDeclaration) { + checkDecorators(node); checkSourceElement(node.type); // For a computed property, just check the initializer and exit // Do not use hasDynamicName here, because that returns false for well known symbols. @@ -8616,8 +9076,8 @@ module ts { } return; } - var symbol = getSymbolOfNode(node); - var type = getTypeOfVariableOrParameterOrProperty(symbol); + let symbol = getSymbolOfNode(node); + let type = getTypeOfVariableOrParameterOrProperty(symbol); if (node === symbol.valueDeclaration) { // Node is the primary declaration of the symbol, just validate the initializer if (node.initializer) { @@ -8628,7 +9088,7 @@ module ts { else { // Node is a secondary declaration, check that type is identical to primary declaration and check that // initializer is consistent with type associated with the node - var declarationType = getWidenedTypeForVariableLikeDeclaration(node); + let declarationType = getWidenedTypeForVariableLikeDeclaration(node); if (type !== unknownType && declarationType !== unknownType && !isTypeIdenticalTo(type, declarationType)) { error(node.name, Diagnostics.Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2, declarationNameToString(node.name), typeToString(type), typeToString(declarationType)); } @@ -8660,7 +9120,7 @@ module ts { function checkVariableStatement(node: VariableStatement) { // Grammar checking - checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); + checkGrammarDecorators(node) || checkGrammarDisallowedModifiersInBlockOrObjectLiteralExpression(node) || checkGrammarModifiers(node) || checkGrammarVariableDeclarationList(node.declarationList) || checkGrammarForDisallowedLetOrConstStatement(node); forEach(node.declarationList.declarations, checkSourceElement); } @@ -8708,7 +9168,7 @@ module ts { } function checkWhileStatement(node: WhileStatement) { - // Grammar checking + // Grammar checking checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); @@ -8737,53 +9197,270 @@ module ts { checkSourceElement(node.statement); } - function checkForOfStatement(node: ForOfStatement) { - // TODO: not yet implemented - checkGrammarForOfStatement(node); + function checkForOfStatement(node: ForOfStatement): void { + checkGrammarForInOrForOfStatement(node) + + // Check the LHS and RHS + // If the LHS is a declaration, just check it as a variable declaration, which will in turn check the RHS + // via checkRightHandSideOfForOf. + // If the LHS is an expression, check the LHS, as a destructuring assignment or as a reference. + // Then check that the RHS is assignable to it. + if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { + checkForInOrForOfVariableDeclaration(node); + } + else { + let varExpr = node.initializer; + let iteratedType = checkRightHandSideOfForOf(node.expression); + + // There may be a destructuring assignment on the left side + if (varExpr.kind === SyntaxKind.ArrayLiteralExpression || varExpr.kind === SyntaxKind.ObjectLiteralExpression) { + // iteratedType may be undefined. In this case, we still want to check the structure of + // varExpr, in particular making sure it's a valid LeftHandSideExpression. But we'd like + // to short circuit the type relation checking as much as possible, so we pass the unknownType. + checkDestructuringAssignment(varExpr, iteratedType || unknownType); + } + else { + let leftType = checkExpression(varExpr); + checkReferenceExpression(varExpr, /*invalidReferenceMessage*/ Diagnostics.Invalid_left_hand_side_in_for_of_statement, + /*constantVariableMessage*/ Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant); + + // iteratedType will be undefined if the rightType was missing properties/signatures + // required to get its iteratedType (like [Symbol.iterator] or next). This may be + // because we accessed properties from anyType, or it may have led to an error inside + // getIteratedType. + if (iteratedType) { + checkTypeAssignableTo(iteratedType, leftType, varExpr, /*headMessage*/ undefined); + } + } + } + + checkSourceElement(node.statement); } function checkForInStatement(node: ForInStatement) { - // Grammar checking + // Grammar checking checkGrammarForInOrForOfStatement(node); // TypeScript 1.0 spec (April 2014): 5.4 // In a 'for-in' statement of the form - // for (var VarDecl in Expr) Statement + // for (let VarDecl in Expr) Statement // VarDecl must be a variable declaration without a type annotation that declares a variable of type Any, - // and Expr must be an expression of type Any, an object type, or a type parameter type. + // and Expr must be an expression of type Any, an object type, or a type parameter type. if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { - var variableDeclarationList = node.initializer; - if (variableDeclarationList.declarations.length >= 1) { - var decl = variableDeclarationList.declarations[0]; - checkVariableDeclaration(decl); + let variable = (node.initializer).declarations[0]; + if (variable && isBindingPattern(variable.name)) { + error(variable.name, Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } + + checkForInOrForOfVariableDeclaration(node); } else { // In a 'for-in' statement of the form // for (Var in Expr) Statement // Var must be an expression classified as a reference of type Any or the String primitive type, // and Expr must be an expression of type Any, an object type, or a type parameter type. - var varExpr = node.initializer; - var exprType = checkExpression(varExpr); - if (!allConstituentTypesHaveKind(exprType, TypeFlags.Any | TypeFlags.StringLike)) { + let varExpr = node.initializer; + let leftType = checkExpression(varExpr); + if (varExpr.kind === SyntaxKind.ArrayLiteralExpression || varExpr.kind === SyntaxKind.ObjectLiteralExpression) { + error(varExpr, Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); + } + else if (!allConstituentTypesHaveKind(leftType, TypeFlags.Any | TypeFlags.StringLike)) { error(varExpr, Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); } else { // run check only former check succeeded to avoid cascading errors - checkReferenceExpression(varExpr, Diagnostics.Invalid_left_hand_side_in_for_in_statement, Diagnostics.Left_hand_side_of_assignment_expression_cannot_be_a_constant); + checkReferenceExpression(varExpr, Diagnostics.Invalid_left_hand_side_in_for_in_statement, Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant); } } - var exprType = checkExpression(node.expression); + let rightType = checkExpression(node.expression); // unknownType is returned i.e. if node.expression is identifier whose name cannot be resolved // in this case error about missing name is already reported - do not report extra one - if (!allConstituentTypesHaveKind(exprType, TypeFlags.Any | TypeFlags.ObjectType | TypeFlags.TypeParameter)) { + if (!allConstituentTypesHaveKind(rightType, TypeFlags.Any | TypeFlags.ObjectType | TypeFlags.TypeParameter)) { error(node.expression, Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter); } checkSourceElement(node.statement); } + function checkForInOrForOfVariableDeclaration(iterationStatement: ForInStatement | ForOfStatement): void { + let variableDeclarationList = iterationStatement.initializer; + // checkGrammarForInOrForOfStatement will check that there is exactly one declaration. + if (variableDeclarationList.declarations.length >= 1) { + let decl = variableDeclarationList.declarations[0]; + checkVariableDeclaration(decl); + } + } + + function checkRightHandSideOfForOf(rhsExpression: Expression): Type { + let expressionType = getTypeOfExpression(rhsExpression); + return languageVersion >= ScriptTarget.ES6 + ? checkIteratedType(expressionType, rhsExpression) + : checkElementTypeOfArrayOrString(expressionType, rhsExpression); + } + + /** + * When expressionForError is undefined, it means we should not report any errors. + */ + function checkIteratedType(iterable: Type, expressionForError: Expression): Type { + Debug.assert(languageVersion >= ScriptTarget.ES6); + let iteratedType = getIteratedType(iterable, expressionForError); + // Now even though we have extracted the iteratedType, we will have to validate that the type + // passed in is actually an Iterable. + if (expressionForError && iteratedType) { + let completeIterableType = globalIterableType !== emptyObjectType + ? createTypeReference(globalIterableType, [iteratedType]) + : emptyObjectType; + checkTypeAssignableTo(iterable, completeIterableType, expressionForError); + } + + return iteratedType; + + function getIteratedType(iterable: Type, expressionForError: Expression) { + // We want to treat type as an iterable, and get the type it is an iterable of. The iterable + // must have the following structure (annotated with the names of the variables below): + // + // { // iterable + // [Symbol.iterator]: { // iteratorFunction + // (): { // iterator + // next: { // iteratorNextFunction + // (): { // iteratorNextResult + // value: T // iteratorNextValue + // } + // } + // } + // } + // } + // + // T is the type we are after. At every level that involves analyzing return types + // of signatures, we union the return types of all the signatures. + // + // Another thing to note is that at any step of this process, we could run into a dead end, + // meaning either the property is missing, or we run into the anyType. If either of these things + // happens, we return undefined to signal that we could not find the iterated type. If a property + // is missing, and the previous step did not result in 'any', then we also give an error if the + // caller requested it. Then the caller can decide what to do in the case where there is no iterated + // type. This is different from returning anyType, because that would signify that we have matched the + // whole pattern and that T (above) is 'any'. + + if (allConstituentTypesHaveKind(iterable, TypeFlags.Any)) { + return undefined; + } + + let iteratorFunction = getTypeOfPropertyOfType(iterable, getPropertyNameForKnownSymbolName("iterator")); + if (iteratorFunction && allConstituentTypesHaveKind(iteratorFunction, TypeFlags.Any)) { + return undefined; + } + + let iteratorFunctionSignatures = iteratorFunction ? getSignaturesOfType(iteratorFunction, SignatureKind.Call) : emptyArray; + if (iteratorFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, Diagnostics.The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator); + } + return undefined; + } + + let iterator = getUnionType(map(iteratorFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iterator, TypeFlags.Any)) { + return undefined; + } + + let iteratorNextFunction = getTypeOfPropertyOfType(iterator, "next"); + if (iteratorNextFunction && allConstituentTypesHaveKind(iteratorNextFunction, TypeFlags.Any)) { + return undefined; + } + + let iteratorNextFunctionSignatures = iteratorNextFunction ? getSignaturesOfType(iteratorNextFunction, SignatureKind.Call) : emptyArray; + if (iteratorNextFunctionSignatures.length === 0) { + if (expressionForError) { + error(expressionForError, Diagnostics.The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method); + } + return undefined; + } + + let iteratorNextResult = getUnionType(map(iteratorNextFunctionSignatures, getReturnTypeOfSignature)); + if (allConstituentTypesHaveKind(iteratorNextResult, TypeFlags.Any)) { + return undefined; + } + + let iteratorNextValue = getTypeOfPropertyOfType(iteratorNextResult, "value"); + if (!iteratorNextValue) { + if (expressionForError) { + error(expressionForError, Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property); + } + return undefined; + } + + return iteratorNextValue; + } + } + + /** + * This function does the following steps: + * 1. Break up arrayOrStringType (possibly a union) into its string constituents and array constituents. + * 2. Take the element types of the array constituents. + * 3. Return the union of the element types, and string if there was a string constitutent. + * + * For example: + * string -> string + * number[] -> number + * string[] | number[] -> string | number + * string | number[] -> string | number + * string | string[] | number[] -> string | number + * + * It also errors if: + * 1. Some constituent is neither a string nor an array. + * 2. Some constituent is a string and target is less than ES5 (because in ES3 string is not indexable). + */ + function checkElementTypeOfArrayOrString(arrayOrStringType: Type, expressionForError: Expression): Type { + Debug.assert(languageVersion < ScriptTarget.ES6); + + // After we remove all types that are StringLike, we will know if there was a string constituent + // based on whether the remaining type is the same as the initial type. + let arrayType = removeTypesFromUnionType(arrayOrStringType, TypeFlags.StringLike, /*isTypeOfKind*/ true, /*allowEmptyUnionResult*/ true); + let hasStringConstituent = arrayOrStringType !== arrayType; + + let reportedError = false; + if (hasStringConstituent) { + if (languageVersion < ScriptTarget.ES5) { + error(expressionForError, Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher); + reportedError = true; + } + + // Now that we've removed all the StringLike types, if no constituents remain, then the entire + // arrayOrStringType was a string. + if (arrayType === emptyObjectType) { + return stringType; + } + } + + if (!isArrayLikeType(arrayType)) { + if (!reportedError) { + // Which error we report depends on whether there was a string constituent. For example, + // if the input type is number | string, we want to say that number is not an array type. + // But if the input was just number, we want to say that number is not an array type + // or a string type. + let diagnostic = hasStringConstituent + ? Diagnostics.Type_0_is_not_an_array_type + : Diagnostics.Type_0_is_not_an_array_type_or_a_string_type; + error(expressionForError, diagnostic, typeToString(arrayType)); + } + return hasStringConstituent ? stringType : unknownType; + } + + let arrayElementType = getIndexTypeOfType(arrayType, IndexKind.Number) || unknownType; + if (hasStringConstituent) { + // This is just an optimization for the case where arrayOrStringType is string | string[] + if (arrayElementType.flags & TypeFlags.StringLike) { + return stringType; + } + + return getUnionType([arrayElementType, stringType]); + } + + return arrayElementType; + } + function checkBreakOrContinueStatement(node: BreakOrContinueStatement) { // Grammar checking checkGrammarStatementInAmbientContext(node) || checkGrammarBreakOrContinueStatement(node); @@ -8798,17 +9475,17 @@ module ts { function checkReturnStatement(node: ReturnStatement) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - var functionBlock = getContainingFunction(node); + let functionBlock = getContainingFunction(node); if (!functionBlock) { grammarErrorOnFirstToken(node, Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } } if (node.expression) { - var func = getContainingFunction(node); + let func = getContainingFunction(node); if (func) { - var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); - var exprType = checkExpressionCached(node.expression); + let returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(func)); + let exprType = checkExpressionCached(node.expression); if (func.kind === SyntaxKind.SetAccessor) { error(node.expression, Diagnostics.Setters_cannot_return_a_value); } @@ -8842,30 +9519,30 @@ module ts { // Grammar checking checkGrammarStatementInAmbientContext(node); - var firstDefaultClause: CaseOrDefaultClause; - var hasDuplicateDefaultClause = false; + let firstDefaultClause: CaseOrDefaultClause; + let hasDuplicateDefaultClause = false; - var expressionType = checkExpression(node.expression); - forEach(node.clauses, clause => { + let expressionType = checkExpression(node.expression); + forEach(node.caseBlock.clauses, clause => { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause if (clause.kind === SyntaxKind.DefaultClause && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } else { - var sourceFile = getSourceFileOfNode(node); - var start = skipTrivia(sourceFile.text, clause.pos); - var end = clause.statements.length > 0 ? clause.statements[0].pos : clause.end; + let sourceFile = getSourceFileOfNode(node); + let start = skipTrivia(sourceFile.text, clause.pos); + let end = clause.statements.length > 0 ? clause.statements[0].pos : clause.end; grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement); hasDuplicateDefaultClause = true; } } if (produceDiagnostics && clause.kind === SyntaxKind.CaseClause) { - var caseClause = clause; + let caseClause = clause; // TypeScript 1.0 spec (April 2014):5.9 // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. - var caseType = checkExpression(caseClause.expression); + let caseType = checkExpression(caseClause.expression); if (!isTypeAssignableTo(expressionType, caseType)) { // check 'expressionType isAssignableTo caseType' failed, try the reversed check and report errors if it fails checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); @@ -8878,13 +9555,13 @@ module ts { function checkLabeledStatement(node: LabeledStatement) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - var current = node.parent; + let current = node.parent; while (current) { - if (isAnyFunction(current)) { + if (isFunctionLike(current)) { break; } if (current.kind === SyntaxKind.LabeledStatement && (current).label.text === node.label.text) { - var sourceFile = getSourceFileOfNode(node); + let sourceFile = getSourceFileOfNode(node); grammarErrorOnNode(node.label, Diagnostics.Duplicate_label_0, getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; } @@ -8914,64 +9591,83 @@ module ts { checkGrammarStatementInAmbientContext(node); checkBlock(node.tryBlock); - var catchClause = node.catchClause; + let catchClause = node.catchClause; if (catchClause) { // Grammar checking - if (catchClause.type) { - var sourceFile = getSourceFileOfNode(node); - var colonStart = skipTrivia(sourceFile.text, catchClause.name.end); - grammarErrorAtPos(sourceFile, colonStart, ":".length, Diagnostics.Catch_clause_parameter_cannot_have_a_type_annotation); + if (catchClause.variableDeclaration) { + if (catchClause.variableDeclaration.name.kind !== SyntaxKind.Identifier) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.name, Diagnostics.Catch_clause_variable_name_must_be_an_identifier); + } + else if (catchClause.variableDeclaration.type) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.type, Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation); + } + else if (catchClause.variableDeclaration.initializer) { + grammarErrorOnFirstToken(catchClause.variableDeclaration.initializer, Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + } + else { + let identifierName = (catchClause.variableDeclaration.name).text; + let locals = catchClause.block.locals; + if (locals && hasProperty(locals, identifierName)) { + let localSymbol = locals[identifierName] + if (localSymbol && (localSymbol.flags & SymbolFlags.BlockScopedVariable) !== 0) { + grammarErrorOnNode(localSymbol.valueDeclaration, Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, identifierName); + } + } + + // It is a SyntaxError if a TryStatement with a Catch occurs within strict code and the Identifier of the + // Catch production is eval or arguments + checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.variableDeclaration.name); + } } - // It is a SyntaxError if a TryStatement with a Catch occurs within strict code and the Identifier of the - // Catch production is eval or arguments - checkGrammarEvalOrArgumentsInStrictMode(node, catchClause.name); checkBlock(catchClause.block); } - if (node.finallyBlock) checkBlock(node.finallyBlock); + + if (node.finallyBlock) { + checkBlock(node.finallyBlock); + } } function checkIndexConstraints(type: Type) { - var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, IndexKind.Number); - var declaredStringIndexer = getIndexDeclarationOfSymbol(type.symbol, IndexKind.String); + let declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, IndexKind.Number); + let declaredStringIndexer = getIndexDeclarationOfSymbol(type.symbol, IndexKind.String); - var stringIndexType = getIndexTypeOfType(type, IndexKind.String); - var numberIndexType = getIndexTypeOfType(type, IndexKind.Number); + let stringIndexType = getIndexTypeOfType(type, IndexKind.String); + let numberIndexType = getIndexTypeOfType(type, IndexKind.Number); if (stringIndexType || numberIndexType) { forEach(getPropertiesOfObjectType(type), prop => { - var propType = getTypeOfSymbol(prop); + let propType = getTypeOfSymbol(prop); checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, IndexKind.String); checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, IndexKind.Number); }); if (type.flags & TypeFlags.Class && type.symbol.valueDeclaration.kind === SyntaxKind.ClassDeclaration) { - var classDeclaration = type.symbol.valueDeclaration; - for (var i = 0; i < classDeclaration.members.length; i++) { - var member = classDeclaration.members[i]; + let classDeclaration = type.symbol.valueDeclaration; + for (let member of classDeclaration.members) { // Only process instance properties with computed names here. // Static properties cannot be in conflict with indexers, // and properties with literal names were already checked. if (!(member.flags & NodeFlags.Static) && hasDynamicName(member)) { - var propType = getTypeOfSymbol(member.symbol); + let propType = getTypeOfSymbol(member.symbol); checkIndexConstraintForProperty(member.symbol, propType, type, declaredStringIndexer, stringIndexType, IndexKind.String); - checkIndexConstraintForProperty(member.symbol, propType, type, declaredNumberIndexer, numberIndexType, IndexKind.Number); + checkIndexConstraintForProperty(member.symbol, propType, type, declaredNumberIndexer, numberIndexType, IndexKind.Number); } } } } - var errorNode: Node; + let errorNode: Node; if (stringIndexType && numberIndexType) { errorNode = declaredNumberIndexer || declaredStringIndexer; // condition 'errorNode === undefined' may appear if types does not declare nor string neither number indexer if (!errorNode && (type.flags & TypeFlags.Interface)) { - var someBaseTypeHasBothIndexers = forEach((type).baseTypes, base => getIndexTypeOfType(base, IndexKind.String) && getIndexTypeOfType(base, IndexKind.Number)); + let someBaseTypeHasBothIndexers = forEach((type).baseTypes, base => getIndexTypeOfType(base, IndexKind.String) && getIndexTypeOfType(base, IndexKind.Number)); errorNode = someBaseTypeHasBothIndexers ? undefined : type.symbol.declarations[0]; } } - if (errorNode && !isTypeAssignableTo(numberIndexType, stringIndexType)) { + if (errorNode && !isTypeAssignableTo(numberIndexType, stringIndexType)) { error(errorNode, Diagnostics.Numeric_index_type_0_is_not_assignable_to_string_index_type_1, typeToString(numberIndexType), typeToString(stringIndexType)); } @@ -8995,7 +9691,7 @@ module ts { // perform property check if property or indexer is declared in 'type' // this allows to rule out cases when both property and indexer are inherited from the base class - var errorNode: Node; + let errorNode: Node; if (prop.valueDeclaration.name.kind === SyntaxKind.ComputedPropertyName || prop.parent === containingType.symbol) { errorNode = prop.valueDeclaration; } @@ -9006,12 +9702,12 @@ module ts { // for interfaces property and indexer might be inherited from different bases // check if any base class already has both property and indexer. // check should be performed only if 'type' is the first type that brings property\indexer together - var someBaseClassHasBothPropertyAndIndexer = forEach((containingType).baseTypes, base => getPropertyOfObjectType(base, prop.name) && getIndexTypeOfType(base, indexKind)); + let someBaseClassHasBothPropertyAndIndexer = forEach((containingType).baseTypes, base => getPropertyOfObjectType(base, prop.name) && getIndexTypeOfType(base, indexKind)); errorNode = someBaseClassHasBothPropertyAndIndexer ? undefined : containingType.symbol.declarations[0]; } if (errorNode && !isTypeAssignableTo(propertyType, indexType)) { - var errorMessage = + let errorMessage = indexKind === IndexKind.String ? Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2 : Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2; @@ -9037,12 +9733,12 @@ module ts { // Check each type parameter and check that list has no duplicate type parameter declarations function checkTypeParameters(typeParameterDeclarations: TypeParameterDeclaration[]) { if (typeParameterDeclarations) { - for (var i = 0; i < typeParameterDeclarations.length; i++) { - var node = typeParameterDeclarations[i]; + for (let i = 0, n = typeParameterDeclarations.length; i < n; i++) { + let node = typeParameterDeclarations[i]; checkTypeParameter(node); if (produceDiagnostics) { - for (var j = 0; j < i; j++) { + for (let j = 0; j < i; j++) { if (typeParameterDeclarations[j].symbol === node.symbol) { error(node.name, Diagnostics.Duplicate_identifier_0, declarationNameToString(node.name)); } @@ -9052,51 +9748,78 @@ module ts { } } + function checkClassExpression(node: ClassExpression): Type { + grammarErrorOnNode(node, Diagnostics.class_expressions_are_not_currently_supported); + forEach(node.members, checkSourceElement); + return unknownType; + } + function checkClassDeclaration(node: ClassDeclaration) { // Grammar checking - checkGrammarClassDeclarationHeritageClauses(node); + if (node.parent.kind !== SyntaxKind.ModuleBlock && node.parent.kind !== SyntaxKind.SourceFile) { + grammarErrorOnNode(node, Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + } - checkTypeNameIsReserved(node.name, Diagnostics.Class_name_cannot_be_0); + if (!node.name && !(node.flags & NodeFlags.Default)) { + grammarErrorOnFirstToken(node, Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); + } + + checkGrammarClassDeclarationHeritageClauses(node); + checkDecorators(node); + if (node.name) { + checkTypeNameIsReserved(node.name, Diagnostics.Class_name_cannot_be_0); + checkCollisionWithCapturedThisVariable(node, node.name); + checkCollisionWithRequireExportsInGeneratedCode(node, node.name); + } checkTypeParameters(node.typeParameters); - checkCollisionWithCapturedThisVariable(node, node.name); - checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); - var symbol = getSymbolOfNode(node); - var type = getDeclaredTypeOfSymbol(symbol); - var staticType = getTypeOfSymbol(symbol); - var baseTypeNode = getClassBaseTypeNode(node); + let symbol = getSymbolOfNode(node); + let type = getDeclaredTypeOfSymbol(symbol); + let staticType = getTypeOfSymbol(symbol); + let baseTypeNode = getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { + if (!isSupportedHeritageClauseElement(baseTypeNode)) { + error(baseTypeNode.expression, Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); + } + emitExtends = emitExtends || !isInAmbientContext(node); - checkTypeReference(baseTypeNode); + checkHeritageClauseElement(baseTypeNode); } if (type.baseTypes.length) { if (produceDiagnostics) { - var baseType = type.baseTypes[0]; - checkTypeAssignableTo(type, baseType, node.name, Diagnostics.Class_0_incorrectly_extends_base_class_1); - var staticBaseType = getTypeOfSymbol(baseType.symbol); - checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name, + let baseType = type.baseTypes[0]; + checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); + let staticBaseType = getTypeOfSymbol(baseType.symbol); + checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); - if (baseType.symbol !== resolveEntityName(node, baseTypeNode.typeName, SymbolFlags.Value)) { + + if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, SymbolFlags.Value)) { error(baseTypeNode, Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); } checkKindsOfPropertyMemberOverrides(type, baseType); } - - // Check that base type can be evaluated as expression - checkExpressionOrQualifiedName(baseTypeNode.typeName); } - var implementedTypeNodes = getClassImplementedTypeNodes(node); + if (type.baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) { + // Check that base type can be evaluated as expression + checkExpressionOrQualifiedName(baseTypeNode.expression); + } + + let implementedTypeNodes = getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { forEach(implementedTypeNodes, typeRefNode => { - checkTypeReference(typeRefNode); + if (!isSupportedHeritageClauseElement(typeRefNode)) { + error(typeRefNode.expression, Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + + checkHeritageClauseElement(typeRefNode); if (produceDiagnostics) { - var t = getTypeFromTypeReferenceNode(typeRefNode); + let t = getTypeFromHeritageClauseElement(typeRefNode); if (t !== unknownType) { - var declaredType = (t.flags & TypeFlags.Reference) ? (t).target : t; + let declaredType = (t.flags & TypeFlags.Reference) ? (t).target : t; if (declaredType.flags & (TypeFlags.Class | TypeFlags.Interface)) { - checkTypeAssignableTo(type, t, node.name, Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(type, t, node.name || node, Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, Diagnostics.A_class_may_only_implement_another_class_or_interface); @@ -9126,29 +9849,29 @@ module ts { // Inheritance means that a derived class implicitly contains all non - overridden members of the base class. // Both public and private property members are inherited, but only public property members can be overridden. // A property member in a derived class is said to override a property member in a base class - // when the derived class property member has the same name and kind(instance or static) + // when the derived class property member has the same name and kind(instance or static) // as the base class property member. // The type of an overriding property member must be assignable(section 3.8.4) // to the type of the overridden property member, or otherwise a compile - time error occurs. // Base class instance member functions can be overridden by derived class instance member functions, // but not by other kinds of members. - // Base class instance member variables and accessors can be overridden by + // Base class instance member variables and accessors can be overridden by // derived class instance member variables and accessors, but not by other kinds of members. // NOTE: assignability is checked in checkClassDeclaration - var baseProperties = getPropertiesOfObjectType(baseType); - for (var i = 0, len = baseProperties.length; i < len; ++i) { - var base = getTargetSymbol(baseProperties[i]); + let baseProperties = getPropertiesOfObjectType(baseType); + for (let baseProperty of baseProperties) { + let base = getTargetSymbol(baseProperty); if (base.flags & SymbolFlags.Prototype) { continue; } - var derived = getTargetSymbol(getPropertyOfObjectType(type, base.name)); + let derived = getTargetSymbol(getPropertyOfObjectType(type, base.name)); if (derived) { - var baseDeclarationFlags = getDeclarationFlagsFromSymbol(base); - var derivedDeclarationFlags = getDeclarationFlagsFromSymbol(derived); - if ((baseDeclarationFlags & NodeFlags.Private) || (derivedDeclarationFlags & NodeFlags.Private)) { + let baseDeclarationFlags = getDeclarationFlagsFromSymbol(base); + let derivedDeclarationFlags = getDeclarationFlagsFromSymbol(derived); + if ((baseDeclarationFlags & NodeFlags.Private) || (derivedDeclarationFlags & NodeFlags.Private)) { // either base or derived property is private - not override, skip it continue; } @@ -9163,7 +9886,7 @@ module ts { continue; } - var errorMessage: DiagnosticMessage; + let errorMessage: DiagnosticMessage; if (base.flags & SymbolFlags.Method) { if (derived.flags & SymbolFlags.Accessor) { errorMessage = Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; @@ -9202,9 +9925,9 @@ module ts { // TypeScript 1.0 spec (April 2014): // When a generic interface has multiple declarations, all declarations must have identical type parameter // lists, i.e. identical type parameter names with identical constraints in identical order. - for (var i = 0, len = list1.length; i < len; i++) { - var tp1 = list1[i]; - var tp2 = list2[i]; + for (let i = 0, len = list1.length; i < len; i++) { + let tp1 = list1[i]; + let tp2 = list2[i]; if (tp1.name.text !== tp2.name.text) { return false; } @@ -9214,7 +9937,7 @@ module ts { if (!tp1.constraint || !tp2.constraint) { return false; } - if (!isTypeIdenticalTo(getTypeFromTypeNode(tp1.constraint), getTypeFromTypeNode(tp2.constraint))) { + if (!isTypeIdenticalTo(getTypeFromTypeNodeOrHeritageClauseElement(tp1.constraint), getTypeFromTypeNodeOrHeritageClauseElement(tp2.constraint))) { return false; } } @@ -9226,28 +9949,26 @@ module ts { return true; } - var seen: Map<{ prop: Symbol; containingType: Type }> = {}; + let seen: Map<{ prop: Symbol; containingType: Type }> = {}; forEach(type.declaredProperties, p => { seen[p.name] = { prop: p, containingType: type }; }); - var ok = true; + let ok = true; - for (var i = 0, len = type.baseTypes.length; i < len; ++i) { - var base = type.baseTypes[i]; - var properties = getPropertiesOfObjectType(base); - for (var j = 0, proplen = properties.length; j < proplen; ++j) { - var prop = properties[j]; + for (let base of type.baseTypes) { + let properties = getPropertiesOfObjectType(base); + for (let prop of properties) { if (!hasProperty(seen, prop.name)) { seen[prop.name] = { prop: prop, containingType: base }; } else { - var existing = seen[prop.name]; - var isInheritedProperty = existing.containingType !== type; + let existing = seen[prop.name]; + let isInheritedProperty = existing.containingType !== type; if (isInheritedProperty && !isPropertyIdenticalTo(existing.prop, prop)) { ok = false; - var typeName1 = typeToString(existing.containingType); - var typeName2 = typeToString(base); + let typeName1 = typeToString(existing.containingType); + let typeName2 = typeToString(base); - var errorInfo = chainDiagnosticMessages(undefined, Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical, symbolToString(prop), typeName1, typeName2); + let errorInfo = chainDiagnosticMessages(undefined, Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical, symbolToString(prop), typeName1, typeName2); errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); diagnostics.add(createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); } @@ -9260,15 +9981,15 @@ module ts { function checkInterfaceDeclaration(node: InterfaceDeclaration) { // Grammar checking - checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); - var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = getDeclarationOfKind(symbol, SyntaxKind.InterfaceDeclaration); + let symbol = getSymbolOfNode(node); + let firstInterfaceDecl = getDeclarationOfKind(symbol, SyntaxKind.InterfaceDeclaration); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -9277,17 +9998,23 @@ module ts { // Only check this symbol once if (node === firstInterfaceDecl) { - var type = getDeclaredTypeOfSymbol(symbol); + let type = getDeclaredTypeOfSymbol(symbol); // run subsequent checks only if first set succeeded if (checkInheritedPropertiesAreIdentical(type, node.name)) { forEach(type.baseTypes, baseType => { - checkTypeAssignableTo(type, baseType, node.name , Diagnostics.Interface_0_incorrectly_extends_interface_1); + checkTypeAssignableTo(type, baseType, node.name, Diagnostics.Interface_0_incorrectly_extends_interface_1); }); checkIndexConstraints(type); } } } - forEach(getInterfaceBaseTypeNodes(node), checkTypeReference); + forEach(getInterfaceBaseTypeNodes(node), heritageElement => { + if (!isSupportedHeritageClauseElement(heritageElement)) { + error(heritageElement.expression, Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); + } + + checkHeritageClauseElement(heritageElement); + }); forEach(node.members, checkSourceElement); if (produceDiagnostics) { @@ -9297,39 +10024,39 @@ module ts { function checkTypeAliasDeclaration(node: TypeAliasDeclaration) { // Grammar checking - checkGrammarModifiers(node); - + checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkSourceElement(node.type); } function computeEnumMemberValues(node: EnumDeclaration) { - var nodeLinks = getNodeLinks(node); + let nodeLinks = getNodeLinks(node); if (!(nodeLinks.flags & NodeCheckFlags.EnumValuesComputed)) { - var enumSymbol = getSymbolOfNode(node); - var enumType = getDeclaredTypeOfSymbol(enumSymbol); - var autoValue = 0; - var ambient = isInAmbientContext(node); - var enumIsConst = isConst(node); + let enumSymbol = getSymbolOfNode(node); + let enumType = getDeclaredTypeOfSymbol(enumSymbol); + let autoValue = 0; + let ambient = isInAmbientContext(node); + let enumIsConst = isConst(node); forEach(node.members, member => { if (member.name.kind !== SyntaxKind.ComputedPropertyName && isNumericLiteralName((member.name).text)) { error(member.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name); } - var initializer = member.initializer; + let initializer = member.initializer; if (initializer) { - autoValue = getConstantValueForEnumMemberInitializer(initializer, enumIsConst); + autoValue = getConstantValueForEnumMemberInitializer(initializer); if (autoValue === undefined) { if (enumIsConst) { error(initializer, Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); } else if (!ambient) { // Only here do we need to check that the initializer is assignable to the enum type. - // If it is a constant value (not undefined), it is syntactically constrained to be a number. + // If it is a constant value (not undefined), it is syntactically constrained to be a number. // Also, we do not need to check this for ambients because there is already // a syntax error if it is not a constant. - checkTypeAssignableTo(checkExpression(initializer), enumType, initializer, /*headMessage*/ undefined); + checkTypeAssignableTo(checkExpression(initializer), enumType, initializer, /*headMessage*/ undefined); } } else if (enumIsConst) { @@ -9354,32 +10081,28 @@ module ts { nodeLinks.flags |= NodeCheckFlags.EnumValuesComputed; } - function getConstantValueForEnumMemberInitializer(initializer: Expression, enumIsConst: boolean): number { + function getConstantValueForEnumMemberInitializer(initializer: Expression): number { return evalConstant(initializer); function evalConstant(e: Node): number { switch (e.kind) { case SyntaxKind.PrefixUnaryExpression: - var value = evalConstant((e).operand); + let value = evalConstant((e).operand); if (value === undefined) { return undefined; } switch ((e).operator) { case SyntaxKind.PlusToken: return value; case SyntaxKind.MinusToken: return -value; - case SyntaxKind.TildeToken: return enumIsConst ? ~value : undefined; + case SyntaxKind.TildeToken: return ~value; } return undefined; case SyntaxKind.BinaryExpression: - if (!enumIsConst) { - return undefined; - } - - var left = evalConstant((e).left); + let left = evalConstant((e).left); if (left === undefined) { return undefined; } - var right = evalConstant((e).right); + let right = evalConstant((e).right); if (right === undefined) { return undefined; } @@ -9400,18 +10123,14 @@ module ts { case SyntaxKind.NumericLiteral: return +(e).text; case SyntaxKind.ParenthesizedExpression: - return enumIsConst ? evalConstant((e).expression) : undefined; + return evalConstant((e).expression); case SyntaxKind.Identifier: case SyntaxKind.ElementAccessExpression: case SyntaxKind.PropertyAccessExpression: - if (!enumIsConst) { - return undefined; - } - - var member = initializer.parent; - var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); - var enumType: Type; - var propertyName: string; + let member = initializer.parent; + let currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); + let enumType: Type; + let propertyName: string; if (e.kind === SyntaxKind.Identifier) { // unqualified names can refer to member that reside in different declaration of the enum so just doing name resolution won't work. @@ -9420,19 +10139,37 @@ module ts { propertyName = (e).text; } else { + let expression: Expression; if (e.kind === SyntaxKind.ElementAccessExpression) { if ((e).argumentExpression === undefined || (e).argumentExpression.kind !== SyntaxKind.StringLiteral) { return undefined; } - var enumType = getTypeOfNode((e).expression); + expression = (e).expression; propertyName = ((e).argumentExpression).text; } else { - var enumType = getTypeOfNode((e).expression); + expression = (e).expression; propertyName = (e).name.text; } - if (enumType !== currentType) { + + // expression part in ElementAccess\PropertyAccess should be either identifier or dottedName + var current = expression; + while (current) { + if (current.kind === SyntaxKind.Identifier) { + break; + } + else if (current.kind === SyntaxKind.PropertyAccessExpression) { + current = (current).expression; + } + else { + return undefined; + } + } + + enumType = checkExpression(expression); + // allow references to constant members of other enums + if (!(enumType.symbol && (enumType.symbol.flags & SymbolFlags.Enum))) { return undefined; } } @@ -9440,11 +10177,13 @@ module ts { if (propertyName === undefined) { return undefined; } - var property = getPropertyOfObjectType(enumType, propertyName); + + let property = getPropertyOfObjectType(enumType, propertyName); if (!property || !(property.flags & SymbolFlags.EnumMember)) { return undefined; } - var propertyDecl = property.valueDeclaration; + + let propertyDecl = property.valueDeclaration; // self references are illegal if (member === propertyDecl) { return undefined; @@ -9454,6 +10193,7 @@ module ts { if (!isDefinedBefore(propertyDecl, member)) { return undefined; } + return getNodeLinks(propertyDecl).enumMemberValue; } } @@ -9466,7 +10206,7 @@ module ts { } // Grammar checking - checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); @@ -9475,17 +10215,21 @@ module ts { computeEnumMemberValues(node); + let enumIsConst = isConst(node); + if (compilerOptions.separateCompilation && enumIsConst && isInAmbientContext(node)) { + error(node.name, Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided); + } + // Spec 2014 - Section 9.3: // It isn't possible for one enum declaration to continue the automatic numbering sequence of another, // and when an enum type has multiple declarations, only one declaration is permitted to omit a value // for the first member. // // Only perform this check once per symbol - var enumSymbol = getSymbolOfNode(node); - var firstDeclaration = getDeclarationOfKind(enumSymbol, node.kind); + let enumSymbol = getSymbolOfNode(node); + let firstDeclaration = getDeclarationOfKind(enumSymbol, node.kind); if (node === firstDeclaration) { if (enumSymbol.declarations.length > 1) { - var enumIsConst = isConst(node); // check that const is placed\omitted on all enum declarations forEach(enumSymbol.declarations, decl => { if (isConstEnumDeclaration(decl) !== enumIsConst) { @@ -9494,19 +10238,19 @@ module ts { }); } - var seenEnumMissingInitialInitializer = false; + let seenEnumMissingInitialInitializer = false; forEach(enumSymbol.declarations, declaration => { // return true if we hit a violation of the rule, false otherwise if (declaration.kind !== SyntaxKind.EnumDeclaration) { return false; } - var enumDeclaration = declaration; + let enumDeclaration = declaration; if (!enumDeclaration.members.length) { return false; } - var firstEnumMember = enumDeclaration.members[0]; + let firstEnumMember = enumDeclaration.members[0]; if (!firstEnumMember.initializer) { if (seenEnumMissingInitialInitializer) { error(firstEnumMember.name, Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element); @@ -9520,9 +10264,8 @@ module ts { } function getFirstNonAmbientClassOrFunctionDeclaration(symbol: Symbol): Declaration { - var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + let declarations = symbol.declarations; + for (let declaration of declarations) { if ((declaration.kind === SyntaxKind.ClassDeclaration || (declaration.kind === SyntaxKind.FunctionDeclaration && nodeIsPresent((declaration).body))) && !isInAmbientContext(declaration)) { return declaration; } @@ -9533,36 +10276,23 @@ module ts { function checkModuleDeclaration(node: ModuleDeclaration) { if (produceDiagnostics) { // Grammar checking - if (!checkGrammarModifiers(node)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!isInAmbientContext(node) && node.name.kind === SyntaxKind.StringLiteral) { grammarErrorOnNode(node.name, Diagnostics.Only_ambient_modules_can_use_quoted_names); } - else if (node.name.kind === SyntaxKind.Identifier && node.body.kind === SyntaxKind.ModuleBlock) { - var statements = (node.body).statements; - for (var i = 0, n = statements.length; i < n; i++) { - var statement = statements[i]; - - // TODO: AndersH: No reason to do a separate pass over the statements for this check, we should - // just fold it into checkExportAssignment. - if (statement.kind === SyntaxKind.ExportAssignment) { - // Export assignments are not allowed in an internal module - grammarErrorOnNode(statement, Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); - } - } - } } checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); checkExportsOnMergedDeclarations(node); - var symbol = getSymbolOfNode(node); + let symbol = getSymbolOfNode(node); // The following checks only apply on a non-ambient instantiated module declaration. if (symbol.flags & SymbolFlags.ValueModule && symbol.declarations.length > 1 && !isInAmbientContext(node) - && isInstantiatedModule(node, compilerOptions.preserveConstEnums)) { - var classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + && isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) { + let classOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); if (classOrFunc) { if (getSourceFileOfNode(node) !== getSourceFileOfNode(classOrFunc)) { error(node.name, Diagnostics.A_module_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); @@ -9586,20 +10316,29 @@ module ts { checkSourceElement(node.body); } - function getFirstIdentifier(node: EntityName): Identifier { - while (node.kind === SyntaxKind.QualifiedName) { - node = (node).left; + function getFirstIdentifier(node: EntityName | Expression): Identifier { + while (true) { + if (node.kind === SyntaxKind.QualifiedName) { + node = (node).left; + } + else if (node.kind === SyntaxKind.PropertyAccessExpression) { + node = (node).expression; + } + else { + break; + } } + Debug.assert(node.kind === SyntaxKind.Identifier); return node; } function checkExternalImportOrExportDeclaration(node: ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration): boolean { - var moduleName = getExternalModuleName(node); - if (getFullWidth(moduleName) !== 0 && moduleName.kind !== SyntaxKind.StringLiteral) { + let moduleName = getExternalModuleName(node); + if (!nodeIsMissing(moduleName) && moduleName.kind !== SyntaxKind.StringLiteral) { error(moduleName, Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === SyntaxKind.ModuleBlock && (node.parent.parent).name.kind === SyntaxKind.StringLiteral; + let inAmbientExternalModule = node.parent.kind === SyntaxKind.ModuleBlock && (node.parent.parent).name.kind === SyntaxKind.StringLiteral; if (node.parent.kind !== SyntaxKind.SourceFile && !inAmbientExternalModule) { error(moduleName, node.kind === SyntaxKind.ExportDeclaration ? Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module : @@ -9608,7 +10347,7 @@ module ts { } if (inAmbientExternalModule && isExternalModuleNameRelative((moduleName).text)) { // TypeScript 1.0 spec (April 2013): 12.1.6 - // An ExternalImportDeclaration in an AmbientExternalModuleDeclaration may reference + // An ExternalImportDeclaration in an AmbientExternalModuleDeclaration may reference // other external modules only through top - level external module names. // Relative external module names are not permitted. error(node, Diagnostics.Import_or_export_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name); @@ -9617,16 +10356,16 @@ module ts { return true; } - function checkImportSymbol(node: ImportEqualsDeclaration | ImportClause | NamespaceImport | ImportSpecifier | ExportSpecifier) { - var symbol = getSymbolOfNode(node); - var target = resolveImport(symbol); + function checkAliasSymbol(node: ImportEqualsDeclaration | ImportClause | NamespaceImport | ImportSpecifier | ExportSpecifier) { + let symbol = getSymbolOfNode(node); + let target = resolveAlias(symbol); if (target !== unknownSymbol) { - var excludedMeanings = + let excludedMeanings = (symbol.flags & SymbolFlags.Value ? SymbolFlags.Value : 0) | (symbol.flags & SymbolFlags.Type ? SymbolFlags.Type : 0) | (symbol.flags & SymbolFlags.Namespace ? SymbolFlags.Namespace : 0); if (target.flags & excludedMeanings) { - var message = node.kind === SyntaxKind.ExportSpecifier ? + let message = node.kind === SyntaxKind.ExportSpecifier ? Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -9637,15 +10376,15 @@ module ts { function checkImportBinding(node: ImportEqualsDeclaration | ImportClause | NamespaceImport | ImportSpecifier) { checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); - checkImportSymbol(node); + checkAliasSymbol(node); } function checkImportDeclaration(node: ImportDeclaration) { - if (!checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { - var importClause = node.importClause; + let importClause = node.importClause; if (importClause) { if (importClause.name) { checkImportBinding(importClause); @@ -9663,58 +10402,131 @@ module ts { } function checkImportEqualsDeclaration(node: ImportEqualsDeclaration) { - checkGrammarModifiers(node); - if (isInternalModuleImportEqualsDeclaration(node)) { + checkGrammarDecorators(node) || checkGrammarModifiers(node); + if (isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); - var symbol = getSymbolOfNode(node); - var target = resolveImport(symbol); - if (target !== unknownSymbol) { - if (target.flags & SymbolFlags.Value) { - // Target is a value symbol, check that it is not hidden by a local declaration with the same name and - // ensure it can be evaluated as an expression - var moduleName = getFirstIdentifier(node.moduleReference); - if (resolveEntityName(node, moduleName, SymbolFlags.Value | SymbolFlags.Namespace).flags & SymbolFlags.Namespace) { - checkExpressionOrQualifiedName(node.moduleReference); + if (node.flags & NodeFlags.Export) { + markExportAsReferenced(node); + } + if (isInternalModuleImportEqualsDeclaration(node)) { + let target = resolveAlias(getSymbolOfNode(node)); + if (target !== unknownSymbol) { + if (target.flags & SymbolFlags.Value) { + // Target is a value symbol, check that it is not hidden by a local declaration with the same name + let moduleName = getFirstIdentifier(node.moduleReference); + if (!(resolveEntityName(moduleName, SymbolFlags.Value | SymbolFlags.Namespace).flags & SymbolFlags.Namespace)) { + error(moduleName, Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, declarationNameToString(moduleName)); + } } - else { - error(moduleName, Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, declarationNameToString(moduleName)); + if (target.flags & SymbolFlags.Type) { + checkTypeNameIsReserved(node.name, Diagnostics.Import_name_cannot_be_0); } } - if (target.flags & SymbolFlags.Type) { - checkTypeNameIsReserved(node.name, Diagnostics.Import_name_cannot_be_0); - } } - } - else { - if (checkExternalImportOrExportDeclaration(node)) { - checkImportBinding(node); + else { + if (languageVersion >= ScriptTarget.ES6) { + // Import equals declaration is deprecated in es6 or above + grammarErrorOnNode(node, Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead); + } } } } function checkExportDeclaration(node: ExportDeclaration) { - if (!checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_declaration_cannot_have_modifiers); } if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { if (node.exportClause) { - forEach(node.exportClause.elements, checkImportSymbol); + // export { x, y } + // export { x, y } from "foo" + forEach(node.exportClause.elements, checkExportSpecifier); + + let inAmbientExternalModule = node.parent.kind === SyntaxKind.ModuleBlock && (node.parent.parent).name.kind === SyntaxKind.StringLiteral; + if (node.parent.kind !== SyntaxKind.SourceFile && !inAmbientExternalModule) { + error(node, Diagnostics.Export_declarations_are_not_permitted_in_an_internal_module); + } + } + else { + // export * from "foo" + let moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); + if (moduleSymbol && moduleSymbol.exports["export="]) { + error(node.moduleSpecifier, Diagnostics.External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk, symbolToString(moduleSymbol)); + } } } } + function checkExportSpecifier(node: ExportSpecifier) { + checkAliasSymbol(node); + if (!(node.parent.parent).moduleSpecifier) { + markExportAsReferenced(node); + } + } + function checkExportAssignment(node: ExportAssignment) { + let container = node.parent.kind === SyntaxKind.SourceFile ? node.parent : node.parent.parent; + if (container.kind === SyntaxKind.ModuleDeclaration && (container).name.kind === SyntaxKind.Identifier) { + error(node, Diagnostics.An_export_assignment_cannot_be_used_in_an_internal_module); + return; + } // Grammar checking - if (!checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_assignment_cannot_have_modifiers); } + if (node.expression) { + if (node.expression.kind === SyntaxKind.Identifier) { + markExportAsReferenced(node); + } + else { + checkExpressionCached(node.expression); + } + } + if (node.type) { + checkSourceElement(node.type); + if (!isInAmbientContext(node)) { + grammarErrorOnFirstToken(node.type, Diagnostics.A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration); + } + } - var container = node.parent; - if (container.kind !== SyntaxKind.SourceFile) { - // In a module, the immediate parent will be a block, so climb up one more parent - container = container.parent; + checkExternalModuleExports(container); + + if (node.isExportEquals && languageVersion >= ScriptTarget.ES6) { + // export assignment is deprecated in es6 or above + grammarErrorOnNode(node, Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead); + } + } + + function getModuleStatements(node: Declaration): ModuleElement[] { + if (node.kind === SyntaxKind.SourceFile) { + return (node).statements; + } + if (node.kind === SyntaxKind.ModuleDeclaration && (node).body.kind === SyntaxKind.ModuleBlock) { + return ((node).body).statements; + } + return emptyArray; + } + + function hasExportedMembers(moduleSymbol: Symbol) { + for (var id in moduleSymbol.exports) { + if (id !== "export=") { + return true; + } + } + return false; + } + + function checkExternalModuleExports(node: SourceFile | ModuleDeclaration) { + let moduleSymbol = getSymbolOfNode(node); + let links = getSymbolLinks(moduleSymbol); + if (!links.exportsChecked) { + let exportEqualsSymbol = moduleSymbol.exports["export="]; + if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { + let declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; + error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + links.exportsChecked = true; } - checkTypeOfExportAssignmentSymbol(getSymbolOfNode(container)); } function checkSourceElement(node: Node): void { @@ -9743,7 +10555,7 @@ module ts { case SyntaxKind.SetAccessor: return checkAccessorDeclaration(node); case SyntaxKind.TypeReference: - return checkTypeReference(node); + return checkTypeReferenceNode(node); case SyntaxKind.TypeQuery: return checkTypeQuery(node); case SyntaxKind.TypeLiteral: @@ -9820,13 +10632,15 @@ module ts { case SyntaxKind.DebuggerStatement: checkGrammarStatementInAmbientContext(node); return; + case SyntaxKind.MissingDeclaration: + return checkMissingDeclaration(node); } } // Function expression bodies are checked after all statements in the enclosing body. This is to ensure // constructs like the following are permitted: - // var foo = function () { - // var s = foo(); + // let foo = function () { + // let s = foo(); // return "hello"; // } // Here, performing a full type check of the body of the function expression whilst in the process of @@ -9895,6 +10709,7 @@ module ts { case SyntaxKind.BreakStatement: case SyntaxKind.ReturnStatement: case SyntaxKind.SwitchStatement: + case SyntaxKind.CaseBlock: case SyntaxKind.CaseClause: case SyntaxKind.DefaultClause: case SyntaxKind.LabeledStatement: @@ -9906,6 +10721,7 @@ module ts { case SyntaxKind.ClassDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.EnumMember: + case SyntaxKind.ExportAssignment: case SyntaxKind.SourceFile: forEachChild(node, checkFunctionExpressionBodies); break; @@ -9913,14 +10729,14 @@ module ts { } function checkSourceFile(node: SourceFile) { - var start = new Date().getTime(); + let start = new Date().getTime(); checkSourceFileWorker(node); checkTime += new Date().getTime() - start; } // Fully type check a source file and collect the relevant diagnostics. function checkSourceFileWorker(node: SourceFile) { - var links = getNodeLinks(node); + let links = getNodeLinks(node); if (!(links.flags & NodeCheckFlags.TypeChecked)) { // Grammar checking checkGrammarSourceFile(node); @@ -9932,13 +10748,7 @@ module ts { checkFunctionExpressionBodies(node); if (isExternalModule(node)) { - var symbol = getExportAssignmentSymbol(node.symbol); - if (symbol && symbol.flags & SymbolFlags.Import) { - // Mark the import as referenced so that we emit it in the final .js file. - getSymbolLinks(symbol).referenced = true; - // mark any import declarations that depend upon this import as referenced - markLinkedImportsAsReferenced(getDeclarationOfKind(symbol, SyntaxKind.ImportEqualsDeclaration)) - } + checkExternalModuleExports(node); } if (potentialThisCollisions.length) { @@ -9950,6 +10760,10 @@ module ts { links.flags |= NodeCheckFlags.EmitExtends; } + if (emitDecorate) { + links.flags |= NodeCheckFlags.EmitDecorate; + } + links.flags |= NodeCheckFlags.TypeChecked; } } @@ -9991,19 +10805,68 @@ module ts { } function getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[] { - var symbols: SymbolTable = {}; - var memberFlags: NodeFlags = 0; - function copySymbol(symbol: Symbol, meaning: SymbolFlags) { + let symbols: SymbolTable = {}; + let memberFlags: NodeFlags = 0; + + if (isInsideWithStatementBody(location)) { + // We cannot answer semantic questions within a with block, do not proceed any further + return []; + } + + populateSymbols(); + + return symbolsToArray(symbols); + + function populateSymbols() { + while (location) { + if (location.locals && !isGlobalSourceFile(location)) { + copySymbols(location.locals, meaning); + } + + switch (location.kind) { + case SyntaxKind.SourceFile: + if (!isExternalModule(location)) { + break; + } + case SyntaxKind.ModuleDeclaration: + copySymbols(getSymbolOfNode(location).exports, meaning & SymbolFlags.ModuleMember); + break; + case SyntaxKind.EnumDeclaration: + copySymbols(getSymbolOfNode(location).exports, meaning & SymbolFlags.EnumMember); + break; + case SyntaxKind.ClassDeclaration: + case SyntaxKind.InterfaceDeclaration: + if (!(memberFlags & NodeFlags.Static)) { + copySymbols(getSymbolOfNode(location).members, meaning & SymbolFlags.Type); + } + break; + case SyntaxKind.FunctionExpression: + if ((location).name) { + copySymbol(location.symbol, meaning); + } + break; + } + + memberFlags = location.flags; + location = location.parent; + } + + copySymbols(globals, meaning); + } + + // Returns 'true' if we should stop processing symbols. + function copySymbol(symbol: Symbol, meaning: SymbolFlags): void { if (symbol.flags & meaning) { - var id = symbol.name; + let id = symbol.name; if (!isReservedMemberName(id) && !hasProperty(symbols, id)) { symbols[id] = symbol; } } } - function copySymbols(source: SymbolTable, meaning: SymbolFlags) { + + function copySymbols(source: SymbolTable, meaning: SymbolFlags): void { if (meaning) { - for (var id in source) { + for (let id in source) { if (hasProperty(source, id)) { copySymbol(source[id], meaning); } @@ -10040,17 +10903,12 @@ module ts { copySymbol(location.symbol, meaning); } break; - case SyntaxKind.CatchClause: - if ((location).name.text) { - copySymbol(location.symbol, meaning); - } - break; } memberFlags = location.flags; location = location.parent; } copySymbols(globals, meaning); - return mapToArray(symbols); + return symbolsToArray(symbols); } function isTypeDeclarationName(name: Node): boolean { @@ -10072,12 +10930,24 @@ module ts { // True if the given identifier is part of a type reference function isTypeReferenceIdentifier(entityName: EntityName): boolean { - var node: Node = entityName; - while (node.parent && node.parent.kind === SyntaxKind.QualifiedName) node = node.parent; + let node: Node = entityName; + while (node.parent && node.parent.kind === SyntaxKind.QualifiedName) { + node = node.parent; + } + return node.parent && node.parent.kind === SyntaxKind.TypeReference; } - function isTypeNode(node: Node): boolean { + function isHeritageClauseElementIdentifier(entityName: Node): boolean { + let node = entityName; + while (node.parent && node.parent.kind === SyntaxKind.PropertyAccessExpression) { + node = node.parent; + } + + return node.parent && node.parent.kind === SyntaxKind.HeritageClauseElement; + } + + function isTypeNodeOrHeritageClauseElement(node: Node): boolean { if (SyntaxKind.FirstTypeNode <= node.kind && node.kind <= SyntaxKind.LastTypeNode) { return true; } @@ -10094,6 +10964,8 @@ module ts { case SyntaxKind.StringLiteral: // Specialized signatures can have string literals as their parameters' type names return node.parent.kind === SyntaxKind.Parameter; + case SyntaxKind.HeritageClauseElement: + return true; // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container @@ -10102,18 +10974,23 @@ module ts { if (node.parent.kind === SyntaxKind.QualifiedName && (node.parent).right === node) { node = node.parent; } + else if (node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent).name === node) { + node = node.parent; + } // fall through case SyntaxKind.QualifiedName: + case SyntaxKind.PropertyAccessExpression: // At this point, node is either a qualified name or an identifier - Debug.assert(node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName, "'node' was expected to be a qualified name or identifier in 'isTypeNode'."); + Debug.assert(node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName || node.kind === SyntaxKind.PropertyAccessExpression, + "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); - var parent = node.parent; + let parent = node.parent; if (parent.kind === SyntaxKind.TypeQuery) { return false; } // Do not recursively call isTypeNode on the parent. In the example: // - // var a: A.B.C; + // let a: A.B.C; // // Calling isTypeNode would consider the qualified name A.B a type node. Only C or // A.B.C is a type node. @@ -10121,6 +10998,8 @@ module ts { return true; } switch (parent.kind) { + case SyntaxKind.HeritageClauseElement: + return true; case SyntaxKind.TypeParameter: return node === (parent).constraint; case SyntaxKind.PropertyDeclaration: @@ -10165,7 +11044,7 @@ module ts { } if (nodeOnRightSide.parent.kind === SyntaxKind.ExportAssignment) { - return (nodeOnRightSide.parent).exportName === nodeOnRightSide && nodeOnRightSide.parent; + return (nodeOnRightSide.parent).expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -10175,19 +11054,14 @@ module ts { return getLeftSideOfImportEqualsOrExportAssignment(node) !== undefined; } - function isRightSideOfQualifiedNameOrPropertyAccess(node: Node) { - return (node.parent.kind === SyntaxKind.QualifiedName && (node.parent).right === node) || - (node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent).name === node); - } - function getSymbolOfEntityNameOrPropertyAccessExpression(entityName: EntityName | PropertyAccessExpression): Symbol { - if (isDeclarationOrFunctionExpressionOrCatchVariableName(entityName)) { + if (isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } if (entityName.parent.kind === SyntaxKind.ExportAssignment) { - return resolveEntityName(/*location*/ entityName.parent.parent, entityName, - /*all meanings*/ SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Import); + return resolveEntityName(entityName, + /*all meanings*/ SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Alias); } if (entityName.kind !== SyntaxKind.PropertyAccessExpression) { @@ -10201,27 +11075,32 @@ module ts { entityName = entityName.parent; } - if (isExpression(entityName)) { - if (getFullWidth(entityName) === 0) { + if (isHeritageClauseElementIdentifier(entityName)) { + let meaning = entityName.parent.kind === SyntaxKind.HeritageClauseElement ? SymbolFlags.Type : SymbolFlags.Namespace; + meaning |= SymbolFlags.Alias; + return resolveEntityName(entityName, meaning); + } + else if (isExpression(entityName)) { + if (nodeIsMissing(entityName)) { // Missing entity name. return undefined; } if (entityName.kind === SyntaxKind.Identifier) { - // Include Import in the meaning, this ensures that we do not follow aliases to where they point and instead + // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. - var meaning: SymbolFlags = SymbolFlags.Value | SymbolFlags.Import; - return resolveEntityName(entityName, entityName, meaning); + let meaning: SymbolFlags = SymbolFlags.Value | SymbolFlags.Alias; + return resolveEntityName(entityName, meaning); } else if (entityName.kind === SyntaxKind.PropertyAccessExpression) { - var symbol = getNodeLinks(entityName).resolvedSymbol; + let symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); } return getNodeLinks(entityName).resolvedSymbol; } else if (entityName.kind === SyntaxKind.QualifiedName) { - var symbol = getNodeLinks(entityName).resolvedSymbol; + let symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkQualifiedName(entityName); } @@ -10229,11 +11108,11 @@ module ts { } } else if (isTypeReferenceIdentifier(entityName)) { - var meaning = entityName.parent.kind === SyntaxKind.TypeReference ? SymbolFlags.Type : SymbolFlags.Namespace; - // Include Import in the meaning, this ensures that we do not follow aliases to where they point and instead + let meaning = entityName.parent.kind === SyntaxKind.TypeReference ? SymbolFlags.Type : SymbolFlags.Namespace; + // Include aliases in the meaning, this ensures that we do not follow aliases to where they point and instead // return the alias symbol. - meaning |= SymbolFlags.Import; - return resolveEntityName(entityName, entityName, meaning); + meaning |= SymbolFlags.Alias; + return resolveEntityName(entityName, meaning); } // Do we want to return undefined here? @@ -10246,7 +11125,7 @@ module ts { return undefined; } - if (isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (isDeclarationName(node)) { // This is a declaration, call getSymbolOfNode return getSymbolOfNode(node.parent); } @@ -10265,12 +11144,12 @@ module ts { case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: - var type = checkExpression(node); + let type = checkExpression(node); return type.symbol; case SyntaxKind.ConstructorKeyword: // constructor keyword for an overload, should take us to the definition if it exist - var constructorDeclaration = node.parent; + let constructorDeclaration = node.parent; if (constructorDeclaration && constructorDeclaration.kind === SyntaxKind.Constructor) { return (constructorDeclaration.parent).symbol; } @@ -10278,20 +11157,21 @@ module ts { case SyntaxKind.StringLiteral: // External module name in an import declaration - if (isExternalModuleImportEqualsDeclaration(node.parent.parent) && - getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) { - var importSymbol = getSymbolOfNode(node.parent.parent); - var moduleType = getTypeOfSymbol(importSymbol); - return moduleType ? moduleType.symbol : undefined; + let moduleName: Expression; + if ((isExternalModuleImportEqualsDeclaration(node.parent.parent) && + getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || + ((node.parent.kind === SyntaxKind.ImportDeclaration || node.parent.kind === SyntaxKind.ExportDeclaration) && + (node.parent).moduleSpecifier === node)) { + return resolveExternalModuleName(node, node); } // Intentional fall-through case SyntaxKind.NumericLiteral: // index access if (node.parent.kind == SyntaxKind.ElementAccessExpression && (node.parent).argumentExpression === node) { - var objectType = checkExpression((node.parent).expression); + let objectType = checkExpression((node.parent).expression); if (objectType === unknownType) return undefined; - var apparentType = getApparentType(objectType); + let apparentType = getApparentType(objectType); if (apparentType === unknownType) return undefined; return getPropertyOfType(apparentType, (node).text); } @@ -10305,7 +11185,7 @@ module ts { // This is necessary as an identifier in short-hand property assignment can contains two meaning: // property name and property value. if (location && location.kind === SyntaxKind.ShorthandPropertyAssignment) { - return resolveEntityName(location, (location).name, SymbolFlags.Value); + return resolveEntityName((location).name, SymbolFlags.Value); } return undefined; } @@ -10316,39 +11196,39 @@ module ts { return unknownType; } + if (isTypeNodeOrHeritageClauseElement(node)) { + return getTypeFromTypeNodeOrHeritageClauseElement(node); + } + if (isExpression(node)) { return getTypeOfExpression(node); } - if (isTypeNode(node)) { - return getTypeFromTypeNode(node); - } - if (isTypeDeclaration(node)) { // In this case, we call getSymbolOfNode instead of getSymbolInfo because it is a declaration - var symbol = getSymbolOfNode(node); + let symbol = getSymbolOfNode(node); return getDeclaredTypeOfSymbol(symbol); } if (isTypeDeclarationName(node)) { - var symbol = getSymbolInfo(node); + let symbol = getSymbolInfo(node); return symbol && getDeclaredTypeOfSymbol(symbol); } if (isDeclaration(node)) { // In this case, we call getSymbolOfNode instead of getSymbolInfo because it is a declaration - var symbol = getSymbolOfNode(node); + let symbol = getSymbolOfNode(node); return getTypeOfSymbol(symbol); } - if (isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { - var symbol = getSymbolInfo(node); + if (isDeclarationName(node)) { + let symbol = getSymbolInfo(node); return symbol && getTypeOfSymbol(symbol); } if (isInRightSideOfImportOrExportAssignment(node)) { - var symbol = getSymbolInfo(node); - var declaredType = symbol && getDeclaredTypeOfSymbol(symbol); + let symbol = getSymbolInfo(node); + let declaredType = symbol && getDeclaredTypeOfSymbol(symbol); return declaredType !== unknownType ? declaredType : getTypeOfSymbol(symbol); } @@ -10365,8 +11245,8 @@ module ts { // Return the list of properties of the given type, augmented with properties from Function // if the type has call or construct signatures function getAugmentedPropertiesOfType(type: Type): Symbol[] { - var type = getApparentType(type); - var propsByName = createSymbolTable(getPropertiesOfType(type)); + type = getApparentType(type); + let propsByName = createSymbolTable(getPropertiesOfType(type)); if (getSignaturesOfType(type, SignatureKind.Call).length || getSignaturesOfType(type, SignatureKind.Construct).length) { forEach(getPropertiesOfType(globalFunctionType), p => { if (!hasProperty(propsByName, p.name)) { @@ -10379,15 +11259,15 @@ module ts { function getRootSymbols(symbol: Symbol): Symbol[] { if (symbol.flags & SymbolFlags.UnionProperty) { - var symbols: Symbol[] = []; - var name = symbol.name; + let symbols: Symbol[] = []; + let name = symbol.name; forEach(getSymbolLinks(symbol).unionType.types, t => { symbols.push(getPropertyOfType(t, name)); }); return symbols; } else if (symbol.flags & SymbolFlags.Transient) { - var target = getSymbolLinks(symbol).target; + let target = getSymbolLinks(symbol).target; if (target) { return [target]; } @@ -10401,146 +11281,37 @@ module ts { return symbol.flags & SymbolFlags.ValueModule && symbol.declarations.length === 1 && symbol.declarations[0].kind === SyntaxKind.SourceFile; } - function isNodeDescendentOf(node: Node, ancestor: Node): boolean { - while (node) { - if (node === ancestor) return true; - node = node.parent; + function getAliasNameSubstitution(symbol: Symbol, getGeneratedNameForNode: (node: Node) => string): string { + // If this is es6 or higher, just use the name of the export + // no need to qualify it. + if (languageVersion >= ScriptTarget.ES6) { + return undefined; } - return false; - } - function isUniqueLocalName(name: string, container: Node): boolean { - for (var node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { - if (node.locals && hasProperty(node.locals, name)) { - // We conservatively include import symbols to cover cases where they're emitted as locals - if (node.locals[name].flags & (SymbolFlags.Value | SymbolFlags.ExportValue | SymbolFlags.Import)) { - return false; - } + let node = getDeclarationOfAliasSymbol(symbol); + if (node) { + if (node.kind === SyntaxKind.ImportClause) { + return getGeneratedNameForNode(node.parent) + ".default"; } - } - return true; - } - - function getGeneratedNamesForSourceFile(sourceFile: SourceFile): Map { - var links = getNodeLinks(sourceFile); - var generatedNames = links.generatedNames; - if (!generatedNames) { - generatedNames = links.generatedNames = {}; - generateNames(sourceFile); - } - return generatedNames; - - function generateNames(node: Node) { - switch (node.kind) { - case SyntaxKind.ModuleDeclaration: - generateNameForModuleOrEnum(node); - generateNames((node).body); - break; - case SyntaxKind.EnumDeclaration: - generateNameForModuleOrEnum(node); - break; - case SyntaxKind.ImportDeclaration: - generateNameForImportDeclaration(node); - break; - case SyntaxKind.ExportDeclaration: - generateNameForExportDeclaration(node); - break; - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleBlock: - forEach((node).statements, generateNames); - break; - } - } - - function isExistingName(name: string) { - return hasProperty(globals, name) || hasProperty(sourceFile.identifiers, name) || hasProperty(generatedNames, name); - } - - function makeUniqueName(baseName: string): string { - // First try '_name' - if (baseName.charCodeAt(0) !== CharacterCodes._) { - var baseName = "_" + baseName; - if (!isExistingName(baseName)) { - return generatedNames[baseName] = baseName; - } - } - // Find the first unique '_name_n', where n is a positive number - if (baseName.charCodeAt(baseName.length - 1) !== CharacterCodes._) { - baseName += "_"; - } - var i = 1; - while (true) { - name = baseName + i; - if (!isExistingName(name)) { - return generatedNames[name] = name; - } - i++; - } - } - - function assignGeneratedName(node: Node, name: string) { - getNodeLinks(node).generatedName = unescapeIdentifier(name); - } - - function generateNameForModuleOrEnum(node: ModuleDeclaration | EnumDeclaration) { - if (node.name.kind === SyntaxKind.Identifier) { - var name = node.name.text; - // Use module/enum name itself if it is unique, otherwise make a unique variation - assignGeneratedName(node, isUniqueLocalName(name, node) ? name : makeUniqueName(name)); - } - } - - function generateNameForImportOrExportDeclaration(node: ImportDeclaration | ExportDeclaration) { - var expr = getExternalModuleName(node); - var baseName = expr.kind === SyntaxKind.StringLiteral ? - escapeIdentifier(makeIdentifierFromModuleName((expr).text)) : "module"; - assignGeneratedName(node, makeUniqueName(baseName)); - } - - function generateNameForImportDeclaration(node: ImportDeclaration) { - if (node.importClause && node.importClause.namedBindings && node.importClause.namedBindings.kind === SyntaxKind.NamedImports) { - generateNameForImportOrExportDeclaration(node); - } - } - - function generateNameForExportDeclaration(node: ExportDeclaration) { - if (node.moduleSpecifier) { - generateNameForImportOrExportDeclaration(node); + if (node.kind === SyntaxKind.ImportSpecifier) { + let moduleName = getGeneratedNameForNode(node.parent.parent.parent); + let propertyName = (node).propertyName || (node).name; + return moduleName + "." + unescapeIdentifier(propertyName.text); } } } - function getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration) { - var links = getNodeLinks(node); - if (!links.generatedName) { - getGeneratedNamesForSourceFile(getSourceFile(node)); - } - return links.generatedName; - } - - function getLocalNameOfContainer(container: ModuleDeclaration | EnumDeclaration): string { - return getGeneratedNameForNode(container); - } - - function getLocalNameForImportDeclaration(node: ImportDeclaration): string { - return getGeneratedNameForNode(node); - } - - function getImportNameSubstitution(symbol: Symbol): string { - var declaration = getDeclarationOfImportSymbol(symbol); - if (declaration && declaration.kind === SyntaxKind.ImportSpecifier) { - var moduleName = getGeneratedNameForNode(declaration.parent.parent.parent); - var propertyName = (declaration).propertyName || (declaration).name; - return moduleName + "." + unescapeIdentifier(propertyName.text); - } - } - - function getExportNameSubstitution(symbol: Symbol, location: Node): string { + function getExportNameSubstitution(symbol: Symbol, location: Node, getGeneratedNameForNode: (Node: Node) => string): string { if (isExternalModuleSymbol(symbol.parent)) { + // If this is es6 or higher, just use the name of the export + // no need to qualify it. + if (languageVersion >= ScriptTarget.ES6) { + return undefined; + } return "exports." + unescapeIdentifier(symbol.name); } - var node = location; - var containerSymbol = getParentOfSymbol(symbol); + let node = location; + let containerSymbol = getParentOfSymbol(symbol); while (node) { if ((node.kind === SyntaxKind.ModuleDeclaration || node.kind === SyntaxKind.EnumDeclaration) && getSymbolOfNode(node) === containerSymbol) { return getGeneratedNameForNode(node) + "." + unescapeIdentifier(symbol.name); @@ -10549,31 +11320,43 @@ module ts { } } - function getExpressionNameSubstitution(node: Identifier): string { - var symbol = getNodeLinks(node).resolvedSymbol; + function getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (Node: Node) => string): string { + let symbol = getNodeLinks(node).resolvedSymbol || (isDeclarationName(node) ? getSymbolOfNode(node.parent) : undefined); if (symbol) { // Whan an identifier resolves to a parented symbol, it references an exported entity from // another declaration of the same internal module. if (symbol.parent) { - return getExportNameSubstitution(symbol, node.parent); + return getExportNameSubstitution(symbol, node.parent, getGeneratedNameForNode); } // If we reference an exported entity within the same module declaration, then whether // we prefix depends on the kind of entity. SymbolFlags.ExportHasLocal encompasses all the // kinds that we do NOT prefix. - var exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); + let exportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); if (symbol !== exportSymbol && !(exportSymbol.flags & SymbolFlags.ExportHasLocal)) { - return getExportNameSubstitution(exportSymbol, node.parent); + return getExportNameSubstitution(exportSymbol, node.parent, getGeneratedNameForNode); } // Named imports from ES6 import declarations are rewritten - if (symbol.flags & SymbolFlags.Import) { - return getImportNameSubstitution(symbol); + if (symbol.flags & SymbolFlags.Alias) { + return getAliasNameSubstitution(symbol, getGeneratedNameForNode); } } } - function getExportAssignmentName(node: SourceFile): string { - var symbol = getExportAssignmentSymbol(getSymbolOfNode(node)); - return symbol && symbol !== unknownSymbol && symbolIsValue(symbol) && !isConstEnumSymbol(symbol) ? symbolToString(symbol): undefined; + function isValueAliasDeclaration(node: Node): boolean { + switch (node.kind) { + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportClause: + case SyntaxKind.NamespaceImport: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ExportSpecifier: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case SyntaxKind.ExportDeclaration: + let exportClause = (node).exportClause; + return exportClause && forEach(exportClause.elements, isValueAliasDeclaration); + case SyntaxKind.ExportAssignment: + return (node).expression && (node).expression.kind === SyntaxKind.Identifier ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; + } + return false; } function isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean { @@ -10581,38 +11364,42 @@ module ts { // parent is not source file or it is not reference to internal module return false; } - return isImportResolvedToValue(getSymbolOfNode(node)); + + var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); + return isValue && node.moduleReference && !nodeIsMissing(node.moduleReference); } - function isImportResolvedToValue(symbol: Symbol): boolean { - var target = resolveImport(symbol); + function isAliasResolvedToValue(symbol: Symbol): boolean { + let target = resolveAlias(symbol); + if (target === unknownSymbol && compilerOptions.separateCompilation) { + return true; + } // const enums and modules that contain only const enums are not considered values from the emit perespective - return target !== unknownSymbol && target.flags & SymbolFlags.Value && !isConstEnumOrConstEnumOnlyModule(target); + return target !== unknownSymbol && target && target.flags & SymbolFlags.Value && !isConstEnumOrConstEnumOnlyModule(target); } function isConstEnumOrConstEnumOnlyModule(s: Symbol): boolean { return isConstEnumSymbol(s) || s.constEnumOnlyModule; } - function isReferencedImportDeclaration(node: Node): boolean { - if (isImportSymbolDeclaration(node)) { - var symbol = getSymbolOfNode(node); + function isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean { + if (isAliasSymbolDeclaration(node)) { + let symbol = getSymbolOfNode(node); if (getSymbolLinks(symbol).referenced) { return true; } - // logic below will answer 'true' for exported import declaration in a nested module that itself is not exported. - // As a consequence this might cause emitting extra. - if (node.kind === SyntaxKind.ImportEqualsDeclaration && node.flags & NodeFlags.Export && isImportResolvedToValue(symbol)) { - return true; - } } - return forEachChild(node, isReferencedImportDeclaration); + + if (checkChildren) { + return forEachChild(node, node => isReferencedAliasDeclaration(node, checkChildren)); + } + return false; } function isImplementationOfOverload(node: FunctionLikeDeclaration) { if (nodeIsPresent(node.body)) { - var symbol = getSymbolOfNode(node); - var signaturesOfSymbol = getSignaturesOfSymbol(symbol); + let symbol = getSymbolOfNode(node); + let signaturesOfSymbol = getSignaturesOfSymbol(symbol); // If this function body corresponds to function with multiple signature, it is implementation of overload // e.g.: function foo(a: string): string; // function foo(a: number): number; @@ -10644,12 +11431,11 @@ module ts { return getEnumMemberValue(node); } - var symbol = getNodeLinks(node).resolvedSymbol; + let symbol = getNodeLinks(node).resolvedSymbol; if (symbol && (symbol.flags & SymbolFlags.EnumMember)) { - var declaration = symbol.valueDeclaration; - var constantValue: number; - if (declaration.kind === SyntaxKind.EnumMember) { - return getEnumMemberValue(declaration); + // inline property\index accesses only for const enums + if (isConstEnumDeclaration(symbol.valueDeclaration.parent)) { + return getEnumMemberValue(symbol.valueDeclaration); } } @@ -10658,8 +11444,8 @@ module ts { function writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) { // Get type of the symbol if this is the valid symbol otherwise get type at location - var symbol = getSymbolOfNode(declaration); - var type = symbol && !(symbol.flags & (SymbolFlags.TypeLiteral | SymbolFlags.Signature)) + let symbol = getSymbolOfNode(declaration); + let type = symbol && !(symbol.flags & (SymbolFlags.TypeLiteral | SymbolFlags.Signature)) ? getTypeOfSymbol(symbol) : unknownType; @@ -10667,31 +11453,82 @@ module ts { } function writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) { - var signature = getSignatureFromDeclaration(signatureDeclaration); + let signature = getSignatureFromDeclaration(signatureDeclaration); getSymbolDisplayBuilder().buildTypeDisplay(getReturnTypeOfSignature(signature), writer, enclosingDeclaration, flags); } - function isUnknownIdentifier(location: Node, name: string): boolean { - return !resolveName(location, name, SymbolFlags.Value, /*nodeNotFoundMessage*/ undefined, /*nameArg*/ undefined) && - !hasProperty(getGeneratedNamesForSourceFile(getSourceFile(location)), name); + function writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) { + var type = getTypeOfExpression(expr); + getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags); + } + + function hasGlobalName(name: string): boolean { + return hasProperty(globals, name); + } + + function resolvesToSomeValue(location: Node, name: string): boolean { + Debug.assert(!nodeIsSynthesized(location), "resolvesToSomeValue called with a synthesized location"); + return !!resolveName(location, name, SymbolFlags.Value, /*nodeNotFoundMessage*/ undefined, /*nameArg*/ undefined); + } + + function getBlockScopedVariableId(n: Identifier): number { + Debug.assert(!nodeIsSynthesized(n)); + + let isVariableDeclarationOrBindingElement = + n.parent.kind === SyntaxKind.BindingElement || (n.parent.kind === SyntaxKind.VariableDeclaration && (n.parent).name === n); + + let symbol = + (isVariableDeclarationOrBindingElement ? getSymbolOfNode(n.parent) : undefined) || + getNodeLinks(n).resolvedSymbol || + resolveName(n, n.text, SymbolFlags.Value | SymbolFlags.Alias, /*nodeNotFoundMessage*/ undefined, /*nameArg*/ undefined); + + let isLetOrConst = + symbol && + (symbol.flags & SymbolFlags.BlockScopedVariable) && + symbol.valueDeclaration.parent.kind !== SyntaxKind.CatchClause; + + if (isLetOrConst) { + // side-effect of calling this method: + // assign id to symbol if it was not yet set + getSymbolLinks(symbol); + return symbol.id; + } + return undefined; + } + + function instantiateSingleCallFunctionType(functionType: Type, typeArguments: Type[]): Type { + if (functionType === unknownType) { + return unknownType; + } + + let signature = getSingleCallSignature(functionType); + if (!signature) { + return unknownType; + } + + let instantiatedSignature = getSignatureInstantiation(signature, typeArguments); + return getOrCreateTypeFromSignature(instantiatedSignature); } function createResolver(): EmitResolver { return { - getGeneratedNameForNode, getExpressionNameSubstitution, - getExportAssignmentName, - isReferencedImportDeclaration, + isValueAliasDeclaration, + hasGlobalName, + isReferencedAliasDeclaration, getNodeCheckFlags, isTopLevelValueImportEqualsWithEntityName, isDeclarationVisible, isImplementationOfOverload, writeTypeOfDeclaration, writeReturnTypeOfSignatureDeclaration, + writeTypeOfExpression, isSymbolAccessible, isEntityNameVisible, getConstantValue, - isUnknownIdentifier, + resolvesToSomeValue, + collectLinkedAliases, + getBlockScopedVariableId, }; } @@ -10715,13 +11552,18 @@ module ts { globals[undefinedSymbol.name] = undefinedSymbol; // Initialize special types globalArraySymbol = getGlobalTypeSymbol("Array"); - globalArrayType = getTypeOfGlobalSymbol(globalArraySymbol, 1); + globalArrayType = getTypeOfGlobalSymbol(globalArraySymbol, /*arity*/ 1); globalObjectType = getGlobalType("Object"); globalFunctionType = getGlobalType("Function"); globalStringType = getGlobalType("String"); globalNumberType = getGlobalType("Number"); globalBooleanType = getGlobalType("Boolean"); globalRegExpType = getGlobalType("RegExp"); + globalTypedPropertyDescriptorType = getTypeOfGlobalSymbol(getGlobalTypeSymbol("TypedPropertyDescriptor"), 1); + globalClassDecoratorType = getGlobalType("ClassDecorator"); + globalPropertyDecoratorType = getGlobalType("PropertyDecorator"); + globalMethodDecoratorType = getGlobalType("MethodDecorator"); + globalParameterDecoratorType = getGlobalType("ParameterDecorator"); // If we're in ES6 mode, load the TemplateStringsArray. // Otherwise, default to 'unknown' for the purposes of type checking in LS scenarios. @@ -10729,6 +11571,7 @@ module ts { globalTemplateStringsArrayType = getGlobalType("TemplateStringsArray"); globalESSymbolType = getGlobalType("Symbol"); globalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol"); + globalIterableType = getGlobalType("Iterable", /*arity*/ 1); } else { globalTemplateStringsArrayType = unknownType; @@ -10745,6 +11588,25 @@ module ts { // GRAMMAR CHECKING + function checkGrammarDecorators(node: Node): boolean { + if (!node.decorators) { + return false; + } + if (!nodeCanBeDecorated(node)) { + return grammarErrorOnNode(node, Diagnostics.Decorators_are_not_valid_here); + } + else if (languageVersion < ScriptTarget.ES5) { + return grammarErrorOnNode(node, Diagnostics.Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher); + } + else if (node.kind === SyntaxKind.GetAccessor || node.kind === SyntaxKind.SetAccessor) { + let accessors = getAllAccessorDeclarations((node.parent).members, node); + if (accessors.firstAccessor.decorators && node === accessors.secondAccessor) { + return grammarErrorOnNode(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } + return false; + } + function checkGrammarModifiers(node: Node): boolean { switch (node.kind) { case SyntaxKind.GetAccessor: @@ -10776,16 +11638,14 @@ module ts { return; } - var lastStatic: Node, lastPrivate: Node, lastProtected: Node, lastDeclare: Node; - var flags = 0; - for (var i = 0, n = node.modifiers.length; i < n; i++) { - var modifier = node.modifiers[i]; - + let lastStatic: Node, lastPrivate: Node, lastProtected: Node, lastDeclare: Node; + let flags = 0; + for (let modifier of node.modifiers) { switch (modifier.kind) { case SyntaxKind.PublicKeyword: case SyntaxKind.ProtectedKeyword: case SyntaxKind.PrivateKeyword: - var text: string; + let text: string; if (modifier.kind === SyntaxKind.PublicKeyword) { text = "public"; } @@ -10883,23 +11743,22 @@ module ts { function checkGrammarForDisallowedTrailingComma(list: NodeArray): boolean { if (list && list.hasTrailingComma) { - var start = list.end - ",".length; - var end = list.end; - var sourceFile = getSourceFileOfNode(list[0]); + let start = list.end - ",".length; + let end = list.end; + let sourceFile = getSourceFileOfNode(list[0]); return grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.Trailing_comma_not_allowed); } } - function checkGrammarTypeParameterList(node: FunctionLikeDeclaration, typeParameters: NodeArray): boolean { + function checkGrammarTypeParameterList(node: FunctionLikeDeclaration, typeParameters: NodeArray, file: SourceFile): boolean { if (checkGrammarForDisallowedTrailingComma(typeParameters)) { return true; } if (typeParameters && typeParameters.length === 0) { - var start = typeParameters.pos - "<".length; - var sourceFile = getSourceFileOfNode(node); - var end = skipTrivia(sourceFile.text, typeParameters.end) + ">".length; - return grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.Type_parameter_list_cannot_be_empty); + let start = typeParameters.pos - "<".length; + let end = skipTrivia(file.text, typeParameters.end) + ">".length; + return grammarErrorAtPos(file, start, end - start, Diagnostics.Type_parameter_list_cannot_be_empty); } } @@ -10908,11 +11767,11 @@ module ts { return true; } - var seenOptionalParameter = false; - var parameterCount = parameters.length; + let seenOptionalParameter = false; + let parameterCount = parameters.length; - for (var i = 0; i < parameterCount; i++) { - var parameter = parameters[i]; + for (let i = 0; i < parameterCount; i++) { + let parameter = parameters[i]; if (parameter.dotDotDotToken) { if (i !== (parameterCount - 1)) { return grammarErrorOnNode(parameter.dotDotDotToken, Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list); @@ -10943,11 +11802,25 @@ module ts { function checkGrammarFunctionLikeDeclaration(node: FunctionLikeDeclaration): boolean { // Prevent cascading error by short-circuit - return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters) || checkGrammarParameterList(node.parameters); + let file = getSourceFileOfNode(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarTypeParameterList(node, node.typeParameters, file) || + checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); + } + + function checkGrammarArrowFunction(node: FunctionLikeDeclaration, file: SourceFile): boolean { + if (node.kind === SyntaxKind.ArrowFunction) { + let arrowFunction = node; + let startLine = getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; + let endLine = getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; + if (startLine !== endLine) { + return grammarErrorOnNode(arrowFunction.equalsGreaterThanToken, Diagnostics.Line_terminator_not_permitted_before_arrow); + } + } + return false; } function checkGrammarIndexSignatureParameters(node: SignatureDeclaration): boolean { - var parameter = node.parameters[0]; + let parameter = node.parameters[0]; if (node.parameters.length !== 1) { if (parameter) { return grammarErrorOnNode(parameter.name, Diagnostics.An_index_signature_must_have_exactly_one_parameter); @@ -10987,14 +11860,14 @@ module ts { function checkGrammarIndexSignature(node: SignatureDeclaration) { // Prevent cascading error by short-circuit - checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); + return checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node) || checkGrammarForIndexSignatureModifier(node); } function checkGrammarForAtLeastOneTypeArgument(node: Node, typeArguments: NodeArray): boolean { if (typeArguments && typeArguments.length === 0) { - var sourceFile = getSourceFileOfNode(node); - var start = typeArguments.pos - "<".length; - var end = skipTrivia(sourceFile.text, typeArguments.end) + ">".length; + let sourceFile = getSourceFileOfNode(node); + let start = typeArguments.pos - "<".length; + let end = skipTrivia(sourceFile.text, typeArguments.end) + ">".length; return grammarErrorAtPos(sourceFile, start, end - start, Diagnostics.Type_argument_list_cannot_be_empty); } } @@ -11006,9 +11879,8 @@ module ts { function checkGrammarForOmittedArgument(node: CallExpression, arguments: NodeArray): boolean { if (arguments) { - var sourceFile = getSourceFileOfNode(node); - for (var i = 0, n = arguments.length; i < n; i++) { - var arg = arguments[i]; + let sourceFile = getSourceFileOfNode(node); + for (let arg of arguments) { if (arg.kind === SyntaxKind.OmittedExpression) { return grammarErrorAtPos(sourceFile, arg.pos, 0, Diagnostics.Argument_expression_expected); } @@ -11022,26 +11894,23 @@ module ts { } function checkGrammarHeritageClause(node: HeritageClause): boolean { - var types = node.types; + let types = node.types; if (checkGrammarForDisallowedTrailingComma(types)) { return true; } if (types && types.length === 0) { - var listType = tokenToString(node.token); - var sourceFile = getSourceFileOfNode(node); + let listType = tokenToString(node.token); + let sourceFile = getSourceFileOfNode(node); return grammarErrorAtPos(sourceFile, types.pos, 0, Diagnostics._0_list_cannot_be_empty, listType) } } function checkGrammarClassDeclarationHeritageClauses(node: ClassDeclaration) { - var seenExtendsClause = false; - var seenImplementsClause = false; - - if (!checkGrammarModifiers(node) && node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - Debug.assert(i <= 2); - var heritageClause = node.heritageClauses[i]; + let seenExtendsClause = false; + let seenImplementsClause = false; + if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && node.heritageClauses) { + for (let heritageClause of node.heritageClauses) { if (heritageClause.token === SyntaxKind.ExtendsKeyword) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, Diagnostics.extends_clause_already_seen) @@ -11073,13 +11942,10 @@ module ts { } function checkGrammarInterfaceDeclaration(node: InterfaceDeclaration) { - var seenExtendsClause = false; + let seenExtendsClause = false; if (node.heritageClauses) { - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - Debug.assert(i <= 1); - var heritageClause = node.heritageClauses[i]; - + for (let heritageClause of node.heritageClauses) { if (heritageClause.token === SyntaxKind.ExtendsKeyword) { if (seenExtendsClause) { return grammarErrorOnFirstToken(heritageClause, Diagnostics.extends_clause_already_seen); @@ -11106,7 +11972,7 @@ module ts { return false; } - var computedPropertyName = node; + let computedPropertyName = node; if (computedPropertyName.expression.kind === SyntaxKind.BinaryExpression && (computedPropertyName.expression).operatorToken.kind === SyntaxKind.CommaToken) { return grammarErrorOnNode(computedPropertyName.expression, Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } @@ -11130,17 +11996,16 @@ module ts { } function checkGrammarObjectLiteralExpression(node: ObjectLiteralExpression) { - var seen: Map = {}; - var Property = 1; - var GetAccessor = 2; - var SetAccesor = 4; - var GetOrSetAccessor = GetAccessor | SetAccesor; - var inStrictMode = (node.parserContextFlags & ParserContextFlags.StrictMode) !== 0; + let seen: Map = {}; + let Property = 1; + let GetAccessor = 2; + let SetAccesor = 4; + let GetOrSetAccessor = GetAccessor | SetAccesor; + let inStrictMode = (node.parserContextFlags & ParserContextFlags.StrictMode) !== 0; - for (var i = 0, n = node.properties.length; i < n; i++) { - var prop = node.properties[i]; - var name = prop.name; - if (prop.kind === SyntaxKind.OmittedExpression || + for (let prop of node.properties) { + let name = prop.name; + if (prop.kind === SyntaxKind.OmittedExpression || name.kind === SyntaxKind.ComputedPropertyName) { // If the name is not a ComputedPropertyName, the grammar checking will skip it checkGrammarComputedPropertyName(name); @@ -11155,7 +12020,7 @@ module ts { // c.IsAccessorDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true. // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields - var currentKind: number; + let currentKind: number; if (prop.kind === SyntaxKind.PropertyAssignment || prop.kind === SyntaxKind.ShorthandPropertyAssignment) { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop,(prop).questionToken, Diagnostics.An_object_member_cannot_be_declared_optional); @@ -11181,7 +12046,7 @@ module ts { seen[(name).text] = currentKind; } else { - var existingKind = seen[(name).text]; + let existingKind = seen[(name).text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { grammarErrorOnNode(name, Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); @@ -11208,23 +12073,23 @@ module ts { } if (forInOrOfStatement.initializer.kind === SyntaxKind.VariableDeclarationList) { - var variableList = forInOrOfStatement.initializer; + let variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement + let diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement ? Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - var firstDeclaration = variableList.declarations[0]; + let firstDeclaration = variableList.declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement + let diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement ? Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement + let diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement ? Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -11235,18 +12100,8 @@ module ts { return false; } - function checkGrammarForOfStatement(forOfStatement: ForOfStatement): boolean { - // Temporarily disallow for-of statements until type check work is complete. - return grammarErrorOnFirstToken(forOfStatement, Diagnostics.for_of_statements_are_not_currently_supported); - if (languageVersion < ScriptTarget.ES6) { - return grammarErrorOnFirstToken(forOfStatement, Diagnostics.for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher); - } - - return checkGrammarForInOrForOfStatement(forOfStatement); - } - function checkGrammarAccessor(accessor: MethodDeclaration): boolean { - var kind = accessor.kind; + let kind = accessor.kind; if (languageVersion < ScriptTarget.ES5) { return grammarErrorOnNode(accessor.name, Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher); } @@ -11270,7 +12125,7 @@ module ts { return grammarErrorOnNode(accessor.name, Diagnostics.A_set_accessor_must_have_exactly_one_parameter); } else { - var parameter = accessor.parameters[0]; + let parameter = accessor.parameters[0]; if (parameter.dotDotDotToken) { return grammarErrorOnNode(parameter.dotDotDotToken, Diagnostics.A_set_accessor_cannot_have_rest_parameter); } @@ -11349,9 +12204,9 @@ module ts { } function checkGrammarBreakOrContinueStatement(node: BreakOrContinueStatement): boolean { - var current: Node = node; + let current: Node = node; while (current) { - if (isAnyFunction(current)) { + if (isFunctionLike(current)) { return grammarErrorOnNode(node, Diagnostics.Jump_target_cannot_cross_function_boundary); } @@ -11360,7 +12215,7 @@ module ts { if (node.label && (current).label.text === node.label.text) { // found matching label - verify that label usage is correct // continue can only target labels that are on iteration statements - var isMisplacedContinueLabel = node.kind === SyntaxKind.ContinueStatement + let isMisplacedContinueLabel = node.kind === SyntaxKind.ContinueStatement && !isIterationStatement((current).statement, /*lookInLabeledStatement*/ true); if (isMisplacedContinueLabel) { @@ -11388,14 +12243,14 @@ module ts { } if (node.label) { - var message = node.kind === SyntaxKind.BreakStatement + let message = node.kind === SyntaxKind.BreakStatement ? Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message) } else { - var message = node.kind === SyntaxKind.BreakStatement + let message = node.kind === SyntaxKind.BreakStatement ? Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message) @@ -11404,7 +12259,7 @@ module ts { function checkGrammarBindingElement(node: BindingElement) { if (node.dotDotDotToken) { - var elements = (node.parent).elements; + let elements = (node.parent).elements; if (node !== elements[elements.length - 1]) { return grammarErrorOnNode(node, Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } @@ -11413,23 +12268,22 @@ module ts { return grammarErrorAtPos(getSourceFileOfNode(node), node.initializer.pos - 1, 1, Diagnostics.A_rest_element_cannot_have_an_initializer); } } - // It is a SyntaxError if a VariableDeclaration or VariableDeclarationNoIn occurs within strict code - // and its Identifier is eval or arguments + // It is a SyntaxError if a VariableDeclaration or VariableDeclarationNoIn occurs within strict code + // and its Identifier is eval or arguments return checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } function checkGrammarVariableDeclaration(node: VariableDeclaration) { - if (isInAmbientContext(node)) { - if (isBindingPattern(node.name)) { - return grammarErrorOnNode(node, Diagnostics.Destructuring_declarations_are_not_allowed_in_ambient_contexts); + if (node.parent.parent.kind !== SyntaxKind.ForInStatement && node.parent.parent.kind !== SyntaxKind.ForOfStatement) { + if (isInAmbientContext(node)) { + if (node.initializer) { + // Error on equals token which immediate precedes the initializer + let equalsTokenLength = "=".length; + return grammarErrorAtPos(getSourceFileOfNode(node), node.initializer.pos - equalsTokenLength, + equalsTokenLength, Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } } - if (node.initializer) { - // Error on equals token which immediate precedes the initializer - return grammarErrorAtPos(getSourceFileOfNode(node), node.initializer.pos - 1, 1, Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); - } - } - else { - if (!node.initializer) { + else if (!node.initializer) { if (isBindingPattern(node.name) && !isBindingPattern(node.parent)) { return grammarErrorOnNode(node, Diagnostics.A_destructuring_declaration_must_have_an_initializer); } @@ -11439,15 +12293,15 @@ module ts { } } - var checkLetConstNames = languageVersion >= ScriptTarget.ES6 && (isLet(node) || isConst(node)); + let checkLetConstNames = languageVersion >= ScriptTarget.ES6 && (isLet(node) || isConst(node)); // 1. LexicalDeclaration : LetOrConst BindingList ; // It is a Syntax Error if the BoundNames of BindingList contains "let". // 2. ForDeclaration: ForDeclaration : LetOrConst ForBinding // It is a Syntax Error if the BoundNames of ForDeclaration contains "let". - // It is a SyntaxError if a VariableDeclaration or VariableDeclarationNoIn occurs within strict code - // and its Identifier is eval or arguments + // It is a SyntaxError if a VariableDeclaration or VariableDeclarationNoIn occurs within strict code + // and its Identifier is eval or arguments return (checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name)) || checkGrammarEvalOrArgumentsInStrictMode(node, node.name); } @@ -11459,15 +12313,15 @@ module ts { } } else { - var elements = (name).elements; - for (var i = 0; i < elements.length; ++i) { - checkGrammarNameInLetOrConstDeclarations(elements[i].name); + let elements = (name).elements; + for (let element of elements) { + checkGrammarNameInLetOrConstDeclarations(element.name); } } } function checkGrammarVariableDeclarationList(declarationList: VariableDeclarationList): boolean { - var declarations = declarationList.declarations; + let declarations = declarationList.declarations; if (checkGrammarForDisallowedTrailingComma(declarationList.declarations)) { return true; } @@ -11475,15 +12329,6 @@ module ts { if (!declarationList.declarations.length) { return grammarErrorAtPos(getSourceFileOfNode(declarationList), declarations.pos, declarations.end - declarations.pos, Diagnostics.Variable_declaration_list_cannot_be_empty); } - - if (languageVersion < ScriptTarget.ES6) { - if (isLet(declarationList)) { - return grammarErrorOnFirstToken(declarationList, Diagnostics.let_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - else if (isConst(declarationList)) { - return grammarErrorOnFirstToken(declarationList, Diagnostics.const_declarations_are_only_available_when_targeting_ECMAScript_6_and_higher); - } - } } function allowLetAndConstDeclarations(parent: Node): boolean { @@ -11516,7 +12361,7 @@ module ts { function isIntegerLiteral(expression: Expression): boolean { if (expression.kind === SyntaxKind.PrefixUnaryExpression) { - var unaryExpression = expression; + let unaryExpression = expression; if (unaryExpression.operator === SyntaxKind.PlusToken || unaryExpression.operator === SyntaxKind.MinusToken) { expression = unaryExpression.operand; } @@ -11534,17 +12379,16 @@ module ts { } function checkGrammarEnumDeclaration(enumDecl: EnumDeclaration): boolean { - var enumIsConst = (enumDecl.flags & NodeFlags.Const) !== 0; + let enumIsConst = (enumDecl.flags & NodeFlags.Const) !== 0; - var hasError = false; + let hasError = false; // skip checks below for const enums - they allow arbitrary initializers as long as they can be evaluated to constant expressions. // since all values are known in compile time - it is not necessary to check that constant enum section precedes computed enum members. if (!enumIsConst) { - var inConstantEnumMemberSection = true; - var inAmbientContext = isInAmbientContext(enumDecl); - for (var i = 0, n = enumDecl.members.length; i < n; i++) { - var node = enumDecl.members[i]; + let inConstantEnumMemberSection = true; + let inAmbientContext = isInAmbientContext(enumDecl); + for (let node of enumDecl.members) { // Do not use hasDynamicName here, because that returns false for well known symbols. // We want to perform checkComputedPropertyName for all computed properties, including // well known symbols. @@ -11572,19 +12416,11 @@ module ts { return sourceFile.parseDiagnostics.length > 0; } - function scanToken(scanner: Scanner, pos: number) { - scanner.setTextPos(pos); - scanner.scan(); - var start = scanner.getTokenPos(); - return start; - } - function grammarErrorOnFirstToken(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): boolean { - var sourceFile = getSourceFileOfNode(node); + let sourceFile = getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = createScanner(languageVersion, /*skipTrivia*/ true, sourceFile.text); - var start = scanToken(scanner, node.pos); - diagnostics.add(createFileDiagnostic(sourceFile, start, scanner.getTextPos() - start, message, arg0, arg1, arg2)); + let span = getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2)); return true; } } @@ -11597,19 +12433,29 @@ module ts { } function grammarErrorOnNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): boolean { - var sourceFile = getSourceFileOfNode(node); + let sourceFile = getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var span = getErrorSpanForNode(node); - var start = span.end > span.pos ? skipTrivia(sourceFile.text, span.pos) : span.pos; - diagnostics.add(createFileDiagnostic(sourceFile, start, span.end - start, message, arg0, arg1, arg2)); + diagnostics.add(createDiagnosticForNode(node, message, arg0, arg1, arg2)); return true; } } - function checkGrammarEvalOrArgumentsInStrictMode(contextNode: Node, identifier: Identifier): boolean { - if (contextNode && (contextNode.parserContextFlags & ParserContextFlags.StrictMode) && isEvalOrArgumentsIdentifier(identifier)) { - var name = declarationNameToString(identifier); - return grammarErrorOnNode(identifier, Diagnostics.Invalid_use_of_0_in_strict_mode, name); + function checkGrammarEvalOrArgumentsInStrictMode(contextNode: Node, name: Node): boolean { + if (name && name.kind === SyntaxKind.Identifier) { + let identifier = name; + if (contextNode && (contextNode.parserContextFlags & ParserContextFlags.StrictMode) && isEvalOrArgumentsIdentifier(identifier)) { + let nameText = declarationNameToString(identifier); + + // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.) + // if so, we would like to give more explicit invalid usage error. + // This will be particularly helpful in the case of "arguments" as such case is very common mistake. + if (getAncestor(name, SyntaxKind.ClassDeclaration) || getAncestor(name, SyntaxKind.ClassExpression)) { + return grammarErrorOnNode(identifier, Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); + } + else { + return grammarErrorOnNode(identifier, Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); + } + } } } @@ -11649,8 +12495,8 @@ module ts { } function checkGrammarTopLevelElementForRequiredDeclareModifier(node: Node): boolean { - // A declare modifier is required for any top level .d.ts declaration except export=, interfaces and imports: - // categories: + // A declare modifier is required for any top level .d.ts declaration except export=, export default, + // interfaces and imports categories: // // DeclarationElement: // ExportAssignment @@ -11664,7 +12510,8 @@ module ts { node.kind === SyntaxKind.ImportEqualsDeclaration || node.kind === SyntaxKind.ExportDeclaration || node.kind === SyntaxKind.ExportAssignment || - (node.flags & NodeFlags.Ambient)) { + (node.flags & NodeFlags.Ambient) || + (node.flags & (NodeFlags.Export | NodeFlags.Default))) { return false; } @@ -11673,8 +12520,7 @@ module ts { } function checkGrammarTopLevelElementsForRequiredDeclareModifier(file: SourceFile): boolean { - for (var i = 0, n = file.statements.length; i < n; i++) { - var decl = file.statements[i]; + for (let decl of file.statements) { if (isDeclaration(decl) || decl.kind === SyntaxKind.VariableStatement) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; @@ -11695,18 +12541,18 @@ module ts { } // Find containing block which is either Block, ModuleBlock, SourceFile - var links = getNodeLinks(node); - if (!links.hasReportedStatementInAmbientContext && isAnyFunction(node.parent)) { + let links = getNodeLinks(node); + if (!links.hasReportedStatementInAmbientContext && isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts) } - + // We are either parented by another statement, or some sort of block. // If we're in a block, we only want to really report an error once // to prevent noisyness. So use a bit on the block to indicate if // this has already been reported, and don't report if it has. // if (node.parent.kind === SyntaxKind.Block || node.parent.kind === SyntaxKind.ModuleBlock || node.parent.kind === SyntaxKind.SourceFile) { - var links = getNodeLinks(node.parent); + let links = getNodeLinks(node.parent); // Check if the containing block ever report this error if (!links.hasReportedStatementInAmbientContext) { return links.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, Diagnostics.Statements_are_not_allowed_in_ambient_contexts); @@ -11733,11 +12579,10 @@ module ts { } function grammarErrorAfterFirstToken(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): boolean { - var sourceFile = getSourceFileOfNode(node); + let sourceFile = getSourceFileOfNode(node); if (!hasParseDiagnostics(sourceFile)) { - var scanner = createScanner(languageVersion, /*skipTrivia*/ true, sourceFile.text); - scanToken(scanner, node.pos); - diagnostics.add(createFileDiagnostic(sourceFile, scanner.getTextPos(), 0, message, arg0, arg1, arg2)); + let span = getSpanOfTokenAtPosition(sourceFile, node.pos); + diagnostics.add(createFileDiagnostic(sourceFile, textSpanEnd(span), /*length*/ 0, message, arg0, arg1, arg2)); return true; } } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 4ba2da757e5..2f3b15f3777 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -4,15 +4,12 @@ /// module ts { + /* @internal */ export var optionDeclarations: CommandLineOption[] = [ { name: "charset", type: "string", }, - { - name: "codepage", - type: "number", - }, { name: "declaration", shortName: "d", @@ -78,10 +75,6 @@ module ts { name: "noLib", type: "boolean", }, - { - name: "noLibCheck", - type: "boolean", - }, { name: "noResolve", type: "boolean", @@ -117,6 +110,10 @@ module ts { type: "boolean", description: Diagnostics.Do_not_emit_comments_to_output, }, + { + name: "separateCompilation", + type: "boolean", + }, { name: "sourceMap", type: "boolean", @@ -161,7 +158,8 @@ module ts { description: Diagnostics.Watch_input_files, } ]; - + + /* @internal */ export function parseCommandLine(commandLine: string[]): ParsedCommandLine { var options: CompilerOptions = {}; var fileNames: string[] = []; @@ -271,6 +269,10 @@ module ts { } } + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ export function readConfigFile(fileName: string): any { try { var text = sys.readFile(fileName); @@ -280,6 +282,12 @@ module ts { } } + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ export function parseConfigFile(json: any, basePath?: string): ParsedCommandLine { var errors: Diagnostic[] = []; diff --git a/src/compiler/core.ts b/src/compiler/core.ts index d527b62005e..4b93081dc31 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -25,8 +25,8 @@ module ts { export function forEach(array: T[], callback: (element: T, index: number) => U): U { if (array) { - for (var i = 0, len = array.length; i < len; i++) { - var result = callback(array[i], i); + for (let i = 0, len = array.length; i < len; i++) { + let result = callback(array[i], i); if (result) { return result; } @@ -37,8 +37,8 @@ module ts { export function contains(array: T[], value: T): boolean { if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { + for (let v of array) { + if (v === value) { return true; } } @@ -48,7 +48,7 @@ module ts { export function indexOf(array: T[], value: T): number { if (array) { - for (var i = 0, len = array.length; i < len; i++) { + for (let i = 0, len = array.length; i < len; i++) { if (array[i] === value) { return i; } @@ -58,10 +58,10 @@ module ts { } export function countWhere(array: T[], predicate: (x: T) => boolean): number { - var count = 0; + let count = 0; if (array) { - for (var i = 0, len = array.length; i < len; i++) { - if (predicate(array[i])) { + for (let v of array) { + if (predicate(v)) { count++; } } @@ -69,11 +69,11 @@ module ts { return count; } - export function filter(array: T[], f: (x: T) => boolean): T[] { + export function filter(array: T[], f: (x: T) => boolean): T[]{ + let result: T[]; if (array) { - var result: T[] = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; + result = []; + for (let item of array) { if (f(item)) { result.push(item); } @@ -82,11 +82,12 @@ module ts { return result; } - export function map(array: T[], f: (x: T) => U): U[] { + export function map(array: T[], f: (x: T) => U): U[]{ + let result: U[]; if (array) { - var result: U[] = []; - for (var i = 0, len = array.length; i < len; i++) { - result.push(f(array[i])); + result = []; + for (let v of array) { + result.push(f(v)); } } return result; @@ -99,28 +100,32 @@ module ts { return array1.concat(array2); } - export function deduplicate(array: T[]): T[] { + export function deduplicate(array: T[]): T[]{ + let result: T[]; if (array) { - var result: T[] = []; - for (var i = 0, len = array.length; i < len; i++) { - var item = array[i]; - if (!contains(result, item)) result.push(item); + result = []; + for (let item of array) { + if (!contains(result, item)) { + result.push(item); + } } } return result; } export function sum(array: any[], prop: string): number { - var result = 0; - for (var i = 0; i < array.length; i++) { - result += array[i][prop]; + let result = 0; + for (let v of array) { + result += v[prop]; } return result; } export function addRange(to: T[], from: T[]): void { - for (var i = 0, n = from.length; i < n; i++) { - to.push(from[i]); + if (to && from) { + for (let v of from) { + to.push(v); + } } } @@ -136,12 +141,12 @@ module ts { } export function binarySearch(array: number[], value: number): number { - var low = 0; - var high = array.length - 1; + let low = 0; + let high = array.length - 1; while (low <= high) { - var middle = low + ((high - low) >> 1); - var midValue = array[middle]; + let middle = low + ((high - low) >> 1); + let midValue = array[middle]; if (midValue === value) { return middle; @@ -157,7 +162,40 @@ module ts { return ~low; } - var hasOwnProperty = Object.prototype.hasOwnProperty; + export function reduceLeft(array: T[], f: (a: T, x: T) => T): T; + export function reduceLeft(array: T[], f: (a: U, x: T) => U, initial: U): U; + export function reduceLeft(array: T[], f: (a: U, x: T) => U, initial?: U): U { + if (array) { + var count = array.length; + if (count > 0) { + var pos = 0; + var result = arguments.length <= 2 ? array[pos++] : initial; + while (pos < count) { + result = f(result, array[pos++]); + } + return result; + } + } + return initial; + } + + export function reduceRight(array: T[], f: (a: T, x: T) => T): T; + export function reduceRight(array: T[], f: (a: U, x: T) => U, initial: U): U; + export function reduceRight(array: T[], f: (a: U, x: T) => U, initial?: U): U { + if (array) { + var pos = array.length - 1; + if (pos >= 0) { + var result = arguments.length <= 2 ? array[pos--] : initial; + while (pos >= 0) { + result = f(result, array[pos--]); + } + return result; + } + } + return initial; + } + + let hasOwnProperty = Object.prototype.hasOwnProperty; export function hasProperty(map: Map, key: string): boolean { return hasOwnProperty.call(map, key); @@ -168,7 +206,7 @@ module ts { } export function isEmpty(map: Map) { - for (var id in map) { + for (let id in map) { if (hasProperty(map, id)) { return false; } @@ -177,19 +215,19 @@ module ts { } export function clone(object: T): T { - var result: any = {}; - for (var id in object) { + let result: any = {}; + for (let id in object) { result[id] = (object)[id]; } return result; } export function extend(first: Map, second: Map): Map { - var result: Map = {}; - for (var id in first) { + let result: Map = {}; + for (let id in first) { result[id] = first[id]; } - for (var id in second) { + for (let id in second) { if (!hasProperty(result, id)) { result[id] = second[id]; } @@ -198,16 +236,16 @@ module ts { } export function forEachValue(map: Map, callback: (value: T) => U): U { - var result: U; - for (var id in map) { + let result: U; + for (let id in map) { if (result = callback(map[id])) break; } return result; } export function forEachKey(map: Map, callback: (key: string) => U): U { - var result: U; - for (var id in map) { + let result: U; + for (let id in map) { if (result = callback(id)) break; } return result; @@ -217,18 +255,8 @@ module ts { return hasProperty(map, key) ? map[key] : undefined; } - export function mapToArray(map: Map): T[] { - var result: T[] = []; - - for (var id in map) { - result.push(map[id]); - } - - return result; - } - export function copyMap(source: Map, target: Map): void { - for (var p in source) { + for (let p in source) { target[p] = source[p]; } } @@ -244,7 +272,7 @@ module ts { * index in the array will be the one associated with the produced key. */ export function arrayToMap(array: T[], makeKey: (value: T) => string): Map { - var result: Map = {}; + let result: Map = {}; forEach(array, value => { result[makeKey(value)] = value; @@ -259,7 +287,7 @@ module ts { return text.replace(/{(\d+)}/g, (match, index?) => args[+index + baseIndex]); } - export var localizedDiagnosticMessages: Map = undefined; + export let localizedDiagnosticMessages: Map = undefined; export function getLocaleSpecificMessage(message: string) { return localizedDiagnosticMessages && localizedDiagnosticMessages[message] @@ -269,10 +297,14 @@ module ts { export function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage, ...args: any[]): Diagnostic; export function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage): Diagnostic { + let end = start + length; + Debug.assert(start >= 0, "start must be non-negative, is " + start); Debug.assert(length >= 0, "length must be non-negative, is " + length); + Debug.assert(start <= file.text.length, `start must be within the bounds of the file. ${ start } > ${ file.text.length }`); + Debug.assert(end <= file.text.length, `end must be the bounds of the file. ${ end } > ${ file.text.length }`); - var text = getLocaleSpecificMessage(message.key); + let text = getLocaleSpecificMessage(message.key); if (arguments.length > 4) { text = formatStringFromArgs(text, arguments, 4); @@ -291,7 +323,7 @@ module ts { export function createCompilerDiagnostic(message: DiagnosticMessage, ...args: any[]): Diagnostic; export function createCompilerDiagnostic(message: DiagnosticMessage): Diagnostic { - var text = getLocaleSpecificMessage(message.key); + let text = getLocaleSpecificMessage(message.key); if (arguments.length > 1) { text = formatStringFromArgs(text, arguments, 1); @@ -310,7 +342,7 @@ module ts { export function chainDiagnosticMessages(details: DiagnosticMessageChain, message: DiagnosticMessage, ...args: any[]): DiagnosticMessageChain; export function chainDiagnosticMessages(details: DiagnosticMessageChain, message: DiagnosticMessage): DiagnosticMessageChain { - var text = getLocaleSpecificMessage(message.key); + let text = getLocaleSpecificMessage(message.key); if (arguments.length > 2) { text = formatStringFromArgs(text, arguments, 2); @@ -354,10 +386,10 @@ module ts { function compareMessageText(text1: string | DiagnosticMessageChain, text2: string | DiagnosticMessageChain): Comparison { while (text1 && text2) { // We still have both chains. - var string1 = typeof text1 === "string" ? text1 : text1.messageText; - var string2 = typeof text2 === "string" ? text2 : text2.messageText; + let string1 = typeof text1 === "string" ? text1 : text1.messageText; + let string2 = typeof text2 === "string" ? text2 : text2.messageText; - var res = compareValues(string1, string2); + let res = compareValues(string1, string2); if (res) { return res; } @@ -384,11 +416,11 @@ module ts { return diagnostics; } - var newDiagnostics = [diagnostics[0]]; - var previousDiagnostic = diagnostics[0]; - for (var i = 1; i < diagnostics.length; i++) { - var currentDiagnostic = diagnostics[i]; - var isDupe = compareDiagnostics(currentDiagnostic, previousDiagnostic) === Comparison.EqualTo; + let newDiagnostics = [diagnostics[0]]; + let previousDiagnostic = diagnostics[0]; + for (let i = 1; i < diagnostics.length; i++) { + let currentDiagnostic = diagnostics[i]; + let isDupe = compareDiagnostics(currentDiagnostic, previousDiagnostic) === Comparison.EqualTo; if (!isDupe) { newDiagnostics.push(currentDiagnostic); previousDiagnostic = currentDiagnostic; @@ -406,9 +438,9 @@ module ts { export function getRootLength(path: string): number { if (path.charCodeAt(0) === CharacterCodes.slash) { if (path.charCodeAt(1) !== CharacterCodes.slash) return 1; - var p1 = path.indexOf("/", 2); + let p1 = path.indexOf("/", 2); if (p1 < 0) return 2; - var p2 = path.indexOf("/", p1 + 1); + let p2 = path.indexOf("/", p1 + 1); if (p2 < 0) return p1 + 1; return p2 + 1; } @@ -419,18 +451,21 @@ module ts { return 0; } - export var directorySeparator = "/"; + export let directorySeparator = "/"; function getNormalizedParts(normalizedSlashedPath: string, rootLength: number) { - var parts = normalizedSlashedPath.substr(rootLength).split(directorySeparator); - var normalized: string[] = []; - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; + let parts = normalizedSlashedPath.substr(rootLength).split(directorySeparator); + let normalized: string[] = []; + for (let part of parts) { if (part !== ".") { if (part === ".." && normalized.length > 0 && normalized[normalized.length - 1] !== "..") { normalized.pop(); } else { - normalized.push(part); + // A part may be an empty string (which is 'falsy') if the path had consecutive slashes, + // e.g. "path//file.ts". Drop these before re-joining the parts. + if(part) { + normalized.push(part); + } } } } @@ -439,9 +474,9 @@ module ts { } export function normalizePath(path: string): string { - var path = normalizeSlashes(path); - var rootLength = getRootLength(path); - var normalized = getNormalizedParts(path, rootLength); + path = normalizeSlashes(path); + let rootLength = getRootLength(path); + let normalized = getNormalizedParts(path, rootLength); return path.substr(0, rootLength) + normalized.join(directorySeparator); } @@ -458,13 +493,13 @@ module ts { } function normalizedPathComponents(path: string, rootLength: number) { - var normalizedParts = getNormalizedParts(path, rootLength); + let normalizedParts = getNormalizedParts(path, rootLength); return [path.substr(0, rootLength)].concat(normalizedParts); } export function getNormalizedPathComponents(path: string, currentDirectory: string) { - var path = normalizeSlashes(path); - var rootLength = getRootLength(path); + path = normalizeSlashes(path); + let rootLength = getRootLength(path); if (rootLength == 0) { // If the path is not rooted it is relative to current directory path = combinePaths(normalizeSlashes(currentDirectory), path); @@ -489,9 +524,9 @@ module ts { // In this example the root is: http://www.website.com/ // normalized path components should be ["http://www.website.com/", "folder1", "folder2"] - var urlLength = url.length; + let urlLength = url.length; // Initial root length is http:// part - var rootLength = url.indexOf("://") + "://".length; + let rootLength = url.indexOf("://") + "://".length; while (rootLength < urlLength) { // Consume all immediate slashes in the protocol // eg.initial rootlength is just file:// but it needs to consume another "/" in file:/// @@ -510,7 +545,7 @@ module ts { } // Find the index of "/" after website.com so the root can be http://www.website.com/ (from existing http://) - var indexOfNextSlash = url.indexOf(directorySeparator, rootLength); + let indexOfNextSlash = url.indexOf(directorySeparator, rootLength); if (indexOfNextSlash !== -1) { // Found the "/" after the website.com so the root is length of http://www.website.com/ // and get components afetr the root normally like any other folder components @@ -536,8 +571,8 @@ module ts { } export function getRelativePathToDirectoryOrUrl(directoryPathOrUrl: string, relativeOrAbsolutePath: string, currentDirectory: string, getCanonicalFileName: (fileName: string) => string, isAbsolutePathAnUrl: boolean) { - var pathComponents = getNormalizedPathOrUrlComponents(relativeOrAbsolutePath, currentDirectory); - var directoryComponents = getNormalizedPathOrUrlComponents(directoryPathOrUrl, currentDirectory); + let pathComponents = getNormalizedPathOrUrlComponents(relativeOrAbsolutePath, currentDirectory); + let directoryComponents = getNormalizedPathOrUrlComponents(directoryPathOrUrl, currentDirectory); if (directoryComponents.length > 1 && directoryComponents[directoryComponents.length - 1] === "") { // If the directory path given was of type test/cases/ then we really need components of directory to be only till its name // that is ["test", "cases", ""] needs to be actually ["test", "cases"] @@ -553,8 +588,8 @@ module ts { // Get the relative path if (joinStartIndex) { - var relativePath = ""; - var relativePathComponents = pathComponents.slice(joinStartIndex, pathComponents.length); + let relativePath = ""; + let relativePathComponents = pathComponents.slice(joinStartIndex, pathComponents.length); for (; joinStartIndex < directoryComponents.length; joinStartIndex++) { if (directoryComponents[joinStartIndex] !== "") { relativePath = relativePath + ".." + directorySeparator; @@ -565,7 +600,7 @@ module ts { } // Cant find the relative path, get the absolute path - var absolutePath = getNormalizedPathFromPathComponents(pathComponents); + let absolutePath = getNormalizedPathFromPathComponents(pathComponents); if (isAbsolutePathAnUrl && isRootedDiskPath(absolutePath)) { absolutePath = "file:///" + absolutePath; } @@ -574,7 +609,7 @@ module ts { } export function getBaseFileName(path: string) { - var i = path.lastIndexOf(directorySeparator); + let i = path.lastIndexOf(directorySeparator); return i < 0 ? path : path.substring(i + 1); } @@ -587,16 +622,15 @@ module ts { } export function fileExtensionIs(path: string, extension: string): boolean { - var pathLen = path.length; - var extLen = extension.length; + let pathLen = path.length; + let extLen = extension.length; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } - var supportedExtensions = [".d.ts", ".ts", ".js"]; + let supportedExtensions = [".d.ts", ".ts", ".js"]; export function removeFileExtension(path: string): string { - for (var i = 0; i < supportedExtensions.length; i++) { - var ext = supportedExtensions[i]; + for (let ext of supportedExtensions) { if (fileExtensionIs(path, ext)) { return path.substr(0, path.length - ext.length); @@ -606,9 +640,9 @@ module ts { return path; } - var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\0-\19\t\v\f\b\0\r\n\u2028\u2029\u0085]/g; - var escapedCharsMap: Map = { + let backslashOrDoubleQuote = /[\"\\]/g; + let escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + let escapedCharsMap: Map = { "\0": "\\0", "\t": "\\t", "\v": "\\v", @@ -623,29 +657,6 @@ module ts { "\u0085": "\\u0085" // nextLine }; - /** - * Based heavily on the abstract 'Quote' operation from ECMA-262 (24.3.2.2), - * but augmented for a few select characters. - * Note that this doesn't actually wrap the input in double quotes. - */ - export function escapeString(s: string): string { - // Prioritize '"' and '\' - s = backslashOrDoubleQuote.test(s) ? s.replace(backslashOrDoubleQuote, getReplacement) : s; - s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; - - return s; - - function getReplacement(c: string) { - return escapedCharsMap[c] || unicodeEscape(c); - } - - function unicodeEscape(c: string): string { - var hexCharCode = c.charCodeAt(0).toString(16); - var paddedHexCode = ("0000" + hexCharCode).slice(-4); - return "\\u" + paddedHexCode; - } - } - export function getDefaultLibFileName(options: CompilerOptions): string { return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts"; } @@ -670,7 +681,7 @@ module ts { function Signature(checker: TypeChecker) { } - export var objectAllocator: ObjectAllocator = { + export let objectAllocator: ObjectAllocator = { getNodeConstructor: kind => { function Node() { } @@ -696,7 +707,7 @@ module ts { } export module Debug { - var currentAssertionLevel = AssertionLevel.None; + let currentAssertionLevel = AssertionLevel.None; export function shouldAssert(level: AssertionLevel): boolean { return currentAssertionLevel >= level; @@ -704,7 +715,7 @@ module ts { export function assert(expression: boolean, message?: string, verboseDebugInfo?: () => string): void { if (!expression) { - var verboseDebugString = ""; + let verboseDebugString = ""; if (verboseDebugInfo) { verboseDebugString = "\r\nVerbose Debug Information: " + verboseDebugInfo(); } diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts new file mode 100644 index 00000000000..7d41a72435f --- /dev/null +++ b/src/compiler/declarationEmitter.ts @@ -0,0 +1,1569 @@ +/// + +module ts { + + interface ModuleElementDeclarationEmitInfo { + node: Node; + outputPos: number; + indent: number; + asynchronousOutput?: string; // If the output for alias was written asynchronously, the corresponding output + subModuleElementDeclarationEmitInfo?: ModuleElementDeclarationEmitInfo[]; + isVisible?: boolean; + } + + interface DeclarationEmit { + reportedDeclarationError: boolean; + moduleElementDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[]; + synchronousDeclarationOutput: string; + referencePathsOutput: string; + } + + type GetSymbolAccessibilityDiagnostic = (symbolAccesibilityResult: SymbolAccessiblityResult) => SymbolAccessibilityDiagnostic; + + interface EmitTextWriterWithSymbolWriter extends EmitTextWriter, SymbolWriter { + getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic; + } + + interface SymbolAccessibilityDiagnostic { + errorNode: Node; + diagnosticMessage: DiagnosticMessage; + typeName?: DeclarationName; + } + + export function getDeclarationDiagnostics(host: EmitHost, resolver: EmitResolver, targetSourceFile: SourceFile): Diagnostic[] { + let diagnostics: Diagnostic[] = []; + let jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); + return diagnostics; + } + + function emitDeclarations(host: EmitHost, resolver: EmitResolver, diagnostics: Diagnostic[], jsFilePath: string, root?: SourceFile): DeclarationEmit { + let newLine = host.getNewLine(); + let compilerOptions = host.getCompilerOptions(); + let languageVersion = compilerOptions.target || ScriptTarget.ES3; + + let write: (s: string) => void; + let writeLine: () => void; + let increaseIndent: () => void; + let decreaseIndent: () => void; + let writeTextOfNode: (sourceFile: SourceFile, node: Node) => void; + + let writer = createAndSetNewTextWriterWithSymbolWriter(); + + let enclosingDeclaration: Node; + let currentSourceFile: SourceFile; + let reportedDeclarationError = false; + let emitJsDocComments = compilerOptions.removeComments ? function (declaration: Node) { } : writeJsDocComments; + let emit = compilerOptions.stripInternal ? stripInternal : emitNode; + + let moduleElementDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[] = []; + let asynchronousSubModuleDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[]; + + // Contains the reference paths that needs to go in the declaration file. + // Collecting this separately because reference paths need to be first thing in the declaration file + // and we could be collecting these paths from multiple files into single one with --out option + let referencePathsOutput = ""; + + if (root) { + // Emitting just a single file, so emit references in this file only + if (!compilerOptions.noResolve) { + let addedGlobalFileReference = false; + forEach(root.referencedFiles, fileReference => { + let referencedFile = tryResolveScriptReference(host, root, fileReference); + + // All the references that are not going to be part of same file + if (referencedFile && ((referencedFile.flags & NodeFlags.DeclarationFile) || // This is a declare file reference + shouldEmitToOwnFile(referencedFile, compilerOptions) || // This is referenced file is emitting its own js file + !addedGlobalFileReference)) { // Or the global out file corresponding to this reference was not added + + writeReferencePath(referencedFile); + if (!isExternalModuleOrDeclarationFile(referencedFile)) { + addedGlobalFileReference = true; + } + } + }); + } + + emitSourceFile(root); + + // create asynchronous output for the importDeclarations + if (moduleElementDeclarationEmitInfo.length) { + let oldWriter = writer; + forEach(moduleElementDeclarationEmitInfo, aliasEmitInfo => { + if (aliasEmitInfo.isVisible) { + Debug.assert(aliasEmitInfo.node.kind === SyntaxKind.ImportDeclaration); + createAndSetNewTextWriterWithSymbolWriter(); + Debug.assert(aliasEmitInfo.indent === 0); + writeImportDeclaration(aliasEmitInfo.node); + aliasEmitInfo.asynchronousOutput = writer.getText(); + } + }); + setWriter(oldWriter); + } + } + else { + // Emit references corresponding to this file + let emittedReferencedFiles: SourceFile[] = []; + forEach(host.getSourceFiles(), sourceFile => { + if (!isExternalModuleOrDeclarationFile(sourceFile)) { + // Check what references need to be added + if (!compilerOptions.noResolve) { + forEach(sourceFile.referencedFiles, fileReference => { + let referencedFile = tryResolveScriptReference(host, sourceFile, fileReference); + + // If the reference file is a declaration file or an external module, emit that reference + if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) && + !contains(emittedReferencedFiles, referencedFile))) { // If the file reference was not already emitted + + writeReferencePath(referencedFile); + emittedReferencedFiles.push(referencedFile); + } + }); + } + + emitSourceFile(sourceFile); + } + }); + } + + return { + reportedDeclarationError, + moduleElementDeclarationEmitInfo, + synchronousDeclarationOutput: writer.getText(), + referencePathsOutput, + } + + function hasInternalAnnotation(range: CommentRange) { + let text = currentSourceFile.text; + let comment = text.substring(range.pos, range.end); + return comment.indexOf("@internal") >= 0; + } + + function stripInternal(node: Node) { + if (node) { + let leadingCommentRanges = getLeadingCommentRanges(currentSourceFile.text, node.pos); + if (forEach(leadingCommentRanges, hasInternalAnnotation)) { + return; + } + + emitNode(node); + } + } + + function createAndSetNewTextWriterWithSymbolWriter(): EmitTextWriterWithSymbolWriter { + let writer = createTextWriter(newLine); + writer.trackSymbol = trackSymbol; + writer.writeKeyword = writer.write; + writer.writeOperator = writer.write; + writer.writePunctuation = writer.write; + writer.writeSpace = writer.write; + writer.writeStringLiteral = writer.writeLiteral; + writer.writeParameter = writer.write; + writer.writeSymbol = writer.write; + setWriter(writer); + return writer; + } + + function setWriter(newWriter: EmitTextWriterWithSymbolWriter) { + writer = newWriter; + write = newWriter.write; + writeTextOfNode = newWriter.writeTextOfNode; + writeLine = newWriter.writeLine; + increaseIndent = newWriter.increaseIndent; + decreaseIndent = newWriter.decreaseIndent; + } + + function writeAsynchronousModuleElements(nodes: Node[]) { + let oldWriter = writer; + forEach(nodes, declaration => { + let nodeToCheck: Node; + if (declaration.kind === SyntaxKind.VariableDeclaration) { + nodeToCheck = declaration.parent.parent; + } else if (declaration.kind === SyntaxKind.NamedImports || declaration.kind === SyntaxKind.ImportSpecifier || declaration.kind === SyntaxKind.ImportClause) { + Debug.fail("We should be getting ImportDeclaration instead to write"); + } else { + nodeToCheck = declaration; + } + + let moduleElementEmitInfo = forEach(moduleElementDeclarationEmitInfo, declEmitInfo => declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined); + if (!moduleElementEmitInfo && asynchronousSubModuleDeclarationEmitInfo) { + moduleElementEmitInfo = forEach(asynchronousSubModuleDeclarationEmitInfo, declEmitInfo => declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined); + } + + // If the alias was marked as not visible when we saw its declaration, we would have saved the aliasEmitInfo, but if we haven't yet visited the alias declaration + // then we don't need to write it at this point. We will write it when we actually see its declaration + // Eg. + // export function bar(a: foo.Foo) { } + // import foo = require("foo"); + // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, + // we would write alias foo declaration when we visit it since it would now be marked as visible + if (moduleElementEmitInfo) { + if (moduleElementEmitInfo.node.kind === SyntaxKind.ImportDeclaration) { + // we have to create asynchronous output only after we have collected complete information + // because it is possible to enable multiple bindings as asynchronously visible + moduleElementEmitInfo.isVisible = true; + } + else { + createAndSetNewTextWriterWithSymbolWriter(); + for (let declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { + increaseIndent(); + } + + if (nodeToCheck.kind === SyntaxKind.ModuleDeclaration) { + Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); + asynchronousSubModuleDeclarationEmitInfo = []; + } + writeModuleElement(nodeToCheck); + if (nodeToCheck.kind === SyntaxKind.ModuleDeclaration) { + moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; + asynchronousSubModuleDeclarationEmitInfo = undefined; + } + moduleElementEmitInfo.asynchronousOutput = writer.getText(); + } + } + }); + setWriter(oldWriter); + } + + function handleSymbolAccessibilityError(symbolAccesibilityResult: SymbolAccessiblityResult) { + if (symbolAccesibilityResult.accessibility === SymbolAccessibility.Accessible) { + // write the aliases + if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { + writeAsynchronousModuleElements(symbolAccesibilityResult.aliasesToMakeVisible); + } + } + else { + // Report error + reportedDeclarationError = true; + let errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); + if (errorInfo) { + if (errorInfo.typeName) { + diagnostics.push(createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, + errorInfo.diagnosticMessage, + getSourceTextOfNodeFromSourceFile(currentSourceFile, errorInfo.typeName), + symbolAccesibilityResult.errorSymbolName, + symbolAccesibilityResult.errorModuleName)); + } + else { + diagnostics.push(createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, + errorInfo.diagnosticMessage, + symbolAccesibilityResult.errorSymbolName, + symbolAccesibilityResult.errorModuleName)); + } + } + } + } + + function trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) { + handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning)); + } + + function writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, type: TypeNode | StringLiteralExpression, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + write(": "); + if (type) { + // Write the type + emitType(type); + } + else { + resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + } + } + + function writeReturnTypeAtSignature(signature: SignatureDeclaration, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + write(": "); + if (signature.type) { + // Write the type + emitType(signature.type); + } + else { + resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + } + } + + function emitLines(nodes: Node[]) { + for (let node of nodes) { + emit(node); + } + } + + function emitSeparatedList(nodes: Node[], separator: string, eachNodeEmitFn: (node: Node) => void, canEmitFn?: (node: Node) => boolean) { + let currentWriterPos = writer.getTextPos(); + for (let node of nodes) { + if (!canEmitFn || canEmitFn(node)) { + if (currentWriterPos !== writer.getTextPos()) { + write(separator); + } + currentWriterPos = writer.getTextPos(); + eachNodeEmitFn(node); + } + } + } + + function emitCommaList(nodes: Node[], eachNodeEmitFn: (node: Node) => void, canEmitFn?: (node: Node) => boolean) { + emitSeparatedList(nodes, ", ", eachNodeEmitFn, canEmitFn); + } + + function writeJsDocComments(declaration: Node) { + if (declaration) { + let jsDocComments = getJsDocComments(declaration, currentSourceFile); + emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); + // jsDoc comments are emitted at /*leading comment1 */space/*leading comment*/space + emitComments(currentSourceFile, writer, jsDocComments, /*trailingSeparator*/ true, newLine, writeCommentRange); + } + } + + function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type: TypeNode | EntityName | HeritageClauseElement, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { + writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; + emitType(type); + } + + function emitType(type: TypeNode | StringLiteralExpression | Identifier | QualifiedName | HeritageClauseElement) { + switch (type.kind) { + case SyntaxKind.AnyKeyword: + case SyntaxKind.StringKeyword: + case SyntaxKind.NumberKeyword: + case SyntaxKind.BooleanKeyword: + case SyntaxKind.SymbolKeyword: + case SyntaxKind.VoidKeyword: + case SyntaxKind.StringLiteral: + return writeTextOfNode(currentSourceFile, type); + case SyntaxKind.HeritageClauseElement: + return emitHeritageClauseElement(type); + case SyntaxKind.TypeReference: + return emitTypeReference(type); + case SyntaxKind.TypeQuery: + return emitTypeQuery(type); + case SyntaxKind.ArrayType: + return emitArrayType(type); + case SyntaxKind.TupleType: + return emitTupleType(type); + case SyntaxKind.UnionType: + return emitUnionType(type); + case SyntaxKind.ParenthesizedType: + return emitParenType(type); + case SyntaxKind.FunctionType: + case SyntaxKind.ConstructorType: + return emitSignatureDeclarationWithJsDocComments(type); + case SyntaxKind.TypeLiteral: + return emitTypeLiteral(type); + case SyntaxKind.Identifier: + return emitEntityName(type); + case SyntaxKind.QualifiedName: + return emitEntityName(type); + } + + function emitEntityName(entityName: EntityName | PropertyAccessExpression) { + let visibilityResult = resolver.isEntityNameVisible(entityName, + // Aliases can be written asynchronously so use correct enclosing declaration + entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration ? entityName.parent : enclosingDeclaration); + + handleSymbolAccessibilityError(visibilityResult); + writeEntityName(entityName); + + function writeEntityName(entityName: EntityName | Expression) { + if (entityName.kind === SyntaxKind.Identifier) { + writeTextOfNode(currentSourceFile, entityName); + } + else { + let left = entityName.kind === SyntaxKind.QualifiedName ? (entityName).left : (entityName).expression; + let right = entityName.kind === SyntaxKind.QualifiedName ? (entityName).right : (entityName).name; + writeEntityName(left); + write("."); + writeTextOfNode(currentSourceFile, right); + } + } + } + + function emitHeritageClauseElement(node: HeritageClauseElement) { + if (isSupportedHeritageClauseElement(node)) { + Debug.assert(node.expression.kind === SyntaxKind.Identifier || node.expression.kind === SyntaxKind.PropertyAccessExpression); + emitEntityName(node.expression); + if (node.typeArguments) { + write("<"); + emitCommaList(node.typeArguments, emitType); + write(">"); + } + } + } + + function emitTypeReference(type: TypeReferenceNode) { + emitEntityName(type.typeName); + if (type.typeArguments) { + write("<"); + emitCommaList(type.typeArguments, emitType); + write(">"); + } + } + + function emitTypeQuery(type: TypeQueryNode) { + write("typeof "); + emitEntityName(type.exprName); + } + + function emitArrayType(type: ArrayTypeNode) { + emitType(type.elementType); + write("[]"); + } + + function emitTupleType(type: TupleTypeNode) { + write("["); + emitCommaList(type.elementTypes, emitType); + write("]"); + } + + function emitUnionType(type: UnionTypeNode) { + emitSeparatedList(type.types, " | ", emitType); + } + + function emitParenType(type: ParenthesizedTypeNode) { + write("("); + emitType(type.type); + write(")"); + } + + function emitTypeLiteral(type: TypeLiteralNode) { + write("{"); + if (type.members.length) { + writeLine(); + increaseIndent(); + // write members + emitLines(type.members); + decreaseIndent(); + } + write("}"); + } + } + + function emitSourceFile(node: SourceFile) { + currentSourceFile = node; + enclosingDeclaration = node; + emitLines(node.statements); + } + + function emitExportAssignment(node: ExportAssignment) { + write(node.isExportEquals ? "export = " : "export default "); + if (node.expression.kind === SyntaxKind.Identifier) { + writeTextOfNode(currentSourceFile, node.expression); + } + else { + write(": "); + if (node.type) { + emitType(node.type); + } + else { + writer.getSymbolAccessibilityDiagnostic = getDefaultExportAccessibilityDiagnostic; + resolver.writeTypeOfExpression(node.expression, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); + } + } + write(";"); + writeLine(); + + // Make all the declarations visible for the export name + if (node.expression.kind === SyntaxKind.Identifier) { + let nodes = resolver.collectLinkedAliases(node.expression); + + // write each of these declarations asynchronously + writeAsynchronousModuleElements(nodes); + } + + function getDefaultExportAccessibilityDiagnostic(diagnostic: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + return { + diagnosticMessage: Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, + errorNode: node + }; + } + } + + function isModuleElementVisible(node: Declaration) { + return resolver.isDeclarationVisible(node); + } + + function emitModuleElement(node: Node, isModuleElementVisible: boolean) { + if (isModuleElementVisible) { + writeModuleElement(node); + } + // Import equals declaration in internal module can become visible as part of any emit so lets make sure we add these irrespective + else if (node.kind === SyntaxKind.ImportEqualsDeclaration || + (node.parent.kind === SyntaxKind.SourceFile && isExternalModule(currentSourceFile))) { + let isVisible: boolean; + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== SyntaxKind.SourceFile) { + // Import declaration of another module that is visited async so lets put it in right spot + asynchronousSubModuleDeclarationEmitInfo.push({ + node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible + }); + } + else { + if (node.kind === SyntaxKind.ImportDeclaration) { + let importDeclaration = node; + if (importDeclaration.importClause) { + isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || + isVisibleNamedBinding(importDeclaration.importClause.namedBindings); + } + } + moduleElementDeclarationEmitInfo.push({ + node, + outputPos: writer.getTextPos(), + indent: writer.getIndent(), + isVisible + }); + } + } + } + + function writeModuleElement(node: Node) { + switch (node.kind) { + case SyntaxKind.FunctionDeclaration: + return writeFunctionDeclaration(node); + case SyntaxKind.VariableStatement: + return writeVariableStatement(node); + case SyntaxKind.InterfaceDeclaration: + return writeInterfaceDeclaration(node); + case SyntaxKind.ClassDeclaration: + return writeClassDeclaration(node); + case SyntaxKind.TypeAliasDeclaration: + return writeTypeAliasDeclaration(node); + case SyntaxKind.EnumDeclaration: + return writeEnumDeclaration(node); + case SyntaxKind.ModuleDeclaration: + return writeModuleDeclaration(node); + case SyntaxKind.ImportEqualsDeclaration: + return writeImportEqualsDeclaration(node); + case SyntaxKind.ImportDeclaration: + return writeImportDeclaration(node); + default: + Debug.fail("Unknown symbol kind"); + } + } + + function emitModuleElementDeclarationFlags(node: Node) { + // If the node is parented in the current source file we need to emit export declare or just export + if (node.parent === currentSourceFile) { + // If the node is exported + if (node.flags & NodeFlags.Export) { + write("export "); + } + + if (node.flags & NodeFlags.Default) { + write("default "); + } + else if (node.kind !== SyntaxKind.InterfaceDeclaration) { + write("declare "); + } + } + } + + function emitClassMemberDeclarationFlags(node: Declaration) { + if (node.flags & NodeFlags.Private) { + write("private "); + } + else if (node.flags & NodeFlags.Protected) { + write("protected "); + } + + if (node.flags & NodeFlags.Static) { + write("static "); + } + } + + function writeImportEqualsDeclaration(node: ImportEqualsDeclaration) { + // note usage of writer. methods instead of aliases created, just to make sure we are using + // correct writer especially to handle asynchronous alias writing + emitJsDocComments(node); + if (node.flags & NodeFlags.Export) { + write("export "); + } + write("import "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + if (isInternalModuleImportEqualsDeclaration(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); + write(";"); + } + else { + write("require("); + writeTextOfNode(currentSourceFile, getExternalModuleImportEqualsDeclarationExpression(node)); + write(");"); + } + writer.writeLine(); + + function getImportEntityNameVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + return { + diagnosticMessage: Diagnostics.Import_declaration_0_is_using_private_name_1, + errorNode: node, + typeName: node.name + }; + } + } + + function isVisibleNamedBinding(namedBindings: NamespaceImport | NamedImports): boolean { + if (namedBindings) { + if (namedBindings.kind === SyntaxKind.NamespaceImport) { + return resolver.isDeclarationVisible(namedBindings); + } + else { + return forEach((namedBindings).elements, namedImport => resolver.isDeclarationVisible(namedImport)); + } + } + } + + function writeImportDeclaration(node: ImportDeclaration) { + if (!node.importClause && !(node.flags & NodeFlags.Export)) { + // do not write non-exported import declarations that don't have import clauses + return; + } + emitJsDocComments(node); + if (node.flags & NodeFlags.Export) { + write("export "); + } + write("import "); + if (node.importClause) { + let currentWriterPos = writer.getTextPos(); + if (node.importClause.name && resolver.isDeclarationVisible(node.importClause)) { + writeTextOfNode(currentSourceFile, node.importClause.name); + } + if (node.importClause.namedBindings && isVisibleNamedBinding(node.importClause.namedBindings)) { + if (currentWriterPos !== writer.getTextPos()) { + // If the default binding was emitted, write the separated + write(", "); + } + if (node.importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + write("* as "); + writeTextOfNode(currentSourceFile, (node.importClause.namedBindings).name); + } + else { + write("{ "); + emitCommaList((node.importClause.namedBindings).elements, emitImportOrExportSpecifier, resolver.isDeclarationVisible); + write(" }"); + } + } + write(" from "); + } + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + write(";"); + writer.writeLine(); + } + + function emitImportOrExportSpecifier(node: ImportOrExportSpecifier) { + if (node.propertyName) { + writeTextOfNode(currentSourceFile, node.propertyName); + write(" as "); + } + writeTextOfNode(currentSourceFile, node.name); + } + + function emitExportSpecifier(node: ExportSpecifier) { + emitImportOrExportSpecifier(node); + + // Make all the declarations visible for the export name + let nodes = resolver.collectLinkedAliases(node.propertyName || node.name); + + // write each of these declarations asynchronously + writeAsynchronousModuleElements(nodes); + } + + function emitExportDeclaration(node: ExportDeclaration) { + emitJsDocComments(node); + write("export "); + if (node.exportClause) { + write("{ "); + emitCommaList(node.exportClause.elements, emitExportSpecifier); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + writeTextOfNode(currentSourceFile, node.moduleSpecifier); + } + write(";"); + writer.writeLine(); + } + + function writeModuleDeclaration(node: ModuleDeclaration) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("module "); + writeTextOfNode(currentSourceFile, node.name); + while (node.body.kind !== SyntaxKind.ModuleBlock) { + node = node.body; + write("."); + writeTextOfNode(currentSourceFile, node.name); + } + let prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + write(" {"); + writeLine(); + increaseIndent(); + emitLines((node.body).statements); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + + function writeTypeAliasDeclaration(node: TypeAliasDeclaration) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("type "); + writeTextOfNode(currentSourceFile, node.name); + write(" = "); + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); + write(";"); + writeLine(); + + function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + return { + diagnosticMessage: Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, + errorNode: node.type, + typeName: node.name + }; + } + } + + function writeEnumDeclaration(node: EnumDeclaration) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (isConst(node)) { + write("const ") + } + write("enum "); + writeTextOfNode(currentSourceFile, node.name); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + } + + function emitEnumMemberDeclaration(node: EnumMember) { + emitJsDocComments(node); + writeTextOfNode(currentSourceFile, node.name); + let enumMemberValue = resolver.getConstantValue(node); + if (enumMemberValue !== undefined) { + write(" = "); + write(enumMemberValue.toString()); + } + write(","); + writeLine(); + } + + function isPrivateMethodTypeParameter(node: TypeParameterDeclaration) { + return node.parent.kind === SyntaxKind.MethodDeclaration && (node.parent.flags & NodeFlags.Private); + } + + function emitTypeParameters(typeParameters: TypeParameterDeclaration[]) { + function emitTypeParameter(node: TypeParameterDeclaration) { + increaseIndent(); + emitJsDocComments(node); + decreaseIndent(); + writeTextOfNode(currentSourceFile, node.name); + // If there is constraint present and this is not a type parameter of the private method emit the constraint + if (node.constraint && !isPrivateMethodTypeParameter(node)) { + write(" extends "); + if (node.parent.kind === SyntaxKind.FunctionType || + node.parent.kind === SyntaxKind.ConstructorType || + (node.parent.parent && node.parent.parent.kind === SyntaxKind.TypeLiteral)) { + Debug.assert(node.parent.kind === SyntaxKind.MethodDeclaration || + node.parent.kind === SyntaxKind.MethodSignature || + node.parent.kind === SyntaxKind.FunctionType || + node.parent.kind === SyntaxKind.ConstructorType || + node.parent.kind === SyntaxKind.CallSignature || + node.parent.kind === SyntaxKind.ConstructSignature); + emitType(node.constraint); + } + else { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.constraint, getTypeParameterConstraintVisibilityError); + } + } + + function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + // Type parameter constraints are named by user so we should always be able to name it + let diagnosticMessage: DiagnosticMessage; + switch (node.parent.kind) { + case SyntaxKind.ClassDeclaration: + diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; + break; + + case SyntaxKind.InterfaceDeclaration: + diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; + break; + + case SyntaxKind.ConstructSignature: + diagnosticMessage = Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + + case SyntaxKind.CallSignature: + diagnosticMessage = Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + if (node.parent.flags & NodeFlags.Static) { + diagnosticMessage = Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { + diagnosticMessage = Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + diagnosticMessage = Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + break; + + case SyntaxKind.FunctionDeclaration: + diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; + break; + + default: + Debug.fail("This is unknown parent for type parameter: " + node.parent.kind); + } + + return { + diagnosticMessage, + errorNode: node, + typeName: node.name + }; + } + } + + if (typeParameters) { + write("<"); + emitCommaList(typeParameters, emitTypeParameter); + write(">"); + } + } + + function emitHeritageClause(typeReferences: HeritageClauseElement[], isImplementsList: boolean) { + if (typeReferences) { + write(isImplementsList ? " implements " : " extends "); + emitCommaList(typeReferences, emitTypeOfTypeReference); + } + + function emitTypeOfTypeReference(node: HeritageClauseElement) { + if (isSupportedHeritageClauseElement(node)) { + emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); + } + + function getHeritageClauseVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage: DiagnosticMessage; + // Heritage clause is written by user so it can always be named + if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { + // Class or Interface implemented/extended is inaccessible + diagnosticMessage = isImplementsList ? + Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : + Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; + } + else { + // interface is inaccessible + diagnosticMessage = Diagnostics.Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1; + } + + return { + diagnosticMessage, + errorNode: node, + typeName: (node.parent.parent).name + }; + } + } + } + + function writeClassDeclaration(node: ClassDeclaration) { + function emitParameterProperties(constructorDeclaration: ConstructorDeclaration) { + if (constructorDeclaration) { + forEach(constructorDeclaration.parameters, param => { + if (param.flags & NodeFlags.AccessibilityModifier) { + emitPropertyDeclaration(param); + } + }); + } + } + + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("class "); + writeTextOfNode(currentSourceFile, node.name); + let prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + let baseTypeNode = getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + emitHeritageClause([baseTypeNode], /*isImplementsList*/ false); + } + emitHeritageClause(getClassImplementsHeritageClauseElements(node), /*isImplementsList*/ true); + write(" {"); + writeLine(); + increaseIndent(); + emitParameterProperties(getFirstConstructorWithBody(node)); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + + function writeInterfaceDeclaration(node: InterfaceDeclaration) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + write("interface "); + writeTextOfNode(currentSourceFile, node.name); + let prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + emitTypeParameters(node.typeParameters); + emitHeritageClause(getInterfaceBaseTypeNodes(node), /*isImplementsList*/ false); + write(" {"); + writeLine(); + increaseIndent(); + emitLines(node.members); + decreaseIndent(); + write("}"); + writeLine(); + enclosingDeclaration = prevEnclosingDeclaration; + } + + function emitPropertyDeclaration(node: Declaration) { + if (hasDynamicName(node)) { + return; + } + + emitJsDocComments(node); + emitClassMemberDeclarationFlags(node); + emitVariableDeclaration(node); + write(";"); + writeLine(); + } + + function emitVariableDeclaration(node: VariableDeclaration) { + // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted + // so there is no check needed to see if declaration is visible + if (node.kind !== SyntaxKind.VariableDeclaration || resolver.isDeclarationVisible(node)) { + if (isBindingPattern(node.name)) { + emitBindingPattern(node.name); + } + else { + // If this node is a computed name, it can only be a symbol, because we've already skipped + // it if it's not a well known symbol. In that case, the text of the name will be exactly + // what we want, namely the name expression enclosed in brackets. + writeTextOfNode(currentSourceFile, node.name); + // If optional property emit ? + if ((node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) && hasQuestionToken(node)) { + write("?"); + } + if ((node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) && node.parent.kind === SyntaxKind.TypeLiteral) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.flags & NodeFlags.Private)) { + writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); + } + } + } + + function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult: SymbolAccessiblityResult) { + if (node.kind === SyntaxKind.VariableDeclaration) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + } + // This check is to ensure we don't report error on constructor parameter property as that error would be reported during parameter emit + else if (node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) { + // TODO(jfreeman): Deal with computed properties in error reporting. + if (node.flags & NodeFlags.Static) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.kind === SyntaxKind.ClassDeclaration) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; + } + else { + // Interfaces cannot have types that cannot be named + return symbolAccesibilityResult.errorModuleName ? + Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } + } + } + + function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage, + errorNode: node, + typeName: node.name + } : undefined; + } + + function emitBindingPattern(bindingPattern: BindingPattern) { + // Only select non-omitted expression from the bindingPattern's elements. + // We have to do this to avoid emitting trailing commas. + // For example: + // original: var [, c,,] = [ 2,3,4] + // emitted: declare var c: number; // instead of declare var c:number, ; + let elements: Node[] = []; + for (let element of bindingPattern.elements) { + if (element.kind !== SyntaxKind.OmittedExpression){ + elements.push(element); + } + } + emitCommaList(elements, emitBindingElement); + } + + function emitBindingElement(bindingElement: BindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage = getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + + if (bindingElement.name) { + if (isBindingPattern(bindingElement.name)) { + emitBindingPattern(bindingElement.name); + } + else { + writeTextOfNode(currentSourceFile, bindingElement.name); + writeTypeOfDeclaration(bindingElement, /*type*/ undefined, getBindingElementTypeVisibilityError); + } + } + } + } + + function emitTypeOfVariableDeclarationFromTypeLiteral(node: VariableLikeDeclaration) { + // if this is property of type literal, + // or is parameter of method/call/construct/index signature of type literal + // emit only if type is specified + if (node.type) { + write(": "); + emitType(node.type); + } + } + + function isVariableStatementVisible(node: VariableStatement) { + return forEach(node.declarationList.declarations, varDeclaration => resolver.isDeclarationVisible(varDeclaration)); + } + + function writeVariableStatement(node: VariableStatement) { + emitJsDocComments(node); + emitModuleElementDeclarationFlags(node); + if (isLet(node.declarationList)) { + write("let "); + } + else if (isConst(node.declarationList)) { + write("const "); + } + else { + write("var "); + } + emitCommaList(node.declarationList.declarations, emitVariableDeclaration, resolver.isDeclarationVisible); + write(";"); + writeLine(); + } + + function emitAccessorDeclaration(node: AccessorDeclaration) { + if (hasDynamicName(node)) { + return; + } + + let accessors = getAllAccessorDeclarations((node.parent).members, node); + let accessorWithTypeAnnotation: AccessorDeclaration; + + if (node === accessors.firstAccessor) { + emitJsDocComments(accessors.getAccessor); + emitJsDocComments(accessors.setAccessor); + emitClassMemberDeclarationFlags(node); + writeTextOfNode(currentSourceFile, node.name); + if (!(node.flags & NodeFlags.Private)) { + accessorWithTypeAnnotation = node; + let type = getTypeAnnotationFromAccessor(node); + if (!type) { + // couldn't get type for the first accessor, try the another one + let anotherAccessor = node.kind === SyntaxKind.GetAccessor ? accessors.setAccessor : accessors.getAccessor; + type = getTypeAnnotationFromAccessor(anotherAccessor); + if (type) { + accessorWithTypeAnnotation = anotherAccessor; + } + } + writeTypeOfDeclaration(node, type, getAccessorDeclarationTypeVisibilityError); + } + write(";"); + writeLine(); + } + + function getTypeAnnotationFromAccessor(accessor: AccessorDeclaration): TypeNode | StringLiteralExpression { + if (accessor) { + return accessor.kind === SyntaxKind.GetAccessor + ? accessor.type // Getter - return type + : accessor.parameters.length > 0 + ? accessor.parameters[0].type // Setter parameter type + : undefined; + } + } + + function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage: DiagnosticMessage; + if (accessorWithTypeAnnotation.kind === SyntaxKind.SetAccessor) { + // Setters have to have type named and cannot infer it so, the type should always be named + if (accessorWithTypeAnnotation.parent.flags & NodeFlags.Static) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; + } + else { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; + } + return { + diagnosticMessage, + errorNode: accessorWithTypeAnnotation.parameters[0], + // TODO(jfreeman): Investigate why we are passing node.name instead of node.parameters[0].name + typeName: accessorWithTypeAnnotation.name + }; + } + else { + if (accessorWithTypeAnnotation.flags & NodeFlags.Static) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; + } + else { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; + } + return { + diagnosticMessage, + errorNode: accessorWithTypeAnnotation.name, + typeName: undefined + }; + } + } + } + + function writeFunctionDeclaration(node: FunctionLikeDeclaration) { + if (hasDynamicName(node)) { + return; + } + + // If we are emitting Method/Constructor it isn't moduleElement and hence already determined to be emitting + // so no need to verify if the declaration is visible + if (!resolver.isImplementationOfOverload(node)) { + emitJsDocComments(node); + if (node.kind === SyntaxKind.FunctionDeclaration) { + emitModuleElementDeclarationFlags(node); + } + else if (node.kind === SyntaxKind.MethodDeclaration) { + emitClassMemberDeclarationFlags(node); + } + if (node.kind === SyntaxKind.FunctionDeclaration) { + write("function "); + writeTextOfNode(currentSourceFile, node.name); + } + else if (node.kind === SyntaxKind.Constructor) { + write("constructor"); + } + else { + writeTextOfNode(currentSourceFile, node.name); + if (hasQuestionToken(node)) { + write("?"); + } + } + emitSignatureDeclaration(node); + } + } + + function emitSignatureDeclarationWithJsDocComments(node: SignatureDeclaration) { + emitJsDocComments(node); + emitSignatureDeclaration(node); + } + + function emitSignatureDeclaration(node: SignatureDeclaration) { + // Construct signature or constructor type write new Signature + if (node.kind === SyntaxKind.ConstructSignature || node.kind === SyntaxKind.ConstructorType) { + write("new "); + } + emitTypeParameters(node.typeParameters); + if (node.kind === SyntaxKind.IndexSignature) { + write("["); + } + else { + write("("); + } + + let prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; + + // Parameters + emitCommaList(node.parameters, emitParameterDeclaration); + + if (node.kind === SyntaxKind.IndexSignature) { + write("]"); + } + else { + write(")"); + } + + // If this is not a constructor and is not private, emit the return type + let isFunctionTypeOrConstructorType = node.kind === SyntaxKind.FunctionType || node.kind === SyntaxKind.ConstructorType; + if (isFunctionTypeOrConstructorType || node.parent.kind === SyntaxKind.TypeLiteral) { + // Emit type literal signature return type only if specified + if (node.type) { + write(isFunctionTypeOrConstructorType ? " => " : ": "); + emitType(node.type); + } + } + else if (node.kind !== SyntaxKind.Constructor && !(node.flags & NodeFlags.Private)) { + writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); + } + + enclosingDeclaration = prevEnclosingDeclaration; + + if (!isFunctionTypeOrConstructorType) { + write(";"); + writeLine(); + } + + function getReturnTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage: DiagnosticMessage; + switch (node.kind) { + case SyntaxKind.ConstructSignature: + // Interfaces cannot have return types that cannot be named + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + + case SyntaxKind.CallSignature: + // Interfaces cannot have return types that cannot be named + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + + case SyntaxKind.IndexSignature: + // Interfaces cannot have return types that cannot be named + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + if (node.flags & NodeFlags.Static) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; + } + else if (node.parent.kind === SyntaxKind.ClassDeclaration) { + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; + } + else { + // Interfaces cannot have return types that cannot be named + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; + } + break; + + case SyntaxKind.FunctionDeclaration: + diagnosticMessage = symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : + Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : + Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; + break; + + default: + Debug.fail("This is unknown kind for signature: " + node.kind); + } + + return { + diagnosticMessage, + errorNode: node.name || node, + }; + } + } + + function emitParameterDeclaration(node: ParameterDeclaration) { + increaseIndent(); + emitJsDocComments(node); + if (node.dotDotDotToken) { + write("..."); + } + if (isBindingPattern(node.name)) { + // For bindingPattern, we can't simply writeTextOfNode from the source file + // because we want to omit the initializer and using writeTextOfNode will result in initializer get emitted. + // Therefore, we will have to recursively emit each element in the bindingPattern. + emitBindingPattern(node.name); + } + else { + writeTextOfNode(currentSourceFile, node.name); + } + if (node.initializer || hasQuestionToken(node)) { + write("?"); + } + decreaseIndent(); + + if (node.parent.kind === SyntaxKind.FunctionType || + node.parent.kind === SyntaxKind.ConstructorType || + node.parent.parent.kind === SyntaxKind.TypeLiteral) { + emitTypeOfVariableDeclarationFromTypeLiteral(node); + } + else if (!(node.parent.flags & NodeFlags.Private)) { + writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); + } + + function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage: DiagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage, + errorNode: node, + typeName: node.name + } : undefined; + } + + function getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult: SymbolAccessiblityResult): DiagnosticMessage { + switch (node.parent.kind) { + case SyntaxKind.Constructor: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + + case SyntaxKind.ConstructSignature: + // Interfaces cannot have parameter types that cannot be named + return symbolAccesibilityResult.errorModuleName ? + Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + + case SyntaxKind.CallSignature: + // Interfaces cannot have parameter types that cannot be named + return symbolAccesibilityResult.errorModuleName ? + Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + if (node.parent.flags & NodeFlags.Static) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; + } + else if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; + } + else { + // Interfaces cannot have parameter types that cannot be named + return symbolAccesibilityResult.errorModuleName ? + Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + } + + case SyntaxKind.FunctionDeclaration: + return symbolAccesibilityResult.errorModuleName ? + symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? + Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : + Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : + Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + + default: + Debug.fail("This is unknown parent for parameter: " + node.parent.kind); + } + } + + function emitBindingPattern(bindingPattern: BindingPattern) { + // We have to explicitly emit square bracket and bracket because these tokens are not store inside the node. + if (bindingPattern.kind === SyntaxKind.ObjectBindingPattern) { + write("{"); + emitCommaList(bindingPattern.elements, emitBindingElement); + write("}"); + } + else if (bindingPattern.kind === SyntaxKind.ArrayBindingPattern) { + write("["); + let elements = bindingPattern.elements; + emitCommaList(elements, emitBindingElement); + if (elements && elements.hasTrailingComma) { + write(", "); + } + write("]"); + } + } + + function emitBindingElement(bindingElement: BindingElement) { + function getBindingElementTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { + let diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); + return diagnosticMessage !== undefined ? { + diagnosticMessage, + errorNode: bindingElement, + typeName: bindingElement.name + } : undefined; + } + + if (bindingElement.kind === SyntaxKind.OmittedExpression) { + // If bindingElement is an omittedExpression (i.e. containing elision), + // we will emit blank space (although this may differ from users' original code, + // it allows emitSeparatedList to write separator appropriately) + // Example: + // original: function foo([, x, ,]) {} + // emit : function foo([ , x, , ]) {} + write(" "); + } + else if (bindingElement.kind === SyntaxKind.BindingElement) { + if (bindingElement.propertyName) { + // bindingElement has propertyName property in the following case: + // { y: [a,b,c] ...} -> bindingPattern will have a property called propertyName for "y" + // We have to explicitly emit the propertyName before descending into its binding elements. + // Example: + // original: function foo({y: [a,b,c]}) {} + // emit : declare function foo({y: [a, b, c]}: { y: [any, any, any] }) void; + writeTextOfNode(currentSourceFile, bindingElement.propertyName); + write(": "); + + // If bindingElement has propertyName property, then its name must be another bindingPattern of SyntaxKind.ObjectBindingPattern + emitBindingPattern(bindingElement.name); + } + else if (bindingElement.name) { + if (isBindingPattern(bindingElement.name)) { + // If it is a nested binding pattern, we will recursively descend into each element and emit each one separately. + // In the case of rest element, we will omit rest element. + // Example: + // original: function foo([a, [[b]], c] = [1,[["string"]], 3]) {} + // emit : declare function foo([a, [[b]], c]: [number, [[string]], number]): void; + // original with rest: function foo([a, ...c]) {} + // emit : declare function foo([a, ...c]): void; + emitBindingPattern(bindingElement.name); + } + else { + Debug.assert(bindingElement.name.kind === SyntaxKind.Identifier); + // If the node is just an identifier, we will simply emit the text associated with the node's name + // Example: + // original: function foo({y = 10, x}) {} + // emit : declare function foo({y, x}: {number, any}): void; + if (bindingElement.dotDotDotToken) { + write("..."); + } + writeTextOfNode(currentSourceFile, bindingElement.name); + } + } + } + } + } + + function emitNode(node: Node) { + switch (node.kind) { + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ModuleDeclaration: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.TypeAliasDeclaration: + case SyntaxKind.EnumDeclaration: + return emitModuleElement(node, isModuleElementVisible(node)); + case SyntaxKind.VariableStatement: + return emitModuleElement(node, isVariableStatementVisible(node)); + case SyntaxKind.ImportDeclaration: + // Import declaration without import clause is visible, otherwise it is not visible + return emitModuleElement(node, /*isModuleElementVisible*/!(node).importClause); + case SyntaxKind.ExportDeclaration: + return emitExportDeclaration(node); + case SyntaxKind.Constructor: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + return writeFunctionDeclaration(node); + case SyntaxKind.ConstructSignature: + case SyntaxKind.CallSignature: + case SyntaxKind.IndexSignature: + return emitSignatureDeclarationWithJsDocComments(node); + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + return emitAccessorDeclaration(node); + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.PropertySignature: + return emitPropertyDeclaration(node); + case SyntaxKind.EnumMember: + return emitEnumMemberDeclaration(node); + case SyntaxKind.ExportAssignment: + return emitExportAssignment(node); + case SyntaxKind.SourceFile: + return emitSourceFile(node); + } + } + + function writeReferencePath(referencedFile: SourceFile) { + let declFileName = referencedFile.flags & NodeFlags.DeclarationFile + ? referencedFile.fileName // Declaration file, use declaration file name + : shouldEmitToOwnFile(referencedFile, compilerOptions) + ? getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") // Own output file so get the .d.ts file + : removeFileExtension(compilerOptions.out) + ".d.ts";// Global out file + + declFileName = getRelativePathToDirectoryOrUrl( + getDirectoryPath(normalizeSlashes(jsFilePath)), + declFileName, + host.getCurrentDirectory(), + host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ false); + + referencePathsOutput += "/// " + newLine; + } + } + + // @internal + export function writeDeclarationFile(jsFilePath: string, sourceFile: SourceFile, host: EmitHost, resolver: EmitResolver, diagnostics: Diagnostic[]) { + let emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); + // TODO(shkamat): Should we not write any declaration file if any of them can produce error, + // or should we just not write this file like we are doing now + if (!emitDeclarationResult.reportedDeclarationError) { + let declarationOutput = emitDeclarationResult.referencePathsOutput + + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); + writeFile(host, diagnostics, removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + } + + function getDeclarationOutput(synchronousDeclarationOutput: string, moduleElementDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[]) { + let appliedSyncOutputPos = 0; + let declarationOutput = ""; + // apply asynchronous additions to the synchronous output + forEach(moduleElementDeclarationEmitInfo, aliasEmitInfo => { + if (aliasEmitInfo.asynchronousOutput) { + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); + declarationOutput += getDeclarationOutput(aliasEmitInfo.asynchronousOutput, aliasEmitInfo.subModuleElementDeclarationEmitInfo); + appliedSyncOutputPos = aliasEmitInfo.outputPos; + } + }); + declarationOutput += synchronousDeclarationOutput.substring(appliedSyncOutputPos); + return declarationOutput; + } + } +} \ No newline at end of file diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 9169a7bf688..b4380f4d2de 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -9,7 +9,6 @@ module ts { Trailing_comma_not_allowed: { code: 1009, category: DiagnosticCategory.Error, key: "Trailing comma not allowed." }, Asterisk_Slash_expected: { code: 1010, category: DiagnosticCategory.Error, key: "'*/' expected." }, Unexpected_token: { code: 1012, category: DiagnosticCategory.Error, key: "Unexpected token." }, - Catch_clause_parameter_cannot_have_a_type_annotation: { code: 1013, category: DiagnosticCategory.Error, key: "Catch clause parameter cannot have a type annotation." }, A_rest_parameter_must_be_last_in_a_parameter_list: { code: 1014, category: DiagnosticCategory.Error, key: "A rest parameter must be last in a parameter list." }, Parameter_cannot_have_question_mark_and_initializer: { code: 1015, category: DiagnosticCategory.Error, key: "Parameter cannot have question mark and initializer." }, A_required_parameter_cannot_follow_an_optional_parameter: { code: 1016, category: DiagnosticCategory.Error, key: "A required parameter cannot follow an optional parameter." }, @@ -117,7 +116,6 @@ module ts { const_declarations_must_be_initialized: { code: 1155, category: DiagnosticCategory.Error, key: "'const' declarations must be initialized" }, const_declarations_can_only_be_declared_inside_a_block: { code: 1156, category: DiagnosticCategory.Error, key: "'const' declarations can only be declared inside a block." }, let_declarations_can_only_be_declared_inside_a_block: { code: 1157, category: DiagnosticCategory.Error, key: "'let' declarations can only be declared inside a block." }, - Tagged_templates_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1159, category: DiagnosticCategory.Error, key: "Tagged templates are only available when targeting ECMAScript 6 and higher." }, Unterminated_template_literal: { code: 1160, category: DiagnosticCategory.Error, key: "Unterminated template literal." }, Unterminated_regular_expression_literal: { code: 1161, category: DiagnosticCategory.Error, key: "Unterminated regular expression literal." }, An_object_member_cannot_be_declared_optional: { code: 1162, category: DiagnosticCategory.Error, key: "An object member cannot be declared optional." }, @@ -151,9 +149,26 @@ module ts { The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: { code: 1189, category: DiagnosticCategory.Error, key: "The variable declaration of a 'for...in' statement cannot have an initializer." }, The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: { code: 1190, category: DiagnosticCategory.Error, key: "The variable declaration of a 'for...of' statement cannot have an initializer." }, An_import_declaration_cannot_have_modifiers: { code: 1191, category: DiagnosticCategory.Error, key: "An import declaration cannot have modifiers." }, - External_module_0_has_no_default_export_or_export_assignment: { code: 1192, category: DiagnosticCategory.Error, key: "External module '{0}' has no default export or export assignment." }, + External_module_0_has_no_default_export: { code: 1192, category: DiagnosticCategory.Error, key: "External module '{0}' has no default export." }, An_export_declaration_cannot_have_modifiers: { code: 1193, category: DiagnosticCategory.Error, key: "An export declaration cannot have modifiers." }, Export_declarations_are_not_permitted_in_an_internal_module: { code: 1194, category: DiagnosticCategory.Error, key: "Export declarations are not permitted in an internal module." }, + Catch_clause_variable_name_must_be_an_identifier: { code: 1195, category: DiagnosticCategory.Error, key: "Catch clause variable name must be an identifier." }, + Catch_clause_variable_cannot_have_a_type_annotation: { code: 1196, category: DiagnosticCategory.Error, key: "Catch clause variable cannot have a type annotation." }, + Catch_clause_variable_cannot_have_an_initializer: { code: 1197, category: DiagnosticCategory.Error, key: "Catch clause variable cannot have an initializer." }, + An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: { code: 1198, category: DiagnosticCategory.Error, key: "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive." }, + Unterminated_Unicode_escape_sequence: { code: 1199, category: DiagnosticCategory.Error, key: "Unterminated Unicode escape sequence." }, + Line_terminator_not_permitted_before_arrow: { code: 1200, category: DiagnosticCategory.Error, key: "Line terminator not permitted before arrow." }, + A_type_annotation_on_an_export_statement_is_only_allowed_in_an_ambient_external_module_declaration: { code: 1201, category: DiagnosticCategory.Error, key: "A type annotation on an export statement is only allowed in an ambient external module declaration." }, + Import_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_or_import_d_from_mod_instead: { code: 1202, category: DiagnosticCategory.Error, key: "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead." }, + Export_assignment_cannot_be_used_when_targeting_ECMAScript_6_or_higher_Consider_using_export_default_instead: { code: 1203, category: DiagnosticCategory.Error, key: "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead." }, + Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher: { code: 1204, category: DiagnosticCategory.Error, key: "Cannot compile external modules into amd or commonjs when targeting es6 or higher." }, + Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." }, + Decorators_are_not_valid_here: { code: 1206, category: DiagnosticCategory.Error, key: "Decorators are not valid here." }, + Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." }, + Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided: { code: 1208, category: DiagnosticCategory.Error, key: "Cannot compile non-external modules when the '--separateCompilation' flag is provided." }, + Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, + Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." }, + A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" }, Duplicate_identifier_0: { code: 2300, category: DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, @@ -324,9 +339,24 @@ module ts { Property_0_does_not_exist_on_const_enum_1: { code: 2479, category: DiagnosticCategory.Error, key: "Property '{0}' does not exist on 'const' enum '{1}'." }, let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: { code: 2480, category: DiagnosticCategory.Error, key: "'let' is not allowed to be used as a name in 'let' or 'const' declarations." }, Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: { code: 2481, category: DiagnosticCategory.Error, key: "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'." }, - for_of_statements_are_only_available_when_targeting_ECMAScript_6_or_higher: { code: 2482, category: DiagnosticCategory.Error, key: "'for...of' statements are only available when targeting ECMAScript 6 or higher." }, The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: { code: 2483, category: DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot use a type annotation." }, Export_declaration_conflicts_with_exported_declaration_of_0: { code: 2484, category: DiagnosticCategory.Error, key: "Export declaration conflicts with exported declaration of '{0}'" }, + The_left_hand_side_of_a_for_of_statement_cannot_be_a_previously_defined_constant: { code: 2485, category: DiagnosticCategory.Error, key: "The left-hand side of a 'for...of' statement cannot be a previously defined constant." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_previously_defined_constant: { code: 2486, category: DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a previously defined constant." }, + Invalid_left_hand_side_in_for_of_statement: { code: 2487, category: DiagnosticCategory.Error, key: "Invalid left-hand side in 'for...of' statement." }, + The_right_hand_side_of_a_for_of_statement_must_have_a_Symbol_iterator_method_that_returns_an_iterator: { code: 2488, category: DiagnosticCategory.Error, key: "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator." }, + The_iterator_returned_by_the_right_hand_side_of_a_for_of_statement_must_have_a_next_method: { code: 2489, category: DiagnosticCategory.Error, key: "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method." }, + The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property: { code: 2490, category: DiagnosticCategory.Error, key: "The type returned by the 'next()' method of an iterator must have a 'value' property." }, + The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: { code: 2491, category: DiagnosticCategory.Error, key: "The left-hand side of a 'for...in' statement cannot be a destructuring pattern." }, + Cannot_redeclare_identifier_0_in_catch_clause: { code: 2492, category: DiagnosticCategory.Error, key: "Cannot redeclare identifier '{0}' in catch clause" }, + Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2: { code: 2493, category: DiagnosticCategory.Error, key: "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'." }, + Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: { code: 2494, category: DiagnosticCategory.Error, key: "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher." }, + Type_0_is_not_an_array_type_or_a_string_type: { code: 2495, category: DiagnosticCategory.Error, key: "Type '{0}' is not an array type or a string type." }, + The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 2496, category: DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, + External_module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct: { code: 2497, category: DiagnosticCategory.Error, key: "External module '{0}' resolves to a non-module entity and cannot be imported using this construct." }, + External_module_0_uses_export_and_cannot_be_used_with_export_Asterisk: { code: 2498, category: DiagnosticCategory.Error, key: "External module '{0}' uses 'export =' and cannot be used with 'export *'." }, + An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2499, category: DiagnosticCategory.Error, key: "An interface can only extend an identifier/qualified-name with optional type arguments." }, + A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: { code: 2500, category: DiagnosticCategory.Error, key: "A class can only implement an identifier/qualified-name with optional type arguments." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -396,6 +426,8 @@ module ts { Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: { code: 4077, category: DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'." }, Parameter_0_of_exported_function_has_or_is_using_private_name_1: { code: 4078, category: DiagnosticCategory.Error, key: "Parameter '{0}' of exported function has or is using private name '{1}'." }, Exported_type_alias_0_has_or_is_using_private_name_1: { code: 4081, category: DiagnosticCategory.Error, key: "Exported type alias '{0}' has or is using private name '{1}'." }, + Default_export_of_the_module_has_or_is_using_private_name_0: { code: 4082, category: DiagnosticCategory.Error, key: "Default export of the module has or is using private name '{0}'." }, + Loop_contains_block_scoped_variable_0_referenced_by_a_function_in_the_loop_This_is_only_supported_in_ECMAScript_6_or_higher: { code: 4091, category: DiagnosticCategory.Error, key: "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher." }, The_current_host_does_not_support_the_0_option: { code: 5001, category: DiagnosticCategory.Error, key: "The current host does not support the '{0}' option." }, Cannot_find_the_common_subdirectory_path_for_the_input_files: { code: 5009, category: DiagnosticCategory.Error, key: "Cannot find the common subdirectory path for the input files." }, Cannot_read_file_0_Colon_1: { code: 5012, category: DiagnosticCategory.Error, key: "Cannot read file '{0}': {1}" }, @@ -408,6 +440,11 @@ module ts { Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." }, Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." }, Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." }, + Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." }, + Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." }, + Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." }, + Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." }, + Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." }, Concatenate_and_emit_output_to_single_file: { code: 6001, category: DiagnosticCategory.Message, key: "Concatenate and emit output to single file." }, Generates_corresponding_d_ts_file: { code: 6002, category: DiagnosticCategory.Message, key: "Generates corresponding '.d.ts' file." }, Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: DiagnosticCategory.Message, key: "Specifies the location where debugger should locate map files instead of generated locations." }, @@ -451,6 +488,7 @@ module ts { File_0_must_have_extension_ts_or_d_ts: { code: 6054, category: DiagnosticCategory.Error, key: "File '{0}' must have extension '.ts' or '.d.ts'." }, Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: { code: 6055, category: DiagnosticCategory.Message, key: "Suppress noImplicitAny errors for indexing objects lacking index signatures." }, Do_not_emit_declarations_for_code_that_has_an_internal_annotation: { code: 6056, category: DiagnosticCategory.Message, key: "Do not emit declarations for code that has an '@internal' annotation." }, + Preserve_new_lines_when_emitting_code: { code: 6057, category: DiagnosticCategory.Message, key: "Preserve new-lines when emitting code." }, Variable_0_implicitly_has_an_1_type: { code: 7005, category: DiagnosticCategory.Error, key: "Variable '{0}' implicitly has an '{1}' type." }, Parameter_0_implicitly_has_an_1_type: { code: 7006, category: DiagnosticCategory.Error, key: "Parameter '{0}' implicitly has an '{1}' type." }, Member_0_implicitly_has_an_1_type: { code: 7008, category: DiagnosticCategory.Error, key: "Member '{0}' implicitly has an '{1}' type." }, @@ -469,9 +507,26 @@ module ts { Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: DiagnosticCategory.Error, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." }, You_cannot_rename_this_element: { code: 8000, category: DiagnosticCategory.Error, key: "You cannot rename this element." }, You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: DiagnosticCategory.Error, key: "You cannot rename elements that are defined in the standard TypeScript library." }, + import_can_only_be_used_in_a_ts_file: { code: 8002, category: DiagnosticCategory.Error, key: "'import ... =' can only be used in a .ts file." }, + export_can_only_be_used_in_a_ts_file: { code: 8003, category: DiagnosticCategory.Error, key: "'export=' can only be used in a .ts file." }, + type_parameter_declarations_can_only_be_used_in_a_ts_file: { code: 8004, category: DiagnosticCategory.Error, key: "'type parameter declarations' can only be used in a .ts file." }, + implements_clauses_can_only_be_used_in_a_ts_file: { code: 8005, category: DiagnosticCategory.Error, key: "'implements clauses' can only be used in a .ts file." }, + interface_declarations_can_only_be_used_in_a_ts_file: { code: 8006, category: DiagnosticCategory.Error, key: "'interface declarations' can only be used in a .ts file." }, + module_declarations_can_only_be_used_in_a_ts_file: { code: 8007, category: DiagnosticCategory.Error, key: "'module declarations' can only be used in a .ts file." }, + type_aliases_can_only_be_used_in_a_ts_file: { code: 8008, category: DiagnosticCategory.Error, key: "'type aliases' can only be used in a .ts file." }, + _0_can_only_be_used_in_a_ts_file: { code: 8009, category: DiagnosticCategory.Error, key: "'{0}' can only be used in a .ts file." }, + types_can_only_be_used_in_a_ts_file: { code: 8010, category: DiagnosticCategory.Error, key: "'types' can only be used in a .ts file." }, + type_arguments_can_only_be_used_in_a_ts_file: { code: 8011, category: DiagnosticCategory.Error, key: "'type arguments' can only be used in a .ts file." }, + parameter_modifiers_can_only_be_used_in_a_ts_file: { code: 8012, category: DiagnosticCategory.Error, key: "'parameter modifiers' can only be used in a .ts file." }, + can_only_be_used_in_a_ts_file: { code: 8013, category: DiagnosticCategory.Error, key: "'?' can only be used in a .ts file." }, + property_declarations_can_only_be_used_in_a_ts_file: { code: 8014, category: DiagnosticCategory.Error, key: "'property declarations' can only be used in a .ts file." }, + enum_declarations_can_only_be_used_in_a_ts_file: { code: 8015, category: DiagnosticCategory.Error, key: "'enum declarations' can only be used in a .ts file." }, + type_assertion_expressions_can_only_be_used_in_a_ts_file: { code: 8016, category: DiagnosticCategory.Error, key: "'type assertion expressions' can only be used in a .ts file." }, + decorators_can_only_be_used_in_a_ts_file: { code: 8017, category: DiagnosticCategory.Error, key: "'decorators' can only be used in a .ts file." }, yield_expressions_are_not_currently_supported: { code: 9000, category: DiagnosticCategory.Error, key: "'yield' expressions are not currently supported." }, Generators_are_not_currently_supported: { code: 9001, category: DiagnosticCategory.Error, key: "Generators are not currently supported." }, - The_arguments_object_cannot_be_referenced_in_an_arrow_function_Consider_using_a_standard_function_expression: { code: 9002, category: DiagnosticCategory.Error, key: "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression." }, - for_of_statements_are_not_currently_supported: { code: 9003, category: DiagnosticCategory.Error, key: "'for...of' statements are not currently supported." }, + Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { code: 9002, category: DiagnosticCategory.Error, key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." }, + class_expressions_are_not_currently_supported: { code: 9003, category: DiagnosticCategory.Error, key: "'class' expressions are not currently supported." }, + class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration: { code: 9004, category: DiagnosticCategory.Error, key: "'class' declarations are only supported directly inside a module or as a top level declaration." }, }; } \ No newline at end of file diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 38a67dc6ed4..fe349b78343 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -27,10 +27,6 @@ "category": "Error", "code": 1012 }, - "Catch clause parameter cannot have a type annotation.": { - "category": "Error", - "code": 1013 - }, "A rest parameter must be last in a parameter list.": { "category": "Error", "code": 1014 @@ -459,10 +455,6 @@ "category": "Error", "code": 1157 }, - "Tagged templates are only available when targeting ECMAScript 6 and higher.": { - "category": "Error", - "code": 1159 - }, "Unterminated template literal.": { "category": "Error", "code": 1160 @@ -595,7 +587,7 @@ "category": "Error", "code": 1191 }, - "External module '{0}' has no default export or export assignment.": { + "External module '{0}' has no default export.": { "category": "Error", "code": 1192 }, @@ -607,7 +599,74 @@ "category": "Error", "code": 1194 }, - + "Catch clause variable name must be an identifier.": { + "category": "Error", + "code": 1195 + }, + "Catch clause variable cannot have a type annotation.": { + "category": "Error", + "code": 1196 + }, + "Catch clause variable cannot have an initializer.": { + "category": "Error", + "code": 1197 + }, + "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.": { + "category": "Error", + "code": 1198 + }, + "Unterminated Unicode escape sequence.": { + "category": "Error", + "code": 1199 + }, + "Line terminator not permitted before arrow.": { + "category": "Error", + "code": 1200 + }, + "A type annotation on an export statement is only allowed in an ambient external module declaration.": { + "category": "Error", + "code": 1201 + }, + "Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"' or 'import d from \"mod\"' instead.": { + "category": "Error", + "code": 1202 + }, + "Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead.": { + "category": "Error", + "code": 1203 + }, + "Cannot compile external modules into amd or commonjs when targeting es6 or higher.": { + "category": "Error", + "code": 1204 + }, + "Decorators are only available when targeting ECMAScript 5 and higher.": { + "category": "Error", + "code": 1205 + }, + "Decorators are not valid here.": { + "category": "Error", + "code": 1206 + }, + "Decorators cannot be applied to multiple get/set accessors of the same name.": { + "category": "Error", + "code": 1207 + }, + "Cannot compile non-external modules when the '--separateCompilation' flag is provided.": { + "category": "Error", + "code": 1208 + }, + "Ambient const enums are not allowed when the '--separateCompilation' flag is provided.": { + "category": "Error", + "code": 1209 + }, + "Invalid use of '{0}'. Class definitions are automatically in strict mode.": { + "category": "Error", + "code": 1210 + }, + "A class declaration without the 'default' modifier must have a name": { + "category": "Error", + "code": 1211 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2300 @@ -1288,10 +1347,6 @@ "category": "Error", "code": 2481 }, - "'for...of' statements are only available when targeting ECMAScript 6 or higher.": { - "category": "Error", - "code": 2482 - }, "The left-hand side of a 'for...of' statement cannot use a type annotation.": { "category": "Error", "code": 2483 @@ -1300,6 +1355,70 @@ "category": "Error", "code": 2484 }, + "The left-hand side of a 'for...of' statement cannot be a previously defined constant.": { + "category": "Error", + "code": 2485 + }, + "The left-hand side of a 'for...in' statement cannot be a previously defined constant.": { + "category": "Error", + "code": 2486 + }, + "Invalid left-hand side in 'for...of' statement.": { + "category": "Error", + "code": 2487 + }, + "The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator.": { + "category": "Error", + "code": 2488 + }, + "The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method.": { + "category": "Error", + "code": 2489 + }, + "The type returned by the 'next()' method of an iterator must have a 'value' property.": { + "category": "Error", + "code": 2490 + }, + "The left-hand side of a 'for...in' statement cannot be a destructuring pattern.": { + "category": "Error", + "code": 2491 + }, + "Cannot redeclare identifier '{0}' in catch clause": { + "category": "Error", + "code": 2492 + }, + "Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'.": { + "category": "Error", + "code": 2493 + }, + "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher.": { + "category": "Error", + "code": 2494 + }, + "Type '{0}' is not an array type or a string type.": { + "category": "Error", + "code": 2495 + }, + "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression.": { + "category": "Error", + "code": 2496 + }, + "External module '{0}' resolves to a non-module entity and cannot be imported using this construct.": { + "category": "Error", + "code": 2497 + }, + "External module '{0}' uses 'export =' and cannot be used with 'export *'.": { + "category": "Error", + "code": 2498 + }, + "An interface can only extend an identifier/qualified-name with optional type arguments.": { + "category": "Error", + "code": 2499 + }, + "A class can only implement an identifier/qualified-name with optional type arguments.": { + "category": "Error", + "code": 2500 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", @@ -1576,7 +1695,15 @@ "Exported type alias '{0}' has or is using private name '{1}'.": { "category": "Error", "code": 4081 - }, + }, + "Default export of the module has or is using private name '{0}'.": { + "category": "Error", + "code": 4082 + }, + "Loop contains block-scoped variable '{0}' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher.": { + "category": "Error", + "code": 4091 + }, "The current host does not support the '{0}' option.": { "category": "Error", "code": 5001 @@ -1625,6 +1752,26 @@ "category": "Error", "code": 5042 }, + "Option 'sourceMap' cannot be specified with option 'separateCompilation'.": { + "category": "Error", + "code": 5043 + }, + "Option 'declaration' cannot be specified with option 'separateCompilation'.": { + "category": "Error", + "code": 5044 + }, + "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'.": { + "category": "Error", + "code": 5045 + }, + "Option 'out' cannot be specified with option 'separateCompilation'.": { + "category": "Error", + "code": 5046 + }, + "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher.": { + "category": "Error", + "code": 5047 + }, "Concatenate and emit output to single file.": { "category": "Message", "code": 6001 @@ -1797,6 +1944,10 @@ "category": "Message", "code": 6056 }, + "Preserve new-lines when emitting code.": { + "category": "Message", + "code": 6057 + }, "Variable '{0}' implicitly has an '{1}' type.": { "category": "Error", @@ -1870,6 +2021,71 @@ "category": "Error", "code": 8001 }, + "'import ... =' can only be used in a .ts file.": { + "category": "Error", + "code": 8002 + }, + "'export=' can only be used in a .ts file.": { + "category": "Error", + "code": 8003 + }, + "'type parameter declarations' can only be used in a .ts file.": { + "category": "Error", + "code": 8004 + }, + "'implements clauses' can only be used in a .ts file.": { + "category": "Error", + "code": 8005 + }, + "'interface declarations' can only be used in a .ts file.": { + "category": "Error", + "code": 8006 + }, + "'module declarations' can only be used in a .ts file.": { + "category": "Error", + "code": 8007 + }, + "'type aliases' can only be used in a .ts file.": { + "category": "Error", + "code": 8008 + }, + "'{0}' can only be used in a .ts file.": { + "category": "Error", + "code": 8009 + }, + "'types' can only be used in a .ts file.": { + "category": "Error", + "code": 8010 + }, + "'type arguments' can only be used in a .ts file.": { + "category": "Error", + "code": 8011 + }, + "'parameter modifiers' can only be used in a .ts file.": { + "category": "Error", + "code": 8012 + }, + "'?' can only be used in a .ts file.": { + "category": "Error", + "code": 8013 + }, + "'property declarations' can only be used in a .ts file.": { + "category": "Error", + "code": 8014 + }, + "'enum declarations' can only be used in a .ts file.": { + "category": "Error", + "code": 8015 + }, + "'type assertion expressions' can only be used in a .ts file.": { + "category": "Error", + "code": 8016 + }, + "'decorators' can only be used in a .ts file.": { + "category": "Error", + "code": 8017 + }, + "'yield' expressions are not currently supported.": { "category": "Error", "code": 9000 @@ -1878,12 +2094,16 @@ "category": "Error", "code": 9001 }, - "The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression.": { + "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses.": { "category": "Error", "code": 9002 }, - "'for...of' statements are not currently supported.": { + "'class' expressions are not currently supported.": { "category": "Error", "code": 9003 + }, + "'class' declarations are only supported directly inside a module or as a top level declaration.": { + "category": "Error", + "code": 9004 } } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index addb7234a97..5bff0ab321a 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1,1541 +1,38 @@ /// +/// module ts { - interface EmitTextWriter { - write(s: string): void; - writeTextOfNode(sourceFile: SourceFile, node: Node): void; - writeLine(): void; - increaseIndent(): void; - decreaseIndent(): void; - getText(): string; - rawWrite(s: string): void; - writeLiteral(s: string): void; - getTextPos(): number; - getLine(): number; - getColumn(): number; - getIndent(): number; - } - - interface ExternalImportInfo { - rootNode: ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration; - declarationNode?: ImportEqualsDeclaration | ImportClause | NamespaceImport; - namedImports?: NamedImports; - } - - interface SymbolAccessibilityDiagnostic { - errorNode: Node; - diagnosticMessage: DiagnosticMessage; - typeName?: DeclarationName; - } - - interface SynthesizedNode extends Node { - leadingCommentRanges?: CommentRange[]; - trailingCommentRanges?: CommentRange[]; - } - - type GetSymbolAccessibilityDiagnostic = (symbolAccesibilityResult: SymbolAccessiblityResult) => SymbolAccessibilityDiagnostic; - - interface EmitTextWriterWithSymbolWriter extends EmitTextWriter, SymbolWriter { - getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic; - } - - interface AliasDeclarationEmitInfo { - declaration: ImportEqualsDeclaration; - outputPos: number; - indent: number; - asynchronousOutput?: string; // If the output for alias was written asynchronously, the corresponding output - } - - interface DeclarationEmit { - reportedDeclarationError: boolean; - aliasDeclarationEmitInfo: AliasDeclarationEmitInfo[]; - synchronousDeclarationOutput: string; - referencePathsOutput: string; - } - - var indentStrings: string[] = ["", " "]; - export function getIndentString(level: number) { - if (indentStrings[level] === undefined) { - indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; - } - return indentStrings[level]; - } - - function getIndentSize() { - return indentStrings[1].length; - } - - export function shouldEmitToOwnFile(sourceFile: SourceFile, compilerOptions: CompilerOptions): boolean { - if (!isDeclarationFile(sourceFile)) { - if ((isExternalModule(sourceFile) || !compilerOptions.out) && !fileExtensionIs(sourceFile.fileName, ".js")) { - return true; - } - return false; - } - return false; + // represents one LexicalEnvironment frame to store unique generated names + interface ScopeFrame { + names: Map; + previous: ScopeFrame; } export function isExternalModuleOrDeclarationFile(sourceFile: SourceFile) { return isExternalModule(sourceFile) || isDeclarationFile(sourceFile); } - function createTextWriter(newLine: String): EmitTextWriter { - var output = ""; - var indent = 0; - var lineStart = true; - var lineCount = 0; - var linePos = 0; - - function write(s: string) { - if (s && s.length) { - if (lineStart) { - output += getIndentString(indent); - lineStart = false; - } - output += s; - } - } - - function rawWrite(s: string) { - if (s !== undefined) { - if (lineStart) { - lineStart = false; - } - output += s; - } - } - - function writeLiteral(s: string) { - if (s && s.length) { - write(s); - var lineStartsOfS = computeLineStarts(s); - if (lineStartsOfS.length > 1) { - lineCount = lineCount + lineStartsOfS.length - 1; - linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; - } - } - } - - function writeLine() { - if (!lineStart) { - output += newLine; - lineCount++; - linePos = output.length; - lineStart = true; - } - } - - function writeTextOfNode(sourceFile: SourceFile, node: Node) { - write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); - } - - return { - write, - rawWrite, - writeTextOfNode, - writeLiteral, - writeLine, - increaseIndent: () => indent++, - decreaseIndent: () => indent--, - getIndent: () => indent, - getTextPos: () => output.length, - getLine: () => lineCount + 1, - getColumn: () => lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1, - getText: () => output, - }; - } - - function getLineOfLocalPosition(currentSourceFile: SourceFile, pos: number) { - return getLineAndCharacterOfPosition(currentSourceFile, pos).line; - } - - function emitNewLineBeforeLeadingComments(currentSourceFile: SourceFile, writer: EmitTextWriter, node: TextRange, leadingComments: CommentRange[]) { - // If the leading comments start on different line than the start of node, write new line - if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && - getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { - writer.writeLine(); - } - } - - function emitComments(currentSourceFile: SourceFile, writer: EmitTextWriter, comments: CommentRange[], trailingSeparator: boolean, newLine: string, - writeComment: (currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string) => void) { - var emitLeadingSpace = !trailingSeparator; - forEach(comments, comment => { - if (emitLeadingSpace) { - writer.write(" "); - emitLeadingSpace = false; - } - writeComment(currentSourceFile, writer, comment, newLine); - if (comment.hasTrailingNewLine) { - writer.writeLine(); - } - else if (trailingSeparator) { - writer.write(" "); - } - else { - // Emit leading space to separate comment during next comment emit - emitLeadingSpace = true; - } - }); - } - - function writeCommentRange(currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string){ - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.asterisk) { - var firstCommentLineAndCharacter = getLineAndCharacterOfPosition(currentSourceFile, comment.pos); - var lineCount = getLineStarts(currentSourceFile).length; - var firstCommentLineIndent: number; - for (var pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { - var nextLineStart = (currentLine + 1) === lineCount - ? currentSourceFile.text.length + 1 - : getStartPositionOfLine(currentLine + 1, currentSourceFile); - - if (pos !== comment.pos) { - // If we are not emitting first line, we need to write the spaces to adjust the alignment - if (firstCommentLineIndent === undefined) { - firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); - } - - // These are number of spaces writer is going to write at current indent - var currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); - - // Number of spaces we want to be writing - // eg: Assume writer indent - // module m { - // /* starts at character 9 this is line 1 - // * starts at character pos 4 line --1 = 8 - 8 + 3 - // More left indented comment */ --2 = 8 - 8 + 2 - // class c { } - // } - // module m { - // /* this is line 1 -- Assume current writer indent 8 - // * line --3 = 8 - 4 + 5 - // More right indented comment */ --4 = 8 - 4 + 11 - // class c { } - // } - var spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); - if (spacesToEmit > 0) { - var numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); - var indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); - - // Write indent size string ( in eg 1: = "", 2: "" , 3: string with 8 spaces 4: string with 12 spaces - writer.rawWrite(indentSizeSpaceString); - - // Emit the single spaces (in eg: 1: 3 spaces, 2: 2 spaces, 3: 1 space, 4: 3 spaces) - while (numberOfSingleSpacesToEmit) { - writer.rawWrite(" "); - numberOfSingleSpacesToEmit--; - } - } - else { - // No spaces to emit write empty string - writer.rawWrite(""); - } - } - - // Write the comment line text - writeTrimmedCurrentLine(pos, nextLineStart); - - pos = nextLineStart; - } - } - else { - // Single line comment of style //.... - writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); - } - - function writeTrimmedCurrentLine(pos: number, nextLineStart: number) { - var end = Math.min(comment.end, nextLineStart - 1); - var currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); - if (currentLineText) { - // trimmed forward and ending spaces text - writer.write(currentLineText); - if (end !== comment.end) { - writer.writeLine(); - } - } - else { - // Empty string - make sure we write empty line - writer.writeLiteral(newLine); - } - } - - function calculateIndent(pos: number, end: number) { - var currentLineIndent = 0; - for (; pos < end && isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { - if (currentSourceFile.text.charCodeAt(pos) === CharacterCodes.tab) { - // Tabs = TabSize = indent size and go to next tabStop - currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); - } - else { - // Single space - currentLineIndent++; - } - } - - return currentLineIndent; - } - } - - function getFirstConstructorWithBody(node: ClassDeclaration): ConstructorDeclaration { - return forEach(node.members, member => { - if (member.kind === SyntaxKind.Constructor && nodeIsPresent((member).body)) { - return member; - } - }); - } - - function getAllAccessorDeclarations(declarations: NodeArray, accessor: AccessorDeclaration) { - var firstAccessor: AccessorDeclaration; - var getAccessor: AccessorDeclaration; - var setAccessor: AccessorDeclaration; - if (hasDynamicName(accessor)) { - firstAccessor = accessor; - if (accessor.kind === SyntaxKind.GetAccessor) { - getAccessor = accessor; - } - else if (accessor.kind === SyntaxKind.SetAccessor) { - setAccessor = accessor; - } - else { - Debug.fail("Accessor has wrong kind"); - } - } - else { - forEach(declarations, (member: Declaration) => { - if ((member.kind === SyntaxKind.GetAccessor || member.kind === SyntaxKind.SetAccessor) - && (member.flags & NodeFlags.Static) === (accessor.flags & NodeFlags.Static)) { - var memberName = getPropertyNameForPropertyNameNode(member.name); - var accessorName = getPropertyNameForPropertyNameNode(accessor.name); - if (memberName === accessorName) { - if (!firstAccessor) { - firstAccessor = member; - } - - if (member.kind === SyntaxKind.GetAccessor && !getAccessor) { - getAccessor = member; - } - - if (member.kind === SyntaxKind.SetAccessor && !setAccessor) { - setAccessor = member; - } - } - } - }); - } - return { - firstAccessor, - getAccessor, - setAccessor - }; - } - - function getSourceFilePathInNewDir(sourceFile: SourceFile, host: EmitHost, newDirPath: string) { - var sourceFilePath = getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); - sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); - return combinePaths(newDirPath, sourceFilePath); - } - - function getOwnEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost, extension: string){ - var compilerOptions = host.getCompilerOptions(); - if (compilerOptions.outDir) { - var emitOutputFilePathWithoutExtension = removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); - } - else { - var emitOutputFilePathWithoutExtension = removeFileExtension(sourceFile.fileName); - } - - return emitOutputFilePathWithoutExtension + extension; - } - - function writeFile(host: EmitHost, diagnostics: Diagnostic[], fileName: string, data: string, writeByteOrderMark: boolean) { - host.writeFile(fileName, data, writeByteOrderMark, hostErrorMessage => { - diagnostics.push(createCompilerDiagnostic(Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); - }); - } - - function emitDeclarations(host: EmitHost, resolver: EmitResolver, diagnostics: Diagnostic[], jsFilePath: string, root?: SourceFile): DeclarationEmit { - var newLine = host.getNewLine(); - var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || ScriptTarget.ES3; - - var write: (s: string) => void; - var writeLine: () => void; - var increaseIndent: () => void; - var decreaseIndent: () => void; - var writeTextOfNode: (sourceFile: SourceFile, node: Node) => void; - - var writer = createAndSetNewTextWriterWithSymbolWriter(); - - var enclosingDeclaration: Node; - var currentSourceFile: SourceFile; - var reportedDeclarationError = false; - - var emitJsDocComments = compilerOptions.removeComments ? function (declaration: Node) { } : writeJsDocComments; - var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - - var aliasDeclarationEmitInfo: AliasDeclarationEmitInfo[] = []; - - // Contains the reference paths that needs to go in the declaration file. - // Collecting this separately because reference paths need to be first thing in the declaration file - // and we could be collecting these paths from multiple files into single one with --out option - var referencePathsOutput = ""; - - if (root) { - // Emitting just a single file, so emit references in this file only - if (!compilerOptions.noResolve) { - var addedGlobalFileReference = false; - forEach(root.referencedFiles, fileReference => { - var referencedFile = tryResolveScriptReference(host, root, fileReference); - - // All the references that are not going to be part of same file - if (referencedFile && ((referencedFile.flags & NodeFlags.DeclarationFile) || // This is a declare file reference - shouldEmitToOwnFile(referencedFile, compilerOptions) || // This is referenced file is emitting its own js file - !addedGlobalFileReference)) { // Or the global out file corresponding to this reference was not added - - writeReferencePath(referencedFile); - if (!isExternalModuleOrDeclarationFile(referencedFile)) { - addedGlobalFileReference = true; - } - } - }); - } - - emitSourceFile(root); - } - else { - // Emit references corresponding to this file - var emittedReferencedFiles: SourceFile[] = []; - forEach(host.getSourceFiles(), sourceFile => { - if (!isExternalModuleOrDeclarationFile(sourceFile)) { - // Check what references need to be added - if (!compilerOptions.noResolve) { - forEach(sourceFile.referencedFiles, fileReference => { - var referencedFile = tryResolveScriptReference(host, sourceFile, fileReference); - - // If the reference file is a declaration file or an external module, emit that reference - if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) && - !contains(emittedReferencedFiles, referencedFile))) { // If the file reference was not already emitted - - writeReferencePath(referencedFile); - emittedReferencedFiles.push(referencedFile); - } - }); - } - - emitSourceFile(sourceFile); - } - }); - } - - return { - reportedDeclarationError, - aliasDeclarationEmitInfo, - synchronousDeclarationOutput: writer.getText(), - referencePathsOutput, - } - - function hasInternalAnnotation(range: CommentRange) { - var text = currentSourceFile.text; - var comment = text.substring(range.pos, range.end); - return comment.indexOf("@internal") >= 0; - } - - function stripInternal(node: Node) { - if (node) { - var leadingCommentRanges = getLeadingCommentRanges(currentSourceFile.text, node.pos); - if (forEach(leadingCommentRanges, hasInternalAnnotation)) { - return; - } - - emitNode(node); - } - } - - function createAndSetNewTextWriterWithSymbolWriter(): EmitTextWriterWithSymbolWriter { - var writer = createTextWriter(newLine); - writer.trackSymbol = trackSymbol; - writer.writeKeyword = writer.write; - writer.writeOperator = writer.write; - writer.writePunctuation = writer.write; - writer.writeSpace = writer.write; - writer.writeStringLiteral = writer.writeLiteral; - writer.writeParameter = writer.write; - writer.writeSymbol = writer.write; - setWriter(writer); - return writer; - } - - function setWriter(newWriter: EmitTextWriterWithSymbolWriter) { - writer = newWriter; - write = newWriter.write; - writeTextOfNode = newWriter.writeTextOfNode; - writeLine = newWriter.writeLine; - increaseIndent = newWriter.increaseIndent; - decreaseIndent = newWriter.decreaseIndent; - } - - function writeAsychronousImportEqualsDeclarations(importEqualsDeclarations: ImportEqualsDeclaration[]) { - var oldWriter = writer; - forEach(importEqualsDeclarations, aliasToWrite => { - var aliasEmitInfo = forEach(aliasDeclarationEmitInfo, declEmitInfo => declEmitInfo.declaration === aliasToWrite ? declEmitInfo : undefined); - // If the alias was marked as not visible when we saw its declaration, we would have saved the aliasEmitInfo, but if we haven't yet visited the alias declaration - // then we don't need to write it at this point. We will write it when we actually see its declaration - // Eg. - // export function bar(a: foo.Foo) { } - // import foo = require("foo"); - // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, - // we would write alias foo declaration when we visit it since it would now be marked as visible - if (aliasEmitInfo) { - createAndSetNewTextWriterWithSymbolWriter(); - for (var declarationIndent = aliasEmitInfo.indent; declarationIndent; declarationIndent--) { - increaseIndent(); - } - writeImportEqualsDeclaration(aliasToWrite); - aliasEmitInfo.asynchronousOutput = writer.getText(); - } - }); - setWriter(oldWriter); - } - - function handleSymbolAccessibilityError(symbolAccesibilityResult: SymbolAccessiblityResult) { - if (symbolAccesibilityResult.accessibility === SymbolAccessibility.Accessible) { - // write the aliases - if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) { - writeAsychronousImportEqualsDeclarations(symbolAccesibilityResult.aliasesToMakeVisible); - } - } - else { - // Report error - reportedDeclarationError = true; - var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); - if (errorInfo) { - if (errorInfo.typeName) { - diagnostics.push(createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, - errorInfo.diagnosticMessage, - getSourceTextOfNodeFromSourceFile(currentSourceFile, errorInfo.typeName), - symbolAccesibilityResult.errorSymbolName, - symbolAccesibilityResult.errorModuleName)); - } - else { - diagnostics.push(createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, - errorInfo.diagnosticMessage, - symbolAccesibilityResult.errorSymbolName, - symbolAccesibilityResult.errorModuleName)); - } - } - } - } - - function trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) { - handleSymbolAccessibilityError(resolver.isSymbolAccessible(symbol, enclosingDeclaration, meaning)); - } - - function writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, type: TypeNode | StringLiteralExpression, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { - writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; - write(": "); - if (type) { - // Write the type - emitType(type); - } - else { - resolver.writeTypeOfDeclaration(declaration, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); - } - } - - function writeReturnTypeAtSignature(signature: SignatureDeclaration, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { - writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; - write(": "); - if (signature.type) { - // Write the type - emitType(signature.type); - } - else { - resolver.writeReturnTypeOfSignatureDeclaration(signature, enclosingDeclaration, TypeFormatFlags.UseTypeOfFunction, writer); - } - } - - function emitLines(nodes: Node[]) { - for (var i = 0, n = nodes.length; i < n; i++) { - emit(nodes[i]); - } - } - - function emitSeparatedList(nodes: Node[], separator: string, eachNodeEmitFn: (node: Node) => void) { - var currentWriterPos = writer.getTextPos(); - for (var i = 0, n = nodes.length; i < n; i++) { - if (currentWriterPos !== writer.getTextPos()) { - write(separator); - } - currentWriterPos = writer.getTextPos(); - eachNodeEmitFn(nodes[i]); - } - } - - function emitCommaList(nodes: Node[], eachNodeEmitFn: (node: Node) => void) { - emitSeparatedList(nodes, ", ", eachNodeEmitFn); - } - - function writeJsDocComments(declaration: Node) { - if (declaration) { - var jsDocComments = getJsDocComments(declaration, currentSourceFile); - emitNewLineBeforeLeadingComments(currentSourceFile, writer, declaration, jsDocComments); - // jsDoc comments are emitted at /*leading comment1 */space/*leading comment*/space - emitComments(currentSourceFile, writer, jsDocComments, /*trailingSeparator*/ true, newLine, writeCommentRange); - } - } - - function emitTypeWithNewGetSymbolAccessibilityDiagnostic(type: TypeNode | EntityName, getSymbolAccessibilityDiagnostic: GetSymbolAccessibilityDiagnostic) { - writer.getSymbolAccessibilityDiagnostic = getSymbolAccessibilityDiagnostic; - emitType(type); - } - - function emitType(type: TypeNode | StringLiteralExpression | Identifier | QualifiedName) { - switch (type.kind) { - case SyntaxKind.AnyKeyword: - case SyntaxKind.StringKeyword: - case SyntaxKind.NumberKeyword: - case SyntaxKind.BooleanKeyword: - case SyntaxKind.SymbolKeyword: - case SyntaxKind.VoidKeyword: - case SyntaxKind.StringLiteral: - return writeTextOfNode(currentSourceFile, type); - case SyntaxKind.TypeReference: - return emitTypeReference(type); - case SyntaxKind.TypeQuery: - return emitTypeQuery(type); - case SyntaxKind.ArrayType: - return emitArrayType(type); - case SyntaxKind.TupleType: - return emitTupleType(type); - case SyntaxKind.UnionType: - return emitUnionType(type); - case SyntaxKind.ParenthesizedType: - return emitParenType(type); - case SyntaxKind.FunctionType: - case SyntaxKind.ConstructorType: - return emitSignatureDeclarationWithJsDocComments(type); - case SyntaxKind.TypeLiteral: - return emitTypeLiteral(type); - case SyntaxKind.Identifier: - return emitEntityName(type); - case SyntaxKind.QualifiedName: - return emitEntityName(type); - default: - Debug.fail("Unknown type annotation: " + type.kind); - } - - function emitEntityName(entityName: EntityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, - // Aliases can be written asynchronously so use correct enclosing declaration - entityName.parent.kind === SyntaxKind.ImportEqualsDeclaration ? entityName.parent : enclosingDeclaration); - - handleSymbolAccessibilityError(visibilityResult); - writeEntityName(entityName); - - function writeEntityName(entityName: EntityName) { - if (entityName.kind === SyntaxKind.Identifier) { - writeTextOfNode(currentSourceFile, entityName); - } - else { - var qualifiedName = entityName; - writeEntityName(qualifiedName.left); - write("."); - writeTextOfNode(currentSourceFile, qualifiedName.right); - } - } - } - - function emitTypeReference(type: TypeReferenceNode) { - emitEntityName(type.typeName); - if (type.typeArguments) { - write("<"); - emitCommaList(type.typeArguments, emitType); - write(">"); - } - } - - function emitTypeQuery(type: TypeQueryNode) { - write("typeof "); - emitEntityName(type.exprName); - } - - function emitArrayType(type: ArrayTypeNode) { - emitType(type.elementType); - write("[]"); - } - - function emitTupleType(type: TupleTypeNode) { - write("["); - emitCommaList(type.elementTypes, emitType); - write("]"); - } - - function emitUnionType(type: UnionTypeNode) { - emitSeparatedList(type.types, " | ", emitType); - } - - function emitParenType(type: ParenthesizedTypeNode) { - write("("); - emitType(type.type); - write(")"); - } - - function emitTypeLiteral(type: TypeLiteralNode) { - write("{"); - if (type.members.length) { - writeLine(); - increaseIndent(); - // write members - emitLines(type.members); - decreaseIndent(); - } - write("}"); - } - } - - function emitSourceFile(node: SourceFile) { - currentSourceFile = node; - enclosingDeclaration = node; - emitLines(node.statements); - } - - function emitExportAssignment(node: ExportAssignment) { - write("export = "); - writeTextOfNode(currentSourceFile, node.exportName); - write(";"); - writeLine(); - } - - function emitModuleElementDeclarationFlags(node: Node) { - // If the node is parented in the current source file we need to emit export declare or just export - if (node.parent === currentSourceFile) { - // If the node is exported - if (node.flags & NodeFlags.Export) { - write("export "); - } - - if (node.kind !== SyntaxKind.InterfaceDeclaration) { - write("declare "); - } - } - } - - function emitClassMemberDeclarationFlags(node: Declaration) { - if (node.flags & NodeFlags.Private) { - write("private "); - } - else if (node.flags & NodeFlags.Protected) { - write("protected "); - } - - if (node.flags & NodeFlags.Static) { - write("static "); - } - } - - function emitImportEqualsDeclaration(node: ImportEqualsDeclaration) { - var nodeEmitInfo = { - declaration: node, - outputPos: writer.getTextPos(), - indent: writer.getIndent(), - hasWritten: resolver.isDeclarationVisible(node) - }; - aliasDeclarationEmitInfo.push(nodeEmitInfo); - if (nodeEmitInfo.hasWritten) { - writeImportEqualsDeclaration(node); - } - } - - function writeImportEqualsDeclaration(node: ImportEqualsDeclaration) { - // note usage of writer. methods instead of aliases created, just to make sure we are using - // correct writer especially to handle asynchronous alias writing - emitJsDocComments(node); - if (node.flags & NodeFlags.Export) { - write("export "); - } - write("import "); - writeTextOfNode(currentSourceFile, node.name); - write(" = "); - if (isInternalModuleImportEqualsDeclaration(node)) { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.moduleReference, getImportEntityNameVisibilityError); - write(";"); - } - else { - write("require("); - writeTextOfNode(currentSourceFile, getExternalModuleImportEqualsDeclarationExpression(node)); - write(");"); - } - writer.writeLine(); - - function getImportEntityNameVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - return { - diagnosticMessage: Diagnostics.Import_declaration_0_is_using_private_name_1, - errorNode: node, - typeName: node.name - }; - } - } - - function emitModuleDeclaration(node: ModuleDeclaration) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("module "); - writeTextOfNode(currentSourceFile, node.name); - while (node.body.kind !== SyntaxKind.ModuleBlock) { - node = node.body; - write("."); - writeTextOfNode(currentSourceFile, node.name); - } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - write(" {"); - writeLine(); - increaseIndent(); - emitLines((node.body).statements); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } - } - - function emitTypeAliasDeclaration(node: TypeAliasDeclaration) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("type "); - writeTextOfNode(currentSourceFile, node.name); - write(" = "); - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.type, getTypeAliasDeclarationVisibilityError); - write(";"); - writeLine(); - } - function getTypeAliasDeclarationVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - return { - diagnosticMessage: Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, - errorNode: node.type, - typeName: node.name - }; - } - } - - function emitEnumDeclaration(node: EnumDeclaration) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (isConst(node)) { - write("const ") - } - write("enum "); - writeTextOfNode(currentSourceFile, node.name); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - } - } - - function emitEnumMemberDeclaration(node: EnumMember) { - emitJsDocComments(node); - writeTextOfNode(currentSourceFile, node.name); - var enumMemberValue = resolver.getConstantValue(node); - if (enumMemberValue !== undefined) { - write(" = "); - write(enumMemberValue.toString()); - } - write(","); - writeLine(); - } - - function isPrivateMethodTypeParameter(node: TypeParameterDeclaration) { - return node.parent.kind === SyntaxKind.MethodDeclaration && (node.parent.flags & NodeFlags.Private); - } - - function emitTypeParameters(typeParameters: TypeParameterDeclaration[]) { - function emitTypeParameter(node: TypeParameterDeclaration) { - increaseIndent(); - emitJsDocComments(node); - decreaseIndent(); - writeTextOfNode(currentSourceFile, node.name); - // If there is constraint present and this is not a type parameter of the private method emit the constraint - if (node.constraint && !isPrivateMethodTypeParameter(node)) { - write(" extends "); - if (node.parent.kind === SyntaxKind.FunctionType || - node.parent.kind === SyntaxKind.ConstructorType || - (node.parent.parent && node.parent.parent.kind === SyntaxKind.TypeLiteral)) { - Debug.assert(node.parent.kind === SyntaxKind.MethodDeclaration || - node.parent.kind === SyntaxKind.MethodSignature || - node.parent.kind === SyntaxKind.FunctionType || - node.parent.kind === SyntaxKind.ConstructorType || - node.parent.kind === SyntaxKind.CallSignature || - node.parent.kind === SyntaxKind.ConstructSignature); - emitType(node.constraint); - } - else { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node.constraint, getTypeParameterConstraintVisibilityError); - } - } - - function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - // Type parameter constraints are named by user so we should always be able to name it - var diagnosticMessage: DiagnosticMessage; - switch (node.parent.kind) { - case SyntaxKind.ClassDeclaration: - diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; - break; - - case SyntaxKind.InterfaceDeclaration: - diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; - break; - - case SyntaxKind.ConstructSignature: - diagnosticMessage = Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - - case SyntaxKind.CallSignature: - diagnosticMessage = Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - if (node.parent.flags & NodeFlags.Static) { - diagnosticMessage = Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { - diagnosticMessage = Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; - } - break; - - case SyntaxKind.FunctionDeclaration: - diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; - break; - - default: - Debug.fail("This is unknown parent for type parameter: " + node.parent.kind); - } - - return { - diagnosticMessage, - errorNode: node, - typeName: node.name - }; - } - } - - if (typeParameters) { - write("<"); - emitCommaList(typeParameters, emitTypeParameter); - write(">"); - } - } - - function emitHeritageClause(typeReferences: TypeReferenceNode[], isImplementsList: boolean) { - if (typeReferences) { - write(isImplementsList ? " implements " : " extends "); - emitCommaList(typeReferences, emitTypeOfTypeReference); - } - - function emitTypeOfTypeReference(node: TypeReferenceNode) { - emitTypeWithNewGetSymbolAccessibilityDiagnostic(node, getHeritageClauseVisibilityError); - - function getHeritageClauseVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - var diagnosticMessage: DiagnosticMessage; - // Heritage clause is written by user so it can always be named - if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { - // Class or Interface implemented/extended is inaccessible - diagnosticMessage = isImplementsList ? - Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : - Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; - } - else { - // interface is inaccessible - diagnosticMessage = Diagnostics.Extends_clause_of_exported_interface_0_has_or_is_using_private_name_1; - } - - return { - diagnosticMessage, - errorNode: node, - typeName: (node.parent.parent).name - }; - } - } - } - - function emitClassDeclaration(node: ClassDeclaration) { - function emitParameterProperties(constructorDeclaration: ConstructorDeclaration) { - if (constructorDeclaration) { - forEach(constructorDeclaration.parameters, param => { - if (param.flags & NodeFlags.AccessibilityModifier) { - emitPropertyDeclaration(param); - } - }); - } - } - - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("class "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - var baseTypeNode = getClassBaseTypeNode(node); - if (baseTypeNode) { - emitHeritageClause([baseTypeNode], /*isImplementsList*/ false); - } - emitHeritageClause(getClassImplementedTypeNodes(node), /*isImplementsList*/ true); - write(" {"); - writeLine(); - increaseIndent(); - emitParameterProperties(getFirstConstructorWithBody(node)); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } - } - - function emitInterfaceDeclaration(node: InterfaceDeclaration) { - if (resolver.isDeclarationVisible(node)) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - write("interface "); - writeTextOfNode(currentSourceFile, node.name); - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - emitTypeParameters(node.typeParameters); - emitHeritageClause(getInterfaceBaseTypeNodes(node), /*isImplementsList*/ false); - write(" {"); - writeLine(); - increaseIndent(); - emitLines(node.members); - decreaseIndent(); - write("}"); - writeLine(); - enclosingDeclaration = prevEnclosingDeclaration; - } - } - - function emitPropertyDeclaration(node: Declaration) { - if (hasDynamicName(node)) { - return; - } - - emitJsDocComments(node); - emitClassMemberDeclarationFlags(node); - emitVariableDeclaration(node); - write(";"); - writeLine(); - } - - function emitVariableDeclaration(node: VariableDeclaration) { - // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted - // so there is no check needed to see if declaration is visible - if (node.kind !== SyntaxKind.VariableDeclaration || resolver.isDeclarationVisible(node)) { - // If this node is a computed name, it can only be a symbol, because we've already skipped - // it if it's not a well known symbol. In that case, the text of the name will be exactly - // what we want, namely the name expression enclosed in brackets. - writeTextOfNode(currentSourceFile, node.name); - // If optional property emit ? - if ((node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) && hasQuestionToken(node)) { - write("?"); - } - if ((node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) && node.parent.kind === SyntaxKind.TypeLiteral) { - emitTypeOfVariableDeclarationFromTypeLiteral(node); - } - else if (!(node.flags & NodeFlags.Private)) { - writeTypeOfDeclaration(node, node.type, getVariableDeclarationTypeVisibilityError); - } - } - - function getVariableDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - var diagnosticMessage: DiagnosticMessage; - if (node.kind === SyntaxKind.VariableDeclaration) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; - } - // This check is to ensure we don't report error on constructor parameter property as that error would be reported during parameter emit - else if (node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature) { - // TODO(jfreeman): Deal with computed properties in error reporting. - if (node.flags & NodeFlags.Static) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.kind === SyntaxKind.ClassDeclaration) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1; - } - else { - // Interfaces cannot have types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; - } - } - - return diagnosticMessage !== undefined ? { - diagnosticMessage, - errorNode: node, - typeName: node.name - } : undefined; - } - } - - function emitTypeOfVariableDeclarationFromTypeLiteral(node: VariableLikeDeclaration) { - // if this is property of type literal, - // or is parameter of method/call/construct/index signature of type literal - // emit only if type is specified - if (node.type) { - write(": "); - emitType(node.type); - } - } - - function emitVariableStatement(node: VariableStatement) { - var hasDeclarationWithEmit = forEach(node.declarationList.declarations, varDeclaration => resolver.isDeclarationVisible(varDeclaration)); - if (hasDeclarationWithEmit) { - emitJsDocComments(node); - emitModuleElementDeclarationFlags(node); - if (isLet(node.declarationList)) { - write("let "); - } - else if (isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } - emitCommaList(node.declarationList.declarations, emitVariableDeclaration); - write(";"); - writeLine(); - } - } - - function emitAccessorDeclaration(node: AccessorDeclaration) { - if (hasDynamicName(node)) { - return; - } - - var accessors = getAllAccessorDeclarations((node.parent).members, node); - if (node === accessors.firstAccessor) { - emitJsDocComments(accessors.getAccessor); - emitJsDocComments(accessors.setAccessor); - emitClassMemberDeclarationFlags(node); - writeTextOfNode(currentSourceFile, node.name); - if (!(node.flags & NodeFlags.Private)) { - var accessorWithTypeAnnotation: AccessorDeclaration = node; - var type = getTypeAnnotationFromAccessor(node); - if (!type) { - // couldn't get type for the first accessor, try the another one - var anotherAccessor = node.kind === SyntaxKind.GetAccessor ? accessors.setAccessor : accessors.getAccessor; - type = getTypeAnnotationFromAccessor(anotherAccessor); - if (type) { - accessorWithTypeAnnotation = anotherAccessor; - } - } - writeTypeOfDeclaration(node, type, getAccessorDeclarationTypeVisibilityError); - } - write(";"); - writeLine(); - } - - function getTypeAnnotationFromAccessor(accessor: AccessorDeclaration): TypeNode | StringLiteralExpression { - if (accessor) { - return accessor.kind === SyntaxKind.GetAccessor - ? accessor.type // Getter - return type - : accessor.parameters.length > 0 - ? accessor.parameters[0].type // Setter parameter type - : undefined; - } - } - - function getAccessorDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - var diagnosticMessage: DiagnosticMessage; - if (accessorWithTypeAnnotation.kind === SyntaxKind.SetAccessor) { - // Setters have to have type named and cannot infer it so, the type should always be named - if (accessorWithTypeAnnotation.parent.flags & NodeFlags.Static) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1; - } - return { - diagnosticMessage, - errorNode: accessorWithTypeAnnotation.parameters[0], - // TODO(jfreeman): Investigate why we are passing node.name instead of node.parameters[0].name - typeName: accessorWithTypeAnnotation.name - }; - } - else { - if (accessorWithTypeAnnotation.flags & NodeFlags.Static) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : - Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0; - } - else { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : - Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0; - } - return { - diagnosticMessage, - errorNode: accessorWithTypeAnnotation.name, - typeName: undefined - }; - } - } - } - - function emitFunctionDeclaration(node: FunctionLikeDeclaration) { - if (hasDynamicName(node)) { - return; - } - - // If we are emitting Method/Constructor it isn't moduleElement and hence already determined to be emitting - // so no need to verify if the declaration is visible - if ((node.kind !== SyntaxKind.FunctionDeclaration || resolver.isDeclarationVisible(node)) && - !resolver.isImplementationOfOverload(node)) { - emitJsDocComments(node); - if (node.kind === SyntaxKind.FunctionDeclaration) { - emitModuleElementDeclarationFlags(node); - } - else if (node.kind === SyntaxKind.MethodDeclaration) { - emitClassMemberDeclarationFlags(node); - } - if (node.kind === SyntaxKind.FunctionDeclaration) { - write("function "); - writeTextOfNode(currentSourceFile, node.name); - } - else if (node.kind === SyntaxKind.Constructor) { - write("constructor"); - } - else { - writeTextOfNode(currentSourceFile, node.name); - if (hasQuestionToken(node)) { - write("?"); - } - } - emitSignatureDeclaration(node); - } - } - - function emitSignatureDeclarationWithJsDocComments(node: SignatureDeclaration) { - emitJsDocComments(node); - emitSignatureDeclaration(node); - } - - function emitSignatureDeclaration(node: SignatureDeclaration) { - // Construct signature or constructor type write new Signature - if (node.kind === SyntaxKind.ConstructSignature || node.kind === SyntaxKind.ConstructorType) { - write("new "); - } - emitTypeParameters(node.typeParameters); - if (node.kind === SyntaxKind.IndexSignature) { - write("["); - } - else { - write("("); - } - - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; - - // Parameters - emitCommaList(node.parameters, emitParameterDeclaration); - - if (node.kind === SyntaxKind.IndexSignature) { - write("]"); - } - else { - write(")"); - } - - // If this is not a constructor and is not private, emit the return type - var isFunctionTypeOrConstructorType = node.kind === SyntaxKind.FunctionType || node.kind === SyntaxKind.ConstructorType; - if (isFunctionTypeOrConstructorType || node.parent.kind === SyntaxKind.TypeLiteral) { - // Emit type literal signature return type only if specified - if (node.type) { - write(isFunctionTypeOrConstructorType ? " => " : ": "); - emitType(node.type); - } - } - else if (node.kind !== SyntaxKind.Constructor && !(node.flags & NodeFlags.Private)) { - writeReturnTypeAtSignature(node, getReturnTypeVisibilityError); - } - - enclosingDeclaration = prevEnclosingDeclaration; - - if (!isFunctionTypeOrConstructorType) { - write(";"); - writeLine(); - } - - function getReturnTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - var diagnosticMessage: DiagnosticMessage; - switch (node.kind) { - case SyntaxKind.ConstructSignature: - // Interfaces cannot have return types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - - case SyntaxKind.CallSignature: - // Interfaces cannot have return types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - - case SyntaxKind.IndexSignature: - // Interfaces cannot have return types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; - break; - - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - if (node.flags & NodeFlags.Static) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : - Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; - } - else if (node.parent.kind === SyntaxKind.ClassDeclaration) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : - Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0; - } - else { - // Interfaces cannot have return types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; - } - break; - - case SyntaxKind.FunctionDeclaration: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : - Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : - Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; - break; - - default: - Debug.fail("This is unknown kind for signature: " + node.kind); - } - - return { - diagnosticMessage, - errorNode: node.name || node, - }; - } - } - - function emitParameterDeclaration(node: ParameterDeclaration) { - increaseIndent(); - emitJsDocComments(node); - if (node.dotDotDotToken) { - write("..."); - } - if (isBindingPattern(node.name)) { - write("_" + indexOf((node.parent).parameters, node)); - } - else { - writeTextOfNode(currentSourceFile, node.name); - } - if (node.initializer || hasQuestionToken(node)) { - write("?"); - } - decreaseIndent(); - - if (node.parent.kind === SyntaxKind.FunctionType || - node.parent.kind === SyntaxKind.ConstructorType || - node.parent.parent.kind === SyntaxKind.TypeLiteral) { - emitTypeOfVariableDeclarationFromTypeLiteral(node); - } - else if (!(node.parent.flags & NodeFlags.Private)) { - writeTypeOfDeclaration(node, node.type, getParameterDeclarationTypeVisibilityError); - } - - function getParameterDeclarationTypeVisibilityError(symbolAccesibilityResult: SymbolAccessiblityResult): SymbolAccessibilityDiagnostic { - var diagnosticMessage: DiagnosticMessage; - switch (node.parent.kind) { - case SyntaxKind.Constructor: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; - break; - - case SyntaxKind.ConstructSignature: - // Interfaces cannot have parameter types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - - case SyntaxKind.CallSignature: - // Interfaces cannot have parameter types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; - break; - - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - if (node.parent.flags & NodeFlags.Static) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; - } - else if (node.parent.parent.kind === SyntaxKind.ClassDeclaration) { - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; - } - else { - // Interfaces cannot have parameter types that cannot be named - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; - } - break; - - case SyntaxKind.FunctionDeclaration: - diagnosticMessage = symbolAccesibilityResult.errorModuleName ? - symbolAccesibilityResult.accessibility === SymbolAccessibility.CannotBeNamed ? - Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : - Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : - Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; - break; - - default: - Debug.fail("This is unknown parent for parameter: " + node.parent.kind); - } - - return { - diagnosticMessage, - errorNode: node, - typeName: node.name - }; - } - } - - function emitNode(node: Node) { - switch (node.kind) { - case SyntaxKind.Constructor: - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - return emitFunctionDeclaration(node); - case SyntaxKind.ConstructSignature: - case SyntaxKind.CallSignature: - case SyntaxKind.IndexSignature: - return emitSignatureDeclarationWithJsDocComments(node); - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - return emitAccessorDeclaration(node); - case SyntaxKind.VariableStatement: - return emitVariableStatement(node); - case SyntaxKind.PropertyDeclaration: - case SyntaxKind.PropertySignature: - return emitPropertyDeclaration(node); - case SyntaxKind.InterfaceDeclaration: - return emitInterfaceDeclaration(node); - case SyntaxKind.ClassDeclaration: - return emitClassDeclaration(node); - case SyntaxKind.TypeAliasDeclaration: - return emitTypeAliasDeclaration(node); - case SyntaxKind.EnumMember: - return emitEnumMemberDeclaration(node); - case SyntaxKind.EnumDeclaration: - return emitEnumDeclaration(node); - case SyntaxKind.ModuleDeclaration: - return emitModuleDeclaration(node); - case SyntaxKind.ImportEqualsDeclaration: - return emitImportEqualsDeclaration(node); - case SyntaxKind.ExportAssignment: - return emitExportAssignment(node); - case SyntaxKind.SourceFile: - return emitSourceFile(node); - } - } - - function writeReferencePath(referencedFile: SourceFile) { - var declFileName = referencedFile.flags & NodeFlags.DeclarationFile - ? referencedFile.fileName // Declaration file, use declaration file name - : shouldEmitToOwnFile(referencedFile, compilerOptions) - ? getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") // Own output file so get the .d.ts file - : removeFileExtension(compilerOptions.out) + ".d.ts";// Global out file - - declFileName = getRelativePathToDirectoryOrUrl( - getDirectoryPath(normalizeSlashes(jsFilePath)), - declFileName, - host.getCurrentDirectory(), - host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ false); - - referencePathsOutput += "/// " + newLine; - } - } - - export function getDeclarationDiagnostics(host: EmitHost, resolver: EmitResolver, targetSourceFile: SourceFile): Diagnostic[] { - var diagnostics: Diagnostic[] = []; - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + // Flags enum to track count of temp variables and a few dedicated names + const enum TempFlags { + Auto = 0x00000000, // No preferred name + CountMask = 0x0FFFFFFF, // Temp variable counter + _i = 0x10000000, // Use/preference flag for '_i' + _n = 0x20000000, // Use/preference flag for '_n' } // @internal // targetSourceFile is when users only want one file in entire project to be emitted. This is used in compileOnSave feature export function emitFiles(resolver: EmitResolver, host: EmitHost, targetSourceFile: SourceFile): EmitResult { - var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || ScriptTarget.ES3; - var sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap ? [] : undefined; - var diagnostics: Diagnostic[] = []; - var newLine = host.getNewLine(); + let compilerOptions = host.getCompilerOptions(); + let languageVersion = compilerOptions.target || ScriptTarget.ES3; + let sourceMapDataList: SourceMapData[] = compilerOptions.sourceMap ? [] : undefined; + let diagnostics: Diagnostic[] = []; + let newLine = host.getNewLine(); if (targetSourceFile === undefined) { forEach(host.getSourceFiles(), sourceFile => { if (shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, ".js"); + let jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, ".js"); emitFile(jsFilePath, sourceFile); } }); @@ -1547,7 +44,7 @@ module ts { else { // targetSourceFile is specified (e.g calling emitter from language service or calling getSemanticDiagnostic from language service) if (shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); + let jsFilePath = getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); emitFile(jsFilePath, targetSourceFile); } else if (!isDeclarationFile(targetSourceFile) && compilerOptions.out) { @@ -1564,51 +61,66 @@ module ts { sourceMaps: sourceMapDataList }; + function isNodeDescendentOf(node: Node, ancestor: Node): boolean { + while (node) { + if (node === ancestor) return true; + node = node.parent; + } + return false; + } + + function isUniqueLocalName(name: string, container: Node): boolean { + for (let node = container; isNodeDescendentOf(node, container); node = node.nextContainer) { + if (node.locals && hasProperty(node.locals, name)) { + // We conservatively include alias symbols to cover cases where they're emitted as locals + if (node.locals[name].flags & (SymbolFlags.Value | SymbolFlags.ExportValue | SymbolFlags.Alias)) { + return false; + } + } + } + return true; + } + function emitJavaScript(jsFilePath: string, root?: SourceFile) { - var writer = createTextWriter(newLine); - var write = writer.write; - var writeTextOfNode = writer.writeTextOfNode; - var writeLine = writer.writeLine; - var increaseIndent = writer.increaseIndent; - var decreaseIndent = writer.decreaseIndent; + let writer = createTextWriter(newLine); + let write = writer.write; + let writeTextOfNode = writer.writeTextOfNode; + let writeLine = writer.writeLine; + let increaseIndent = writer.increaseIndent; + let decreaseIndent = writer.decreaseIndent; - var currentSourceFile: SourceFile; + let currentSourceFile: SourceFile; - var extendsEmitted = false; - var tempCount = 0; - var tempVariables: Identifier[]; - var tempParameters: Identifier[]; - var externalImports: ExternalImportInfo[]; - var exportSpecifiers: Map; + let generatedNameSet: Map = {}; + let nodeToGeneratedName: string[] = []; + let blockScopedVariableToGeneratedName: string[]; + let computedPropertyNamesToGeneratedNames: string[]; + + let extendsEmitted = false; + let decorateEmitted = false; + let tempFlags = 0; + let tempVariables: Identifier[]; + let tempParameters: Identifier[]; + let externalImports: (ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration)[]; + let exportSpecifiers: Map; + let exportEquals: ExportAssignment; + let hasExportStars: boolean; /** write emitted output to disk*/ - var writeEmittedFiles = writeJavaScriptFile; + let writeEmittedFiles = writeJavaScriptFile; - /** Emit leading comments of the node */ - var emitLeadingComments = compilerOptions.removeComments ? (node: Node) => { } : emitLeadingDeclarationComments; + let detachedCommentsInfo: { nodePos: number; detachedCommentEndPos: number }[]; - /** Emit Trailing comments of the node */ - var emitTrailingComments = compilerOptions.removeComments ? (node: Node) => { } : emitTrailingDeclarationComments; - - var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? (pos: number) => { } : emitLeadingCommentsOfLocalPosition; - - var detachedCommentsInfo: { nodePos: number; detachedCommentEndPos: number }[]; - /** Emit detached comments of the node */ - var emitDetachedComments = compilerOptions.removeComments ? (node: TextRange) => { } : emitDetachedCommentsAtPosition; - - /** Emits /// or pinned which is comment starting with /*! comments */ - var emitPinnedOrTripleSlashComments = compilerOptions.removeComments ? (node: Node) => { } : emitPinnedOrTripleSlashCommentsOfNode; - - var writeComment = writeCommentRange; + let writeComment = writeCommentRange; /** Emit a node */ - var emit = emitNode; + let emit = emitNodeWithoutSourceMap; /** Called just before starting emit of a node */ - var emitStart = function (node: Node) { }; + let emitStart = function (node: Node) { }; /** Called once the emit of the node is done */ - var emitEnd = function (node: Node) { }; + let emitEnd = function (node: Node) { }; /** Emit the text for the given token that comes after startPos * This by default writes the text provided with the given tokenKind @@ -1616,30 +128,31 @@ module ts { * @param tokenKind the kind of the token to search and emit * @param startPos the position in the source to start searching for the token * @param emitFn if given will be invoked to emit the text instead of actual token emit */ - var emitToken = emitTokenText; + let emitToken = emitTokenText; /** Called to before starting the lexical scopes as in function/class in the emitted code because of node * @param scopeDeclaration node that starts the lexical scope * @param scopeName Optional name of this scope instead of deducing one from the declaration node */ - var scopeEmitStart = function (scopeDeclaration: Node, scopeName?: string) { } + let scopeEmitStart = function (scopeDeclaration: Node, scopeName?: string) { } /** Called after coming out of the scope */ - var scopeEmitEnd = function () { } + let scopeEmitEnd = function () { } /** Sourcemap data that will get encoded */ - var sourceMapData: SourceMapData; + let sourceMapData: SourceMapData; if (compilerOptions.sourceMap) { initializeEmitterWithSourceMaps(); } if (root) { - emit(root); + // Do not call emit directly. It does not set the currentSourceFile. + emitSourceFile(root); } else { forEach(host.getSourceFiles(), sourceFile => { if (!isExternalModuleOrDeclarationFile(sourceFile)) { - emit(sourceFile); + emitSourceFile(sourceFile); } }); } @@ -1648,29 +161,160 @@ module ts { writeEmittedFiles(writer.getText(), /*writeByteOrderMark*/ compilerOptions.emitBOM); return; + function emitSourceFile(sourceFile: SourceFile): void { + currentSourceFile = sourceFile; + emit(sourceFile); + } + + function isUniqueName(name: string): boolean { + return !resolver.hasGlobalName(name) && + !hasProperty(currentSourceFile.identifiers, name) && + !hasProperty(generatedNameSet, name); + } + + // Return the next available name in the pattern _a ... _z, _0, _1, ... + // TempFlags._i or TempFlags._n may be used to express a preference for that dedicated name. + // Note that names generated by makeTempVariableName and makeUniqueName will never conflict. + function makeTempVariableName(flags: TempFlags): string { + if (flags && !(tempFlags & flags)) { + var name = flags === TempFlags._i ? "_i" : "_n" + if (isUniqueName(name)) { + tempFlags |= flags; + return name; + } + } + while (true) { + let count = tempFlags & TempFlags.CountMask; + tempFlags++; + // Skip over 'i' and 'n' + if (count !== 8 && count !== 13) { + let name = count < 26 ? "_" + String.fromCharCode(CharacterCodes.a + count) : "_" + (count - 26); + if (isUniqueName(name)) { + return name; + } + } + } + } + + // Generate a name that is unique within the current file and doesn't conflict with any names + // in global scope. The name is formed by adding an '_n' suffix to the specified base name, + // where n is a positive integer. Note that names generated by makeTempVariableName and + // makeUniqueName are guaranteed to never conflict. + function makeUniqueName(baseName: string): string { + // Find the first unique 'name_n', where n is a positive number + if (baseName.charCodeAt(baseName.length - 1) !== CharacterCodes._) { + baseName += "_"; + } + let i = 1; + while (true) { + let generatedName = baseName + i; + if (isUniqueName(generatedName)) { + return generatedNameSet[generatedName] = generatedName; + } + i++; + } + } + + function assignGeneratedName(node: Node, name: string) { + nodeToGeneratedName[getNodeId(node)] = unescapeIdentifier(name); + } + + function generateNameForFunctionOrClassDeclaration(node: Declaration) { + if (!node.name) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + + function generateNameForModuleOrEnum(node: ModuleDeclaration | EnumDeclaration) { + if (node.name.kind === SyntaxKind.Identifier) { + let name = node.name.text; + // Use module/enum name itself if it is unique, otherwise make a unique variation + assignGeneratedName(node, isUniqueLocalName(name, node) ? name : makeUniqueName(name)); + } + } + + function generateNameForImportOrExportDeclaration(node: ImportDeclaration | ExportDeclaration) { + let expr = getExternalModuleName(node); + let baseName = expr.kind === SyntaxKind.StringLiteral ? + escapeIdentifier(makeIdentifierFromModuleName((expr).text)) : "module"; + assignGeneratedName(node, makeUniqueName(baseName)); + } + + function generateNameForImportDeclaration(node: ImportDeclaration) { + if (node.importClause) { + generateNameForImportOrExportDeclaration(node); + } + } + + function generateNameForExportDeclaration(node: ExportDeclaration) { + if (node.moduleSpecifier) { + generateNameForImportOrExportDeclaration(node); + } + } + + function generateNameForExportAssignment(node: ExportAssignment) { + if (node.expression && node.expression.kind !== SyntaxKind.Identifier) { + assignGeneratedName(node, makeUniqueName("default")); + } + } + + function generateNameForNode(node: Node) { + switch (node.kind) { + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.ClassExpression: + generateNameForFunctionOrClassDeclaration(node); + break; + case SyntaxKind.ModuleDeclaration: + generateNameForModuleOrEnum(node); + generateNameForNode((node).body); + break; + case SyntaxKind.EnumDeclaration: + generateNameForModuleOrEnum(node); + break; + case SyntaxKind.ImportDeclaration: + generateNameForImportDeclaration(node); + break; + case SyntaxKind.ExportDeclaration: + generateNameForExportDeclaration(node); + break; + case SyntaxKind.ExportAssignment: + generateNameForExportAssignment(node); + break; + } + } + + function getGeneratedNameForNode(node: Node) { + let nodeId = getNodeId(node); + if (!nodeToGeneratedName[nodeId]) { + generateNameForNode(node); + } + return nodeToGeneratedName[nodeId]; + } + function initializeEmitterWithSourceMaps() { - var sourceMapDir: string; // The directory in which sourcemap will be + let sourceMapDir: string; // The directory in which sourcemap will be // Current source map file and its index in the sources list - var sourceMapSourceIndex = -1; + let sourceMapSourceIndex = -1; // Names and its index map - var sourceMapNameIndexMap: Map = {}; - var sourceMapNameIndices: number[] = []; + let sourceMapNameIndexMap: Map = {}; + let sourceMapNameIndices: number[] = []; function getSourceMapNameIndex() { return sourceMapNameIndices.length ? sourceMapNameIndices[sourceMapNameIndices.length - 1] : -1; } // Last recorded and encoded spans - var lastRecordedSourceMapSpan: SourceMapSpan; - var lastEncodedSourceMapSpan: SourceMapSpan = { + let lastRecordedSourceMapSpan: SourceMapSpan; + let lastEncodedSourceMapSpan: SourceMapSpan = { emittedLine: 1, emittedColumn: 1, sourceLine: 1, sourceColumn: 1, sourceIndex: 0 }; - var lastEncodedNameIndex = 0; + let lastEncodedNameIndex = 0; // Encoding for sourcemap span function encodeLastRecordedSourceMapSpan() { @@ -1678,7 +322,7 @@ module ts { return; } - var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + let prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; // Line/Comma delimiters if (lastEncodedSourceMapSpan.emittedLine == lastRecordedSourceMapSpan.emittedLine) { // Emit comma to separate the entry @@ -1688,7 +332,7 @@ module ts { } else { // Emit line delimiters - for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + for (let encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { sourceMapData.sourceMapMappings += ";"; } prevEncodedEmittedColumn = 1; @@ -1736,9 +380,9 @@ module ts { } // Encode 5 bits at a time starting from least significant bits - var encodedStr = ""; + let encodedStr = ""; do { - var currentDigit = inValue & 31; // 11111 + let currentDigit = inValue & 31; // 11111 inValue = inValue >> 5; if (inValue > 0) { // There are still more digits to decode, set the msb (6th bit) @@ -1752,14 +396,14 @@ module ts { } function recordSourceMapSpan(pos: number) { - var sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); + let sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); // Convert the location to be one-based. sourceLinePos.line++; sourceLinePos.character++; - var emittedLine = writer.getLine(); - var emittedColumn = writer.getColumn(); + let emittedLine = writer.getLine(); + let emittedColumn = writer.getColumn(); // If this location wasn't recorded or the location in source is going backwards, record the span if (!lastRecordedSourceMapSpan || @@ -1799,9 +443,9 @@ module ts { } function writeTextWithSpanRecord(tokenKind: SyntaxKind, startPos: number, emitFn?: () => void) { - var tokenStartPos = ts.skipTrivia(currentSourceFile.text, startPos); + let tokenStartPos = ts.skipTrivia(currentSourceFile.text, startPos); recordSourceMapSpan(tokenStartPos); - var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); + let tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); recordSourceMapSpan(tokenEndPos); return tokenEndPos; } @@ -1810,7 +454,7 @@ module ts { // Add the file to tsFilePaths // If sourceroot option: Use the relative path corresponding to the common directory path // otherwise source locations relative to map file location - var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + let sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; sourceMapData.sourceMapSources.push(getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, @@ -1829,14 +473,14 @@ module ts { } function recordScopeNameStart(scopeName: string) { - var scopeNameIndex = -1; + let scopeNameIndex = -1; if (scopeName) { - var parentIndex = getSourceMapNameIndex(); + let parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { // Child scopes are always shown with a dot (even if they have no name), // unless it is a computed property. Then it is shown with brackets, // but the brackets are included in the name. - var name = (node).name; + let name = (node).name; if (!name || name.kind !== SyntaxKind.ComputedPropertyName) { scopeName = "." + scopeName; } @@ -1868,7 +512,7 @@ module ts { node.kind === SyntaxKind.EnumDeclaration) { // Declaration and has associated name use it if ((node).name) { - var name = (node).name; + let name = (node).name; // For computed property names, the text will include the brackets scopeName = name.kind === SyntaxKind.ComputedPropertyName ? getTextOfNode(name) @@ -1907,8 +551,8 @@ module ts { return "{\"version\":" + version + ",\"file\":\"" + escapeString(file) + "\",\"sourceRoot\":\"" + escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + escapeString(mappings) + "\"}"; function serializeStringArray(list: string[]): string { - var output = ""; - for (var i = 0, n = list.length; i < n; i++) { + let output = ""; + for (let i = 0, n = list.length; i < n; i++) { if (i) { output += ","; } @@ -1935,7 +579,7 @@ module ts { } // Initialize source map data - var sourceMapJsFile = getBaseFileName(normalizeSlashes(jsFilePath)); + let sourceMapJsFile = getBaseFileName(normalizeSlashes(jsFilePath)); sourceMapData = { sourceMapFilePath: jsFilePath + ".map", jsSourceMappingURL: sourceMapJsFile + ".map", @@ -1981,22 +625,25 @@ module ts { sourceMapDir = getDirectoryPath(normalizePath(jsFilePath)); } - function emitNodeWithMap(node: Node) { + function emitNodeWithSourceMap(node: Node, allowGeneratedIdentifiers?: boolean) { if (node) { + if (nodeIsSynthesized(node)) { + return emitNodeWithoutSourceMap(node, /*allowGeneratedIdentifiers*/ false); + } if (node.kind != SyntaxKind.SourceFile) { recordEmitNodeStartSpan(node); - emitNode(node); + emitNodeWithoutSourceMap(node, allowGeneratedIdentifiers); recordEmitNodeEndSpan(node); } else { recordNewSourceFileStart(node); - emitNode(node); + emitNodeWithoutSourceMap(node, /*allowGeneratedIdentifiers*/ false); } } } writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithMap; + emit = emitNodeWithSourceMap; emitStart = recordEmitNodeStartSpan; emitEnd = recordEmitNodeEndSpan; emitToken = writeTextWithSpanRecord; @@ -2009,20 +656,10 @@ module ts { writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); } - // Create a temporary variable with a unique unused name. The forLoopVariable parameter signals that the - // name should be one that is appropriate for a for loop variable. - function createTempVariable(location: Node, forLoopVariable?: boolean): Identifier { - var name = forLoopVariable ? "_i" : undefined; - while (true) { - if (name && resolver.isUnknownIdentifier(location, name)) { - break; - } - // _a .. _h, _j ... _z, _0, _1, ... - name = "_" + (tempCount < 25 ? String.fromCharCode(tempCount + (tempCount < 8 ? 0 : 1) + CharacterCodes.a) : tempCount - 25); - tempCount++; - } - var result = createNode(SyntaxKind.Identifier); - result.text = name; + // Create a temporary variable with a unique unused name. + function createTempVariable(flags: TempFlags): Identifier { + let result = createSynthesizedNode(SyntaxKind.Identifier); + result.text = makeTempVariableName(flags); return result; } @@ -2033,8 +670,8 @@ module ts { tempVariables.push(name); } - function createAndRecordTempVariable(location: Node): Identifier { - var temp = createTempVariable(location, /*forLoopVariable*/ false); + function createAndRecordTempVariable(flags: TempFlags): Identifier { + let temp = createTempVariable(flags); recordTempDeclaration(temp); return temp; @@ -2055,7 +692,7 @@ module ts { } function emitTokenText(tokenKind: SyntaxKind, startPos: number, emitFn?: () => void) { - var tokenString = tokenToString(tokenKind); + let tokenString = tokenToString(tokenKind); if (emitFn) { emitFn(); } @@ -2072,7 +709,7 @@ module ts { } } - function emitParenthesized(node: Node, parenthesized: boolean) { + function emitParenthesizedIf(node: Node, parenthesized: boolean) { if (parenthesized) { write("("); } @@ -2102,7 +739,7 @@ module ts { writeLine(); } - for (var i = 0, n = nodes.length; i < n; i++) { + for (let i = 0, n = nodes.length; i < n; i++) { if (i) { if (nodeEndIsOnSameLineAsNodeStart(nodes[i - 1], nodes[i])) { write(", "); @@ -2116,15 +753,13 @@ module ts { emit(nodes[i]); } - var closeTokenIsOnSameLineAsLastElement = nodeEndPositionsAreOnSameLine(parent, lastOrUndefined(nodes)); - if (nodes.hasTrailingComma && allowTrailingComma) { write(","); } decreaseIndent(); - if (closeTokenIsOnSameLineAsLastElement) { + if (nodeEndPositionsAreOnSameLine(parent, lastOrUndefined(nodes))) { if (spacesBetweenBraces) { write(" "); } @@ -2135,7 +770,7 @@ module ts { } function emitList(nodes: Node[], start: number, count: number, multiLine: boolean, trailingComma: boolean) { - for (var i = 0; i < count; i++) { + for (let i = 0; i < count; i++) { if (multiLine) { if (i) { write(","); @@ -2168,33 +803,34 @@ module ts { } function emitLinesStartingAt(nodes: Node[], startIndex: number): void { - for (var i = startIndex; i < nodes.length; i++) { + for (let i = startIndex; i < nodes.length; i++) { writeLine(); emit(nodes[i]); } } - function isBinaryOrOctalIntegerLiteral(text: string): boolean { - if (text.length <= 0) { - return false; + function isBinaryOrOctalIntegerLiteral(node: LiteralExpression, text: string): boolean { + if (node.kind === SyntaxKind.NumericLiteral && text.length > 1) { + switch (text.charCodeAt(1)) { + case CharacterCodes.b: + case CharacterCodes.B: + case CharacterCodes.o: + case CharacterCodes.O: + return true; + } } - if (text.charCodeAt(1) === CharacterCodes.B || text.charCodeAt(1) === CharacterCodes.b || - text.charCodeAt(1) === CharacterCodes.O || text.charCodeAt(1) === CharacterCodes.o) { - return true; - } return false; } function emitLiteral(node: LiteralExpression) { - var text = languageVersion < ScriptTarget.ES6 && isTemplateLiteralKind(node.kind) ? getTemplateLiteralAsStringLiteral(node) : - node.parent ? getSourceTextOfNodeFromSourceFile(currentSourceFile, node) : - node.text; + let text = getLiteralText(node); + if (compilerOptions.sourceMap && (node.kind === SyntaxKind.StringLiteral || isTemplateLiteralKind(node.kind))) { writer.writeLiteral(text); } - // For version below ES6, emit binary integer literal and octal integer literal in canonical form - else if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.NumericLiteral && isBinaryOrOctalIntegerLiteral(text)) { + // For versions below ES6, emit binary & octal literals in their canonical decimal form. + else if (languageVersion < ScriptTarget.ES6 && isBinaryOrOctalIntegerLiteral(node, text)) { write(node.text); } else { @@ -2202,8 +838,107 @@ module ts { } } - function getTemplateLiteralAsStringLiteral(node: LiteralExpression): string { - return '"' + escapeString(node.text) + '"'; + function getLiteralText(node: LiteralExpression) { + // Any template literal or string literal with an extended escape + // (e.g. "\u{0067}") will need to be downleveled as a escaped string literal. + if (languageVersion < ScriptTarget.ES6 && (isTemplateLiteralKind(node.kind) || node.hasExtendedUnicodeEscape)) { + return getQuotedEscapedLiteralText('"', node.text, '"'); + } + + // If we don't need to downlevel and we can reach the original source text using + // the node's parent reference, then simply get the text as it was originally written. + if (node.parent) { + return getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + } + + // If we can't reach the original source text, use the canonical form if it's a number, + // or an escaped quoted form of the original text if it's string-like. + switch (node.kind) { + case SyntaxKind.StringLiteral: + return getQuotedEscapedLiteralText('"', node.text, '"'); + case SyntaxKind.NoSubstitutionTemplateLiteral: + return getQuotedEscapedLiteralText('`', node.text, '`'); + case SyntaxKind.TemplateHead: + return getQuotedEscapedLiteralText('`', node.text, '${'); + case SyntaxKind.TemplateMiddle: + return getQuotedEscapedLiteralText('}', node.text, '${'); + case SyntaxKind.TemplateTail: + return getQuotedEscapedLiteralText('}', node.text, '`'); + case SyntaxKind.NumericLiteral: + return node.text; + } + + Debug.fail(`Literal kind '${node.kind}' not accounted for.`); + } + + function getQuotedEscapedLiteralText(leftQuote: string, text: string, rightQuote: string) { + return leftQuote + escapeNonAsciiCharacters(escapeString(text)) + rightQuote; + } + + function emitDownlevelRawTemplateLiteral(node: LiteralExpression) { + // Find original source text, since we need to emit the raw strings of the tagged template. + // The raw strings contain the (escaped) strings of what the user wrote. + // Examples: `\n` is converted to "\\n", a template string with a newline to "\n". + let text = getSourceTextOfNodeFromSourceFile(currentSourceFile, node); + + // text contains the original source, it will also contain quotes ("`"), dolar signs and braces ("${" and "}"), + // thus we need to remove those characters. + // First template piece starts with "`", others with "}" + // Last template piece ends with "`", others with "${" + let isLast = node.kind === SyntaxKind.NoSubstitutionTemplateLiteral || node.kind === SyntaxKind.TemplateTail; + text = text.substring(1, text.length - (isLast ? 1 : 2)); + + // Newline normalization: + // ES6 Spec 11.8.6.1 - Static Semantics of TV's and TRV's + // and LineTerminatorSequences are normalized to for both TV and TRV. + text = text.replace(/\r\n?/g, "\n"); + text = escapeString(text); + + write('"' + text + '"'); + } + + function emitDownlevelTaggedTemplateArray(node: TaggedTemplateExpression, literalEmitter: (literal: LiteralExpression) => void) { + write("["); + if (node.template.kind === SyntaxKind.NoSubstitutionTemplateLiteral) { + literalEmitter(node.template); + } + else { + literalEmitter((node.template).head); + forEach((node.template).templateSpans, (child) => { + write(", "); + literalEmitter(child.literal); + }); + } + write("]"); + } + + function emitDownlevelTaggedTemplate(node: TaggedTemplateExpression) { + let tempVariable = createAndRecordTempVariable(TempFlags.Auto); + write("("); + emit(tempVariable); + write(" = "); + emitDownlevelTaggedTemplateArray(node, emit); + write(", "); + + emit(tempVariable); + write(".raw = "); + emitDownlevelTaggedTemplateArray(node, emitDownlevelRawTemplateLiteral); + write(", "); + + emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); + write("("); + emit(tempVariable); + + // Now we emit the expressions + if (node.template.kind === SyntaxKind.TemplateExpression) { + forEach((node.template).templateSpans, templateSpan => { + write(", "); + let needsParens = templateSpan.expression.kind === SyntaxKind.BinaryExpression + && (templateSpan.expression).operatorToken.kind === SyntaxKind.CommaToken; + emitParenthesizedIf(templateSpan.expression, needsParens); + }); + } + write("))"); } function emitTemplateExpression(node: TemplateExpression): void { @@ -2214,21 +949,21 @@ module ts { return; } - var emitOuterParens = isExpression(node.parent) + let emitOuterParens = isExpression(node.parent) && templateNeedsParens(node, node.parent); if (emitOuterParens) { write("("); } - var headEmitted = false; + let headEmitted = false; if (shouldEmitTemplateHead()) { emitLiteral(node.head); headEmitted = true; } - for (var i = 0; i < node.templateSpans.length; i++) { - var templateSpan = node.templateSpans[i]; + for (let i = 0, n = node.templateSpans.length; i < n; i++) { + let templateSpan = node.templateSpans[i]; // Check if the expression has operands and binds its operands less closely than binary '+'. // If it does, we need to wrap the expression in parentheses. Otherwise, something like @@ -2239,7 +974,7 @@ module ts { // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = templateSpan.expression.kind !== SyntaxKind.ParenthesizedExpression + let needsParens = templateSpan.expression.kind !== SyntaxKind.ParenthesizedExpression && comparePrecedenceToBinaryPlus(templateSpan.expression) !== Comparison.GreaterThan; if (i > 0 || headEmitted) { @@ -2249,7 +984,8 @@ module ts { write(" + "); } - emitParenthesized(templateSpan.expression, needsParens); + emitParenthesizedIf(templateSpan.expression, needsParens); + // Only emit if the literal is non-empty. // The binary '+' operator is left-associative, so the first string concatenation // with the head will force the result up to this point to be a string. @@ -2349,6 +1085,38 @@ module ts { emitLiteral(node); } else if (node.kind === SyntaxKind.ComputedPropertyName) { + // if this is a decorated computed property, we will need to capture the result + // of the property expression so that we can apply decorators later. This is to ensure + // we don't introduce unintended side effects: + // + // class C { + // [_a = x]() { } + // } + // + // The emit for the decorated computed property decorator is: + // + // Object.defineProperty(C.prototype, _a, __decorate([dec], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a))); + // + if (nodeIsDecorated(node.parent)) { + if (!computedPropertyNamesToGeneratedNames) { + computedPropertyNamesToGeneratedNames = []; + } + + let generatedName = computedPropertyNamesToGeneratedNames[node.id]; + if (generatedName) { + // we have already generated a variable for this node, write that value instead. + write(generatedName); + return; + } + + let generatedVariable = createTempVariable(TempFlags.Auto); + generatedName = generatedVariable.text; + recordTempDeclaration(generatedVariable); + computedPropertyNamesToGeneratedNames[node.id] = generatedName; + write(generatedName); + write(" = "); + } + emit((node).expression); } else { @@ -2366,7 +1134,7 @@ module ts { } function isNotExpressionIdentifier(node: Identifier) { - var parent = node.parent; + let parent = node.parent; switch (parent.kind) { case SyntaxKind.Parameter: case SyntaxKind.VariableDeclaration: @@ -2387,20 +1155,23 @@ module ts { case SyntaxKind.EnumDeclaration: case SyntaxKind.ModuleDeclaration: case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportClause: + case SyntaxKind.NamespaceImport: return (parent).name === node; + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ExportSpecifier: + return (parent).name === node || (parent).propertyName === node; case SyntaxKind.BreakStatement: case SyntaxKind.ContinueStatement: case SyntaxKind.ExportAssignment: return false; case SyntaxKind.LabeledStatement: return (node.parent).label === node; - case SyntaxKind.CatchClause: - return (node.parent).name === node; } } function emitExpressionIdentifier(node: Identifier) { - var substitution = resolver.getExpressionNameSubstitution(node); + let substitution = resolver.getExpressionNameSubstitution(node, getGeneratedNameForNode); if (substitution) { write(substitution); } @@ -2409,7 +1180,27 @@ module ts { } } - function emitIdentifier(node: Identifier) { + function getGeneratedNameForIdentifier(node: Identifier): string { + if (nodeIsSynthesized(node) || !blockScopedVariableToGeneratedName) { + return undefined; + } + + var variableId = resolver.getBlockScopedVariableId(node) + if (variableId === undefined) { + return undefined; + } + + return blockScopedVariableToGeneratedName[variableId]; + } + + function emitIdentifier(node: Identifier, allowGeneratedIdentifiers: boolean) { + if (allowGeneratedIdentifiers) { + let generatedName = getGeneratedNameForIdentifier(node); + if (generatedName) { + write(generatedName); + return; + } + } if (!node.parent) { write(node.text); } @@ -2431,35 +1222,37 @@ module ts { } function emitSuper(node: Node) { - var flags = resolver.getNodeCheckFlags(node); - if (flags & NodeCheckFlags.SuperInstance) { - write("_super.prototype"); - } - else if (flags & NodeCheckFlags.SuperStatic) { - write("_super"); + if (languageVersion >= ScriptTarget.ES6) { + write("super"); } else { - write("super"); + var flags = resolver.getNodeCheckFlags(node); + if (flags & NodeCheckFlags.SuperInstance) { + write("_super.prototype"); + } + else { + write("_super"); + } } } function emitObjectBindingPattern(node: BindingPattern) { write("{ "); - var elements = node.elements; + let elements = node.elements; emitList(elements, 0, elements.length, /*multiLine*/ false, /*trailingComma*/ elements.hasTrailingComma); write(" }"); } function emitArrayBindingPattern(node: BindingPattern) { write("["); - var elements = node.elements; + let elements = node.elements; emitList(elements, 0, elements.length, /*multiLine*/ false, /*trailingComma*/ elements.hasTrailingComma); write("]"); } function emitBindingElement(node: BindingElement) { if (node.propertyName) { - emit(node.propertyName); + emit(node.propertyName, /*allowGeneratedIdentifiers*/ false); write(": "); } if (node.dotDotDotToken) { @@ -2479,7 +1272,7 @@ module ts { emit((node).expression); } - function needsParenthesisForPropertyAccess(node: Expression) { + function needsParenthesisForPropertyAccessOrInvocation(node: Expression) { switch (node.kind) { case SyntaxKind.Identifier: case SyntaxKind.ArrayLiteralExpression: @@ -2495,9 +1288,9 @@ module ts { } function emitListWithSpread(elements: Expression[], multiLine: boolean, trailingComma: boolean) { - var pos = 0; - var group = 0; - var length = elements.length; + let pos = 0; + let group = 0; + let length = elements.length; while (pos < length) { // Emit using the pattern .concat(, , ...) if (group === 1) { @@ -2506,14 +1299,14 @@ module ts { else if (group > 1) { write(", "); } - var e = elements[pos]; + let e = elements[pos]; if (e.kind === SyntaxKind.SpreadElementExpression) { e = (e).expression; - emitParenthesized(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccess(e)); + emitParenthesizedIf(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; } else { - var i = pos; + let i = pos; while (i < length && elements[i].kind !== SyntaxKind.SpreadElementExpression) { i++; } @@ -2540,7 +1333,7 @@ module ts { } function emitArrayLiteral(node: ArrayLiteralExpression) { - var elements = node.elements; + let elements = node.elements; if (elements.length === 0) { write("[]"); } @@ -2550,7 +1343,7 @@ module ts { write("]"); } else { - emitListWithSpread(elements, /*multiLine*/ (node.flags & NodeFlags.MultiLine) !== 0, + emitListWithSpread(elements, /*multiLine*/(node.flags & NodeFlags.MultiLine) !== 0, /*trailingComma*/ elements.hasTrailingComma); } } @@ -2565,7 +1358,6 @@ module ts { if (numElements > 0) { var properties = node.properties; - // If we are not doing a downlevel transformation for object literals, // then try to preserve the original shape of the object literal. @@ -2574,7 +1366,7 @@ module ts { emitLinePreservingList(node, properties, /* allowTrailingComma */ languageVersion >= ScriptTarget.ES5, /* spacesBetweenBraces */ true); } else { - var multiLine = (node.flags & NodeFlags.MultiLine) !== 0; + let multiLine = (node.flags & NodeFlags.MultiLine) !== 0; if (!multiLine) { write(" "); } @@ -2597,8 +1389,8 @@ module ts { } function emitDownlevelObjectLiteralWithComputedProperties(node: ObjectLiteralExpression, firstComputedPropertyIndex: number) { - var multiLine = (node.flags & NodeFlags.MultiLine) !== 0; - var properties = node.properties; + let multiLine = (node.flags & NodeFlags.MultiLine) !== 0; + let properties = node.properties; write("("); @@ -2608,7 +1400,7 @@ module ts { // For computed properties, we need to create a unique handle to the object // literal so we can modify it without risking internal assignments tainting the object. - var tempVar = createAndRecordTempVariable(node); + let tempVar = createAndRecordTempVariable(TempFlags.Auto); // Write out the first non-computed properties // (or all properties if none of them are computed), @@ -2617,16 +1409,15 @@ module ts { write(" = "); emitObjectLiteralBody(node, firstComputedPropertyIndex); - - for (var i = firstComputedPropertyIndex, n = properties.length; i < n; i++) { + for (let i = firstComputedPropertyIndex, n = properties.length; i < n; i++) { writeComma(); - var property = properties[i]; + let property = properties[i]; emitStart(property) if (property.kind === SyntaxKind.GetAccessor || property.kind === SyntaxKind.SetAccessor) { // TODO (drosen): Reconcile with 'emitMemberFunctions'. - var accessors = getAllAccessorDeclarations(node.properties, property); + let accessors = getAllAccessorDeclarations(node.properties, property); if (property !== accessors.firstAccessor) { continue; } @@ -2717,22 +1508,22 @@ module ts { } function emitObjectLiteral(node: ObjectLiteralExpression): void { - var properties = node.properties; + let properties = node.properties; if (languageVersion < ScriptTarget.ES6) { - var numProperties = properties.length; + let numProperties = properties.length; // Find the first computed property. // Everything until that point can be emitted as part of the initial object literal. - var numInitialNonComputedProperties = numProperties; - for (var i = 0, n = properties.length; i < n; i++) { + let numInitialNonComputedProperties = numProperties; + for (let i = 0, n = properties.length; i < n; i++) { if (properties[i].name.kind === SyntaxKind.ComputedPropertyName) { numInitialNonComputedProperties = i; break; } } - var hasComputedProperty = numInitialNonComputedProperties !== properties.length; + let hasComputedProperty = numInitialNonComputedProperties !== properties.length; if (hasComputedProperty) { emitDownlevelObjectLiteralWithComputedProperties(node, numInitialNonComputedProperties); return; @@ -2744,14 +1535,40 @@ module ts { emitObjectLiteralBody(node, properties.length); } + function createBinaryExpression(left: Expression, operator: SyntaxKind, right: Expression, startsOnNewLine?: boolean): BinaryExpression { + let result = createSynthesizedNode(SyntaxKind.BinaryExpression, startsOnNewLine); + result.operatorToken = createSynthesizedNode(operator); + result.left = left; + result.right = right; + + return result; + } + + function createPropertyAccessExpression(expression: LeftHandSideExpression, name: Identifier): PropertyAccessExpression { + let result = createSynthesizedNode(SyntaxKind.PropertyAccessExpression); + result.expression = expression; + result.dotToken = createSynthesizedNode(SyntaxKind.DotToken); + result.name = name; + + return result; + } + + function createElementAccessExpression(expression: LeftHandSideExpression, argumentExpression: Expression): ElementAccessExpression { + let result = createSynthesizedNode(SyntaxKind.ElementAccessExpression); + result.expression = expression; + result.argumentExpression = argumentExpression; + + return result; + } + function emitComputedPropertyName(node: ComputedPropertyName) { write("["); - emit(node.expression); + emitExpressionForPropertyName(node); write("]"); } function emitMethod(node: MethodDeclaration) { - emit(node.name); + emit(node.name, /*allowGeneratedIdentifiers*/ false); if (languageVersion < ScriptTarget.ES6) { write(": function "); } @@ -2759,22 +1576,35 @@ module ts { } function emitPropertyAssignment(node: PropertyDeclaration) { - emit(node.name); + emit(node.name, /*allowGeneratedIdentifiers*/ false); write(": "); emit(node.initializer); } function emitShorthandPropertyAssignment(node: ShorthandPropertyAssignment) { - emit(node.name); + emit(node.name, /*allowGeneratedIdentifiers*/ false); // If short-hand property has a prefix, then regardless of the target version, we will emit it as normal property assignment. For example: // module m { - // export var y; + // export let y; // } // module m { - // export var obj = { y }; + // export let obj = { y }; // } // The short-hand property in obj need to emit as such ... = { y : m.y } regardless of the TargetScript version - if (languageVersion < ScriptTarget.ES6 || resolver.getExpressionNameSubstitution(node.name)) { + if (languageVersion < ScriptTarget.ES6) { + // Emit identifier as an identifier + write(": "); + var generatedName = getGeneratedNameForIdentifier(node.name); + if (generatedName) { + write(generatedName); + } + else { + // Even though this is stored as identifier treat it as an expression + // Short-hand, { x }, is equivalent of normal form { x: x } + emitExpressionIdentifier(node.name); + } + } + else if (resolver.getExpressionNameSubstitution(node.name, getGeneratedNameForNode)) { // Emit identifier as an identifier write(": "); // Even though this is stored as identifier treat it as an expression @@ -2784,11 +1614,16 @@ module ts { } function tryEmitConstantValue(node: PropertyAccessExpression | ElementAccessExpression): boolean { - var constantValue = resolver.getConstantValue(node); + if (compilerOptions.separateCompilation) { + // do not inline enum values in separate compilation mode + return false; + } + + let constantValue = resolver.getConstantValue(node); if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName: string = node.kind === SyntaxKind.PropertyAccessExpression ? declarationNameToString((node).name) : getTextOfNode((node).argumentExpression); + let propertyName: string = node.kind === SyntaxKind.PropertyAccessExpression ? declarationNameToString((node).name) : getTextOfNode((node).argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -2796,13 +1631,39 @@ module ts { return false; } + // Returns 'true' if the code was actually indented, false otherwise. + // If the code is not indented, an optional valueToWriteWhenNotIndenting will be + // emitted instead. + function indentIfOnDifferentLines(parent: Node, node1: Node, node2: Node, valueToWriteWhenNotIndenting?: string): boolean { + let realNodesAreOnDifferentLines = !nodeIsSynthesized(parent) && !nodeEndIsOnSameLineAsNodeStart(node1, node2); + + // Always use a newline for synthesized code if the synthesizer desires it. + let synthesizedNodeIsOnDifferentLine = synthesizedNodeStartsOnNewLine(node2); + + if (realNodesAreOnDifferentLines || synthesizedNodeIsOnDifferentLine) { + increaseIndent(); + writeLine(); + return true; + } + else { + if (valueToWriteWhenNotIndenting) { + write(valueToWriteWhenNotIndenting); + } + return false; + } + } + function emitPropertyAccess(node: PropertyAccessExpression) { if (tryEmitConstantValue(node)) { return; } + emit(node.expression); + let indentedBeforeDot = indentIfOnDifferentLines(node, node.expression, node.dotToken); write("."); - emit(node.name); + let indentedAfterDot = indentIfOnDifferentLines(node, node.dotToken, node.name); + emit(node.name, /*allowGeneratedIdentifiers*/ false); + decreaseIndentIf(indentedBeforeDot, indentedAfterDot); } function emitQualifiedName(node: QualifiedName) { @@ -2837,7 +1698,7 @@ module ts { emit(node); return node; } - var temp = createAndRecordTempVariable(node); + let temp = createAndRecordTempVariable(TempFlags.Auto); write("("); emit(temp); @@ -2848,8 +1709,8 @@ module ts { } function emitCallWithSpread(node: CallExpression) { - var target: Expression; - var expr = skipParentheses(node.expression); + let target: Expression; + let expr = skipParentheses(node.expression); if (expr.kind === SyntaxKind.PropertyAccessExpression) { // Target will be emitted as "this" argument target = emitCallTarget((expr).expression); @@ -2895,16 +1756,16 @@ module ts { emitCallWithSpread(node); return; } - var superCall = false; + let superCall = false; if (node.expression.kind === SyntaxKind.SuperKeyword) { - write("_super"); + emitSuper(node.expression); superCall = true; } else { emit(node.expression); superCall = node.expression.kind === SyntaxKind.PropertyAccessExpression && (node.expression).expression.kind === SyntaxKind.SuperKeyword; } - if (superCall) { + if (superCall && languageVersion < ScriptTarget.ES6) { write(".call("); emitThis(node.expression); if (node.arguments.length) { @@ -2931,41 +1792,49 @@ module ts { } function emitTaggedTemplateExpression(node: TaggedTemplateExpression): void { - emit(node.tag); - write(" "); - emit(node.template); + if (languageVersion >= ScriptTarget.ES6) { + emit(node.tag); + write(" "); + emit(node.template); + } + else { + emitDownlevelTaggedTemplate(node); + } } function emitParenExpression(node: ParenthesizedExpression) { - if (node.expression.kind === SyntaxKind.TypeAssertionExpression) { - var operand = (node.expression).expression; + if (!node.parent || node.parent.kind !== SyntaxKind.ArrowFunction) { + if (node.expression.kind === SyntaxKind.TypeAssertionExpression) { + let operand = (node.expression).expression; - // Make sure we consider all nested cast expressions, e.g.: - // (-A).x; - while (operand.kind == SyntaxKind.TypeAssertionExpression) { - operand = (operand).expression; - } + // Make sure we consider all nested cast expressions, e.g.: + // (-A).x; + while (operand.kind == SyntaxKind.TypeAssertionExpression) { + operand = (operand).expression; + } - // We have an expression of the form: (SubExpr) - // Emitting this as (SubExpr) is really not desirable. We would like to emit the subexpr as is. - // Omitting the parentheses, however, could cause change in the semantics of the generated - // code if the casted expression has a lower precedence than the rest of the expression, e.g.: - // (new A).foo should be emitted as (new A).foo and not new A.foo - // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() - // new (A()) should be emitted as new (A()) and not new A() - // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () - if (operand.kind !== SyntaxKind.PrefixUnaryExpression && - operand.kind !== SyntaxKind.VoidExpression && - operand.kind !== SyntaxKind.TypeOfExpression && - operand.kind !== SyntaxKind.DeleteExpression && - operand.kind !== SyntaxKind.PostfixUnaryExpression && - operand.kind !== SyntaxKind.NewExpression && - !(operand.kind === SyntaxKind.CallExpression && node.parent.kind === SyntaxKind.NewExpression) && - !(operand.kind === SyntaxKind.FunctionExpression && node.parent.kind === SyntaxKind.CallExpression)) { - emit(operand); - return; + // We have an expression of the form: (SubExpr) + // Emitting this as (SubExpr) is really not desirable. We would like to emit the subexpr as is. + // Omitting the parentheses, however, could cause change in the semantics of the generated + // code if the casted expression has a lower precedence than the rest of the expression, e.g.: + // (new A).foo should be emitted as (new A).foo and not new A.foo + // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() + // new (A()) should be emitted as new (A()) and not new A() + // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () + if (operand.kind !== SyntaxKind.PrefixUnaryExpression && + operand.kind !== SyntaxKind.VoidExpression && + operand.kind !== SyntaxKind.TypeOfExpression && + operand.kind !== SyntaxKind.DeleteExpression && + operand.kind !== SyntaxKind.PostfixUnaryExpression && + operand.kind !== SyntaxKind.NewExpression && + !(operand.kind === SyntaxKind.CallExpression && node.parent.kind === SyntaxKind.NewExpression) && + !(operand.kind === SyntaxKind.FunctionExpression && node.parent.kind === SyntaxKind.CallExpression)) { + emit(operand); + return; + } } } + write("("); emit(node.expression); write(")"); @@ -3004,7 +1873,7 @@ module ts { // expression a prefix increment whose operand is a plus expression - (++(+x)) // The same is true of minus of course. if (node.operand.kind === SyntaxKind.PrefixUnaryExpression) { - var operand = node.operand; + let operand = node.operand; if (node.operator === SyntaxKind.PlusToken && (operand.operator === SyntaxKind.PlusToken || operand.operator === SyntaxKind.PlusPlusToken)) { write(" "); } @@ -3023,93 +1892,52 @@ module ts { function emitBinaryExpression(node: BinaryExpression) { if (languageVersion < ScriptTarget.ES6 && node.operatorToken.kind === SyntaxKind.EqualsToken && (node.left.kind === SyntaxKind.ObjectLiteralExpression || node.left.kind === SyntaxKind.ArrayLiteralExpression)) { - emitDestructuring(node); + emitDestructuring(node, node.parent.kind === SyntaxKind.ExpressionStatement); } else { emit(node.left); - - if (node.operatorToken.kind !== SyntaxKind.CommaToken) { - write(" "); - } - + let indentedBeforeOperator = indentIfOnDifferentLines(node, node.left, node.operatorToken, node.operatorToken.kind !== SyntaxKind.CommaToken ? " " : undefined); write(tokenToString(node.operatorToken.kind)); - - // We'd like to preserve newlines found in the original binary expression. i.e. if a user has: - // - // Foo() || - // Bar(); - // - // Then we'd like to emit it as such. It seems like we'd only need to check for a newline and - // then just indent and emit. However, that will lead to a problem with deeply nested code. - // i.e. if you have: - // - // Foo() || - // Bar() || - // Baz(); - // - // Then we don't want to emit it as: - // - // Foo() || - // Bar() || - // Baz(); - // - // So we only indent if the right side of the binary expression starts further in on the line - // versus the left. - var operatorEnd = getLineAndCharacterOfPosition(currentSourceFile, node.operatorToken.end); - var rightStart = getLineAndCharacterOfPosition(currentSourceFile, skipTrivia(currentSourceFile.text, node.right.pos)); - - // Check if the right expression is on a different line versus the operator itself. If so, - // we'll emit newline. - var onDifferentLine = operatorEnd.line !== rightStart.line; - if (onDifferentLine) { - // Also, if the right expression starts further in on the line than the left, then we'll indent. - var exprStart = getLineAndCharacterOfPosition(currentSourceFile, skipTrivia(currentSourceFile.text, node.pos)); - var firstCharOfExpr = getFirstNonWhitespaceCharacterIndexOnLine(exprStart.line); - var shouldIndent = rightStart.character > firstCharOfExpr; - - if (shouldIndent) { - increaseIndent(); - } - - writeLine(); - } - else { - write(" "); - } - + let indentedAfterOperator = indentIfOnDifferentLines(node, node.operatorToken, node.right, " "); emit(node.right); - - if (shouldIndent) { - decreaseIndent(); - } + decreaseIndentIf(indentedBeforeOperator, indentedAfterOperator); } } - function getFirstNonWhitespaceCharacterIndexOnLine(line: number): number { - var lineStart = getLineStarts(currentSourceFile)[line]; - var text = currentSourceFile.text; - - for (var i = lineStart; i < text.length; i++) { - var ch = text.charCodeAt(i); - if (!isWhiteSpace(text.charCodeAt(i)) || isLineBreak(ch)) { - break; - } - } - - return i - lineStart; + function synthesizedNodeStartsOnNewLine(node: Node) { + return nodeIsSynthesized(node) && (node).startsOnNewLine; } function emitConditionalExpression(node: ConditionalExpression) { emit(node.condition); - write(" ? "); + let indentedBeforeQuestion = indentIfOnDifferentLines(node, node.condition, node.questionToken, " "); + write("?"); + let indentedAfterQuestion = indentIfOnDifferentLines(node, node.questionToken, node.whenTrue, " "); emit(node.whenTrue); - write(" : "); + decreaseIndentIf(indentedBeforeQuestion, indentedAfterQuestion); + let indentedBeforeColon = indentIfOnDifferentLines(node, node.whenTrue, node.colonToken, " "); + write(":"); + let indentedAfterColon = indentIfOnDifferentLines(node, node.colonToken, node.whenFalse, " "); emit(node.whenFalse); + decreaseIndentIf(indentedBeforeColon, indentedAfterColon); + } + + // Helper function to decrease the indent if we previously indented. Allows multiple + // previous indent values to be considered at a time. This also allows caller to just + // call this once, passing in all their appropriate indent values, instead of needing + // to call this helper function multiple times. + function decreaseIndentIf(value1: boolean, value2?: boolean) { + if (value1) { + decreaseIndent(); + } + if (value2) { + decreaseIndent(); + } } function isSingleLineEmptyBlock(node: Node) { if (node && node.kind === SyntaxKind.Block) { - var block = node; + let block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } } @@ -3153,12 +1981,12 @@ module ts { } function emitExpressionStatement(node: ExpressionStatement) { - emitParenthesized(node.expression, /*parenthesized*/ node.expression.kind === SyntaxKind.ArrowFunction); + emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === SyntaxKind.ArrowFunction); write(";"); } function emitIfStatement(node: IfStatement) { - var endPos = emitToken(SyntaxKind.IfKeyword, node.pos); + let endPos = emitToken(SyntaxKind.IfKeyword, node.pos); write(" "); endPos = emitToken(SyntaxKind.OpenParenToken, endPos); emit(node.expression); @@ -3198,24 +2026,42 @@ module ts { emitEmbeddedStatement(node.statement); } + function emitStartOfVariableDeclarationList(decl: Node, startPos?: number): void { + let tokenKind = SyntaxKind.VarKeyword; + if (decl && languageVersion >= ScriptTarget.ES6) { + if (isLet(decl)) { + tokenKind = SyntaxKind.LetKeyword; + } + else if (isConst(decl)) { + tokenKind = SyntaxKind.ConstKeyword; + } + } + + if (startPos !== undefined) { + emitToken(tokenKind, startPos); + } + else { + switch (tokenKind) { + case SyntaxKind.VarKeyword: + return write("var "); + case SyntaxKind.LetKeyword: + return write("let "); + case SyntaxKind.ConstKeyword: + return write("const "); + } + } + } + function emitForStatement(node: ForStatement) { - var endPos = emitToken(SyntaxKind.ForKeyword, node.pos); + let endPos = emitToken(SyntaxKind.ForKeyword, node.pos); write(" "); endPos = emitToken(SyntaxKind.OpenParenToken, endPos); if (node.initializer && node.initializer.kind === SyntaxKind.VariableDeclarationList) { - var variableDeclarationList = node.initializer; - var declarations = variableDeclarationList.declarations; - if (declarations[0] && isLet(declarations[0])) { - emitToken(SyntaxKind.LetKeyword, endPos); - } - else if (declarations[0] && isConst(declarations[0])) { - emitToken(SyntaxKind.ConstKeyword, endPos); - } - else { - emitToken(SyntaxKind.VarKeyword, endPos); - } + let variableDeclarationList = node.initializer; + let declarations = variableDeclarationList.declarations; + emitStartOfVariableDeclarationList(declarations[0], endPos); write(" "); - emitCommaList(variableDeclarationList.declarations); + emitCommaList(declarations); } else if (node.initializer) { emit(node.initializer); @@ -3229,19 +2075,18 @@ module ts { } function emitForInOrForOfStatement(node: ForInStatement | ForOfStatement) { - var endPos = emitToken(SyntaxKind.ForKeyword, node.pos); + if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.ForOfStatement) { + return emitDownLevelForOfStatement(node); + } + + let endPos = emitToken(SyntaxKind.ForKeyword, node.pos); write(" "); endPos = emitToken(SyntaxKind.OpenParenToken, endPos); if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { - var variableDeclarationList = node.initializer; + let variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { - var decl = variableDeclarationList.declarations[0]; - if (isLet(decl)) { - emitToken(SyntaxKind.LetKeyword, endPos); - } - else { - emitToken(SyntaxKind.VarKeyword, endPos); - } + let decl = variableDeclarationList.declarations[0]; + emitStartOfVariableDeclarationList(decl, endPos); write(" "); emit(decl); } @@ -3261,6 +2106,149 @@ module ts { emitEmbeddedStatement(node.statement); } + function emitDownLevelForOfStatement(node: ForOfStatement) { + // The following ES6 code: + // + // for (let v of expr) { } + // + // should be emitted as + // + // for (let _i = 0, _a = expr; _i < _a.length; _i++) { + // let v = _a[_i]; + // } + // + // where _a and _i are temps emitted to capture the RHS and the counter, + // respectively. + // When the left hand side is an expression instead of a let declaration, + // the "let v" is not emitted. + // When the left hand side is a let/const, the v is renamed if there is + // another v in scope. + // Note that all assignments to the LHS are emitted in the body, including + // all destructuring. + // Note also that because an extra statement is needed to assign to the LHS, + // for-of bodies are always emitted as blocks. + + let endPos = emitToken(SyntaxKind.ForKeyword, node.pos); + write(" "); + endPos = emitToken(SyntaxKind.OpenParenToken, endPos); + + // Do not emit the LHS let declaration yet, because it might contain destructuring. + + // Do not call recordTempDeclaration because we are declaring the temps + // right here. Recording means they will be declared later. + // In the case where the user wrote an identifier as the RHS, like this: + // + // for (let v of arr) { } + // + // we don't want to emit a temporary variable for the RHS, just use it directly. + let rhsIsIdentifier = node.expression.kind === SyntaxKind.Identifier; + let counter = createTempVariable(TempFlags._i); + let rhsReference = rhsIsIdentifier ? node.expression : createTempVariable(TempFlags.Auto); + + // This is the let keyword for the counter and rhsReference. The let keyword for + // the LHS will be emitted inside the body. + emitStart(node.expression); + write("var "); + + // _i = 0 + emitNodeWithoutSourceMap(counter); + write(" = 0"); + emitEnd(node.expression); + + if (!rhsIsIdentifier) { + // , _a = expr + write(", "); + emitStart(node.expression); + emitNodeWithoutSourceMap(rhsReference); + write(" = "); + emitNodeWithoutSourceMap(node.expression); + emitEnd(node.expression); + } + + write("; "); + + // _i < _a.length; + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write(" < "); + + emitNodeWithoutSourceMap(rhsReference); + write(".length"); + + emitEnd(node.initializer); + write("; "); + + // _i++) + emitStart(node.initializer); + emitNodeWithoutSourceMap(counter); + write("++"); + emitEnd(node.initializer); + emitToken(SyntaxKind.CloseParenToken, node.expression.end); + + // Body + write(" {"); + writeLine(); + increaseIndent(); + + // Initialize LHS + // let v = _a[_i]; + let rhsIterationValue = createElementAccessExpression(rhsReference, counter); + emitStart(node.initializer); + if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { + write("var "); + let variableDeclarationList = node.initializer; + if (variableDeclarationList.declarations.length > 0) { + let declaration = variableDeclarationList.declarations[0]; + if (isBindingPattern(declaration.name)) { + // This works whether the declaration is a var, let, or const. + // It will use rhsIterationValue _a[_i] as the initializer. + emitDestructuring(declaration, /*isAssignmentExpressionStatement*/ false, rhsIterationValue); + } + else { + // The following call does not include the initializer, so we have + // to emit it separately. + emitNodeWithoutSourceMap(declaration); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + // It's an empty declaration list. This can only happen in an error case, if the user wrote + // for (let of []) {} + emitNodeWithoutSourceMap(createTempVariable(TempFlags.Auto)); + write(" = "); + emitNodeWithoutSourceMap(rhsIterationValue); + } + } + else { + // Initializer is an expression. Emit the expression in the body, so that it's + // evaluated on every iteration. + let assignmentExpression = createBinaryExpression(node.initializer, SyntaxKind.EqualsToken, rhsIterationValue, /*startsOnNewLine*/ false); + if (node.initializer.kind === SyntaxKind.ArrayLiteralExpression || node.initializer.kind === SyntaxKind.ObjectLiteralExpression) { + // This is a destructuring pattern, so call emitDestructuring instead of emit. Calling emit will not work, because it will cause + // the BinaryExpression to be passed in instead of the expression statement, which will cause emitDestructuring to crash. + emitDestructuring(assignmentExpression, /*isAssignmentExpressionStatement*/ true, /*value*/ undefined, /*locationForCheckingExistingName*/ node); + } + else { + emitNodeWithoutSourceMap(assignmentExpression); + } + } + emitEnd(node.initializer); + write(";"); + + if (node.statement.kind === SyntaxKind.Block) { + emitLines((node.statement).statements); + } + else { + writeLine(); + emit(node.statement); + } + + writeLine(); + decreaseIndent(); + write("}"); + } + function emitBreakOrContinueStatement(node: BreakOrContinueStatement) { emitToken(node.kind === SyntaxKind.BreakStatement ? SyntaxKind.BreakKeyword : SyntaxKind.ContinueKeyword, node.pos); emitOptional(" ", node.label); @@ -3281,13 +2269,17 @@ module ts { } function emitSwitchStatement(node: SwitchStatement) { - var endPos = emitToken(SyntaxKind.SwitchKeyword, node.pos); + let endPos = emitToken(SyntaxKind.SwitchKeyword, node.pos); write(" "); emitToken(SyntaxKind.OpenParenToken, endPos); emit(node.expression); endPos = emitToken(SyntaxKind.CloseParenToken, node.expression.end); write(" "); - emitToken(SyntaxKind.OpenBraceToken, endPos); + emitCaseBlock(node.caseBlock, endPos) + } + + function emitCaseBlock(node: CaseBlock, startPos: number): void { + emitToken(SyntaxKind.OpenBraceToken, startPos); increaseIndent(); emitLines(node.clauses); decreaseIndent(); @@ -3319,6 +2311,7 @@ module ts { else { write("default:"); } + if (node.statements.length === 1 && nodeStartPositionsAreOnSameLine(node, node.statements[0])) { write(" "); emit(node.statements[0]); @@ -3349,11 +2342,11 @@ module ts { function emitCatchClause(node: CatchClause) { writeLine(); - var endPos = emitToken(SyntaxKind.CatchKeyword, node.pos); + let endPos = emitToken(SyntaxKind.CatchKeyword, node.pos); write(" "); emitToken(SyntaxKind.OpenParenToken, endPos); - emit(node.name); - emitToken(SyntaxKind.CloseParenToken, node.name.end); + emit(node.variableDeclaration); + emitToken(SyntaxKind.CloseParenToken, node.variableDeclaration ? node.variableDeclaration.end : endPos); write(" "); emitBlock(node.block); } @@ -3377,45 +2370,86 @@ module ts { } function emitContainingModuleName(node: Node) { - var container = getContainingModule(node); - write(container ? resolver.getGeneratedNameForNode(container) : "exports"); + let container = getContainingModule(node); + write(container ? getGeneratedNameForNode(container) : "exports"); } function emitModuleMemberName(node: Declaration) { emitStart(node.name); if (getCombinedNodeFlags(node) & NodeFlags.Export) { - emitContainingModuleName(node); - write("."); + var container = getContainingModule(node); + if (container) { + write(getGeneratedNameForNode(container)); + write("."); + } + else if (languageVersion < ScriptTarget.ES6) { + write("exports."); + } } - emitNode(node.name); + emitNodeWithoutSourceMap(node.name); emitEnd(node.name); } + function createVoidZero(): Expression { + let zero = createSynthesizedNode(SyntaxKind.NumericLiteral); + zero.text = "0"; + let result = createSynthesizedNode(SyntaxKind.VoidExpression); + result.expression = zero; + return result; + } + + function emitExportMemberAssignment(node: FunctionLikeDeclaration | ClassDeclaration) { + if (node.flags & NodeFlags.Export) { + writeLine(); + emitStart(node); + if (node.flags & NodeFlags.Default) { + write("exports.default"); + } + else { + emitModuleMemberName(node); + } + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + } + function emitExportMemberAssignments(name: Identifier) { - if (exportSpecifiers && hasProperty(exportSpecifiers, name.text)) { - forEach(exportSpecifiers[name.text], specifier => { + if (!exportEquals && exportSpecifiers && hasProperty(exportSpecifiers, name.text)) { + for (let specifier of exportSpecifiers[name.text]) { writeLine(); emitStart(specifier.name); emitContainingModuleName(specifier); write("."); - emitNode(specifier.name); + emitNodeWithoutSourceMap(specifier.name); emitEnd(specifier.name); write(" = "); - emitNode(name); + emitExpressionIdentifier(name); write(";"); - }); + } } } - function emitDestructuring(root: BinaryExpression | VariableDeclaration | ParameterDeclaration, value?: Expression) { - var emitCount = 0; + /** + * If the root has a chance of being a synthesized node, callers should also pass a value for + * lowestNonSynthesizedAncestor. This should be an ancestor of root, it should not be synthesized, + * and there should not be a lower ancestor that introduces a scope. This node will be used as the + * location for ensuring that temporary names are unique. + */ + function emitDestructuring(root: BinaryExpression | VariableDeclaration | ParameterDeclaration, + isAssignmentExpressionStatement: boolean, + value?: Expression, + lowestNonSynthesizedAncestor?: Node) { + let emitCount = 0; // An exported declaration is actually emitted as an assignment (to a property on the module object), so // temporary variables in an exported declaration need to have real declarations elsewhere - var isDeclaration = (root.kind === SyntaxKind.VariableDeclaration && !(getCombinedNodeFlags(root) & NodeFlags.Export)) || root.kind === SyntaxKind.Parameter; + let isDeclaration = (root.kind === SyntaxKind.VariableDeclaration && !(getCombinedNodeFlags(root) & NodeFlags.Export)) || root.kind === SyntaxKind.Parameter; if (root.kind === SyntaxKind.BinaryExpression) { emitAssignmentExpression(root); } else { + Debug.assert(!isAssignmentExpressionStatement); emitBindingElement(root, value); } @@ -3423,6 +2457,8 @@ module ts { if (emitCount++) { write(", "); } + + renameNonTopLevelLetAndConst(name); if (name.parent && (name.parent.kind === SyntaxKind.VariableDeclaration || name.parent.kind === SyntaxKind.BindingElement)) { emitModuleMemberName(name.parent); } @@ -3435,7 +2471,10 @@ module ts { function ensureIdentifier(expr: Expression): Expression { if (expr.kind !== SyntaxKind.Identifier) { - var identifier = createTempVariable(root); + // In case the root is a synthesized node, we need to pass lowestNonSynthesizedAncestor + // as the location for determining uniqueness of the variable we are about to + // generate. + let identifier = createTempVariable(TempFlags.Auto); if (!isDeclaration) { recordTempDeclaration(identifier); } @@ -3445,32 +2484,30 @@ module ts { return expr; } - function createVoidZero(): Expression { - var zero = createNode(SyntaxKind.NumericLiteral); - zero.text = "0"; - var result = createNode(SyntaxKind.VoidExpression); - result.expression = zero; - return result; - } - function createDefaultValueCheck(value: Expression, defaultValue: Expression): Expression { // The value expression will be evaluated twice, so for anything but a simple identifier // we need to generate a temporary variable value = ensureIdentifier(value); // Return the expression 'value === void 0 ? defaultValue : value' - var equals = createNode(SyntaxKind.BinaryExpression); + let equals = createSynthesizedNode(SyntaxKind.BinaryExpression); equals.left = value; - equals.operatorToken = createNode(SyntaxKind.EqualsEqualsEqualsToken); + equals.operatorToken = createSynthesizedNode(SyntaxKind.EqualsEqualsEqualsToken); equals.right = createVoidZero(); - var cond = createNode(SyntaxKind.ConditionalExpression); - cond.condition = equals; - cond.whenTrue = defaultValue; - cond.whenFalse = value; + return createConditionalExpression(equals, defaultValue, value); + } + + function createConditionalExpression(condition: Expression, whenTrue: Expression, whenFalse: Expression) { + let cond = createSynthesizedNode(SyntaxKind.ConditionalExpression); + cond.condition = condition; + cond.questionToken = createSynthesizedNode(SyntaxKind.QuestionToken); + cond.whenTrue = whenTrue; + cond.colonToken = createSynthesizedNode(SyntaxKind.ColonToken); + cond.whenFalse = whenFalse; return cond; } function createNumericLiteral(value: number) { - var node = createNode(SyntaxKind.NumericLiteral); + let node = createSynthesizedNode(SyntaxKind.NumericLiteral); node.text = "" + value; return node; } @@ -3479,7 +2516,7 @@ module ts { if (expr.kind === SyntaxKind.Identifier || expr.kind === SyntaxKind.PropertyAccessExpression || expr.kind === SyntaxKind.ElementAccessExpression) { return expr; } - var node = createNode(SyntaxKind.ParenthesizedExpression); + let node = createSynthesizedNode(SyntaxKind.ParenthesizedExpression); node.expression = expr; return node; } @@ -3488,45 +2525,41 @@ module ts { if (propName.kind !== SyntaxKind.Identifier) { return createElementAccess(object, propName); } - var node = createNode(SyntaxKind.PropertyAccessExpression); - node.expression = parenthesizeForAccess(object); - node.name = propName; - return node; + return createPropertyAccessExpression(parenthesizeForAccess(object), propName); } function createElementAccess(object: Expression, index: Expression): Expression { - var node = createNode(SyntaxKind.ElementAccessExpression); + let node = createSynthesizedNode(SyntaxKind.ElementAccessExpression); node.expression = parenthesizeForAccess(object); node.argumentExpression = index; return node; } function emitObjectLiteralAssignment(target: ObjectLiteralExpression, value: Expression) { - var properties = target.properties; + let properties = target.properties; if (properties.length !== 1) { // For anything but a single element destructuring we need to generate a temporary // to ensure value is evaluated exactly once. value = ensureIdentifier(value); } - for (var i = 0; i < properties.length; i++) { - var p = properties[i]; + for (let p of properties) { if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { // TODO(andersh): Computed property support - var propName = ((p).name); + let propName = ((p).name); emitDestructuringAssignment((p).initializer || propName, createPropertyAccess(value, propName)); } } } function emitArrayLiteralAssignment(target: ArrayLiteralExpression, value: Expression) { - var elements = target.elements; + let elements = target.elements; if (elements.length !== 1) { // For anything but a single element destructuring we need to generate a temporary // to ensure value is evaluated exactly once. value = ensureIdentifier(value); } - for (var i = 0; i < elements.length; i++) { - var e = elements[i]; + for (let i = 0; i < elements.length; i++) { + let e = elements[i]; if (e.kind !== SyntaxKind.OmittedExpression) { if (e.kind !== SyntaxKind.SpreadElementExpression) { emitDestructuringAssignment(e, createElementAccess(value, createNumericLiteral(i))); @@ -3544,7 +2577,7 @@ module ts { function emitDestructuringAssignment(target: Expression, value: Expression) { if (target.kind === SyntaxKind.BinaryExpression && (target).operatorToken.kind === SyntaxKind.EqualsToken) { - value = createDefaultValueCheck(value,(target).right); + value = createDefaultValueCheck(value, (target).right); target = (target).left; } if (target.kind === SyntaxKind.ObjectLiteralExpression) { @@ -3559,9 +2592,9 @@ module ts { } function emitAssignmentExpression(root: BinaryExpression) { - var target = root.left; - var value = root.right; - if (root.parent.kind === SyntaxKind.ExpressionStatement) { + let target = root.left; + let value = root.right; + if (isAssignmentExpressionStatement) { emitDestructuringAssignment(target, value); } else { @@ -3588,18 +2621,18 @@ module ts { value = createVoidZero(); } if (isBindingPattern(target.name)) { - var pattern = target.name; - var elements = pattern.elements; + let pattern = target.name; + let elements = pattern.elements; if (elements.length !== 1) { // For anything but a single element destructuring we need to generate a temporary // to ensure value is evaluated exactly once. value = ensureIdentifier(value); } - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; + for (let i = 0; i < elements.length; i++) { + let element = elements[i]; if (pattern.kind === SyntaxKind.ObjectBindingPattern) { // Rewrite element to a declaration with an initializer that fetches property - var propName = element.propertyName || element.name; + let propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccess(value, propName)); } else if (element.kind !== SyntaxKind.OmittedExpression) { @@ -3626,7 +2659,7 @@ module ts { function emitVariableDeclaration(node: VariableDeclaration) { if (isBindingPattern(node.name)) { if (languageVersion < ScriptTarget.ES6) { - emitDestructuring(node); + emitDestructuring(node, /*isAssignmentExpressionStatement*/ false); } else { emit(node.name); @@ -3634,13 +2667,39 @@ module ts { } } else { + renameNonTopLevelLetAndConst(node.name); emitModuleMemberName(node); - emitOptional(" = ", node.initializer); + + let initializer = node.initializer; + if (!initializer && languageVersion < ScriptTarget.ES6) { + + // downlevel emit for non-initialized let bindings defined in loops + // for (...) { let x; } + // should be + // for (...) { var = void 0; } + // this is necessary to preserve ES6 semantic in scenarios like + // for (...) { let x; console.log(x); x = 1 } // assignment on one iteration should not affect other iterations + let isUninitializedLet = + (resolver.getNodeCheckFlags(node) & NodeCheckFlags.BlockScopedBindingInLoop) && + (getCombinedFlagsForIdentifier(node.name) & NodeFlags.Let); + + // NOTE: default initialization should not be added to let bindings in for-in\for-of statements + if (isUninitializedLet && + node.parent.parent.kind !== SyntaxKind.ForInStatement && + node.parent.parent.kind !== SyntaxKind.ForOfStatement) { + initializer = createVoidZero(); + } + } + + emitOptional(" = ", initializer); } } function emitExportVariableAssignments(node: VariableDeclaration | BindingElement) { - var name = (node).name; + if (node.kind === SyntaxKind.OmittedExpression) { + return; + } + let name = node.name; if (name.kind === SyntaxKind.Identifier) { emitExportMemberAssignments(name); } @@ -3649,17 +2708,76 @@ module ts { } } + function getCombinedFlagsForIdentifier(node: Identifier): NodeFlags { + if (!node.parent || (node.parent.kind !== SyntaxKind.VariableDeclaration && node.parent.kind !== SyntaxKind.BindingElement)) { + return 0; + } + + return getCombinedNodeFlags(node.parent); + } + + function renameNonTopLevelLetAndConst(node: Node): void { + // do not rename if + // - language version is ES6+ + // - node is synthesized + // - node is not identifier (can happen when tree is malformed) + // - node is definitely not name of variable declaration. + // it still can be part of parameter declaration, this check will be done next + if (languageVersion >= ScriptTarget.ES6 || + nodeIsSynthesized(node) || + node.kind !== SyntaxKind.Identifier || + (node.parent.kind !== SyntaxKind.VariableDeclaration && node.parent.kind !== SyntaxKind.BindingElement)) { + return; + } + + let combinedFlags = getCombinedFlagsForIdentifier(node); + if (((combinedFlags & NodeFlags.BlockScoped) === 0) || combinedFlags & NodeFlags.Export) { + // do not rename exported or non-block scoped variables + return; + } + + // here it is known that node is a block scoped variable + let list = getAncestor(node, SyntaxKind.VariableDeclarationList); + if (list.parent.kind === SyntaxKind.VariableStatement) { + let isSourceFileLevelBinding = list.parent.parent.kind === SyntaxKind.SourceFile; + let isModuleLevelBinding = list.parent.parent.kind === SyntaxKind.ModuleBlock; + let isFunctionLevelBinding = + list.parent.parent.kind === SyntaxKind.Block && isFunctionLike(list.parent.parent.parent); + if (isSourceFileLevelBinding || isModuleLevelBinding || isFunctionLevelBinding) { + return; + } + } + + let blockScopeContainer = getEnclosingBlockScopeContainer(node); + let parent = blockScopeContainer.kind === SyntaxKind.SourceFile + ? blockScopeContainer + : blockScopeContainer.parent; + + if (resolver.resolvesToSomeValue(parent, (node).text)) { + let variableId = resolver.getBlockScopedVariableId(node); + if (!blockScopedVariableToGeneratedName) { + blockScopedVariableToGeneratedName = []; + } + + let generatedName = makeUniqueName((node).text); + blockScopedVariableToGeneratedName[variableId] = generatedName; + } + } + + function isES6ExportedDeclaration(node: Node) { + return !!(node.flags & NodeFlags.Export) && + languageVersion >= ScriptTarget.ES6 && + node.parent.kind === SyntaxKind.SourceFile; + } + function emitVariableStatement(node: VariableStatement) { if (!(node.flags & NodeFlags.Export)) { - if (isLet(node.declarationList)) { - write("let "); - } - else if (isConst(node.declarationList)) { - write("const "); - } - else { - write("var "); - } + emitStartOfVariableDeclarationList(node.declarationList); + } + else if (isES6ExportedDeclaration(node)) { + // Exported ES6 module member + write("export "); + emitStartOfVariableDeclarationList(node.declarationList); } emitCommaList(node.declarationList.declarations); write(";"); @@ -3671,7 +2789,7 @@ module ts { function emitParameter(node: ParameterDeclaration) { if (languageVersion < ScriptTarget.ES6) { if (isBindingPattern(node.name)) { - var name = createTempVariable(node); + let name = createTempVariable(TempFlags.Auto); if (!tempParameters) { tempParameters = []; } @@ -3693,12 +2811,12 @@ module ts { function emitDefaultValueAssignments(node: FunctionLikeDeclaration) { if (languageVersion < ScriptTarget.ES6) { - var tempIndex = 0; + let tempIndex = 0; forEach(node.parameters, p => { if (isBindingPattern(p.name)) { writeLine(); write("var "); - emitDestructuring(p, tempParameters[tempIndex]); + emitDestructuring(p, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]); write(";"); tempIndex++; } @@ -3706,14 +2824,14 @@ module ts { writeLine(); emitStart(p); write("if ("); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" === void 0)"); emitEnd(p); write(" { "); emitStart(p); - emitNode(p.name); + emitNodeWithoutSourceMap(p.name); write(" = "); - emitNode(p.initializer); + emitNodeWithoutSourceMap(p.initializer); emitEnd(p); write("; }"); } @@ -3723,14 +2841,14 @@ module ts { function emitRestParameter(node: FunctionLikeDeclaration) { if (languageVersion < ScriptTarget.ES6 && hasRestParameters(node)) { - var restIndex = node.parameters.length - 1; - var restParam = node.parameters[restIndex]; - var tempName = createTempVariable(node, /*forLoopVariable*/ true).text; + let restIndex = node.parameters.length - 1; + let restParam = node.parameters[restIndex]; + let tempName = createTempVariable(TempFlags._i).text; writeLine(); emitLeadingComments(restParam); emitStart(restParam); write("var "); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write(" = [];"); emitEnd(restParam); emitTrailingComments(restParam); @@ -3751,7 +2869,7 @@ module ts { increaseIndent(); writeLine(); emitStart(restParam); - emitNode(restParam.name); + emitNodeWithoutSourceMap(restParam.name); write("[" + tempName + " - " + restIndex + "] = arguments[" + tempName + "];"); emitEnd(restParam); decreaseIndent(); @@ -3762,7 +2880,7 @@ module ts { function emitAccessor(node: AccessorDeclaration) { write(node.kind === SyntaxKind.GetAccessor ? "get " : "set "); - emit(node.name); + emit(node.name, /*allowGeneratedIdentifiers*/ false); emitSignatureAndBody(node); } @@ -3770,9 +2888,29 @@ module ts { return node.kind === SyntaxKind.ArrowFunction && languageVersion >= ScriptTarget.ES6; } + function emitDeclarationName(node: Declaration) { + if (node.name) { + emitNodeWithoutSourceMap(node.name); + } + else { + write(getGeneratedNameForNode(node)); + } + } + + function shouldEmitFunctionName(node: FunctionLikeDeclaration) { + if (node.kind === SyntaxKind.FunctionExpression) { + // Emit name if one is present + return !!node.name; + } + if (node.kind === SyntaxKind.FunctionDeclaration) { + // Emit name if one is present, or emit generated name in down-level case (for export default case) + return !!node.name || languageVersion < ScriptTarget.ES6; + } + } + function emitFunctionDeclaration(node: FunctionLikeDeclaration) { if (nodeIsMissing(node.body)) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } if (node.kind !== SyntaxKind.MethodDeclaration && node.kind !== SyntaxKind.MethodSignature) { @@ -3783,14 +2921,21 @@ module ts { // For targeting below es6, emit functions-like declaration including arrow function using function keyword. // When targeting ES6, emit arrow function natively in ES6 by omitting function keyword and using fat arrow instead if (!shouldEmitAsArrowFunction(node)) { + if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & NodeFlags.Default) { + write("default "); + } + } write("function "); } - if (node.kind === SyntaxKind.FunctionDeclaration || (node.kind === SyntaxKind.FunctionExpression && node.name)) { - emit(node.name); + if (shouldEmitFunctionName(node)) { + emitDeclarationName(node); } + emitSignatureAndBody(node); - if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.FunctionDeclaration && node.parent === currentSourceFile) { + if (languageVersion < ScriptTarget.ES6 && node.kind === SyntaxKind.FunctionDeclaration && node.parent === currentSourceFile && node.name) { emitExportMemberAssignments((node).name); } if (node.kind !== SyntaxKind.MethodDeclaration && node.kind !== SyntaxKind.MethodSignature) { @@ -3811,8 +2956,8 @@ module ts { increaseIndent(); write("("); if (node) { - var parameters = node.parameters; - var omitCount = languageVersion < ScriptTarget.ES6 && hasRestParameters(node) ? 1 : 0; + let parameters = node.parameters; + let omitCount = languageVersion < ScriptTarget.ES6 && hasRestParameters(node) ? 1 : 0; emitList(parameters, 0, parameters.length - omitCount, /*multiLine*/ false, /*trailingComma*/ false); } write(")"); @@ -3829,10 +2974,10 @@ module ts { } function emitSignatureAndBody(node: FunctionLikeDeclaration) { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - var saveTempParameters = tempParameters; - tempCount = 0; + let saveTempFlags = tempFlags; + let saveTempVariables = tempVariables; + let saveTempParameters = tempParameters; + tempFlags = 0; tempVariables = undefined; tempParameters = undefined; @@ -3857,17 +3002,11 @@ module ts { emitExpressionFunctionBody(node, node.body); } - if (node.flags & NodeFlags.Export) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); - write(";"); + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); } - tempCount = saveTempCount; + tempFlags = saveTempFlags; tempVariables = saveTempVariables; tempParameters = saveTempParameters; } @@ -3885,9 +3024,19 @@ module ts { return; } - // For es6 and higher we can emit the expression as is. + // For es6 and higher we can emit the expression as is. However, in the case + // where the expression might end up looking like a block when emitted, we'll + // also wrap it in parentheses first. For example if you have: a => {} + // then we need to generate: a => ({}) write(" "); - emit(body); + + // Unwrap all type assertions. + let current = body; + while (current.kind === SyntaxKind.TypeAssertionExpression) { + current = (current).expression; + } + + emitParenthesizedIf(body, current.kind === SyntaxKind.ObjectLiteralExpression); } function emitDownLevelExpressionFunctionBody(node: FunctionLikeDeclaration, body: Expression) { @@ -3895,10 +3044,10 @@ module ts { scopeEmitStart(node); increaseIndent(); - var outPos = writer.getTextPos(); + let outPos = writer.getTextPos(); emitDetachedComments(node.body); emitFunctionBodyPreamble(node); - var preambleEmitted = writer.getTextPos() !== outPos; + let preambleEmitted = writer.getTextPos() !== outPos; decreaseIndent(); // If we didn't have to emit any preamble code, then attempt to keep the arrow @@ -3907,10 +3056,7 @@ module ts { write(" "); emitStart(body); write("return "); - - // Don't emit comments on this body. We'll have already taken care of it above - // when we called emitDetachedComments. - emitNode(body, /*disableComments:*/ true); + emit(body); emitEnd(body); write(";"); emitTempDeclarations(/*newLine*/ false); @@ -3921,7 +3067,7 @@ module ts { writeLine(); emitLeadingComments(node.body); write("return "); - emit(node.body, /*disableComments:*/ true); + emit(body); write(";"); emitTrailingComments(node.body); @@ -3938,63 +3084,26 @@ module ts { } function emitBlockFunctionBody(node: FunctionLikeDeclaration, body: Block) { - // If the body has no statements, and we know there's no code that would cause any - // prologue to be emitted, then just do a simple emit if the empty block. - if (body.statements.length === 0 && !anyParameterHasBindingPatternOrInitializer(node)) { - emitFunctionBodyWithNoStatements(node, body); - } - else { - emitFunctionBodyWithStatements(node, body); - } - } - - function anyParameterHasBindingPatternOrInitializer(func: FunctionLikeDeclaration) { - return forEach(func.parameters, hasBindingPatternOrInitializer); - } - - function hasBindingPatternOrInitializer(parameter: ParameterDeclaration) { - return parameter.initializer || isBindingPattern(parameter.name); - } - - function emitFunctionBodyWithNoStatements(node: FunctionLikeDeclaration, body: Block) { - var singleLine = isSingleLineEmptyBlock(node.body); - - write(" {"); - if (singleLine) { - write(" "); - } - else { - increaseIndent(); - writeLine(); - } - - emitLeadingCommentsOfPosition(body.statements.end); - - if (!singleLine) { - decreaseIndent(); - } - - emitToken(SyntaxKind.CloseBraceToken, body.statements.end); - } - - function emitFunctionBodyWithStatements(node: FunctionLikeDeclaration, body: Block) { write(" {"); scopeEmitStart(node); - var outPos = writer.getTextPos(); + let initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedComments(body.statements); - var startIndex = emitDirectivePrologues(body.statements, /*startWithNewLine*/ true); + + // Emit all the directive prologues (like "use strict"). These have to come before + // any other preamble code we write (like parameter initializers). + let startIndex = emitDirectivePrologues(body.statements, /*startWithNewLine*/ true); emitFunctionBodyPreamble(node); decreaseIndent(); - var preambleEmitted = writer.getTextPos() !== outPos; + let preambleEmitted = writer.getTextPos() !== initialTextPos; if (!preambleEmitted && nodeEndIsOnSameLineAsNodeStart(body, body)) { - for (var i = 0, n = body.statements.length; i < n; i++) { + for (let statement of body.statements) { write(" "); - emit(body.statements[i]); + emit(statement); } emitTempDeclarations(/*newLine*/ false); write(" "); @@ -4016,11 +3125,11 @@ module ts { function findInitialSuperCall(ctor: ConstructorDeclaration): ExpressionStatement { if (ctor.body) { - var statement = (ctor.body).statements[0]; + let statement = (ctor.body).statements[0]; if (statement && statement.kind === SyntaxKind.ExpressionStatement) { - var expr = (statement).expression; + let expr = (statement).expression; if (expr && expr.kind === SyntaxKind.CallExpression) { - var func = (expr).expression; + let func = (expr).expression; if (func && func.kind === SyntaxKind.SuperKeyword) { return statement; } @@ -4036,7 +3145,7 @@ module ts { emitStart(param); emitStart(param.name); write("this."); - emitNode(param.name); + emitNodeWithoutSourceMap(param.name); emitEnd(param.name); write(" = "); emit(param.name); @@ -4047,10 +3156,10 @@ module ts { } function emitMemberAccessForPropertyName(memberName: DeclarationName) { - // TODO: (jfreeman,drosen): comment on why this is emitNode instead of emit here. + // TODO: (jfreeman,drosen): comment on why this is emitNodeWithoutSourceMap instead of emit here. if (memberName.kind === SyntaxKind.StringLiteral || memberName.kind === SyntaxKind.NumericLiteral) { write("["); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); write("]"); } else if (memberName.kind === SyntaxKind.ComputedPropertyName) { @@ -4058,53 +3167,74 @@ module ts { } else { write("."); - emitNode(memberName); + emitNodeWithoutSourceMap(memberName); } } - function emitMemberAssignments(node: ClassDeclaration, staticFlag: NodeFlags) { - forEach(node.members, member => { - if (member.kind === SyntaxKind.PropertyDeclaration && (member.flags & NodeFlags.Static) === staticFlag && (member).initializer) { - writeLine(); - emitLeadingComments(member); - emitStart(member); - emitStart((member).name); - if (staticFlag) { - emitNode(node.name); - } - else { - write("this"); - } - emitMemberAccessForPropertyName((member).name); - emitEnd((member).name); - write(" = "); - emit((member).initializer); - write(";"); - emitEnd(member); - emitTrailingComments(member); + function getInitializedProperties(node: ClassLikeDeclaration, static: boolean) { + let properties: PropertyDeclaration[] = []; + for (let member of node.members) { + if (member.kind === SyntaxKind.PropertyDeclaration && static === ((member.flags & NodeFlags.Static) !== 0) && (member).initializer) { + properties.push(member); } - }); + } + + return properties; } - function emitMemberFunctions(node: ClassDeclaration) { + function emitPropertyDeclarations(node: ClassLikeDeclaration, properties: PropertyDeclaration[]) { + for (let property of properties) { + emitPropertyDeclaration(node, property); + } + } + + function emitPropertyDeclaration(node: ClassLikeDeclaration, property: PropertyDeclaration, receiver?: Identifier, isExpression?: boolean) { + writeLine(); + emitLeadingComments(property); + emitStart(property); + emitStart(property.name); + if (receiver) { + emit(receiver); + } + else { + if (property.flags & NodeFlags.Static) { + emitDeclarationName(node); + } + else { + write("this"); + } + } + emitMemberAccessForPropertyName(property.name); + emitEnd(property.name); + write(" = "); + emit(property.initializer); + if (!isExpression) { + write(";"); + } + + emitEnd(property); + emitTrailingComments(property); + } + + function emitMemberFunctionsForES5AndLower(node: ClassLikeDeclaration) { forEach(node.members, member => { - if (member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) { + if (member.kind === SyntaxKind.SemicolonClassElement) { + writeLine(); + write(";"); + } + else if (member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) { if (!(member).body) { - return emitPinnedOrTripleSlashComments(member); + return emitOnlyPinnedOrTripleSlashComments(member); } writeLine(); emitLeadingComments(member); emitStart(member); emitStart((member).name); - emitNode(node.name); // TODO (shkamat,drosen): comment for why emitNode instead of emit. - if (!(member.flags & NodeFlags.Static)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); emitMemberAccessForPropertyName((member).name); emitEnd((member).name); write(" = "); - // TODO (drosen): Should we performing emitStart twice on emitStart(member)? emitStart(member); emitFunctionDeclaration(member); emitEnd(member); @@ -4113,18 +3243,14 @@ module ts { emitTrailingComments(member); } else if (member.kind === SyntaxKind.GetAccessor || member.kind === SyntaxKind.SetAccessor) { - var accessors = getAllAccessorDeclarations(node.members, member); + let accessors = getAllAccessorDeclarations(node.members, member); if (member === accessors.firstAccessor) { writeLine(); emitStart(member); write("Object.defineProperty("); emitStart((member).name); - emitNode(node.name); - if (!(member.flags & NodeFlags.Static)) { - write(".prototype"); - } + emitClassMemberPrefix(node, member); write(", "); - // TODO: Shouldn't emitStart on name occur *here*? emitExpressionForPropertyName((member).name); emitEnd((member).name); write(", {"); @@ -4164,36 +3290,413 @@ module ts { }); } + function emitMemberFunctionsForES6AndHigher(node: ClassLikeDeclaration) { + for (let member of node.members) { + if ((member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) && !(member).body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + else if (member.kind === SyntaxKind.MethodDeclaration || + member.kind === SyntaxKind.GetAccessor || + member.kind === SyntaxKind.SetAccessor) { + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & NodeFlags.Static) { + write("static "); + } + + if (member.kind === SyntaxKind.GetAccessor) { + write("get "); + } + else if (member.kind === SyntaxKind.SetAccessor) { + write("set "); + } + emit((member).name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + else if (member.kind === SyntaxKind.SemicolonClassElement) { + writeLine(); + write(";"); + } + } + } + + function emitConstructor(node: ClassLikeDeclaration, baseTypeElement: HeritageClauseElement) { + let saveTempFlags = tempFlags; + let saveTempVariables = tempVariables; + let saveTempParameters = tempParameters; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + + emitConstructorWorker(node, baseTypeElement); + + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + } + + function emitConstructorWorker(node: ClassLikeDeclaration, baseTypeElement: HeritageClauseElement) { + // Check if we have property assignment inside class declaration. + // If there is property assignment, we need to emit constructor whether users define it or not + // If there is no property assignment, we can omit constructor if users do not define it + let hasInstancePropertyWithInitializer = false; + + // Emit the constructor overload pinned comments + forEach(node.members, member => { + if (member.kind === SyntaxKind.Constructor && !(member).body) { + emitOnlyPinnedOrTripleSlashComments(member); + } + // Check if there is any non-static property assignment + if (member.kind === SyntaxKind.PropertyDeclaration && (member).initializer && (member.flags & NodeFlags.Static) === 0) { + hasInstancePropertyWithInitializer = true; + } + }); + + let ctor = getFirstConstructorWithBody(node); + + // For target ES6 and above, if there is no user-defined constructor and there is no property assignment + // do not emit constructor in class declaration. + if (languageVersion >= ScriptTarget.ES6 && !ctor && !hasInstancePropertyWithInitializer) { + return; + } + + if (ctor) { + emitLeadingComments(ctor); + } + emitStart(ctor || node); + + if (languageVersion < ScriptTarget.ES6) { + write("function "); + emitDeclarationName(node); + emitSignatureParameters(ctor); + } + else { + write("constructor"); + if (ctor) { + emitSignatureParameters(ctor); + } + else { + // Based on EcmaScript6 section 14.5.14: Runtime Semantics: ClassDefinitionEvaluation. + // If constructor is empty, then, + // If ClassHeritageopt is present, then + // Let constructor be the result of parsing the String "constructor(... args){ super (...args);}" using the syntactic grammar with the goal symbol MethodDefinition. + // Else, + // Let constructor be the result of parsing the String "constructor( ){ }" using the syntactic grammar with the goal symbol MethodDefinition + if (baseTypeElement) { + write("(...args)"); + } + else { + write("()"); + } + } + } + + write(" {"); + scopeEmitStart(node, "constructor"); + increaseIndent(); + if (ctor) { + emitDetachedComments(ctor.body.statements); + } + emitCaptureThisForNodeIfNecessary(node); + if (ctor) { + emitDefaultValueAssignments(ctor); + emitRestParameter(ctor); + if (baseTypeElement) { + var superCall = findInitialSuperCall(ctor); + if (superCall) { + writeLine(); + emit(superCall); + } + } + emitParameterPropertyAssignments(ctor); + } + else { + if (baseTypeElement) { + writeLine(); + emitStart(baseTypeElement); + if (languageVersion < ScriptTarget.ES6) { + write("_super.apply(this, arguments);"); + } + else { + write("super(...args);"); + } + emitEnd(baseTypeElement); + } + } + emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ false)); + if (ctor) { + var statements: Node[] = (ctor.body).statements; + if (superCall) { + statements = statements.slice(1); + } + emitLines(statements); + } + emitTempDeclarations(/*newLine*/ true); + writeLine(); + if (ctor) { + emitLeadingCommentsOfPosition((ctor.body).statements.end); + } + decreaseIndent(); + emitToken(SyntaxKind.CloseBraceToken, ctor ? (ctor.body).statements.end : node.members.end); + scopeEmitEnd(); + emitEnd(ctor || node); + if (ctor) { + emitTrailingComments(ctor); + } + } + + function emitClassExpression(node: ClassExpression) { + return emitClassLikeDeclaration(node); + } + function emitClassDeclaration(node: ClassDeclaration) { - write("var "); - emit(node.name); - write(" = (function ("); - var baseTypeNode = getClassBaseTypeNode(node); + return emitClassLikeDeclaration(node); + } + + function emitClassLikeDeclaration(node: ClassLikeDeclaration) { + if (languageVersion < ScriptTarget.ES6) { + emitClassLikeDeclarationBelowES6(node); + } + else { + emitClassLikeDeclarationForES6AndHigher(node); + } + } + + function emitClassLikeDeclarationForES6AndHigher(node: ClassLikeDeclaration) { + let thisNodeIsDecorated = nodeIsDecorated(node); + if (node.kind === SyntaxKind.ClassDeclaration) { + if (thisNodeIsDecorated) { + // To preserve the correct runtime semantics when decorators are applied to the class, + // the emit needs to follow one of the following rules: + // + // * For a local class declaration: + // + // @dec class C { + // } + // + // The emit should be: + // + // let C = class { + // }; + // Object.defineProperty(C, "name", { value: "C", configurable: true }); + // C = __decorate([dec], C); + // + // * For an exported class declaration: + // + // @dec export class C { + // } + // + // The emit should be: + // + // export let C = class { + // }; + // Object.defineProperty(C, "name", { value: "C", configurable: true }); + // C = __decorate([dec], C); + // + // * For a default export of a class declaration with a name: + // + // @dec default export class C { + // } + // + // The emit should be: + // + // let C = class { + // } + // Object.defineProperty(C, "name", { value: "C", configurable: true }); + // C = __decorate([dec], C); + // export default C; + // + // * For a default export of a class declaration without a name: + // + // @dec default export class { + // } + // + // The emit should be: + // + // let _default = class { + // } + // _default = __decorate([dec], _default); + // export default _default; + // + if (isES6ExportedDeclaration(node) && !(node.flags & NodeFlags.Default)) { + write("export "); + } + + write("let "); + emitDeclarationName(node); + write(" = "); + } + else if (isES6ExportedDeclaration(node)) { + write("export "); + if (node.flags & NodeFlags.Default) { + write("default "); + } + } + } + + // If the class has static properties, and it's a class expression, then we'll need + // to specialize the emit a bit. for a class expression of the form: + // + // class C { static a = 1; static b = 2; ... } + // + // We'll emit: + // + // (_temp = class C { ... }, _temp.a = 1, _temp.b = 2, _temp) + // + // This keeps the expression as an expression, while ensuring that the static parts + // of it have been initialized by the time it is used. + let staticProperties = getInitializedProperties(node, /*static:*/ true); + let isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === SyntaxKind.ClassExpression; + let tempVariable: Identifier; + + if (isClassExpressionWithStaticProperties) { + tempVariable = createAndRecordTempVariable(TempFlags.Auto); + write("("); + increaseIndent(); + emit(tempVariable); + write(" = ") + } + + write("class"); + + // check if this is an "export default class" as it may not have a name. Do not emit the name if the class is decorated. + if ((node.name || !(node.flags & NodeFlags.Default)) && !thisNodeIsDecorated) { + write(" "); + emitDeclarationName(node); + } + + var baseTypeNode = getClassExtendsHeritageClauseElement(node); + if (baseTypeNode) { + write(" extends "); + emit(baseTypeNode.expression); + } + + write(" {"); + increaseIndent(); + scopeEmitStart(node); + writeLine(); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES6AndHigher(node); + decreaseIndent(); + writeLine(); + emitToken(SyntaxKind.CloseBraceToken, node.members.end); + scopeEmitEnd(); + + // For a decorated class, we need to assign its name (if it has one). This is because we emit + // the class as a class expression to avoid the double-binding of the identifier: + // + // let C = class { + // } + // Object.defineProperty(C, "name", { value: "C", configurable: true }); + // + if (thisNodeIsDecorated) { + write(";"); + if (node.name) { + writeLine(); + write("Object.defineProperty("); + emitDeclarationName(node); + write(", \"name\", { value: \""); + emitDeclarationName(node); + write("\", configurable: true });"); + writeLine(); + } + } + + // Emit static property assignment. Because classDeclaration is lexically evaluated, + // it is safe to emit static property assignment after classDeclaration + // From ES6 specification: + // HasLexicalDeclaration (N) : Determines if the argument identifier has a binding in this environment record that was created using + // a lexical declaration such as a LexicalDeclaration or a ClassDeclaration. + + if (isClassExpressionWithStaticProperties) { + for (var property of staticProperties) { + write(","); + writeLine(); + emitPropertyDeclaration(node, property, /*receiver:*/ tempVariable, /*isExpression:*/ true); + } + write(","); + writeLine(); + emit(tempVariable); + decreaseIndent(); + write(")"); + } + else { + writeLine(); + emitPropertyDeclarations(node, staticProperties); + emitDecoratorsOfClass(node); + } + + // If this is an exported class, but not on the top level (i.e. on an internal + // module), export it + if (!isES6ExportedDeclaration(node) && (node.flags & NodeFlags.Export)) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } + else if (isES6ExportedDeclaration(node) && (node.flags & NodeFlags.Default) && thisNodeIsDecorated) { + // if this is a top level default export of decorated class, write the export after the declaration. + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + + function emitClassLikeDeclarationBelowES6(node: ClassLikeDeclaration) { + if (node.kind === SyntaxKind.ClassDeclaration) { + write("var "); + emitDeclarationName(node); + write(" = "); + } + + write("(function ("); + let baseTypeNode = getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { write("_super"); } write(") {"); + let saveTempFlags = tempFlags; + let saveTempVariables = tempVariables; + let saveTempParameters = tempParameters; + let saveComputedPropertyNamesToGeneratedNames = computedPropertyNamesToGeneratedNames; + tempFlags = 0; + tempVariables = undefined; + tempParameters = undefined; + computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); write("__extends("); - emit(node.name); + emitDeclarationName(node); write(", _super);"); emitEnd(baseTypeNode); } writeLine(); - emitConstructorOfClass(); - emitMemberFunctions(node); - emitMemberAssignments(node, NodeFlags.Static); + emitConstructor(node, baseTypeNode); + emitMemberFunctionsForES5AndLower(node); + emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ true)); writeLine(); - function emitClassReturnStatement() { + emitDecoratorsOfClass(node); + writeLine(); + emitToken(SyntaxKind.CloseBraceToken, node.members.end, () => { write("return "); - emitNode(node.name); - } - emitToken(SyntaxKind.CloseBraceToken, node.members.end, emitClassReturnStatement); + emitDeclarationName(node); + }); write(";"); + emitTempDeclarations(/*newLine*/ true); + tempFlags = saveTempFlags; + tempVariables = saveTempVariables; + tempParameters = saveTempParameters; + computedPropertyNamesToGeneratedNames = saveComputedPropertyNamesToGeneratedNames; decreaseIndent(); writeLine(); emitToken(SyntaxKind.CloseBraceToken, node.members.end); @@ -4201,103 +3704,245 @@ module ts { emitStart(node); write(")("); if (baseTypeNode) { - emit(baseTypeNode.typeName); + emit(baseTypeNode.expression); } - write(");"); - emitEnd(node); - if (node.flags & NodeFlags.Export) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emit(node.name); - emitEnd(node); + write(")"); + if (node.kind === SyntaxKind.ClassDeclaration) { write(";"); } - if (languageVersion < ScriptTarget.ES6 && node.parent === currentSourceFile) { + emitEnd(node); + + if (node.kind === SyntaxKind.ClassDeclaration) { + emitExportMemberAssignment(node); + } + + if (languageVersion < ScriptTarget.ES6 && node.parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } + } - function emitConstructorOfClass() { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - var saveTempParameters = tempParameters; - tempCount = 0; - tempVariables = undefined; - tempParameters = undefined; - // Emit the constructor overload pinned comments - forEach(node.members, member => { - if (member.kind === SyntaxKind.Constructor && !(member).body) { - emitPinnedOrTripleSlashComments(member); - } - }); + function emitClassMemberPrefix(node: ClassLikeDeclaration, member: Node) { + emitDeclarationName(node); + if (!(member.flags & NodeFlags.Static)) { + write(".prototype"); + } + } + + function emitDecoratorsOfClass(node: ClassLikeDeclaration) { + emitDecoratorsOfMembers(node, /*staticFlag*/ 0); + emitDecoratorsOfMembers(node, NodeFlags.Static); + emitDecoratorsOfConstructor(node); + } - var ctor = getFirstConstructorWithBody(node); - if (ctor) { - emitLeadingComments(ctor); + function emitDecoratorsOfConstructor(node: ClassLikeDeclaration) { + let constructor = getFirstConstructorWithBody(node); + if (constructor) { + emitDecoratorsOfParameters(node, constructor); + } + + if (!nodeIsDecorated(node)) { + return; + } + + // Emit the call to __decorate. Given the class: + // + // @dec + // class C { + // } + // + // The emit for the class is: + // + // C = __decorate([dec], C); + // + + writeLine(); + emitStart(node); + emitDeclarationName(node); + write(" = "); + emitDecorateStart(node.decorators); + emitDeclarationName(node); + write(");"); + emitEnd(node); + writeLine(); + } + + function emitDecoratorsOfMembers(node: ClassLikeDeclaration, staticFlag: NodeFlags) { + forEach(node.members, member => { + if ((member.flags & NodeFlags.Static) !== staticFlag) { + return; } - emitStart(ctor || node); - write("function "); - emit(node.name); - emitSignatureParameters(ctor); - write(" {"); - scopeEmitStart(node, "constructor"); - increaseIndent(); - if (ctor) { - emitDetachedComments((ctor.body).statements); - } - emitCaptureThisForNodeIfNecessary(node); - if (ctor) { - emitDefaultValueAssignments(ctor); - emitRestParameter(ctor); - if (baseTypeNode) { - var superCall = findInitialSuperCall(ctor); - if (superCall) { - writeLine(); - emit(superCall); + + let decorators: NodeArray; + switch (member.kind) { + case SyntaxKind.MethodDeclaration: + // emit decorators of the method's parameters + emitDecoratorsOfParameters(node, member); + decorators = member.decorators; + break; + + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + let accessors = getAllAccessorDeclarations(node.members, member); + if (member !== accessors.firstAccessor) { + // skip the second accessor as we processed it with the first. + return; } - } - emitParameterPropertyAssignments(ctor); + + if (accessors.setAccessor) { + // emit decorators of the set accessor parameter + emitDecoratorsOfParameters(node, accessors.setAccessor); + } + + // get the decorators from the first decorated accessor. + decorators = accessors.firstAccessor.decorators; + if (!decorators && accessors.secondAccessor) { + decorators = accessors.secondAccessor.decorators; + } + break; + + case SyntaxKind.PropertyDeclaration: + decorators = member.decorators; + break; + + default: + // Constructor cannot be decorated, and its parameters are handled in emitDecoratorsOfConstructor + // Other members (i.e. IndexSignature) cannot be decorated. + return; + } + + if (!decorators) { + return; + } + + // Emit the call to __decorate. Given the following: + // + // class C { + // @dec method() {} + // @dec get accessor() {} + // @dec prop; + // } + // + // The emit for a method is: + // + // Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + // + // The emit for an accessor is: + // + // Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + // + // The emit for a property is: + // + // __decorate([dec], C.prototype, "prop"); + // + + writeLine(); + emitStart(member); + if (member.kind !== SyntaxKind.PropertyDeclaration) { + write("Object.defineProperty("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write(", "); + } + + emitDecorateStart(decorators); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + + if (member.kind !== SyntaxKind.PropertyDeclaration) { + write(", Object.getOwnPropertyDescriptor("); + emitStart(member.name); + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); + emitEnd(member.name); + write("))"); + } + + write(");"); + emitEnd(member); + writeLine(); + }); + } + + function emitDecoratorsOfParameters(node: ClassLikeDeclaration, member: FunctionLikeDeclaration) { + forEach(member.parameters, (parameter, parameterIndex) => { + if (!nodeIsDecorated(parameter)) { + return; + } + + // Emit the decorators for a parameter. Given the following: + // + // class C { + // constructor(@dec p) { } + // method(@dec p) { } + // set accessor(@dec value) { } + // } + // + // The emit for a constructor is: + // + // __decorate([dec], C, void 0, 0); + // + // The emit for a parameter is: + // + // __decorate([dec], C.prototype, "method", 0); + // + // The emit for an accessor is: + // + // __decorate([dec], C.prototype, "accessor", 0); + // + + writeLine(); + emitStart(parameter); + emitDecorateStart(parameter.decorators); + emitStart(parameter.name); + + if (member.kind === SyntaxKind.Constructor) { + emitDeclarationName(node); + write(", void 0"); } else { - if (baseTypeNode) { - writeLine(); - emitStart(baseTypeNode); - write("_super.apply(this, arguments);"); - emitEnd(baseTypeNode); - } + emitClassMemberPrefix(node, member); + write(", "); + emitExpressionForPropertyName(member.name); } - emitMemberAssignments(node, /*nonstatic*/0); - if (ctor) { - var statements: Node[] = (ctor.body).statements; - if (superCall) statements = statements.slice(1); - emitLines(statements); - } - emitTempDeclarations(/*newLine*/ true); + + write(", "); + write(String(parameterIndex)); + emitEnd(parameter.name); + write(");"); + emitEnd(parameter); writeLine(); - if (ctor) { - emitLeadingCommentsOfPosition((ctor.body).statements.end); + }); + } + + function emitDecorateStart(decorators: Decorator[]): void { + write("__decorate(["); + let decoratorCount = decorators.length; + for (let i = 0; i < decoratorCount; i++) { + if (i > 0) { + write(", "); } - decreaseIndent(); - emitToken(SyntaxKind.CloseBraceToken, ctor ? (ctor.body).statements.end : node.members.end); - scopeEmitEnd(); - emitEnd(ctor || node); - if (ctor) { - emitTrailingComments(ctor); - } - tempCount = saveTempCount; - tempVariables = saveTempVariables; - tempParameters = saveTempParameters; + let decorator = decorators[i]; + emitStart(decorator); + emit(decorator.expression); + emitEnd(decorator); } + write("], "); } function emitInterfaceDeclaration(node: InterfaceDeclaration) { - emitPinnedOrTripleSlashComments(node); + emitOnlyPinnedOrTripleSlashComments(node); } function shouldEmitEnumDeclaration(node: EnumDeclaration) { - var isConstEnum = isConst(node); - return !isConstEnum || compilerOptions.preserveConstEnums; + let isConstEnum = isConst(node); + return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation; } function emitEnumDeclaration(node: EnumDeclaration) { @@ -4306,8 +3951,11 @@ module ts { return; } - if (!(node.flags & NodeFlags.Export)) { + if (!(node.flags & NodeFlags.Export) || isES6ExportedDeclaration(node)) { emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); emitEnd(node); @@ -4317,7 +3965,7 @@ module ts { emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getGeneratedNameForNode(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") {"); increaseIndent(); @@ -4333,7 +3981,7 @@ module ts { emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (node.flags & NodeFlags.Export) { + if (!isES6ExportedDeclaration(node) && node.flags & NodeFlags.Export) { writeLine(); emitStart(node); write("var "); @@ -4349,11 +3997,11 @@ module ts { } function emitEnumMember(node: EnumMember) { - var enumParent = node.parent; + let enumParent = node.parent; emitStart(node); - write(resolver.getGeneratedNameForNode(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); - write(resolver.getGeneratedNameForNode(enumParent)); + write(getGeneratedNameForNode(enumParent)); write("["); emitExpressionForPropertyName(node.name); write("] = "); @@ -4365,15 +4013,12 @@ module ts { } function writeEnumMemberDeclarationValue(member: EnumMember) { - if (!member.initializer || isConst(member.parent)) { - var value = resolver.getConstantValue(member); - if (value !== undefined) { - write(value.toString()); - return; - } + let value = resolver.getConstantValue(member); + if (value !== undefined) { + write(value.toString()); + return; } - - if (member.initializer) { + else if (member.initializer) { emit(member.initializer); } else { @@ -4383,24 +4028,27 @@ module ts { function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration: ModuleDeclaration): ModuleDeclaration { if (moduleDeclaration.body.kind === SyntaxKind.ModuleDeclaration) { - var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); + let recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } } function shouldEmitModuleDeclaration(node: ModuleDeclaration) { - return isInstantiatedModule(node, compilerOptions.preserveConstEnums); + return isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation); } function emitModuleDeclaration(node: ModuleDeclaration) { // Emit only if this module is non-ambient. - var shouldEmit = shouldEmitModuleDeclaration(node); + let shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } emitStart(node); + if (isES6ExportedDeclaration(node)) { + write("export "); + } write("var "); emit(node.name); write(";"); @@ -4409,16 +4057,18 @@ module ts { emitStart(node); write("(function ("); emitStart(node.name); - write(resolver.getGeneratedNameForNode(node)); + write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); if (node.body.kind === SyntaxKind.ModuleBlock) { - var saveTempCount = tempCount; - var saveTempVariables = tempVariables; - tempCount = 0; + let saveTempFlags = tempFlags; + let saveTempVariables = tempVariables; + tempFlags = 0; tempVariables = undefined; + emit(node.body); - tempCount = saveTempCount; + + tempFlags = saveTempFlags; tempVariables = saveTempVariables; } else { @@ -4430,12 +4080,13 @@ module ts { emit(node.body); decreaseIndent(); writeLine(); - var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; + let moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; emitToken(SyntaxKind.CloseBraceToken, moduleBlock.statements.end); scopeEmitEnd(); } write(")("); - if (node.flags & NodeFlags.Export) { + // write moduleDecl = containingModule.m only if it is not exported es6 module member + if ((node.flags & NodeFlags.Export) && !isES6ExportedDeclaration(node)) { emit(node.name); write(" = "); } @@ -4444,7 +4095,7 @@ module ts { emitModuleMemberName(node); write(" = {}));"); emitEnd(node); - if (languageVersion < ScriptTarget.ES6 && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) { + if (!isES6ExportedDeclaration(node) && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) { emitExportMemberAssignments(node.name); } } @@ -4456,198 +4107,338 @@ module ts { emitLiteral(moduleName); emitEnd(moduleName); emitToken(SyntaxKind.CloseParenToken, moduleName.end); - write(";"); } else { - write("require();"); + write("require()"); } } - function emitImportDeclaration(node: ImportDeclaration | ImportEqualsDeclaration) { - var info = getExternalImportInfo(node); - if (info) { - var declarationNode = info.declarationNode; - var namedImports = info.namedImports; + function getNamespaceDeclarationNode(node: ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration) { + if (node.kind === SyntaxKind.ImportEqualsDeclaration) { + return node; + } + let importClause = (node).importClause; + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + return importClause.namedBindings; + } + } + + function isDefaultImport(node: ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration) { + return node.kind === SyntaxKind.ImportDeclaration && (node).importClause && !!(node).importClause.name; + } + + function emitExportImportAssignments(node: Node) { + if (isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { + emitExportMemberAssignments((node).name); + } + forEachChild(node, emitExportImportAssignments); + } + + function emitImportDeclaration(node: ImportDeclaration) { + if (languageVersion < ScriptTarget.ES6) { + return emitExternalImportDeclaration(node); + } + + // ES6 import + if (node.importClause) { + let shouldEmitDefaultBindings = resolver.isReferencedAliasDeclaration(node.importClause); + let shouldEmitNamedBindings = node.importClause.namedBindings && resolver.isReferencedAliasDeclaration(node.importClause.namedBindings, /* checkChildren */ true); + if (shouldEmitDefaultBindings || shouldEmitNamedBindings) { + write("import "); + emitStart(node.importClause); + if (shouldEmitDefaultBindings) { + emit(node.importClause.name); + if (shouldEmitNamedBindings) { + write(", "); + } + } + if (shouldEmitNamedBindings) { + emitLeadingComments(node.importClause.namedBindings); + emitStart(node.importClause.namedBindings); + if (node.importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + write("* as "); + emit((node.importClause.namedBindings).name); + } + else { + write("{ "); + emitExportOrImportSpecifierList((node.importClause.namedBindings).elements, resolver.isReferencedAliasDeclaration); + write(" }"); + } + emitEnd(node.importClause.namedBindings); + emitTrailingComments(node.importClause.namedBindings); + } + + emitEnd(node.importClause); + write(" from "); + emit(node.moduleSpecifier); + write(";"); + } + } + else { + write("import "); + emit(node.moduleSpecifier); + write(";"); + } + } + + function emitExternalImportDeclaration(node: ImportDeclaration | ImportEqualsDeclaration) { + if (contains(externalImports, node)) { + let isExportedImport = node.kind === SyntaxKind.ImportEqualsDeclaration && (node.flags & NodeFlags.Export) !== 0; + let namespaceDeclaration = getNamespaceDeclarationNode(node); + if (compilerOptions.module !== ModuleKind.AMD) { emitLeadingComments(node); emitStart(node); - var moduleName = getExternalModuleName(node); - if (declarationNode) { - if (!(declarationNode.flags & NodeFlags.Export)) write("var "); - emitModuleMemberName(declarationNode); + if (namespaceDeclaration && !isDefaultImport(node)) { + // import x = require("foo") + // import * as x from "foo" + if (!isExportedImport) write("var "); + emitModuleMemberName(namespaceDeclaration); write(" = "); - emitRequire(moduleName); - } - else if (namedImports) { - write("var "); - write(resolver.getGeneratedNameForNode(node)); - write(" = "); - emitRequire(moduleName); } else { - emitRequire(moduleName); + // import "foo" + // import x from "foo" + // import { x, y } from "foo" + // import d, * as x from "foo" + // import d, { x, y } from "foo" + let isNakedImport = SyntaxKind.ImportDeclaration && !(node).importClause; + if (!isNakedImport) { + write("var "); + write(getGeneratedNameForNode(node)); + write(" = "); + } } + emitRequire(getExternalModuleName(node)); + if (namespaceDeclaration && isDefaultImport(node)) { + // import d, * as x from "foo" + write(", "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + } + write(";"); emitEnd(node); + emitExportImportAssignments(node); emitTrailingComments(node); } else { - if (declarationNode) { - if (declarationNode.flags & NodeFlags.Export) { - emitModuleMemberName(declarationNode); - write(" = "); - emit(declarationNode.name); - write(";"); - } + if (isExportedImport) { + emitModuleMemberName(namespaceDeclaration); + write(" = "); + emit(namespaceDeclaration.name); + write(";"); } + else if (namespaceDeclaration && isDefaultImport(node)) { + // import d, * as x from "foo" + write("var "); + emitModuleMemberName(namespaceDeclaration); + write(" = "); + write(getGeneratedNameForNode(node)); + write(";"); + } + emitExportImportAssignments(node); } } } function emitImportEqualsDeclaration(node: ImportEqualsDeclaration) { if (isExternalModuleImportEqualsDeclaration(node)) { - emitImportDeclaration(node); + emitExternalImportDeclaration(node); return; } // preserve old compiler's behavior: emit 'var' for import declaration (even if we do not consider them referenced) when // - current file is not external module // - import declaration is top level and target is value imported by entity name - if (resolver.isReferencedImportDeclaration(node) || + if (resolver.isReferencedAliasDeclaration(node) || (!isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node))) { emitLeadingComments(node); emitStart(node); - if (!(node.flags & NodeFlags.Export)) write("var "); + if (isES6ExportedDeclaration(node)) { + write("export "); + write("var "); + } + else if (!(node.flags & NodeFlags.Export)) { + write("var "); + } emitModuleMemberName(node); write(" = "); emit(node.moduleReference); write(";"); emitEnd(node); + emitExportImportAssignments(node); emitTrailingComments(node); } } function emitExportDeclaration(node: ExportDeclaration) { - if (node.moduleSpecifier) { - emitStart(node); - var generatedName = resolver.getGeneratedNameForNode(node); - if (compilerOptions.module !== ModuleKind.AMD) { - write("var "); - write(generatedName); - write(" = "); - emitRequire(getExternalModuleName(node)); - } - if (node.exportClause) { - // export { x, y, ... } - forEach(node.exportClause.elements, specifier => { - writeLine(); - emitStart(specifier); - emitContainingModuleName(specifier); - write("."); - emitNode(specifier.name); - write(" = "); - write(generatedName); - write("."); - emitNode(specifier.propertyName || specifier.name); - write(";"); - emitEnd(specifier); - }); - } - else { - // export * - var tempName = createTempVariable(node).text; - writeLine(); - write("for (var " + tempName + " in " + generatedName + ") if (!"); - emitContainingModuleName(node); - write(".hasOwnProperty(" + tempName + ")) "); - emitContainingModuleName(node); - write("[" + tempName + "] = " + generatedName + "[" + tempName + "];"); - } - emitEnd(node); - } - } - - function createExternalImportInfo(node: Node): ExternalImportInfo { - if (node.kind === SyntaxKind.ImportEqualsDeclaration) { - if ((node).moduleReference.kind === SyntaxKind.ExternalModuleReference) { - return { - rootNode: node, - declarationNode: node - }; - } - } - else if (node.kind === SyntaxKind.ImportDeclaration) { - var importClause = (node).importClause; - if (importClause) { - if (importClause.name) { - return { - rootNode: node, - declarationNode: importClause - }; - } - if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { - return { - rootNode: node, - declarationNode: importClause.namedBindings - }; - } - return { - rootNode: node, - namedImports: importClause.namedBindings, - localName: resolver.getGeneratedNameForNode(node) - }; - } - return { - rootNode: node - } - } - else if (node.kind === SyntaxKind.ExportDeclaration) { - if ((node).moduleSpecifier) { - return { - rootNode: node, - }; - } - } - } - - function createExternalModuleInfo(sourceFile: SourceFile) { - externalImports = []; - exportSpecifiers = {}; - forEach(sourceFile.statements, node => { - if (node.kind === SyntaxKind.ExportDeclaration && !(node).moduleSpecifier) { - forEach((node).exportClause.elements, specifier => { - var name = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name] || (exportSpecifiers[name] = [])).push(specifier); - }); - } - else { - var info = createExternalImportInfo(node); - if (info) { - if ((!info.declarationNode && !info.namedImports) || resolver.isReferencedImportDeclaration(node)) { - externalImports.push(info); + if (languageVersion < ScriptTarget.ES6) { + if (node.moduleSpecifier && (!node.exportClause || resolver.isValueAliasDeclaration(node))) { + emitStart(node); + let generatedName = getGeneratedNameForNode(node); + if (node.exportClause) { + // export { x, y, ... } from "foo" + if (compilerOptions.module !== ModuleKind.AMD) { + write("var "); + write(generatedName); + write(" = "); + emitRequire(getExternalModuleName(node)); + write(";"); + } + for (let specifier of node.exportClause.elements) { + if (resolver.isValueAliasDeclaration(specifier)) { + writeLine(); + emitStart(specifier); + emitContainingModuleName(specifier); + write("."); + emitNodeWithoutSourceMap(specifier.name); + write(" = "); + write(generatedName); + write("."); + emitNodeWithoutSourceMap(specifier.propertyName || specifier.name); + write(";"); + emitEnd(specifier); + } } } - } - }); - } - - function getExternalImportInfo(node: ImportDeclaration | ImportEqualsDeclaration): ExternalImportInfo { - if (externalImports) { - for (var i = 0; i < externalImports.length; i++) { - var info = externalImports[i]; - if (info.rootNode === node) { - return info; + else { + // export * from "foo" + writeLine(); + write("__export("); + if (compilerOptions.module !== ModuleKind.AMD) { + emitRequire(getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } + emitEnd(node); + } + } + else { + if (!node.exportClause || resolver.isValueAliasDeclaration(node)) { + emitStart(node); + write("export "); + if (node.exportClause) { + // export { x, y, ... } + write("{ "); + emitExportOrImportSpecifierList(node.exportClause.elements, resolver.isValueAliasDeclaration); + write(" }"); + } + else { + write("*"); + } + if (node.moduleSpecifier) { + write(" from "); + emitNodeWithoutSourceMap(node.moduleSpecifier); + } + write(";"); + emitEnd(node); } } } - function getFirstExportAssignment(sourceFile: SourceFile) { - return forEach(sourceFile.statements, node => { - if (node.kind === SyntaxKind.ExportAssignment) { - return node; + function emitExportOrImportSpecifierList(specifiers: ImportOrExportSpecifier[], shouldEmit: (node: Node) => boolean) { + Debug.assert(languageVersion >= ScriptTarget.ES6); + + let needsComma = false; + for (let specifier of specifiers) { + if (shouldEmit(specifier)) { + if (needsComma) { + write(", "); + } + emitStart(specifier); + if (specifier.propertyName) { + emitNodeWithoutSourceMap(specifier.propertyName); + write(" as "); + } + emitNodeWithoutSourceMap(specifier.name); + emitEnd(specifier); + needsComma = true; } - }); + } } - + + function emitExportAssignment(node: ExportAssignment) { + if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { + if (languageVersion >= ScriptTarget.ES6) { + writeLine(); + emitStart(node); + write("export default "); + var expression = node.expression; + emit(expression); + if (expression.kind !== SyntaxKind.FunctionDeclaration && + expression.kind !== SyntaxKind.ClassDeclaration) { + write(";"); + } + emitEnd(node); + } + else { + writeLine(); + emitStart(node); + emitContainingModuleName(node); + write(".default = "); + emit(node.expression); + write(";"); + emitEnd(node); + } + } + } + + function collectExternalModuleInfo(sourceFile: SourceFile) { + externalImports = []; + exportSpecifiers = {}; + exportEquals = undefined; + hasExportStars = false; + for (let node of sourceFile.statements) { + switch (node.kind) { + case SyntaxKind.ImportDeclaration: + if (!(node).importClause || + resolver.isReferencedAliasDeclaration((node).importClause, /*checkChildren*/ true)) { + // import "mod" + // import x from "mod" where x is referenced + // import * as x from "mod" where x is referenced + // import { x, y } from "mod" where at least one import is referenced + externalImports.push(node); + } + break; + case SyntaxKind.ImportEqualsDeclaration: + if ((node).moduleReference.kind === SyntaxKind.ExternalModuleReference && resolver.isReferencedAliasDeclaration(node)) { + // import x = require("mod") where x is referenced + externalImports.push(node); + } + break; + case SyntaxKind.ExportDeclaration: + if ((node).moduleSpecifier) { + if (!(node).exportClause) { + // export * from "mod" + externalImports.push(node); + hasExportStars = true; + } + else if (resolver.isValueAliasDeclaration(node)) { + // export { x, y } from "mod" where at least one export is a value symbol + externalImports.push(node); + } + } + else { + // export { x, y } + for (let specifier of (node).exportClause.elements) { + let name = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name] || (exportSpecifiers[name] = [])).push(specifier); + } + } + break; + case SyntaxKind.ExportAssignment: + if ((node).isExportEquals && !exportEquals) { + // export = x + exportEquals = node; + } + break; + } + } + } + function sortAMDModules(amdModules: {name: string; path: string}[]) { // AMD modules with declared variable names go first return amdModules.sort((moduleA, moduleB) => { @@ -4661,7 +4452,21 @@ module ts { }); } + function emitExportStarHelper() { + if (hasExportStars) { + writeLine(); + write("function __export(m) {"); + increaseIndent(); + writeLine(); + write("for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];"); + decreaseIndent(); + writeLine(); + write("}"); + } + } + function emitAMDModule(node: SourceFile, startIndex: number) { + collectExternalModuleInfo(node); writeLine(); write("define("); sortAMDModules(node.amdDependencies); @@ -4669,79 +4474,84 @@ module ts { write("\"" + node.amdModuleName + "\", "); } write("[\"require\", \"exports\""); - forEach(externalImports, info => { + for (let importNode of externalImports) { write(", "); - var moduleName = getExternalModuleName(info.rootNode); + let moduleName = getExternalModuleName(importNode); if (moduleName.kind === SyntaxKind.StringLiteral) { emitLiteral(moduleName); } else { write("\"\""); } - }); - forEach(node.amdDependencies, amdDependency => { - var text = "\"" + amdDependency.path + "\""; + } + for (let amdDependency of node.amdDependencies) { + let text = "\"" + amdDependency.path + "\""; write(", "); write(text); - }); + } write("], function (require, exports"); - forEach(externalImports, info => { + for (let importNode of externalImports) { write(", "); - if (info.declarationNode) { - emit(info.declarationNode.name); + let namespaceDeclaration = getNamespaceDeclarationNode(importNode); + if (namespaceDeclaration && !isDefaultImport(importNode)) { + emit(namespaceDeclaration.name); } else { - write(resolver.getGeneratedNameForNode(info.rootNode)); + write(getGeneratedNameForNode(importNode)); } - }); - forEach(node.amdDependencies, amdDependency => { + } + for (let amdDependency of node.amdDependencies) { if (amdDependency.name) { write(", "); write(amdDependency.name); } - }); + } write(") {"); increaseIndent(); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(/*newLine*/ true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { - writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("return "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); - write(";"); - emitEnd(exportAssignment); - } + emitExportEquals(/*emitAsReturn*/ true); decreaseIndent(); writeLine(); write("});"); } function emitCommonJSModule(node: SourceFile, startIndex: number) { + collectExternalModuleInfo(node); + emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(/*newLine*/ true); - var exportName = resolver.getExportAssignmentName(node); - if (exportName) { + emitExportEquals(/*emitAsReturn*/ false); + } + + function emitES6Module(node: SourceFile, startIndex: number) { + externalImports = undefined; + exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; + emitCaptureThisForNodeIfNecessary(node); + emitLinesStartingAt(node.statements, startIndex); + emitTempDeclarations(/*newLine*/ true); + // Emit exportDefault if it exists will happen as part + // or normal statement emit. + } + + function emitExportEquals(emitAsReturn: boolean) { + if (exportEquals && resolver.isValueAliasDeclaration(exportEquals)) { writeLine(); - var exportAssignment = getFirstExportAssignment(node); - emitStart(exportAssignment); - write("module.exports = "); - emitStart(exportAssignment.exportName); - write(exportName); - emitEnd(exportAssignment.exportName); + emitStart(exportEquals); + write(emitAsReturn ? "return " : "module.exports = "); + emit((exportEquals).expression); write(";"); - emitEnd(exportAssignment); + emitEnd(exportEquals); } } function emitDirectivePrologues(statements: Node[], startWithNewLine: boolean): number { - for (var i = 0; i < statements.length; ++i) { + for (let i = 0; i < statements.length; ++i) { if (isPrologueDirective(statements[i])) { if (startWithNewLine || i > 0) { writeLine(); @@ -4756,15 +4566,27 @@ module ts { return statements.length; } - function emitSourceFile(node: SourceFile) { - currentSourceFile = node; + function writeHelper(text: string): void { + let lines = text.split(/\r\n|\r|\n/g); + for (let i = 0; i < lines.length; ++i) { + let line = lines[i]; + if (line.length) { + writeLine(); + write(line); + } + } + } + + function emitSourceFileNode(node: SourceFile) { // Start new file on new line writeLine(); emitDetachedComments(node); // emit prologue directives prior to __extends var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); - if (!extendsEmitted && resolver.getNodeCheckFlags(node) & NodeCheckFlags.EmitExtends) { + // Only Emit __extends function when target ES5. + // For target ES6 and above, we can emit classDeclaration as if. + if ((languageVersion < ScriptTarget.ES6) && (!extendsEmitted && resolver.getNodeCheckFlags(node) & NodeCheckFlags.EmitExtends)) { writeLine(); write("var __extends = this.__extends || function (d, b) {"); increaseIndent(); @@ -4781,9 +4603,28 @@ module ts { write("};"); extendsEmitted = true; } + if (!decorateEmitted && resolver.getNodeCheckFlags(node) & NodeCheckFlags.EmitDecorate) { + writeHelper(` +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +};`); + decorateEmitted = true; + } if (isExternalModule(node)) { - createExternalModuleInfo(node); - if (compilerOptions.module === ModuleKind.AMD) { + if (languageVersion >= ScriptTarget.ES6) { + emitES6Module(node, startIndex); + } + else if (compilerOptions.module === ModuleKind.AMD) { emitAMDModule(node, startIndex); } else { @@ -4793,6 +4634,8 @@ module ts { else { externalImports = undefined; exportSpecifiers = undefined; + exportEquals = undefined; + hasExportStars = false; emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); emitTempDeclarations(/*newLine*/ true); @@ -4801,21 +4644,21 @@ module ts { emitLeadingComments(node.endOfFileToken); } - function emitNode(node: Node, disableComments?:boolean): void { + function emitNodeWithoutSourceMap(node: Node, allowGeneratedIdentifiers?: boolean): void { if (!node) { return; } if (node.flags & NodeFlags.Ambient) { - return emitPinnedOrTripleSlashComments(node); + return emitOnlyPinnedOrTripleSlashComments(node); } - var emitComments = !disableComments && shouldEmitLeadingAndTrailingComments(node); + let emitComments = shouldEmitLeadingAndTrailingComments(node); if (emitComments) { emitLeadingComments(node); } - emitJavaScriptWorker(node); + emitJavaScriptWorker(node, allowGeneratedIdentifiers); if (emitComments) { emitTrailingComments(node); @@ -4825,7 +4668,7 @@ module ts { function shouldEmitLeadingAndTrailingComments(node: Node) { switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow - // the specilized methods for each to handle the comments on the nodes. + // the specialized methods for each to handle the comments on the nodes. case SyntaxKind.InterfaceDeclaration: case SyntaxKind.FunctionDeclaration: case SyntaxKind.ImportDeclaration: @@ -4845,15 +4688,28 @@ module ts { return shouldEmitEnumDeclaration(node); } + // If this is the expression body of an arrow function that we're down-leveling, + // then we don't want to emit comments when we emit the body. It will have already + // been taken care of when we emitted the 'return' statement for the function + // expression body. + if (node.kind !== SyntaxKind.Block && + node.parent && + node.parent.kind === SyntaxKind.ArrowFunction && + (node.parent).body === node && + compilerOptions.target <= ScriptTarget.ES5) { + + return false; + } + // Emit comments for everything else. return true; } - function emitJavaScriptWorker(node: Node) { + function emitJavaScriptWorker(node: Node, allowGeneratedIdentifiers: boolean = true) { // Check if the node can be emitted regardless of the ScriptTarget switch (node.kind) { case SyntaxKind.Identifier: - return emitIdentifier(node); + return emitIdentifier(node, allowGeneratedIdentifiers); case SyntaxKind.Parameter: return emitParameter(node); case SyntaxKind.MethodDeclaration: @@ -4982,6 +4838,8 @@ module ts { return emitDebuggerStatement(node); case SyntaxKind.VariableDeclaration: return emitVariableDeclaration(node); + case SyntaxKind.ClassExpression: + return emitClassExpression(node); case SyntaxKind.ClassDeclaration: return emitClassDeclaration(node); case SyntaxKind.InterfaceDeclaration: @@ -4998,8 +4856,10 @@ module ts { return emitImportEqualsDeclaration(node); case SyntaxKind.ExportDeclaration: return emitExportDeclaration(node); + case SyntaxKind.ExportAssignment: + return emitExportAssignment(node); case SyntaxKind.SourceFile: - return emitSourceFile(node); + return emitSourceFileNode(node); } } @@ -5009,7 +4869,8 @@ module ts { function getLeadingCommentsWithoutDetachedComments() { // get the leading comments from detachedPos - var leadingComments = getLeadingCommentRanges(currentSourceFile.text, detachedCommentsInfo[detachedCommentsInfo.length - 1].detachedCommentEndPos); + let leadingComments = getLeadingCommentRanges(currentSourceFile.text, + detachedCommentsInfo[detachedCommentsInfo.length - 1].detachedCommentEndPos); if (detachedCommentsInfo.length - 1) { detachedCommentsInfo.pop(); } @@ -5020,44 +4881,73 @@ module ts { return leadingComments; } + function filterComments(ranges: CommentRange[], onlyPinnedOrTripleSlashComments: boolean): CommentRange[] { + // If we're removing comments, then we want to strip out all but the pinned or + // triple slash comments. + if (ranges && onlyPinnedOrTripleSlashComments) { + ranges = filter(ranges, isPinnedOrTripleSlashComment); + if (ranges.length === 0) { + return undefined; + } + } + + return ranges; + } + function getLeadingCommentsToEmit(node: Node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { if (node.parent.kind === SyntaxKind.SourceFile || node.pos !== node.parent.pos) { - var leadingComments: CommentRange[]; if (hasDetachedComments(node.pos)) { // get comments without detached comments - leadingComments = getLeadingCommentsWithoutDetachedComments(); + return getLeadingCommentsWithoutDetachedComments(); } else { // get the leading comments from the node - leadingComments = getLeadingCommentRangesOfNode(node, currentSourceFile); + return getLeadingCommentRangesOfNode(node, currentSourceFile); } - return leadingComments; } } } - function emitLeadingDeclarationComments(node: Node) { - var leadingComments = getLeadingCommentsToEmit(node); + function getTrailingCommentsToEmit(node: Node) { + // Emit the trailing comments only if the parent's pos doesn't match because parent should take care of emitting these comments + if (node.parent) { + if (node.parent.kind === SyntaxKind.SourceFile || node.end !== node.parent.end) { + return getTrailingCommentRanges(currentSourceFile.text, node.end); + } + } + } + + function emitOnlyPinnedOrTripleSlashComments(node: Node) { + emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ true); + } + + function emitLeadingComments(node: Node) { + return emitLeadingCommentsWorker(node, /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + } + + function emitLeadingCommentsWorker(node: Node, onlyPinnedOrTripleSlashComments: boolean) { + // If the caller only wants pinned or triple slash comments, then always filter + // down to that set. Otherwise, filter based on the current compiler options. + let leadingComments = filterComments(getLeadingCommentsToEmit(node), onlyPinnedOrTripleSlashComments); + emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); + // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } - function emitTrailingDeclarationComments(node: Node) { + function emitTrailingComments(node: Node) { // Emit the trailing comments only if the parent's end doesn't match - if (node.parent) { - if (node.parent.kind === SyntaxKind.SourceFile || node.end !== node.parent.end) { - var trailingComments = getTrailingCommentRanges(currentSourceFile.text, node.end); - // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ - emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ false, newLine, writeComment); - } - } + var trailingComments = filterComments(getTrailingCommentsToEmit(node), /*onlyPinnedOrTripleSlashComments:*/ compilerOptions.removeComments); + + // trailing comments are emitted at space/*trailing comment1 */space/*trailing comment*/ + emitComments(currentSourceFile, writer, trailingComments, /*trailingSeparator*/ false, newLine, writeComment); } - function emitLeadingCommentsOfLocalPosition(pos: number) { - var leadingComments: CommentRange[]; + function emitLeadingCommentsOfPosition(pos: number) { + let leadingComments: CommentRange[]; if (hasDetachedComments(pos)) { // get comments without detached comments leadingComments = getLeadingCommentsWithoutDetachedComments(); @@ -5066,21 +4956,24 @@ module ts { // get the leading comments from the node leadingComments = getLeadingCommentRanges(currentSourceFile.text, pos); } + + leadingComments = filterComments(leadingComments, compilerOptions.removeComments); emitNewLineBeforeLeadingComments(currentSourceFile, writer, { pos: pos, end: pos }, leadingComments); + // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space emitComments(currentSourceFile, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } - function emitDetachedCommentsAtPosition(node: TextRange) { - var leadingComments = getLeadingCommentRanges(currentSourceFile.text, node.pos); + function emitDetachedComments(node: TextRange) { + let leadingComments = getLeadingCommentRanges(currentSourceFile.text, node.pos); if (leadingComments) { - var detachedComments: CommentRange[] = []; - var lastComment: CommentRange; + let detachedComments: CommentRange[] = []; + let lastComment: CommentRange; forEach(leadingComments, comment => { if (lastComment) { - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, lastComment.end); - var commentLine = getLineOfLocalPosition(currentSourceFile, comment.pos); + let lastCommentLine = getLineOfLocalPosition(currentSourceFile, lastComment.end); + let commentLine = getLineOfLocalPosition(currentSourceFile, comment.pos); if (commentLine >= lastCommentLine + 2) { // There was a blank line between the last comment and this comment. This @@ -5098,13 +4991,13 @@ module ts { // All comments look like they could have been part of the copyright header. Make // sure there is at least one blank line between it and the node. If not, it's not // a copyright header. - var lastCommentLine = getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); - var nodeLine = getLineOfLocalPosition(currentSourceFile, skipTrivia(currentSourceFile.text, node.pos)); + let lastCommentLine = getLineOfLocalPosition(currentSourceFile, detachedComments[detachedComments.length - 1].end); + let nodeLine = getLineOfLocalPosition(currentSourceFile, skipTrivia(currentSourceFile.text, node.pos)); if (nodeLine >= lastCommentLine + 2) { // Valid detachedComments emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, leadingComments); emitComments(currentSourceFile, writer, detachedComments, /*trailingSeparator*/ true, newLine, writeComment); - var currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; + let currentDetachedCommentInfo = { nodePos: node.pos, detachedCommentEndPos: detachedComments[detachedComments.length - 1].end }; if (detachedCommentsInfo) { detachedCommentsInfo.push(currentDetachedCommentInfo); } @@ -5116,46 +5009,18 @@ module ts { } } - function emitPinnedOrTripleSlashCommentsOfNode(node: Node) { - var pinnedComments = ts.filter(getLeadingCommentsToEmit(node), isPinnedOrTripleSlashComment); - - function isPinnedOrTripleSlashComment(comment: CommentRange) { - if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.asterisk) { - return currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.exclamation; - } - // Verify this is /// comment, but do the regexp match only when we first can find /// in the comment text - // so that we don't end up computing comment string and doing match for all // comments - else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.slash && - comment.pos + 2 < comment.end && - currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.slash && - currentSourceFile.text.substring(comment.pos, comment.end).match(fullTripleSlashReferencePathRegEx)) { - return true; - } + function isPinnedOrTripleSlashComment(comment: CommentRange) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.asterisk) { + return currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.exclamation; + } + // Verify this is /// comment, but do the regexp match only when we first can find /// in the comment text + // so that we don't end up computing comment string and doing match for all // comments + else if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.slash && + comment.pos + 2 < comment.end && + currentSourceFile.text.charCodeAt(comment.pos + 2) === CharacterCodes.slash && + currentSourceFile.text.substring(comment.pos, comment.end).match(fullTripleSlashReferencePathRegEx)) { + return true; } - - emitNewLineBeforeLeadingComments(currentSourceFile, writer, node, pinnedComments); - // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - emitComments(currentSourceFile, writer, pinnedComments, /*trailingSeparator*/ true, newLine, writeComment); - } - } - - function writeDeclarationFile(jsFilePath: string, sourceFile: SourceFile) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - // TODO(shkamat): Should we not write any declaration file if any of them can produce error, - // or should we just not write this file like we are doing now - if (!emitDeclarationResult.reportedDeclarationError) { - var declarationOutput = emitDeclarationResult.referencePathsOutput; - // apply additions - var appliedSyncOutputPos = 0; - forEach(emitDeclarationResult.aliasDeclarationEmitInfo, aliasEmitInfo => { - if (aliasEmitInfo.asynchronousOutput) { - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos, aliasEmitInfo.outputPos); - declarationOutput += aliasEmitInfo.asynchronousOutput; - appliedSyncOutputPos = aliasEmitInfo.outputPos; - } - }); - declarationOutput += emitDeclarationResult.synchronousDeclarationOutput.substring(appliedSyncOutputPos); - writeFile(host, diagnostics, removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, compilerOptions.emitBOM); } } @@ -5163,7 +5028,7 @@ module ts { emitJavaScript(jsFilePath, sourceFile); if (compilerOptions.declaration) { - writeDeclarationFile(jsFilePath, sourceFile); + writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); } } } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 9dc8a475527..bde4cec3f3f 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2,13 +2,13 @@ /// module ts { - var nodeConstructors = new Array Node>(SyntaxKind.Count); - /* @internal */ export var parseTime = 0; + let nodeConstructors = new Array Node>(SyntaxKind.Count); + /* @internal */ export let parseTime = 0; export function getNodeConstructor(kind: SyntaxKind): new () => Node { return nodeConstructors[kind] || (nodeConstructors[kind] = objectAllocator.getNodeConstructor(kind)); } - + export function createNode(kind: SyntaxKind): Node { return new (getNodeConstructor(kind))(); } @@ -27,8 +27,8 @@ module ts { function visitEachNode(cbNode: (node: Node) => T, nodes: Node[]) { if (nodes) { - for (var i = 0, len = nodes.length; i < len; i++) { - var result = cbNode(nodes[i]); + for (let node of nodes) { + let result = cbNode(node); if (result) { return result; } @@ -47,8 +47,8 @@ module ts { // The visitXXX functions could be written as local functions that close over the cbNode and cbNodeArray // callback parameters, but that causes a closure allocation for each invocation with noticeable effects // on performance. - var visitNodes: (cb: (node: Node | Node[]) => T, nodes: Node[]) => T = cbNodeArray ? visitNodeArray : visitEachNode; - var cbNodes = cbNodeArray || cbNode; + let visitNodes: (cb: (node: Node | Node[]) => T, nodes: Node[]) => T = cbNodeArray ? visitNodeArray : visitEachNode; + let cbNodes = cbNodeArray || cbNode; switch (node.kind) { case SyntaxKind.QualifiedName: return visitNode(cbNode, (node).left) || @@ -64,7 +64,8 @@ module ts { case SyntaxKind.ShorthandPropertyAssignment: case SyntaxKind.VariableDeclaration: case SyntaxKind.BindingElement: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).propertyName) || visitNode(cbNode, (node).dotDotDotToken) || visitNode(cbNode, (node).name) || @@ -76,7 +77,8 @@ module ts { case SyntaxKind.CallSignature: case SyntaxKind.ConstructSignature: case SyntaxKind.IndexSignature: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNodes(cbNodes, (node).typeParameters) || visitNodes(cbNodes, (node).parameters) || visitNode(cbNode, (node).type); @@ -88,13 +90,15 @@ module ts { case SyntaxKind.FunctionExpression: case SyntaxKind.FunctionDeclaration: case SyntaxKind.ArrowFunction: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).asteriskToken) || visitNode(cbNode, (node).name) || visitNode(cbNode, (node).questionToken) || visitNodes(cbNodes, (node).typeParameters) || visitNodes(cbNodes, (node).parameters) || visitNode(cbNode, (node).type) || + visitNode(cbNode, (node).equalsGreaterThanToken) || visitNode(cbNode, (node).body); case SyntaxKind.TypeReference: return visitNode(cbNode, (node).typeName) || @@ -120,6 +124,7 @@ module ts { return visitNodes(cbNodes, (node).properties); case SyntaxKind.PropertyAccessExpression: return visitNode(cbNode, (node).expression) || + visitNode(cbNode, (node).dotToken) || visitNode(cbNode, (node).name); case SyntaxKind.ElementAccessExpression: return visitNode(cbNode, (node).expression) || @@ -156,7 +161,9 @@ module ts { visitNode(cbNode, (node).right); case SyntaxKind.ConditionalExpression: return visitNode(cbNode, (node).condition) || + visitNode(cbNode, (node).questionToken) || visitNode(cbNode, (node).whenTrue) || + visitNode(cbNode, (node).colonToken) || visitNode(cbNode, (node).whenFalse); case SyntaxKind.SpreadElementExpression: return visitNode(cbNode, (node).expression); @@ -167,7 +174,8 @@ module ts { return visitNodes(cbNodes, (node).statements) || visitNode(cbNode, (node).endOfFileToken); case SyntaxKind.VariableStatement: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).declarationList); case SyntaxKind.VariableDeclarationList: return visitNodes(cbNodes, (node).declarations); @@ -206,7 +214,9 @@ module ts { visitNode(cbNode, (node).statement); case SyntaxKind.SwitchStatement: return visitNode(cbNode, (node).expression) || - visitNodes(cbNodes, (node).clauses); + visitNode(cbNode, (node).caseBlock); + case SyntaxKind.CaseBlock: + return visitNodes(cbNodes, (node).clauses); case SyntaxKind.CaseClause: return visitNode(cbNode, (node).expression) || visitNodes(cbNodes, (node).statements); @@ -222,42 +232,51 @@ module ts { visitNode(cbNode, (node).catchClause) || visitNode(cbNode, (node).finallyBlock); case SyntaxKind.CatchClause: - return visitNode(cbNode, (node).name) || - visitNode(cbNode, (node).type) || + return visitNode(cbNode, (node).variableDeclaration) || visitNode(cbNode, (node).block); + case SyntaxKind.Decorator: + return visitNode(cbNode, (node).expression); case SyntaxKind.ClassDeclaration: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, (node).name) || - visitNodes(cbNodes, (node).typeParameters) || - visitNodes(cbNodes, (node).heritageClauses) || - visitNodes(cbNodes, (node).members); + case SyntaxKind.ClassExpression: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, (node).name) || + visitNodes(cbNodes, (node).typeParameters) || + visitNodes(cbNodes, (node).heritageClauses) || + visitNodes(cbNodes, (node).members); case SyntaxKind.InterfaceDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).name) || visitNodes(cbNodes, (node).typeParameters) || visitNodes(cbNodes, (node).heritageClauses) || visitNodes(cbNodes, (node).members); case SyntaxKind.TypeAliasDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).name) || visitNode(cbNode, (node).type); case SyntaxKind.EnumDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).name) || visitNodes(cbNodes, (node).members); case SyntaxKind.EnumMember: return visitNode(cbNode, (node).name) || visitNode(cbNode, (node).initializer); case SyntaxKind.ModuleDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).name) || visitNode(cbNode, (node).body); case SyntaxKind.ImportEqualsDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).name) || visitNode(cbNode, (node).moduleReference); case SyntaxKind.ImportDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).importClause) || visitNode(cbNode, (node).moduleSpecifier); case SyntaxKind.ImportClause: @@ -269,7 +288,8 @@ module ts { case SyntaxKind.NamedExports: return visitNodes(cbNodes, (node).elements); case SyntaxKind.ExportDeclaration: - return visitNodes(cbNodes, node.modifiers) || + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, (node).exportClause) || visitNode(cbNode, (node).moduleSpecifier); case SyntaxKind.ImportSpecifier: @@ -277,8 +297,10 @@ module ts { return visitNode(cbNode, (node).propertyName) || visitNode(cbNode, (node).name); case SyntaxKind.ExportAssignment: - return visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, (node).exportName); + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, (node).expression) || + visitNode(cbNode, (node).type); case SyntaxKind.TemplateExpression: return visitNode(cbNode, (node).head) || visitNodes(cbNodes, (node).templateSpans); case SyntaxKind.TemplateSpan: @@ -287,8 +309,13 @@ module ts { return visitNode(cbNode, (node).expression); case SyntaxKind.HeritageClause: return visitNodes(cbNodes, (node).types); + case SyntaxKind.HeritageClauseElement: + return visitNode(cbNode, (node).expression) || + visitNodes(cbNodes, (node).typeArguments); case SyntaxKind.ExternalModuleReference: return visitNode(cbNode, (node).expression); + case SyntaxKind.MissingDeclaration: + return visitNodes(cbNodes, node.decorators); } } @@ -301,7 +328,7 @@ module ts { TypeMembers, // Members in interface or type literal ClassMembers, // Members in class declaration EnumMembers, // Members in enum declaration - TypeReferences, // Type references in extends or implements clause + HeritageClauseElement, // Elements in a heritage clause VariableDeclarations, // Variable declarations in variable statement ObjectBindingElements, // Binding elements in object binding list ArrayBindingElements, // Binding elements in array binding list @@ -333,7 +360,7 @@ module ts { case ParsingContext.TypeMembers: return Diagnostics.Property_or_signature_expected; case ParsingContext.ClassMembers: return Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected; case ParsingContext.EnumMembers: return Diagnostics.Enum_member_expected; - case ParsingContext.TypeReferences: return Diagnostics.Type_reference_expected; + case ParsingContext.HeritageClauseElement: return Diagnostics.Expression_expected; case ParsingContext.VariableDeclarations: return Diagnostics.Variable_declaration_expected; case ParsingContext.ObjectBindingElements: return Diagnostics.Property_destructuring_pattern_expected; case ParsingContext.ArrayBindingElements: return Diagnostics.Array_element_destructuring_pattern_expected; @@ -358,28 +385,29 @@ module ts { case SyntaxKind.ExportKeyword: return NodeFlags.Export; case SyntaxKind.DeclareKeyword: return NodeFlags.Ambient; case SyntaxKind.ConstKeyword: return NodeFlags.Const; + case SyntaxKind.DefaultKeyword: return NodeFlags.Default; } return 0; } function fixupParentReferences(sourceFile: SourceFile) { // normally parent references are set during binding. However, for clients that only need - // a syntax tree, and no semantic features, then the binding process is an unnecessary + // a syntax tree, and no semantic features, then the binding process is an unnecessary // overhead. This functions allows us to set all the parents, without all the expense of // binding. - var parent: Node = sourceFile; + let parent: Node = sourceFile; forEachChild(sourceFile, visitNode); return; function visitNode(n: Node): void { // walk down setting parents that differ from the parent we think it should be. This - // allows us to quickly bail out of setting parents for subtrees during incremental + // allows us to quickly bail out of setting parents for subtrees during incremental // parsing if (n.parent !== parent) { n.parent = parent; - var saveParent = parent; + let saveParent = parent; parent = n; forEachChild(n, visitNode); parent = saveParent; @@ -412,7 +440,7 @@ module ts { var text = oldText.substring(node.pos, node.end); } - // Ditch any existing LS children we may have created. This way we can avoid + // Ditch any existing LS children we may have created. This way we can avoid // moving them forward. node._children = undefined; node.pos += delta; @@ -431,8 +459,8 @@ module ts { array.pos += delta; array.end += delta; - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (let node of array) { + visitNode(node); } } } @@ -450,9 +478,9 @@ module ts { // We may need to update both the 'pos' and the 'end' of the element. - // If the 'pos' is before the start of the change, then we don't need to touch it. - // If it isn't, then the 'pos' must be inside the change. How we update it will - // depend if delta is positive or negative. If delta is positive then we have + // If the 'pos' is before the start of the change, then we don't need to touch it. + // If it isn't, then the 'pos' must be inside the change. How we update it will + // depend if delta is positive or negative. If delta is positive then we have // something like: // // -------------------AAA----------------- @@ -466,7 +494,7 @@ module ts { // -------------------XXXYYYYYYY----------------- // -------------------ZZZ----------------- // - // In this case, any element that started in the 'X' range will keep its position. + // In this case, any element that started in the 'X' range will keep its position. // However any element htat started after that will have their pos adjusted to be // at the end of the new range. i.e. any node that started in the 'Y' range will // be adjusted to have their start at the end of the 'Z' range. @@ -476,7 +504,7 @@ module ts { element.pos = Math.min(element.pos, changeRangeNewEnd); // If the 'end' is after the change range, then we always adjust it by the delta - // amount. However, if the end is in the change range, then how we adjust it + // amount. However, if the end is in the change range, then how we adjust it // will depend on if delta is positive or negative. If delta is positive then we // have something like: // @@ -491,7 +519,7 @@ module ts { // -------------------XXXYYYYYYY----------------- // -------------------ZZZ----------------- // - // In this case, any element that ended in the 'X' range will keep its position. + // In this case, any element that ended in the 'X' range will keep its position. // However any element htat ended after that will have their pos adjusted to be // at the end of the new range. i.e. any node that ended in the 'Y' range will // be adjusted to have their end at the end of the 'Z' range. @@ -500,7 +528,7 @@ module ts { element.end += delta; } else { - // Element ends in the change range. The element will keep its position if + // Element ends in the change range. The element will keep its position if // possible. Or Move backward to the new-end if it's in the 'Y' range. element.end = Math.min(element.end, changeRangeNewEnd); } @@ -514,7 +542,7 @@ module ts { function checkNodePositions(node: Node, aggressiveChecks: boolean) { if (aggressiveChecks) { - var pos = node.pos; + let pos = node.pos; forEachChild(node, child => { Debug.assert(child.pos >= pos); pos = child.end; @@ -539,7 +567,7 @@ module ts { function visitNode(child: IncrementalNode) { Debug.assert(child.pos <= child.end); if (child.pos > changeRangeOldEnd) { - // Node is entirely past the change range. We need to move both its pos and + // Node is entirely past the change range. We need to move both its pos and // end, forward or backward appropriately. moveElementEntirelyPastChangeRange(child, /*isArray:*/ false, delta, oldText, newText, aggressiveChecks); return; @@ -548,7 +576,7 @@ module ts { // Check if the element intersects the change range. If it does, then it is not // reusable. Also, we'll need to recurse to see what constituent portions we may // be able to use. - var fullEnd = child.end; + let fullEnd = child.end; if (fullEnd >= changeStart) { child.intersectsChange = true; child._children = undefined; @@ -577,15 +605,15 @@ module ts { // Check if the element intersects the change range. If it does, then it is not // reusable. Also, we'll need to recurse to see what constituent portions we may // be able to use. - var fullEnd = array.end; + let fullEnd = array.end; if (fullEnd >= changeStart) { array.intersectsChange = true; array._children = undefined; // Adjust the pos or end (or both) of the intersecting array accordingly. adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta); - for (var i = 0, n = array.length; i < n; i++) { - visitNode(array[i]); + for (let node of array) { + visitNode(node); } return; } @@ -602,39 +630,39 @@ module ts { // If the text changes with an insertion of / just before the semicolon then we end up with: // void foo() { //; } // - // If we were to just use the changeRange a is, then we would not rescan the { token + // If we were to just use the changeRange a is, then we would not rescan the { token // (as it does not intersect the actual original change range). Because an edit may // change the token touching it, we actually need to look back *at least* one token so - // that the prior token sees that change. - var maxLookahead = 1; + // that the prior token sees that change. + let maxLookahead = 1; - var start = changeRange.span.start; + let start = changeRange.span.start; // the first iteration aligns us with the change start. subsequent iteration move us to // the left by maxLookahead tokens. We only need to do this as long as we're not at the // start of the tree. - for (var i = 0; start > 0 && i <= maxLookahead; i++) { - var nearestNode = findNearestNodeStartingBeforeOrAtPosition(sourceFile, start); + for (let i = 0; start > 0 && i <= maxLookahead; i++) { + let nearestNode = findNearestNodeStartingBeforeOrAtPosition(sourceFile, start); Debug.assert(nearestNode.pos <= start); - var position = nearestNode.pos; + let position = nearestNode.pos; start = Math.max(0, position - 1); } - var finalSpan = createTextSpanFromBounds(start, textSpanEnd(changeRange.span)); - var finalLength = changeRange.newLength + (changeRange.span.start - start); + let finalSpan = createTextSpanFromBounds(start, textSpanEnd(changeRange.span)); + let finalLength = changeRange.newLength + (changeRange.span.start - start); return createTextChangeRange(finalSpan, finalLength); } function findNearestNodeStartingBeforeOrAtPosition(sourceFile: SourceFile, position: number): Node { - var bestResult: Node = sourceFile; - var lastNodeEntirelyBeforePosition: Node; + let bestResult: Node = sourceFile; + let lastNodeEntirelyBeforePosition: Node; forEachChild(sourceFile, visit); if (lastNodeEntirelyBeforePosition) { - var lastChildOfLastEntireNodeBeforePosition = getLastChild(lastNodeEntirelyBeforePosition); + let lastChildOfLastEntireNodeBeforePosition = getLastChild(lastNodeEntirelyBeforePosition); if (lastChildOfLastEntireNodeBeforePosition.pos > bestResult.pos) { bestResult = lastChildOfLastEntireNodeBeforePosition; } @@ -644,7 +672,7 @@ module ts { function getLastChild(node: Node): Node { while (true) { - var lastChild = getLastChildWorker(node); + let lastChild = getLastChildWorker(node); if (lastChild) { node = lastChild; } @@ -655,7 +683,7 @@ module ts { } function getLastChildWorker(node: Node): Node { - var last: Node = undefined; + let last: Node = undefined; forEachChild(node, child => { if (nodeIsPresent(child)) { last = child; @@ -671,7 +699,7 @@ module ts { return; } - // If the child intersects this position, then this node is currently the nearest + // If the child intersects this position, then this node is currently the nearest // node that starts before the position. if (child.pos <= position) { if (child.pos >= bestResult.pos) { @@ -682,7 +710,7 @@ module ts { // Now, the node may overlap the position, or it may end entirely before the // position. If it overlaps with the position, then either it, or one of its - // children must be the nearest node before the position. So we can just + // children must be the nearest node before the position. So we can just // recurse into this child to see if we can find something better. if (position < child.end) { // The nearest node is either this child, or one of the children inside @@ -698,15 +726,15 @@ module ts { Debug.assert(child.end <= position); // The child ends entirely before this position. Say you have the following // (where $ is the position) - // - // ? $ : <...> <...> // - // We would want to find the nearest preceding node in "complex expr 2". + // ? $ : <...> <...> + // + // We would want to find the nearest preceding node in "complex expr 2". // To support that, we keep track of this node, and once we're done searching // for a best node, we recurse down this node to see if we can find a good // result in it. // - // This approach allows us to quickly skip over nodes that are entirely + // This approach allows us to quickly skip over nodes that are entirely // before the position, while still allowing us to find any nodes in the // last one that might be what we want. lastNodeEntirelyBeforePosition = child; @@ -723,29 +751,29 @@ module ts { } function checkChangeRange(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks: boolean) { - var oldText = sourceFile.text; + let oldText = sourceFile.text; if (textChangeRange) { Debug.assert((oldText.length - textChangeRange.span.length + textChangeRange.newLength) === newText.length); if (aggressiveChecks || Debug.shouldAssert(AssertionLevel.VeryAggressive)) { - var oldTextPrefix = oldText.substr(0, textChangeRange.span.start); - var newTextPrefix = newText.substr(0, textChangeRange.span.start); + let oldTextPrefix = oldText.substr(0, textChangeRange.span.start); + let newTextPrefix = newText.substr(0, textChangeRange.span.start); Debug.assert(oldTextPrefix === newTextPrefix); - var oldTextSuffix = oldText.substring(textSpanEnd(textChangeRange.span), oldText.length); - var newTextSuffix = newText.substring(textSpanEnd(textChangeRangeNewSpan(textChangeRange)), newText.length); + let oldTextSuffix = oldText.substring(textSpanEnd(textChangeRange.span), oldText.length); + let newTextSuffix = newText.substring(textSpanEnd(textChangeRangeNewSpan(textChangeRange)), newText.length); Debug.assert(oldTextSuffix === newTextSuffix); } } } - // Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter + // Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter // indicates what changed between the 'text' that this SourceFile has and the 'newText'. - // The SourceFile will be created with the compiler attempting to reuse as many nodes from + // The SourceFile will be created with the compiler attempting to reuse as many nodes from // this file as possible. // // Note: this function mutates nodes from this SourceFile. That means any existing nodes - // from this SourceFile that are being held onto may change as a result (including + // from this SourceFile that are being held onto may change as a result (including // becoming detached from any SourceFile). It is recommended that this SourceFile not // be used once 'update' is called on it. export function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile { @@ -764,49 +792,49 @@ module ts { } // Make sure we're not trying to incrementally update a source file more than once. Once - // we do an update the original source file is considered unusbale from that point onwards. + // we do an update the original source file is considered unusbale from that point onwards. // // This is because we do incremental parsing in-place. i.e. we take nodes from the old // tree and give them new positions and parents. From that point on, trusting the old // tree at all is not possible as far too much of it may violate invariants. - var incrementalSourceFile = sourceFile; + let incrementalSourceFile = sourceFile; Debug.assert(!incrementalSourceFile.hasBeenIncrementallyParsed); incrementalSourceFile.hasBeenIncrementallyParsed = true; - var oldText = sourceFile.text; - var syntaxCursor = createSyntaxCursor(sourceFile); + let oldText = sourceFile.text; + let syntaxCursor = createSyntaxCursor(sourceFile); - // Make the actual change larger so that we know to reparse anything whose lookahead + // Make the actual change larger so that we know to reparse anything whose lookahead // might have intersected the change. - var changeRange = extendToAffectedRange(sourceFile, textChangeRange); + let changeRange = extendToAffectedRange(sourceFile, textChangeRange); checkChangeRange(sourceFile, newText, changeRange, aggressiveChecks); - // Ensure that extending the affected range only moved the start of the change range + // Ensure that extending the affected range only moved the start of the change range // earlier in the file. Debug.assert(changeRange.span.start <= textChangeRange.span.start); Debug.assert(textSpanEnd(changeRange.span) === textSpanEnd(textChangeRange.span)); Debug.assert(textSpanEnd(textChangeRangeNewSpan(changeRange)) === textSpanEnd(textChangeRangeNewSpan(textChangeRange))); - // The is the amount the nodes after the edit range need to be adjusted. It can be + // The is the amount the nodes after the edit range need to be adjusted. It can be // positive (if the edit added characters), negative (if the edit deleted characters) // or zero (if this was a pure overwrite with nothing added/removed). - var delta = textChangeRangeNewSpan(changeRange).length - changeRange.span.length; + let delta = textChangeRangeNewSpan(changeRange).length - changeRange.span.length; // If we added or removed characters during the edit, then we need to go and adjust all - // the nodes after the edit. Those nodes may move forward (if we inserted chars) or they + // the nodes after the edit. Those nodes may move forward (if we inserted chars) or they // may move backward (if we deleted chars). // // Doing this helps us out in two ways. First, it means that any nodes/tokens we want // to reuse are already at the appropriate position in the new text. That way when we // reuse them, we don't have to figure out if they need to be adjusted. Second, it makes // it very easy to determine if we can reuse a node. If the node's position is at where - // we are in the text, then we can reuse it. Otherwise we can't. If hte node's position + // we are in the text, then we can reuse it. Otherwise we can't. If the node's position // is ahead of us, then we'll need to rescan tokens. If the node's position is behind // us, then we'll need to skip it or crumble it as appropriate // // We will also adjust the positions of nodes that intersect the change range as well. // By doing this, we ensure that all the positions in the old tree are consistent, not - // just the positions of nodes entirely before/after the change range. By being + // just the positions of nodes entirely before/after the change range. By being // consistent, we can then easily map from positions to nodes in the old tree easily. // // Also, mark any syntax elements that intersect the changed span. We know, up front, @@ -817,14 +845,14 @@ module ts { // Now that we've set up our internal incremental state just proceed and parse the // source file in the normal fashion. When possible the parser will retrieve and // reuse nodes from the old tree. - // + // // Note: passing in 'true' for setNodeParents is very important. When incrementally // parsing, we will be reusing nodes from the old tree, and placing it into new - // parents. If we don't set the parents now, we'll end up with an observably - // inconsistent tree. Setting the parents on the new tree should be very fast. We + // parents. If we don't set the parents now, we'll end up with an observably + // inconsistent tree. Setting the parents on the new tree should be very fast. We // will immediately bail out of walking any subtrees when we can see that their parents // are already correct. - var result = parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /* setParentNode */ true) + let result = parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /* setParentNode */ true) return result; } @@ -837,7 +865,7 @@ module ts { /// Should be called only on prologue directives (isPrologueDirective(node) should be true) function isUseStrictPrologueDirective(sourceFile: SourceFile, node: Node): boolean { Debug.assert(isPrologueDirective(node)); - var nodeText = getSourceTextOfNodeFromSourceFile(sourceFile,(node).expression); + let nodeText = getSourceTextOfNodeFromSourceFile(sourceFile,(node).expression); // Note: the node text must be exactly "use strict" or 'use strict'. It is not ok for the // string to contain unicode escapes (as per ES5). @@ -871,22 +899,22 @@ module ts { } function createSyntaxCursor(sourceFile: SourceFile): SyntaxCursor { - var currentArray: NodeArray = sourceFile.statements; - var currentArrayIndex = 0; + let currentArray: NodeArray = sourceFile.statements; + let currentArrayIndex = 0; Debug.assert(currentArrayIndex < currentArray.length); - var current = currentArray[currentArrayIndex]; - var lastQueriedPosition = InvalidPosition.Value; + let current = currentArray[currentArrayIndex]; + let lastQueriedPosition = InvalidPosition.Value; return { currentNode(position: number) { - // Only compute the current node if the position is different than the last time - // we were asked. The parser commonly asks for the node at the same position + // Only compute the current node if the position is different than the last time + // we were asked. The parser commonly asks for the node at the same position // twice. Once to know if can read an appropriate list element at a certain point, // and then to actually read and consume the node. if (position !== lastQueriedPosition) { - // Much of the time the parser will need the very next node in the array that - // we just returned a node from.So just simply check for that case and move + // Much of the time the parser will need the very next node in the array that + // we just returned a node from.So just simply check for that case and move // forward in the array instead of searching for the node again. if (current && current.end === position && currentArrayIndex < (currentArray.length - 1)) { currentArrayIndex++; @@ -900,7 +928,7 @@ module ts { } } - // Cache this query so that we don't do any extra work if the parser calls back + // Cache this query so that we don't do any extra work if the parser calls back // into us. Note: this is very common as the parser will make pairs of calls like // 'isListElement -> parseListElement'. If we were unable to find a node when // called with 'isListElement', we don't want to redo the work when parseListElement @@ -912,7 +940,7 @@ module ts { return current; } }; - + // Finds the highest element in the tree we can find that starts at the provided position. // The element must be a direct child of some node list in the tree. This way after we // return it, we can easily return its next sibling in the list. @@ -943,8 +971,8 @@ module ts { if (position >= array.pos && position < array.end) { // position was in this array. Search through this array to see if we find a // viable element. - for (var i = 0, n = array.length; i < n; i++) { - var child = array[i]; + for (let i = 0, n = array.length; i < n; i++) { + let child = array[i]; if (child) { if (child.pos === position) { // Found the right node. We're done. @@ -955,7 +983,7 @@ module ts { } else { if (child.pos < position && position < child.end) { - // Position in somewhere within this child. Search in it and + // Position in somewhere within this child. Search in it and // stop searching in this array. forEachChild(child, visitNode, visitArray); return true; @@ -972,21 +1000,23 @@ module ts { } export function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes = false): SourceFile { - var start = new Date().getTime(); - var result = parseSourceFile(fileName, sourceText, languageVersion, /*syntaxCursor*/ undefined, setParentNodes); + let start = new Date().getTime(); + let result = parseSourceFile(fileName, sourceText, languageVersion, /*syntaxCursor*/ undefined, setParentNodes); parseTime += new Date().getTime() - start; return result; } function parseSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, syntaxCursor: SyntaxCursor, setParentNodes = false): SourceFile { - var parsingContext: ParsingContext = 0; - var identifiers: Map = {}; - var identifierCount = 0; - var nodeCount = 0; - var token: SyntaxKind; + const disallowInAndDecoratorContext = ParserContextFlags.DisallowIn | ParserContextFlags.Decorator; - var sourceFile = createNode(SyntaxKind.SourceFile, /*pos*/ 0); + let parsingContext: ParsingContext = 0; + let identifiers: Map = {}; + let identifierCount = 0; + let nodeCount = 0; + let token: SyntaxKind; + + let sourceFile = createNode(SyntaxKind.SourceFile, /*pos*/ 0); sourceFile.pos = 0; sourceFile.end = sourceText.length; @@ -1002,10 +1032,10 @@ module ts { // Whether or not we are in strict parsing mode. All that changes in strict parsing mode is // that some tokens that would be considered identifiers may be considered keywords. // - // When adding more parser context flags, consider which is the more common case that the - // flag will be in. This should be hte 'false' state for that flag. The reason for this is + // When adding more parser context flags, consider which is the more common case that the + // flag will be in. This should be the 'false' state for that flag. The reason for this is // that we don't store data in our nodes unless the value is in the *non-default* state. So, - // for example, more often than code 'allows-in' (or doesn't 'disallow-in'). We opt for + // for example, more often than code 'allows-in' (or doesn't 'disallow-in'). We opt for // 'disallow-in' set to 'false'. Otherwise, if we had 'allowsIn' set to 'true', then almost // all nodes would need extra state on them to store this info. // @@ -1014,7 +1044,7 @@ module ts { // // An important thing about these context concepts. By default they are effectively inherited // while parsing through every grammar production. i.e. if you don't change them, then when - // you parse a sub-production, it will have the same context values as hte parent production. + // you parse a sub-production, it will have the same context values as the parent production. // This is great most of the time. After all, consider all the 'expression' grammar productions // and how nearly all of them pass along the 'in' and 'yield' context values: // @@ -1025,28 +1055,28 @@ module ts { // EqualityExpression[?In, ?Yield] === RelationalExpression[?In, ?Yield] // EqualityExpression[?In, ?Yield] !== RelationalExpression[?In, ?Yield] // - // Where you have to be careful is then understanding what the points are in the grammar + // Where you have to be careful is then understanding what the points are in the grammar // where the values are *not* passed along. For example: // // SingleNameBinding[Yield,GeneratorParameter] // [+GeneratorParameter]BindingIdentifier[Yield] Initializer[In]opt // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt // - // Here this is saying that if the GeneratorParameter context flag is set, that we should + // Here this is saying that if the GeneratorParameter context flag is set, that we should // explicitly set the 'yield' context flag to false before calling into the BindingIdentifier // and we should explicitly unset the 'yield' context flag before calling into the Initializer. - // production. Conversely, if the GeneratorParameter context flag is not set, then we + // production. Conversely, if the GeneratorParameter context flag is not set, then we // should leave the 'yield' context flag alone. // - // Getting this all correct is tricky and requires careful reading of the grammar to + // Getting this all correct is tricky and requires careful reading of the grammar to // understand when these values should be changed versus when they should be inherited. // // Note: it should not be necessary to save/restore these flags during speculative/lookahead // parsing. These context flags are naturally stored and restored through normal recursive // descent parsing and unwinding. - var contextFlags: ParserContextFlags = 0; + let contextFlags: ParserContextFlags = 0; - // Whether or not we've had a parse error since creating the last AST node. If we have + // Whether or not we've had a parse error since creating the last AST node. If we have // encountered an error, it will be stored on the next AST node we create. Parse errors // can be broken down into three categories: // @@ -1057,7 +1087,7 @@ module ts { // by the 'parseExpected' function. // // 3) A token was present that no parsing function was able to consume. This type of error - // only occurs in the 'abortParsingListOrMoveToNextToken' function when the parser + // only occurs in the 'abortParsingListOrMoveToNextToken' function when the parser // decides to skip the token. // // In all of these cases, we want to mark the next node as having had an error before it. @@ -1066,17 +1096,17 @@ module ts { // node. in that event we would then not produce the same errors as we did before, causing // significant confusion problems. // - // Note: it is necessary that this value be saved/restored during speculative/lookahead - // parsing. During lookahead parsing, we will often create a node. That node will have + // Note: it is necessary that this value be saved/restored during speculative/lookahead + // parsing. During lookahead parsing, we will often create a node. That node will have // this value attached, and then this value will be set back to 'false'. If we decide to // rewind, we must get back to the same value we had prior to the lookahead. // // Note: any errors at the end of the file that do not precede a regular node, should get // attached to the EOF token. - var parseErrorBeforeNextFinishedNode: boolean = false; + let parseErrorBeforeNextFinishedNode: boolean = false; // Create and prime the scanner before parsing the source elements. - var scanner = createScanner(languageVersion, /*skipTrivia*/ true, sourceText, scanError); + let scanner = createScanner(languageVersion, /*skipTrivia*/ true, sourceText, scanError); token = nextToken(); processReferenceComments(sourceFile); @@ -1123,14 +1153,31 @@ module ts { setContextFlag(val, ParserContextFlags.GeneratorParameter); } + function setDecoratorContext(val: boolean) { + setContextFlag(val, ParserContextFlags.Decorator); + } + + function doOutsideOfContext(flags: ParserContextFlags, func: () => T): T { + let currentContextFlags = contextFlags & flags; + if (currentContextFlags) { + setContextFlag(false, currentContextFlags); + let result = func(); + setContextFlag(true, currentContextFlags); + return result; + } + + // no need to do anything special as we are not in any of the requested contexts + return func(); + } + function allowInAnd(func: () => T): T { if (contextFlags & ParserContextFlags.DisallowIn) { setDisallowInContext(false); - var result = func(); + let result = func(); setDisallowInContext(true); return result; } - + // no need to do anything special if 'in' is already allowed. return func(); } @@ -1142,7 +1189,7 @@ module ts { } setDisallowInContext(true); - var result = func(); + let result = func(); setDisallowInContext(false); return result; } @@ -1154,7 +1201,7 @@ module ts { } setYieldContext(true); - var result = func(); + let result = func(); setYieldContext(false); return result; } @@ -1162,7 +1209,7 @@ module ts { function doOutsideOfYieldContext(func: () => T): T { if (contextFlags & ParserContextFlags.Yield) { setYieldContext(false); - var result = func(); + let result = func(); setYieldContext(true); return result; } @@ -1171,6 +1218,18 @@ module ts { return func(); } + function doInDecoratorContext(func: () => T): T { + if (contextFlags & ParserContextFlags.Decorator) { + // no need to do anything special if we're already in the [Decorator] context. + return func(); + } + + setDecoratorContext(true); + let result = func(); + setDecoratorContext(false); + return result; + } + function inYieldContext() { return (contextFlags & ParserContextFlags.Yield) !== 0; } @@ -1187,27 +1246,31 @@ module ts { return (contextFlags & ParserContextFlags.DisallowIn) !== 0; } + function inDecoratorContext() { + return (contextFlags & ParserContextFlags.Decorator) !== 0; + } + function parseErrorAtCurrentToken(message: DiagnosticMessage, arg0?: any): void { - var start = scanner.getTokenPos(); - var length = scanner.getTextPos() - start; + let start = scanner.getTokenPos(); + let length = scanner.getTextPos() - start; parseErrorAtPosition(start, length, message, arg0); } function parseErrorAtPosition(start: number, length: number, message: DiagnosticMessage, arg0?: any): void { // Don't report another error if it would just be at the same position as the last error. - var lastError = lastOrUndefined(sourceFile.parseDiagnostics); + let lastError = lastOrUndefined(sourceFile.parseDiagnostics); if (!lastError || start !== lastError.start) { sourceFile.parseDiagnostics.push(createFileDiagnostic(sourceFile, start, length, message, arg0)); } - // Mark that we've encountered an error. We'll set an appropriate bit on the next + // Mark that we've encountered an error. We'll set an appropriate bit on the next // node we finish so that it can't be reused incrementally. parseErrorBeforeNextFinishedNode = true; } function scanError(message: DiagnosticMessage, length?: number) { - var pos = scanner.getTextPos(); + let pos = scanner.getTextPos(); parseErrorAtPosition(pos, length || 0, message); } @@ -1240,22 +1303,22 @@ module ts { } function speculationHelper(callback: () => T, isLookAhead: boolean): T { - // Keep track of the state we'll need to rollback to if lookahead fails (or if the + // Keep track of the state we'll need to rollback to if lookahead fails (or if the // caller asked us to always reset our state). - var saveToken = token; - var saveParseDiagnosticsLength = sourceFile.parseDiagnostics.length; - var saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode; + let saveToken = token; + let saveParseDiagnosticsLength = sourceFile.parseDiagnostics.length; + let saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode; // Note: it is not actually necessary to save/restore the context flags here. That's // because the saving/restorating of these flags happens naturally through the recursive - // descent nature of our parser. However, we still store this here just so we can + // descent nature of our parser. However, we still store this here just so we can // assert that that invariant holds. - var saveContextFlags = contextFlags; + let saveContextFlags = contextFlags; // If we're only looking ahead, then tell the scanner to only lookahead as well. - // Otherwise, if we're actually speculatively parsing, then tell the scanner to do the - // same. - var result = isLookAhead + // Otherwise, if we're actually speculatively parsing, then tell the scanner to do the + // same. + let result = isLookAhead ? scanner.lookAhead(callback) : scanner.tryScan(callback); @@ -1272,15 +1335,15 @@ module ts { return result; } - // Invokes the provided callback then unconditionally restores the parser to the state it + // Invokes the provided callback then unconditionally restores the parser to the state it // was in immediately prior to invoking the callback. The result of invoking the callback // is returned from this function. function lookAhead(callback: () => T): T { return speculationHelper(callback, /*isLookAhead:*/ true); } - + // Invokes the provided callback. If the callback returns something falsy, then it restores - // the parser to the state it was in immediately prior to invoking the callback. If the + // the parser to the state it was in immediately prior to invoking the callback. If the // callback returns something truthy, then the parser state is not rolled back. The result // of invoking the callback is returned from this function. function tryParse(callback: () => T): T { @@ -1291,8 +1354,8 @@ module ts { if (token === SyntaxKind.Identifier) { return true; } - - // If we have a 'yield' keyword, and we're in the [yield] context, then 'yield' is + + // If we have a 'yield' keyword, and we're in the [yield] context, then 'yield' is // considered a keyword and is not an identifier. if (token === SyntaxKind.YieldKeyword && inYieldContext()) { return false; @@ -1327,15 +1390,18 @@ module ts { function parseOptionalToken(t: SyntaxKind): Node { if (token === t) { - var node = createNode(t); - nextToken(); - return finishNode(node); + return parseTokenNode(); } return undefined; } + function parseExpectedToken(t: SyntaxKind, reportAtCurrentPosition: boolean, diagnosticMessage: DiagnosticMessage, arg0?: any): Node { + return parseOptionalToken(t) || + createMissingNode(t, reportAtCurrentPosition, diagnosticMessage, arg0); + } + function parseTokenNode(): T { - var node = createNode(token); + let node = createNode(token); nextToken(); return finishNode(node); } @@ -1366,7 +1432,7 @@ module ts { function createNode(kind: SyntaxKind, pos?: number): Node { nodeCount++; - var node = new (nodeConstructors[kind] || (nodeConstructors[kind] = objectAllocator.getNodeConstructor(kind)))(); + let node = new (nodeConstructors[kind] || (nodeConstructors[kind] = objectAllocator.getNodeConstructor(kind)))(); if (!(pos >= 0)) { pos = scanner.getStartPos(); } @@ -1393,7 +1459,7 @@ module ts { return node; } - + function createMissingNode(kind: SyntaxKind, reportAtCurrentPosition: boolean, diagnosticMessage: DiagnosticMessage, arg0?: any): Node { if (reportAtCurrentPosition) { parseErrorAtPosition(scanner.getStartPos(), 0, diagnosticMessage, arg0); @@ -1402,7 +1468,7 @@ module ts { parseErrorAtCurrentToken(diagnosticMessage, arg0); } - var result = createNode(kind, scanner.getStartPos()); + let result = createNode(kind, scanner.getStartPos()); (result).text = ""; return finishNode(result); } @@ -1418,7 +1484,7 @@ module ts { function createIdentifier(isIdentifier: boolean, diagnosticMessage?: DiagnosticMessage): Identifier { identifierCount++; if (isIdentifier) { - var node = createNode(SyntaxKind.Identifier); + let node = createNode(SyntaxKind.Identifier); node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); @@ -1456,17 +1522,17 @@ module ts { // LiteralPropertyName // [+GeneratorParameter] ComputedPropertyName // [~GeneratorParameter] ComputedPropertyName[?Yield] - // + // // ComputedPropertyName[Yield] : // [ AssignmentExpression[In, ?Yield] ] // - var node = createNode(SyntaxKind.ComputedPropertyName); + let node = createNode(SyntaxKind.ComputedPropertyName); parseExpected(SyntaxKind.OpenBracketToken); // We parse any expression (including a comma expression). But the grammar // says that only an assignment expression is allowed, so the grammar checker // will error if it sees a comma expression. - var yieldContext = inYieldContext(); + let yieldContext = inYieldContext(); if (inGeneratorParameterContext()) { setYieldContext(false); } @@ -1500,8 +1566,14 @@ module ts { } if (token === SyntaxKind.ExportKeyword) { nextToken(); + if (token === SyntaxKind.DefaultKeyword) { + return lookAhead(nextTokenIsClassOrFunction); + } return token !== SyntaxKind.AsteriskToken && token !== SyntaxKind.OpenBraceToken && canFollowModifier(); } + if (token === SyntaxKind.DefaultKeyword) { + return nextTokenIsClassOrFunction(); + } nextToken(); return canFollowModifier(); } @@ -1513,9 +1585,14 @@ module ts { || isLiteralPropertyName(); } + function nextTokenIsClassOrFunction(): boolean { + nextToken(); + return token === SyntaxKind.ClassKeyword || token === SyntaxKind.FunctionKeyword; + } + // True if positioned at the start of a list element function isListElement(parsingContext: ParsingContext, inErrorRecovery: boolean): boolean { - var node = currentNode(parsingContext); + let node = currentNode(parsingContext); if (node) { return true; } @@ -1532,7 +1609,11 @@ module ts { case ParsingContext.TypeMembers: return isStartOfTypeMember(); case ParsingContext.ClassMembers: - return lookAhead(isClassMemberStart); + // We allow semicolons as class elements (as specified by ES6) as long as we're + // not in error recovery. If we're in error recovery, we don't want an errant + // semicolon to be treated as a class member (since they're almost always used + // for statements. + return lookAhead(isClassMemberStart) || (token === SyntaxKind.SemicolonToken && !inErrorRecovery); case ParsingContext.EnumMembers: // Include open bracket computed properties. This technically also lets in indexers, // which would be a candidate for improved error reporting. @@ -1541,10 +1622,22 @@ module ts { return token === SyntaxKind.OpenBracketToken || token === SyntaxKind.AsteriskToken || isLiteralPropertyName(); case ParsingContext.ObjectBindingElements: return isLiteralPropertyName(); - case ParsingContext.TypeReferences: - // We want to make sure that the "extends" in "extends foo" or the "implements" in - // "implements foo" is not considered a type name. - return isIdentifier() && !isNotHeritageClauseTypeName(); + case ParsingContext.HeritageClauseElement: + // If we see { } then only consume it as an expression if it is followed by , or { + // That way we won't consume the body of a class in its heritage clause. + if (token === SyntaxKind.OpenBraceToken) { + return lookAhead(isValidHeritageClauseObjectLiteral); + } + + if (!inErrorRecovery) { + return isStartOfLeftHandSideExpression() && !isHeritageClauseExtendsOrImplementsKeyword(); + } + else { + // If we're in error recovery we tighten up what we're willing to match. + // That way we don't treat something like "this" as a valid heritage clause + // element during recovery. + return isIdentifier() && !isHeritageClauseExtendsOrImplementsKeyword(); + } case ParsingContext.VariableDeclarations: return isIdentifierOrPattern(); case ParsingContext.ArrayBindingElements: @@ -1568,21 +1661,44 @@ module ts { Debug.fail("Non-exhaustive case in 'isListElement'."); } + function isValidHeritageClauseObjectLiteral() { + Debug.assert(token === SyntaxKind.OpenBraceToken); + if (nextToken() === SyntaxKind.CloseBraceToken) { + // if we see "extends {}" then only treat the {} as what we're extending (and not + // the class body) if we have: + // + // extends {} { + // extends {}, + // extends {} extends + // extends {} implements + + let next = nextToken(); + return next === SyntaxKind.CommaToken || next === SyntaxKind.OpenBraceToken || next === SyntaxKind.ExtendsKeyword || next === SyntaxKind.ImplementsKeyword; + } + + return true; + } + function nextTokenIsIdentifier() { nextToken(); return isIdentifier(); } - function isNotHeritageClauseTypeName(): boolean { + function isHeritageClauseExtendsOrImplementsKeyword(): boolean { if (token === SyntaxKind.ImplementsKeyword || token === SyntaxKind.ExtendsKeyword) { - return lookAhead(nextTokenIsIdentifier); + return lookAhead(nextTokenIsStartOfExpression); } return false; } + function nextTokenIsStartOfExpression() { + nextToken(); + return isStartOfExpression(); + } + // True if positioned at a list terminator function isListTerminator(kind: ParsingContext): boolean { if (token === SyntaxKind.EndOfFileToken) { @@ -1603,7 +1719,7 @@ module ts { return token === SyntaxKind.CloseBraceToken; case ParsingContext.SwitchClauseStatements: return token === SyntaxKind.CloseBraceToken || token === SyntaxKind.CaseKeyword || token === SyntaxKind.DefaultKeyword; - case ParsingContext.TypeReferences: + case ParsingContext.HeritageClauseElement: return token === SyntaxKind.OpenBraceToken || token === SyntaxKind.ExtendsKeyword || token === SyntaxKind.ImplementsKeyword; case ParsingContext.VariableDeclarations: return isVariableDeclaratorListTerminator(); @@ -1629,13 +1745,13 @@ module ts { } function isVariableDeclaratorListTerminator(): boolean { - // If we can consume a semicolon (either explicitly, or with ASI), then consider us done + // If we can consume a semicolon (either explicitly, or with ASI), then consider us done // with parsing the list of variable declarators. if (canParseSemicolon()) { return true; } - // in the case where we're parsing the variable declarator of a 'for-in' statement, we + // in the case where we're parsing the variable declarator of a 'for-in' statement, we // are done if we see an 'in' keyword in front of us. Same with for-of if (isInOrOfKeyword(token)) { return true; @@ -1655,7 +1771,7 @@ module ts { // True if positioned at element or terminator of the current list or any enclosing list function isInSomeParsingContext(): boolean { - for (var kind = 0; kind < ParsingContext.Count; kind++) { + for (let kind = 0; kind < ParsingContext.Count; kind++) { if (parsingContext & (1 << kind)) { if (isListElement(kind, /* inErrorRecovery */ true) || isListTerminator(kind)) { return true; @@ -1668,15 +1784,15 @@ module ts { // Parses a list of elements function parseList(kind: ParsingContext, checkForStrictMode: boolean, parseElement: () => T): NodeArray { - var saveParsingContext = parsingContext; + let saveParsingContext = parsingContext; parsingContext |= 1 << kind; - var result = >[]; + let result = >[]; result.pos = getNodePos(); - var savedStrictModeContext = inStrictModeContext(); + let savedStrictModeContext = inStrictModeContext(); while (!isListTerminator(kind)) { if (isListElement(kind, /* inErrorRecovery */ false)) { - var element = parseListElement(kind, parseElement); + let element = parseListElement(kind, parseElement); result.push(element); // test elements only if we are not already in strict mode @@ -1707,11 +1823,11 @@ module ts { } function parseListElement(parsingContext: ParsingContext, parseElement: () => T): T { - var node = currentNode(parsingContext); + let node = currentNode(parsingContext); if (node) { return consumeNode(node); } - + return parseElement(); } @@ -1719,9 +1835,9 @@ module ts { // If there is an outstanding parse error that we've encountered, but not attached to // some node, then we cannot get a node from the old source tree. This is because we // want to mark the next node we encounter as being unusable. - // - // Note: This may be too conservative. Perhaps we could reuse hte node and set the bit - // on it (or its leftmost child) as having the error. For now though, being conservative + // + // Note: This may be too conservative. Perhaps we could reuse the node and set the bit + // on it (or its leftmost child) as having the error. For now though, being conservative // is nice and likely won't ever affect perf. if (parseErrorBeforeNextFinishedNode) { return undefined; @@ -1732,7 +1848,7 @@ module ts { return undefined; } - var node = syntaxCursor.currentNode(scanner.getStartPos()); + let node = syntaxCursor.currentNode(scanner.getStartPos()); // Can't reuse a missing node. if (nodeIsMissing(node)) { @@ -1744,24 +1860,24 @@ module ts { return undefined; } - // Can't reuse a node that contains a parse error. This is necessary so that we + // Can't reuse a node that contains a parse error. This is necessary so that we // produce the same set of errors again. if (containsParseError(node)) { return undefined; } - // We can only reuse a node if it was parsed under the same strict mode that we're + // We can only reuse a node if it was parsed under the same strict mode that we're // currently in. i.e. if we originally parsed a node in non-strict mode, but then // the user added 'using strict' at the top of the file, then we can't use that node // again as the presense of strict mode may cause us to parse the tokens in the file // differetly. - // + // // Note: we *can* reuse tokens when the strict mode changes. That's because tokens // are unaffected by strict mode. It's just the parser will decide what to do with it // differently depending on what mode it is in. // // This also applies to all our other context flags as well. - var nodeContextFlags = node.parserContextFlags & ParserContextFlags.ParserGeneratedFlags; + let nodeContextFlags = node.parserContextFlags & ParserContextFlags.ParserGeneratedFlags; if (nodeContextFlags !== contextFlags) { return undefined; } @@ -1809,32 +1925,26 @@ module ts { case ParsingContext.Parameters: return isReusableParameter(node); - // Any other lists we do not care about reusing nodes in. But feel free to add if + // Any other lists we do not care about reusing nodes in. But feel free to add if // you can do so safely. Danger areas involve nodes that may involve speculative // parsing. If speculative parsing is involved with the node, then the range the // parser reached while looking ahead might be in the edited range (see the example // in canReuseVariableDeclaratorNode for a good case of this). case ParsingContext.HeritageClauses: - // This would probably be safe to reuse. There is no speculative parsing with + // This would probably be safe to reuse. There is no speculative parsing with // heritage clauses. - case ParsingContext.TypeReferences: - // This would probably be safe to reuse. There is no speculative parsing with - // type names in a heritage clause. There can be generic names in the type - // name list. But because it is a type context, we never use speculative - // parsing on the type argument list. - case ParsingContext.TypeParameters: - // This would probably be safe to reuse. There is no speculative parsing with + // This would probably be safe to reuse. There is no speculative parsing with // type parameters. Note that that's because type *parameters* only occur in // unambiguous *type* contexts. While type *arguments* occur in very ambiguous // *expression* contexts. case ParsingContext.TupleElementTypes: - // This would probably be safe to reuse. There is no speculative parsing with + // This would probably be safe to reuse. There is no speculative parsing with // tuple types. - // Technically, type argument list types are probably safe to reuse. While + // Technically, type argument list types are probably safe to reuse. While // speculative parsing is involved with them (since type argument lists are only // produced from speculative parsing a < as a type argument list), we only have // the types because speculative parsing succeeded. Thus, the lookahead never @@ -1842,14 +1952,20 @@ module ts { case ParsingContext.TypeArguments: // Note: these are almost certainly not safe to ever reuse. Expressions commonly - // need a large amount of lookahead, and we should not reuse them as they may + // need a large amount of lookahead, and we should not reuse them as they may // have actually intersected the edit. case ParsingContext.ArgumentExpressions: // This is not safe to reuse for the same reason as the 'AssignmentExpression' - // cases. i.e. a property assignment may end with an expression, and thus might + // cases. i.e. a property assignment may end with an expression, and thus might // have lookahead far beyond it's old node. case ParsingContext.ObjectLiteralMembers: + + // This is probably not safe to reuse. There can be speculative parsing with + // type names in a heritage clause. There can be generic names in the type + // name list, and there can be left hand side expressions (which can have type + // arguments.) + case ParsingContext.HeritageClauseElement: } return false; @@ -1884,6 +2000,7 @@ module ts { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: case SyntaxKind.PropertyDeclaration: + case SyntaxKind.SemicolonClassElement: return true; } } @@ -1959,19 +2076,19 @@ module ts { // Very subtle incremental parsing bug. Consider the following code: // - // var v = new List < A, B + // let v = new List < A, B // - // This is actually legal code. It's a list of variable declarators "v = new List() - // + // let v = new List < A, B >() + // // then we have a problem. "v = new Listnode; + let variableDeclarator = node; return variableDeclarator.initializer === undefined; } @@ -1981,7 +2098,7 @@ module ts { } // See the comment in isReusableVariableDeclaration for why we do this. - var parameter = node; + let parameter = node; return parameter.initializer === undefined; } @@ -1998,12 +2115,12 @@ module ts { // Parses a comma-delimited list of elements function parseDelimitedList(kind: ParsingContext, parseElement: () => T, considerSemicolonAsDelimeter?: boolean): NodeArray { - var saveParsingContext = parsingContext; + let saveParsingContext = parsingContext; parsingContext |= 1 << kind; - var result = >[]; + let result = >[]; result.pos = getNodePos(); - var commaStart = -1; // Meaning the previous token was not a comma + let commaStart = -1; // Meaning the previous token was not a comma while (true) { if (isListElement(kind, /* inErrorRecovery */ false)) { result.push(parseListElement(kind, parseElement)); @@ -2020,10 +2137,10 @@ module ts { // We didn't get a comma, and the list wasn't terminated, explicitly parse // out a comma so we give a good error message. parseExpected(SyntaxKind.CommaToken); - + // If the token was a semicolon, and the caller allows that, then skip it and // continue. This ensures we get back on track and don't result in tons of - // parse errors. For example, this can happen when people do things like use + // parse errors. For example, this can happen when people do things like use // a semicolon to delimit object literal members. Note: we'll have already // reported an error when we called parseExpected above. if (considerSemicolonAsDelimeter && token === SyntaxKind.SemicolonToken && !scanner.hasPrecedingLineBreak()) { @@ -2057,8 +2174,8 @@ module ts { } function createMissingList(): NodeArray { - var pos = getNodePos(); - var result = >[]; + let pos = getNodePos(); + let result = >[]; result.pos = pos; result.end = pos; return result; @@ -2066,7 +2183,7 @@ module ts { function parseBracketedList(kind: ParsingContext, parseElement: () => T, open: SyntaxKind, close: SyntaxKind): NodeArray { if (parseExpected(open)) { - var result = parseDelimitedList(kind, parseElement); + let result = parseDelimitedList(kind, parseElement); parseExpected(close); return result; } @@ -2076,9 +2193,9 @@ module ts { // The allowReservedWords parameter controls whether reserved words are permitted after the first dot function parseEntityName(allowReservedWords: boolean, diagnosticMessage?: DiagnosticMessage): EntityName { - var entity: EntityName = parseIdentifier(diagnosticMessage); + let entity: EntityName = parseIdentifier(diagnosticMessage); while (parseOptional(SyntaxKind.DotToken)) { - var node = createNode(SyntaxKind.QualifiedName, entity.pos); + let node = createNode(SyntaxKind.QualifiedName, entity.pos); node.left = entity; node.right = parseRightSideOfDot(allowReservedWords); entity = finishNode(node); @@ -2096,22 +2213,22 @@ module ts { // name. // keyword identifierNameOrKeyword // - // Note: the newlines are important here. For example, if that above code + // Note: the newlines are important here. For example, if that above code // were rewritten into: // // name.keyword // identifierNameOrKeyword // // Then we would consider it valid. That's because ASI would take effect and - // the code would be implicitly: "name.keyword; identifierNameOrKeyword". + // the code would be implicitly: "name.keyword; identifierNameOrKeyword". // In the first case though, ASI will not take effect because there is not a // line terminator after the keyword. if (scanner.hasPrecedingLineBreak() && scanner.isReservedWord()) { - var matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); + let matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); if (matchesPattern) { - // Report that we need an identifier. However, report it right after the dot, - // and not on the next token. This is because the next token might actually + // Report that we need an identifier. However, report it right after the dot, + // and not on the next token. This is because the next token might actually // be an identifier and the error woudl be quite confusing. return createMissingNode(SyntaxKind.Identifier, /*reportAtCurrentToken:*/ true, Diagnostics.Identifier_expected); } @@ -2121,12 +2238,12 @@ module ts { } function parseTemplateExpression(): TemplateExpression { - var template = createNode(SyntaxKind.TemplateExpression); + let template = createNode(SyntaxKind.TemplateExpression); template.head = parseLiteralNode(); Debug.assert(template.head.kind === SyntaxKind.TemplateHead, "Template head has wrong token kind"); - var templateSpans = >[]; + let templateSpans = >[]; templateSpans.pos = getNodePos(); do { @@ -2141,18 +2258,17 @@ module ts { } function parseTemplateSpan(): TemplateSpan { - var span = createNode(SyntaxKind.TemplateSpan); + let span = createNode(SyntaxKind.TemplateSpan); span.expression = allowInAnd(parseExpression); - var literal: LiteralExpression; + let literal: LiteralExpression; if (token === SyntaxKind.CloseBraceToken) { reScanTemplateToken() literal = parseLiteralNode(); } else { - literal = createMissingNode( - SyntaxKind.TemplateTail, /*reportAtCurrentPosition:*/ false, Diagnostics._0_expected, tokenToString(SyntaxKind.CloseBraceToken)); + literal = parseExpectedToken(SyntaxKind.TemplateTail, /*reportAtCurrentPosition:*/ false, Diagnostics._0_expected, tokenToString(SyntaxKind.CloseBraceToken)); } span.literal = literal; @@ -2160,18 +2276,22 @@ module ts { } function parseLiteralNode(internName?: boolean): LiteralExpression { - var node = createNode(token); - var text = scanner.getTokenValue(); + let node = createNode(token); + let text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; + if (scanner.hasExtendedUnicodeEscape()) { + node.hasExtendedUnicodeEscape = true; + } + if (scanner.isUnterminated()) { node.isUnterminated = true; } - var tokenPos = scanner.getTokenPos(); + let tokenPos = scanner.getTokenPos(); nextToken(); finishNode(node); - + // Octal literals are not allowed in strict mode or ES5 // Note that theoretically the following condition would hold true literals like 009, // which is not octal.But because of how the scanner separates the tokens, we would @@ -2191,7 +2311,7 @@ module ts { // TYPES function parseTypeReference(): TypeReferenceNode { - var node = createNode(SyntaxKind.TypeReference); + let node = createNode(SyntaxKind.TypeReference); node.typeName = parseEntityName(/*allowReservedWords*/ false, Diagnostics.Type_expected); if (!scanner.hasPrecedingLineBreak() && token === SyntaxKind.LessThanToken) { node.typeArguments = parseBracketedList(ParsingContext.TypeArguments, parseType, SyntaxKind.LessThanToken, SyntaxKind.GreaterThanToken); @@ -2200,17 +2320,17 @@ module ts { } function parseTypeQuery(): TypeQueryNode { - var node = createNode(SyntaxKind.TypeQuery); + let node = createNode(SyntaxKind.TypeQuery); parseExpected(SyntaxKind.TypeOfKeyword); node.exprName = parseEntityName(/*allowReservedWords*/ true); return finishNode(node); } function parseTypeParameter(): TypeParameterDeclaration { - var node = createNode(SyntaxKind.TypeParameter); + let node = createNode(SyntaxKind.TypeParameter); node.name = parseIdentifier(); if (parseOptional(SyntaxKind.ExtendsKeyword)) { - // It's not uncommon for people to write improper constraints to a generic. If the + // It's not uncommon for people to write improper constraints to a generic. If the // user writes a constraint that is an expression and not an actual type, then parse // it out as an expression (so we can recover well), but report that a type is needed // instead. @@ -2249,7 +2369,7 @@ module ts { } function isStartOfParameter(): boolean { - return token === SyntaxKind.DotDotDotToken || isIdentifierOrPattern() || isModifier(token); + return token === SyntaxKind.DotDotDotToken || isIdentifierOrPattern() || isModifier(token) || token === SyntaxKind.AtToken; } function setModifiers(node: Node, modifiers: ModifiersArray) { @@ -2260,7 +2380,8 @@ module ts { } function parseParameter(): ParameterDeclaration { - var node = createNode(SyntaxKind.Parameter); + let node = createNode(SyntaxKind.Parameter); + node.decorators = parseDecorators(); setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(SyntaxKind.DotDotDotToken); @@ -2272,7 +2393,7 @@ module ts { if (getFullWidth(node.name) === 0 && node.flags === 0 && isModifier(token)) { // in cases like - // 'use strict' + // 'use strict' // function foo(static) // isParameter('static') === true, because of isModifier('static') // however 'static' is not a legal identifier in a strict mode. @@ -2306,7 +2427,7 @@ module ts { yieldAndGeneratorParameterContext: boolean, requireCompleteParameterList: boolean, signature: SignatureDeclaration): void { - var returnTokenRequired = returnToken === SyntaxKind.EqualsGreaterThanToken; + let returnTokenRequired = returnToken === SyntaxKind.EqualsGreaterThanToken; signature.typeParameters = parseTypeParameters(); signature.parameters = parseParameterList(yieldAndGeneratorParameterContext, requireCompleteParameterList); @@ -2319,7 +2440,7 @@ module ts { } } - // Note: after careful analysis of the grammar, it does not appear to be possible to + // Note: after careful analysis of the grammar, it does not appear to be possible to // have 'Yield' And 'GeneratorParameter' not in sync. i.e. any production calling // this FormalParameters production either always sets both to true, or always sets // both to false. As such we only have a single parameter to represent both. @@ -2339,13 +2460,13 @@ module ts { // [+GeneratorParameter]BindingIdentifier[Yield]Initializer[In]opt // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt if (parseExpected(SyntaxKind.OpenParenToken)) { - var savedYieldContext = inYieldContext(); - var savedGeneratorParameterContext = inGeneratorParameterContext(); + let savedYieldContext = inYieldContext(); + let savedGeneratorParameterContext = inGeneratorParameterContext(); setYieldContext(yieldAndGeneratorParameterContext); setGeneratorParameterContext(yieldAndGeneratorParameterContext); - var result = parseDelimitedList(ParsingContext.Parameters, parseParameter); + let result = parseDelimitedList(ParsingContext.Parameters, parseParameter); setYieldContext(savedYieldContext); setGeneratorParameterContext(savedGeneratorParameterContext); @@ -2366,7 +2487,7 @@ module ts { } function parseTypeMemberSemicolon() { - // We allow type members to be separated by commas or (possibly ASI) semicolons. + // We allow type members to be separated by commas or (possibly ASI) semicolons. // First check if it was a comma. If so, we're done with the member. if (parseOptional(SyntaxKind.CommaToken)) { return; @@ -2377,7 +2498,7 @@ module ts { } function parseSignatureMember(kind: SyntaxKind): SignatureDeclaration { - var node = createNode(kind); + let node = createNode(kind); if (kind === SyntaxKind.ConstructSignature) { parseExpected(SyntaxKind.NewKeyword); } @@ -2449,9 +2570,9 @@ module ts { return token === SyntaxKind.ColonToken || token === SyntaxKind.CommaToken || token === SyntaxKind.CloseBracketToken; } - function parseIndexSignatureDeclaration(modifiers: ModifiersArray): IndexSignatureDeclaration { - var fullStart = modifiers ? modifiers.pos : scanner.getStartPos(); - var node = createNode(SyntaxKind.IndexSignature, fullStart); + function parseIndexSignatureDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): IndexSignatureDeclaration { + let node = createNode(SyntaxKind.IndexSignature, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.parameters = parseBracketedList(ParsingContext.Parameters, parseParameter, SyntaxKind.OpenBracketToken, SyntaxKind.CloseBracketToken); node.type = parseTypeAnnotation(); @@ -2460,12 +2581,12 @@ module ts { } function parsePropertyOrMethodSignature(): Declaration { - var fullStart = scanner.getStartPos(); - var name = parsePropertyName(); - var questionToken = parseOptionalToken(SyntaxKind.QuestionToken); + let fullStart = scanner.getStartPos(); + let name = parsePropertyName(); + let questionToken = parseOptionalToken(SyntaxKind.QuestionToken); if (token === SyntaxKind.OpenParenToken || token === SyntaxKind.LessThanToken) { - var method = createNode(SyntaxKind.MethodSignature, fullStart); + let method = createNode(SyntaxKind.MethodSignature, fullStart); method.name = name; method.questionToken = questionToken; @@ -2476,7 +2597,7 @@ module ts { return finishNode(method); } else { - var property = createNode(SyntaxKind.PropertySignature, fullStart); + let property = createNode(SyntaxKind.PropertySignature, fullStart); property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); @@ -2493,7 +2614,7 @@ module ts { return true; default: if (isModifier(token)) { - var result = lookAhead(isStartOfIndexSignatureDeclaration); + let result = lookAhead(isStartOfIndexSignatureDeclaration); if (result) { return result; } @@ -2528,7 +2649,7 @@ module ts { case SyntaxKind.OpenBracketToken: // Indexer or computed property return isIndexSignature() - ? parseIndexSignatureDeclaration(/*modifiers:*/ undefined) + ? parseIndexSignatureDeclaration(scanner.getStartPos(), /*decorators*/ undefined, /*modifiers:*/ undefined) : parsePropertyOrMethodSignature(); case SyntaxKind.NewKeyword: if (lookAhead(isStartOfConstructSignature)) { @@ -2539,14 +2660,14 @@ module ts { case SyntaxKind.NumericLiteral: return parsePropertyOrMethodSignature(); default: - // Index declaration as allowed as a type member. But as per the grammar, + // Index declaration as allowed as a type member. But as per the grammar, // they also allow modifiers. So we have to check for an index declaration - // that might be following modifiers. This ensures that things work properly + // that might be following modifiers. This ensures that things work properly // when incrementally parsing as the parser will produce the Index declaration // if it has the same text regardless of whether it is inside a class or an // object type. if (isModifier(token)) { - var result = tryParse(parseIndexSignatureWithModifiers); + let result = tryParse(parseIndexSignatureWithModifiers); if (result) { return result; } @@ -2559,9 +2680,11 @@ module ts { } function parseIndexSignatureWithModifiers() { - var modifiers = parseModifiers(); + let fullStart = scanner.getStartPos(); + let decorators = parseDecorators(); + let modifiers = parseModifiers(); return isIndexSignature() - ? parseIndexSignatureDeclaration(modifiers) + ? parseIndexSignatureDeclaration(fullStart, decorators, modifiers) : undefined; } @@ -2571,13 +2694,13 @@ module ts { } function parseTypeLiteral(): TypeLiteralNode { - var node = createNode(SyntaxKind.TypeLiteral); + let node = createNode(SyntaxKind.TypeLiteral); node.members = parseObjectTypeMembers(); return finishNode(node); } function parseObjectTypeMembers(): NodeArray { - var members: NodeArray; + let members: NodeArray; if (parseExpected(SyntaxKind.OpenBraceToken)) { members = parseList(ParsingContext.TypeMembers, /*checkForStrictMode*/ false, parseTypeMember); parseExpected(SyntaxKind.CloseBraceToken); @@ -2590,13 +2713,13 @@ module ts { } function parseTupleType(): TupleTypeNode { - var node = createNode(SyntaxKind.TupleType); + let node = createNode(SyntaxKind.TupleType); node.elementTypes = parseBracketedList(ParsingContext.TupleElementTypes, parseType, SyntaxKind.OpenBracketToken, SyntaxKind.CloseBracketToken); return finishNode(node); } function parseParenthesizedType(): ParenthesizedTypeNode { - var node = createNode(SyntaxKind.ParenthesizedType); + let node = createNode(SyntaxKind.ParenthesizedType); parseExpected(SyntaxKind.OpenParenToken); node.type = parseType(); parseExpected(SyntaxKind.CloseParenToken); @@ -2604,7 +2727,7 @@ module ts { } function parseFunctionOrConstructorType(kind: SyntaxKind): FunctionOrConstructorTypeNode { - var node = createNode(kind); + let node = createNode(kind); if (kind === SyntaxKind.ConstructorType) { parseExpected(SyntaxKind.NewKeyword); } @@ -2613,7 +2736,7 @@ module ts { } function parseKeywordAndNoDot(): TypeNode { - var node = parseTokenNode(); + let node = parseTokenNode(); return token === SyntaxKind.DotToken ? undefined : node; } @@ -2625,7 +2748,7 @@ module ts { case SyntaxKind.BooleanKeyword: case SyntaxKind.SymbolKeyword: // If these are followed by a dot, then parse these out as a dotted type reference instead. - var node = tryParse(parseKeywordAndNoDot); + let node = tryParse(parseKeywordAndNoDot); return node || parseTypeReference(); case SyntaxKind.VoidKeyword: return parseTokenNode(); @@ -2671,10 +2794,10 @@ module ts { } function parseArrayTypeOrHigher(): TypeNode { - var type = parseNonArrayType(); + let type = parseNonArrayType(); while (!scanner.hasPrecedingLineBreak() && parseOptional(SyntaxKind.OpenBracketToken)) { parseExpected(SyntaxKind.CloseBracketToken); - var node = createNode(SyntaxKind.ArrayType, type.pos); + let node = createNode(SyntaxKind.ArrayType, type.pos); node.elementType = type; type = finishNode(node); } @@ -2682,15 +2805,15 @@ module ts { } function parseUnionTypeOrHigher(): TypeNode { - var type = parseArrayTypeOrHigher(); + let type = parseArrayTypeOrHigher(); if (token === SyntaxKind.BarToken) { - var types = >[type]; + let types = >[type]; types.pos = type.pos; while (parseOptional(SyntaxKind.BarToken)) { types.push(parseArrayTypeOrHigher()); } types.end = getNodeEnd(); - var node = createNode(SyntaxKind.UnionType, type.pos); + let node = createNode(SyntaxKind.UnionType, type.pos); node.types = types; type = finishNode(node); } @@ -2738,13 +2861,13 @@ module ts { function parseType(): TypeNode { // The rules about 'yield' only apply to actual code/expression contexts. They don't // apply to 'type' contexts. So we disable these parameters here before moving on. - var savedYieldContext = inYieldContext(); - var savedGeneratorParameterContext = inGeneratorParameterContext(); + let savedYieldContext = inYieldContext(); + let savedGeneratorParameterContext = inGeneratorParameterContext(); setYieldContext(false); setGeneratorParameterContext(false); - var result = parseTypeWorker(); + let result = parseTypeWorker(); setYieldContext(savedYieldContext); setGeneratorParameterContext(savedGeneratorParameterContext); @@ -2767,8 +2890,7 @@ module ts { } // EXPRESSIONS - - function isStartOfExpression(): boolean { + function isStartOfLeftHandSideExpression(): boolean { switch (token) { case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: @@ -2783,9 +2905,23 @@ module ts { case SyntaxKind.OpenBracketToken: case SyntaxKind.OpenBraceToken: case SyntaxKind.FunctionKeyword: + case SyntaxKind.ClassKeyword: case SyntaxKind.NewKeyword: case SyntaxKind.SlashToken: case SyntaxKind.SlashEqualsToken: + case SyntaxKind.Identifier: + return true; + default: + return isIdentifier(); + } + } + + function isStartOfExpression(): boolean { + if (isStartOfLeftHandSideExpression()) { + return true; + } + + switch (token) { case SyntaxKind.PlusToken: case SyntaxKind.MinusToken: case SyntaxKind.TildeToken: @@ -2796,7 +2932,6 @@ module ts { case SyntaxKind.PlusPlusToken: case SyntaxKind.MinusMinusToken: case SyntaxKind.LessThanToken: - case SyntaxKind.Identifier: case SyntaxKind.YieldKeyword: // Yield always starts an expression. Either it is an identifier (in which case // it is definitely an expression). Or it's a keyword (either because we're in @@ -2816,20 +2951,34 @@ module ts { } function isStartOfExpressionStatement(): boolean { - // As per the grammar, neither '{' nor 'function' can start an expression statement. - return token !== SyntaxKind.OpenBraceToken && token !== SyntaxKind.FunctionKeyword && isStartOfExpression(); + // As per the grammar, none of '{' or 'function' or 'class' can start an expression statement. + return token !== SyntaxKind.OpenBraceToken && + token !== SyntaxKind.FunctionKeyword && + token !== SyntaxKind.ClassKeyword && + token !== SyntaxKind.AtToken && + isStartOfExpression(); } function parseExpression(): Expression { // Expression[in]: - // AssignmentExpression[in] + // AssignmentExpression[in] // Expression[in] , AssignmentExpression[in] - var expr = parseAssignmentExpressionOrHigher(); - var operatorToken: Node; + // clear the decorator context when parsing Expression, as it should be unambiguous when parsing a decorator + let saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + + let expr = parseAssignmentExpressionOrHigher(); + let operatorToken: Node; while ((operatorToken = parseOptionalToken(SyntaxKind.CommaToken))) { expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } + + if (saveDecoratorContext) { + setDecoratorContext(true); + } return expr; } @@ -2838,13 +2987,13 @@ module ts { // It's not uncommon during typing for the user to miss writing the '=' token. Check if // there is no newline after the last token and if we're on an expression. If so, parse // this as an equals-value clause with a missing equals. - // NOTE: There are two places where we allow equals-value clauses. The first is in a + // NOTE: There are two places where we allow equals-value clauses. The first is in a // variable declarator. The second is with a parameter. For variable declarators // it's more likely that a { would be a allowed (as an object literal). While this // is also allowed for parameters, the risk is that we consume the { as an object // literal when it really will be for the block following the parameter. if (scanner.hasPrecedingLineBreak() || (inParameter && token === SyntaxKind.OpenBraceToken) || !isStartOfExpression()) { - // preceding line break, open brace in a parameter (likely a function body) or current token is not an expression - + // preceding line break, open brace in a parameter (likely a function body) or current token is not an expression - // do not try to parse initializer return undefined; } @@ -2865,19 +3014,19 @@ module ts { // 4) ArrowFunctionExpression[?in,?yield] // 5) [+Yield] YieldExpression[?In] // - // Note: for ease of implementation we treat productions '2' and '3' as the same thing. + // Note: for ease of implementation we treat productions '2' and '3' as the same thing. // (i.e. they're both BinaryExpressions with an assignment operator in it). // First, do the simple check if we have a YieldExpression (production '5'). if (isYieldExpression()) { return parseYieldExpression(); - } + } // Then, check if we have an arrow function (production '4') that starts with a parenthesized // parameter list. If we do, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is - // not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done + // not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done // with AssignmentExpression if we see one. - var arrowExpression = tryParseParenthesizedArrowFunctionExpression(); + let arrowExpression = tryParseParenthesizedArrowFunctionExpression(); if (arrowExpression) { return arrowExpression; } @@ -2886,12 +3035,12 @@ module ts { // start with a LogicalOrExpression, while the assignment productions can only start with // LeftHandSideExpressions. // - // So, first, we try to just parse out a BinaryExpression. If we get something that is a - // LeftHandSide or higher, then we can try to parse out the assignment expression part. - // Otherwise, we try to parse out the conditional expression bit. We want to allow any + // So, first, we try to just parse out a BinaryExpression. If we get something that is a + // LeftHandSide or higher, then we can try to parse out the assignment expression part. + // Otherwise, we try to parse out the conditional expression bit. We want to allow any // binary expression here, so we pass in the 'lowest' precedence here so that it matches // and consumes anything. - var expr = parseBinaryExpressionOrHigher(/*precedence:*/ 0); + let expr = parseBinaryExpressionOrHigher(/*precedence:*/ 0); // To avoid a look-ahead, we did not handle the case of an arrow function with a single un-parenthesized // parameter ('x => ...') above. We handle it here by checking if the parsed expression was a single @@ -2901,7 +3050,7 @@ module ts { } // Now see if we might be in cases '2' or '3'. - // If the expression was a LHS expression, and we have an assignment operator, then + // If the expression was a LHS expression, and we have an assignment operator, then // we're in '2' or '3'. Consume the assignment and return. // // Note: we call reScanGreaterToken so that we get an appropriately merged token @@ -2916,7 +3065,7 @@ module ts { function isYieldExpression(): boolean { if (token === SyntaxKind.YieldKeyword) { - // If we have a 'yield' keyword, and htis is a context where yield expressions are + // If we have a 'yield' keyword, and htis is a context where yield expressions are // allowed, then definitely parse out a yield expression. if (inYieldContext()) { return true; @@ -2931,12 +3080,12 @@ module ts { // We're in a context where 'yield expr' is not allowed. However, if we can // definitely tell that the user was trying to parse a 'yield expr' and not // just a normal expr that start with a 'yield' identifier, then parse out - // a 'yield expr'. We can then report an error later that they are only + // a 'yield expr'. We can then report an error later that they are only // allowed in generator expressions. - // + // // for example, if we see 'yield(foo)', then we'll have to treat that as an // invocation expression of something called 'yield'. However, if we have - // 'yield foo' then that is not legal as a normal expression, so we can + // 'yield foo' then that is not legal as a normal expression, so we can // definitely recognize this as a yield expression. // // for now we just check if the next token is an identifier. More heuristics @@ -2953,8 +3102,14 @@ module ts { return !scanner.hasPrecedingLineBreak() && isIdentifier() } + function nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine() { + nextToken(); + return !scanner.hasPrecedingLineBreak() && + (isIdentifier() || token === SyntaxKind.OpenBraceToken || token === SyntaxKind.OpenBracketToken); + } + function parseYieldExpression(): YieldExpression { - var node = createNode(SyntaxKind.YieldExpression); + let node = createNode(SyntaxKind.YieldExpression); // YieldExpression[In] : // yield @@ -2969,7 +3124,7 @@ module ts { return finishNode(node); } else { - // if the next token is not on the same line as yield. or we don't have an '*' or + // if the next token is not on the same line as yield. or we don't have an '*' or // the start of an expressin, then this is just a simple "yield" expression. return finishNode(node); } @@ -2978,9 +3133,9 @@ module ts { function parseSimpleArrowFunctionExpression(identifier: Identifier): Expression { Debug.assert(token === SyntaxKind.EqualsGreaterThanToken, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(SyntaxKind.ArrowFunction, identifier.pos); + let node = createNode(SyntaxKind.ArrowFunction, identifier.pos); - var parameter = createNode(SyntaxKind.Parameter, identifier.pos); + let parameter = createNode(SyntaxKind.Parameter, identifier.pos); parameter.name = identifier; finishNode(parameter); @@ -2988,14 +3143,14 @@ module ts { node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - parseExpected(SyntaxKind.EqualsGreaterThanToken); + node.equalsGreaterThanToken = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, false, Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(); return finishNode(node); } function tryParseParenthesizedArrowFunctionExpression(): Expression { - var triState = isParenthesizedArrowFunctionExpression(); + let triState = isParenthesizedArrowFunctionExpression(); if (triState === Tristate.False) { // It's definitely not a parenthesized arrow function expression. @@ -3006,7 +3161,7 @@ module ts { // following => or { token. Otherwise, we *might* have an arrow function. Try to parse // it out, but don't allow any ambiguity, and return 'undefined' if this could be an // expression instead. - var arrowFunction = triState === Tristate.True + let arrowFunction = triState === Tristate.True ? parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity:*/ true) : tryParse(parsePossibleParenthesizedArrowFunctionExpressionHead); @@ -3015,15 +3170,13 @@ module ts { return undefined; } - // If we have an arrow, then try to parse the body. Even if not, try to parse if we + // If we have an arrow, then try to parse the body. Even if not, try to parse if we // have an opening brace, just in case we're in an error state. - if (parseExpected(SyntaxKind.EqualsGreaterThanToken) || token === SyntaxKind.OpenBraceToken) { - arrowFunction.body = parseArrowFunctionExpressionBody(); - } - else { - // If not, we're probably better off bailing out and returning a bogus function expression. - arrowFunction.body = parseIdentifier(); - } + var lastToken = token; + arrowFunction.equalsGreaterThanToken = parseExpectedToken(SyntaxKind.EqualsGreaterThanToken, /*reportAtCurrentPosition:*/false, Diagnostics._0_expected, "=>"); + arrowFunction.body = (lastToken === SyntaxKind.EqualsGreaterThanToken || lastToken === SyntaxKind.OpenBraceToken) + ? parseArrowFunctionExpressionBody() + : parseIdentifier(); return finishNode(arrowFunction); } @@ -3048,8 +3201,8 @@ module ts { } function isParenthesizedArrowFunctionExpressionWorker() { - var first = token; - var second = nextToken(); + let first = token; + let second = nextToken(); if (first === SyntaxKind.OpenParenToken) { if (second === SyntaxKind.CloseParenToken) { @@ -3057,7 +3210,7 @@ module ts { // This is an arrow function with no parameters. // The last one is not actually an arrow function, // but this is probably what the user intended. - var third = nextToken(); + let third = nextToken(); switch (third) { case SyntaxKind.EqualsGreaterThanToken: case SyntaxKind.ColonToken: @@ -3107,18 +3260,18 @@ module ts { } } - function parsePossibleParenthesizedArrowFunctionExpressionHead() { + function parsePossibleParenthesizedArrowFunctionExpressionHead(): ArrowFunction { return parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity:*/ false); } - function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity: boolean): FunctionExpression { - var node = createNode(SyntaxKind.ArrowFunction); + function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity: boolean): ArrowFunction { + let node = createNode(SyntaxKind.ArrowFunction); // Arrow functions are never generators. // // If we're speculatively parsing a signature for a parenthesized arrow function, then // we have to have a complete parameter list. Otherwise we might see something like // a => (b => c) - // And think that "(b =>" was actually a parenthesized arrow function with a missing + // And think that "(b =>" was actually a parenthesized arrow function with a missing // close paren. fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ false, /*requireCompleteParameterList:*/ !allowAmbiguity, node); @@ -3148,14 +3301,18 @@ module ts { return parseFunctionBlock(/*allowYield:*/ false, /* ignoreMissingOpenBrace */ false); } - if (isStartOfStatement(/*inErrorRecovery:*/ true) && !isStartOfExpressionStatement() && token !== SyntaxKind.FunctionKeyword) { - // Check if we got a plain statement (i.e. no expression-statements, no functions expressions/declarations) + if (isStartOfStatement(/*inErrorRecovery:*/ true) && + !isStartOfExpressionStatement() && + token !== SyntaxKind.FunctionKeyword && + token !== SyntaxKind.ClassKeyword) { + + // Check if we got a plain statement (i.e. no expression-statements, no function/class expressions/declarations) // - // Here we try to recover from a potential error situation in the case where the + // Here we try to recover from a potential error situation in the case where the // user meant to supply a block. For example, if the user wrote: // // a => - // var v = 0; + // let v = 0; // } // // they may be missing an open brace. Check to see if that's the case so we can @@ -3171,22 +3328,25 @@ module ts { function parseConditionalExpressionRest(leftOperand: Expression): Expression { // Note: we are passed in an expression which was produced from parseBinaryExpressionOrHigher. - if (!parseOptional(SyntaxKind.QuestionToken)) { + let questionToken = parseOptionalToken(SyntaxKind.QuestionToken); + if (!questionToken) { return leftOperand; } - // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and - // we do not that for the 'whenFalse' part. - var node = createNode(SyntaxKind.ConditionalExpression, leftOperand.pos); + // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and + // we do not that for the 'whenFalse' part. + let node = createNode(SyntaxKind.ConditionalExpression, leftOperand.pos); node.condition = leftOperand; - node.whenTrue = allowInAnd(parseAssignmentExpressionOrHigher); - parseExpected(SyntaxKind.ColonToken); + node.questionToken = questionToken; + node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); + node.colonToken = parseExpectedToken(SyntaxKind.ColonToken, /*reportAtCurrentPosition:*/ false, + Diagnostics._0_expected, tokenToString(SyntaxKind.ColonToken)); node.whenFalse = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseBinaryExpressionOrHigher(precedence: number): Expression { - var leftOperand = parseUnaryExpressionOrHigher(); + let leftOperand = parseUnaryExpressionOrHigher(); return parseBinaryExpressionRest(precedence, leftOperand); } @@ -3196,11 +3356,11 @@ module ts { function parseBinaryExpressionRest(precedence: number, leftOperand: Expression): Expression { while (true) { - // We either have a binary operator here, or we're finished. We call + // We either have a binary operator here, or we're finished. We call // reScanGreaterToken so that we merge token sequences like > and = into >= reScanGreaterToken(); - var newPrecedence = getBinaryOperatorPrecedence(); + let newPrecedence = getBinaryOperatorPrecedence(); // Check the precedence to see if we should "take" this operator if (newPrecedence <= precedence) { @@ -3268,7 +3428,7 @@ module ts { } function makeBinaryExpression(left: Expression, operatorToken: Node, right: Expression): BinaryExpression { - var node = createNode(SyntaxKind.BinaryExpression, left.pos); + let node = createNode(SyntaxKind.BinaryExpression, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; @@ -3276,7 +3436,7 @@ module ts { } function parsePrefixUnaryExpression() { - var node = createNode(SyntaxKind.PrefixUnaryExpression); + let node = createNode(SyntaxKind.PrefixUnaryExpression); node.operator = token; nextToken(); node.operand = parseUnaryExpressionOrHigher(); @@ -3284,21 +3444,21 @@ module ts { } function parseDeleteExpression() { - var node = createNode(SyntaxKind.DeleteExpression); + let node = createNode(SyntaxKind.DeleteExpression); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(SyntaxKind.TypeOfExpression); + let node = createNode(SyntaxKind.TypeOfExpression); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(SyntaxKind.VoidExpression); + let node = createNode(SyntaxKind.VoidExpression); nextToken(); node.expression = parseUnaryExpressionOrHigher(); return finishNode(node); @@ -3327,11 +3487,11 @@ module ts { } function parsePostfixExpressionOrHigher(): PostfixExpression { - var expression = parseLeftHandSideExpressionOrHigher(); + let expression = parseLeftHandSideExpressionOrHigher(); Debug.assert(isLeftHandSideExpression(expression)); if ((token === SyntaxKind.PlusPlusToken || token === SyntaxKind.MinusMinusToken) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(SyntaxKind.PostfixUnaryExpression, expression.pos); + let node = createNode(SyntaxKind.PostfixUnaryExpression, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -3343,15 +3503,15 @@ module ts { function parseLeftHandSideExpressionOrHigher(): LeftHandSideExpression { // Original Ecma: - // LeftHandSideExpression: See 11.2 + // LeftHandSideExpression: See 11.2 // NewExpression - // CallExpression + // CallExpression // // Our simplification: // - // LeftHandSideExpression: See 11.2 - // MemberExpression - // CallExpression + // LeftHandSideExpression: See 11.2 + // MemberExpression + // CallExpression // // See comment in parseMemberExpressionOrHigher on how we replaced NewExpression with // MemberExpression to make our lives easier. @@ -3360,23 +3520,23 @@ module ts { // out into its own productions: // // CallExpression: - // MemberExpression Arguments + // MemberExpression Arguments // CallExpression Arguments // CallExpression[Expression] // CallExpression.IdentifierName // super ( ArgumentListopt ) // super.IdentifierName // - // Because of the recursion in these calls, we need to bottom out first. There are two + // Because of the recursion in these calls, we need to bottom out first. There are two // bottom out states we can run into. Either we see 'super' which must start either of // the last two CallExpression productions. Or we have a MemberExpression which either // completes the LeftHandSideExpression, or starts the beginning of the first four // CallExpression productions. - var expression = token === SyntaxKind.SuperKeyword + let expression = token === SyntaxKind.SuperKeyword ? parseSuperExpression() : parseMemberExpressionOrHigher(); - // Now, we *may* be complete. However, we might have consumed the start of a + // Now, we *may* be complete. However, we might have consumed the start of a // CallExpression. As such, we need to consume the rest of it here to be complete. return parseCallExpressionRest(expression); } @@ -3386,39 +3546,39 @@ module ts { // place ObjectCreationExpression and FunctionExpression into PrimaryExpression. // like so: // - // PrimaryExpression : See 11.1 + // PrimaryExpression : See 11.1 // this // Identifier // Literal // ArrayLiteral // ObjectLiteral - // (Expression) + // (Expression) // FunctionExpression // new MemberExpression Arguments? // - // MemberExpression : See 11.2 - // PrimaryExpression + // MemberExpression : See 11.2 + // PrimaryExpression // MemberExpression[Expression] // MemberExpression.IdentifierName // - // CallExpression : See 11.2 - // MemberExpression + // CallExpression : See 11.2 + // MemberExpression // CallExpression Arguments // CallExpression[Expression] - // CallExpression.IdentifierName + // CallExpression.IdentifierName // // Technically this is ambiguous. i.e. CallExpression defines: // // CallExpression: // CallExpression Arguments - // + // // If you see: "new Foo()" // - // Then that could be treated as a single ObjectCreationExpression, or it could be + // Then that could be treated as a single ObjectCreationExpression, or it could be // treated as the invocation of "new Foo". We disambiguate that in code (to match // the original grammar) by making sure that if we see an ObjectCreationExpression // we always consume arguments if they are there. So we treat "new Foo()" as an - // object creation only, and not at all as an invocation) Another way to think + // object creation only, and not at all as an invocation) Another way to think // about this is that for every "new" that we see, we will consume an argument list if // it is there as part of the *associated* object creation node. Any additional // argument lists we see, will become invocation expressions. @@ -3429,27 +3589,27 @@ module ts { // // Because CallExpression and MemberExpression are left recursive, we need to bottom out // of the recursion immediately. So we parse out a primary expression to start with. - var expression = parsePrimaryExpression(); + let expression = parsePrimaryExpression(); return parseMemberExpressionRest(expression); } function parseSuperExpression(): MemberExpression { - var expression = parseTokenNode(); + let expression = parseTokenNode(); if (token === SyntaxKind.OpenParenToken || token === SyntaxKind.DotToken) { return expression; } // If we have seen "super" it must be followed by '(' or '.'. // If it wasn't then just try to parse out a '.' and report an error. - var node = createNode(SyntaxKind.PropertyAccessExpression, expression.pos); + let node = createNode(SyntaxKind.PropertyAccessExpression, expression.pos); node.expression = expression; - parseExpected(SyntaxKind.DotToken, Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); + node.dotToken = parseExpectedToken(SyntaxKind.DotToken, /*reportAtCurrentPosition:*/ false, Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(/*allowIdentifierNames:*/ true); return finishNode(node); } function parseTypeAssertion(): TypeAssertion { - var node = createNode(SyntaxKind.TypeAssertionExpression); + let node = createNode(SyntaxKind.TypeAssertionExpression); parseExpected(SyntaxKind.LessThanToken); node.type = parseType(); parseExpected(SyntaxKind.GreaterThanToken); @@ -3459,17 +3619,19 @@ module ts { function parseMemberExpressionRest(expression: LeftHandSideExpression): MemberExpression { while (true) { - var dotOrBracketStart = scanner.getTokenPos(); - if (parseOptional(SyntaxKind.DotToken)) { - var propertyAccess = createNode(SyntaxKind.PropertyAccessExpression, expression.pos); + let dotToken = parseOptionalToken(SyntaxKind.DotToken); + if (dotToken) { + let propertyAccess = createNode(SyntaxKind.PropertyAccessExpression, expression.pos); propertyAccess.expression = expression; + propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(/*allowIdentifierNames:*/ true); expression = finishNode(propertyAccess); continue; } - if (parseOptional(SyntaxKind.OpenBracketToken)) { - var indexedAccess = createNode(SyntaxKind.ElementAccessExpression, expression.pos); + // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName + if (!inDecoratorContext() && parseOptional(SyntaxKind.OpenBracketToken)) { + let indexedAccess = createNode(SyntaxKind.ElementAccessExpression, expression.pos); indexedAccess.expression = expression; // It's not uncommon for a user to write: "new Type[]". @@ -3477,7 +3639,7 @@ module ts { if (token !== SyntaxKind.CloseBracketToken) { indexedAccess.argumentExpression = allowInAnd(parseExpression); if (indexedAccess.argumentExpression.kind === SyntaxKind.StringLiteral || indexedAccess.argumentExpression.kind === SyntaxKind.NumericLiteral) { - var literal = indexedAccess.argumentExpression; + let literal = indexedAccess.argumentExpression; literal.text = internIdentifier(literal.text); } } @@ -3488,7 +3650,7 @@ module ts { } if (token === SyntaxKind.NoSubstitutionTemplateLiteral || token === SyntaxKind.TemplateHead) { - var tagExpression = createNode(SyntaxKind.TaggedTemplateExpression, expression.pos); + let tagExpression = createNode(SyntaxKind.TaggedTemplateExpression, expression.pos); tagExpression.tag = expression; tagExpression.template = token === SyntaxKind.NoSubstitutionTemplateLiteral ? parseLiteralNode() @@ -3504,18 +3666,17 @@ module ts { function parseCallExpressionRest(expression: LeftHandSideExpression): LeftHandSideExpression { while (true) { expression = parseMemberExpressionRest(expression); - if (token === SyntaxKind.LessThanToken) { // See if this is the start of a generic invocation. If so, consume it and - // keep checking for postfix expressions. Otherwise, it's just a '<' that's + // keep checking for postfix expressions. Otherwise, it's just a '<' that's // part of an arithmetic expression. Break out so we consume it higher in the // stack. - var typeArguments = tryParse(parseTypeArgumentsInExpression); + let typeArguments = tryParse(parseTypeArgumentsInExpression); if (!typeArguments) { return expression; } - var callExpr = createNode(SyntaxKind.CallExpression, expression.pos); + let callExpr = createNode(SyntaxKind.CallExpression, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -3523,7 +3684,7 @@ module ts { continue; } else if (token === SyntaxKind.OpenParenToken) { - var callExpr = createNode(SyntaxKind.CallExpression, expression.pos); + let callExpr = createNode(SyntaxKind.CallExpression, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -3536,7 +3697,7 @@ module ts { function parseArgumentList() { parseExpected(SyntaxKind.OpenParenToken); - var result = parseDelimitedList(ParsingContext.ArgumentExpressions, parseArgumentExpression); + let result = parseDelimitedList(ParsingContext.ArgumentExpressions, parseArgumentExpression); parseExpected(SyntaxKind.CloseParenToken); return result; } @@ -3546,7 +3707,7 @@ module ts { return undefined; } - var typeArguments = parseDelimitedList(ParsingContext.TypeArguments, parseType); + let typeArguments = parseDelimitedList(ParsingContext.TypeArguments, parseType); if (!parseExpected(SyntaxKind.GreaterThanToken)) { // If it doesn't have the closing > then it's definitely not an type argument list. return undefined; @@ -3561,8 +3722,8 @@ module ts { function canFollowTypeArgumentsInExpression(): boolean { switch (token) { - case SyntaxKind.OpenParenToken: // foo( - // this case are the only case where this token can legally follow a type argument + case SyntaxKind.OpenParenToken: // foo( + // this case are the only case where this token can legally follow a type argument // list. So we definitely want to treat this as a type arg list. case SyntaxKind.DotToken: // foo. @@ -3570,7 +3731,6 @@ module ts { case SyntaxKind.CloseBracketToken: // foo] case SyntaxKind.ColonToken: // foo: case SyntaxKind.SemicolonToken: // foo; - case SyntaxKind.CommaToken: // foo, case SyntaxKind.QuestionToken: // foo? case SyntaxKind.EqualsEqualsToken: // foo == case SyntaxKind.EqualsEqualsEqualsToken: // foo === @@ -3583,11 +3743,17 @@ module ts { case SyntaxKind.BarToken: // foo | case SyntaxKind.CloseBraceToken: // foo } case SyntaxKind.EndOfFileToken: // foo - // these cases can't legally follow a type arg list. However, they're not legal + // these cases can't legally follow a type arg list. However, they're not legal // expressions either. The user is probably in the middle of a generic type. So // treat it as such. return true; + case SyntaxKind.CommaToken: // foo, + case SyntaxKind.OpenBraceToken: // foo { + // We don't want to treat these as type arguments. Otherwise we'll parse this + // as an invocation expression. Instead, we want to parse out the expression + // in isolation from the type arguments. + default: // Anything else treat as an expression. return false; @@ -3612,6 +3778,8 @@ module ts { return parseArrayLiteralExpression(); case SyntaxKind.OpenBraceToken: return parseObjectLiteralExpression(); + case SyntaxKind.ClassKeyword: + return parseClassExpression(); case SyntaxKind.FunctionKeyword: return parseFunctionExpression(); case SyntaxKind.NewKeyword: @@ -3630,7 +3798,7 @@ module ts { } function parseParenthesizedExpression(): ParenthesizedExpression { - var node = createNode(SyntaxKind.ParenthesizedExpression); + let node = createNode(SyntaxKind.ParenthesizedExpression); parseExpected(SyntaxKind.OpenParenToken); node.expression = allowInAnd(parseExpression); parseExpected(SyntaxKind.CloseParenToken); @@ -3638,7 +3806,7 @@ module ts { } function parseSpreadElement(): Expression { - var node = createNode(SyntaxKind.SpreadElementExpression); + let node = createNode(SyntaxKind.SpreadElementExpression); parseExpected(SyntaxKind.DotDotDotToken); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); @@ -3651,11 +3819,11 @@ module ts { } function parseArgumentExpression(): Expression { - return allowInAnd(parseArgumentOrArrayLiteralElement); + return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression(): ArrayLiteralExpression { - var node = createNode(SyntaxKind.ArrayLiteralExpression); + let node = createNode(SyntaxKind.ArrayLiteralExpression); parseExpected(SyntaxKind.OpenBracketToken); if (scanner.hasPrecedingLineBreak()) node.flags |= NodeFlags.MultiLine; node.elements = parseDelimitedList(ParsingContext.ArrayLiteralMembers, parseArgumentOrArrayLiteralElement); @@ -3663,46 +3831,47 @@ module ts { return finishNode(node); } - function tryParseAccessorDeclaration(fullStart: number, modifiers: ModifiersArray): AccessorDeclaration { + function tryParseAccessorDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): AccessorDeclaration { if (parseContextualModifier(SyntaxKind.GetKeyword)) { - return parseAccessorDeclaration(SyntaxKind.GetAccessor, fullStart, modifiers); + return parseAccessorDeclaration(SyntaxKind.GetAccessor, fullStart, decorators, modifiers); } else if (parseContextualModifier(SyntaxKind.SetKeyword)) { - return parseAccessorDeclaration(SyntaxKind.SetAccessor, fullStart, modifiers); + return parseAccessorDeclaration(SyntaxKind.SetAccessor, fullStart, decorators, modifiers); } return undefined; } function parseObjectLiteralElement(): ObjectLiteralElement { - var fullStart = scanner.getStartPos(); - var modifiers = parseModifiers(); + let fullStart = scanner.getStartPos(); + let decorators = parseDecorators(); + let modifiers = parseModifiers(); - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + let accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } - var asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); - var tokenIsIdentifier = isIdentifier(); - var nameToken = token; - var propertyName = parsePropertyName(); + let asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); + let tokenIsIdentifier = isIdentifier(); + let nameToken = token; + let propertyName = parsePropertyName(); // Disallowing of optional property assignments happens in the grammar checker. - var questionToken = parseOptionalToken(SyntaxKind.QuestionToken); + let questionToken = parseOptionalToken(SyntaxKind.QuestionToken); if (asteriskToken || token === SyntaxKind.OpenParenToken || token === SyntaxKind.LessThanToken) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, propertyName, questionToken); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, propertyName, questionToken); } // Parse to check if it is short-hand property assignment or normal property assignment if ((token === SyntaxKind.CommaToken || token === SyntaxKind.CloseBraceToken) && tokenIsIdentifier) { - var shorthandDeclaration = createNode(SyntaxKind.ShorthandPropertyAssignment, fullStart); + let shorthandDeclaration = createNode(SyntaxKind.ShorthandPropertyAssignment, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(SyntaxKind.PropertyAssignment, fullStart); + let propertyAssignment = createNode(SyntaxKind.PropertyAssignment, fullStart); propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(SyntaxKind.ColonToken); @@ -3712,7 +3881,7 @@ module ts { } function parseObjectLiteralExpression(): ObjectLiteralExpression { - var node = createNode(SyntaxKind.ObjectLiteralExpression); + let node = createNode(SyntaxKind.ObjectLiteralExpression); parseExpected(SyntaxKind.OpenBraceToken); if (scanner.hasPrecedingLineBreak()) { node.flags |= NodeFlags.MultiLine; @@ -3728,12 +3897,19 @@ module ts { // function * BindingIdentifier[Yield]opt (FormalParameters[Yield, GeneratorParameter]) { GeneratorBody[Yield] } // FunctionExpression: // function BindingIdentifieropt(FormalParameters) { FunctionBody } - var node = createNode(SyntaxKind.FunctionExpression); + let saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + let node = createNode(SyntaxKind.FunctionExpression); parseExpected(SyntaxKind.FunctionKeyword); node.asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); node.name = node.asteriskToken ? doInYieldContext(parseOptionalIdentifier) : parseOptionalIdentifier(); fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ !!node.asteriskToken, /*requireCompleteParameterList:*/ false, node); node.body = parseFunctionBlock(/*allowYield:*/ !!node.asteriskToken, /* ignoreMissingOpenBrace */ false); + if (saveDecoratorContext) { + setDecoratorContext(true); + } return finishNode(node); } @@ -3742,7 +3918,7 @@ module ts { } function parseNewExpression(): NewExpression { - var node = createNode(SyntaxKind.NewExpression); + let node = createNode(SyntaxKind.NewExpression); parseExpected(SyntaxKind.NewKeyword); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -3755,7 +3931,7 @@ module ts { // STATEMENTS function parseBlock(ignoreMissingOpenBrace: boolean, checkForStrictMode: boolean, diagnosticMessage?: DiagnosticMessage): Block { - var node = createNode(SyntaxKind.Block); + let node = createNode(SyntaxKind.Block); if (parseExpected(SyntaxKind.OpenBraceToken, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(ParsingContext.BlockStatements, checkForStrictMode, parseStatement); parseExpected(SyntaxKind.CloseBraceToken); @@ -3767,10 +3943,21 @@ module ts { } function parseFunctionBlock(allowYield: boolean, ignoreMissingOpenBrace: boolean, diagnosticMessage?: DiagnosticMessage): Block { - var savedYieldContext = inYieldContext(); + let savedYieldContext = inYieldContext(); setYieldContext(allowYield); - var block = parseBlock(ignoreMissingOpenBrace, /*checkForStrictMode*/ true, diagnosticMessage); + // We may be in a [Decorator] context when parsing a function expression or + // arrow function. The body of the function is not in [Decorator] context. + let saveDecoratorContext = inDecoratorContext(); + if (saveDecoratorContext) { + setDecoratorContext(false); + } + + let block = parseBlock(ignoreMissingOpenBrace, /*checkForStrictMode*/ true, diagnosticMessage); + + if (saveDecoratorContext) { + setDecoratorContext(true); + } setYieldContext(savedYieldContext); @@ -3778,13 +3965,13 @@ module ts { } function parseEmptyStatement(): Statement { - var node = createNode(SyntaxKind.EmptyStatement); + let node = createNode(SyntaxKind.EmptyStatement); parseExpected(SyntaxKind.SemicolonToken); return finishNode(node); } function parseIfStatement(): IfStatement { - var node = createNode(SyntaxKind.IfStatement); + let node = createNode(SyntaxKind.IfStatement); parseExpected(SyntaxKind.IfKeyword); parseExpected(SyntaxKind.OpenParenToken); node.expression = allowInAnd(parseExpression); @@ -3795,7 +3982,7 @@ module ts { } function parseDoStatement(): DoStatement { - var node = createNode(SyntaxKind.DoStatement); + let node = createNode(SyntaxKind.DoStatement); parseExpected(SyntaxKind.DoKeyword); node.statement = parseStatement(); parseExpected(SyntaxKind.WhileKeyword); @@ -3804,7 +3991,7 @@ module ts { parseExpected(SyntaxKind.CloseParenToken); // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html - // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in + // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby // do;while(0)x will have a semicolon inserted before x. parseOptional(SyntaxKind.SemicolonToken); @@ -3812,7 +3999,7 @@ module ts { } function parseWhileStatement(): WhileStatement { - var node = createNode(SyntaxKind.WhileStatement); + let node = createNode(SyntaxKind.WhileStatement); parseExpected(SyntaxKind.WhileKeyword); parseExpected(SyntaxKind.OpenParenToken); node.expression = allowInAnd(parseExpression); @@ -3822,11 +4009,11 @@ module ts { } function parseForOrForInOrForOfStatement(): Statement { - var pos = getNodePos(); + let pos = getNodePos(); parseExpected(SyntaxKind.ForKeyword); parseExpected(SyntaxKind.OpenParenToken); - var initializer: VariableDeclarationList | Expression = undefined; + let initializer: VariableDeclarationList | Expression = undefined; if (token !== SyntaxKind.SemicolonToken) { if (token === SyntaxKind.VarKeyword || token === SyntaxKind.LetKeyword || token === SyntaxKind.ConstKeyword) { initializer = parseVariableDeclarationList(/*inForStatementInitializer:*/ true); @@ -3835,22 +4022,22 @@ module ts { initializer = disallowInAnd(parseExpression); } } - var forOrForInOrForOfStatement: IterationStatement; + let forOrForInOrForOfStatement: IterationStatement; if (parseOptional(SyntaxKind.InKeyword)) { - var forInStatement = createNode(SyntaxKind.ForInStatement, pos); + let forInStatement = createNode(SyntaxKind.ForInStatement, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(SyntaxKind.CloseParenToken); forOrForInOrForOfStatement = forInStatement; } else if (parseOptional(SyntaxKind.OfKeyword)) { - var forOfStatement = createNode(SyntaxKind.ForOfStatement, pos); + let forOfStatement = createNode(SyntaxKind.ForOfStatement, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(SyntaxKind.CloseParenToken); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(SyntaxKind.ForStatement, pos); + let forStatement = createNode(SyntaxKind.ForStatement, pos); forStatement.initializer = initializer; parseExpected(SyntaxKind.SemicolonToken); if (token !== SyntaxKind.SemicolonToken && token !== SyntaxKind.CloseParenToken) { @@ -3870,7 +4057,7 @@ module ts { } function parseBreakOrContinueStatement(kind: SyntaxKind): BreakOrContinueStatement { - var node = createNode(kind); + let node = createNode(kind); parseExpected(kind === SyntaxKind.BreakStatement ? SyntaxKind.BreakKeyword : SyntaxKind.ContinueKeyword); if (!canParseSemicolon()) { @@ -3882,7 +4069,7 @@ module ts { } function parseReturnStatement(): ReturnStatement { - var node = createNode(SyntaxKind.ReturnStatement); + let node = createNode(SyntaxKind.ReturnStatement); parseExpected(SyntaxKind.ReturnKeyword); if (!canParseSemicolon()) { @@ -3894,7 +4081,7 @@ module ts { } function parseWithStatement(): WithStatement { - var node = createNode(SyntaxKind.WithStatement); + let node = createNode(SyntaxKind.WithStatement); parseExpected(SyntaxKind.WithKeyword); parseExpected(SyntaxKind.OpenParenToken); node.expression = allowInAnd(parseExpression); @@ -3904,7 +4091,7 @@ module ts { } function parseCaseClause(): CaseClause { - var node = createNode(SyntaxKind.CaseClause); + let node = createNode(SyntaxKind.CaseClause); parseExpected(SyntaxKind.CaseKeyword); node.expression = allowInAnd(parseExpression); parseExpected(SyntaxKind.ColonToken); @@ -3913,7 +4100,7 @@ module ts { } function parseDefaultClause(): DefaultClause { - var node = createNode(SyntaxKind.DefaultClause); + let node = createNode(SyntaxKind.DefaultClause); parseExpected(SyntaxKind.DefaultKeyword); parseExpected(SyntaxKind.ColonToken); node.statements = parseList(ParsingContext.SwitchClauseStatements, /*checkForStrictMode*/ false, parseStatement); @@ -3925,14 +4112,16 @@ module ts { } function parseSwitchStatement(): SwitchStatement { - var node = createNode(SyntaxKind.SwitchStatement); + let node = createNode(SyntaxKind.SwitchStatement); parseExpected(SyntaxKind.SwitchKeyword); parseExpected(SyntaxKind.OpenParenToken); node.expression = allowInAnd(parseExpression); parseExpected(SyntaxKind.CloseParenToken); + let caseBlock = createNode(SyntaxKind.CaseBlock, scanner.getStartPos()); parseExpected(SyntaxKind.OpenBraceToken); - node.clauses = parseList(ParsingContext.SwitchClauses, /*checkForStrictMode*/ false, parseCaseOrDefaultClause); + caseBlock.clauses = parseList(ParsingContext.SwitchClauses, /*checkForStrictMode*/ false, parseCaseOrDefaultClause); parseExpected(SyntaxKind.CloseBraceToken); + node.caseBlock = finishNode(caseBlock); return finishNode(node); } @@ -3940,12 +4129,12 @@ module ts { // ThrowStatement[Yield] : // throw [no LineTerminator here]Expression[In, ?Yield]; - // Because of automatic semicolon insertion, we need to report error if this + // Because of automatic semicolon insertion, we need to report error if this // throw could be terminated with a semicolon. Note: we can't call 'parseExpression' - // directly as that might consume an expression on the following line. + // directly as that might consume an expression on the following line. // We just return 'undefined' in that case. The actual error will be reported in the // grammar walker. - var node = createNode(SyntaxKind.ThrowStatement); + let node = createNode(SyntaxKind.ThrowStatement); parseExpected(SyntaxKind.ThrowKeyword); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); @@ -3954,7 +4143,7 @@ module ts { // TODO: Review for error recovery function parseTryStatement(): TryStatement { - var node = createNode(SyntaxKind.TryStatement); + let node = createNode(SyntaxKind.TryStatement); parseExpected(SyntaxKind.TryKeyword); node.tryBlock = parseBlock(/*ignoreMissingOpenBrace:*/ false, /*checkForStrictMode*/ false); @@ -3971,18 +4160,19 @@ module ts { } function parseCatchClause(): CatchClause { - var result = createNode(SyntaxKind.CatchClause); + let result = createNode(SyntaxKind.CatchClause); parseExpected(SyntaxKind.CatchKeyword); - parseExpected(SyntaxKind.OpenParenToken); - result.name = parseIdentifier(); - result.type = parseTypeAnnotation(); + if (parseExpected(SyntaxKind.OpenParenToken)) { + result.variableDeclaration = parseVariableDeclaration(); + } + parseExpected(SyntaxKind.CloseParenToken); result.block = parseBlock(/*ignoreMissingOpenBrace:*/ false, /*checkForStrictMode:*/ false); return finishNode(result); } function parseDebuggerStatement(): Statement { - var node = createNode(SyntaxKind.DebuggerStatement); + let node = createNode(SyntaxKind.DebuggerStatement); parseExpected(SyntaxKind.DebuggerKeyword); parseSemicolon(); return finishNode(node); @@ -3992,17 +4182,17 @@ module ts { // Avoiding having to do the lookahead for a labeled statement by just trying to parse // out an expression, seeing if it is identifier and then seeing if it is followed by // a colon. - var fullStart = scanner.getStartPos(); - var expression = allowInAnd(parseExpression); + let fullStart = scanner.getStartPos(); + let expression = allowInAnd(parseExpression); if (expression.kind === SyntaxKind.Identifier && parseOptional(SyntaxKind.ColonToken)) { - var labeledStatement = createNode(SyntaxKind.LabeledStatement, fullStart); + let labeledStatement = createNode(SyntaxKind.LabeledStatement, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(SyntaxKind.ExpressionStatement, fullStart); + let expressionStatement = createNode(SyntaxKind.ExpressionStatement, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -4010,13 +4200,14 @@ module ts { } function isStartOfStatement(inErrorRecovery: boolean): boolean { - // Functions and variable statements are allowed as a statement. But as per the grammar, - // they also allow modifiers. So we have to check for those statements that might be - // following modifiers.This ensures that things work properly when incrementally parsing - // as the parser will produce the same FunctionDeclaraiton or VariableStatement if it has - // the same text regardless of whether it is inside a block or not. + // Functions, variable statements and classes are allowed as a statement. But as per + // the grammar, they also allow modifiers. So we have to check for those statements + // that might be following modifiers.This ensures that things work properly when + // incrementally parsing as the parser will produce the same FunctionDeclaraiton, + // VariableStatement or ClassDeclaration, if it has the same text regardless of whether + // it is inside a block or not. if (isModifier(token)) { - var result = lookAhead(parseVariableStatementOrFunctionDeclarationWithModifiers); + let result = lookAhead(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return true; } @@ -4035,6 +4226,7 @@ module ts { case SyntaxKind.VarKeyword: case SyntaxKind.LetKeyword: case SyntaxKind.FunctionKeyword: + case SyntaxKind.ClassKeyword: case SyntaxKind.IfKeyword: case SyntaxKind.DoKeyword: case SyntaxKind.WhileKeyword: @@ -4056,10 +4248,9 @@ module ts { // const keyword can precede enum keyword when defining constant enums // 'const enum' do not start statement. // In ES 6 'enum' is a future reserved keyword, so it should not be used as identifier - var isConstEnum = lookAhead(nextTokenIsEnumKeyword); + let isConstEnum = lookAhead(nextTokenIsEnumKeyword); return !isConstEnum; case SyntaxKind.InterfaceKeyword: - case SyntaxKind.ClassKeyword: case SyntaxKind.ModuleKeyword: case SyntaxKind.EnumKeyword: case SyntaxKind.TypeKeyword: @@ -4099,10 +4290,12 @@ module ts { return parseBlock(/*ignoreMissingOpenBrace:*/ false, /*checkForStrictMode:*/ false); case SyntaxKind.VarKeyword: case SyntaxKind.ConstKeyword: - // const here should always be parsed as const declaration because of check in 'isStatement' - return parseVariableStatement(scanner.getStartPos(), /*modifiers:*/ undefined); + // const here should always be parsed as const declaration because of check in 'isStatement' + return parseVariableStatement(scanner.getStartPos(), /*decorators*/ undefined, /*modifiers:*/ undefined); case SyntaxKind.FunctionKeyword: - return parseFunctionDeclaration(scanner.getStartPos(), /*modifiers:*/ undefined); + return parseFunctionDeclaration(scanner.getStartPos(), /*decorators*/ undefined, /*modifiers:*/ undefined); + case SyntaxKind.ClassKeyword: + return parseClassDeclaration(scanner.getStartPos(), /*decorators*/ undefined, /*modifiers:*/ undefined); case SyntaxKind.SemicolonToken: return parseEmptyStatement(); case SyntaxKind.IfKeyword: @@ -4135,18 +4328,20 @@ module ts { case SyntaxKind.LetKeyword: // If let follows identifier on the same line, it is declaration parse it as variable statement if (isLetDeclaration()) { - return parseVariableStatement(scanner.getStartPos(), /*modifiers:*/ undefined); + return parseVariableStatement(scanner.getStartPos(), /*decorators*/ undefined, /*modifiers:*/ undefined); } // Else parse it like identifier - fall through default: - // Functions and variable statements are allowed as a statement. But as per - // the grammar, they also allow modifiers. So we have to check for those + // Functions and variable statements are allowed as a statement. But as per + // the grammar, they also allow modifiers. So we have to check for those // statements that might be following modifiers. This ensures that things // work properly when incrementally parsing as the parser will produce the // same FunctionDeclaraiton or VariableStatement if it has the same text // regardless of whether it is inside a block or not. - if (isModifier(token)) { - var result = tryParse(parseVariableStatementOrFunctionDeclarationWithModifiers); + // Even though variable statements and function declarations cannot have decorators, + // we parse them here to provide better error recovery. + if (isModifier(token) || token === SyntaxKind.AtToken) { + let result = tryParse(parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers); if (result) { return result; } @@ -4156,27 +4351,32 @@ module ts { } } - function parseVariableStatementOrFunctionDeclarationWithModifiers(): FunctionDeclaration | VariableStatement { - var start = scanner.getStartPos(); - var modifiers = parseModifiers(); + function parseVariableStatementOrFunctionDeclarationOrClassDeclarationWithDecoratorsOrModifiers(): FunctionDeclaration | VariableStatement | ClassDeclaration { + let start = scanner.getStartPos(); + let decorators = parseDecorators(); + let modifiers = parseModifiers(); switch (token) { case SyntaxKind.ConstKeyword: - var nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword) + let nextTokenIsEnum = lookAhead(nextTokenIsEnumKeyword) if (nextTokenIsEnum) { return undefined; } - return parseVariableStatement(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); case SyntaxKind.LetKeyword: if (!isLetDeclaration()) { return undefined; } - return parseVariableStatement(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); case SyntaxKind.VarKeyword: - return parseVariableStatement(start, modifiers); + return parseVariableStatement(start, decorators, modifiers); + case SyntaxKind.FunctionKeyword: - return parseFunctionDeclaration(start, modifiers); + return parseFunctionDeclaration(start, decorators, modifiers); + + case SyntaxKind.ClassKeyword: + return parseClassDeclaration(start, decorators, modifiers); } return undefined; @@ -4197,7 +4397,7 @@ module ts { if (token === SyntaxKind.CommaToken) { return createNode(SyntaxKind.OmittedExpression); } - var node = createNode(SyntaxKind.BindingElement); + let node = createNode(SyntaxKind.BindingElement); node.dotDotDotToken = parseOptionalToken(SyntaxKind.DotDotDotToken); node.name = parseIdentifierOrPattern(); node.initializer = parseInitializer(/*inParameter*/ false); @@ -4205,9 +4405,9 @@ module ts { } function parseObjectBindingElement(): BindingElement { - var node = createNode(SyntaxKind.BindingElement); + let node = createNode(SyntaxKind.BindingElement); // TODO(andersh): Handle computed properties - var id = parsePropertyName(); + let id = parsePropertyName(); if (id.kind === SyntaxKind.Identifier && token !== SyntaxKind.ColonToken) { node.name = id; } @@ -4221,7 +4421,7 @@ module ts { } function parseObjectBindingPattern(): BindingPattern { - var node = createNode(SyntaxKind.ObjectBindingPattern); + let node = createNode(SyntaxKind.ObjectBindingPattern); parseExpected(SyntaxKind.OpenBraceToken); node.elements = parseDelimitedList(ParsingContext.ObjectBindingElements, parseObjectBindingElement); parseExpected(SyntaxKind.CloseBraceToken); @@ -4229,7 +4429,7 @@ module ts { } function parseArrayBindingPattern(): BindingPattern { - var node = createNode(SyntaxKind.ArrayBindingPattern); + let node = createNode(SyntaxKind.ArrayBindingPattern); parseExpected(SyntaxKind.OpenBracketToken); node.elements = parseDelimitedList(ParsingContext.ArrayBindingElements, parseArrayBindingElement); parseExpected(SyntaxKind.CloseBracketToken); @@ -4251,7 +4451,7 @@ module ts { } function parseVariableDeclaration(): VariableDeclaration { - var node = createNode(SyntaxKind.VariableDeclaration); + let node = createNode(SyntaxKind.VariableDeclaration); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -4261,7 +4461,7 @@ module ts { } function parseVariableDeclarationList(inForStatementInitializer: boolean): VariableDeclarationList { - var node = createNode(SyntaxKind.VariableDeclarationList); + let node = createNode(SyntaxKind.VariableDeclarationList); switch (token) { case SyntaxKind.VarKeyword: @@ -4280,7 +4480,7 @@ module ts { // The user may have written the following: // - // for (var of X) { } + // for (let of X) { } // // In this case, we want to parse an empty declaration list, and then parse 'of' // as a keyword. The reason this is not automatic is that 'of' is a valid identifier. @@ -4291,7 +4491,7 @@ module ts { node.declarations = createMissingList(); } else { - var savedDisallowIn = inDisallowInContext(); + let savedDisallowIn = inDisallowInContext(); setDisallowInContext(inForStatementInitializer); node.declarations = parseDelimitedList(ParsingContext.VariableDeclarations, parseVariableDeclaration); @@ -4301,32 +4501,35 @@ module ts { return finishNode(node); } - + function canFollowContextualOfKeyword(): boolean { return nextTokenIsIdentifier() && nextToken() === SyntaxKind.CloseParenToken; } - function parseVariableStatement(fullStart: number, modifiers: ModifiersArray): VariableStatement { - var node = createNode(SyntaxKind.VariableStatement, fullStart); + function parseVariableStatement(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): VariableStatement { + let node = createNode(SyntaxKind.VariableStatement, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(/*inForStatementInitializer:*/ false); parseSemicolon(); return finishNode(node); } - function parseFunctionDeclaration(fullStart: number, modifiers: ModifiersArray): FunctionDeclaration { - var node = createNode(SyntaxKind.FunctionDeclaration, fullStart); + function parseFunctionDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): FunctionDeclaration { + let node = createNode(SyntaxKind.FunctionDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.FunctionKeyword); node.asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); - node.name = parseIdentifier(); + node.name = node.flags & NodeFlags.Default ? parseOptionalIdentifier() : parseIdentifier(); fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ !!node.asteriskToken, /*requireCompleteParameterList:*/ false, node); node.body = parseFunctionBlockOrSemicolon(!!node.asteriskToken, Diagnostics.or_expected); return finishNode(node); } - function parseConstructorDeclaration(pos: number, modifiers: ModifiersArray): ConstructorDeclaration { - var node = createNode(SyntaxKind.Constructor, pos); + function parseConstructorDeclaration(pos: number, decorators: NodeArray, modifiers: ModifiersArray): ConstructorDeclaration { + let node = createNode(SyntaxKind.Constructor, pos); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.ConstructorKeyword); fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ false, /*requireCompleteParameterList:*/ false, node); @@ -4334,8 +4537,9 @@ module ts { return finishNode(node); } - function parseMethodDeclaration(fullStart: number, modifiers: ModifiersArray, asteriskToken: Node, name: DeclarationName, questionToken: Node, diagnosticMessage?: DiagnosticMessage): MethodDeclaration { - var method = createNode(SyntaxKind.MethodDeclaration, fullStart); + function parseMethodDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, asteriskToken: Node, name: DeclarationName, questionToken: Node, diagnosticMessage?: DiagnosticMessage): MethodDeclaration { + let method = createNode(SyntaxKind.MethodDeclaration, fullStart); + method.decorators = decorators; setModifiers(method, modifiers); method.asteriskToken = asteriskToken; method.name = name; @@ -4345,25 +4549,30 @@ module ts { return finishNode(method); } - function parsePropertyOrMethodDeclaration(fullStart: number, modifiers: ModifiersArray): ClassElement { - var asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); - var name = parsePropertyName(); + function parsePropertyDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, name: DeclarationName, questionToken: Node): ClassElement { + let property = createNode(SyntaxKind.PropertyDeclaration, fullStart); + property.decorators = decorators; + setModifiers(property, modifiers); + property.name = name; + property.questionToken = questionToken; + property.type = parseTypeAnnotation(); + property.initializer = allowInAnd(parseNonParameterInitializer); + parseSemicolon(); + return finishNode(property); + } + function parsePropertyOrMethodDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ClassElement { + let asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken); + let name = parsePropertyName(); + // Note: this is not legal as per the grammar. But we allow it in the parser and // report an error in the grammar checker. - var questionToken = parseOptionalToken(SyntaxKind.QuestionToken); + let questionToken = parseOptionalToken(SyntaxKind.QuestionToken); if (asteriskToken || token === SyntaxKind.OpenParenToken || token === SyntaxKind.LessThanToken) { - return parseMethodDeclaration(fullStart, modifiers, asteriskToken, name, questionToken, Diagnostics.or_expected); + return parseMethodDeclaration(fullStart, decorators, modifiers, asteriskToken, name, questionToken, Diagnostics.or_expected); } else { - var property = createNode(SyntaxKind.PropertyDeclaration, fullStart); - setModifiers(property, modifiers); - property.name = name; - property.questionToken = questionToken; - property.type = parseTypeAnnotation(); - property.initializer = allowInAnd(parseNonParameterInitializer); - parseSemicolon(); - return finishNode(property); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, questionToken); } } @@ -4371,8 +4580,9 @@ module ts { return parseInitializer(/*inParameter*/ false); } - function parseAccessorDeclaration(kind: SyntaxKind, fullStart: number, modifiers: ModifiersArray): AccessorDeclaration { - var node = createNode(kind, fullStart); + function parseAccessorDeclaration(kind: SyntaxKind, fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): AccessorDeclaration { + let node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parsePropertyName(); fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ false, /*requireCompleteParameterList:*/ false, node); @@ -4381,7 +4591,11 @@ module ts { } function isClassMemberStart(): boolean { - var idToken: SyntaxKind; + let idToken: SyntaxKind; + + if (token === SyntaxKind.AtToken) { + return true; + } // Eat up all modifiers, but hold on to the last one in case it is actually an identifier. while (isModifier(token)) { @@ -4404,7 +4618,7 @@ module ts { if (token === SyntaxKind.OpenBracketToken) { return true; } - + // If we were able to get any potential identifier... if (idToken !== undefined) { // If we have a non-keyword identifier, or if we have an accessor, then it's safe to parse. @@ -4434,12 +4648,35 @@ module ts { return false; } - function parseModifiers(): ModifiersArray { - var flags = 0; - var modifiers: ModifiersArray; + function parseDecorators(): NodeArray { + let decorators: NodeArray; while (true) { - var modifierStart = scanner.getStartPos(); - var modifierKind = token; + let decoratorStart = getNodePos(); + if (!parseOptional(SyntaxKind.AtToken)) { + break; + } + + if (!decorators) { + decorators = >[]; + decorators.pos = scanner.getStartPos(); + } + + let decorator = createNode(SyntaxKind.Decorator, decoratorStart); + decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); + decorators.push(finishNode(decorator)); + } + if (decorators) { + decorators.end = getNodeEnd(); + } + return decorators; + } + + function parseModifiers(): ModifiersArray { + let flags = 0; + let modifiers: ModifiersArray; + while (true) { + let modifierStart = scanner.getStartPos(); + let modifierKind = token; if (!parseAnyContextualModifier()) { break; @@ -4460,20 +4697,27 @@ module ts { } function parseClassElement(): ClassElement { - var fullStart = getNodePos(); - var modifiers = parseModifiers(); + if (token === SyntaxKind.SemicolonToken) { + let result = createNode(SyntaxKind.SemicolonClassElement); + nextToken(); + return finishNode(result); + } - var accessor = tryParseAccessorDeclaration(fullStart, modifiers); + let fullStart = getNodePos(); + let decorators = parseDecorators(); + let modifiers = parseModifiers(); + + let accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; } if (token === SyntaxKind.ConstructorKeyword) { - return parseConstructorDeclaration(fullStart, modifiers); + return parseConstructorDeclaration(fullStart, decorators, modifiers); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(modifiers); + return parseIndexSignatureDeclaration(fullStart, decorators, modifiers); } // It is very important that we check this *after* checking indexers because @@ -4484,18 +4728,41 @@ module ts { token === SyntaxKind.AsteriskToken || token === SyntaxKind.OpenBracketToken) { - return parsePropertyOrMethodDeclaration(fullStart, modifiers); + return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); + } + + if (decorators) { + // treat this as a property declaration with a missing name. + let name = createMissingNode(SyntaxKind.Identifier, /*reportAtCurrentPosition*/ true, Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name, /*questionToken*/ undefined); } // 'isClassMemberStart' should have hinted not to attempt parsing. Debug.fail("Should not have attempted to parse class member declaration."); } - function parseClassDeclaration(fullStart: number, modifiers: ModifiersArray): ClassDeclaration { - var node = createNode(SyntaxKind.ClassDeclaration, fullStart); + function parseClassExpression(): ClassExpression { + return parseClassDeclarationOrExpression( + /*fullStart:*/ scanner.getStartPos(), + /*decorators:*/ undefined, + /*modifiers:*/ undefined, + SyntaxKind.ClassExpression); + } + + function parseClassDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ClassDeclaration { + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, SyntaxKind.ClassDeclaration); + } + + function parseClassDeclarationOrExpression(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, kind: SyntaxKind): ClassLikeDeclaration { + // In ES6 specification, All parts of a ClassDeclaration or a ClassExpression are strict mode code + let savedStrictModeContext = inStrictModeContext(); + setStrictModeContext(true); + + var node = createNode(kind, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.ClassKeyword); - node.name = parseIdentifier(); + node.name = parseOptionalIdentifier(); node.typeParameters = parseTypeParameters(); node.heritageClauses = parseHeritageClauses(/*isClassHeritageClause:*/ true); @@ -4512,7 +4779,10 @@ module ts { else { node.members = createMissingList(); } - return finishNode(node); + + var finishedNode = finishNode(node); + setStrictModeContext(savedStrictModeContext); + return finishedNode; } function parseHeritageClauses(isClassHeritageClause: boolean): NodeArray { @@ -4535,16 +4805,26 @@ module ts { function parseHeritageClause() { if (token === SyntaxKind.ExtendsKeyword || token === SyntaxKind.ImplementsKeyword) { - var node = createNode(SyntaxKind.HeritageClause); + let node = createNode(SyntaxKind.HeritageClause); node.token = token; nextToken(); - node.types = parseDelimitedList(ParsingContext.TypeReferences, parseTypeReference); + node.types = parseDelimitedList(ParsingContext.HeritageClauseElement, parseHeritageClauseElement); return finishNode(node); } return undefined; } + function parseHeritageClauseElement(): HeritageClauseElement { + let node = createNode(SyntaxKind.HeritageClauseElement); + node.expression = parseLeftHandSideExpressionOrHigher(); + if (token === SyntaxKind.LessThanToken) { + node.typeArguments = parseBracketedList(ParsingContext.TypeArguments, parseType, SyntaxKind.LessThanToken, SyntaxKind.GreaterThanToken); + } + + return finishNode(node); + } + function isHeritageClause(): boolean { return token === SyntaxKind.ExtendsKeyword || token === SyntaxKind.ImplementsKeyword; } @@ -4553,8 +4833,9 @@ module ts { return parseList(ParsingContext.ClassMembers, /*checkForStrictMode*/ false, parseClassElement); } - function parseInterfaceDeclaration(fullStart: number, modifiers: ModifiersArray): InterfaceDeclaration { - var node = createNode(SyntaxKind.InterfaceDeclaration, fullStart); + function parseInterfaceDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): InterfaceDeclaration { + let node = createNode(SyntaxKind.InterfaceDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.InterfaceKeyword); node.name = parseIdentifier(); @@ -4564,8 +4845,9 @@ module ts { return finishNode(node); } - function parseTypeAliasDeclaration(fullStart: number, modifiers: ModifiersArray): TypeAliasDeclaration { - var node = createNode(SyntaxKind.TypeAliasDeclaration, fullStart); + function parseTypeAliasDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): TypeAliasDeclaration { + let node = createNode(SyntaxKind.TypeAliasDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.TypeKeyword); node.name = parseIdentifier(); @@ -4580,14 +4862,15 @@ module ts { // ConstantEnumMemberSection, which starts at the beginning of an enum declaration // or any time an integer literal initializer is encountered. function parseEnumMember(): EnumMember { - var node = createNode(SyntaxKind.EnumMember, scanner.getStartPos()); + let node = createNode(SyntaxKind.EnumMember, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } - function parseEnumDeclaration(fullStart: number, modifiers: ModifiersArray): EnumDeclaration { - var node = createNode(SyntaxKind.EnumDeclaration, fullStart); + function parseEnumDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): EnumDeclaration { + let node = createNode(SyntaxKind.EnumDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); parseExpected(SyntaxKind.EnumKeyword); node.name = parseIdentifier(); @@ -4602,7 +4885,7 @@ module ts { } function parseModuleBlock(): ModuleBlock { - var node = createNode(SyntaxKind.ModuleBlock, scanner.getStartPos()); + let node = createNode(SyntaxKind.ModuleBlock, scanner.getStartPos()); if (parseExpected(SyntaxKind.OpenBraceToken)) { node.statements = parseList(ParsingContext.ModuleElements, /*checkForStrictMode*/false, parseModuleElement); parseExpected(SyntaxKind.CloseBraceToken); @@ -4613,30 +4896,32 @@ module ts { return finishNode(node); } - function parseInternalModuleTail(fullStart: number, modifiers: ModifiersArray, flags: NodeFlags): ModuleDeclaration { - var node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + function parseInternalModuleTail(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray, flags: NodeFlags): ModuleDeclaration { + let node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.flags |= flags; node.name = parseIdentifier(); node.body = parseOptional(SyntaxKind.DotToken) - ? parseInternalModuleTail(getNodePos(), /*modifiers:*/undefined, NodeFlags.Export) + ? parseInternalModuleTail(getNodePos(), /*decorators*/ undefined, /*modifiers:*/undefined, NodeFlags.Export) : parseModuleBlock(); return finishNode(node); } - function parseAmbientExternalModuleDeclaration(fullStart: number, modifiers: ModifiersArray): ModuleDeclaration { - var node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + function parseAmbientExternalModuleDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ModuleDeclaration { + let node = createNode(SyntaxKind.ModuleDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(/*internName:*/ true); node.body = parseModuleBlock(); return finishNode(node); } - function parseModuleDeclaration(fullStart: number, modifiers: ModifiersArray): ModuleDeclaration { + function parseModuleDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ModuleDeclaration { parseExpected(SyntaxKind.ModuleKeyword); return token === SyntaxKind.StringLiteral - ? parseAmbientExternalModuleDeclaration(fullStart, modifiers) - : parseInternalModuleTail(fullStart, modifiers, modifiers ? modifiers.flags : 0); + ? parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) + : parseInternalModuleTail(fullStart, decorators, modifiers, modifiers ? modifiers.flags : 0); } function isExternalModuleReference() { @@ -4654,18 +4939,19 @@ module ts { token === SyntaxKind.FromKeyword; } - function parseImportDeclarationOrImportEqualsDeclaration(fullStart: number, modifiers: ModifiersArray): ImportEqualsDeclaration | ImportDeclaration { + function parseImportDeclarationOrImportEqualsDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ImportEqualsDeclaration | ImportDeclaration { parseExpected(SyntaxKind.ImportKeyword); - var afterImportPos = scanner.getStartPos(); + let afterImportPos = scanner.getStartPos(); - var identifier: Identifier; + let identifier: Identifier; if (isIdentifier()) { identifier = parseIdentifier(); if (token !== SyntaxKind.CommaToken && token !== SyntaxKind.FromKeyword) { // ImportEquals declaration of type: // import x = require("mod"); or // import x = M.x; - var importEqualsDeclaration = createNode(SyntaxKind.ImportEqualsDeclaration, fullStart); + let importEqualsDeclaration = createNode(SyntaxKind.ImportEqualsDeclaration, fullStart); + importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; parseExpected(SyntaxKind.EqualsToken); @@ -4676,14 +4962,15 @@ module ts { } // Import statement - var importDeclaration = createNode(SyntaxKind.ImportDeclaration, fullStart); + let importDeclaration = createNode(SyntaxKind.ImportDeclaration, fullStart); + importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); // ImportDeclaration: // import ImportClause from ModuleSpecifier ; // import ModuleSpecifier; if (identifier || // import id - token === SyntaxKind.AsteriskToken || // import * + token === SyntaxKind.AsteriskToken || // import * token === SyntaxKind.OpenBraceToken) { // import { importDeclaration.importClause = parseImportClause(identifier, afterImportPos); parseExpected(SyntaxKind.FromKeyword); @@ -4702,14 +4989,14 @@ module ts { // ImportedDefaultBinding, NameSpaceImport // ImportedDefaultBinding, NamedImports - var importClause = createNode(SyntaxKind.ImportClause, fullStart); + let importClause = createNode(SyntaxKind.ImportClause, fullStart); if (identifier) { // ImportedDefaultBinding: // ImportedBinding importClause.name = identifier; } - // If there was no default import or if there is comma token after default import + // If there was no default import or if there is comma token after default import // parse namespace or named imports if (!importClause.name || parseOptional(SyntaxKind.CommaToken)) { @@ -4726,7 +5013,7 @@ module ts { } function parseExternalModuleReference() { - var node = createNode(SyntaxKind.ExternalModuleReference); + let node = createNode(SyntaxKind.ExternalModuleReference); parseExpected(SyntaxKind.RequireKeyword); parseExpected(SyntaxKind.OpenParenToken); node.expression = parseModuleSpecifier(); @@ -4735,11 +5022,11 @@ module ts { } function parseModuleSpecifier(): Expression { - // We allow arbitrary expressions here, even though the grammar only allows string + // We allow arbitrary expressions here, even though the grammar only allows string // literals. We check to ensure that it is only a string literal later in the grammar // walker. - var result = parseExpression(); - // Ensure the string being required is in our 'identifier' table. This will ensure + let result = parseExpression(); + // Ensure the string being required is in our 'identifier' table. This will ensure // that features like 'find refs' will look inside this file when search for its name. if (result.kind === SyntaxKind.StringLiteral) { internIdentifier((result).text); @@ -4750,7 +5037,7 @@ module ts { function parseNamespaceImport(): NamespaceImport { // NameSpaceImport: // * as ImportedBinding - var namespaceImport = createNode(SyntaxKind.NamespaceImport); + let namespaceImport = createNode(SyntaxKind.NamespaceImport); parseExpected(SyntaxKind.AsteriskToken); parseExpected(SyntaxKind.AsKeyword); namespaceImport.name = parseIdentifier(); @@ -4758,7 +5045,7 @@ module ts { } function parseNamedImportsOrExports(kind: SyntaxKind): NamedImportsOrExports { - var node = createNode(kind); + let node = createNode(kind); // NamedImports: // { } @@ -4783,36 +5070,38 @@ module ts { } function parseImportOrExportSpecifier(kind: SyntaxKind): ImportOrExportSpecifier { - var node = createNode(kind); + let node = createNode(kind); // ImportSpecifier: - // ImportedBinding - // IdentifierName as ImportedBinding - var isFirstIdentifierNameNotAnIdentifier = isKeyword(token) && !isIdentifier(); - var start = scanner.getTokenPos(); - var identifierName = parseIdentifierName(); + // BindingIdentifier + // IdentifierName as BindingIdentifier + // ExportSpecififer: + // IdentifierName + // IdentifierName as IdentifierName + let checkIdentifierIsKeyword = isKeyword(token) && !isIdentifier(); + let checkIdentifierStart = scanner.getTokenPos(); + let checkIdentifierEnd = scanner.getTextPos(); + let identifierName = parseIdentifierName(); if (token === SyntaxKind.AsKeyword) { node.propertyName = identifierName; parseExpected(SyntaxKind.AsKeyword); - if (isIdentifier()) { - node.name = parseIdentifierName(); - } - else { - parseErrorAtCurrentToken(Diagnostics.Identifier_expected); - } + checkIdentifierIsKeyword = isKeyword(token) && !isIdentifier(); + checkIdentifierStart = scanner.getTokenPos(); + checkIdentifierEnd = scanner.getTextPos(); + node.name = parseIdentifierName(); } else { node.name = identifierName; - if (isFirstIdentifierNameNotAnIdentifier) { - // Report error identifier expected - parseErrorAtPosition(start, identifierName.end - start, Diagnostics.Identifier_expected); - } } - + if (kind === SyntaxKind.ImportSpecifier && checkIdentifierIsKeyword) { + // Report error identifier expected + parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, Diagnostics.Identifier_expected); + } return finishNode(node); } - function parseExportDeclaration(fullStart: number, modifiers: ModifiersArray): ExportDeclaration { - var node = createNode(SyntaxKind.ExportDeclaration, fullStart); + function parseExportDeclaration(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ExportDeclaration { + let node = createNode(SyntaxKind.ExportDeclaration, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(SyntaxKind.AsteriskToken)) { parseExpected(SyntaxKind.FromKeyword); @@ -4828,21 +5117,34 @@ module ts { return finishNode(node); } - function parseExportAssignmentTail(fullStart: number, modifiers: ModifiersArray): ExportAssignment { - var node = createNode(SyntaxKind.ExportAssignment, fullStart); + function parseExportAssignment(fullStart: number, decorators: NodeArray, modifiers: ModifiersArray): ExportAssignment { + let node = createNode(SyntaxKind.ExportAssignment, fullStart); + node.decorators = decorators; setModifiers(node, modifiers); - node.exportName = parseIdentifier(); + if (parseOptional(SyntaxKind.EqualsToken)) { + node.isExportEquals = true; + node.expression = parseAssignmentExpressionOrHigher(); + } + else { + parseExpected(SyntaxKind.DefaultKeyword); + if (parseOptional(SyntaxKind.ColonToken)) { + node.type = parseType(); + } + else { + node.expression = parseAssignmentExpressionOrHigher(); + } + } parseSemicolon(); return finishNode(node); } function isLetDeclaration() { - // It is let declaration if in strict mode or next token is identifier on same line. + // It is let declaration if in strict mode or next token is identifier\open bracket\open curly on same line. // otherwise it needs to be treated like identifier - return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOnSameLine); + return inStrictModeContext() || lookAhead(nextTokenIsIdentifierOrStartOfDestructuringOnTheSameLine); } - function isDeclarationStart(): boolean { + function isDeclarationStart(followsModifier?: boolean): boolean { switch (token) { case SyntaxKind.VarKeyword: case SyntaxKind.ConstKeyword: @@ -4872,6 +5174,10 @@ module ts { case SyntaxKind.StaticKeyword: // Check for modifier on source element return lookAhead(nextTokenIsDeclarationStart); + case SyntaxKind.AtToken: + // a lookahead here is too costly, and decorators are only valid on a declaration. + // We will assume we are parsing a declaration here and report an error later + return !followsModifier; } } @@ -4898,12 +5204,12 @@ module ts { function nextTokenCanFollowExportKeyword() { nextToken(); return token === SyntaxKind.EqualsToken || token === SyntaxKind.AsteriskToken || - token === SyntaxKind.OpenBraceToken || isDeclarationStart(); + token === SyntaxKind.OpenBraceToken || token === SyntaxKind.DefaultKeyword || isDeclarationStart(/*followsModifier*/ true); } function nextTokenIsDeclarationStart() { nextToken(); - return isDeclarationStart(); + return isDeclarationStart(/*followsModifier*/ true); } function nextTokenIsAsKeyword() { @@ -4911,15 +5217,16 @@ module ts { } function parseDeclaration(): ModuleElement { - var fullStart = getNodePos(); - var modifiers = parseModifiers(); + let fullStart = getNodePos(); + let decorators = parseDecorators(); + let modifiers = parseModifiers(); if (token === SyntaxKind.ExportKeyword) { nextToken(); - if (parseOptional(SyntaxKind.EqualsToken)) { - return parseExportAssignmentTail(fullStart, modifiers); + if (token === SyntaxKind.DefaultKeyword || token === SyntaxKind.EqualsToken) { + return parseExportAssignment(fullStart, decorators, modifiers); } if (token === SyntaxKind.AsteriskToken || token === SyntaxKind.OpenBraceToken) { - return parseExportDeclaration(fullStart, modifiers); + return parseExportDeclaration(fullStart, decorators, modifiers); } } @@ -4927,22 +5234,31 @@ module ts { case SyntaxKind.VarKeyword: case SyntaxKind.LetKeyword: case SyntaxKind.ConstKeyword: - return parseVariableStatement(fullStart, modifiers); + return parseVariableStatement(fullStart, decorators, modifiers); case SyntaxKind.FunctionKeyword: - return parseFunctionDeclaration(fullStart, modifiers); + return parseFunctionDeclaration(fullStart, decorators, modifiers); case SyntaxKind.ClassKeyword: - return parseClassDeclaration(fullStart, modifiers); + return parseClassDeclaration(fullStart, decorators, modifiers); case SyntaxKind.InterfaceKeyword: - return parseInterfaceDeclaration(fullStart, modifiers); + return parseInterfaceDeclaration(fullStart, decorators, modifiers); case SyntaxKind.TypeKeyword: - return parseTypeAliasDeclaration(fullStart, modifiers); + return parseTypeAliasDeclaration(fullStart, decorators, modifiers); case SyntaxKind.EnumKeyword: - return parseEnumDeclaration(fullStart, modifiers); + return parseEnumDeclaration(fullStart, decorators, modifiers); case SyntaxKind.ModuleKeyword: - return parseModuleDeclaration(fullStart, modifiers); + return parseModuleDeclaration(fullStart, decorators, modifiers); case SyntaxKind.ImportKeyword: - return parseImportDeclarationOrImportEqualsDeclaration(fullStart, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers); default: + if (decorators) { + // We reached this point because we encountered an AtToken and assumed a declaration would + // follow. For recovery and error reporting purposes, return an incomplete declaration. + let node = createMissingNode(SyntaxKind.MissingDeclaration, /*reportAtCurrentPosition*/ true, Diagnostics.Declaration_expected); + node.pos = fullStart; + node.decorators = decorators; + setModifiers(node, modifiers); + return finishNode(node); + } Debug.fail("Mismatch between isDeclarationStart and parseDeclaration"); } } @@ -4966,16 +5282,16 @@ module ts { } function processReferenceComments(sourceFile: SourceFile): void { - var triviaScanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/false, sourceText); - var referencedFiles: FileReference[] = []; - var amdDependencies: {path: string; name: string}[] = []; - var amdModuleName: string; + let triviaScanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/false, sourceText); + let referencedFiles: FileReference[] = []; + let amdDependencies: {path: string; name: string}[] = []; + let amdModuleName: string; - // Keep scanning all the leading trivia in the file until we get to something that - // isn't trivia. Any single line comment will be analyzed to see if it is a + // Keep scanning all the leading trivia in the file until we get to something that + // isn't trivia. Any single line comment will be analyzed to see if it is a // reference comment. while (true) { - var kind = triviaScanner.scan(); + let kind = triviaScanner.scan(); if (kind === SyntaxKind.WhitespaceTrivia || kind === SyntaxKind.NewLineTrivia || kind === SyntaxKind.MultiLineCommentTrivia) { continue; } @@ -4983,14 +5299,14 @@ module ts { break; } - var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos() }; + let range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos() }; - var comment = sourceText.substring(range.pos, range.end); - var referencePathMatchResult = getFileReferenceFromReferencePath(comment, range); + let comment = sourceText.substring(range.pos, range.end); + let referencePathMatchResult = getFileReferenceFromReferencePath(comment, range); if (referencePathMatchResult) { - var fileReference = referencePathMatchResult.fileReference; + let fileReference = referencePathMatchResult.fileReference; sourceFile.hasNoDefaultLib = referencePathMatchResult.isNoDefaultLib; - var diagnosticMessage = referencePathMatchResult.diagnosticMessage; + let diagnosticMessage = referencePathMatchResult.diagnosticMessage; if (fileReference) { referencedFiles.push(fileReference); } @@ -4999,8 +5315,8 @@ module ts { } } else { - var amdModuleNameRegEx = /^\/\/\/\s* module ts { - /* @internal */ export var emitTime = 0; + /* @internal */ export let programTime = 0; + /* @internal */ export let emitTime = 0; + /* @internal */ export let ioReadTime = 0; + /* @internal */ export let ioWriteTime = 0; - export function createCompilerHost(options: CompilerOptions): CompilerHost { - var currentDirectory: string; - var existingDirectories: Map = {}; + /** The version of the TypeScript compiler release */ + export let version = "1.5.0"; + + export function findConfigFile(searchPath: string): string { + var fileName = "tsconfig.json"; + while (true) { + if (sys.fileExists(fileName)) { + return fileName; + } + var parentPath = getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + fileName = "../" + fileName; + } + return undefined; + } + + export function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost { + let currentDirectory: string; + let existingDirectories: Map = {}; function getCanonicalFileName(fileName: string): string { // if underlying system can distinguish between two files whose names differs only in cases then file name already in canonical form. @@ -15,11 +37,14 @@ module ts { } // returned by CScript sys environment - var unsupportedFileEncodingErrorCode = -2147024809; + let unsupportedFileEncodingErrorCode = -2147024809; function getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile { + let text: string; try { - var text = sys.readFile(fileName, options.charset); + let start = new Date().getTime(); + text = sys.readFile(fileName, options.charset); + ioReadTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -29,33 +54,34 @@ module ts { } text = ""; } + return text !== undefined ? createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; + } - return text !== undefined ? createSourceFile(fileName, text, languageVersion) : undefined; + function directoryExists(directoryPath: string): boolean { + if (hasProperty(existingDirectories, directoryPath)) { + return true; + } + if (sys.directoryExists(directoryPath)) { + existingDirectories[directoryPath] = true; + return true; + } + return false; + } + + function ensureDirectoriesExist(directoryPath: string) { + if (directoryPath.length > getRootLength(directoryPath) && !directoryExists(directoryPath)) { + let parentDirectory = getDirectoryPath(directoryPath); + ensureDirectoriesExist(parentDirectory); + sys.createDirectory(directoryPath); + } } function writeFile(fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void) { - function directoryExists(directoryPath: string): boolean { - if (hasProperty(existingDirectories, directoryPath)) { - return true; - } - if (sys.directoryExists(directoryPath)) { - existingDirectories[directoryPath] = true; - return true; - } - return false; - } - - function ensureDirectoriesExist(directoryPath: string) { - if (directoryPath.length > getRootLength(directoryPath) && !directoryExists(directoryPath)) { - var parentDirectory = getDirectoryPath(directoryPath); - ensureDirectoriesExist(parentDirectory); - sys.createDirectory(directoryPath); - } - } - try { + var start = new Date().getTime(); ensureDirectoriesExist(getDirectoryPath(normalizePath(fileName))); sys.writeFile(fileName, data, writeByteOrderMark); + ioWriteTime += new Date().getTime() - start; } catch (e) { if (onError) { @@ -76,7 +102,12 @@ module ts { } export function getPreEmitDiagnostics(program: Program): Diagnostic[] { - var diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + let diagnostics = program.getSyntacticDiagnostics().concat(program.getGlobalDiagnostics()).concat(program.getSemanticDiagnostics()); + + if (program.getCompilerOptions().declaration) { + diagnostics.concat(program.getDeclarationDiagnostics()); + } + return sortAndDeduplicateDiagnostics(diagnostics); } @@ -85,15 +116,15 @@ module ts { return messageText; } else { - var diagnosticChain = messageText; - var result = ""; + let diagnosticChain = messageText; + let result = ""; - var indent = 0; + let indent = 0; while (diagnosticChain) { if (indent) { result += newLine; - for (var i = 0; i < indent; i++) { + for (let i = 0; i < indent; i++) { result += " "; } } @@ -107,22 +138,25 @@ module ts { } export function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program { - var program: Program; - var files: SourceFile[] = []; - var filesByName: Map = {}; - var diagnostics = createDiagnosticCollection(); - var seenNoDefaultLib = options.noLib; - var commonSourceDirectory: string; - host = host || createCompilerHost(options); + let program: Program; + let files: SourceFile[] = []; + let filesByName: Map = {}; + let diagnostics = createDiagnosticCollection(); + let seenNoDefaultLib = options.noLib; + let commonSourceDirectory: string; + let diagnosticsProducingTypeChecker: TypeChecker; + let noDiagnosticsTypeChecker: TypeChecker; + let start = new Date().getTime(); + + host = host || createCompilerHost(options); forEach(rootNames, name => processRootFile(name, false)); if (!seenNoDefaultLib) { processRootFile(host.getDefaultLibFileName(options), true); } verifyCompilerOptions(); - var diagnosticsProducingTypeChecker: TypeChecker; - var noDiagnosticsTypeChecker: TypeChecker; + programTime += new Date().getTime() - start; program = { getSourceFile: getSourceFile, @@ -165,11 +199,6 @@ module ts { return noDiagnosticsTypeChecker || (noDiagnosticsTypeChecker = createTypeChecker(program, /*produceDiagnostics:*/ false)); } - function getDeclarationDiagnostics(targetSourceFile: SourceFile): Diagnostic[] { - var resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(targetSourceFile); - return ts.getDeclarationDiagnostics(getEmitHost(), resolver, targetSourceFile); - } - function emit(sourceFile?: SourceFile, writeFileCallback?: WriteFileCallback): EmitResult { // If the noEmitOnError flag is set, then check if we have any errors so far. If so, // immediately bail out. @@ -177,10 +206,15 @@ module ts { return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; } - var start = new Date().getTime(); + // Create the emit resolver outside of the "emitTime" tracking code below. That way + // any cost associated with it (like type checking) are appropriate associated with + // the type-checking counter. + let emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); - var emitResult = emitFiles( - getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile), + let start = new Date().getTime(); + + let emitResult = emitFiles( + emitResolver, getEmitHost(writeFileCallback), sourceFile); @@ -198,7 +232,7 @@ module ts { return getDiagnostics(sourceFile); } - var allDiagnostics: Diagnostic[] = []; + let allDiagnostics: Diagnostic[] = []; forEach(program.getSourceFiles(), sourceFile => { addRange(allDiagnostics, getDiagnostics(sourceFile)); }); @@ -214,25 +248,38 @@ module ts { return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile); } + function getDeclarationDiagnostics(sourceFile?: SourceFile): Diagnostic[] { + return getDiagnosticsHelper(sourceFile, getDeclarationDiagnosticsForFile); + } + function getSyntacticDiagnosticsForFile(sourceFile: SourceFile): Diagnostic[] { return sourceFile.parseDiagnostics; } function getSemanticDiagnosticsForFile(sourceFile: SourceFile): Diagnostic[] { - var typeChecker = getDiagnosticsProducingTypeChecker(); + let typeChecker = getDiagnosticsProducingTypeChecker(); Debug.assert(!!sourceFile.bindDiagnostics); - var bindDiagnostics = sourceFile.bindDiagnostics; - var checkDiagnostics = typeChecker.getDiagnostics(sourceFile); - var programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); + let bindDiagnostics = sourceFile.bindDiagnostics; + let checkDiagnostics = typeChecker.getDiagnostics(sourceFile); + let programDiagnostics = diagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics); } - function getGlobalDiagnostics(): Diagnostic[] { - var typeChecker = getDiagnosticsProducingTypeChecker(); + function getDeclarationDiagnosticsForFile(sourceFile: SourceFile): Diagnostic[] { + if (!isDeclarationFile(sourceFile)) { + let resolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile); + // Don't actually write any files since we're just getting diagnostics. + var writeFile: WriteFileCallback = () => { }; + return ts.getDeclarationDiagnostics(getEmitHost(writeFile), resolver, sourceFile); + } + } - var allDiagnostics: Diagnostic[] = []; + function getGlobalDiagnostics(): Diagnostic[] { + let typeChecker = getDiagnosticsProducingTypeChecker(); + + let allDiagnostics: Diagnostic[] = []; addRange(allDiagnostics, typeChecker.getGlobalDiagnostics()); addRange(allDiagnostics, diagnostics.getGlobalDiagnostics()); @@ -248,11 +295,13 @@ module ts { } function processSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number) { + let start: number; + let length: number; if (refEnd !== undefined && refPos !== undefined) { - var start = refPos; - var length = refEnd - refPos; + start = refPos; + length = refEnd - refPos; } - var diagnostic: DiagnosticMessage; + let diagnostic: DiagnosticMessage; if (hasExtension(fileName)) { if (!options.allowNonTsExtensions && !fileExtensionIs(host.getCanonicalFileName(fileName), ".ts")) { diagnostic = Diagnostics.File_0_must_have_extension_ts_or_d_ts; @@ -286,20 +335,20 @@ module ts { // Get source file from normalized fileName function findSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refStart?: number, refLength?: number): SourceFile { - var canonicalName = host.getCanonicalFileName(fileName); + let canonicalName = host.getCanonicalFileName(fileName); if (hasProperty(filesByName, canonicalName)) { // We've already looked for this file, use cached result return getSourceFileFromCache(fileName, canonicalName, /*useAbsolutePath*/ false); } else { - var normalizedAbsolutePath = getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); - var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); + let normalizedAbsolutePath = getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + let canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); if (hasProperty(filesByName, canonicalAbsolutePath)) { return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, /*useAbsolutePath*/ true); } // We haven't looked for this file, do so now and cache result - var file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, hostErrorMessage => { + let file = filesByName[canonicalName] = host.getSourceFile(fileName, options.target, hostErrorMessage => { if (refFile) { diagnostics.add(createFileDiagnostic(refFile, refStart, refLength, Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); @@ -315,7 +364,7 @@ module ts { filesByName[canonicalAbsolutePath] = file; if (!options.noResolve) { - var basePath = getDirectoryPath(fileName); + let basePath = getDirectoryPath(fileName); processReferencedFiles(file, basePath); processImportedModules(file, basePath); } @@ -326,13 +375,14 @@ module ts { files.push(file); } } + + return file; } - return file; function getSourceFileFromCache(fileName: string, canonicalName: string, useAbsolutePath: boolean): SourceFile { - var file = filesByName[canonicalName]; + let file = filesByName[canonicalName]; if (file && host.useCaseSensitiveFileNames()) { - var sourceFileName = useAbsolutePath ? getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; + let sourceFileName = useAbsolutePath ? getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName; if (canonicalName !== sourceFileName) { diagnostics.add(createFileDiagnostic(refFile, refStart, refLength, Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName)); @@ -344,7 +394,7 @@ module ts { function processReferencedFiles(file: SourceFile, basePath: string) { forEach(file.referencedFiles, ref => { - var referencedFileName = isRootedDiskPath(ref.fileName) ? ref.fileName : combinePaths(basePath, ref.fileName); + let referencedFileName = isRootedDiskPath(ref.fileName) ? ref.fileName : combinePaths(basePath, ref.fileName); processSourceFile(normalizePath(referencedFileName), /* isDefaultLib */ false, file, ref.pos, ref.end); }); } @@ -352,17 +402,17 @@ module ts { function processImportedModules(file: SourceFile, basePath: string) { forEach(file.statements, node => { if (node.kind === SyntaxKind.ImportDeclaration || node.kind === SyntaxKind.ImportEqualsDeclaration || node.kind === SyntaxKind.ExportDeclaration) { - var moduleNameExpr = getExternalModuleName(node); + let moduleNameExpr = getExternalModuleName(node); if (moduleNameExpr && moduleNameExpr.kind === SyntaxKind.StringLiteral) { - var moduleNameText = (moduleNameExpr).text; + let moduleNameText = (moduleNameExpr).text; if (moduleNameText) { - var searchPath = basePath; + let searchPath = basePath; while (true) { - var searchName = normalizePath(combinePaths(searchPath, moduleNameText)); + let searchName = normalizePath(combinePaths(searchPath, moduleNameText)); if (findModuleSourceFile(searchName + ".ts", moduleNameExpr) || findModuleSourceFile(searchName + ".d.ts", moduleNameExpr)) { break; } - var parentPath = getDirectoryPath(searchPath); + let parentPath = getDirectoryPath(searchPath); if (parentPath === searchPath) { break; } @@ -381,14 +431,14 @@ module ts { if (isExternalModuleImportEqualsDeclaration(node) && getExternalModuleImportEqualsDeclarationExpression(node).kind === SyntaxKind.StringLiteral) { - var nameLiteral = getExternalModuleImportEqualsDeclarationExpression(node); - var moduleName = nameLiteral.text; + let nameLiteral = getExternalModuleImportEqualsDeclarationExpression(node); + let moduleName = nameLiteral.text; if (moduleName) { // TypeScript 1.0 spec (April 2014): 12.1.6 // An ExternalImportDeclaration in anAmbientExternalModuleDeclaration may reference other external modules // only through top - level external module names. Relative external module names are not permitted. - var searchName = normalizePath(combinePaths(basePath, moduleName)); - var tsFile = findModuleSourceFile(searchName + ".ts", nameLiteral); + let searchName = normalizePath(combinePaths(basePath, moduleName)); + let tsFile = findModuleSourceFile(searchName + ".ts", nameLiteral); if (!tsFile) { findModuleSourceFile(searchName + ".d.ts", nameLiteral); } @@ -404,6 +454,24 @@ module ts { } function verifyCompilerOptions() { + if (options.separateCompilation) { + if (options.sourceMap) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation)); + } + + if (options.declaration) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation)); + } + + if (options.noEmitOnError) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation)); + } + + if (options.out) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation)); + } + } + if (!options.sourceMap && (options.mapRoot || options.sourceRoot)) { // Error to specify --mapRoot or --sourceRoot without mapSourceFiles if (options.mapRoot) { @@ -415,31 +483,47 @@ module ts { return; } - var firstExternalModule = forEach(files, f => isExternalModule(f) ? f : undefined); - if (firstExternalModule && !options.module) { - // We cannot use createDiagnosticFromNode because nodes do not have parents yet - var externalModuleErrorSpan = getErrorSpanForNode(firstExternalModule.externalModuleIndicator); - var errorStart = skipTrivia(firstExternalModule.text, externalModuleErrorSpan.pos); - var errorLength = externalModuleErrorSpan.end - errorStart; - diagnostics.add(createFileDiagnostic(firstExternalModule, errorStart, errorLength, Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); + let languageVersion = options.target || ScriptTarget.ES3; + + let firstExternalModuleSourceFile = forEach(files, f => isExternalModule(f) ? f : undefined); + if (options.separateCompilation) { + if (!options.module && languageVersion < ScriptTarget.ES6) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher)); + } + + let firstNonExternalModuleSourceFile = forEach(files, f => !isExternalModule(f) && !isDeclarationFile(f) ? f : undefined); + if (firstNonExternalModuleSourceFile) { + let span = getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); + diagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_non_external_modules_when_the_separateCompilation_flag_is_provided)); + } + } + else if (firstExternalModuleSourceFile && languageVersion < ScriptTarget.ES6 && !options.module) { + // We cannot use createDiagnosticFromNode because nodes do not have parents yet + let span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); + diagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_external_modules_unless_the_module_flag_is_provided)); } - // there has to be common source directory if user specified --outdir || --sourcRoot + // Cannot specify module gen target when in es6 or above + if (options.module && languageVersion >= ScriptTarget.ES6) { + diagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_compile_external_modules_into_amd_or_commonjs_when_targeting_es6_or_higher)); + } + + // there has to be common source directory if user specified --outdir || --sourceRoot // if user specified --mapRoot, there needs to be common source directory if there would be multiple files being emitted if (options.outDir || // there is --outDir specified options.sourceRoot || // there is --sourceRoot specified - (options.mapRoot && // there is --mapRoot Specified and there would be multiple js files generated - (!options.out || firstExternalModule !== undefined))) { + (options.mapRoot && // there is --mapRoot specified and there would be multiple js files generated + (!options.out || firstExternalModuleSourceFile !== undefined))) { - var commonPathComponents: string[]; + let commonPathComponents: string[]; forEach(files, sourceFile => { // Each file contributes into common source file path if (!(sourceFile.flags & NodeFlags.DeclarationFile) && !fileExtensionIs(sourceFile.fileName, ".js")) { - var sourcePathComponents = getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); + let sourcePathComponents = getNormalizedPathComponents(sourceFile.fileName, host.getCurrentDirectory()); sourcePathComponents.pop(); // FileName is not part of directory if (commonPathComponents) { - for (var i = 0; i < Math.min(commonPathComponents.length, sourcePathComponents.length); i++) { + for (let i = 0; i < Math.min(commonPathComponents.length, sourcePathComponents.length); i++) { if (commonPathComponents[i] !== sourcePathComponents[i]) { if (i === 0) { diagnostics.add(createCompilerDiagnostic(Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 9536e2bf1f1..3a208698c25 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -14,6 +14,7 @@ module ts { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -36,7 +37,7 @@ module ts { tryScan(callback: () => T): T; } - var textToToken: Map = { + let textToToken: Map = { "any": SyntaxKind.AnyKeyword, "as": SyntaxKind.AsKeyword, "boolean": SyntaxKind.BooleanKeyword, @@ -147,6 +148,7 @@ module ts { "&=": SyntaxKind.AmpersandEqualsToken, "|=": SyntaxKind.BarEqualsToken, "^=": SyntaxKind.CaretEqualsToken, + "@": SyntaxKind.AtToken, }; /* @@ -169,8 +171,8 @@ module ts { Codepoint ranges for ES3 Identifiers are extracted from the Unicode 3.0.0 specification at: http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt */ - var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; - var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; + let unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; + let unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; /* As per ECMAScript Language Specification 5th Edition, Section 7.6: ISyntaxToken Names and Identifiers @@ -194,8 +196,8 @@ module ts { Codepoint ranges for ES5 Identifiers are extracted from the Unicode 6.2 specification at: http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt */ - var unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; - var unicodeES5IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; + let unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; + let unicodeES5IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, ]; function lookupInUnicodeMap(code: number, map: number[]): boolean { // Bail out quickly if it couldn't possibly be in the map. @@ -204,9 +206,9 @@ module ts { } // Perform binary search in one of the Unicode range maps - var lo: number = 0; - var hi: number = map.length; - var mid: number; + let lo: number = 0; + let hi: number = map.length; + let mid: number; while (lo + 1 < hi) { mid = lo + (hi - lo) / 2; @@ -240,8 +242,8 @@ module ts { } function makeReverseMap(source: Map): string[] { - var result: string[] = []; - for (var name in source) { + let result: string[] = []; + for (let name in source) { if (source.hasOwnProperty(name)) { result[source[name]] = name; } @@ -249,18 +251,23 @@ module ts { return result; } - var tokenStrings = makeReverseMap(textToToken); + let tokenStrings = makeReverseMap(textToToken); export function tokenToString(t: SyntaxKind): string { return tokenStrings[t]; } + /* @internal */ + export function stringToToken(s: string): SyntaxKind { + return textToToken[s]; + } + export function computeLineStarts(text: string): number[] { - var result: number[] = new Array(); - var pos = 0; - var lineStart = 0; + let result: number[] = new Array(); + let pos = 0; + let lineStart = 0; while (pos < text.length) { - var ch = text.charCodeAt(pos++); + let ch = text.charCodeAt(pos++); switch (ch) { case CharacterCodes.carriageReturn: if (text.charCodeAt(pos) === CharacterCodes.lineFeed) { @@ -296,7 +303,7 @@ module ts { } export function computeLineAndCharacterOfPosition(lineStarts: number[], position: number) { - var lineNumber = binarySearch(lineStarts, position); + let lineNumber = binarySearch(lineStarts, position); if (lineNumber < 0) { // If the actual position was not found, // the binary search returns the negative value of the next line start @@ -314,16 +321,41 @@ module ts { return computeLineAndCharacterOfPosition(getLineStarts(sourceFile), position); } - var hasOwnProperty = Object.prototype.hasOwnProperty; + let hasOwnProperty = Object.prototype.hasOwnProperty; export function isWhiteSpace(ch: number): boolean { - return ch === CharacterCodes.space || ch === CharacterCodes.tab || ch === CharacterCodes.verticalTab || ch === CharacterCodes.formFeed || - ch === CharacterCodes.nonBreakingSpace || ch === CharacterCodes.ogham || ch >= CharacterCodes.enQuad && ch <= CharacterCodes.zeroWidthSpace || - ch === CharacterCodes.narrowNoBreakSpace || ch === CharacterCodes.mathematicalSpace || ch === CharacterCodes.ideographicSpace || ch === CharacterCodes.byteOrderMark; + // Note: nextLine is in the Zs space, and should be considered to be a whitespace. + // It is explicitly not a line-break as it isn't in the exact set specified by EcmaScript. + return ch === CharacterCodes.space || + ch === CharacterCodes.tab || + ch === CharacterCodes.verticalTab || + ch === CharacterCodes.formFeed || + ch === CharacterCodes.nonBreakingSpace || + ch === CharacterCodes.nextLine || + ch === CharacterCodes.ogham || + ch >= CharacterCodes.enQuad && ch <= CharacterCodes.zeroWidthSpace || + ch === CharacterCodes.narrowNoBreakSpace || + ch === CharacterCodes.mathematicalSpace || + ch === CharacterCodes.ideographicSpace || + ch === CharacterCodes.byteOrderMark; } export function isLineBreak(ch: number): boolean { - return ch === CharacterCodes.lineFeed || ch === CharacterCodes.carriageReturn || ch === CharacterCodes.lineSeparator || ch === CharacterCodes.paragraphSeparator || ch === CharacterCodes.nextLine; + // ES5 7.3: + // The ECMAScript line terminator characters are listed in Table 3. + // Table 3 Line Terminator Characters + // Code Unit Value Name Formal Name + // \u000A Line Feed + // \u000D Carriage Return + // \u2028 Line separator + // \u2029 Paragraph separator + // Only the characters in Table 3 are treated as line terminators. Other new line or line + // breaking characters are treated as white space but not as line terminators. + + return ch === CharacterCodes.lineFeed || + ch === CharacterCodes.carriageReturn || + ch === CharacterCodes.lineSeparator || + ch === CharacterCodes.paragraphSeparator; } function isDigit(ch: number): boolean { @@ -336,7 +368,7 @@ module ts { export function skipTrivia(text: string, pos: number, stopAfterLineBreak?: boolean): number { while (true) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); switch (ch) { case CharacterCodes.carriageReturn: if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) { @@ -400,17 +432,17 @@ module ts { // All conflict markers consist of the same character repeated seven times. If it is // a <<<<<<< or >>>>>>> marker then it is also followd by a space. - var mergeConflictMarkerLength = "<<<<<<<".length; + let mergeConflictMarkerLength = "<<<<<<<".length; function isConflictMarkerTrivia(text: string, pos: number) { Debug.assert(pos >= 0); // Conflict markers must be at the start of a line. if (pos === 0 || isLineBreak(text.charCodeAt(pos - 1))) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); if ((pos + mergeConflictMarkerLength) < text.length) { - for (var i = 0, n = mergeConflictMarkerLength; i < n; i++) { + for (let i = 0, n = mergeConflictMarkerLength; i < n; i++) { if (text.charCodeAt(pos + i) !== ch) { return false; } @@ -429,8 +461,8 @@ module ts { error(Diagnostics.Merge_conflict_marker_encountered, mergeConflictMarkerLength); } - var ch = text.charCodeAt(pos); - var len = text.length; + let ch = text.charCodeAt(pos); + let len = text.length; if (ch === CharacterCodes.lessThan || ch === CharacterCodes.greaterThan) { while (pos < len && !isLineBreak(text.charCodeAt(pos))) { @@ -442,7 +474,7 @@ module ts { // Consume everything from the start of the mid-conlict marker to the start of the next // end-conflict marker. while (pos < len) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); if (ch === CharacterCodes.greaterThan && isConflictMarkerTrivia(text, pos)) { break; } @@ -454,19 +486,23 @@ module ts { return pos; } - // Extract comments from the given source text starting at the given position. If trailing is false, whitespace is skipped until - // the first line break and comments between that location and the next token are returned. If trailing is true, comments occurring - // between the given position and the next line break are returned. The return value is an array containing a TextRange for each - // comment. Single-line comment ranges include the beginning '//' characters but not the ending line break. Multi-line comment - // ranges include the beginning '/* and ending '*/' characters. The return value is undefined if no comments were found. + // Extract comments from the given source text starting at the given position. If trailing is + // false, whitespace is skipped until the first line break and comments between that location + // and the next token are returned.If trailing is true, comments occurring between the given + // position and the next line break are returned.The return value is an array containing a + // TextRange for each comment. Single-line comment ranges include the beginning '//' characters + // but not the ending line break. Multi - line comment ranges include the beginning '/* and + // ending '*/' characters.The return value is undefined if no comments were found. function getCommentRanges(text: string, pos: number, trailing: boolean): CommentRange[] { - var result: CommentRange[]; - var collecting = trailing || pos === 0; + let result: CommentRange[]; + let collecting = trailing || pos === 0; while (true) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); switch (ch) { case CharacterCodes.carriageReturn: - if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) pos++; + if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) { + pos++; + } case CharacterCodes.lineFeed: pos++; if (trailing) { @@ -484,10 +520,10 @@ module ts { pos++; continue; case CharacterCodes.slash: - var nextChar = text.charCodeAt(pos + 1); - var hasTrailingNewLine = false; + let nextChar = text.charCodeAt(pos + 1); + let hasTrailingNewLine = false; if (nextChar === CharacterCodes.slash || nextChar === CharacterCodes.asterisk) { - var startPos = pos; + let startPos = pos; pos += 2; if (nextChar === CharacterCodes.slash) { while (pos < text.length) { @@ -508,7 +544,10 @@ module ts { } } if (collecting) { - if (!result) result = []; + if (!result) { + result = []; + } + result.push({ pos: startPos, end: pos, hasTrailingNewLine: hasTrailingNewLine }); } continue; @@ -549,14 +588,15 @@ module ts { } export function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback): Scanner { - var pos: number; // Current position (end position of text of current token) - var len: number; // Length of text - var startPos: number; // Start position of whitespace before current token - var tokenPos: number; // Start position of text of current token - var token: SyntaxKind; - var tokenValue: string; - var precedingLineBreak: boolean; - var tokenIsUnterminated: boolean; + let pos: number; // Current position (end position of text of current token) + let len: number; // Length of text + let startPos: number; // Start position of whitespace before current token + let tokenPos: number; // Start position of text of current token + let token: SyntaxKind; + let tokenValue: string; + let precedingLineBreak: boolean; + let hasExtendedUnicodeEscape: boolean; + let tokenIsUnterminated: boolean; function error(message: DiagnosticMessage, length?: number): void { if (onError) { @@ -577,13 +617,13 @@ module ts { } function scanNumber(): number { - var start = pos; + let start = pos; while (isDigit(text.charCodeAt(pos))) pos++; if (text.charCodeAt(pos) === CharacterCodes.dot) { pos++; while (isDigit(text.charCodeAt(pos))) pos++; } - var end = pos; + let end = pos; if (text.charCodeAt(pos) === CharacterCodes.E || text.charCodeAt(pos) === CharacterCodes.e) { pos++; if (text.charCodeAt(pos) === CharacterCodes.plus || text.charCodeAt(pos) === CharacterCodes.minus) pos++; @@ -600,18 +640,34 @@ module ts { } function scanOctalDigits(): number { - var start = pos; + let start = pos; while (isOctalDigit(text.charCodeAt(pos))) { pos++; } return +(text.substring(start, pos)); } + + /** + * Scans the given number of hexadecimal digits in the text, + * returning -1 if the given number is unavailable. + */ + function scanExactNumberOfHexDigits(count: number): number { + return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ false); + } + + /** + * Scans as many hexadecimal digits as are available in the text, + * returning -1 if the given number of digits was unavailable. + */ + function scanMinimumNumberOfHexDigits(count: number): number { + return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ true); + } - function scanHexDigits(count: number, mustMatchCount?: boolean): number { - var digits = 0; - var value = 0; - while (digits < count || !mustMatchCount) { - var ch = text.charCodeAt(pos); + function scanHexDigits(minCount: number, scanAsManyAsPossible: boolean): number { + let digits = 0; + let value = 0; + while (digits < minCount || scanAsManyAsPossible) { + let ch = text.charCodeAt(pos); if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) { value = value * 16 + ch - CharacterCodes._0; } @@ -627,16 +683,16 @@ module ts { pos++; digits++; } - if (digits < count) { + if (digits < minCount) { value = -1; } return value; } function scanString(): string { - var quote = text.charCodeAt(pos++); - var result = ""; - var start = pos; + let quote = text.charCodeAt(pos++); + let result = ""; + let start = pos; while (true) { if (pos >= len) { result += text.substring(start, pos); @@ -644,7 +700,7 @@ module ts { error(Diagnostics.Unterminated_string_literal); break; } - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); if (ch === quote) { result += text.substring(start, pos); pos++; @@ -672,12 +728,12 @@ module ts { * a literal component of a TemplateExpression. */ function scanTemplateAndSetTokenValue(): SyntaxKind { - var startedWithBacktick = text.charCodeAt(pos) === CharacterCodes.backtick; + let startedWithBacktick = text.charCodeAt(pos) === CharacterCodes.backtick; pos++; - var start = pos; - var contents = "" - var resultingToken: SyntaxKind; + let start = pos; + let contents = "" + let resultingToken: SyntaxKind; while (true) { if (pos >= len) { @@ -688,7 +744,7 @@ module ts { break; } - var currChar = text.charCodeAt(pos); + let currChar = text.charCodeAt(pos); // '`' if (currChar === CharacterCodes.backtick) { @@ -744,7 +800,7 @@ module ts { error(Diagnostics.Unexpected_end_of_text); return ""; } - var ch = text.charCodeAt(pos++); + let ch = text.charCodeAt(pos++); switch (ch) { case CharacterCodes._0: return "\0"; @@ -764,16 +820,20 @@ module ts { return "\'"; case CharacterCodes.doubleQuote: return "\""; - case CharacterCodes.x: case CharacterCodes.u: - var ch = scanHexDigits(ch === CharacterCodes.x ? 2 : 4, /*mustMatchCount*/ true); - if (ch >= 0) { - return String.fromCharCode(ch); - } - else { - error(Diagnostics.Hexadecimal_digit_expected); - return "" + // '\u{DDDDDDDD}' + if (pos < len && text.charCodeAt(pos) === CharacterCodes.openBrace) { + hasExtendedUnicodeEscape = true; + pos++; + return scanExtendedUnicodeEscape(); } + + // '\uDDDD' + return scanHexadecimalEscape(/*numDigits*/ 4) + + case CharacterCodes.x: + // '\xDD' + return scanHexadecimalEscape(/*numDigits*/ 2) // when encountering a LineContinuation (i.e. a backslash and a line terminator sequence), // the line terminator is interpreted to be "the empty code unit sequence". @@ -790,14 +850,74 @@ module ts { return String.fromCharCode(ch); } } + + function scanHexadecimalEscape(numDigits: number): string { + let escapedValue = scanExactNumberOfHexDigits(numDigits); + + if (escapedValue >= 0) { + return String.fromCharCode(escapedValue); + } + else { + error(Diagnostics.Hexadecimal_digit_expected); + return "" + } + } + + function scanExtendedUnicodeEscape(): string { + let escapedValue = scanMinimumNumberOfHexDigits(1); + let isInvalidExtendedEscape = false; + + // Validate the value of the digit + if (escapedValue < 0) { + error(Diagnostics.Hexadecimal_digit_expected) + isInvalidExtendedEscape = true; + } + else if (escapedValue > 0x10FFFF) { + error(Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive); + isInvalidExtendedEscape = true; + } + + if (pos >= len) { + error(Diagnostics.Unexpected_end_of_text); + isInvalidExtendedEscape = true; + } + else if (text.charCodeAt(pos) == CharacterCodes.closeBrace) { + // Only swallow the following character up if it's a '}'. + pos++; + } + else { + error(Diagnostics.Unterminated_Unicode_escape_sequence); + isInvalidExtendedEscape = true; + } + + if (isInvalidExtendedEscape) { + return ""; + } + + return utf16EncodeAsString(escapedValue); + } + + // Derived from the 10.1.1 UTF16Encoding of the ES6 Spec. + function utf16EncodeAsString(codePoint: number): string { + Debug.assert(0x0 <= codePoint && codePoint <= 0x10FFFF); + + if (codePoint <= 65535) { + return String.fromCharCode(codePoint); + } + + let codeUnit1 = Math.floor((codePoint - 65536) / 1024) + 0xD800; + let codeUnit2 = ((codePoint - 65536) % 1024) + 0xDC00; + + return String.fromCharCode(codeUnit1, codeUnit2); + } // Current character is known to be a backslash. Check for Unicode escape of the form '\uXXXX' // and return code point value if valid Unicode escape is found. Otherwise return -1. function peekUnicodeEscape(): number { if (pos + 5 < len && text.charCodeAt(pos + 1) === CharacterCodes.u) { - var start = pos; + let start = pos; pos += 2; - var value = scanHexDigits(4, /*mustMatchCount*/ true); + let value = scanExactNumberOfHexDigits(4); pos = start; return value; } @@ -805,10 +925,10 @@ module ts { } function scanIdentifierParts(): string { - var result = ""; - var start = pos; + let result = ""; + let start = pos; while (pos < len) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); if (isIdentifierPart(ch)) { pos++; } @@ -833,9 +953,9 @@ module ts { function getIdentifierToken(): SyntaxKind { // Reserved words are between 2 and 11 characters long and start with a lowercase letter - var len = tokenValue.length; + let len = tokenValue.length; if (len >= 2 && len <= 11) { - var ch = tokenValue.charCodeAt(0); + let ch = tokenValue.charCodeAt(0); if (ch >= CharacterCodes.a && ch <= CharacterCodes.z && hasOwnProperty.call(textToToken, tokenValue)) { return token = textToToken[tokenValue]; } @@ -846,13 +966,13 @@ module ts { function scanBinaryOrOctalDigits(base: number): number { Debug.assert(base !== 2 || base !== 8, "Expected either base 2 or base 8"); - var value = 0; + let value = 0; // For counting number of digits; Valid binaryIntegerLiteral must have at least one binary digit following B or b. // Similarly valid octalIntegerLiteral must have at least one octal digit following o or O. - var numberOfDigits = 0; + let numberOfDigits = 0; while (true) { - var ch = text.charCodeAt(pos); - var valueOfCh = ch - CharacterCodes._0; + let ch = text.charCodeAt(pos); + let valueOfCh = ch - CharacterCodes._0; if (!isDigit(ch) || valueOfCh >= base) { break; } @@ -869,6 +989,7 @@ module ts { function scan(): SyntaxKind { startPos = pos; + hasExtendedUnicodeEscape = false; precedingLineBreak = false; tokenIsUnterminated = false; while (true) { @@ -876,7 +997,7 @@ module ts { if (pos >= len) { return token = SyntaxKind.EndOfFileToken; } - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); switch (ch) { case CharacterCodes.lineFeed: case CharacterCodes.carriageReturn: @@ -996,9 +1117,9 @@ module ts { if (text.charCodeAt(pos + 1) === CharacterCodes.asterisk) { pos += 2; - var commentClosed = false; + let commentClosed = false; while (pos < len) { - var ch = text.charCodeAt(pos); + let ch = text.charCodeAt(pos); if (ch === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) { pos += 2; @@ -1034,7 +1155,7 @@ module ts { case CharacterCodes._0: if (pos + 2 < len && (text.charCodeAt(pos + 1) === CharacterCodes.X || text.charCodeAt(pos + 1) === CharacterCodes.x)) { pos += 2; - var value = scanHexDigits(1, /*mustMatchCount*/ false); + let value = scanMinimumNumberOfHexDigits(1); if (value < 0) { error(Diagnostics.Hexadecimal_digit_expected); value = 0; @@ -1044,7 +1165,7 @@ module ts { } else if (pos + 2 < len && (text.charCodeAt(pos + 1) === CharacterCodes.B || text.charCodeAt(pos + 1) === CharacterCodes.b)) { pos += 2; - var value = scanBinaryOrOctalDigits(/* base */ 2); + let value = scanBinaryOrOctalDigits(/* base */ 2); if (value < 0) { error(Diagnostics.Binary_digit_expected); value = 0; @@ -1054,7 +1175,7 @@ module ts { } else if (pos + 2 < len && (text.charCodeAt(pos + 1) === CharacterCodes.O || text.charCodeAt(pos + 1) === CharacterCodes.o)) { pos += 2; - var value = scanBinaryOrOctalDigits(/* base */ 8); + let value = scanBinaryOrOctalDigits(/* base */ 8); if (value < 0) { error(Diagnostics.Octal_digit_expected); value = 0; @@ -1164,11 +1285,13 @@ module ts { return pos++, token = SyntaxKind.CloseBraceToken; case CharacterCodes.tilde: return pos++, token = SyntaxKind.TildeToken; + case CharacterCodes.at: + return pos++, token = SyntaxKind.AtToken; case CharacterCodes.backslash: - var ch = peekUnicodeEscape(); - if (ch >= 0 && isIdentifierStart(ch)) { + let cookedChar = peekUnicodeEscape(); + if (cookedChar >= 0 && isIdentifierStart(cookedChar)) { pos += 6; - tokenValue = String.fromCharCode(ch) + scanIdentifierParts(); + tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts(); return token = getIdentifierToken(); } error(Diagnostics.Invalid_character); @@ -1221,9 +1344,9 @@ module ts { function reScanSlashToken(): SyntaxKind { if (token === SyntaxKind.SlashToken || token === SyntaxKind.SlashEqualsToken) { - var p = tokenPos + 1; - var inEscape = false; - var inCharacterClass = false; + let p = tokenPos + 1; + let inEscape = false; + let inCharacterClass = false; while (true) { // If we reach the end of a file, or hit a newline, then this is an unterminated // regex. Report error and return what we have so far. @@ -1233,7 +1356,7 @@ module ts { break; } - var ch = text.charCodeAt(p); + let ch = text.charCodeAt(p); if (isLineBreak(ch)) { tokenIsUnterminated = true; error(Diagnostics.Unterminated_regular_expression_literal) @@ -1283,13 +1406,13 @@ module ts { } function speculationHelper(callback: () => T, isLookahead: boolean): T { - var savePos = pos; - var saveStartPos = startPos; - var saveTokenPos = tokenPos; - var saveToken = token; - var saveTokenValue = tokenValue; - var savePrecedingLineBreak = precedingLineBreak; - var result = callback(); + let savePos = pos; + let saveStartPos = startPos; + let saveTokenPos = tokenPos; + let saveToken = token; + let saveTokenValue = tokenValue; + let savePrecedingLineBreak = precedingLineBreak; + let result = callback(); // If our callback returned something 'falsy' or we're just looking ahead, // then unconditionally restore us to where we were. @@ -1336,6 +1459,7 @@ module ts { getTokenPos: () => tokenPos, getTokenText: () => text.substring(tokenPos, pos), getTokenValue: () => tokenValue, + hasExtendedUnicodeEscape: () => hasExtendedUnicodeEscape, hasPrecedingLineBreak: () => precedingLineBreak, isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord, isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord, diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 5f10a747d42..f89c474ce7f 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -124,15 +124,14 @@ module ts { function visitDirectory(path: string) { var folder = fso.GetFolder(path || "."); var files = getNames(folder.files); - for (var i = 0; i < files.length; i++) { - var name = files[i]; + for (let name of files) { if (!extension || fileExtensionIs(name, extension)) { result.push(combinePaths(path, name)); } } var subfolders = getNames(folder.subfolders); - for (var i = 0; i < subfolders.length; i++) { - visitDirectory(combinePaths(path, subfolders[i])); + for (let current of subfolders) { + visitDirectory(combinePaths(path, current)); } } } @@ -230,8 +229,8 @@ module ts { function visitDirectory(path: string) { var files = _fs.readdirSync(path || ".").sort(); var directories: string[] = []; - for (var i = 0; i < files.length; i++) { - var name = combinePaths(path, files[i]); + for (let current of files) { + var name = combinePaths(path, current); var stat = _fs.lstatSync(name); if (stat.isFile()) { if (!extension || fileExtensionIs(name, extension)) { @@ -242,8 +241,8 @@ module ts { directories.push(name); } } - for (var i = 0; i < directories.length; i++) { - visitDirectory(directories[i]); + for (let current of directories) { + visitDirectory(current); } } } diff --git a/src/compiler/tsc.ts b/src/compiler/tsc.ts index a3755650aed..0cbeff8204a 100644 --- a/src/compiler/tsc.ts +++ b/src/compiler/tsc.ts @@ -2,8 +2,6 @@ /// module ts { - var version = "1.5.0.0"; - export interface SourceFile { fileWatcher: FileWatcher; } @@ -134,23 +132,6 @@ module ts { return typeof JSON === "object" && typeof JSON.parse === "function"; } - function findConfigFile(): string { - var searchPath = normalizePath(sys.getCurrentDirectory()); - var fileName = "tsconfig.json"; - while (true) { - if (sys.fileExists(fileName)) { - return fileName; - } - var parentPath = getDirectoryPath(searchPath); - if (parentPath === searchPath) { - break; - } - searchPath = parentPath; - fileName = "../" + fileName; - } - return undefined; - } - export function executeCommandLine(args: string[]): void { var commandLine = parseCommandLine(args); var configFileName: string; // Configuration file name (if any) @@ -178,7 +159,7 @@ module ts { } if (commandLine.options.version) { - reportDiagnostic(createCompilerDiagnostic(Diagnostics.Version_0, version)); + reportDiagnostic(createCompilerDiagnostic(Diagnostics.Version_0, ts.version)); return sys.exit(ExitStatus.Success); } @@ -200,7 +181,8 @@ module ts { } } else if (commandLine.fileNames.length === 0 && isJSONSupported()) { - configFileName = findConfigFile(); + var searchPath = normalizePath(sys.getCurrentDirectory()); + configFileName = findConfigFile(searchPath); } if (commandLine.fileNames.length === 0 && !configFileName) { @@ -250,7 +232,7 @@ module ts { var compileResult = compile(rootFileNames, compilerOptions, compilerHost); - if (!commandLine.options.watch) { + if (!compilerOptions.watch) { return sys.exit(compileResult.exitStatus); } @@ -269,7 +251,7 @@ module ts { } // Use default host function var sourceFile = hostGetSourceFile(fileName, languageVersion, onError); - if (sourceFile && commandLine.options.watch) { + if (sourceFile && compilerOptions.watch) { // Attach a file watcher sourceFile.fileWatcher = sys.watchFile(sourceFile.fileName, () => sourceFileChanged(sourceFile)); } @@ -294,6 +276,7 @@ module ts { // If a source file changes, mark it as unwatched and start the recompilation timer function sourceFileChanged(sourceFile: SourceFile) { + sourceFile.fileWatcher.close(); sourceFile.fileWatcher = undefined; startTimer(); } @@ -322,18 +305,16 @@ module ts { } function compile(fileNames: string[], compilerOptions: CompilerOptions, compilerHost: CompilerHost) { - ts.parseTime = 0; - ts.bindTime = 0; - ts.checkTime = 0; - ts.emitTime = 0; - - var start = new Date().getTime(); + ioReadTime = 0; + ioWriteTime = 0; + programTime = 0; + bindTime = 0; + checkTime = 0; + emitTime = 0; var program = createProgram(fileNames, compilerOptions, compilerHost); var exitStatus = compileProgram(); - var end = new Date().getTime() - start; - if (compilerOptions.listFiles) { forEach(program.getSourceFiles(), file => { sys.write(file.fileName + sys.newLine); @@ -353,11 +334,17 @@ module ts { reportStatisticalValue("Memory used", Math.round(memoryUsed / 1000) + "K"); } - reportTimeStatistic("Parse time", ts.parseTime); - reportTimeStatistic("Bind time", ts.bindTime); - reportTimeStatistic("Check time", ts.checkTime); - reportTimeStatistic("Emit time", ts.emitTime); - reportTimeStatistic("Total time", end); + // Individual component times. + // Note: To match the behavior of previous versions of the compiler, the reported parse time includes + // I/O read time and processing time for triple-slash references and module imports, and the reported + // emit time includes I/O write time. We preserve this behavior so we can accurately compare times. + reportTimeStatistic("I/O read", ioReadTime); + reportTimeStatistic("I/O write", ioWriteTime); + reportTimeStatistic("Parse time", programTime); + reportTimeStatistic("Bind time", bindTime); + reportTimeStatistic("Check time", checkTime); + reportTimeStatistic("Emit time", emitTime); + reportTimeStatistic("Total time", programTime + bindTime + checkTime + emitTime); } return { program, exitStatus }; @@ -398,7 +385,7 @@ module ts { // The emitter emitted something, inform the caller if that happened in the presence // of diagnostics or not. if (diagnostics.length > 0 || emitOutput.diagnostics.length > 0) { - ExitStatus.DiagnosticsPresent_OutputsGenerated; + return ExitStatus.DiagnosticsPresent_OutputsGenerated; } return ExitStatus.Success; @@ -406,7 +393,7 @@ module ts { } function printVersion() { - sys.write(getDiagnosticText(Diagnostics.Version_0, version) + sys.newLine); + sys.write(getDiagnosticText(Diagnostics.Version_0, ts.version) + sys.newLine); } function printHelp() { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5e5993fe4a2..fbb7805d998 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -67,6 +67,7 @@ module ts { BarBarToken, QuestionToken, ColonToken, + AtToken, // Assignments EqualsToken, PlusEqualsToken, @@ -121,7 +122,6 @@ module ts { WithKeyword, // Strict mode reserved words AsKeyword, - FromKeyword, ImplementsKeyword, InterfaceKeyword, LetKeyword, @@ -131,7 +131,7 @@ module ts { PublicKeyword, StaticKeyword, YieldKeyword, - // TypeScript keywords + // Contextual keywords AnyKeyword, BooleanKeyword, ConstructorKeyword, @@ -144,7 +144,9 @@ module ts { StringKeyword, SymbolKeyword, TypeKeyword, + FromKeyword, OfKeyword, // LastKeyword and LastToken + // Parse tree nodes // Names @@ -153,6 +155,7 @@ module ts { // Signature elements TypeParameter, Parameter, + Decorator, // TypeMember PropertySignature, PropertyDeclaration, @@ -200,9 +203,12 @@ module ts { TemplateExpression, YieldExpression, SpreadElementExpression, + ClassExpression, OmittedExpression, // Misc TemplateSpan, + HeritageClauseElement, + SemicolonClassElement, // Element Block, VariableStatement, @@ -232,6 +238,7 @@ module ts { EnumDeclaration, ModuleDeclaration, ModuleBlock, + CaseBlock, ImportEqualsDeclaration, ImportDeclaration, ImportClause, @@ -242,6 +249,7 @@ module ts { ExportDeclaration, NamedExports, ExportSpecifier, + MissingDeclaration, // Module references ExternalModuleReference, @@ -279,7 +287,7 @@ module ts { FirstPunctuation = OpenBraceToken, LastPunctuation = CaretEqualsToken, FirstToken = Unknown, - LastToken = OfKeyword, + LastToken = LastKeyword, FirstTriviaToken = SingleLineCommentTrivia, LastTriviaToken = ConflictMarkerTrivia, FirstLiteralToken = NumericLiteral, @@ -298,14 +306,16 @@ module ts { Private = 0x00000020, // Property/Method Protected = 0x00000040, // Property/Method Static = 0x00000080, // Property/Method - MultiLine = 0x00000100, // Multi-line array or object literal - Synthetic = 0x00000200, // Synthetic node (for full fidelity) - DeclarationFile = 0x00000400, // Node is a .d.ts file - Let = 0x00000800, // Variable declaration - Const = 0x00001000, // Variable declaration - OctalLiteral = 0x00002000, + Default = 0x00000100, // Function/Class (export default declaration) + MultiLine = 0x00000200, // Multi-line array or object literal + Synthetic = 0x00000400, // Synthetic node (for full fidelity) + DeclarationFile = 0x00000800, // Node is a .d.ts file + Let = 0x00001000, // Variable declaration + Const = 0x00002000, // Variable declaration + OctalLiteral = 0x00004000, + ExportContext = 0x00008000, // Export context (initialized by binding) - Modifier = Export | Ambient | Public | Private | Protected | Static, + Modifier = Export | Ambient | Public | Private | Protected | Static | Default, AccessibilityModifier = Public | Private | Protected, BlockScoped = Let | Const } @@ -324,22 +334,25 @@ module ts { // If this node was parsed in the parameters of a generator. GeneratorParameter = 1 << 3, + // If this node was parsed as part of a decorator + Decorator = 1 << 4, + // If the parser encountered an error when parsing the code that created this node. Note // the parser only sets this directly on the node it creates right after encountering the - // error. - ThisNodeHasError = 1 << 4, + // error. + ThisNodeHasError = 1 << 5, // Context flags set directly by the parser. - ParserGeneratedFlags = StrictMode | DisallowIn | Yield | GeneratorParameter | ThisNodeHasError, + ParserGeneratedFlags = StrictMode | DisallowIn | Yield | GeneratorParameter | Decorator | ThisNodeHasError, // Context flags computed by aggregating child flags upwards. - // Used during incremental parsing to determine if this node or any of its children had an + // Used during incremental parsing to determine if this node or any of its children had an // error. Computed only once and then cached. - ThisNodeOrAnySubNodesHasError = 1 << 5, + ThisNodeOrAnySubNodesHasError = 1 << 6, // Used to know if we've computed data from children and cached it in this node. - HasAggregatedChildData = 1 << 6 + HasAggregatedChildData = 1 << 7 } export const enum RelationComparisonResult { @@ -351,16 +364,17 @@ module ts { export interface Node extends TextRange { kind: SyntaxKind; flags: NodeFlags; - // Specific context the parser was in when this node was created. Normally undefined. + // Specific context the parser was in when this node was created. Normally undefined. // Only set when the parser was in some interesting context (like async/yield). parserContextFlags?: ParserContextFlags; - modifiers?: ModifiersArray; // Array of modifiers - id?: number; // Unique id (used to look up NodeLinks) - parent?: Node; // Parent node (initialized by binding) - symbol?: Symbol; // Symbol declared by node (initialized by binding) - locals?: SymbolTable; // Locals associated with node (initialized by binding) - nextContainer?: Node; // Next container in declaration order (initialized by binding) - localSymbol?: Symbol; // Local symbol declared by node (initialized by binding only for exported nodes) + decorators?: NodeArray; // Array of decorators (in document order) + modifiers?: ModifiersArray; // Array of modifiers + id?: number; // Unique id (used to look up NodeLinks) + parent?: Node; // Parent node (initialized by binding) + symbol?: Symbol; // Symbol declared by node (initialized by binding) + locals?: SymbolTable; // Locals associated with node (initialized by binding) + nextContainer?: Node; // Next container in declaration order (initialized by binding) + localSymbol?: Symbol; // Local symbol declared by node (initialized by binding only for exported nodes) } export interface NodeArray extends Array, TextRange { @@ -394,6 +408,10 @@ module ts { expression: Expression; } + export interface Decorator extends Node { + expression: LeftHandSideExpression; + } + export interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -500,7 +518,7 @@ module ts { } export interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } @@ -521,7 +539,12 @@ module ts { body?: Block; } - // See the comment on MethodDeclaration for the intuition behind AccessorDeclaration being a + // For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. + export interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } + + // See the comment on MethodDeclaration for the intuition behind AccessorDeclaration being a // ClassElement and an ObjectLiteralElement. export interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; @@ -572,12 +595,12 @@ module ts { export interface StringLiteralTypeNode extends LiteralExpression, TypeNode { } - // Note: 'brands' in our syntax nodes serve to give us a small amount of nominal typing. + // Note: 'brands' in our syntax nodes serve to give us a small amount of nominal typing. // Consider 'Expression'. Without the brand, 'Expression' is actually no different // (structurally) than 'Node'. Because of this you can pass any Node to a function that // takes an Expression without any error. By using the 'brands' we ensure that the type - // checker actually thinks you have something of the right type. Note: the brands are - // never actually given values. At runtime they have zero cost. + // checker actually thinks you have something of the right type. Note: the brands are + // never actually given values. At runtime they have zero cost. export interface Expression extends Node { _expressionBrand: any; @@ -639,7 +662,9 @@ module ts { export interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } @@ -648,12 +673,17 @@ module ts { body: Block | Expression; // Required, whereas the member inherited from FunctionDeclaration is optional } + export interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } + // The text property of a LiteralExpression stores the interpreted value of the literal in text form. For a StringLiteral, // or any literal of a template, this means quotes have been removed and escapes have been converted to actual characters. // For a NumericLiteral, the stored value is the toString() representation of the number. For example 1, 1.00, and 1e0 are all stored as just "1". export interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } export interface StringLiteralExpression extends LiteralExpression { @@ -691,6 +721,7 @@ module ts { export interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } @@ -705,6 +736,11 @@ module ts { arguments: NodeArray; } + export interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } + export interface NewExpression extends CallExpression, PrimaryExpression { } export interface TaggedTemplateExpression extends MemberExpression { @@ -728,7 +764,7 @@ module ts { } export interface VariableStatement extends Statement { - declarationList: VariableDeclarationList; + declarationList: VariableDeclarationList; } export interface ExpressionStatement extends Statement { @@ -784,6 +820,10 @@ module ts { export interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + + export interface CaseBlock extends Node { clauses: NodeArray; } @@ -813,9 +853,8 @@ module ts { finallyBlock?: Block; } - export interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + export interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } @@ -823,13 +862,19 @@ module ts { _moduleElementBrand: any; } - export interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + export interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + export interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + + export interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } + export interface ClassElement extends Declaration { _classElementBrand: any; } @@ -843,7 +888,7 @@ module ts { export interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } export interface TypeAliasDeclaration extends Declaration, ModuleElement { @@ -863,11 +908,7 @@ module ts { members: NodeArray; } - export interface ExportContainer { - exportStars?: ExportDeclaration[]; // List of 'export *' statements (initialized by binding) - } - - export interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + export interface ModuleDeclaration extends Declaration, ModuleElement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } @@ -892,12 +933,12 @@ module ts { // import "mod" => importClause = undefined, moduleSpecifier = "mod" // In rest of the cases, module specifier is string literal corresponding to module // ImportClause information is shown at its declaration below. - export interface ImportDeclaration extends Statement, ModuleElement { + export interface ImportDeclaration extends ModuleElement { importClause?: ImportClause; moduleSpecifier: Expression; } - // In case of: + // In case of: // import d from "mod" => name = d, namedBinding = undefined // import * as ns from "mod" => name = undefined, namedBinding: NamespaceImport = { name: ns } // import d, * as ns from "mod" => name = d, namedBinding: NamespaceImport = { name: ns } @@ -912,7 +953,7 @@ module ts { name: Identifier; } - export interface ExportDeclaration extends Statement, ModuleElement { + export interface ExportDeclaration extends Declaration, ModuleElement { exportClause?: NamedExports; moduleSpecifier?: Expression; } @@ -932,8 +973,10 @@ module ts { export type ImportSpecifier = ImportOrExportSpecifier; export type ExportSpecifier = ImportOrExportSpecifier; - export interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + export interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } export interface FileReference extends TextRange { @@ -945,7 +988,7 @@ module ts { } // Source files are declarations when they are external modules. - export interface SourceFile extends Declaration, ExportContainer { + export interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; @@ -962,7 +1005,7 @@ module ts { externalModuleIndicator: Node; languageVersion: ScriptTarget; identifiers: Map; - + /* @internal */ nodeCount: number; /* @internal */ identifierCount: number; /* @internal */ symbolCount: number; @@ -970,10 +1013,10 @@ module ts { // File level diagnostics reported by the parser (includes diagnostics about /// references // as well as code diagnostics). /* @internal */ parseDiagnostics: Diagnostic[]; - + // File level diagnostics reported by the binder. /* @internal */ bindDiagnostics: Diagnostic[]; - + // Stores a line map for the file. // This field should never be used directly to obtain line map, use getLineMap function instead. /* @internal */ lineMap: number[]; @@ -993,14 +1036,14 @@ module ts { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that - * specific file will be generated. + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that + * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; @@ -1014,7 +1057,7 @@ module ts { getCommonSourceDirectory(): string; - // For testing purposes only. Should not be used by any other consumers (including the + // For testing purposes only. Should not be used by any other consumers (including the // language service). /* @internal */ getDiagnosticsProducingTypeChecker(): TypeChecker; @@ -1051,7 +1094,7 @@ module ts { // when -version or -help was provided, or this was a normal compilation, no diagnostics // were produced, and all outputs were generated successfully. Success = 0, - + // Diagnostics were produced and because of them no code was generated. DiagnosticsPresent_OutputsSkipped = 1, @@ -1080,6 +1123,9 @@ module ts { getSignaturesOfType(type: Type, kind: SignatureKind): Signature[]; getIndexTypeOfType(type: Type, kind: IndexKind): Type; getReturnTypeOfSignature(signature: Signature): Type; + + // If 'predicate' is supplied, then only the first symbol in scope matching the predicate + // will be returned. Otherwise, all symbols in scope will be returned. getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; getSymbolAtLocation(node: Node): Symbol; getShorthandAssignmentValueSymbol(location: Node): Symbol; @@ -1100,6 +1146,7 @@ module ts { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; // Should not be called directly. Should only be accessed through the Program instance. /* @internal */ getDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -1160,12 +1207,12 @@ module ts { // Write symbols's type argument if it is instantiated symbol // eg. class C { p: T } <-- Show p as C.p here - // var a: C; + // var a: C; // var p = a.p; <--- Here p is property of C so show it as C.p instead of just C.p - WriteTypeParametersOrArguments = 0x00000001, + WriteTypeParametersOrArguments = 0x00000001, // Use only external alias information to get the symbol name in the given context - // eg. module m { export class c { } } import x = m.c; + // eg. module m { export class c { } } import x = m.c; // When this flag is specified m.c will be used to refer to the class instead of alias symbol x UseOnlyExternalAliasing = 0x00000002, } @@ -1176,9 +1223,11 @@ module ts { CannotBeNamed } + export type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; + export interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportEqualsDeclaration[]; // aliases that need to have this symbol visible + aliasesToMakeVisible?: AnyImportSyntax[]; // aliases that need to have this symbol visible errorSymbolName?: string; // Optional symbol name that results in error errorNode?: Node; // optional node that results in error } @@ -1188,21 +1237,24 @@ module ts { } export interface EmitResolver { - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; - getExpressionNameSubstitution(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: Node): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; // Returns the constant value this property access resolves to, or 'undefined' for a non-constant getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } export const enum SymbolFlags { @@ -1226,18 +1278,17 @@ module ts { Signature = 0x00020000, // Call, construct, or index signature TypeParameter = 0x00040000, // Type parameter TypeAlias = 0x00080000, // Type alias - - // Export markers (see comment in declareModuleMember in binder) - ExportValue = 0x00100000, // Exported value marker - ExportType = 0x00200000, // Exported type marker - ExportNamespace = 0x00400000, // Exported namespace marker - Import = 0x00800000, // Import + ExportValue = 0x00100000, // Exported value marker (see comment in declareModuleMember in binder) + ExportType = 0x00200000, // Exported type marker (see comment in declareModuleMember in binder) + ExportNamespace = 0x00400000, // Exported namespace marker (see comment in declareModuleMember in binder) + Alias = 0x00800000, // An alias for another symbol (see comment in isAliasSymbolDeclaration in checker) Instantiated = 0x01000000, // Instantiated symbol Merged = 0x02000000, // Merged symbol (created during program binding) Transient = 0x04000000, // Transient symbol (created during type check) Prototype = 0x08000000, // Prototype property (no source representation) UnionProperty = 0x10000000, // Property in union type Optional = 0x20000000, // Optional property + ExportStar = 0x40000000, // Export * declaration Enum = RegularEnum | ConstEnum, Variable = FunctionScopedVariable | BlockScopedVariable, @@ -1270,9 +1321,9 @@ module ts { SetAccessorExcludes = Value & ~GetAccessor, TypeParameterExcludes = Type & ~TypeParameter, TypeAliasExcludes = Type, - ImportExcludes = Import, // Imports collide with all other imports with the same name + AliasExcludes = Alias, - ModuleMember = Variable | Function | Class | Interface | Enum | Module | TypeAlias | Import, + ModuleMember = Variable | Function | Class | Interface | Enum | Module | TypeAlias | Alias, ExportHasLocal = Function | Class | Enum | ValueModule, @@ -1305,10 +1356,9 @@ module ts { declaredType?: Type; // Type of class, interface, enum, or type parameter mapper?: TypeMapper; // Type mapper for instantiation alias referenced?: boolean; // True if alias symbol has been referenced as a value - exportAssignmentChecked?: boolean; // True if export assignment was checked - exportAssignmentSymbol?: Symbol; // Symbol exported from external module unionType?: UnionType; // Containing union type for union property resolvedExports?: SymbolTable; // Resolved exports of module + exportsChecked?: boolean; // True if exports of external module have been checked } export interface TransientSymbol extends Symbol, SymbolLinks { } @@ -1318,16 +1368,18 @@ module ts { } export const enum NodeCheckFlags { - TypeChecked = 0x00000001, // Node has been type checked - LexicalThis = 0x00000002, // Lexical 'this' reference - CaptureThis = 0x00000004, // Lexical 'this' used in body - EmitExtends = 0x00000008, // Emit __extends - SuperInstance = 0x00000010, // Instance 'super' reference - SuperStatic = 0x00000020, // Static 'super' reference - ContextChecked = 0x00000040, // Contextual types have been assigned + TypeChecked = 0x00000001, // Node has been type checked + LexicalThis = 0x00000002, // Lexical 'this' reference + CaptureThis = 0x00000004, // Lexical 'this' used in body + EmitExtends = 0x00000008, // Emit __extends + SuperInstance = 0x00000010, // Instance 'super' reference + SuperStatic = 0x00000020, // Static 'super' reference + ContextChecked = 0x00000040, // Contextual types have been assigned // Values for enum members have been computed, and any errors have been reported for them. - EnumValuesComputed = 0x00000080, + EnumValuesComputed = 0x00000080, + BlockScopedBindingInLoop = 0x00000100, + EmitDecorate = 0x00000200, // Emit __decorate } export interface NodeLinks { @@ -1474,11 +1526,15 @@ module ts { (t: Type): Type; } + // @internal export interface TypeInferences { primary: Type[]; // Inferences made directly to a type parameter secondary: Type[]; // Inferences made to a type parameter in a union type + isFixed: boolean; // Whether the type parameter is fixed, as defined in section 4.12.2 of the TypeScript spec + // If a type parameter is fixed, no more inferences can be made for the type parameter } + // @internal export interface InferenceContext { typeParameters: TypeParameter[]; // Type parameters for which inferences are made inferUnionTypes: boolean; // Infer union types for disjoint candidates (otherwise undefinedType) @@ -1523,7 +1579,6 @@ module ts { export interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1537,7 +1592,6 @@ module ts { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1550,7 +1604,8 @@ module ts { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; + /* @internal */ stripInternal?: boolean; [option: string]: string | number | boolean; } @@ -1768,7 +1823,7 @@ module ts { // Gets a count of how many times this collection has been modified. This value changes // each time 'add' is called (regardless of whether or not an equivalent diagnostic was // already in the collection). As such, it can be used as a simple way to tell if any - // operation caused diagnostics to be returned by storing and comparing the return value + // operation caused diagnostics to be returned by storing and comparing the return value // of this method before/after the operation is performed. getModificationCount(): number; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index c5bb46aa962..1deb9ce97e2 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1,4 +1,4 @@ -/// +/// module ts { export interface ReferencePathMatchResult { @@ -7,10 +7,15 @@ module ts { isNoDefaultLib?: boolean } + export interface SynthesizedNode extends Node { + leadingCommentRanges?: CommentRange[]; + trailingCommentRanges?: CommentRange[]; + startsOnNewLine: boolean; + } + export function getDeclarationOfKind(symbol: Symbol, kind: SyntaxKind): Declaration { - var declarations = symbol.declarations; - for (var i = 0; i < declarations.length; i++) { - var declaration = declarations[i]; + let declarations = symbol.declarations; + for (let declaration of declarations) { if (declaration.kind === kind) { return declaration; } @@ -34,12 +39,12 @@ module ts { } // Pool writers to avoid needing to allocate them for every symbol we write. - var stringWriters: StringSymbolWriter[] = []; + let stringWriters: StringSymbolWriter[] = []; export function getSingleLineStringWriter(): StringSymbolWriter { if (stringWriters.length == 0) { - var str = ""; + let str = ""; - var writeText: (text: string) => void = text => str += text; + let writeText: (text: string) => void = text => str += text; return { string: () => str, writeKeyword: writeText, @@ -83,7 +88,7 @@ module ts { // A node is considered to contain a parse error if: // a) the parser explicitly marked that it had an error // b) any of it's children reported that it had an error. - var thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & ParserContextFlags.ThisNodeHasError) !== 0) || + let thisNodeOrAnySubNodesHasError = ((node.parserContextFlags & ParserContextFlags.ThisNodeHasError) !== 0) || forEachChild(node, containsParseError); // If so, mark ourselves accordingly. @@ -112,8 +117,8 @@ module ts { // This is a useful function for debugging purposes. export function nodePosToString(node: Node): string { - var file = getSourceFileOfNode(node); - var loc = getLineAndCharacterOfPosition(file, node.pos); + let file = getSourceFileOfNode(node); + let loc = getLineAndCharacterOfPosition(file, node.pos); return `${ file.fileName }(${ loc.line + 1 },${ loc.character + 1 })`; } @@ -127,7 +132,7 @@ module ts { // missing. This happens whenever the parser knows it needs to parse something, but can't // get anything in the source code that it expects at that location. For example: // - // var a: ; + // let a: ; // // Here, the Type in the Type-Annotation is not-optional (as there is a colon in the source // code). So the parser will attempt to parse out a type, and will create an actual node. @@ -140,7 +145,7 @@ module ts { return node.pos === node.end && node.kind !== SyntaxKind.EndOfFileToken; } - + export function nodeIsPresent(node: Node) { return !nodeIsMissing(node); } @@ -160,7 +165,7 @@ module ts { return ""; } - var text = sourceFile.text; + let text = sourceFile.text; return text.substring(skipTrivia(text, node.pos), node.end); } @@ -192,6 +197,45 @@ module ts { return getBaseFileName(moduleName).replace(/\W/g, "_"); } + export function isBlockOrCatchScoped(declaration: Declaration) { + return (getCombinedNodeFlags(declaration) & NodeFlags.BlockScoped) !== 0 || + isCatchClauseVariableDeclaration(declaration); + } + + export function getEnclosingBlockScopeContainer(node: Node): Node { + let current = node; + while (current) { + if (isFunctionLike(current)) { + return current; + } + switch (current.kind) { + case SyntaxKind.SourceFile: + case SyntaxKind.CaseBlock: + case SyntaxKind.CatchClause: + case SyntaxKind.ModuleDeclaration: + case SyntaxKind.ForStatement: + case SyntaxKind.ForInStatement: + case SyntaxKind.ForOfStatement: + return current; + case SyntaxKind.Block: + // function block is not considered block-scope container + // see comment in binder.ts: bind(...), case for SyntaxKind.Block + if (!isFunctionLike(current.parent)) { + return current; + } + } + + current = current.parent; + } + } + + export function isCatchClauseVariableDeclaration(declaration: Declaration) { + return declaration && + declaration.kind === SyntaxKind.VariableDeclaration && + declaration.parent && + declaration.parent.kind === SyntaxKind.CatchClause; + } + // Return display name of an identifier // Computed property names will just be emitted as "[]", where is the source // text of the expression in the computed property. @@ -200,52 +244,70 @@ module ts { } export function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): Diagnostic { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - - var start = getTokenPosOfNode(node, file); - var length = node.end - start; - - return createFileDiagnostic(file, start, length, message, arg0, arg1, arg2); + let sourceFile = getSourceFileOfNode(node); + let span = getErrorSpanForNode(sourceFile, node); + return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2); } export function createDiagnosticForNodeFromMessageChain(node: Node, messageChain: DiagnosticMessageChain): Diagnostic { - node = getErrorSpanForNode(node); - var file = getSourceFileOfNode(node); - var start = skipTrivia(file.text, node.pos); - var length = node.end - start; + let sourceFile = getSourceFileOfNode(node); + let span = getErrorSpanForNode(sourceFile, node); return { - file, - start, - length, + file: sourceFile, + start: span.start, + length: span.length, code: messageChain.code, category: messageChain.category, messageText: messageChain.next ? messageChain : messageChain.messageText }; } - export function getErrorSpanForNode(node: Node): Node { - var errorSpan: Node; + /* @internal */ + export function getSpanOfTokenAtPosition(sourceFile: SourceFile, pos: number): TextSpan { + let scanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/ true, sourceFile.text); + scanner.setTextPos(pos); + scanner.scan(); + let start = scanner.getTokenPos(); + return createTextSpanFromBounds(start, scanner.getTextPos()); + } + + export function getErrorSpanForNode(sourceFile: SourceFile, node: Node): TextSpan { + let errorNode = node; switch (node.kind) { + case SyntaxKind.SourceFile: + let pos = skipTrivia(sourceFile.text, 0, /*stopAfterLineBreak*/ false); + if (pos === sourceFile.text.length) { + // file is empty - return span for the beginning of the file + return createTextSpan(0, 0); + } + return getSpanOfTokenAtPosition(sourceFile, pos); // This list is a work in progress. Add missing node kinds to improve their error // spans. case SyntaxKind.VariableDeclaration: case SyntaxKind.BindingElement: case SyntaxKind.ClassDeclaration: + case SyntaxKind.ClassExpression: case SyntaxKind.InterfaceDeclaration: case SyntaxKind.ModuleDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.EnumMember: - errorSpan = (node).name; + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.FunctionExpression: + errorNode = (node).name; break; } - // We now have the ideal error span, but it may be a node that is optional and absent - // (e.g. the name of a function expression), in which case errorSpan will be undefined. - // Alternatively, it might be required and missing (e.g. the name of a module), in which - // case its pos will equal its end (length 0). In either of these cases, we should fall - // back to the original node that the error was issued on. - return errorSpan && errorSpan.pos < errorSpan.end ? errorSpan : node; + if (errorNode === undefined) { + // If we don't have a better node, then just set the error on the first token of + // construct. + return getSpanOfTokenAtPosition(sourceFile, node.pos); + } + + let pos = nodeIsMissing(errorNode) + ? errorNode.pos + : skipTrivia(sourceFile.text, errorNode.pos); + + return createTextSpanFromBounds(pos, errorNode.end); } export function isExternalModule(file: SourceFile): boolean { @@ -278,7 +340,7 @@ module ts { export function getCombinedNodeFlags(node: Node): NodeFlags { node = walkUpBindingElementsAndPatterns(node); - var flags = node.flags; + let flags = node.flags; if (node.kind === SyntaxKind.VariableDeclaration) { node = node.parent; } @@ -307,16 +369,16 @@ module ts { return node.kind === SyntaxKind.ExpressionStatement && (node).expression.kind === SyntaxKind.StringLiteral; } - export function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode?: SourceFile) { - sourceFileOfNode = sourceFileOfNode || getSourceFileOfNode(node); - + export function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile) { // If parameter/type parameter, the prev token trailing comments are part of this node too if (node.kind === SyntaxKind.Parameter || node.kind === SyntaxKind.TypeParameter) { // e.g. (/** blah */ a, /** blah */ b); - return concatenate(getTrailingCommentRanges(sourceFileOfNode.text, node.pos), - // e.g.: ( - // /** blah */ a, - // /** blah */ b); + + // e.g.: ( + // /** blah */ a, + // /** blah */ b); + return concatenate( + getTrailingCommentRanges(sourceFileOfNode.text, node.pos), getLeadingCommentRanges(sourceFileOfNode.text, node.pos)); } else { @@ -335,7 +397,7 @@ module ts { } } - export var fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/ + export let fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/ // Warning: This has the same semantics as the forEach family of functions, @@ -348,6 +410,7 @@ module ts { switch (node.kind) { case SyntaxKind.ReturnStatement: return visitor(node); + case SyntaxKind.CaseBlock: case SyntaxKind.Block: case SyntaxKind.IfStatement: case SyntaxKind.DoStatement: @@ -367,7 +430,26 @@ module ts { } } - export function isAnyFunction(node: Node): boolean { + /* @internal */ + export function isVariableLike(node: Node): boolean { + if (node) { + switch (node.kind) { + case SyntaxKind.BindingElement: + case SyntaxKind.EnumMember: + case SyntaxKind.Parameter: + case SyntaxKind.PropertyAssignment: + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.PropertySignature: + case SyntaxKind.ShorthandPropertyAssignment: + case SyntaxKind.VariableDeclaration: + return true; + } + } + + return false; + } + + export function isFunctionLike(node: Node): boolean { if (node) { switch (node.kind) { case SyntaxKind.Constructor: @@ -394,7 +476,7 @@ module ts { } export function isFunctionBlock(node: Node) { - return node && node.kind === SyntaxKind.Block && isAnyFunction(node.parent); + return node && node.kind === SyntaxKind.Block && isFunctionLike(node.parent); } export function isObjectLiteralMethod(node: Node) { @@ -404,7 +486,7 @@ module ts { export function getContainingFunction(node: Node): FunctionLikeDeclaration { while (true) { node = node.parent; - if (!node || isAnyFunction(node)) { + if (!node || isFunctionLike(node)) { return node; } } @@ -501,6 +583,83 @@ module ts { return (node).expression; } + export function nodeCanBeDecorated(node: Node): boolean { + switch (node.kind) { + case SyntaxKind.ClassDeclaration: + // classes are valid targets + return true; + + case SyntaxKind.PropertyDeclaration: + // property declarations are valid if their parent is a class declaration. + return node.parent.kind === SyntaxKind.ClassDeclaration; + + case SyntaxKind.Parameter: + // if the parameter's parent has a body and its grandparent is a class declaration, this is a valid target; + return (node.parent).body && node.parent.parent.kind === SyntaxKind.ClassDeclaration; + + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.MethodDeclaration: + // if this method has a body and its parent is a class declaration, this is a valid target. + return (node).body && node.parent.kind === SyntaxKind.ClassDeclaration; + } + + return false; + } + + export function nodeIsDecorated(node: Node): boolean { + switch (node.kind) { + case SyntaxKind.ClassDeclaration: + if (node.decorators) { + return true; + } + + return false; + + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.Parameter: + if (node.decorators) { + return true; + } + + return false; + + case SyntaxKind.GetAccessor: + if ((node).body && node.decorators) { + return true; + } + + return false; + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.SetAccessor: + if ((node).body && node.decorators) { + return true; + } + + return false; + } + + return false; + } + + export function childIsDecorated(node: Node): boolean { + switch (node.kind) { + case SyntaxKind.ClassDeclaration: + return forEach((node).members, nodeOrChildIsDecorated); + + case SyntaxKind.MethodDeclaration: + case SyntaxKind.SetAccessor: + return forEach((node).parameters, nodeIsDecorated); + } + + return false; + } + + export function nodeOrChildIsDecorated(node: Node): boolean { + return nodeIsDecorated(node) || childIsDecorated(node); + } + export function isExpression(node: Node): boolean { switch (node.kind) { case SyntaxKind.ThisKeyword: @@ -519,6 +678,7 @@ module ts { case SyntaxKind.TypeAssertionExpression: case SyntaxKind.ParenthesizedExpression: case SyntaxKind.FunctionExpression: + case SyntaxKind.ClassExpression: case SyntaxKind.ArrowFunction: case SyntaxKind.VoidExpression: case SyntaxKind.DeleteExpression: @@ -545,7 +705,7 @@ module ts { // fall through case SyntaxKind.NumericLiteral: case SyntaxKind.StringLiteral: - var parent = node.parent; + let parent = node.parent; switch (parent.kind) { case SyntaxKind.VariableDeclaration: case SyntaxKind.Parameter: @@ -567,13 +727,13 @@ module ts { case SyntaxKind.SwitchStatement: return (parent).expression === node; case SyntaxKind.ForStatement: - var forStatement = parent; + let forStatement = parent; return (forStatement.initializer === node && forStatement.initializer.kind !== SyntaxKind.VariableDeclarationList) || forStatement.condition === node || forStatement.iterator === node; case SyntaxKind.ForInStatement: case SyntaxKind.ForOfStatement: - var forInStatement = parent; + let forInStatement = parent; return (forInStatement.initializer === node && forInStatement.initializer.kind !== SyntaxKind.VariableDeclarationList) || forInStatement.expression === node; case SyntaxKind.TypeAssertionExpression: @@ -592,9 +752,9 @@ module ts { } export function isInstantiatedModule(node: ModuleDeclaration, preserveConstEnums: boolean) { - var moduleState = getModuleInstanceState(node) + let moduleState = getModuleInstanceState(node) return moduleState === ModuleInstanceState.Instantiated || - (preserveConstEnums && moduleState === ModuleInstanceState.ConstEnumOnly); + (preserveConstEnums && moduleState === ModuleInstanceState.ConstEnumOnly); } export function isExternalModuleImportEqualsDeclaration(node: Node) { @@ -615,7 +775,7 @@ module ts { return (node).moduleSpecifier; } if (node.kind === SyntaxKind.ImportEqualsDeclaration) { - var reference = (node).moduleReference; + let reference = (node).moduleReference; if (reference.kind === SyntaxKind.ExternalModuleReference) { return (reference).expression; } @@ -665,7 +825,7 @@ module ts { } export function isBindingPattern(node: Node) { - return node.kind === SyntaxKind.ArrayBindingPattern || node.kind === SyntaxKind.ObjectBindingPattern; + return !!node && (node.kind === SyntaxKind.ArrayBindingPattern || node.kind === SyntaxKind.ObjectBindingPattern); } export function isInAmbientContext(node: Node): boolean { @@ -681,31 +841,33 @@ module ts { export function isDeclaration(node: Node): boolean { switch (node.kind) { - case SyntaxKind.TypeParameter: - case SyntaxKind.Parameter: - case SyntaxKind.VariableDeclaration: + case SyntaxKind.ArrowFunction: case SyntaxKind.BindingElement: - case SyntaxKind.PropertyDeclaration: - case SyntaxKind.PropertySignature: - case SyntaxKind.PropertyAssignment: - case SyntaxKind.ShorthandPropertyAssignment: + case SyntaxKind.ClassDeclaration: + case SyntaxKind.Constructor: + case SyntaxKind.EnumDeclaration: case SyntaxKind.EnumMember: + case SyntaxKind.ExportSpecifier: + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.FunctionExpression: + case SyntaxKind.GetAccessor: + case SyntaxKind.ImportClause: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.InterfaceDeclaration: case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - case SyntaxKind.Constructor: - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.TypeAliasDeclaration: - case SyntaxKind.EnumDeclaration: case SyntaxKind.ModuleDeclaration: - case SyntaxKind.ImportEqualsDeclaration: - case SyntaxKind.ImportClause: - case SyntaxKind.ImportSpecifier: case SyntaxKind.NamespaceImport: - case SyntaxKind.ExportSpecifier: + case SyntaxKind.Parameter: + case SyntaxKind.PropertyAssignment: + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.PropertySignature: + case SyntaxKind.SetAccessor: + case SyntaxKind.ShorthandPropertyAssignment: + case SyntaxKind.TypeAliasDeclaration: + case SyntaxKind.TypeParameter: + case SyntaxKind.VariableDeclaration: return true; } return false; @@ -738,44 +900,77 @@ module ts { } } + export function isClassElement(n: Node): boolean { + switch (n.kind) { + case SyntaxKind.Constructor: + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.IndexSignature: + return true; + default: + return false; + } + } + // True if the given identifier, string literal, or number literal is the name of a declaration node - export function isDeclarationOrFunctionExpressionOrCatchVariableName(name: Node): boolean { + export function isDeclarationName(name: Node): boolean { if (name.kind !== SyntaxKind.Identifier && name.kind !== SyntaxKind.StringLiteral && name.kind !== SyntaxKind.NumericLiteral) { return false; } - var parent = name.parent; - if (isDeclaration(parent) || parent.kind === SyntaxKind.FunctionExpression) { - return (parent).name === name; + let parent = name.parent; + if (parent.kind === SyntaxKind.ImportSpecifier || parent.kind === SyntaxKind.ExportSpecifier) { + if ((parent).propertyName) { + return true; + } } - if (parent.kind === SyntaxKind.CatchClause) { - return (parent).name === name; + if (isDeclaration(parent)) { + return (parent).name === name; } return false; } - export function getClassBaseTypeNode(node: ClassDeclaration) { - var heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ExtendsKeyword); + // An alias symbol is created by one of the following declarations: + // import = ... + // import from ... + // import * as from ... + // import { x as } from ... + // export { x as } from ... + // export = ... + // export default ... + export function isAliasSymbolDeclaration(node: Node): boolean { + return node.kind === SyntaxKind.ImportEqualsDeclaration || + node.kind === SyntaxKind.ImportClause && !!(node).name || + node.kind === SyntaxKind.NamespaceImport || + node.kind === SyntaxKind.ImportSpecifier || + node.kind === SyntaxKind.ExportSpecifier || + node.kind === SyntaxKind.ExportAssignment && (node).expression.kind === SyntaxKind.Identifier; + } + + export function getClassExtendsHeritageClauseElement(node: ClassLikeDeclaration) { + let heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ExtendsKeyword); return heritageClause && heritageClause.types.length > 0 ? heritageClause.types[0] : undefined; } - export function getClassImplementedTypeNodes(node: ClassDeclaration) { - var heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ImplementsKeyword); + export function getClassImplementsHeritageClauseElements(node: ClassDeclaration) { + let heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ImplementsKeyword); return heritageClause ? heritageClause.types : undefined; } export function getInterfaceBaseTypeNodes(node: InterfaceDeclaration) { - var heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ExtendsKeyword); + let heritageClause = getHeritageClause(node.heritageClauses, SyntaxKind.ExtendsKeyword); return heritageClause ? heritageClause.types : undefined; } export function getHeritageClause(clauses: NodeArray, kind: SyntaxKind) { if (clauses) { - for (var i = 0, n = clauses.length; i < n; i++) { - if (clauses[i].token === kind) { - return clauses[i]; + for (let clause of clauses) { + if (clause.token === kind) { + return clause; } } } @@ -785,7 +980,7 @@ module ts { export function tryResolveScriptReference(host: ScriptReferenceHost, sourceFile: SourceFile, reference: FileReference) { if (!host.getCompilerOptions().noResolve) { - var referenceFileName = isRootedDiskPath(reference.fileName) ? reference.fileName : combinePaths(getDirectoryPath(sourceFile.fileName), reference.fileName); + let referenceFileName = isRootedDiskPath(reference.fileName) ? reference.fileName : combinePaths(getDirectoryPath(sourceFile.fileName), reference.fileName); referenceFileName = getNormalizedAbsolutePath(referenceFileName, host.getCurrentDirectory()); return host.getSourceFile(referenceFileName); } @@ -802,8 +997,8 @@ module ts { } export function getFileReferenceFromReferencePath(comment: string, commentRange: CommentRange): ReferencePathMatchResult { - var simpleReferenceRegEx = /^\/\/\/\s*/gim; + let simpleReferenceRegEx = /^\/\/\/\s*/gim; if (simpleReferenceRegEx.exec(comment)) { if (isNoDefaultLibRegEx.exec(comment)) { return { @@ -811,10 +1006,10 @@ module ts { } } else { - var matchResult = fullTripleSlashReferencePathRegEx.exec(comment); + let matchResult = fullTripleSlashReferencePathRegEx.exec(comment); if (matchResult) { - var start = commentRange.pos; - var end = commentRange.end; + let start = commentRange.pos; + let end = commentRange.end; return { fileReference: { pos: start, @@ -871,9 +1066,9 @@ module ts { return (name).text; } if (name.kind === SyntaxKind.ComputedPropertyName) { - var nameExpression = (name).expression; + let nameExpression = (name).expression; if (isWellKnownSymbolSyntactically(nameExpression)) { - var rightHandSideName = (nameExpression).name.text; + let rightHandSideName = (nameExpression).name.text; return getPropertyNameForKnownSymbolName(rightHandSideName); } } @@ -901,6 +1096,7 @@ module ts { case SyntaxKind.ExportKeyword: case SyntaxKind.DeclareKeyword: case SyntaxKind.ConstKeyword: + case SyntaxKind.DefaultKeyword: return true; } return false; @@ -924,14 +1120,14 @@ module ts { } export function textSpanOverlapsWith(span: TextSpan, other: TextSpan) { - var overlapStart = Math.max(span.start, other.start); - var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + let overlapStart = Math.max(span.start, other.start); + let overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); return overlapStart < overlapEnd; } export function textSpanOverlap(span1: TextSpan, span2: TextSpan) { - var overlapStart = Math.max(span1.start, span2.start); - var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + let overlapStart = Math.max(span1.start, span2.start); + let overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); if (overlapStart < overlapEnd) { return createTextSpanFromBounds(overlapStart, overlapEnd); } @@ -943,7 +1139,7 @@ module ts { } export function textSpanIntersectsWith(span: TextSpan, start: number, length: number) { - var end = start + length; + let end = start + length; return start <= textSpanEnd(span) && end >= span.start; } @@ -952,8 +1148,8 @@ module ts { } export function textSpanIntersection(span1: TextSpan, span2: TextSpan) { - var intersectStart = Math.max(span1.start, span2.start); - var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + let intersectStart = Math.max(span1.start, span2.start); + let intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); if (intersectStart <= intersectEnd) { return createTextSpanFromBounds(intersectStart, intersectEnd); } @@ -974,7 +1170,7 @@ module ts { export function createTextSpanFromBounds(start: number, end: number) { return createTextSpan(start, end - start); } - + export function textChangeRangeNewSpan(range: TextChangeRange) { return createTextSpan(range.span.start, range.newLength); } @@ -991,7 +1187,7 @@ module ts { return { span, newLength }; } - export var unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + export let unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); /** * Called to merge all the changes that occurred across several versions of a script snapshot @@ -1012,14 +1208,14 @@ module ts { // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } // as it makes things much easier to reason about. - var change0 = changes[0]; + let change0 = changes[0]; - var oldStartN = change0.span.start; - var oldEndN = textSpanEnd(change0.span); - var newEndN = oldStartN + change0.newLength; + let oldStartN = change0.span.start; + let oldEndN = textSpanEnd(change0.span); + let newEndN = oldStartN + change0.newLength; - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; + for (let i = 1; i < changes.length; i++) { + let nextChange = changes[i]; // Consider the following case: // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting @@ -1101,29 +1297,45 @@ module ts { // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) // } - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; + let oldStart1 = oldStartN; + let oldEnd1 = oldEndN; + let newEnd1 = newEndN; - var oldStart2 = nextChange.span.start; - var oldEnd2 = textSpanEnd(nextChange.span); - var newEnd2 = oldStart2 + nextChange.newLength; + let oldStart2 = nextChange.span.start; + let oldEnd2 = textSpanEnd(nextChange.span); + let newEnd2 = oldStart2 + nextChange.newLength; oldStartN = Math.min(oldStart1, oldStart2); oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); } - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength: */newEndN - oldStartN); + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength:*/ newEndN - oldStartN); + } + + export function nodeStartsNewLexicalEnvironment(n: Node): boolean { + return isFunctionLike(n) || n.kind === SyntaxKind.ModuleDeclaration || n.kind === SyntaxKind.SourceFile; + } + + export function nodeIsSynthesized(node: Node): boolean { + return node.pos === -1; + } + + export function createSynthesizedNode(kind: SyntaxKind, startsOnNewLine?: boolean): Node { + let node = createNode(kind); + node.pos = -1; + node.end = -1; + node.startsOnNewLine = startsOnNewLine; + return node; } // @internal export function createDiagnosticCollection(): DiagnosticCollection { - var nonFileDiagnostics: Diagnostic[] = []; - var fileDiagnostics: Map = {}; + let nonFileDiagnostics: Diagnostic[] = []; + let fileDiagnostics: Map = {}; - var diagnosticsModified = false; - var modificationCount = 0; + let diagnosticsModified = false; + let modificationCount = 0; return { add, @@ -1137,7 +1349,7 @@ module ts { } function add(diagnostic: Diagnostic): void { - var diagnostics: Diagnostic[]; + let diagnostics: Diagnostic[]; if (diagnostic.file) { diagnostics = fileDiagnostics[diagnostic.file.fileName]; if (!diagnostics) { @@ -1165,14 +1377,14 @@ module ts { return fileDiagnostics[fileName] || []; } - var allDiagnostics: Diagnostic[] = []; + let allDiagnostics: Diagnostic[] = []; function pushDiagnostic(d: Diagnostic) { allDiagnostics.push(d); } forEach(nonFileDiagnostics, pushDiagnostic); - for (var key in fileDiagnostics) { + for (let key in fileDiagnostics) { if (hasProperty(fileDiagnostics, key)) { forEach(fileDiagnostics[key], pushDiagnostic); } @@ -1189,11 +1401,406 @@ module ts { diagnosticsModified = false; nonFileDiagnostics = sortAndDeduplicateDiagnostics(nonFileDiagnostics); - for (var key in fileDiagnostics) { + for (let key in fileDiagnostics) { if (hasProperty(fileDiagnostics, key)) { fileDiagnostics[key] = sortAndDeduplicateDiagnostics(fileDiagnostics[key]); } } } } -} \ No newline at end of file + + // This consists of the first 19 unprintable ASCII characters, canonical escapes, lineSeparator, + // paragraphSeparator, and nextLine. The latter three are just desirable to suppress new lines in + // the language service. These characters should be escaped when printing, and if any characters are added, + // the map below must be updated. Note that this regexp *does not* include the 'delete' character. + // There is no reason for this other than that JSON.stringify does not handle it either. + let escapedCharsRegExp = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; + let escapedCharsMap: Map = { + "\0": "\\0", + "\t": "\\t", + "\v": "\\v", + "\f": "\\f", + "\b": "\\b", + "\r": "\\r", + "\n": "\\n", + "\\": "\\\\", + "\"": "\\\"", + "\u2028": "\\u2028", // lineSeparator + "\u2029": "\\u2029", // paragraphSeparator + "\u0085": "\\u0085" // nextLine + }; + + /** + * Based heavily on the abstract 'Quote'/'QuoteJSONString' operation from ECMA-262 (24.3.2.2), + * but augmented for a few select characters (e.g. lineSeparator, paragraphSeparator, nextLine) + * Note that this doesn't actually wrap the input in double quotes. + */ + export function escapeString(s: string): string { + s = escapedCharsRegExp.test(s) ? s.replace(escapedCharsRegExp, getReplacement) : s; + + return s; + + function getReplacement(c: string) { + return escapedCharsMap[c] || get16BitUnicodeEscapeSequence(c.charCodeAt(0)); + } + } + + function get16BitUnicodeEscapeSequence(charCode: number): string { + let hexCharCode = charCode.toString(16).toUpperCase(); + let paddedHexCode = ("0000" + hexCharCode).slice(-4); + return "\\u" + paddedHexCode; + } + + let nonAsciiCharacters = /[^\u0000-\u007F]/g; + export function escapeNonAsciiCharacters(s: string): string { + // Replace non-ASCII characters with '\uNNNN' escapes if any exist. + // Otherwise just return the original string. + return nonAsciiCharacters.test(s) ? + s.replace(nonAsciiCharacters, c => get16BitUnicodeEscapeSequence(c.charCodeAt(0))) : + s; + } + + export interface EmitTextWriter { + write(s: string): void; + writeTextOfNode(sourceFile: SourceFile, node: Node): void; + writeLine(): void; + increaseIndent(): void; + decreaseIndent(): void; + getText(): string; + rawWrite(s: string): void; + writeLiteral(s: string): void; + getTextPos(): number; + getLine(): number; + getColumn(): number; + getIndent(): number; + } + + let indentStrings: string[] = ["", " "]; + export function getIndentString(level: number) { + if (indentStrings[level] === undefined) { + indentStrings[level] = getIndentString(level - 1) + indentStrings[1]; + } + return indentStrings[level]; + } + + export function getIndentSize() { + return indentStrings[1].length; + } + + export function createTextWriter(newLine: String): EmitTextWriter { + let output = ""; + let indent = 0; + let lineStart = true; + let lineCount = 0; + let linePos = 0; + + function write(s: string) { + if (s && s.length) { + if (lineStart) { + output += getIndentString(indent); + lineStart = false; + } + output += s; + } + } + + function rawWrite(s: string) { + if (s !== undefined) { + if (lineStart) { + lineStart = false; + } + output += s; + } + } + + function writeLiteral(s: string) { + if (s && s.length) { + write(s); + let lineStartsOfS = computeLineStarts(s); + if (lineStartsOfS.length > 1) { + lineCount = lineCount + lineStartsOfS.length - 1; + linePos = output.length - s.length + lineStartsOfS[lineStartsOfS.length - 1]; + } + } + } + + function writeLine() { + if (!lineStart) { + output += newLine; + lineCount++; + linePos = output.length; + lineStart = true; + } + } + + function writeTextOfNode(sourceFile: SourceFile, node: Node) { + write(getSourceTextOfNodeFromSourceFile(sourceFile, node)); + } + + return { + write, + rawWrite, + writeTextOfNode, + writeLiteral, + writeLine, + increaseIndent: () => indent++, + decreaseIndent: () => indent--, + getIndent: () => indent, + getTextPos: () => output.length, + getLine: () => lineCount + 1, + getColumn: () => lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1, + getText: () => output, + }; + } + + export function getOwnEmitOutputFilePath(sourceFile: SourceFile, host: EmitHost, extension: string) { + let compilerOptions = host.getCompilerOptions(); + let emitOutputFilePathWithoutExtension: string; + if (compilerOptions.outDir) { + emitOutputFilePathWithoutExtension = removeFileExtension(getSourceFilePathInNewDir(sourceFile, host, compilerOptions.outDir)); + } + else { + emitOutputFilePathWithoutExtension = removeFileExtension(sourceFile.fileName); + } + + return emitOutputFilePathWithoutExtension + extension; + } + + export function getSourceFilePathInNewDir(sourceFile: SourceFile, host: EmitHost, newDirPath: string) { + let sourceFilePath = getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); + sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); + return combinePaths(newDirPath, sourceFilePath); + } + + export function writeFile(host: EmitHost, diagnostics: Diagnostic[], fileName: string, data: string, writeByteOrderMark: boolean) { + host.writeFile(fileName, data, writeByteOrderMark, hostErrorMessage => { + diagnostics.push(createCompilerDiagnostic(Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + }); + } + + export function getLineOfLocalPosition(currentSourceFile: SourceFile, pos: number) { + return getLineAndCharacterOfPosition(currentSourceFile, pos).line; + } + + export function getFirstConstructorWithBody(node: ClassLikeDeclaration): ConstructorDeclaration { + return forEach(node.members, member => { + if (member.kind === SyntaxKind.Constructor && nodeIsPresent((member).body)) { + return member; + } + }); + } + + export function shouldEmitToOwnFile(sourceFile: SourceFile, compilerOptions: CompilerOptions): boolean { + if (!isDeclarationFile(sourceFile)) { + if ((isExternalModule(sourceFile) || !compilerOptions.out) && !fileExtensionIs(sourceFile.fileName, ".js")) { + return true; + } + return false; + } + return false; + } + + export function getAllAccessorDeclarations(declarations: NodeArray, accessor: AccessorDeclaration) { + let firstAccessor: AccessorDeclaration; + let secondAccessor: AccessorDeclaration; + let getAccessor: AccessorDeclaration; + let setAccessor: AccessorDeclaration; + if (hasDynamicName(accessor)) { + firstAccessor = accessor; + if (accessor.kind === SyntaxKind.GetAccessor) { + getAccessor = accessor; + } + else if (accessor.kind === SyntaxKind.SetAccessor) { + setAccessor = accessor; + } + else { + Debug.fail("Accessor has wrong kind"); + } + } + else { + forEach(declarations, (member: Declaration) => { + if ((member.kind === SyntaxKind.GetAccessor || member.kind === SyntaxKind.SetAccessor) + && (member.flags & NodeFlags.Static) === (accessor.flags & NodeFlags.Static)) { + let memberName = getPropertyNameForPropertyNameNode(member.name); + let accessorName = getPropertyNameForPropertyNameNode(accessor.name); + if (memberName === accessorName) { + if (!firstAccessor) { + firstAccessor = member; + } + else if (!secondAccessor) { + secondAccessor = member; + } + + if (member.kind === SyntaxKind.GetAccessor && !getAccessor) { + getAccessor = member; + } + + if (member.kind === SyntaxKind.SetAccessor && !setAccessor) { + setAccessor = member; + } + } + } + }); + } + return { + firstAccessor, + secondAccessor, + getAccessor, + setAccessor + }; + } + + export function emitNewLineBeforeLeadingComments(currentSourceFile: SourceFile, writer: EmitTextWriter, node: TextRange, leadingComments: CommentRange[]) { + // If the leading comments start on different line than the start of node, write new line + if (leadingComments && leadingComments.length && node.pos !== leadingComments[0].pos && + getLineOfLocalPosition(currentSourceFile, node.pos) !== getLineOfLocalPosition(currentSourceFile, leadingComments[0].pos)) { + writer.writeLine(); + } + } + + export function emitComments(currentSourceFile: SourceFile, writer: EmitTextWriter, comments: CommentRange[], trailingSeparator: boolean, newLine: string, + writeComment: (currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string) => void) { + let emitLeadingSpace = !trailingSeparator; + forEach(comments, comment => { + if (emitLeadingSpace) { + writer.write(" "); + emitLeadingSpace = false; + } + writeComment(currentSourceFile, writer, comment, newLine); + if (comment.hasTrailingNewLine) { + writer.writeLine(); + } + else if (trailingSeparator) { + writer.write(" "); + } + else { + // Emit leading space to separate comment during next comment emit + emitLeadingSpace = true; + } + }); + } + + export function writeCommentRange(currentSourceFile: SourceFile, writer: EmitTextWriter, comment: CommentRange, newLine: string) { + if (currentSourceFile.text.charCodeAt(comment.pos + 1) === CharacterCodes.asterisk) { + let firstCommentLineAndCharacter = getLineAndCharacterOfPosition(currentSourceFile, comment.pos); + let lineCount = getLineStarts(currentSourceFile).length; + let firstCommentLineIndent: number; + for (let pos = comment.pos, currentLine = firstCommentLineAndCharacter.line; pos < comment.end; currentLine++) { + let nextLineStart = (currentLine + 1) === lineCount + ? currentSourceFile.text.length + 1 + : getStartPositionOfLine(currentLine + 1, currentSourceFile); + + if (pos !== comment.pos) { + // If we are not emitting first line, we need to write the spaces to adjust the alignment + if (firstCommentLineIndent === undefined) { + firstCommentLineIndent = calculateIndent(getStartPositionOfLine(firstCommentLineAndCharacter.line, currentSourceFile), comment.pos); + } + + // These are number of spaces writer is going to write at current indent + let currentWriterIndentSpacing = writer.getIndent() * getIndentSize(); + + // Number of spaces we want to be writing + // eg: Assume writer indent + // module m { + // /* starts at character 9 this is line 1 + // * starts at character pos 4 line --1 = 8 - 8 + 3 + // More left indented comment */ --2 = 8 - 8 + 2 + // class c { } + // } + // module m { + // /* this is line 1 -- Assume current writer indent 8 + // * line --3 = 8 - 4 + 5 + // More right indented comment */ --4 = 8 - 4 + 11 + // class c { } + // } + let spacesToEmit = currentWriterIndentSpacing - firstCommentLineIndent + calculateIndent(pos, nextLineStart); + if (spacesToEmit > 0) { + let numberOfSingleSpacesToEmit = spacesToEmit % getIndentSize(); + let indentSizeSpaceString = getIndentString((spacesToEmit - numberOfSingleSpacesToEmit) / getIndentSize()); + + // Write indent size string ( in eg 1: = "", 2: "" , 3: string with 8 spaces 4: string with 12 spaces + writer.rawWrite(indentSizeSpaceString); + + // Emit the single spaces (in eg: 1: 3 spaces, 2: 2 spaces, 3: 1 space, 4: 3 spaces) + while (numberOfSingleSpacesToEmit) { + writer.rawWrite(" "); + numberOfSingleSpacesToEmit--; + } + } + else { + // No spaces to emit write empty string + writer.rawWrite(""); + } + } + + // Write the comment line text + writeTrimmedCurrentLine(pos, nextLineStart); + + pos = nextLineStart; + } + } + else { + // Single line comment of style //.... + writer.write(currentSourceFile.text.substring(comment.pos, comment.end)); + } + + function writeTrimmedCurrentLine(pos: number, nextLineStart: number) { + let end = Math.min(comment.end, nextLineStart - 1); + let currentLineText = currentSourceFile.text.substring(pos, end).replace(/^\s+|\s+$/g, ''); + if (currentLineText) { + // trimmed forward and ending spaces text + writer.write(currentLineText); + if (end !== comment.end) { + writer.writeLine(); + } + } + else { + // Empty string - make sure we write empty line + writer.writeLiteral(newLine); + } + } + + function calculateIndent(pos: number, end: number) { + let currentLineIndent = 0; + for (; pos < end && isWhiteSpace(currentSourceFile.text.charCodeAt(pos)); pos++) { + if (currentSourceFile.text.charCodeAt(pos) === CharacterCodes.tab) { + // Tabs = TabSize = indent size and go to next tabStop + currentLineIndent += getIndentSize() - (currentLineIndent % getIndentSize()); + } + else { + // Single space + currentLineIndent++; + } + } + + return currentLineIndent; + } + } + + // Returns false if this heritage clause element's expression contains something unsupported + // (i.e. not a name or dotted name). + export function isSupportedHeritageClauseElement(node: HeritageClauseElement): boolean { + return isSupportedHeritageClauseElementExpression(node.expression); + } + + function isSupportedHeritageClauseElementExpression(node: Expression): boolean { + if (node.kind === SyntaxKind.Identifier) { + return true; + } + else if (node.kind === SyntaxKind.PropertyAccessExpression) { + return isSupportedHeritageClauseElementExpression((node).expression); + } + else { + return false; + } + } + + export function isRightSideOfQualifiedNameOrPropertyAccess(node: Node) { + return (node.parent.kind === SyntaxKind.QualifiedName && (node.parent).right === node) || + (node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent).name === node); + } + + export function getLocalSymbolForExportDefault(symbol: Symbol) { + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) ? symbol.valueDeclaration.localSymbol : undefined; + } +} diff --git a/src/harness/compilerRunner.ts b/src/harness/compilerRunner.ts index e4979f7a3c4..d4dd8e31258 100644 --- a/src/harness/compilerRunner.ts +++ b/src/harness/compilerRunner.ts @@ -152,7 +152,6 @@ class CompilerBaselineRunner extends RunnerBase { if (this.errors) { Harness.Baseline.runBaseline('Correct errors for ' + fileName, justName.replace(/\.ts$/, '.errors.txt'), (): string => { if (result.errors.length === 0) return null; - return getErrorBaseline(toBeCompiled, otherFiles, result); }); } diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 59fc2c23f5c..7269b2db75d 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -14,6 +14,7 @@ // /// +/// /// /// /// @@ -115,7 +116,7 @@ module FourSlash { // Name of testcase metadata including ts.CompilerOptions properties that will be used by globalOptions // To add additional option, add property into the testOptMetadataNames, refer the property in either globalMetadataNames or fileMetadataNames // Add cases into convertGlobalOptionsToCompilationsSettings function for the compiler to acknowledge such option from meta data - var testOptMetadataNames = { + var metadataOptionNames = { baselineFile: 'BaselineFile', declaration: 'declaration', emitThisFile: 'emitThisFile', // This flag is used for testing getEmitOutput feature. It allows test-cases to indicate what file to be output in multiple files project @@ -126,14 +127,15 @@ module FourSlash { outDir: 'outDir', sourceMap: 'sourceMap', sourceRoot: 'sourceRoot', + allowNonTsExtensions: 'allowNonTsExtensions', resolveReference: 'ResolveReference', // This flag is used to specify entry file for resolve file references. The flag is only allow once per test file }; // List of allowed metadata names - var fileMetadataNames = [testOptMetadataNames.fileName, testOptMetadataNames.emitThisFile, testOptMetadataNames.resolveReference]; - var globalMetadataNames = [testOptMetadataNames.baselineFile, testOptMetadataNames.declaration, - testOptMetadataNames.mapRoot, testOptMetadataNames.module, testOptMetadataNames.out, - testOptMetadataNames.outDir, testOptMetadataNames.sourceMap, testOptMetadataNames.sourceRoot] + var fileMetadataNames = [metadataOptionNames.fileName, metadataOptionNames.emitThisFile, metadataOptionNames.resolveReference]; + var globalMetadataNames = [metadataOptionNames.allowNonTsExtensions, metadataOptionNames.baselineFile, metadataOptionNames.declaration, + metadataOptionNames.mapRoot, metadataOptionNames.module, metadataOptionNames.out, + metadataOptionNames.outDir, metadataOptionNames.sourceMap, metadataOptionNames.sourceRoot] function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions { var settings: ts.CompilerOptions = { target: ts.ScriptTarget.ES5 }; @@ -141,13 +143,16 @@ module FourSlash { for (var prop in globalOptions) { if (globalOptions.hasOwnProperty(prop)) { switch (prop) { - case testOptMetadataNames.declaration: + case metadataOptionNames.allowNonTsExtensions: + settings.allowNonTsExtensions = true; + break; + case metadataOptionNames.declaration: settings.declaration = true; break; - case testOptMetadataNames.mapRoot: + case metadataOptionNames.mapRoot: settings.mapRoot = globalOptions[prop]; break; - case testOptMetadataNames.module: + case metadataOptionNames.module: // create appropriate external module target for CompilationSettings switch (globalOptions[prop]) { case "AMD": @@ -162,16 +167,16 @@ module FourSlash { break; } break; - case testOptMetadataNames.out: + case metadataOptionNames.out: settings.out = globalOptions[prop]; break; - case testOptMetadataNames.outDir: + case metadataOptionNames.outDir: settings.outDir = globalOptions[prop]; break; - case testOptMetadataNames.sourceMap: + case metadataOptionNames.sourceMap: settings.sourceMap = true; break; - case testOptMetadataNames.sourceRoot: + case metadataOptionNames.sourceRoot: settings.sourceRoot = globalOptions[prop]; break; } @@ -303,7 +308,7 @@ module FourSlash { ts.forEach(testData.files, file => { // Create map between fileName and its content for easily looking up when resolveReference flag is specified this.inputFiles[file.fileName] = file.content; - if (!startResolveFileRef && file.fileOptions[testOptMetadataNames.resolveReference]) { + if (!startResolveFileRef && file.fileOptions[metadataOptionNames.resolveReference]) { startResolveFileRef = file; } else if (startResolveFileRef) { // If entry point for resolving file references is already specified, report duplication error @@ -620,7 +625,7 @@ module FourSlash { this.scenarioActions.push(''); var members = this.getMemberListAtCaret(); - if (members.entries.filter(e => e.name === symbol).length !== 0) { + if (members && members.entries.filter(e => e.name === symbol).length !== 0) { this.raiseError('Member list did contain ' + symbol); } } @@ -691,7 +696,12 @@ module FourSlash { public verifyCompletionListContains(symbol: string, text?: string, documentation?: string, kind?: string) { var completions = this.getCompletionListAtCaret(); - this.assertItemInCompletionList(completions.entries, symbol, text, documentation, kind); + if (completions) { + this.assertItemInCompletionList(completions.entries, symbol, text, documentation, kind); + } + else { + this.raiseError(`No completions at position '${ this.currentCaretPosition }' when looking for '${ symbol }'.`); + } } public verifyCompletionListDoesNotContain(symbol: string) { @@ -699,7 +709,7 @@ module FourSlash { this.scenarioActions.push(''); var completions = this.getCompletionListAtCaret(); - if (completions && completions.entries && completions.entries.filter(e => e.name === symbol).length !== 0) { + if (completions && completions.entries.filter(e => e.name === symbol).length !== 0) { this.raiseError('Completion list did contain ' + symbol); } } @@ -788,6 +798,13 @@ module FourSlash { return "\nActual " + name + ":\n\t" + actualValue + "\nExpected value:\n\t" + expectedValue; } + public getSemanticDiagnostics(expected: string) { + var diagnostics = this.languageService.getSemanticDiagnostics(this.activeFile.fileName); + var realized = ts.realizeDiagnostics(diagnostics, "\r\n"); + var actual = JSON.stringify(realized, null, " "); + assert.equal(actual, expected); + } + public verifyQuickInfoString(negative: boolean, expectedText?: string, expectedDocumentation?: string) { [expectedText, expectedDocumentation].forEach(str => { if (str) { @@ -1126,7 +1143,7 @@ module FourSlash { Harness.Baseline.runBaseline( "Breakpoint Locations for " + this.activeFile.fileName, - this.testData.globalOptions[testOptMetadataNames.baselineFile], + this.testData.globalOptions[metadataOptionNames.baselineFile], () => { return this.baselineCurrentFileLocations(pos => this.getBreakpointStatementLocation(pos)); }, @@ -1141,7 +1158,7 @@ module FourSlash { var allFourSlashFiles = this.testData.files; for (var idx = 0; idx < allFourSlashFiles.length; ++idx) { var file = allFourSlashFiles[idx]; - if (file.fileOptions[testOptMetadataNames.emitThisFile]) { + if (file.fileOptions[metadataOptionNames.emitThisFile]) { // Find a file with the flag emitThisFile turned on emitFiles.push(file); } @@ -1154,7 +1171,7 @@ module FourSlash { Harness.Baseline.runBaseline( "Generate getEmitOutput baseline : " + emitFiles.join(" "), - this.testData.globalOptions[testOptMetadataNames.baselineFile], + this.testData.globalOptions[metadataOptionNames.baselineFile], () => { var resultString = ""; // Loop through all the emittedFiles and emit them one by one @@ -1480,6 +1497,16 @@ module FourSlash { return runningOffset; } + public copyFormatOptions(): ts.FormatCodeOptions { + return ts.clone(this.formatCodeOptions); + } + + public setFormatOptions(formatCodeOptions: ts.FormatCodeOptions): ts.FormatCodeOptions { + var oldFormatCodeOptions = this.formatCodeOptions; + this.formatCodeOptions = formatCodeOptions; + return oldFormatCodeOptions; + } + public formatDocument() { this.scenarioActions.push(''); @@ -1611,8 +1638,9 @@ module FourSlash { this.taoInvalidReason = 'verifyIndentationAtCurrentPosition NYI'; var actual = this.getIndentation(this.activeFile.fileName, this.currentCaretPosition); - if (actual != numberOfSpaces) { - this.raiseError('verifyIndentationAtCurrentPosition failed - expected: ' + numberOfSpaces + ', actual: ' + actual); + var lineCol = this.getLineColStringAtPosition(this.currentCaretPosition); + if (actual !== numberOfSpaces) { + this.raiseError('verifyIndentationAtCurrentPosition failed at ' + lineCol + ' - expected: ' + numberOfSpaces + ', actual: ' + actual); } } @@ -1620,8 +1648,9 @@ module FourSlash { this.taoInvalidReason = 'verifyIndentationAtPosition NYI'; var actual = this.getIndentation(fileName, position); + var lineCol = this.getLineColStringAtPosition(position); if (actual !== numberOfSpaces) { - this.raiseError('verifyIndentationAtPosition failed - expected: ' + numberOfSpaces + ', actual: ' + actual); + this.raiseError('verifyIndentationAtPosition failed at ' + lineCol + ' - expected: ' + numberOfSpaces + ', actual: ' + actual); } } @@ -1687,7 +1716,7 @@ module FourSlash { Harness.Baseline.runBaseline( "Name OrDottedNameSpans for " + this.activeFile.fileName, - this.testData.globalOptions[testOptMetadataNames.baselineFile], + this.testData.globalOptions[metadataOptionNames.baselineFile], () => { return this.baselineCurrentFileLocations(pos => this.getNameOrDottedNameSpan(pos)); @@ -2263,7 +2292,7 @@ module FourSlash { if (globalMetadataNamesIndex === -1) { if (fileMetadataNamesIndex === -1) { throw new Error('Unrecognized metadata name "' + match[1] + '". Available global metadata names are: ' + globalMetadataNames.join(', ') + '; file metadata names are: ' + fileMetadataNames.join(', ')); - } else if (fileMetadataNamesIndex === fileMetadataNames.indexOf(testOptMetadataNames.fileName)) { + } else if (fileMetadataNamesIndex === fileMetadataNames.indexOf(metadataOptionNames.fileName)) { // Found an @FileName directive, if this is not the first then create a new subfile if (currentFileContent) { var file = parseFileContent(currentFileContent, currentFileName, markerPositions, markers, ranges); diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 26c06c7950c..b9a08d6e982 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -835,7 +835,7 @@ module Harness { // Register input files function register(file: { unitName: string; content: string; }) { if (file.content !== undefined) { - var fileName = ts.normalizeSlashes(file.unitName); + var fileName = ts.normalizePath(file.unitName); filemap[getCanonicalFileName(fileName)] = createSourceFileAndAssertInvariants(fileName, file.content, scriptTarget); } }; @@ -844,6 +844,7 @@ module Harness { return { getCurrentDirectory, getSourceFile: (fn, languageVersion) => { + fn = ts.normalizePath(fn); if (Object.prototype.hasOwnProperty.call(filemap, getCanonicalFileName(fn))) { return filemap[getCanonicalFileName(fn)]; } @@ -1035,17 +1036,7 @@ module Harness { useCaseSensitiveFileNames = setting.value === 'true'; break; - case 'mapsourcefiles': - case 'maproot': - case 'generatedeclarationfiles': - case 'gatherDiagnostics': - case 'codepage': - case 'createFileLog': case 'filename': - case 'removecomments': - case 'watch': - case 'allowautomaticsemicoloninsertion': - case 'locale': // Not supported yet break; @@ -1061,6 +1052,10 @@ module Harness { options.preserveConstEnums = setting.value === 'true'; break; + case 'separatecompilation': + options.separateCompilation = setting.value === 'true'; + break; + case 'suppressimplicitanyindexerrors': options.suppressImplicitAnyIndexErrors = setting.value === 'true'; break; @@ -1074,16 +1069,6 @@ module Harness { } }); - var filemap: { [name: string]: ts.SourceFile; } = {}; - var register = (file: { unitName: string; content: string; }) => { - if (file.content !== undefined) { - var fileName = ts.normalizeSlashes(file.unitName); - filemap[getCanonicalFileName(fileName)] = createSourceFileAndAssertInvariants(fileName, file.content, options.target, assertInvariants); - } - }; - inputFiles.forEach(register); - otherFiles.forEach(register); - var fileOutputs: GeneratedFile[] = []; var programFiles = inputFiles.map(file => file.unitName); @@ -1470,7 +1455,12 @@ module Harness { var optionRegex = /^[\/]{2}\s*@(\w+)\s*:\s*(\S*)/gm; // multiple matches on multiple lines // List of allowed metadata names - var fileMetadataNames = ["filename", "comments", "declaration", "module", "nolib", "sourcemap", "target", "out", "outdir", "noemitonerror", "noimplicitany", "noresolve", "newline", "newlines", "emitbom", "errortruncation", "usecasesensitivefilenames", "preserveconstenums", "includebuiltfile", "suppressimplicitanyindexerrors", "stripinternal"]; + var fileMetadataNames = ["filename", "comments", "declaration", "module", + "nolib", "sourcemap", "target", "out", "outdir", "noemitonerror", + "noimplicitany", "noresolve", "newline", "newlines", "emitbom", + "errortruncation", "usecasesensitivefilenames", "preserveconstenums", + "includebuiltfile", "suppressimplicitanyindexerrors", "stripinternal", + "separatecompilation"]; function extractCompilerSettings(content: string): CompilerSetting[] { @@ -1708,6 +1698,14 @@ module Harness { return (Path.getFileName(filePath) === 'lib.d.ts') || (Path.getFileName(filePath) === 'lib.core.d.ts'); } + export function getDefaultLibraryFile(): { unitName: string, content: string } { + var libFile = Harness.userSpecifiedroot + Harness.libFolder + "/" + "lib.d.ts"; + return { + unitName: libFile, + content: IO.readFile(libFile) + } + } + if (Error) (Error).stackTraceLimit = 1; } diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index a9c28fb70bd..299ba52bdeb 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -1,4 +1,4 @@ -/// +/// /// /// /// @@ -330,6 +330,9 @@ module Harness.LanguageService { getReferencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[] { return unwrapJSONCallResult(this.shim.getReferencesAtPosition(fileName, position)); } + findReferences(fileName: string, position: number): ts.ReferencedSymbol[] { + return unwrapJSONCallResult(this.shim.findReferences(fileName, position)); + } getOccurrencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[] { return unwrapJSONCallResult(this.shim.getOccurrencesAtPosition(fileName, position)); } @@ -469,6 +472,7 @@ module Harness.LanguageService { this.writeMessage(message); } + readFile(fileName: string): string { if (fileName.indexOf(Harness.Compiler.defaultLibFileName) >= 0) { fileName = Harness.Compiler.defaultLibFileName; @@ -526,6 +530,15 @@ module Harness.LanguageService { msg(message: string) { return this.host.log(message); } + + loggingEnabled() { + return true; + } + + isVerbose() { + return false; + } + endGroup(): void { } diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index d9418c0e6ae..8ba38043e78 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -15,6 +15,7 @@ interface IOLog { arguments: string[]; executingPath: string; currentDirectory: string; + useCustomLibraryFile?: boolean; filesRead: { path: string; codepage: number; diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index c1c3251cf02..49a15112e9f 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -32,6 +32,7 @@ module RWC { }; var baseName = /(.*)\/(.*).json/.exec(ts.normalizeSlashes(jsonPath))[2]; var currentDirectory: string; + var useCustomLibraryFile: boolean; after(() => { // Mocha holds onto the closure environment of the describe callback even after the test is done. @@ -43,6 +44,10 @@ module RWC { baselineOpts = undefined; baseName = undefined; currentDirectory = undefined; + // useCustomLibraryFile is a flag specified in the json object to indicate whether to use built/local/lib.d.ts + // or to use lib.d.ts inside the json object. If the flag is true, use the lib.d.ts inside json file + // otherwise use the lib.d.ts from built/local + useCustomLibraryFile = undefined; }); it('can compile', () => { @@ -51,34 +56,52 @@ module RWC { var ioLog: IOLog = JSON.parse(Harness.IO.readFile(jsonPath)); currentDirectory = ioLog.currentDirectory; + useCustomLibraryFile = ioLog.useCustomLibraryFile; runWithIOLog(ioLog, () => { opts = ts.parseCommandLine(ioLog.arguments); assert.equal(opts.errors.length, 0); + + // To provide test coverage of output javascript file, + // we will set noEmitOnError flag to be false. + opts.options.noEmitOnError = false; }); runWithIOLog(ioLog, () => { harnessCompiler.reset(); + // Load the files ts.forEach(opts.fileNames, fileName => { inputFiles.push(getHarnessCompilerInputUnit(fileName)); }); - if (!opts.options.noLib) { - // Find the lib.d.ts file in the input file and add it to the input files list - var libFile = ts.forEach(ioLog.filesRead, fileRead=> Harness.isLibraryFile(fileRead.path) ? fileRead.path : undefined); - if (libFile) { - inputFiles.push(getHarnessCompilerInputUnit(libFile)); - } - } - - ts.forEach(ioLog.filesRead, fileRead => { + // Add files to compilation + for(let fileRead of ioLog.filesRead) { + // Check if the file is already added into the set of input files. var resolvedPath = ts.normalizeSlashes(ts.sys.resolvePath(fileRead.path)); - var inInputList = ts.forEach(inputFiles, inputFile=> inputFile.unitName === resolvedPath); - if (!inInputList) { - // Add the file to other files + var inInputList = ts.forEach(inputFiles, inputFile => inputFile.unitName === resolvedPath); + + if (!Harness.isLibraryFile(fileRead.path)) { + if (inInputList) { + continue; + } otherFiles.push(getHarnessCompilerInputUnit(fileRead.path)); } - }); + else if (!opts.options.noLib && Harness.isLibraryFile(fileRead.path)){ + if (!inInputList) { + // If useCustomLibraryFile is true, we will use lib.d.ts from json object + // otherwise use the lib.d.ts from built/local + // Majority of RWC code will be using built/local/lib.d.ts instead of + // lib.d.ts inside json file. However, some RWC cases will still use + // their own version of lib.d.ts because they have customized lib.d.ts + if (useCustomLibraryFile) { + inputFiles.push(getHarnessCompilerInputUnit(fileRead.path)); + } + else { + inputFiles.push(Harness.getDefaultLibraryFile()); + } + } + } + } // do not use lib since we already read it in above opts.options.noLib = true; @@ -115,9 +138,10 @@ module RWC { it('has the expected declaration file content', () => { Harness.Baseline.runBaseline('has the expected declaration file content', baseName + '.d.ts', () => { - if (compilerResult.errors.length || !compilerResult.declFilesCode.length) { + if (!compilerResult.declFilesCode.length) { return null; } + return Harness.Compiler.collateOutputs(compilerResult.declFilesCode); }, false, baselineOpts); }); diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 54cdc27e3b3..a83c04e6e86 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -38,7 +38,6 @@ class TypeWriterWalker { case ts.SyntaxKind.SuperKeyword: case ts.SyntaxKind.ArrayLiteralExpression: case ts.SyntaxKind.ObjectLiteralExpression: - case ts.SyntaxKind.PropertyAccessExpression: case ts.SyntaxKind.ElementAccessExpression: case ts.SyntaxKind.CallExpression: case ts.SyntaxKind.NewExpression: @@ -56,6 +55,14 @@ class TypeWriterWalker { this.log(node, this.getTypeOfNode(node)); break; + case ts.SyntaxKind.PropertyAccessExpression: + for (var current = node; current.kind === ts.SyntaxKind.PropertyAccessExpression; current = current.parent) { + } + if (current.kind !== ts.SyntaxKind.HeritageClauseElement) { + this.log(node, this.getTypeOfNode(node)); + } + break; + // Should not change expression status (maybe expressions) // TODO: Again, ideally should log number and string literals too, // but to be consistent with the old typeWriter, just log identifiers diff --git a/src/lib/core.d.ts b/src/lib/core.d.ts index cb5324fbd3d..2096fa839df 100644 --- a/src/lib/core.d.ts +++ b/src/lib/core.d.ts @@ -164,19 +164,19 @@ interface ObjectConstructor { * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - seal(o: any): any; + seal(o: T): T; /** * Prevents the modification of existing property attributes and values, and prevents the addition of new properties. * @param o Object on which to lock the attributes. */ - freeze(o: any): any; + freeze(o: T): T; /** * Prevents the addition of new properties to an object. * @param o Object to make non-extensible. */ - preventExtensions(o: any): any; + preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. @@ -410,6 +410,9 @@ interface String { */ substr(from: number, length?: number): string; + /** Returns the primitive value of the specified object. */ + valueOf(): string; + [index: number]: string; } @@ -462,6 +465,9 @@ interface Number { * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive. */ toPrecision(precision?: number): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): number; } interface NumberConstructor { @@ -1149,3 +1155,17 @@ interface ArrayConstructor { } declare var Array: ArrayConstructor; + +interface TypedPropertyDescriptor { + enumerable?: boolean; + configurable?: boolean; + writable?: boolean; + value?: T; + get?: () => T; + set?: (value: T) => void; +} + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void; diff --git a/src/lib/scriptHost.d.ts b/src/lib/scriptHost.d.ts index 2639739e5d6..decf813bc2d 100644 --- a/src/lib/scriptHost.d.ts +++ b/src/lib/scriptHost.d.ts @@ -4,7 +4,11 @@ /// Windows Script Host APIS ///////////////////////////// -declare var ActiveXObject: { new (s: string): any; }; + +interface ActiveXObject { + new (s: string): any; +} +declare var ActiveXObject: ActiveXObject; interface ITextWriter { Write(s: string): void; @@ -12,11 +16,157 @@ interface ITextWriter { Close(): void; } -declare var WScript: { - Echo(s: any): void; - StdErr: ITextWriter; - StdOut: ITextWriter; - Arguments: { length: number; Item(n: number): string; }; - ScriptFullName: string; - Quit(exitCode?: number): number; +interface TextStreamBase { + /** + * The column number of the current character position in an input stream. + */ + Column: number; + /** + * The current line number in an input stream. + */ + Line: number; + /** + * Closes a text stream. + * It is not necessary to close standard streams; they close automatically when the process ends. If you close a standard stream, be aware that any other pointers to that standard stream become invalid. + */ + Close(): void; } + +interface TextStreamWriter extends TextStreamBase { + /** + * Sends a string to an output stream. + */ + Write(s: string): void; + /** + * Sends a specified number of blank lines (newline characters) to an output stream. + */ + WriteBlankLines(intLines: number): void; + /** + * Sends a string followed by a newline character to an output stream. + */ + WriteLine(s: string): void; +} + +interface TextStreamReader extends TextStreamBase { + /** + * Returns a specified number of characters from an input stream, beginning at the current pointer position. + * Does not return until the ENTER key is pressed. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + Read(characters: number): string; + /** + * Returns all characters from an input stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadAll(): string; + /** + * Returns an entire line from an input stream. + * Although this method extracts the newline character, it does not add it to the returned string. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + */ + ReadLine(): string; + /** + * Skips a specified number of characters when reading from an input text stream. + * Can only be used on a stream in reading mode; causes an error in writing or appending mode. + * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) + */ + Skip(characters: number): void; + /** + * Skips the next line when reading from an input text stream. + * Can only be used on a stream in reading mode, not writing or appending mode. + */ + SkipLine(): void; + /** + * Indicates whether the stream pointer position is at the end of a line. + */ + AtEndOfLine: boolean; + /** + * Indicates whether the stream pointer position is at the end of a stream. + */ + AtEndOfStream: boolean; +} + +declare var WScript: { + /** + * Outputs text to either a message box (under WScript.exe) or the command console window followed by a newline (under CScript.ext). + */ + Echo(s: any): void; + /** + * Exposes the write-only error output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdErr: TextStreamWriter; + /** + * Exposes the write-only output stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdOut: TextStreamWriter; + Arguments: { length: number; Item(n: number): string; }; + /** + * The full path of the currently running script. + */ + ScriptFullName: string; + /** + * Forces the script to stop immediately, with an optional exit code. + */ + Quit(exitCode?: number): number; + /** + * The Windows Script Host build version number. + */ + BuildVersion: number; + /** + * Fully qualified path of the host executable. + */ + FullName: string; + /** + * Gets/sets the script mode - interactive(true) or batch(false). + */ + Interactive: boolean; + /** + * The name of the host executable (WScript.exe or CScript.exe). + */ + Name: string; + /** + * Path of the directory containing the host executable. + */ + Path: string; + /** + * The filename of the currently running script. + */ + ScriptName: string; + /** + * Exposes the read-only input stream for the current script. + * Can be accessed only while using CScript.exe. + */ + StdIn: TextStreamReader; + /** + * Windows Script Host version + */ + Version: string; + /** + * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. + */ + ConnectObject(objEventSource: any, strPrefix: string): void; + /** + * Creates a COM object. + * @param strProgiID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + CreateObject(strProgID: string, strPrefix?: string): any; + /** + * Disconnects a COM object from its event sources. + */ + DisconnectObject(obj: any): void; + /** + * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. + * @param strPathname Fully qualified path to the file containing the object persisted to disk. For objects in memory, pass a zero-length string. + * @param strProgID + * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. + */ + GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; + /** + * Suspends script execution for a specified length of time, then continues execution. + * @param intTime Interval (in milliseconds) to suspend script execution. + */ + Sleep(intTime: number): void; +}; diff --git a/src/server/client.ts b/src/server/client.ts index c8e7f2fdcb1..d395d2a832c 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -46,21 +46,21 @@ module ts.server { return lineMap; } - private lineColToPosition(fileName: string, lineCol: protocol.Location): number { - return ts.computePositionOfLineAndCharacter(this.getLineMap(fileName), lineCol.line - 1, lineCol.col - 1); + private lineOffsetToPosition(fileName: string, lineOffset: protocol.Location): number { + return ts.computePositionOfLineAndCharacter(this.getLineMap(fileName), lineOffset.line - 1, lineOffset.offset - 1); } - private positionToOneBasedLineCol(fileName: string, position: number): protocol.Location { - var lineCol = ts.computeLineAndCharacterOfPosition(this.getLineMap(fileName), position); + private positionToOneBasedLineOffset(fileName: string, position: number): protocol.Location { + var lineOffset = ts.computeLineAndCharacterOfPosition(this.getLineMap(fileName), position); return { - line: lineCol.line + 1, - col: lineCol.character + 1 + line: lineOffset.line + 1, + offset: lineOffset.character + 1 }; } private convertCodeEditsToTextChange(fileName: string, codeEdit: protocol.CodeEdit): ts.TextChange { - var start = this.lineColToPosition(fileName, codeEdit.start); - var end = this.lineColToPosition(fileName, codeEdit.end); + var start = this.lineOffsetToPosition(fileName, codeEdit.start); + var end = this.lineOffsetToPosition(fileName, codeEdit.end); return { span: ts.createTextSpanFromBounds(start, end), @@ -68,12 +68,12 @@ module ts.server { }; } - private processRequest(command: string, arguments?: any): T { + private processRequest(command: string, args?: any): T { var request: protocol.Request = { seq: this.sequence++, type: "request", - command: command, - arguments: arguments + arguments: args, + command }; this.writeMessage(JSON.stringify(request)); @@ -134,15 +134,15 @@ module ts.server { // clear the line map after an edit this.lineMaps[fileName] = undefined; - var lineCol = this.positionToOneBasedLineCol(fileName, start); - var endLineCol = this.positionToOneBasedLineCol(fileName, end); + var lineOffset = this.positionToOneBasedLineOffset(fileName, start); + var endLineOffset = this.positionToOneBasedLineOffset(fileName, end); var args: protocol.ChangeRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, - endLine: endLineCol.line, - endCol: endLineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, + endLine: endLineOffset.line, + endOffset: endLineOffset.offset, insertString: newText }; @@ -150,18 +150,18 @@ module ts.server { } getQuickInfoAtPosition(fileName: string, position: number): QuickInfo { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FileLocationRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col + line: lineOffset.line, + offset: lineOffset.offset }; var request = this.processRequest(CommandNames.Quickinfo, args); var response = this.processResponse(request); - var start = this.lineColToPosition(fileName, response.body.start); - var end = this.lineColToPosition(fileName, response.body.end); + var start = this.lineOffsetToPosition(fileName, response.body.start); + var end = this.lineOffsetToPosition(fileName, response.body.end); return { kind: response.body.kind, @@ -173,11 +173,11 @@ module ts.server { } getCompletionsAtPosition(fileName: string, position: number): CompletionInfo { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.CompletionsRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, prefix: undefined }; @@ -194,11 +194,11 @@ module ts.server { } getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.CompletionDetailsRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, entryNames: [entryName] }; @@ -219,8 +219,8 @@ module ts.server { return response.body.map(entry => { var fileName = entry.file; - var start = this.lineColToPosition(fileName, entry.start); - var end = this.lineColToPosition(fileName, entry.end); + var start = this.lineOffsetToPosition(fileName, entry.start); + var end = this.lineOffsetToPosition(fileName, entry.end); return { name: entry.name, @@ -237,14 +237,14 @@ module ts.server { } getFormattingEditsForRange(fileName: string, start: number, end: number, options: ts.FormatCodeOptions): ts.TextChange[] { - var startLineCol = this.positionToOneBasedLineCol(fileName, start); - var endLineCol = this.positionToOneBasedLineCol(fileName, end); + var startLineOffset = this.positionToOneBasedLineOffset(fileName, start); + var endLineOffset = this.positionToOneBasedLineOffset(fileName, end); var args: protocol.FormatRequestArgs = { file: fileName, - line: startLineCol.line, - col: startLineCol.col, - endLine: endLineCol.line, - endCol: endLineCol.col, + line: startLineOffset.line, + offset: startLineOffset.offset, + endLine: endLineOffset.line, + endOffset: endLineOffset.offset, }; // TODO: handle FormatCodeOptions @@ -259,11 +259,11 @@ module ts.server { } getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions): ts.TextChange[] { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FormatOnKeyRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, key: key }; @@ -275,11 +275,11 @@ module ts.server { } getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[] { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FileLocationRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, }; var request = this.processRequest(CommandNames.Definition, args); @@ -287,8 +287,8 @@ module ts.server { return response.body.map(entry => { var fileName = entry.file; - var start = this.lineColToPosition(fileName, entry.start); - var end = this.lineColToPosition(fileName, entry.end); + var start = this.lineOffsetToPosition(fileName, entry.start); + var end = this.lineOffsetToPosition(fileName, entry.end); return { containerKind: "", containerName: "", @@ -300,12 +300,17 @@ module ts.server { }); } + findReferences(fileName: string, position: number): ReferencedSymbol[]{ + // Not yet implemented. + return []; + } + getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FileLocationRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, }; var request = this.processRequest(CommandNames.References, args); @@ -313,8 +318,8 @@ module ts.server { return response.body.refs.map(entry => { var fileName = entry.file; - var start = this.lineColToPosition(fileName, entry.start); - var end = this.lineColToPosition(fileName, entry.end); + var start = this.lineOffsetToPosition(fileName, entry.start); + var end = this.lineOffsetToPosition(fileName, entry.end); return { fileName: fileName, textSpan: ts.createTextSpanFromBounds(start, end), @@ -340,11 +345,11 @@ module ts.server { } getRenameInfo(fileName: string, position: number, findInStrings?: boolean, findInComments?: boolean): RenameInfo { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.RenameRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, findInStrings, findInComments }; @@ -355,8 +360,8 @@ module ts.server { response.body.locs.map((entry: protocol.SpanGroup) => { var fileName = entry.file; entry.locs.map((loc: protocol.TextSpan) => { - var start = this.lineColToPosition(fileName, loc.start); - var end = this.lineColToPosition(fileName, loc.end); + var start = this.lineOffsetToPosition(fileName, loc.start); + var end = this.lineOffsetToPosition(fileName, loc.end); locations.push({ textSpan: ts.createTextSpanFromBounds(start, end), fileName: fileName @@ -400,7 +405,7 @@ module ts.server { text: item.text, kind: item.kind, kindModifiers: item.kindModifiers || "", - spans: item.spans.map(span=> createTextSpanFromBounds(this.lineColToPosition(fileName, span.start), this.lineColToPosition(fileName, span.end))), + spans: item.spans.map(span=> createTextSpanFromBounds(this.lineOffsetToPosition(fileName, span.start), this.lineOffsetToPosition(fileName, span.end))), childItems: this.decodeNavigationBarItems(item.childItems, fileName), indent: 0, bolded: false, @@ -428,7 +433,35 @@ module ts.server { } getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems { - throw new Error("Not Implemented Yet."); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); + var args: protocol.SignatureHelpRequestArgs = { + file: fileName, + line: lineOffset.line, + offset: lineOffset.offset + }; + + var request = this.processRequest(CommandNames.SignatureHelp, args); + var response = this.processResponse(request); + + if (!response.body) { + return undefined; + } + var helpItems: protocol.SignatureHelpItems = response.body; + var span = helpItems.applicableSpan; + var start = this.lineOffsetToPosition(fileName, span.start); + var end = this.lineOffsetToPosition(fileName, span.end); + + var result: SignatureHelpItems = { + items: helpItems.items, + applicableSpan: { + start: start, + length: end - start + }, + selectedItemIndex: helpItems.selectedItemIndex, + argumentIndex: helpItems.argumentIndex, + argumentCount: helpItems.argumentCount, + } + return result; } getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] { @@ -444,19 +477,19 @@ module ts.server { } getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[] { - var lineCol = this.positionToOneBasedLineCol(fileName, position); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); var args: protocol.FileLocationRequestArgs = { file: fileName, - line: lineCol.line, - col: lineCol.col, + line: lineOffset.line, + offset: lineOffset.offset, }; var request = this.processRequest(CommandNames.Brace, args); var response = this.processResponse(request); return response.body.map(entry => { - var start = this.lineColToPosition(fileName, entry.start); - var end = this.lineColToPosition(fileName, entry.end); + var start = this.lineOffsetToPosition(fileName, entry.start); + var end = this.lineOffsetToPosition(fileName, entry.end); return { start: start, length: end - start, diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index d7eda52ce38..366e4dbfd84 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -1,10 +1,14 @@ /// /// +/// +/// /// module ts.server { export interface Logger { close(): void; + isVerbose(): boolean; + loggingEnabled(): boolean; perftrc(s: string): void; info(s: string): void; startGroup(): void; @@ -14,18 +18,33 @@ module ts.server { var lineCollectionCapacity = 4; + function mergeFormatOptions(formatCodeOptions: FormatCodeOptions, formatOptions: protocol.FormatOptions): void { + var hasOwnProperty = Object.prototype.hasOwnProperty; + Object.keys(formatOptions).forEach((key) => { + var codeKey = key.charAt(0).toUpperCase() + key.substring(1); + if (hasOwnProperty.call(formatCodeOptions, codeKey)) { + formatCodeOptions[codeKey] = formatOptions[key]; + } + }); + } + class ScriptInfo { svc: ScriptVersionCache; children: ScriptInfo[] = []; // files referenced by this file - defaultProject: Project; // project to use by default for file - fileWatcher: FileWatcher; + formatCodeOptions = ts.clone(CompilerService.defaultFormatCodeOptions); constructor(private host: ServerHost, public fileName: string, public content: string, public isOpen = false) { this.svc = ScriptVersionCache.fromString(content); } + setFormatOptions(formatOptions: protocol.FormatOptions): void { + if (formatOptions) { + mergeFormatOptions(this.formatCodeOptions, formatOptions); + } + } + close() { this.isOpen = false; } @@ -101,13 +120,7 @@ module ts.server { } getScriptFileNames() { - var filenames: string[] = []; - for (var filename in this.filenameToScript) { - if (this.filenameToScript[filename] && this.filenameToScript[filename].isOpen) { - filenames.push(filename); - } - } - return filenames; + return this.roots.map(root => root.fileName); } getScriptVersion(filename: string) { @@ -204,33 +217,33 @@ module ts.server { } else { var nextLineInfo = index.lineNumberToInfo(line + 2); - len = nextLineInfo.col - lineInfo.col; + len = nextLineInfo.offset - lineInfo.offset; } - return ts.createTextSpan(lineInfo.col, len); + return ts.createTextSpan(lineInfo.offset, len); } /** * @param line 1 based index - * @param col 1 based index + * @param offset 1 based index */ - lineColToPosition(filename: string, line: number, col: number): number { + lineOffsetToPosition(filename: string, line: number, offset: number): number { var script: ScriptInfo = this.filenameToScript[filename]; var index = script.snap().index; var lineInfo = index.lineNumberToInfo(line); - // TODO: assert this column is actually on the line - return (lineInfo.col + col - 1); + // TODO: assert this offset is actually on the line + return (lineInfo.offset + offset - 1); } /** * @param line 1-based index - * @param col 1-based index + * @param offset 1-based index */ - positionToLineCol(filename: string, position: number): ILineInfo { + positionToLineOffset(filename: string, position: number): ILineInfo { var script: ScriptInfo = this.filenameToScript[filename]; var index = script.snap().index; - var lineCol = index.charOffsetToLineNumberAndPos(position); - return { line: lineCol.line, col: lineCol.col + 1 }; + var lineOffset = index.charOffsetToLineNumberAndPos(position); + return { line: lineOffset.line, offset: lineOffset.offset + 1 }; } } @@ -263,20 +276,29 @@ module ts.server { interface ProjectOptions { // these fields can be present in the project file files?: string[]; - formatCodeOptions?: ts.FormatCodeOptions; compilerOptions?: ts.CompilerOptions; } export class Project { compilerService: CompilerService; - projectOptions: ProjectOptions; projectFilename: string; program: ts.Program; filenameToSourceFile: ts.Map = {}; updateGraphSeq = 0; + /** Used for configured projects which may have multiple open roots */ + openRefCount = 0; - constructor(public projectService: ProjectService) { - this.compilerService = new CompilerService(this); + constructor(public projectService: ProjectService, public projectOptions?: ProjectOptions) { + this.compilerService = new CompilerService(this,projectOptions && projectOptions.compilerOptions); + } + + addOpenRef() { + this.openRefCount++; + } + + deleteOpenRef() { + this.openRefCount--; + return this.openRefCount; } openReferencedFile(filename: string) { @@ -296,6 +318,10 @@ module ts.server { } } + isRoot(info: ScriptInfo) { + return this.compilerService.host.roots.some(root => root === info); + } + removeReferencedFile(info: ScriptInfo) { this.compilerService.host.removeReferencedFile(info); this.updateGraph(); @@ -342,7 +368,6 @@ module ts.server { if (projectOptions.compilerOptions) { this.compilerService.setCompilerOptions(projectOptions.compilerOptions); } - // TODO: format code options } } @@ -366,16 +391,45 @@ module ts.server { (eventName: string, project: Project, fileName: string): void; } + interface HostConfiguration { + formatCodeOptions: ts.FormatCodeOptions; + hostInfo: string; + } + export class ProjectService { filenameToScriptInfo: ts.Map = {}; - // open, non-configured files in two lists + // open, non-configured root files openFileRoots: ScriptInfo[] = []; - openFilesReferenced: ScriptInfo[] = []; - // projects covering open files + // projects built from openFileRoots inferredProjects: Project[] = []; + // projects specified by a tsconfig.json file + configuredProjects: Project[] = []; + // open files referenced by a project + openFilesReferenced: ScriptInfo[] = []; + // open files that are roots of a configured project + openFileRootsConfigured: ScriptInfo[] = []; + hostConfiguration: HostConfiguration; constructor(public host: ServerHost, public psLogger: Logger, public eventHandler?: ProjectServiceEventHandler) { // ts.disableIncrementalParsing = true; + this.addDefaultHostConfiguration(); + } + + addDefaultHostConfiguration() { + this.hostConfiguration = { + formatCodeOptions: ts.clone(CompilerService.defaultFormatCodeOptions), + hostInfo: "Unknown host" + } + } + + getFormatCodeOptions(file?: string) { + if (file) { + var info = this.filenameToScriptInfo[file]; + if (info) { + return info.formatCodeOptions; + } + } + return this.hostConfiguration.formatCodeOptions; } watchedFileChanged(fileName: string) { @@ -399,6 +453,26 @@ module ts.server { this.psLogger.msg(msg, type); } + setHostConfiguration(args: ts.server.protocol.ConfigureRequestArguments) { + if (args.file) { + var info = this.filenameToScriptInfo[args.file]; + if (info) { + info.setFormatOptions(args.formatOptions); + this.log("Host configuration update for file " + args.file); + } + } + else { + if (args.hostInfo !== undefined) { + this.hostConfiguration.hostInfo = args.hostInfo; + this.log("Host information " + args.hostInfo, "Info"); + } + if (args.formatOptions) { + mergeFormatOptions(this.hostConfiguration.formatCodeOptions, args.formatOptions); + this.log("Format host information updated", "Info"); + } + } + } + closeLog() { this.psLogger.close(); } @@ -442,44 +516,77 @@ module ts.server { this.printProjects(); } - addOpenFile(info: ScriptInfo) { - this.findReferencingProjects(info); - if (info.defaultProject) { - this.openFilesReferenced.push(info); - } - else { - // create new inferred project p with the newly opened file as root - info.defaultProject = this.createInferredProject(info); - var openFileRoots: ScriptInfo[] = []; - // for each inferred project root r - for (var i = 0, len = this.openFileRoots.length; i < len; i++) { - var r = this.openFileRoots[i]; - // if r referenced by the new project - if (info.defaultProject.getSourceFile(r)) { - // remove project rooted at r - this.inferredProjects = - copyListRemovingItem(r.defaultProject, this.inferredProjects); - // put r in referenced open file list - this.openFilesReferenced.push(r); - // set default project of r to the new project - r.defaultProject = info.defaultProject; - } - else { - // otherwise, keep r as root of inferred project - openFileRoots.push(r); - } + updateConfiguredProjectList() { + var configuredProjects: Project[] = []; + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + if (this.configuredProjects[i].openRefCount > 0) { + configuredProjects.push(this.configuredProjects[i]); } - this.openFileRoots = openFileRoots; - this.openFileRoots.push(info); } + this.configuredProjects = configuredProjects; } + setConfiguredProjectRoot(info: ScriptInfo) { + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + let configuredProject = this.configuredProjects[i]; + if (configuredProject.isRoot(info)) { + info.defaultProject = configuredProject; + configuredProject.addOpenRef(); + return true; + } + } + return false; + } + + addOpenFile(info: ScriptInfo) { + if (this.setConfiguredProjectRoot(info)) { + this.openFileRootsConfigured.push(info); + } + else { + this.findReferencingProjects(info); + if (info.defaultProject) { + this.openFilesReferenced.push(info); + } + else { + // create new inferred project p with the newly opened file as root + info.defaultProject = this.createInferredProject(info); + var openFileRoots: ScriptInfo[] = []; + // for each inferred project root r + for (var i = 0, len = this.openFileRoots.length; i < len; i++) { + var r = this.openFileRoots[i]; + // if r referenced by the new project + if (info.defaultProject.getSourceFile(r)) { + // remove project rooted at r + this.inferredProjects = + copyListRemovingItem(r.defaultProject, this.inferredProjects); + // put r in referenced open file list + this.openFilesReferenced.push(r); + // set default project of r to the new project + r.defaultProject = info.defaultProject; + } + else { + // otherwise, keep r as root of inferred project + openFileRoots.push(r); + } + } + this.openFileRoots = openFileRoots; + this.openFileRoots.push(info); + } + } + this.updateConfiguredProjectList(); + } + + /** + * Remove this file from the set of open, non-configured files. + * @param info The file that has been closed or newly configured + * @param openedByConfig True if info has become a root of a configured project + */ closeOpenFile(info: ScriptInfo) { var openFileRoots: ScriptInfo[] = []; var removedProject: Project; for (var i = 0, len = this.openFileRoots.length; i < len; i++) { // if closed file is root of project - if (info == this.openFileRoots[i]) { + if (info === this.openFileRoots[i]) { // remove that project and remember it removedProject = info.defaultProject; } @@ -488,9 +595,29 @@ module ts.server { } } this.openFileRoots = openFileRoots; + if (!removedProject) { + var openFileRootsConfigured: ScriptInfo[] = []; + + for (var i = 0, len = this.openFileRootsConfigured.length; i < len; i++) { + if (info === this.openFileRootsConfigured[i]) { + if (info.defaultProject.deleteOpenRef() === 0) { + removedProject = info.defaultProject; + } + } + else { + openFileRootsConfigured.push(this.openFileRootsConfigured[i]); + } + } + + this.openFileRootsConfigured = openFileRootsConfigured; + } if (removedProject) { - // remove project from inferred projects list - this.inferredProjects = copyListRemovingItem(removedProject, this.inferredProjects); + if (removedProject.isConfiguredProject()) { + this.configuredProjects = copyListRemovingItem(removedProject, this.configuredProjects); + } + else { + this.inferredProjects = copyListRemovingItem(removedProject, this.inferredProjects); + } var openFilesReferenced: ScriptInfo[] = []; var orphanFiles: ScriptInfo[] = []; // for all open, referenced files f @@ -522,29 +649,57 @@ module ts.server { var referencingProjects: Project[] = []; info.defaultProject = undefined; for (var i = 0, len = this.inferredProjects.length; i < len; i++) { - this.inferredProjects[i].updateGraph(); - if (this.inferredProjects[i] != excludedProject) { - if (this.inferredProjects[i].getSourceFile(info)) { - info.defaultProject = this.inferredProjects[i]; - referencingProjects.push(this.inferredProjects[i]); + var inferredProject = this.inferredProjects[i]; + inferredProject.updateGraph(); + if (inferredProject != excludedProject) { + if (inferredProject.getSourceFile(info)) { + info.defaultProject = inferredProject; + referencingProjects.push(inferredProject); } } } + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + var configuredProject = this.configuredProjects[i]; + configuredProject.updateGraph(); + if (configuredProject.getSourceFile(info)) { + info.defaultProject = configuredProject; + } + } return referencingProjects; } updateProjectStructure() { this.log("updating project structure from ...", "Info"); this.printProjects(); + + // First loop through all open files that are referenced by projects but are not + // project roots. For each referenced file, see if the default project still + // references that file. If so, then just keep the file in the referenced list. + // If not, add the file to an unattached list, to be rechecked later. + + var openFilesReferenced: ScriptInfo[] = []; + var unattachedOpenFiles: ScriptInfo[] = []; + for (var i = 0, len = this.openFilesReferenced.length; i < len; i++) { - var refdFile = this.openFilesReferenced[i]; - refdFile.defaultProject.updateGraph(); - var sourceFile = refdFile.defaultProject.getSourceFile(refdFile); - if (!sourceFile) { - this.openFilesReferenced = copyListRemovingItem(refdFile, this.openFilesReferenced); - this.addOpenFile(refdFile); + var referencedFile = this.openFilesReferenced[i]; + referencedFile.defaultProject.updateGraph(); + var sourceFile = referencedFile.defaultProject.getSourceFile(referencedFile); + if (sourceFile) { + openFilesReferenced.push(referencedFile); + } + else { + unattachedOpenFiles.push(referencedFile); } } + this.openFilesReferenced = openFilesReferenced; + + // Then, loop through all of the open files that are project roots. + // For each root file, note the project that it roots. Then see if + // any other projects newly reference the file. If zero projects + // newly reference the file, keep it as a root. If one or more + // projects newly references the file, remove its project from the + // inferred projects list (since it is no longer a root) and add + // the file to the open, referenced file list. var openFileRoots: ScriptInfo[] = []; for (var i = 0, len = this.openFileRoots.length; i < len; i++) { var rootFile = this.openFileRoots[i]; @@ -555,12 +710,19 @@ module ts.server { openFileRoots.push(rootFile); } else { - // remove project from inferred projects list + // remove project from inferred projects list because root captured this.inferredProjects = copyListRemovingItem(rootedProject, this.inferredProjects); this.openFilesReferenced.push(rootFile); } } this.openFileRoots = openFileRoots; + + // Finally, if we found any open, referenced files that are no longer + // referenced by their default project, treat them as newly opened + // by the editor. + for (var i = 0, len = unattachedOpenFiles.length; i < len; i++) { + this.addOpenFile(unattachedOpenFiles[i]); + } this.printProjects(); } @@ -572,7 +734,7 @@ module ts.server { /** * @param filename is absolute pathname */ - openFile(fileName: string, openedByClient = false) { + openFile(fileName: string, openedByClient: boolean) { fileName = ts.normalizePath(fileName); var info = ts.lookUp(this.filenameToScriptInfo, fileName); if (!info) { @@ -586,6 +748,7 @@ module ts.server { } } if (content !== undefined) { + var indentSize: number; info = new ScriptInfo(this.host, fileName, content, openedByClient); this.filenameToScriptInfo[fileName] = info; if (!info.isOpen) { @@ -601,14 +764,54 @@ module ts.server { return info; } + // This is different from the method the compiler uses because + // the compiler can assume it will always start searching in the + // current directory (the directory in which tsc was invoked). + // The server must start searching from the directory containing + // the newly opened file. + findConfigFile(searchPath: string): string { + while (true) { + var fileName = ts.combinePaths(searchPath, "tsconfig.json"); + if (sys.fileExists(fileName)) { + return fileName; + } + var parentPath = ts.getDirectoryPath(searchPath); + if (parentPath === searchPath) { + break; + } + searchPath = parentPath; + } + return undefined; + } + /** * Open file whose contents is managed by the client * @param filename is absolute pathname */ - openClientFile(filename: string) { - // TODO: tsconfig check - var info = this.openFile(filename, true); + openClientFile(fileName: string) { + var searchPath = ts.normalizePath(getDirectoryPath(fileName)); + this.log("Search path: " + searchPath,"Info"); + var configFileName = this.findConfigFile(searchPath); + if (configFileName) { + this.log("Config file name: " + configFileName, "Info"); + } else { + this.log("no config file"); + } + if (configFileName) { + configFileName = getAbsolutePath(configFileName, searchPath); + } + if (configFileName && (!this.configProjectIsActive(configFileName))) { + var configResult = this.openConfigFile(configFileName, fileName); + if (!configResult.success) { + this.log("Error opening config file " + configFileName + " " + configResult.errorMsg); + } + else { + this.log("Opened configuration file " + configFileName,"Info"); + this.configuredProjects.push(configResult.project); + } + } + var info = this.openFile(fileName, true); this.addOpenFile(info); this.printProjects(); return info; @@ -629,19 +832,6 @@ module ts.server { this.printProjects(); } - getProjectsReferencingFile(filename: string) { - var scriptInfo = ts.lookUp(this.filenameToScriptInfo, filename); - if (scriptInfo) { - var projects: Project[] = []; - for (var i = 0, len = this.inferredProjects.length; i < len; i++) { - if (this.inferredProjects[i].getSourceFile(scriptInfo)) { - projects.push(this.inferredProjects[i]); - } - } - return projects; - } - } - getProjectForFile(filename: string) { var scriptInfo = ts.lookUp(this.filenameToScriptInfo, filename); if (scriptInfo) { @@ -654,9 +844,9 @@ module ts.server { if (scriptInfo) { this.psLogger.startGroup(); this.psLogger.info("Projects for " + filename) - var projects = this.getProjectsReferencingFile(filename); + var projects = this.findReferencingProjects(scriptInfo); for (var i = 0, len = projects.length; i < len; i++) { - this.psLogger.info("Inferred Project " + i.toString()); + this.psLogger.info("Project " + i.toString()); } this.psLogger.endGroup(); } @@ -674,18 +864,42 @@ module ts.server { this.psLogger.info(project.filesToString()); this.psLogger.info("-----------------------------------------------"); } - this.psLogger.info("Open file roots: ") + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + var project = this.configuredProjects[i]; + project.updateGraph(); + this.psLogger.info("Project (configured) " + (i+this.inferredProjects.length).toString()); + this.psLogger.info(project.filesToString()); + this.psLogger.info("-----------------------------------------------"); + } + this.psLogger.info("Open file roots of inferred projects: ") for (var i = 0, len = this.openFileRoots.length; i < len; i++) { this.psLogger.info(this.openFileRoots[i].fileName); } - this.psLogger.info("Open files referenced: ") + this.psLogger.info("Open files referenced by inferred or configured projects: ") for (var i = 0, len = this.openFilesReferenced.length; i < len; i++) { - this.psLogger.info(this.openFilesReferenced[i].fileName); + var fileInfo = this.openFilesReferenced[i].fileName; + if (this.openFilesReferenced[i].defaultProject.isConfiguredProject()) { + fileInfo += " (configured)"; + } + this.psLogger.info(fileInfo); + } + this.psLogger.info("Open file roots of configured projects: ") + for (var i = 0, len = this.openFileRootsConfigured.length; i < len; i++) { + this.psLogger.info(this.openFileRootsConfigured[i].fileName); } this.psLogger.endGroup(); } - openConfigFile(configFilename: string): ProjectOpenResult { + configProjectIsActive(fileName: string) { + for (var i = 0, len = this.configuredProjects.length; i < len; i++) { + if (this.configuredProjects[i].projectFilename == fileName) { + return true; + } + } + return false; + } + + openConfigFile(configFilename: string, clientFileName?: string): ProjectOpenResult { configFilename = ts.normalizePath(configFilename); // file references will be relative to dirPath (or absolute) var dirPath = ts.getDirectoryPath(configFilename); @@ -694,35 +908,27 @@ module ts.server { return { errorMsg: "tsconfig syntax error" }; } else { - // REVIEW: specify no base path so can get absolute path below - var parsedCommandLine = ts.parseConfigFile(rawConfig); - - if (parsedCommandLine.errors) { - // TODO: gather diagnostics and transmit + var parsedCommandLine = ts.parseConfigFile(rawConfig, dirPath); + if (parsedCommandLine.errors && (parsedCommandLine.errors.length > 0)) { return { errorMsg: "tsconfig option errors" }; } else if (parsedCommandLine.fileNames) { - var proj = this.createProject(configFilename); + var projectOptions: ProjectOptions = { + files: parsedCommandLine.fileNames, + compilerOptions: parsedCommandLine.options + }; + var proj = this.createProject(configFilename, projectOptions); for (var i = 0, len = parsedCommandLine.fileNames.length; i < len; i++) { var rootFilename = parsedCommandLine.fileNames[i]; - var normRootFilename = ts.normalizePath(rootFilename); - normRootFilename = getAbsolutePath(normRootFilename, dirPath); - if (this.host.fileExists(normRootFilename)) { - var info = this.openFile(normRootFilename); + if (ts.sys.fileExists(rootFilename)) { + var info = this.openFile(rootFilename, clientFileName == rootFilename); proj.addRoot(info); } else { return { errorMsg: "specified file " + rootFilename + " not found" }; } } - var projectOptions: ProjectOptions = { - files: parsedCommandLine.fileNames, - compilerOptions: parsedCommandLine.options - }; - if (rawConfig.formatCodeOptions) { - projectOptions.formatCodeOptions = rawConfig.formatCodeOptions; - } - proj.setProjectOptions(projectOptions); + proj.finishGraph(); return { success: true, project: proj }; } else { @@ -731,10 +937,10 @@ module ts.server { } } - createProject(projectFilename: string) { - var eproj = new Project(this); - eproj.projectFilename = projectFilename; - return eproj; + createProject(projectFilename: string, projectOptions?: ProjectOptions) { + var project = new Project(this, projectOptions); + project.projectFilename = projectFilename; + return project; } } @@ -743,15 +949,17 @@ module ts.server { host: LSHost; languageService: ts.LanguageService; classifier: ts.Classifier; - settings = ts.getDefaultCompilerOptions(); + settings: ts.CompilerOptions; documentRegistry = ts.createDocumentRegistry(); - formatCodeOptions: ts.FormatCodeOptions = CompilerService.defaultFormatCodeOptions; - constructor(public project: Project) { + constructor(public project: Project, opt?: ts.CompilerOptions) { this.host = new LSHost(project.projectService.host, project); - // override default ES6 (remove when compiler default back at ES5) - this.settings.target = ts.ScriptTarget.ES5; - this.host.setCompilationSettings(this.settings); + if (opt) { + this.setCompilerOptions(opt); + } + else { + this.setCompilerOptions(ts.getDefaultCompilerOptions()); + } this.languageService = ts.createLanguageService(this.host, this.documentRegistry); this.classifier = ts.createClassifier(); } @@ -792,7 +1000,7 @@ module ts.server { export interface ILineInfo { line: number; - col: number; + offset: number; text?: string; leaf?: LineLeaf; } @@ -1042,7 +1250,7 @@ module ts.server { } } - class ScriptVersionCache { + export class ScriptVersionCache { changes: TextChange[] = []; versions: LineIndexSnapshot[] = []; minVersion = 0; // no versions earlier than min version will maintain change history @@ -1050,6 +1258,7 @@ module ts.server { static changeNumberThreshold = 8; static changeLengthThreshold = 256; + static maxVersions = 8; // REVIEW: can optimize by coalescing simple edits edit(pos: number, deleteLen: number, insertedText?: string) { @@ -1110,6 +1319,13 @@ module ts.server { this.currentVersion = snap.version; this.versions[snap.version] = snap; this.changes = []; + if ((this.currentVersion - this.minVersion) >= ScriptVersionCache.maxVersions) { + var oldMin = this.minVersion; + this.minVersion = (this.currentVersion - ScriptVersionCache.maxVersions) + 1; + for (var j = oldMin; j < this.minVersion; j++) { + this.versions[j] = undefined; + } + } } return snap; } @@ -1177,7 +1393,7 @@ module ts.server { getLineMapper() { return ((line: number) => { - return this.index.lineNumberToInfo(line).col; + return this.index.lineNumberToInfo(line).offset; }); } @@ -1195,7 +1411,7 @@ module ts.server { } } - class LineIndex { + export class LineIndex { root: LineNode; // set this to true to check each edit for accuracy checkEdits = false; @@ -1214,7 +1430,7 @@ module ts.server { else { return { line: lineNumber, - col: this.root.charCount() + offset: this.root.charCount() } } } @@ -1238,7 +1454,7 @@ module ts.server { getText(rangeStart: number, rangeLength: number) { var accum = ""; - if (rangeLength > 0) { + if ((rangeLength > 0) && (rangeStart < this.root.charCount())) { this.walk(rangeStart, rangeLength, { goSubtree: true, done: false, @@ -1250,6 +1466,10 @@ module ts.server { return accum; } + getLength(): number { + return this.root.charCount(); + } + every(f: (ll: LineLeaf, s: number, len: number) => boolean, rangeStart: number, rangeEnd?: number) { if (!rangeEnd) { rangeEnd = this.root.charCount(); @@ -1283,11 +1503,24 @@ module ts.server { var checkText = editFlat(this.getText(0, this.root.charCount()), pos, deleteLength, newText); } var walker = new EditWalker(); - if (deleteLength > 0) { + if (pos >= this.root.charCount()) { + // insert at end + pos = this.root.charCount() - 1; + var endString = this.getText(pos, 1); + if (newText) { + newText = endString + newText; + } + else { + newText = endString; + } + deleteLength = 0; + walker.suppressTrailingText = true; + } + else if (deleteLength > 0) { // check whether last characters deleted are line break var e = pos + deleteLength; var lineInfo = this.charOffsetToLineNumberAndPos(e); - if ((lineInfo && (lineInfo.col == 0))) { + if ((lineInfo && (lineInfo.offset == 0))) { // move range end just past line that will merge with previous line deleteLength += lineInfo.text.length; // store text by appending to end of insertedText @@ -1299,21 +1532,10 @@ module ts.server { } } } - else if (pos >= this.root.charCount()) { - // insert at end - var endString = this.getText(pos - 1, 1); - if (newText) { - newText = endString + newText; - } - else { - newText = endString; - } - pos = pos - 1; - deleteLength = 0; - walker.suppressTrailingText = true; + if (pos < this.root.charCount()) { + this.root.walk(pos, deleteLength, walker); + walker.insertLines(newText); } - this.root.walk(pos, deleteLength, walker); - walker.insertLines(newText); if (this.checkEdits) { var updatedText = this.getText(0, this.root.charCount()); Debug.assert(checkText == updatedText, "buffer edit mismatch"); @@ -1474,14 +1696,14 @@ module ts.server { if (!childInfo.child) { return { line: lineNumber, - col: charOffset, + offset: charOffset, } } else if (childInfo.childIndex < this.children.length) { if (childInfo.child.isLeaf()) { return { line: childInfo.lineNumber, - col: childInfo.charOffset, + offset: childInfo.charOffset, text: ((childInfo.child)).text, leaf: ((childInfo.child)) }; @@ -1493,7 +1715,7 @@ module ts.server { } else { var lineInfo = this.lineNumberToInfo(this.lineCount(), 0); - return { line: this.lineCount(), col: lineInfo.leaf.charCount() }; + return { line: this.lineCount(), offset: lineInfo.leaf.charCount() }; } } @@ -1502,13 +1724,13 @@ module ts.server { if (!childInfo.child) { return { line: lineNumber, - col: charOffset + offset: charOffset } - } + } else if (childInfo.child.isLeaf()) { return { line: lineNumber, - col: childInfo.charOffset, + offset: childInfo.charOffset, text: ((childInfo.child)).text, leaf: ((childInfo.child)) } diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 23ef00d6b44..3a03c22d49e 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -96,7 +96,7 @@ declare module ts.server.protocol { /** * Instances of this interface specify a location in a source file: - * (file, line, col), where line and column are 1-based. + * (file, line, character offset), where line and character offset are 1-based. */ export interface FileLocationRequestArgs extends FileRequestArgs { /** @@ -105,9 +105,9 @@ declare module ts.server.protocol { line: number; /** - * The column for the request (1-based). + * The character offset (on the line) for the request (1-based). */ - col: number; + offset: number; } /** @@ -126,11 +126,11 @@ declare module ts.server.protocol { } /** - * Location in source code expressed as (one-based) line and column. + * Location in source code expressed as (one-based) line and character offset. */ export interface Location { line: number; - col: number; + offset: number; } /** @@ -202,9 +202,9 @@ declare module ts.server.protocol { symbolName: string; /** - * The start column of the symbol (on the line provided by the references request). + * The start character offset of the symbol (on the line provided by the references request). */ - symbolStartCol: number; + symbolStartOffset: number; /** * The full display name of the symbol. @@ -299,6 +299,100 @@ declare module ts.server.protocol { body?: RenameResponseBody; } + /** + * Editor options + */ + export interface EditorOptions { + + /** Number of spaces for each tab. Default value is 4. */ + tabSize?: number; + + /** Number of spaces to indent during formatting. Default value is 4. */ + indentSize?: number; + + /** The new line character to be used. Default value is the OS line delimiter. */ + newLineCharacter?: string; + + /** Whether tabs should be converted to spaces. Default value is true. */ + convertTabsToSpaces?: boolean; + } + + /** + * Format options + */ + export interface FormatOptions extends EditorOptions { + + /** Defines space handling after a comma delimiter. Default value is true. */ + insertSpaceAfterCommaDelimiter?: boolean; + + /** Defines space handling after a semicolon in a for statemen. Default value is true */ + insertSpaceAfterSemicolonInForStatements?: boolean; + + /** Defines space handling after a binary operator. Default value is true. */ + insertSpaceBeforeAndAfterBinaryOperators?: boolean; + + /** Defines space handling after keywords in control flow statement. Default value is true. */ + insertSpaceAfterKeywordsInControlFlowStatements?: boolean; + + /** Defines space handling after function keyword for anonymous functions. Default value is false. */ + insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean; + + /** Defines space handling after opening and before closing non empty parenthesis. Default value is false. */ + insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean; + + /** Defines whether an open brace is put onto a new line for functions or not. Default value is false. */ + placeOpenBraceOnNewLineForFunctions?: boolean; + + /** Defines whether an open brace is put onto a new line for control blocks or not. Default value is false. */ + placeOpenBraceOnNewLineForControlBlocks?: boolean; + + /** Index operator */ + [key:string] : string | number | boolean; + } + + /** + * Information found in a configure request. + */ + export interface ConfigureRequestArguments { + + /** + * Information about the host, for example 'Emacs 24.4' or + * 'Sublime Text version 3075' + */ + hostInfo?: string; + + /** + * If present, tab settings apply only to this file. + */ + file?: string; + + /** + * The format options to use during formatting and other code editing features. + */ + formatOptions?: FormatOptions; + } + + /** + * Configure request; value of command field is "configure". Specifies + * host information, such as host type, tab size, and indent size. + */ + export interface ConfigureRequest extends Request { + arguments: ConfigureRequestArguments; + } + + /** + * Response to "configure" request. This is just an acknowledgement, so + * no body field is required. + */ + export interface ConfigureResponse extends Response { + } + + /** + * Information found in an "open" request. + */ + export interface OpenRequestArgs extends FileRequestArgs { + } + /** * Open request; value of command field is "open". Notify the * server that the client has file open. The server will not @@ -307,7 +401,8 @@ declare module ts.server.protocol { * reload messages) when the file changes. Server does not currently * send a response to an open request. */ - export interface OpenRequest extends FileRequest { + export interface OpenRequest extends Request { + arguments: OpenRequestArgs; } /** @@ -381,9 +476,9 @@ declare module ts.server.protocol { endLine: number; /** - * Last column of range for which to format text in file. + * Character offset on last line of range for which to format text in file. */ - endCol: number; + endOffset: number; } /** @@ -522,12 +617,29 @@ declare module ts.server.protocol { * Optional modifiers for the kind (such as 'public'). */ kindModifiers: string; + /** + * A string that is used for comparing completion items so that they can be ordered. This + * is often the same as the name but may be different in certain circumstances. + */ + sortText: string; } /** * Additional completion entry details, available on demand */ - export interface CompletionEntryDetails extends CompletionEntry { + export interface CompletionEntryDetails { + /** + * The symbol's name. + */ + name: string; + /** + * The symbol's kind (such as 'className' or 'parameterName'). + */ + kind: string; + /** + * Optional modifiers for the kind (such as 'public'). + */ + kindModifiers: string; /** * Display parts of the symbol (similar to quick info). */ @@ -547,6 +659,122 @@ declare module ts.server.protocol { body?: CompletionEntryDetails[]; } + /** + * Signature help information for a single parameter + */ + export interface SignatureHelpParameter { + + /** + * The parameter's name + */ + name: string; + + /** + * Documentation of the parameter. + */ + documentation: SymbolDisplayPart[]; + + /** + * Display parts of the parameter. + */ + displayParts: SymbolDisplayPart[]; + + /** + * Whether the parameter is optional or not. + */ + isOptional: boolean; + } + + /** + * Represents a single signature to show in signature help. + */ + export interface SignatureHelpItem { + + /** + * Whether the signature accepts a variable number of arguments. + */ + isVariadic: boolean; + + /** + * The prefix display parts. + */ + prefixDisplayParts: SymbolDisplayPart[]; + + /** + * The suffix disaply parts. + */ + suffixDisplayParts: SymbolDisplayPart[]; + + /** + * The separator display parts. + */ + separatorDisplayParts: SymbolDisplayPart[]; + + /** + * The signature helps items for the parameters. + */ + parameters: SignatureHelpParameter[]; + + /** + * The signature's documentation + */ + documentation: SymbolDisplayPart[]; + } + + /** + * Signature help items found in the response of a signature help request. + */ + export interface SignatureHelpItems { + + /** + * The signature help items. + */ + items: SignatureHelpItem[]; + + /** + * The span for which signature help should appear on a signature + */ + applicableSpan: TextSpan; + + /** + * The item selected in the set of available help items. + */ + selectedItemIndex: number; + + /** + * The argument selected in the set of parameters. + */ + argumentIndex: number; + + /** + * The argument count + */ + argumentCount: number; + } + + /** + * Arguments of a signature help request. + */ + export interface SignatureHelpRequestArgs extends FileLocationRequestArgs { + + } + + /** + * Signature help request; value of command field is "signatureHelp". + * Given a file location (file, line, col), return the signature + * help. + */ + export interface SignatureHelpRequest extends FileLocationRequest { + arguments: SignatureHelpRequestArgs; + } + + /** + * Repsonse object for a SignatureHelpRequest. + */ + export interface SignatureHelpResponse extends Response { + body?: SignatureHelpItems; + } + /** * Arguments for geterr messages. */ @@ -762,7 +990,7 @@ declare module ts.server.protocol { */ export interface ChangeRequestArgs extends FormatRequestArgs { /** - * Optional string to insert at location (file, line, col). + * Optional string to insert at location (file, line, offset). */ insertString?: string; } @@ -786,7 +1014,7 @@ declare module ts.server.protocol { /** * Brace matching request; value of command field is "brace". * Return response giving the file locations of matching braces - * found in file at location line, col. + * found in file at location line, offset. */ export interface BraceRequest extends FileLocationRequest { } diff --git a/src/server/server.ts b/src/server/server.ts index 2b9040b4df3..4c13be80c4c 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -19,7 +19,7 @@ module ts.server { inGroup = false; firstInGroup = true; - constructor(public logFilename: string) { + constructor(public logFilename: string, public level: string) { } static padStringRight(str: string, padding: string) { @@ -51,9 +51,20 @@ module ts.server { this.firstInGroup = true; } + loggingEnabled() { + return !!this.logFilename; + } + + isVerbose() { + return this.loggingEnabled() && (this.level == "verbose"); + } + + msg(s: string, type = "Err") { if (this.fd < 0) { - this.fd = fs.openSync(this.logFilename, "w"); + if (this.logFilename) { + this.fd = fs.openSync(this.logFilename, "w"); + } } if (this.fd >= 0) { s = s + "\n"; @@ -173,17 +184,61 @@ module ts.server { }); rl.on('close',() => { - this.projectService.closeLog(); this.projectService.log("Exiting..."); + this.projectService.closeLog(); process.exit(0); }); } } + interface LogOptions { + file?: string; + detailLevel?: string; + } + + function parseLoggingEnvironmentString(logEnvStr: string): LogOptions { + var logEnv: LogOptions = {}; + var args = logEnvStr.split(' '); + for (var i = 0, len = args.length; i < (len - 1); i += 2) { + var option = args[i]; + var value = args[i + 1]; + if (option && value) { + switch (option) { + case "-file": + logEnv.file = value; + break; + case "-level": + logEnv.detailLevel = value; + break; + } + } + } + return logEnv; + } + + // TSS_LOG "{ level: "normal | verbose | terse", file?: string}" + function createLoggerFromEnv() { + var fileName: string = undefined; + var detailLevel = "normal"; + var logEnvStr = process.env["TSS_LOG"]; + if (logEnvStr) { + var logEnv = parseLoggingEnvironmentString(logEnvStr); + if (logEnv.file) { + fileName = logEnv.file; + } + else { + fileName = __dirname + "/.log" + process.pid.toString(); + } + if (logEnv.detailLevel) { + detailLevel = logEnv.detailLevel; + } + } + return new Logger(fileName, detailLevel); + } // This places log file in the directory containing editorServices.js // TODO: check that this location is writable - var logger = new Logger(__dirname + "/.log" + process.pid.toString()); + var logger = createLoggerFromEnv(); // REVIEW: for now this implementation uses polling. // The advantage of polling is that it works reliably @@ -206,7 +261,10 @@ module ts.server { } }; - + var ioSession = new IOSession(ts.sys, logger); + process.on('uncaughtException', function(err: Error) { + ioSession.logError(err, "unknown"); + }); // Start listening - new IOSession(ts.sys, logger).listen(); + ioSession.listen(); } \ No newline at end of file diff --git a/src/server/session.ts b/src/server/session.ts index 21238e88992..80831e69284 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -5,13 +5,13 @@ /// module ts.server { - var spaceCache = [" ", " ", " ", " "]; + var spaceCache:string[] = []; interface StackTraceError extends Error { stack?: string; } - function generateSpaces(n: number): string { + export function generateSpaces(n: number): string { if (!spaceCache[n]) { var strBuilder = ""; for (var i = 0; i < n; i++) { @@ -44,7 +44,7 @@ module ts.server { else if (a.file == b.file) { var n = compareNumber(a.start.line, b.start.line); if (n == 0) { - return compareNumber(a.start.col, b.start.col); + return compareNumber(a.start.offset, b.start.offset); } else return n; } @@ -55,8 +55,8 @@ module ts.server { function formatDiag(fileName: string, project: Project, diag: ts.Diagnostic) { return { - start: project.compilerService.host.positionToLineCol(fileName, diag.start), - end: project.compilerService.host.positionToLineCol(fileName, diag.start + diag.length), + start: project.compilerService.host.positionToLineOffset(fileName, diag.start), + end: project.compilerService.host.positionToLineOffset(fileName, diag.start + diag.length), text: ts.flattenDiagnosticMessageText(diag.messageText, "\n") }; } @@ -80,6 +80,8 @@ module ts.server { export var Close = "close"; export var Completions = "completions"; export var CompletionDetails = "completionEntryDetails"; + export var SignatureHelp = "signatureHelp"; + export var Configure = "configure"; export var Definition = "definition"; export var Format = "format"; export var Formatonkey = "formatonkey"; @@ -145,6 +147,9 @@ module ts.server { send(msg: NodeJS._debugger.Message) { var json = JSON.stringify(msg); + if (this.logger.isVerbose()) { + this.logger.info(msg.type + ": " + json); + } this.sendLineToClient('Content-Length: ' + (1 + Buffer.byteLength(json, 'utf8')) + '\r\n\r\n' + json); } @@ -181,18 +186,29 @@ module ts.server { } semanticCheck(file: string, project: Project) { - var diags = project.compilerService.languageService.getSemanticDiagnostics(file); - if (diags) { - var bakedDiags = diags.map((diag) => formatDiag(file, project, diag)); - this.event({ file: file, diagnostics: bakedDiags }, "semanticDiag"); + try { + var diags = project.compilerService.languageService.getSemanticDiagnostics(file); + + if (diags) { + var bakedDiags = diags.map((diag) => formatDiag(file, project, diag)); + this.event({ file: file, diagnostics: bakedDiags }, "semanticDiag"); + } + } + catch (err) { + this.logError(err, "semantic check"); } } syntacticCheck(file: string, project: Project) { - var diags = project.compilerService.languageService.getSyntacticDiagnostics(file); - if (diags) { - var bakedDiags = diags.map((diag) => formatDiag(file, project, diag)); - this.event({ file: file, diagnostics: bakedDiags }, "syntaxDiag"); + try { + var diags = project.compilerService.languageService.getSyntacticDiagnostics(file); + if (diags) { + var bakedDiags = diags.map((diag) => formatDiag(file, project, diag)); + this.event({ file: file, diagnostics: bakedDiags }, "syntaxDiag"); + } + } + catch (err) { + this.logError(err, "syntactic check"); } } @@ -245,7 +261,7 @@ module ts.server { } } - getDefinition(line: number, col: number, fileName: string): protocol.FileSpan[] { + getDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (!project) { @@ -253,7 +269,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var definitions = compilerService.languageService.getDefinitionAtPosition(file, position); if (!definitions) { @@ -262,12 +278,12 @@ module ts.server { return definitions.map(def => ({ file: def.fileName, - start: compilerService.host.positionToLineCol(def.fileName, def.textSpan.start), - end: compilerService.host.positionToLineCol(def.fileName, ts.textSpanEnd(def.textSpan)) + start: compilerService.host.positionToLineOffset(def.fileName, def.textSpan.start), + end: compilerService.host.positionToLineOffset(def.fileName, ts.textSpanEnd(def.textSpan)) })); } - getRenameLocations(line: number, col: number, fileName: string,findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody { + getRenameLocations(line: number, offset: number, fileName: string,findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (!project) { @@ -275,7 +291,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var renameInfo = compilerService.languageService.getRenameInfo(file, position); if (!renameInfo) { return undefined; @@ -295,8 +311,8 @@ module ts.server { var bakedRenameLocs = renameLocations.map(location => ({ file: location.fileName, - start: compilerService.host.positionToLineCol(location.fileName, location.textSpan.start), - end: compilerService.host.positionToLineCol(location.fileName, ts.textSpanEnd(location.textSpan)), + start: compilerService.host.positionToLineOffset(location.fileName, location.textSpan.start), + end: compilerService.host.positionToLineOffset(location.fileName, ts.textSpanEnd(location.textSpan)), })).sort((a, b) => { if (a.file < b.file) { return -1; @@ -313,7 +329,7 @@ module ts.server { return -1; } else { - return b.start.col - a.start.col; + return b.start.offset - a.start.offset; } } }).reduce((accum: protocol.SpanGroup[], cur: protocol.FileSpan) => { @@ -335,7 +351,7 @@ module ts.server { return { info: renameInfo, locs: bakedRenameLocs }; } - getReferences(line: number, col: number, fileName: string): protocol.ReferencesResponseBody { + getReferences(line: number, offset: number, fileName: string): protocol.ReferencesResponseBody { // TODO: get all projects for this file; report refs for all projects deleting duplicates // can avoid duplicates by eliminating same ref file from subsequent projects var file = ts.normalizePath(fileName); @@ -345,7 +361,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var references = compilerService.languageService.getReferencesAtPosition(file, position); if (!references) { @@ -359,10 +375,10 @@ module ts.server { var displayString = ts.displayPartsToString(nameInfo.displayParts); var nameSpan = nameInfo.textSpan; - var nameColStart = compilerService.host.positionToLineCol(file, nameSpan.start).col; + var nameColStart = compilerService.host.positionToLineOffset(file, nameSpan.start).offset; var nameText = compilerService.host.getScriptSnapshot(file).getText(nameSpan.start, ts.textSpanEnd(nameSpan)); var bakedRefs: protocol.ReferencesResponseItem[] = references.map((ref) => { - var start = compilerService.host.positionToLineCol(ref.fileName, ref.textSpan.start); + var start = compilerService.host.positionToLineOffset(ref.fileName, ref.textSpan.start); var refLineSpan = compilerService.host.lineToTextSpan(ref.fileName, start.line - 1); var snap = compilerService.host.getScriptSnapshot(ref.fileName); var lineText = snap.getText(refLineSpan.start, ts.textSpanEnd(refLineSpan)).replace(/\r|\n/g, ""); @@ -370,14 +386,14 @@ module ts.server { file: ref.fileName, start: start, lineText: lineText, - end: compilerService.host.positionToLineCol(ref.fileName, ts.textSpanEnd(ref.textSpan)), + end: compilerService.host.positionToLineOffset(ref.fileName, ts.textSpanEnd(ref.textSpan)), isWriteAccess: ref.isWriteAccess }; }).sort(compareFileStart); return { refs: bakedRefs, symbolName: nameText, - symbolStartCol: nameColStart, + symbolStartOffset: nameColStart, symbolDisplayString: displayString }; } @@ -387,7 +403,7 @@ module ts.server { this.projectService.openClientFile(file); } - getQuickInfo(line: number, col: number, fileName: string): protocol.QuickInfoResponseBody { + getQuickInfo(line: number, offset: number, fileName: string): protocol.QuickInfoResponseBody { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (!project) { @@ -395,7 +411,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var quickInfo = compilerService.languageService.getQuickInfoAtPosition(file, position); if (!quickInfo) { return undefined; @@ -406,14 +422,14 @@ module ts.server { return { kind: quickInfo.kind, kindModifiers: quickInfo.kindModifiers, - start: compilerService.host.positionToLineCol(file, quickInfo.textSpan.start), - end: compilerService.host.positionToLineCol(file, ts.textSpanEnd(quickInfo.textSpan)), + start: compilerService.host.positionToLineOffset(file, quickInfo.textSpan.start), + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(quickInfo.textSpan)), displayString: displayString, documentation: docString, }; } - getFormattingEditsForRange(line: number, col: number, endLine: number, endCol: number, fileName: string): protocol.CodeEdit[] { + getFormattingEditsForRange(line: number, offset: number, endLine: number, endOffset: number, fileName: string): protocol.CodeEdit[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (!project) { @@ -421,25 +437,26 @@ module ts.server { } var compilerService = project.compilerService; - var startPosition = compilerService.host.lineColToPosition(file, line, col); - var endPosition = compilerService.host.lineColToPosition(file, endLine, endCol); + var startPosition = compilerService.host.lineOffsetToPosition(file, line, offset); + var endPosition = compilerService.host.lineOffsetToPosition(file, endLine, endOffset); // TODO: avoid duplicate code (with formatonkey) - var edits = compilerService.languageService.getFormattingEditsForRange(file, startPosition, endPosition, compilerService.formatCodeOptions); + var edits = compilerService.languageService.getFormattingEditsForRange(file, startPosition, endPosition, + this.projectService.getFormatCodeOptions(file)); if (!edits) { return undefined; } return edits.map((edit) => { return { - start: compilerService.host.positionToLineCol(file, edit.span.start), - end: compilerService.host.positionToLineCol(file, ts.textSpanEnd(edit.span)), + start: compilerService.host.positionToLineOffset(file, edit.span.start), + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(edit.span)), newText: edit.newText ? edit.newText : "" }; }); } - getFormattingEditsAfterKeystroke(line: number, col: number, key: string, fileName: string): protocol.CodeEdit[] { + getFormattingEditsAfterKeystroke(line: number, offset: number, key: string, fileName: string): protocol.CodeEdit[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); @@ -448,21 +465,52 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var formatOptions = this.projectService.getFormatCodeOptions(file); var edits = compilerService.languageService.getFormattingEditsAfterKeystroke(file, position, key, - compilerService.formatCodeOptions); + formatOptions); + // Check whether we should auto-indent. This will be when + // the position is on a line containing only whitespace. + // This should leave the edits returned from + // getFormattingEditsAfterKeytroke either empty or pertaining + // only to the previous line. If all this is true, then + // add edits necessary to properly indent the current line. if ((key == "\n") && ((!edits) || (edits.length == 0) || allEditsBeforePos(edits, position))) { - // TODO: get these options from host - var editorOptions: ts.EditorOptions = { - IndentSize: 4, - TabSize: 4, - NewLineCharacter: "\n", - ConvertTabsToSpaces: true, - }; - var indentPosition = compilerService.languageService.getIndentationAtPosition(file, position, editorOptions); - var spaces = generateSpaces(indentPosition); - if (indentPosition > 0) { - edits.push({ span: ts.createTextSpanFromBounds(position, position), newText: spaces }); + var scriptInfo = compilerService.host.getScriptInfo(file); + if (scriptInfo) { + var lineInfo = scriptInfo.getLineInfo(line); + if (lineInfo && (lineInfo.leaf) && (lineInfo.leaf.text)) { + var lineText = lineInfo.leaf.text; + if (lineText.search("\\S") < 0) { + // TODO: get these options from host + var editorOptions: ts.EditorOptions = { + IndentSize: formatOptions.IndentSize, + TabSize: formatOptions.TabSize, + NewLineCharacter: "\n", + ConvertTabsToSpaces: true, + }; + var indentPosition = + compilerService.languageService.getIndentationAtPosition(file, position, editorOptions); + for (var i = 0, len = lineText.length; i < len; i++) { + if (lineText.charAt(i) == " ") { + indentPosition--; + } + else { + break; + } + } + if (indentPosition > 0) { + var spaces = generateSpaces(indentPosition); + edits.push({ span: ts.createTextSpanFromBounds(position, position), newText: spaces }); + } + else if (indentPosition < 0) { + edits.push({ + span: ts.createTextSpanFromBounds(position, position - indentPosition), + newText: "" + }); + } + } + } } } @@ -472,16 +520,16 @@ module ts.server { return edits.map((edit) => { return { - start: compilerService.host.positionToLineCol(file, + start: compilerService.host.positionToLineOffset(file, edit.span.start), - end: compilerService.host.positionToLineCol(file, + end: compilerService.host.positionToLineOffset(file, ts.textSpanEnd(edit.span)), newText: edit.newText ? edit.newText : "" }; }); } - - getCompletions(line: number, col: number, prefix: string, fileName: string): protocol.CompletionEntry[] { + + getCompletions(line: number, offset: number, prefix: string, fileName: string): protocol.CompletionEntry[] { if (!prefix) { prefix = ""; } @@ -492,7 +540,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var completions = compilerService.languageService.getCompletionsAtPosition(file, position); if (!completions) { @@ -500,14 +548,14 @@ module ts.server { } return completions.entries.reduce((result: protocol.CompletionEntry[], entry: ts.CompletionEntry) => { - if (completions.isMemberCompletion || entry.name.indexOf(prefix) == 0) { + if (completions.isMemberCompletion || (entry.name.toLowerCase().indexOf(prefix.toLowerCase()) == 0)) { result.push(entry); } return result; - }, []); + }, []).sort((a, b) => a.name.localeCompare(b.name)); } - getCompletionEntryDetails(line: number, col: number, + getCompletionEntryDetails(line: number, offset: number, entryNames: string[], fileName: string): protocol.CompletionEntryDetails[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); @@ -516,7 +564,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); return entryNames.reduce((accum: protocol.CompletionEntryDetails[], entryName: string) => { var details = compilerService.languageService.getCompletionEntryDetails(file, position, entryName); @@ -527,6 +575,35 @@ module ts.server { }, []); } + getSignatureHelpItems(line: number, offset: number, fileName: string): protocol.SignatureHelpItems { + var file = ts.normalizePath(fileName); + var project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + + var compilerService = project.compilerService; + var position = compilerService.host.lineOffsetToPosition(file, line, offset); + var helpItems = compilerService.languageService.getSignatureHelpItems(file, position); + if (!helpItems) { + return undefined; + } + + var span = helpItems.applicableSpan; + var result: protocol.SignatureHelpItems = { + items: helpItems.items, + applicableSpan: { + start: compilerService.host.positionToLineOffset(file, span.start), + end: compilerService.host.positionToLineOffset(file, span.start + span.length) + }, + selectedItemIndex: helpItems.selectedItemIndex, + argumentIndex: helpItems.argumentIndex, + argumentCount: helpItems.argumentCount, + } + + return result; + } + getDiagnostics(delay: number, fileNames: string[]) { var checkList = fileNames.reduce((accum: PendingErrorCheck[], fileName: string) => { fileName = ts.normalizePath(fileName); @@ -542,21 +619,18 @@ module ts.server { } } - change(line: number, col: number, endLine: number, endCol: number, insertString: string, fileName: string) { + change(line: number, offset: number, endLine: number, endOffset: number, insertString: string, fileName: string) { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (project) { var compilerService = project.compilerService; - var start = compilerService.host.lineColToPosition(file, line, col); - var end = compilerService.host.lineColToPosition(file, endLine, endCol); + var start = compilerService.host.lineOffsetToPosition(file, line, offset); + var end = compilerService.host.lineOffsetToPosition(file, endLine, endOffset); if (start >= 0) { compilerService.host.editScript(file, start, end, insertString); this.changeSeq++; } - // update project structure on idle commented out - // until we can have the host return only the root files - // from getScriptFileNames() - //this.updateProjectStructure(this.changeSeq, (n) => n == this.changeSeq); + this.updateProjectStructure(this.changeSeq, (n) => n == this.changeSeq); } } @@ -567,7 +641,7 @@ module ts.server { if (project) { this.changeSeq++; // make sure no changes happen before this one is finished - project.compilerService.host.reloadScript(file, tmpfile,() => { + project.compilerService.host.reloadScript(file, tmpfile, () => { this.output(undefined, CommandNames.Reload, reqSeq); }); } @@ -600,8 +674,8 @@ module ts.server { kind: item.kind, kindModifiers: item.kindModifiers, spans: item.spans.map(span => ({ - start: compilerService.host.positionToLineCol(fileName, span.start), - end: compilerService.host.positionToLineCol(fileName, ts.textSpanEnd(span)) + start: compilerService.host.positionToLineOffset(fileName, span.start), + end: compilerService.host.positionToLineOffset(fileName, ts.textSpanEnd(span)) })), childItems: this.decorateNavigationBarItem(project, fileName, item.childItems) })); @@ -637,8 +711,8 @@ module ts.server { } return navItems.map((navItem) => { - var start = compilerService.host.positionToLineCol(navItem.fileName, navItem.textSpan.start); - var end = compilerService.host.positionToLineCol(navItem.fileName, ts.textSpanEnd(navItem.textSpan)); + var start = compilerService.host.positionToLineOffset(navItem.fileName, navItem.textSpan.start); + var end = compilerService.host.positionToLineOffset(navItem.fileName, ts.textSpanEnd(navItem.textSpan)); var bakedItem: protocol.NavtoItem = { name: navItem.name, kind: navItem.kind, @@ -662,7 +736,7 @@ module ts.server { }); } - getBraceMatching(line: number, col: number, fileName: string): protocol.TextSpan[] { + getBraceMatching(line: number, offset: number, fileName: string): protocol.TextSpan[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); @@ -671,7 +745,7 @@ module ts.server { } var compilerService = project.compilerService; - var position = compilerService.host.lineColToPosition(file, line, col); + var position = compilerService.host.lineOffsetToPosition(file, line, offset); var spans = compilerService.languageService.getBraceMatchingAtPosition(file, position); if (!spans) { @@ -679,12 +753,16 @@ module ts.server { } return spans.map(span => ({ - start: compilerService.host.positionToLineCol(file, span.start), - end: compilerService.host.positionToLineCol(file, span.start + span.length) + start: compilerService.host.positionToLineOffset(file, span.start), + end: compilerService.host.positionToLineOffset(file, span.start + span.length) })); } onMessage(message: string) { + if (this.logger.isVerbose()) { + this.logger.info("request: " + message); + var start = process.hrtime(); + } try { var request = JSON.parse(message); var response: any; @@ -693,51 +771,57 @@ module ts.server { switch (request.command) { case CommandNames.Definition: { var defArgs = request.arguments; - response = this.getDefinition(defArgs.line, defArgs.col, defArgs.file); + response = this.getDefinition(defArgs.line, defArgs.offset, defArgs.file); break; } case CommandNames.References: { var refArgs = request.arguments; - response = this.getReferences(refArgs.line, refArgs.col, refArgs.file); + response = this.getReferences(refArgs.line, refArgs.offset, refArgs.file); break; } case CommandNames.Rename: { var renameArgs = request.arguments; - response = this.getRenameLocations(renameArgs.line, renameArgs.col, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings); + response = this.getRenameLocations(renameArgs.line, renameArgs.offset, renameArgs.file, renameArgs.findInComments, renameArgs.findInStrings); break; } case CommandNames.Open: { - var openArgs = request.arguments; + var openArgs = request.arguments; this.openClientFile(openArgs.file); responseRequired = false; break; } case CommandNames.Quickinfo: { var quickinfoArgs = request.arguments; - response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.col, quickinfoArgs.file); + response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.offset, quickinfoArgs.file); break; } case CommandNames.Format: { var formatArgs = request.arguments; - response = this.getFormattingEditsForRange(formatArgs.line, formatArgs.col, formatArgs.endLine, formatArgs.endCol, formatArgs.file); + response = this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file); break; } case CommandNames.Formatonkey: { var formatOnKeyArgs = request.arguments; - response = this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.col, formatOnKeyArgs.key, formatOnKeyArgs.file); + response = this.getFormattingEditsAfterKeystroke(formatOnKeyArgs.line, formatOnKeyArgs.offset, formatOnKeyArgs.key, formatOnKeyArgs.file); break; } case CommandNames.Completions: { var completionsArgs = request.arguments; - response = this.getCompletions(request.arguments.line, request.arguments.col, completionsArgs.prefix, request.arguments.file); + response = this.getCompletions(completionsArgs.line, completionsArgs.offset, completionsArgs.prefix, completionsArgs.file); break; } case CommandNames.CompletionDetails: { var completionDetailsArgs = request.arguments; - response = this.getCompletionEntryDetails(request.arguments.line, request.arguments.col, completionDetailsArgs.entryNames, - request.arguments.file); + response = + this.getCompletionEntryDetails(completionDetailsArgs.line,completionDetailsArgs.offset, + completionDetailsArgs.entryNames,completionDetailsArgs.file); break; } + case CommandNames.SignatureHelp: { + var signatureHelpArgs = request.arguments; + response = this.getSignatureHelpItems(signatureHelpArgs.line, signatureHelpArgs.offset, signatureHelpArgs.file); + break; + } case CommandNames.Geterr: { var geterrArgs = request.arguments; response = this.getDiagnostics(geterrArgs.delay, geterrArgs.files); @@ -746,14 +830,22 @@ module ts.server { } case CommandNames.Change: { var changeArgs = request.arguments; - this.change(changeArgs.line, changeArgs.col, changeArgs.endLine, changeArgs.endCol, + this.change(changeArgs.line, changeArgs.offset, changeArgs.endLine, changeArgs.endOffset, changeArgs.insertString, changeArgs.file); responseRequired = false; break; } + case CommandNames.Configure: { + var configureArgs = request.arguments; + this.projectService.setHostConfiguration(configureArgs); + this.output(undefined, CommandNames.Configure, request.seq); + responseRequired = false; + break; + } case CommandNames.Reload: { var reloadArgs = request.arguments; this.reload(reloadArgs.file, reloadArgs.tmpfile, request.seq); + responseRequired = false; break; } case CommandNames.Saveto: { @@ -775,7 +867,7 @@ module ts.server { } case CommandNames.Brace: { var braceArguments = request.arguments; - response = this.getBraceMatching(braceArguments.line, braceArguments.col, braceArguments.file); + response = this.getBraceMatching(braceArguments.line, braceArguments.offset, braceArguments.file); break; } case CommandNames.NavBar: { @@ -790,13 +882,23 @@ module ts.server { } } + if (this.logger.isVerbose()) { + var elapsed = process.hrtime(start); + var seconds = elapsed[0] + var nanoseconds = elapsed[1]; + var elapsedMs = ((1e9 * seconds) + nanoseconds)/1000000.0; + var leader = "Elapsed time (in milliseconds)"; + if (!responseRequired) { + leader = "Async elapsed time (in milliseconds)"; + } + this.logger.msg(leader + ": " + elapsedMs.toFixed(4).toString(), "Perf"); + } if (response) { this.output(response, request.command, request.seq); } else if (responseRequired) { this.output(undefined, request.command, request.seq, "No content available."); } - } catch (err) { if (err instanceof OperationCanceledException) { // Handle cancellation exceptions diff --git a/src/server/tsconfig.json b/src/server/tsconfig.json new file mode 100644 index 00000000000..2c8538c61e3 --- /dev/null +++ b/src/server/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "commonjs", + "noImplicitAny": true, + "removeComments": true, + "preserveConstEnums": true, + "out": "../../built/local/tsserver.js", + "sourceMap": true + }, + "files": [ + "node.d.ts", + "editorServices.ts", + "protocol.d.ts", + "server.ts", + "session.ts" + ] +} diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index a4943705e72..395141cc4cc 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -13,13 +13,13 @@ module ts.BreakpointResolver { return undefined; } - var tokenAtLocation = getTokenAtPosition(sourceFile, position); - var lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; + let tokenAtLocation = getTokenAtPosition(sourceFile, position); + let lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart()).line > lineOfPosition) { // Get previous token if the token is returned starts on new line - // eg: var x =10; |--- cursor is here - // var y = 10; - // token at position will return var keyword on second line as the token but we would like to use + // eg: let x =10; |--- cursor is here + // let y = 10; + // token at position will return let keyword on second line as the token but we would like to use // token on same line if trailing trivia (comments or white spaces on same line) part of the last token on that line tokenAtLocation = findPrecedingToken(tokenAtLocation.pos, sourceFile); @@ -173,12 +173,24 @@ module ts.BreakpointResolver { return textSpan(node, (node).expression); case SyntaxKind.ExportAssignment: + if (!(node).expression) { + return undefined; + } + // span on export = id - return textSpan(node, (node).exportName); + return textSpan(node, (node).expression); case SyntaxKind.ImportEqualsDeclaration: // import statement without including semicolon - return textSpan(node,(node).moduleReference); + return textSpan(node, (node).moduleReference); + + case SyntaxKind.ImportDeclaration: + // import statement without including semicolon + return textSpan(node, (node).moduleSpecifier); + + case SyntaxKind.ExportDeclaration: + // import statement without including semicolon + return textSpan(node, (node).moduleSpecifier); case SyntaxKind.ModuleDeclaration: // span on complete module if it is instantiated @@ -251,7 +263,7 @@ module ts.BreakpointResolver { } // return type of function go to previous token - if (isAnyFunction(node.parent) && (node.parent).type === node) { + if (isFunctionLike(node.parent) && (node.parent).type === node) { return spanInPreviousNode(node); } @@ -267,9 +279,9 @@ module ts.BreakpointResolver { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === SyntaxKind.VariableStatement; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === SyntaxKind.ForStatement && contains(((variableDeclaration.parent.parent).initializer).declarations, variableDeclaration); - var declarations = isParentVariableStatement + let isParentVariableStatement = variableDeclaration.parent.parent.kind === SyntaxKind.VariableStatement; + let isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === SyntaxKind.ForStatement && contains(((variableDeclaration.parent.parent).initializer).declarations, variableDeclaration); + let declarations = isParentVariableStatement ? (variableDeclaration.parent.parent).declarationList.declarations : isDeclarationOfForStatement ? ((variableDeclaration.parent.parent).initializer).declarations @@ -279,12 +291,12 @@ module ts.BreakpointResolver { if (variableDeclaration.initializer || (variableDeclaration.flags & NodeFlags.Export)) { if (declarations && declarations[0] === variableDeclaration) { if (isParentVariableStatement) { - // First declaration - include var keyword + // First declaration - include let keyword return textSpan(variableDeclaration.parent, variableDeclaration); } else { Debug.assert(isDeclarationOfForStatement); - // Include var keyword from for statement declarations in the span + // Include let keyword from for statement declarations in the span return textSpan(findPrecedingToken(variableDeclaration.pos, sourceFile, variableDeclaration.parent), variableDeclaration); } } @@ -295,7 +307,7 @@ module ts.BreakpointResolver { } else if (declarations && declarations[0] !== variableDeclaration) { // If we cant set breakpoint on this declaration, set it on previous one - var indexOfCurrentDeclaration = indexOf(declarations, variableDeclaration); + let indexOfCurrentDeclaration = indexOf(declarations, variableDeclaration); return spanInVariableDeclaration(declarations[indexOfCurrentDeclaration - 1]); } } @@ -311,8 +323,8 @@ module ts.BreakpointResolver { return textSpan(parameter); } else { - var functionDeclaration = parameter.parent; - var indexOfParameter = indexOf(functionDeclaration.parameters, parameter); + let functionDeclaration = parameter.parent; + let indexOfParameter = indexOf(functionDeclaration.parameters, parameter); if (indexOfParameter) { // Not a first parameter, go to previous parameter return spanInParameterDeclaration(functionDeclaration.parameters[indexOfParameter - 1]); @@ -345,7 +357,7 @@ module ts.BreakpointResolver { } function spanInFunctionBlock(block: Block): TextSpan { - var nodeForSpanInBlock = block.statements.length ? block.statements[0] : block.getLastToken(); + let nodeForSpanInBlock = block.statements.length ? block.statements[0] : block.getLastToken(); if (canFunctionHaveSpanInWholeDeclaration(block.parent)) { return spanInNodeIfStartsOnSameLine(block.parent, nodeForSpanInBlock); } @@ -379,7 +391,7 @@ module ts.BreakpointResolver { function spanInForStatement(forStatement: ForStatement): TextSpan { if (forStatement.initializer) { if (forStatement.initializer.kind === SyntaxKind.VariableDeclarationList) { - var variableDeclarationList = forStatement.initializer; + let variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); } @@ -401,15 +413,15 @@ module ts.BreakpointResolver { function spanInOpenBraceToken(node: Node): TextSpan { switch (node.parent.kind) { case SyntaxKind.EnumDeclaration: - var enumDeclaration = node.parent; + let enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); case SyntaxKind.ClassDeclaration: - var classDeclaration = node.parent; + let classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case SyntaxKind.SwitchStatement: - return spanInNodeIfStartsOnSameLine(node.parent, (node.parent).clauses[0]); + case SyntaxKind.CaseBlock: + return spanInNodeIfStartsOnSameLine(node.parent.parent, (node.parent).clauses[0]); } // Default to parent node @@ -439,10 +451,10 @@ module ts.BreakpointResolver { case SyntaxKind.CatchClause: return spanInNode((node.parent).statements[(node.parent).statements.length - 1]);; - case SyntaxKind.SwitchStatement: + case SyntaxKind.CaseBlock: // breakpoint in last statement of the last clause - var switchStatement = node.parent; - var lastClause = switchStatement.clauses[switchStatement.clauses.length - 1]; + let caseBlock = node.parent; + let lastClause = caseBlock.clauses[caseBlock.clauses.length - 1]; if (lastClause) { return spanInNode(lastClause.statements[lastClause.statements.length - 1]); } @@ -491,7 +503,7 @@ module ts.BreakpointResolver { function spanInColonToken(node: Node): TextSpan { // Is this : specifying return annotation of the function declaration - if (isAnyFunction(node.parent) || node.parent.kind === SyntaxKind.PropertyAssignment) { + if (isFunctionLike(node.parent) || node.parent.kind === SyntaxKind.PropertyAssignment) { return spanInPreviousNode(node); } diff --git a/src/services/compiler/declarationEmitter.ts b/src/services/compiler/declarationEmitter.ts deleted file mode 100644 index 460904b7e88..00000000000 --- a/src/services/compiler/declarationEmitter.ts +++ /dev/null @@ -1,1122 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -module TypeScript { - export class TextWriter { - private contents = ""; - public onNewLine = true; - constructor(private name: string, private writeByteOrderMark: boolean, private outputFileType: OutputFileType) { - } - - public Write(s: string) { - this.contents += s; - this.onNewLine = false; - } - - public WriteLine(s: string) { - this.contents += s; - this.contents += TypeScript.newLine(); - this.onNewLine = true; - } - - public Close(): void { - } - - public getOutputFile(): OutputFile { - return new OutputFile(this.name, this.writeByteOrderMark, this.contents, this.outputFileType); - } - } - - export class DeclarationEmitter { - private declFile: TextWriter = null; - private indenter = new Indenter(); - private emittedReferencePaths = false; - - constructor(private emittingFileName: string, - public document: Document, - private compiler: TypeScriptCompiler, - private emitOptions: EmitOptions, - private semanticInfoChain: SemanticInfoChain) { - this.declFile = new TextWriter(emittingFileName, this.document.byteOrderMark !== ByteOrderMark.None, OutputFileType.Declaration); - } - - public getOutputFile(): OutputFile { - return this.declFile.getOutputFile(); - } - - public emitDeclarations(sourceUnit: SourceUnitSyntax) { - this.emitDeclarationsForSourceUnit(sourceUnit); - } - - private emitDeclarationsForList(list: ISyntaxNodeOrToken[]) { - for (var i = 0, n = list.length; i < n; i++) { - this.emitDeclarationsForAST(list[i]); - } - } - - private emitSeparatedList(list: ISyntaxNodeOrToken[]) { - for (var i = 0, n = list.length; i < n; i++) { - this.emitDeclarationsForAST(list[i]); - } - } - - private emitDeclarationsForAST(ast: ISyntaxElement) { - switch (ast.kind()) { - case SyntaxKind.VariableStatement: - return this.emitDeclarationsForVariableStatement(ast); - case SyntaxKind.PropertySignature: - return this.emitPropertySignature(ast); - case SyntaxKind.VariableDeclarator: - return this.emitVariableDeclarator(ast, true, true); - case SyntaxKind.MemberVariableDeclaration: - return this.emitDeclarationsForMemberVariableDeclaration(ast); - case SyntaxKind.ConstructorDeclaration: - return this.emitDeclarationsForConstructorDeclaration(ast); - case SyntaxKind.GetAccessor: - return this.emitDeclarationsForGetAccessor(ast); - case SyntaxKind.SetAccessor: - return this.emitDeclarationsForSetAccessor(ast); - case SyntaxKind.IndexMemberDeclaration: - return this.emitIndexMemberDeclaration(ast); - case SyntaxKind.IndexSignature: - return this.emitIndexSignature(ast); - case SyntaxKind.CallSignature: - return this.emitCallSignature(ast); - case SyntaxKind.ConstructSignature: - return this.emitConstructSignature(ast); - case SyntaxKind.MethodSignature: - return this.emitMethodSignature(ast); - case SyntaxKind.FunctionDeclaration: - return this.emitDeclarationsForFunctionDeclaration(ast); - case SyntaxKind.MemberFunctionDeclaration: - return this.emitMemberFunctionDeclaration(ast); - case SyntaxKind.ClassDeclaration: - return this.emitDeclarationsForClassDeclaration(ast); - case SyntaxKind.InterfaceDeclaration: - return this.emitDeclarationsForInterfaceDeclaration(ast); - case SyntaxKind.ImportDeclaration: - return this.emitDeclarationsForImportDeclaration(ast); - case SyntaxKind.ModuleDeclaration: - return this.emitDeclarationsForModuleDeclaration(ast); - case SyntaxKind.EnumDeclaration: - return this.emitDeclarationsForEnumDeclaration(ast); - case SyntaxKind.ExportAssignment: - return this.emitDeclarationsForExportAssignment(ast); - } - } - - private getIndentString(declIndent = false) { - return this.indenter.getIndent(); - } - - private emitIndent() { - this.declFile.Write(this.getIndentString()); - } - - private canEmitDeclarations(declAST: ISyntaxElement): boolean { - var container = DeclarationEmitter.getEnclosingContainer(declAST); - if (container.kind() === SyntaxKind.ModuleDeclaration || container.kind() === SyntaxKind.SourceUnit) { - var pullDecl = this.semanticInfoChain.getDeclForAST(declAST); - if (!hasFlag(pullDecl.flags, PullElementFlags.Exported)) { - var start = new Date().getTime(); - var declSymbol = this.semanticInfoChain.getSymbolForAST(declAST); - var result = declSymbol && declSymbol.isExternallyVisible(); - TypeScript.declarationEmitIsExternallyVisibleTime += new Date().getTime() - start; - - return result; - } - } - - return true; - } - - private getDeclFlagsString(pullDecl: PullDecl, typeString: string) { - var result = this.getIndentString(); - var pullFlags = pullDecl.flags; - - // Static/public/private/global declare - if (hasFlag(pullFlags, PullElementFlags.Static)) { - if (hasFlag(pullFlags, PullElementFlags.Private)) { - result += "private "; - } - result += "static "; - } - else { - if (hasFlag(pullFlags, PullElementFlags.Private)) { - result += "private "; - } - else if (hasFlag(pullFlags, PullElementFlags.Public)) { - result += "public "; - } - else { - var emitDeclare = !hasFlag(pullFlags, PullElementFlags.Exported); - - var declAST = this.semanticInfoChain.getASTForDecl(pullDecl); - var container = DeclarationEmitter.getEnclosingContainer(declAST); - - var isExternalModule = container.kind() === SyntaxKind.SourceUnit && this.document.syntaxTree().isExternalModule(); - - // Emit export only for global export statements. - // The container for this would be dynamic module which is whole file - if (isExternalModule && hasFlag(pullFlags, PullElementFlags.Exported)) { - result += "export "; - emitDeclare = true; - } - - // Emit declare only in global context - if (isExternalModule || container.kind() === SyntaxKind.SourceUnit) { - // Emit declare if not interface declaration or import declaration && is not from module - if (emitDeclare && typeString !== "interface" && typeString !== "import") { - result += "declare "; - } - } - - result += typeString + " "; - } - } - - return result; - } - - private emitDeclFlags(declarationAST: ISyntaxElement, typeString: string) { - this.declFile.Write(this.getDeclFlagsString(this.semanticInfoChain.getDeclForAST(declarationAST), typeString)); - } - - private emitTypeNamesMember(memberName: MemberName, emitIndent: boolean = false) { - if (memberName.prefix === "{ ") { - if (emitIndent) { - this.emitIndent(); - } - - this.declFile.WriteLine("{"); - this.indenter.increaseIndent(); - emitIndent = true; - } - else if (memberName.prefix !== "") { - if (emitIndent) { - this.emitIndent(); - } - - this.declFile.Write(memberName.prefix); - emitIndent = false; - } - - if (memberName.isString()) { - if (emitIndent) { - this.emitIndent(); - } - - this.declFile.Write((memberName).text); - } - else if (memberName.isArray()) { - var ar = memberName; - for (var index = 0; index < ar.entries.length; index++) { - this.emitTypeNamesMember(ar.entries[index], emitIndent); - if (ar.delim === "; ") { - this.declFile.WriteLine(";"); - } - } - } - - if (memberName.suffix === "}") { - this.indenter.decreaseIndent(); - this.emitIndent(); - this.declFile.Write(memberName.suffix); - } - else { - this.declFile.Write(memberName.suffix); - } - } - - private emitTypeSignature(ast: ISyntaxElement, type: PullTypeSymbol) { - var declarationContainerAst = DeclarationEmitter.getEnclosingContainer(ast); - - var start = new Date().getTime(); - var declarationContainerDecl = this.semanticInfoChain.getDeclForAST(declarationContainerAst); - - var declarationPullSymbol = declarationContainerDecl.getSymbol(this.semanticInfoChain); - TypeScript.declarationEmitTypeSignatureTime += new Date().getTime() - start; - - var isNotAGenericType = ast.kind() !== SyntaxKind.GenericType; - - var typeNameMembers = type.getScopedNameEx( - declarationPullSymbol, - /*skipTypeParametersInName?*/ false, - /*useConstraintInName?*/ false, - /*getPrettyTypeName?*/ false, - /*getTypeParamMarkerInfo?*/ false, - /*skipInternalAliasName?*/ false, - /*shouldAllowArrayType:*/ isNotAGenericType); - this.emitTypeNamesMember(typeNameMembers); - } - - private emitComment(comment: Comment) { - var text = getTrimmedTextLines(comment); - if (this.declFile.onNewLine) { - this.emitIndent(); - } - else if (comment.kind() !== SyntaxKind.MultiLineCommentTrivia) { - this.declFile.WriteLine(""); - this.emitIndent(); - } - - this.declFile.Write(text[0]); - - for (var i = 1; i < text.length; i++) { - this.declFile.WriteLine(""); - this.emitIndent(); - this.declFile.Write(text[i]); - } - - if (comment.endsLine || comment.kind() !== SyntaxKind.MultiLineCommentTrivia) { - this.declFile.WriteLine(""); - } - else { - this.declFile.Write(" "); - } - } - - private text() { - return this.document.syntaxTree().text; - } - - private emitDeclarationComments(ast: ISyntaxElement, endLine?: boolean): void; - private emitDeclarationComments(astOrSymbol: any, endLine = true) { - if (this.emitOptions.compilationSettings().removeComments()) { - return; - } - - var declComments: Comment[] = astOrSymbol.docComments ? astOrSymbol.docComments() : ASTHelpers.docComments(astOrSymbol, this.text()); - this.writeDeclarationComments(declComments, endLine); - } - - private writeDeclarationComments(declComments: Comment[], endLine = true) { - if (declComments) { - var wroteComment = false; - for (var i = 0; i < declComments.length; i++) { - if (ASTHelpers.isDocComment(declComments[i])) { - this.emitComment(declComments[i]); - wroteComment = true; - } - } - - if (wroteComment) { - if (endLine) { - if (!this.declFile.onNewLine) { - this.declFile.WriteLine(""); - } - } - else { - if (this.declFile.onNewLine) { - this.emitIndent(); - } - } - } - } - } - - private emitTypeOfVariableDeclaratorOrParameter(boundDecl: ISyntaxElement) { - var start = new Date().getTime(); - var decl = this.semanticInfoChain.getDeclForAST(boundDecl); - var pullSymbol = decl.getSymbol(this.semanticInfoChain); - TypeScript.declarationEmitGetBoundDeclTypeTime += new Date().getTime() - start; - - var type = pullSymbol.type; - Debug.assert(type); - - this.declFile.Write(": "); - this.emitTypeSignature(boundDecl, type); - } - - private emitPropertySignature(varDecl: PropertySignatureSyntax): void { - this.emitDeclarationComments(varDecl); - this.emitIndent(); - this.declFile.Write(varDecl.propertyName.text()); - if (varDecl.questionToken) { - this.declFile.Write("?"); - } - - this.emitTypeOfVariableDeclaratorOrParameter(varDecl); - - this.declFile.WriteLine(";"); - } - - private emitVariableDeclarator(varDecl: VariableDeclaratorSyntax, isFirstVarInList: boolean, isLastVarInList: boolean) { - if (this.canEmitDeclarations(varDecl)) { - this.emitDeclarationComments(varDecl); - // If it is var list of form var a, b, c = emit it only if count > 0 - which will be when emitting first var - // If it is var list of form var a = varList count will be 0 - if (isFirstVarInList) { - this.emitDeclFlags(varDecl, "var"); - } - - this.declFile.Write(varDecl.propertyName.text()); - - if (!hasModifier(ASTHelpers.getVariableDeclaratorModifiers(varDecl), PullElementFlags.Private)) { - this.emitTypeOfVariableDeclaratorOrParameter(varDecl); - } - - // Write ; or , - if (isLastVarInList) { - this.declFile.WriteLine(";"); - } - else { - this.declFile.Write(", "); - } - } - } - - private emitClassElementModifiers(modifiers: ISyntaxToken[]): void { - if (hasModifier(modifiers, PullElementFlags.Static)) { - if (hasModifier(modifiers, PullElementFlags.Private)) { - this.declFile.Write("private "); - } - this.declFile.Write("static "); - } - else { - if (hasModifier(modifiers, PullElementFlags.Private)) { - this.declFile.Write("private "); - } - else { - this.declFile.Write("public "); - } - } - } - - private emitDeclarationsForMemberVariableDeclaration(varDecl: MemberVariableDeclarationSyntax) { - if (this.canEmitDeclarations(varDecl)) { - this.emitDeclarationComments(varDecl); - - this.declFile.Write(this.getIndentString()); - this.emitClassElementModifiers(varDecl.modifiers);; - - this.declFile.Write(varDecl.variableDeclarator.propertyName.text()); - - if (!hasModifier(varDecl.modifiers, PullElementFlags.Private)) { - this.emitTypeOfVariableDeclaratorOrParameter(varDecl); - } - - this.declFile.WriteLine(";"); - } - } - - private emitDeclarationsForVariableStatement(variableStatement: VariableStatementSyntax) { - this.emitDeclarationsForVariableDeclaration(variableStatement.variableDeclaration); - } - - private emitDeclarationsForVariableDeclaration(variableDeclaration: VariableDeclarationSyntax) { - var varListCount = variableDeclaration.variableDeclarators.length; - for (var i = 0; i < varListCount; i++) { - this.emitVariableDeclarator(variableDeclaration.variableDeclarators[i], i === 0, i === varListCount - 1); - } - } - - private parameterIsOptional(parameter: ParameterSyntax) { - return parameter.questionToken !== null || parameter.equalsValueClause !== null; - } - - private emitParameter(argDecl: ParameterSyntax, isPrivate: boolean) { - this.indenter.increaseIndent(); - - this.emitDeclarationComments(argDecl, false); - this.declFile.Write(argDecl.identifier.text()); - if (this.parameterIsOptional(argDecl)) { - this.declFile.Write("?"); - } - - this.indenter.decreaseIndent(); - - if (!isPrivate) { - this.emitTypeOfVariableDeclaratorOrParameter(argDecl); - } - } - - private isOverloadedCallSignature(funcDecl: ISyntaxElement) { - var start = new Date().getTime(); - var functionDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - var funcSymbol = functionDecl.getSymbol(this.semanticInfoChain); - TypeScript.declarationEmitIsOverloadedCallSignatureTime += new Date().getTime() - start; - - var funcTypeSymbol = funcSymbol.type; - var signatures = funcTypeSymbol.getCallSignatures(); - var result = signatures && signatures.length > 1; - - return result; - } - - private emitDeclarationsForConstructorDeclaration(funcDecl: ConstructorDeclarationSyntax) { - var start = new Date().getTime(); - var funcSymbol = this.semanticInfoChain.getSymbolForAST(funcDecl); - - TypeScript.declarationEmitFunctionDeclarationGetSymbolTime += new Date().getTime() - start; - - var funcTypeSymbol = funcSymbol.type; - if (funcDecl.block) { - var constructSignatures = funcTypeSymbol.getConstructSignatures(); - if (constructSignatures && constructSignatures.length > 1) { - return; - } - //else if (this.isOverloadedCallSignature(funcDecl)) { - // // This means its implementation of overload signature. do not emit - // return; - //} - } - - this.emitDeclarationComments(funcDecl); - - this.emitIndent(); - this.declFile.Write("constructor"); - - this.emitParameterList(/*isPrivate:*/ false, funcDecl.callSignature.parameterList); - - this.declFile.WriteLine(";"); - } - - private emitParameterList(isPrivate: boolean, parameterList: ParameterListSyntax): void { - this.declFile.Write("("); - this.emitParameters(isPrivate, parameterList.parameters); - this.declFile.Write(")"); - } - - private emitParameters(isPrivate: boolean, parameterList: ParameterSyntax[]): void { - var hasLastParameterRestParameter = lastParameterIsRest(parameterList); - var argsLen = parameterList.length; - if (hasLastParameterRestParameter) { - argsLen--; - } - - for (var i = 0; i < argsLen; i++) { - this.emitParameter(parameterList[i], isPrivate); - if (i < (argsLen - 1)) { - this.declFile.Write(", "); - } - } - - if (hasLastParameterRestParameter) { - if (parameterList.length > 1) { - this.declFile.Write(", ..."); - } - else { - this.declFile.Write("..."); - } - - var index = parameterList.length - 1; - this.emitParameter(parameterList[index], isPrivate); - } - } - - private emitMemberFunctionDeclaration(funcDecl: MemberFunctionDeclarationSyntax) { - var start = new Date().getTime(); - var funcSymbol = this.semanticInfoChain.getSymbolForAST(funcDecl); - - TypeScript.declarationEmitFunctionDeclarationGetSymbolTime += new Date().getTime() - start; - - var funcTypeSymbol = funcSymbol.type; - if (funcDecl.block) { - var constructSignatures = funcTypeSymbol.getConstructSignatures(); - if (constructSignatures && constructSignatures.length > 1) { - return; - } - else if (this.isOverloadedCallSignature(funcDecl)) { - // This means its implementation of overload signature. do not emit - return; - } - } - else if (hasModifier(funcDecl.modifiers, PullElementFlags.Private) && this.isOverloadedCallSignature(funcDecl)) { - // Print only first overload of private function - var callSignatures = funcTypeSymbol.getCallSignatures(); - Debug.assert(callSignatures && callSignatures.length > 1); - var firstSignature = callSignatures[0].isDefinition() ? callSignatures[1] : callSignatures[0]; - var firstSignatureDecl = firstSignature.getDeclarations()[0]; - var firstFuncDecl = this.semanticInfoChain.getASTForDecl(firstSignatureDecl); - if (firstFuncDecl !== funcDecl) { - return; - } - } - - if (!this.canEmitDeclarations(funcDecl)) { - return; - } - - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - this.emitDeclarationComments(funcDecl); - - this.emitDeclFlags(funcDecl, "function"); - var id = funcDecl.propertyName.text(); - this.declFile.Write(id); - this.emitTypeParameters(funcDecl.callSignature.typeParameterList, funcSignature); - - var isPrivate = hasModifier(funcDecl.modifiers, PullElementFlags.Private); - - this.emitParameterList(isPrivate, funcDecl.callSignature.parameterList); - - if (!isPrivate) { - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - this.emitTypeSignature(funcDecl, returnType); - } - - this.declFile.WriteLine(";"); - } - - private emitCallSignature(funcDecl: CallSignatureSyntax): void { - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - - this.emitDeclarationComments(funcDecl); - - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - this.emitTypeParameters(funcDecl.typeParameterList, funcSignature); - - this.emitIndent(); - - this.emitParameterList(/*isPrivate:*/ false, funcDecl.parameterList); - - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - if (returnType) { - this.emitTypeSignature(funcDecl, returnType); - } - else { - this.declFile.Write("any"); - } - - this.declFile.WriteLine(";"); - } - - private emitConstructSignature(funcDecl: ConstructSignatureSyntax) { - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - - this.emitDeclarationComments(funcDecl); - - this.emitIndent(); - this.declFile.Write("new"); - - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - this.emitTypeParameters(funcDecl.callSignature.typeParameterList, funcSignature); - - this.emitParameterList(/*isPrivate:*/ false, funcDecl.callSignature.parameterList); - - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - if (returnType) { - this.emitTypeSignature(funcDecl, returnType); - } - else { - this.declFile.Write("any"); - } - - this.declFile.WriteLine(";"); - } - - private emitMethodSignature(funcDecl: MethodSignatureSyntax) { - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - - this.emitDeclarationComments(funcDecl); - - this.emitIndent(); - this.declFile.Write(funcDecl.propertyName.text()); - if (funcDecl.questionToken) { - this.declFile.Write("? "); - } - - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - this.emitTypeParameters(funcDecl.callSignature.typeParameterList, funcSignature); - - this.emitParameterList(/*isPrivate:*/ false, funcDecl.callSignature.parameterList); - - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - if (returnType) { - this.emitTypeSignature(funcDecl, returnType); - } - else { - this.declFile.Write("any"); - } - - this.declFile.WriteLine(";"); - } - - private emitDeclarationsForFunctionDeclaration(funcDecl: FunctionDeclarationSyntax) { - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - - var start = new Date().getTime(); - var funcSymbol = this.semanticInfoChain.getSymbolForAST(funcDecl); - - TypeScript.declarationEmitFunctionDeclarationGetSymbolTime += new Date().getTime() - start; - - if (funcDecl.block) { - var funcTypeSymbol = funcSymbol.type; - var constructSignatures = funcTypeSymbol.getConstructSignatures(); - if (constructSignatures && constructSignatures.length > 1) { - return; - } - else if (this.isOverloadedCallSignature(funcDecl)) { - // This means its implementation of overload signature. do not emit - return; - } - } - - if (!this.canEmitDeclarations(funcDecl)) { - return; - } - - this.emitDeclarationComments(funcDecl); - - var id = funcDecl.identifier.text(); - this.emitDeclFlags(funcDecl, "function"); - if (id !== "" || !funcDecl.identifier || funcDecl.identifier.text().length > 0) { - this.declFile.Write(id); - } - else if (funcPullDecl.kind === PullElementKind.ConstructSignature) { - this.declFile.Write("new"); - } - - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - this.emitTypeParameters(funcDecl.callSignature.typeParameterList, funcSignature); - - this.emitParameterList(/*isPrivate:*/ false, funcDecl.callSignature.parameterList); - - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - if (returnType) { - this.emitTypeSignature(funcDecl, returnType); - } - else { - this.declFile.Write("any"); - } - - this.declFile.WriteLine(";"); - } - - private emitIndexMemberDeclaration(funcDecl: IndexMemberDeclarationSyntax) { - this.emitDeclarationsForAST(funcDecl.indexSignature); - } - - private emitIndexSignature(funcDecl: IndexSignatureSyntax) { - if (!this.canEmitDeclarations(funcDecl)) { - return; - } - - this.emitDeclarationComments(funcDecl); - - this.emitIndent(); - this.declFile.Write("["); - this.emitParameters(/*isPrivate:*/ false, funcDecl.parameters); - this.declFile.Write("]"); - - var funcPullDecl = this.semanticInfoChain.getDeclForAST(funcDecl); - var funcSignature = funcPullDecl.getSignatureSymbol(this.semanticInfoChain); - var returnType = funcSignature.returnType; - this.declFile.Write(": "); - this.emitTypeSignature(funcDecl, returnType); - - this.declFile.WriteLine(";"); - } - - private emitBaseList(bases: INameSyntax[], useExtendsList: boolean) { - if (bases && (bases.length > 0)) { - var qual = useExtendsList ? "extends" : "implements"; - this.declFile.Write(" " + qual + " "); - var basesLen = bases.length; - for (var i = 0; i < basesLen; i++) { - if (i > 0) { - this.declFile.Write(", "); - } - var base = bases[i]; - var baseType = this.semanticInfoChain.getSymbolForAST(base); - this.emitTypeSignature(base, baseType); - } - } - } - - private emitAccessorDeclarationComments(funcDecl: ISyntaxElement) { - if (this.emitOptions.compilationSettings().removeComments()) { - return; - } - - var start = new Date().getTime(); - var accessors = PullHelpers.getGetterAndSetterFunction(funcDecl, this.semanticInfoChain); - TypeScript.declarationEmitGetAccessorFunctionTime += new Date().getTime() - start; - - var comments: Comment[] = []; - if (accessors.getter) { - comments = comments.concat(ASTHelpers.docComments(accessors.getter, this.text())); - } - if (accessors.setter) { - comments = comments.concat(ASTHelpers.docComments(accessors.setter, this.text())); - } - - this.writeDeclarationComments(comments); - } - - private emitDeclarationsForGetAccessor(funcDecl: GetAccessorSyntax): void { - this.emitMemberAccessorDeclaration(funcDecl, funcDecl.modifiers, funcDecl.propertyName); - } - - private emitDeclarationsForSetAccessor(funcDecl: SetAccessorSyntax): void { - this.emitMemberAccessorDeclaration(funcDecl, funcDecl.modifiers, funcDecl.propertyName); - } - - private emitMemberAccessorDeclaration(funcDecl: ISyntaxElement, modifiers: ISyntaxToken[], name: ISyntaxToken) { - var start = new Date().getTime(); - var accessorSymbol = PullHelpers.getAccessorSymbol(funcDecl, this.semanticInfoChain); - TypeScript.declarationEmitGetAccessorFunctionTime += new Date().getTime() - start; - - if (funcDecl.kind() === SyntaxKind.SetAccessor && accessorSymbol.getGetter()) { - // Setter is being used to emit the type info. - return; - } - - var isPrivate = hasModifier(modifiers, PullElementFlags.Private); - this.emitAccessorDeclarationComments(funcDecl); - this.declFile.Write(this.getIndentString()); - this.emitClassElementModifiers(modifiers); - this.declFile.Write(name.text()); - if (!isPrivate) { - this.declFile.Write(" : "); - var type = accessorSymbol.type; - this.emitTypeSignature(funcDecl, type); - } - this.declFile.WriteLine(";"); - } - - private emitClassMembersFromConstructorDefinition(funcDecl: ConstructorDeclarationSyntax) { - var argsLen = funcDecl.callSignature.parameterList.parameters.length; - if (lastParameterIsRest(funcDecl.callSignature.parameterList.parameters)) { - argsLen--; - } - - for (var i = 0; i < argsLen; i++) { - var parameter = funcDecl.callSignature.parameterList.parameters[i]; - var parameterDecl = this.semanticInfoChain.getDeclForAST(parameter); - if (hasFlag(parameterDecl.flags, PullElementFlags.PropertyParameter)) { - this.emitDeclarationComments(parameter); - this.declFile.Write(this.getIndentString()); - this.emitClassElementModifiers(parameter.modifiers); - this.declFile.Write(parameter.identifier.text()); - - if (!hasModifier(parameter.modifiers, PullElementFlags.Private)) { - this.emitTypeOfVariableDeclaratorOrParameter(parameter); - } - this.declFile.WriteLine(";"); - } - } - } - - private emitDeclarationsForClassDeclaration(classDecl: ClassDeclarationSyntax) { - if (!this.canEmitDeclarations(classDecl)) { - return; - } - - var className = classDecl.identifier.text(); - this.emitDeclarationComments(classDecl); - this.emitDeclFlags(classDecl, "class"); - this.declFile.Write(className); - - this.emitTypeParameters(classDecl.typeParameterList); - this.emitHeritageClauses(classDecl.heritageClauses); - this.declFile.WriteLine(" {"); - - this.indenter.increaseIndent(); - var constructorDecl = getLastConstructor(classDecl); - if (constructorDecl) { - this.emitClassMembersFromConstructorDefinition(constructorDecl); - } - - this.emitDeclarationsForList(classDecl.classElements); - - this.indenter.decreaseIndent(); - - this.emitIndent(); - this.declFile.WriteLine("}"); - } - - private emitHeritageClauses(clauses: HeritageClauseSyntax[]): void { - if (clauses) { - for (var i = 0, n = clauses.length; i < n; i++) { - this.emitHeritageClause(clauses[i]); - } - } - } - - private emitHeritageClause(clause: HeritageClauseSyntax) { - this.emitBaseList(clause.typeNames, clause.kind() === SyntaxKind.ExtendsHeritageClause); - } - - static getEnclosingContainer(ast: ISyntaxElement): ISyntaxElement { - // If the passed in as is the 'name' portion of an module declaration. - // If so, we want the actual container of *that* module declaration. - var enclosingModule = ASTHelpers.getModuleDeclarationFromNameAST(ast); - ast = enclosingModule || ast; - - ast = ast.parent; - while (ast) { - if (ast.kind() === SyntaxKind.ClassDeclaration || - ast.kind() === SyntaxKind.InterfaceDeclaration || - ast.kind() === SyntaxKind.ModuleDeclaration || - ast.kind() === SyntaxKind.SourceUnit) { - - return ast; - } - - ast = ast.parent; - } - - return null; - } - - private emitTypeParameters(typeParams: TypeParameterListSyntax, funcSignature?: PullSignatureSymbol) { - if (!typeParams || !typeParams.typeParameters.length) { - return; - } - - this.declFile.Write("<"); - var containerAst = DeclarationEmitter.getEnclosingContainer(typeParams); - - var start = new Date().getTime(); - var containerDecl = this.semanticInfoChain.getDeclForAST(containerAst); - var containerSymbol = containerDecl.getSymbol(this.semanticInfoChain); - TypeScript.declarationEmitGetTypeParameterSymbolTime += new Date().getTime() - start; - - var typars: PullTypeSymbol[]; - if (funcSignature) { - typars = funcSignature.getTypeParameters(); - } - else { - typars = containerSymbol.getTypeArgumentsOrTypeParameters(); - } - - for (var i = 0; i < typars.length; i++) { - if (i) { - this.declFile.Write(", "); - } - - var memberName = typars[i].getScopedNameEx(containerSymbol, /*skipTypeParametersInName*/ false, /*useConstraintInName:*/ true); - this.emitTypeNamesMember(memberName); - } - - this.declFile.Write(">"); - } - - private emitDeclarationsForInterfaceDeclaration(interfaceDecl: InterfaceDeclarationSyntax) { - if (!this.canEmitDeclarations(interfaceDecl)) { - return; - } - - var interfaceName = interfaceDecl.identifier.text(); - this.emitDeclarationComments(interfaceDecl); - this.emitDeclFlags(interfaceDecl, "interface"); - this.declFile.Write(interfaceName); - - this.emitTypeParameters(interfaceDecl.typeParameterList); - this.emitHeritageClauses(interfaceDecl.heritageClauses); - this.declFile.WriteLine(" {"); - - this.indenter.increaseIndent(); - - this.emitSeparatedList(interfaceDecl.body.typeMembers); - - this.indenter.decreaseIndent(); - - this.emitIndent(); - this.declFile.WriteLine("}"); - } - - private emitDeclarationsForImportDeclaration(importDeclAST: ImportDeclarationSyntax) { - var importDecl = this.semanticInfoChain.getDeclForAST(importDeclAST); - var importSymbol = importDecl.getSymbol(this.semanticInfoChain); - var isExportedImportDecl = hasModifier(importDeclAST.modifiers, PullElementFlags.Exported); - - if (isExportedImportDecl || importSymbol.typeUsedExternally() || PullContainerSymbol.usedAsSymbol(importSymbol.getContainer(), importSymbol)) { - this.emitDeclarationComments(importDeclAST); - this.emitIndent(); - if (isExportedImportDecl) { - this.declFile.Write("export "); - } - this.declFile.Write("import "); - this.declFile.Write(importDeclAST.identifier.text() + " = "); - if (importDeclAST.moduleReference.kind() === SyntaxKind.ExternalModuleReference) { - this.declFile.WriteLine("require(" + (importDeclAST.moduleReference).stringLiteral.text() + ");"); - } - else { - this.declFile.WriteLine(ASTHelpers.getNameOfIdentifierOrQualifiedName((importDeclAST.moduleReference).moduleName) + ";"); - } - } - } - - private emitDeclarationsForEnumDeclaration(moduleDecl: EnumDeclarationSyntax): void { - if (!this.canEmitDeclarations(moduleDecl)) { - return; - } - - this.emitDeclarationComments(moduleDecl); - this.emitDeclFlags(moduleDecl, "enum"); - this.declFile.WriteLine(moduleDecl.identifier.text() + " {"); - - this.indenter.increaseIndent(); - var membersLen = moduleDecl.enumElements.length; - for (var j = 0; j < membersLen; j++) { - var enumElement = moduleDecl.enumElements[j]; - var enumElementDecl = this.semanticInfoChain.getDeclForAST(enumElement); - this.emitDeclarationComments(enumElement); - this.emitIndent(); - this.declFile.Write(enumElement.propertyName.text()); - if (enumElementDecl.constantValue !== null) { - this.declFile.Write(" = " + enumElementDecl.constantValue); - } - this.declFile.WriteLine(","); - } - this.indenter.decreaseIndent(); - - this.emitIndent(); - this.declFile.WriteLine("}"); - } - - private emitDeclarationsForModuleDeclaration(moduleDecl: ModuleDeclarationSyntax) { - // If module is defined as A.B.C - // The whole moduleDecl will have the pullDecl corresponding to innermost - // Which would always be exported and hence would need to be emitted - // But we really want to check if module A needs to be emitted and hence use - // the leftmost name to determine if this needs to be emitted - // Since the module name will have the correct decl, it is always used to determine - // if this ast needs to be emitted or not - var name: ISyntaxElement = moduleDecl.stringLiteral || ArrayUtilities.first(ASTHelpers.getModuleNames(moduleDecl.name)); - if (!this.canEmitDeclarations(name)) { - return; - } - - this.emitDeclarationComments(moduleDecl); - this.emitDeclFlags(name, "module"); - - if (moduleDecl.stringLiteral) { - this.declFile.Write(moduleDecl.stringLiteral.text()); - } - else { - this.declFile.Write(ASTHelpers.getNameOfIdentifierOrQualifiedName(moduleDecl.name)); - } - - this.declFile.WriteLine(" {"); - this.indenter.increaseIndent(); - - this.emitDeclarationsForList(moduleDecl.moduleElements); - - this.indenter.decreaseIndent(); - this.emitIndent(); - this.declFile.WriteLine("}"); - } - - private emitDeclarationsForExportAssignment(ast: ExportAssignmentSyntax) { - this.emitIndent(); - this.declFile.Write("export = "); - this.declFile.Write(ast.identifier.text()); - this.declFile.WriteLine(";"); - } - - private resolveScriptReference(document: Document, reference: string) { - if (!this.emitOptions.compilationSettings().noResolve() || isRooted(reference)) { - return reference; - } - - var documentDir = convertToDirectoryPath(switchToForwardSlashes(getRootFilePath(document.fileName))); - var resolvedReferencePath = this.emitOptions.resolvePath(documentDir + reference); - return resolvedReferencePath; - } - - private emitReferencePaths(sourceUnit: SourceUnitSyntax) { - // In case of shared handler we collect all the references and emit them - if (this.emittedReferencePaths) { - return; - } - - // Collect all the documents that need to be emitted as reference - var documents: Document[] = []; - if (this.document.emitToOwnOutputFile()) { - // Emit only from this file - var scriptReferences = this.document.referencedFiles; - var addedGlobalDocument = false; - for (var j = 0; j < scriptReferences.length; j++) { - var currentReference = this.resolveScriptReference(this.document, scriptReferences[j]); - var document = this.compiler.getDocument(currentReference); - // All the references that are not going to be part of same file - - if (document && - (document.emitToOwnOutputFile() || document.isDeclareFile() || !addedGlobalDocument)) { - - documents = documents.concat(document); - - if (!document.isDeclareFile() && document.syntaxTree().isExternalModule()) { - addedGlobalDocument = true; - } - } - } - } - else { - // Collect from all the references and emit - var fileNames = this.compiler.fileNames(); - for (var i = 0; i < fileNames.length; i++) { - var doc = this.compiler.getDocument(fileNames[i]); - if (!doc.isDeclareFile() && !doc.syntaxTree().isExternalModule()) { - // Check what references need to be added - var scriptReferences = doc.referencedFiles; - for (var j = 0; j < scriptReferences.length; j++) { - var currentReference = this.resolveScriptReference(doc, scriptReferences[j]); - var document = this.compiler.getDocument(currentReference); - // All the references that are not going to be part of same file - if (document && - (document.isDeclareFile() || document.syntaxTree().isExternalModule())) { - for (var k = 0; k < documents.length; k++) { - if (documents[k] === document) { - break; - } - } - - if (k === documents.length) { - documents = documents.concat(document); - } - } - } - } - } - } - - // Emit the references - var emittingFilePath = documents.length ? getRootFilePath(this.emittingFileName) : null; - for (var i = 0; i < documents.length; i++) { - var document = documents[i]; - var declFileName: string; - if (document.isDeclareFile()) { - declFileName = document.fileName; - } - else { - declFileName = this.compiler.mapOutputFileName(document, this.emitOptions, TypeScriptCompiler.mapToDTSFileName); - } - - // Get the relative path - declFileName = getRelativePathToFixedPath(emittingFilePath, declFileName, false); - this.declFile.WriteLine('/// '); - } - - this.emittedReferencePaths = true; - } - - private emitDeclarationsForSourceUnit(sourceUnit: SourceUnitSyntax) { - this.emitReferencePaths(sourceUnit); - this.emitDeclarationsForList(sourceUnit.moduleElements); - } - } -} \ No newline at end of file diff --git a/src/services/compiler/enumerator.ts b/src/services/compiler/enumerator.ts deleted file mode 100644 index eb9559b02fa..00000000000 --- a/src/services/compiler/enumerator.ts +++ /dev/null @@ -1,6 +0,0 @@ -declare class Enumerator { - public atEnd(): boolean; - public moveNext(): boolean; - public item(): any; - constructor (o: any); -} \ No newline at end of file diff --git a/src/services/compiler/hashTable.ts b/src/services/compiler/hashTable.ts deleted file mode 100644 index 10e3941afa3..00000000000 --- a/src/services/compiler/hashTable.ts +++ /dev/null @@ -1,187 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -module TypeScript { - var proto = "__proto__"; - - class BlockIntrinsics { - public prototype: T = undefined; - public toString: T = undefined; - public toLocaleString: T = undefined; - public valueOf: T = undefined; - public hasOwnProperty: T = undefined; - public propertyIsEnumerable: T = undefined; - public isPrototypeOf: T = undefined; - [s: string]: T; - - constructor() { - // initialize the 'constructor' field - this["constructor"] = undefined; - - // First we set it to null, because that's the only way to erase the value in node. Then we set it to undefined in case we are not in node, since - // in StringHashTable below, we check for undefined explicitly. - this[proto] = null; - this[proto] = undefined; - } - } - - export function createIntrinsicsObject(): ts.Map { - return new BlockIntrinsics(); - } - - //export interface IHashTable { - // getAllKeys(): string[]; - // add(key: string, data: T): boolean; - // addOrUpdate(key: string, data: T): boolean; - // map(fn: (k: string, value: T, context: any) => void , context: any): void; - // every(fn: (k: string, value: T, context: any) => void , context: any): boolean; - // some(fn: (k: string, value: T, context: any) => void , context: any): boolean; - // count(): number; - // lookup(key: string): T; - //} - - //export class StringHashTable implements IHashTable { - // private itemCount = 0; - // private table: IIndexable = createIntrinsicsObject(); - - // public getAllKeys(): string[] { - // var result: string[] = []; - - // for (var k in this.table) { - // if (this.table[k] !== undefined) { - // result.push(k); - // } - // } - - // return result; - // } - - // public add(key: string, data: T): boolean { - // if (this.table[key] !== undefined) { - // return false; - // } - - // this.table[key] = data; - // this.itemCount++; - // return true; - // } - - // public addOrUpdate(key: string, data: T): boolean { - // if (this.table[key] !== undefined) { - // this.table[key] = data; - // return false; - // } - - // this.table[key] = data; - // this.itemCount++; - // return true; - // } - - // public map(fn: (k: string, value: T, context: any) => void , context: any) { - // for (var k in this.table) { - // var data = this.table[k]; - - // if (data !== undefined) { - // fn(k, this.table[k], context); - // } - // } - // } - - // public every(fn: (k: string, value: T, context: any) => void , context: any) { - // for (var k in this.table) { - // var data = this.table[k]; - - // if (data !== undefined) { - // if (!fn(k, this.table[k], context)) { - // return false; - // } - // } - // } - - // return true; - // } - - // public some(fn: (k: string, value: T, context: any) => void , context: any) { - // for (var k in this.table) { - // var data = this.table[k]; - - // if (data !== undefined) { - // if (fn(k, this.table[k], context)) { - // return true; - // } - // } - // } - - // return false; - // } - - // public count(): number { - // return this.itemCount; - // } - - // public lookup(key: string) : T { - // var data = this.table[key]; - // return data === undefined ? null : data; - // } - - // public remove(key: string): void { - // if (this.table[key] !== undefined) { - // this.table[key] = undefined; - // this.itemCount--; - // } - // } - //} - - - //export class IdentiferNameHashTable extends StringHashTable { - // public getAllKeys(): string[]{ - // var result: string[] = []; - - // super.map((k, v, c) => { - // if (v !== undefined) { - // result.push(k.substring(1)); - // } - // }, null); - - // return result; - // } - - // public add(key: string, data: T): boolean { - // return super.add("#" + key, data); - // } - - // public addOrUpdate(key: string, data: T): boolean { - // return super.addOrUpdate("#" + key, data); - // } - - // public map(fn: (k: string, value: T, context: any) => void , context: any) { - // return super.map((k, v, c) => fn(k.substring(1), v, c), context); - // } - - // public every(fn: (k: string, value: T, context: any) => void , context: any) { - // return super.every((k, v, c) => fn(k.substring(1), v, c), context); - // } - - // public some(fn: (k: string, value: any, context: any) => void , context: any) { - // return super.some((k, v, c) => fn(k.substring(1), v, c), context); - // } - - // public lookup(key: string): T { - // return super.lookup("#" + key); - // } - //} -} \ No newline at end of file diff --git a/src/services/compiler/identifierWalker.ts b/src/services/compiler/identifierWalker.ts deleted file mode 100644 index 4af0893db6c..00000000000 --- a/src/services/compiler/identifierWalker.ts +++ /dev/null @@ -1,11 +0,0 @@ -module TypeScript { - export class IdentifierWalker extends SyntaxWalker { - constructor(public list: IIndexable) { - super(); - } - - public visitToken(token: ISyntaxToken): void { - this.list[token.text()] = true; - } - } -} \ No newline at end of file diff --git a/src/services/compiler/io.ts b/src/services/compiler/io.ts deleted file mode 100644 index 952187809b0..00000000000 --- a/src/services/compiler/io.ts +++ /dev/null @@ -1,64 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// -/// -/// - -module TypeScript { - - export interface IFindFileResult { - fileInformation: FileInformation; - path: string; - } - - export module IOUtils { - // Creates the directory including its parent if not already present - function createDirectoryStructure(ioHost: IEnvironment, dirName: string) { - if (ioHost.directoryExists(dirName)) { - return; - } - - var parentDirectory = ioHost.directoryName(dirName); - if (parentDirectory != "") { - createDirectoryStructure(ioHost, parentDirectory); - } - ioHost.createDirectory(dirName); - } - - // Creates a file including its directory structure if not already present - export function writeFileAndFolderStructure(ioHost: IEnvironment, fileName: string, contents: string, writeByteOrderMark: boolean): void { - var start = new Date().getTime(); - var path = ioHost.absolutePath(fileName); - TypeScript.ioHostResolvePathTime += new Date().getTime() - start; - - var start = new Date().getTime(); - var dirName = ioHost.directoryName(path); - TypeScript.ioHostDirectoryNameTime += new Date().getTime() - start; - - var start = new Date().getTime(); - createDirectoryStructure(ioHost, dirName); - TypeScript.ioHostCreateDirectoryStructureTime += new Date().getTime() - start; - - var start = new Date().getTime(); - ioHost.writeFile(path, contents, writeByteOrderMark); - TypeScript.ioHostWriteFileTime += new Date().getTime() - start; - } - - export function combine(prefix: string, suffix: string): string { - return prefix + "/" + suffix; - } - } -} \ No newline at end of file diff --git a/src/services/compiler/pathUtils.ts b/src/services/compiler/pathUtils.ts deleted file mode 100644 index 88aa3e4f30c..00000000000 --- a/src/services/compiler/pathUtils.ts +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -module TypeScript { - function isFileOfExtension(fname: string, ext: string) { - var invariantFname = fname.toLocaleUpperCase(); - var invariantExt = ext.toLocaleUpperCase(); - var extLength = invariantExt.length; - return invariantFname.length > extLength && invariantFname.substring(invariantFname.length - extLength, invariantFname.length) === invariantExt; - } - - export function isDTSFile(fname: string) { - return isFileOfExtension(fname, ".d.ts"); - } -} \ No newline at end of file diff --git a/src/services/compiler/process.ts b/src/services/compiler/process.ts deleted file mode 100644 index cd4cfde5f67..00000000000 --- a/src/services/compiler/process.ts +++ /dev/null @@ -1,17 +0,0 @@ -//declare module process { -// export var argv: string[]; -// export var platform: string; -// export function on(event: string, handler: (arg: any) => void ): void; -// export module stdout { -// export function write(str: string): any; -// export function on(event: string, action: () => void ): void; -// } -// export module stderr { -// export function write(str: string): any; -// export function on(event: string, action: () => void): void; -// } -// export module mainModule { -// export var filename: string; -// } -// export function exit(exitCode?: number): any; -//} \ No newline at end of file diff --git a/src/services/compiler/references.ts b/src/services/compiler/references.ts deleted file mode 100644 index 750b7777624..00000000000 --- a/src/services/compiler/references.ts +++ /dev/null @@ -1,32 +0,0 @@ -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// -///// - -///// -///// diff --git a/src/services/compiler/sourceMapping.ts b/src/services/compiler/sourceMapping.ts deleted file mode 100644 index 0b50d1247b1..00000000000 --- a/src/services/compiler/sourceMapping.ts +++ /dev/null @@ -1,270 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -module TypeScript { - export class SourceMapPosition { - public sourceLine: number; - public sourceColumn: number; - public emittedLine: number; - public emittedColumn: number; - } - - export class SourceMapping { - public start = new SourceMapPosition(); - public end = new SourceMapPosition(); - public nameIndex: number = -1; - public childMappings: SourceMapping[] = []; - } - - export class SourceMapEntry { - constructor( - public emittedFile: string, - public emittedLine: number, - public emittedColumn: number, - public sourceFile: string, - public sourceLine: number, - public sourceColumn: number, - public sourceName: string) { - - Debug.assert(isFinite(emittedLine)); - Debug.assert(isFinite(emittedColumn)); - Debug.assert(isFinite(sourceColumn)); - Debug.assert(isFinite(sourceLine)); - } - } - - export class SourceMapper { - static MapFileExtension = ".map"; - - private jsFileName: string; - private sourceMapPath: string; - private sourceMapDirectory: string; - private sourceRoot: string; - - public names: string[] = []; - - private mappingLevel: ISpan[] = []; - - // Below two arrays represent the information about sourceFile at that index. - private tsFilePaths: string[] = []; - private allSourceMappings: SourceMapping[][] = []; - - public currentMappings: SourceMapping[][]; - public currentNameIndex: number[]; - - private sourceMapEntries: SourceMapEntry[] = []; - - constructor(private jsFile: TextWriter, - private sourceMapOut: TextWriter, - document: Document, - jsFilePath: string, - emitOptions: EmitOptions, - resolvePath: (path: string) => string) { - this.setSourceMapOptions(document, jsFilePath, emitOptions, resolvePath); - this.setNewSourceFile(document, emitOptions); - } - - public getOutputFile(): OutputFile { - var result = this.sourceMapOut.getOutputFile(); - result.sourceMapEntries = this.sourceMapEntries; - - return result; - } - - public increaseMappingLevel(ast: ISpan) { - this.mappingLevel.push(ast); - } - - public decreaseMappingLevel(ast: any) { - Debug.assert(this.mappingLevel.length > 0, "Mapping level should never be less than 0. This suggests a missing start call."); - var expectedAst = this.mappingLevel.pop(); - if (ast !== expectedAst) { - var expectedAstInfo: any = (expectedAst).kind ? SyntaxKind[(expectedAst).kind] : [expectedAst.start(), expectedAst.end()]; - var astInfo: any = (ast).kind ? SyntaxKind[(ast).kind] : [ast.start(), ast.end()]; - Debug.fail( - "Provided ast is not the expected ISyntaxElement, Expected: " + expectedAstInfo + " Given: " + astInfo); - - } - } - - public setNewSourceFile(document: Document, emitOptions: EmitOptions) { - // Set new mappings - var sourceMappings: SourceMapping[] = []; - this.allSourceMappings.push(sourceMappings); - this.currentMappings = [sourceMappings]; - this.currentNameIndex = []; - - // Set new source file path - this.setNewSourceFilePath(document, emitOptions); - } - - private setSourceMapOptions(document: Document, jsFilePath: string, emitOptions: EmitOptions, resolvePath: (path: string) => string) { - // Decode mapRoot and sourceRoot - - // Js File Name = pretty name of js file - var prettyJsFileName = TypeScript.getPrettyName(jsFilePath, false, true); - var prettyMapFileName = prettyJsFileName + SourceMapper.MapFileExtension; - this.jsFileName = prettyJsFileName; - - // Figure out sourceMapPath and sourceMapDirectory - if (emitOptions.sourceMapRootDirectory()) { - // Get the sourceMap Directory - this.sourceMapDirectory = emitOptions.sourceMapRootDirectory(); - if (document.emitToOwnOutputFile()) { - // For modules or multiple emit files the mapRoot will have directory structure like the sources - // So if src\a.ts and src\lib\b.ts are compiled together user would be moving the maps into mapRoot\a.js.map and mapRoot\lib\b.js.map - this.sourceMapDirectory = this.sourceMapDirectory + switchToForwardSlashes(getRootFilePath((document.fileName)).replace(emitOptions.commonDirectoryPath(), "")); - } - - if (isRelative(this.sourceMapDirectory)) { - // The relative paths are relative to the common directory - this.sourceMapDirectory = emitOptions.commonDirectoryPath() + this.sourceMapDirectory; - this.sourceMapDirectory = convertToDirectoryPath(switchToForwardSlashes(resolvePath(this.sourceMapDirectory))); - this.sourceMapPath = getRelativePathToFixedPath(getRootFilePath(jsFilePath), this.sourceMapDirectory + prettyMapFileName); - } - else { - this.sourceMapPath = this.sourceMapDirectory + prettyMapFileName; - } - } - else { - this.sourceMapPath = prettyMapFileName; - this.sourceMapDirectory = getRootFilePath(jsFilePath); - } - this.sourceRoot = emitOptions.sourceRootDirectory(); - } - - private setNewSourceFilePath(document: Document, emitOptions: EmitOptions) { - var tsFilePath = switchToForwardSlashes(document.fileName); - if (emitOptions.sourceRootDirectory()) { - // Use the relative path corresponding to the common directory path - tsFilePath = getRelativePathToFixedPath(emitOptions.commonDirectoryPath(), tsFilePath); - } - else { - // Source locations relative to map file location - tsFilePath = getRelativePathToFixedPath(this.sourceMapDirectory, tsFilePath); - } - this.tsFilePaths.push(tsFilePath); - } - - // Generate source mapping. - // Creating files can cause exceptions, they will be caught higher up in TypeScriptCompiler.emit - public emitSourceMapping(): void { - Debug.assert( - this.mappingLevel.length === 0, - "Mapping level is not 0. This suggest a missing end call. Value: " + - this.mappingLevel.map(item => ['Node of type', SyntaxKind[(item).kind], 'at', item.start(), 'to', item.end()].join(' ')).join(', ')); - // Output map file name into the js file - this.jsFile.WriteLine("//# sourceMappingURL=" + this.sourceMapPath); - - // Now output map file - var mappingsString = ""; - - var prevEmittedColumn = 0; - var prevEmittedLine = 0; - var prevSourceColumn = 0; - var prevSourceLine = 0; - var prevSourceIndex = 0; - var prevNameIndex = 0; - var emitComma = false; - - var recordedPosition: SourceMapPosition = null; - for (var sourceIndex = 0; sourceIndex < this.tsFilePaths.length; sourceIndex++) { - var recordSourceMapping = (mappedPosition: SourceMapPosition, nameIndex: number) => { - - if (recordedPosition !== null && - recordedPosition.emittedColumn === mappedPosition.emittedColumn && - recordedPosition.emittedLine === mappedPosition.emittedLine) { - // This position is already recorded - return; - } - - // Record this position - if (prevEmittedLine !== mappedPosition.emittedLine) { - while (prevEmittedLine < mappedPosition.emittedLine) { - prevEmittedColumn = 0; - mappingsString = mappingsString + ";"; - prevEmittedLine++; - } - emitComma = false; - } - else if (emitComma) { - mappingsString = mappingsString + ","; - } - - this.sourceMapEntries.push(new SourceMapEntry( - this.jsFileName, - mappedPosition.emittedLine + 1, - mappedPosition.emittedColumn + 1, - this.tsFilePaths[sourceIndex], - mappedPosition.sourceLine, - mappedPosition.sourceColumn + 1, - nameIndex >= 0 ? this.names[nameIndex] : undefined)); - - // 1. Relative Column - mappingsString = mappingsString + Base64VLQFormat.encode(mappedPosition.emittedColumn - prevEmittedColumn); - prevEmittedColumn = mappedPosition.emittedColumn; - - // 2. Relative sourceIndex - mappingsString = mappingsString + Base64VLQFormat.encode(sourceIndex - prevSourceIndex); - prevSourceIndex = sourceIndex; - - // 3. Relative sourceLine 0 based - mappingsString = mappingsString + Base64VLQFormat.encode(mappedPosition.sourceLine - 1 - prevSourceLine); - prevSourceLine = mappedPosition.sourceLine - 1; - - // 4. Relative sourceColumn 0 based - mappingsString = mappingsString + Base64VLQFormat.encode(mappedPosition.sourceColumn - prevSourceColumn); - prevSourceColumn = mappedPosition.sourceColumn; - - // 5. Relative namePosition 0 based - if (nameIndex >= 0) { - mappingsString = mappingsString + Base64VLQFormat.encode(nameIndex - prevNameIndex); - prevNameIndex = nameIndex; - } - - emitComma = true; - recordedPosition = mappedPosition; - }; - - // Record starting spans - var recordSourceMappingSiblings = (sourceMappings: SourceMapping[]) => { - for (var i = 0; i < sourceMappings.length; i++) { - var sourceMapping = sourceMappings[i]; - recordSourceMapping(sourceMapping.start, sourceMapping.nameIndex); - recordSourceMappingSiblings(sourceMapping.childMappings); - recordSourceMapping(sourceMapping.end, sourceMapping.nameIndex); - } - }; - - recordSourceMappingSiblings(this.allSourceMappings[sourceIndex]); - } - - // Write the actual map file - this.sourceMapOut.Write(JSON.stringify({ - version: 3, - file: this.jsFileName, - sourceRoot: this.sourceRoot, - sources: this.tsFilePaths, - names: this.names, - mappings: mappingsString - })); - - // Closing files could result in exceptions, report them if they occur - this.sourceMapOut.Close(); - } - } -} \ No newline at end of file diff --git a/src/services/compiler/typescript.ts b/src/services/compiler/typescript.ts deleted file mode 100644 index 5671d167d1b..00000000000 --- a/src/services/compiler/typescript.ts +++ /dev/null @@ -1,1524 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -if (Error) (Error).stackTraceLimit = 1000; - -module TypeScript { - export var fileResolutionTime = 0; - export var fileResolutionIOTime = 0; - export var fileResolutionScanImportsTime = 0; - export var fileResolutionImportFileSearchTime = 0; - export var fileResolutionGetDefaultLibraryTime = 0; - export var sourceCharactersCompiled = 0; - export var syntaxTreeParseTime = 0; - export var typeCheckTime = 0; - export var createDeclarationsTime = 0; - - export var compilerResolvePathTime = 0; - export var compilerDirectoryNameTime = 0; - export var compilerDirectoryExistsTime = 0; - export var compilerFileExistsTime = 0; - - export var emitTime = 0; - export var emitWriteFileTime = 0; - - export var declarationEmitTime = 0; - export var declarationEmitIsExternallyVisibleTime = 0; - export var declarationEmitTypeSignatureTime = 0; - export var declarationEmitGetBoundDeclTypeTime = 0; - export var declarationEmitIsOverloadedCallSignatureTime = 0; - export var declarationEmitFunctionDeclarationGetSymbolTime = 0; - export var declarationEmitGetBaseTypeTime = 0; - export var declarationEmitGetAccessorFunctionTime = 0; - export var declarationEmitGetTypeParameterSymbolTime = 0; - export var declarationEmitGetImportDeclarationSymbolTime = 0; - - export var ioHostResolvePathTime = 0; - export var ioHostDirectoryNameTime = 0; - export var ioHostCreateDirectoryStructureTime = 0; - export var ioHostWriteFileTime = 0; - - export interface PullSymbolInfo { - symbol: PullSymbol; - aliasSymbol: PullTypeAliasSymbol; - ast: ISyntaxElement; - enclosingScopeSymbol: PullSymbol; - } - - export interface PullCallSymbolInfo { - targetSymbol: PullSymbol; - resolvedSignatures: TypeScript.PullSignatureSymbol[]; - candidateSignature: TypeScript.PullSignatureSymbol; - isConstructorCall: boolean; - ast: ISyntaxElement; - enclosingScopeSymbol: PullSymbol; - } - - export interface PullVisibleSymbolsInfo { - symbols: PullSymbol[]; - enclosingScopeSymbol: PullSymbol; - } - - export enum EmitOutputResult { - Succeeded, - FailedBecauseOfSyntaxErrors, - FailedBecauseOfCompilerOptionsErrors, - FailedToGenerateDeclarationsBecauseOfSemanticErrors - } - - export class EmitOutput { - public outputFiles: OutputFile[] = []; - public emitOutputResult: EmitOutputResult; - constructor(emitOutputResult = EmitOutputResult.Succeeded) { - this.emitOutputResult = emitOutputResult; - } - } - - export enum OutputFileType { - JavaScript, - SourceMap, - Declaration - } - - export class OutputFile { - constructor(public name: string, - public writeByteOrderMark: boolean, - public text: string, - public fileType: OutputFileType, - public sourceMapEntries: SourceMapEntry[] = []) { - } - } - - // Represents the results of the last "pull" on the compiler when using the streaming - // 'compile' method. The compile result for a single pull can have diagnostics (if - // something went wrong), and/or OutputFiles that need to get written. - export class CompileResult { - public diagnostics: Diagnostic[] = []; - public outputFiles: OutputFile[] = []; - - public static fromDiagnostics(diagnostics: Diagnostic[]): CompileResult { - var result = new CompileResult(); - result.diagnostics = diagnostics; - return result; - } - - public static fromOutputFiles(outputFiles: OutputFile[]): CompileResult { - var result = new CompileResult(); - result.outputFiles = outputFiles; - return result; - } - } - - export interface ICancellationToken { - isCancellationRequested(): boolean; - } - - export class OperationCanceledException { } - - export class CancellationToken { - - public static None: CancellationToken = new CancellationToken(null); - - constructor(private cancellationToken: ICancellationToken) { - } - - public isCancellationRequested() { - return this.cancellationToken && this.cancellationToken.isCancellationRequested(); - } - - public throwIfCancellationRequested(): void { - if (this.isCancellationRequested()) { - throw new OperationCanceledException(); - } - } - } - - class DocumentRegistryEntry { - public refCount: number = 0; - public owners: string[] = []; - constructor(public document: Document) { - } - } - - export interface IDocumentRegistry { - acquireDocument( - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - byteOrderMark: ByteOrderMark, - version: number, - isOpen: boolean, - referencedFiles: string[]): TypeScript.Document; - - updateDocument( - document: Document, - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - version: number, - isOpen: boolean, - textChangeRange: TextChangeRange - ): TypeScript.Document; - - releaseDocument(fileName: string, compilationSettings: ImmutableCompilationSettings): void - } - - export class NonCachingDocumentRegistry implements IDocumentRegistry { - - public static Instance: IDocumentRegistry = new NonCachingDocumentRegistry(); - - public acquireDocument( - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - byteOrderMark: ByteOrderMark, - version: number, - isOpen: boolean, - referencedFiles: string[]= []): TypeScript.Document { - return Document.create(compilationSettings, fileName, scriptSnapshot, byteOrderMark, version, isOpen, referencedFiles); - } - - public updateDocument( - document: Document, - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - version: number, - isOpen: boolean, - textChangeRange: TextChangeRange - ): TypeScript.Document { - return document.update(scriptSnapshot, version, isOpen, textChangeRange); - } - - public releaseDocument(fileName: string, compilationSettings: ImmutableCompilationSettings): void { - // no op since this class doesn't cache anything - } - } - - export class DocumentRegistry implements IDocumentRegistry { - private buckets: IIndexable> = {}; - - private getKeyFromCompilationSettings(settings: ImmutableCompilationSettings): string { - return "_" + settings.propagateEnumConstants().toString() + "|" + settings.allowAutomaticSemicolonInsertion().toString() + "|" + LanguageVersion[settings.codeGenTarget()]; - } - - private getBucketForCompilationSettings(settings: ImmutableCompilationSettings, createIfMissing: boolean): StringHashTable { - var key = this.getKeyFromCompilationSettings(settings); - var bucket = this.buckets[key]; - if (!bucket && createIfMissing) { - this.buckets[key] = bucket = new StringHashTable(); - } - return bucket; - } - - public reportStats() { - var bucketInfoArray = Object.keys(this.buckets).filter(name => name && name.charAt(0) === '_').map(name => { - var entries = this.buckets[name]; - var documents = entries.getAllKeys().map((name) => { - var entry = entries.lookup(name); - return { - name: name, - refCount: entry.refCount, - references: entry.owners.slice(0) - }; - }); - documents.sort((x, y) => y.refCount - x.refCount); - return { bucket: name, documents: documents }; - }); - return JSON.stringify(bucketInfoArray, null, 2); - } - - public acquireDocument( - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - byteOrderMark: ByteOrderMark, - version: number, - isOpen: boolean, - referencedFiles: string[]= []): TypeScript.Document { - - var bucket = this.getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ true); - var entry = bucket.lookup(fileName); - if (!entry) { - var document = Document.create(compilationSettings, fileName, scriptSnapshot, byteOrderMark, version, isOpen, referencedFiles); - - entry = new DocumentRegistryEntry(document); - bucket.add(fileName, entry); - } - entry.refCount++; - - return entry.document; - } - - public updateDocument( - document: Document, - fileName: string, - compilationSettings: ImmutableCompilationSettings, - scriptSnapshot: IScriptSnapshot, - version: number, - isOpen: boolean, - textChangeRange: TextChangeRange - ): TypeScript.Document { - - var bucket = this.getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ false); - Debug.assert(bucket); - var entry = bucket.lookup(fileName); - Debug.assert(entry); - - if (entry.document.isOpen === isOpen && entry.document.version === version) { - return entry.document; - } - - entry.document = entry.document.update(scriptSnapshot, version, isOpen, textChangeRange); - return entry.document; - } - - public releaseDocument(fileName: string, compilationSettings: ImmutableCompilationSettings): void { - var bucket = this.getBucketForCompilationSettings(compilationSettings, false); - Debug.assert(bucket); - - var entry = bucket.lookup(fileName); - entry.refCount--; - - Debug.assert(entry.refCount >= 0); - if (entry.refCount === 0) { - bucket.remove(fileName); - } - } - } - - interface IExpressionWithArgumentListSyntax extends IExpressionSyntax { - expression: IExpressionSyntax; - argumentList: ArgumentListSyntax; - } - - export class TypeScriptCompiler { - private semanticInfoChain: SemanticInfoChain = null; - - constructor(public logger: ILogger = new NullLogger(), - private _settings: ImmutableCompilationSettings = ImmutableCompilationSettings.defaultSettings()) { - this.semanticInfoChain = new SemanticInfoChain(this, logger); - } - - public getSemanticInfoChain() { - return this.semanticInfoChain; - } - - public compilationSettings(): ImmutableCompilationSettings { - return this._settings; - } - - public setCompilationSettings(newSettings: ImmutableCompilationSettings) { - var oldSettings = this._settings; - this._settings = newSettings; - - if (!compareDataObjects(oldSettings, newSettings)) { - // If our options have changed at all, we have to consider any cached semantic - // data we have invalid. - this.semanticInfoChain.invalidate(oldSettings, newSettings); - } - } - - public getDocument(fileName: string): Document { - fileName = TypeScript.switchToForwardSlashes(fileName); - return this.semanticInfoChain.getDocument(fileName); - } - - public cleanupSemanticCache(): void { - this.semanticInfoChain.invalidate(); - } - - public addOrUpdateFile(document: Document): void { - // TODO: TypeScript.sourceCharactersCompiled += document. scriptSnapshot.getLength(); - // Note: the semantic info chain will recognize that this is a replacement of an - // existing script, and will handle it appropriately. - this.semanticInfoChain.addDocument(document); - } - - public addFile( - fileName: string, - scriptSnapshot: IScriptSnapshot, - byteOrderMark: ByteOrderMark, - version: number, - isOpen: boolean, - referencedFiles: string[]= []): void { - - fileName = TypeScript.switchToForwardSlashes(fileName); - var document = Document.create(this.compilationSettings(), fileName, scriptSnapshot, byteOrderMark, version, isOpen, referencedFiles); - this.addOrUpdateFile(document); - } - - public updateFile(fileName: string, scriptSnapshot: IScriptSnapshot, version: number, isOpen: boolean, textChangeRange: TextChangeRange): void { - fileName = TypeScript.switchToForwardSlashes(fileName); - - var document = this.getDocument(fileName); - var updatedDocument = document.update(scriptSnapshot, version, isOpen, textChangeRange); - - // Note: the semantic info chain will recognize that this is a replacement of an - // existing script, and will handle it appropriately. - this.addOrUpdateFile(updatedDocument); - } - - public removeFile(fileName: string): void { - fileName = TypeScript.switchToForwardSlashes(fileName); - this.semanticInfoChain.removeDocument(fileName); - } - - public mapOutputFileName(document: Document, emitOptions: EmitOptions, extensionChanger: (fname: string, wholeFileNameReplaced: boolean) => string) { - if (document.emitToOwnOutputFile()) { - var updatedFileName = document.fileName; - if (emitOptions.outputDirectory() !== "") { - // Replace the common directory path with the option specified - updatedFileName = document.fileName.replace(emitOptions.commonDirectoryPath(), ""); - updatedFileName = emitOptions.outputDirectory() + updatedFileName; - } - return extensionChanger(updatedFileName, false); - } - else { - return extensionChanger(emitOptions.sharedOutputFile(), true); - } - } - - private writeByteOrderMarkForDocument(document: Document) { - // Set this to 'true' if you want to know why the compiler emitted a document with a - // byte order mark. - var printReason = false; - - // If module its always emitted in its own file - if (document.emitToOwnOutputFile()) { - var result = document.byteOrderMark !== ByteOrderMark.None; - if (printReason) { - Environment.standardOut.WriteLine("Emitting byte order mark because of: " + document.fileName); - } - return result; - } - else { - var fileNames = this.fileNames(); - - var result = false; - for (var i = 0, n = fileNames.length; i < n; i++) { - var document = this.getDocument(fileNames[i]); - - if (document.syntaxTree().isExternalModule()) { - // Dynamic module never contributes to the single file - continue; - } - - if (document.byteOrderMark !== ByteOrderMark.None) { - if (printReason) { - Environment.standardOut.WriteLine("Emitting byte order mark because of: " + document.fileName); - result = true; - } - else { - return true; - } - } - } - - return result; - } - } - - static mapToDTSFileName(fileName: string, wholeFileNameReplaced: boolean) { - return getDeclareFilePath(fileName); - } - - public _shouldEmit(document: Document) { - // If its already a declare file or is resident or does not contain body - return !document.isDeclareFile(); - } - - public _shouldEmitDeclarations(document: Document) { - if (!this.compilationSettings().generateDeclarationFiles()) { - return false; - } - - return this._shouldEmit(document); - } - - // Does the actual work of emittin the declarations from the provided document into the - // provided emitter. If no emitter is provided a new one is created. - private emitDocumentDeclarationsWorker( - document: Document, - emitOptions: EmitOptions, - declarationEmitter?: DeclarationEmitter): DeclarationEmitter { - - var sourceUnit = document.sourceUnit(); - Debug.assert(this._shouldEmitDeclarations(document)); - - if (declarationEmitter) { - declarationEmitter.document = document; - } - else { - var declareFileName = this.mapOutputFileName(document, emitOptions, TypeScriptCompiler.mapToDTSFileName); - declarationEmitter = new DeclarationEmitter(declareFileName, document, this, emitOptions, this.semanticInfoChain); - } - - declarationEmitter.emitDeclarations(sourceUnit); - return declarationEmitter; - } - - public _emitDocumentDeclarations( - document: Document, - emitOptions: EmitOptions, - onSingleFileEmitComplete: (files: OutputFile) => void, - sharedEmitter: DeclarationEmitter): DeclarationEmitter { - - var start = new Date().getTime(); - if (this._shouldEmitDeclarations(document)) { - if (document.emitToOwnOutputFile()) { - var singleEmitter = this.emitDocumentDeclarationsWorker(document, emitOptions); - if (singleEmitter) { - onSingleFileEmitComplete(singleEmitter.getOutputFile()); - } - } - else { - // Create or reuse file - sharedEmitter = this.emitDocumentDeclarationsWorker(document, emitOptions, sharedEmitter); - } - } - - declarationEmitTime += new Date().getTime() - start; - return sharedEmitter; - } - - // Will not throw exceptions. - public emitAllDeclarations(resolvePath: (path: string) => string): EmitOutput { - var emitOutput = new EmitOutput(); - - var emitOptions = new EmitOptions(this, resolvePath); - if (emitOptions.diagnostic()) { - emitOutput.emitOutputResult = EmitOutputResult.FailedBecauseOfCompilerOptionsErrors; - return emitOutput; - } - - var sharedEmitter: DeclarationEmitter = null; - var fileNames = this.fileNames(); - - for (var i = 0, n = fileNames.length; i < n; i++) { - var fileName = fileNames[i]; - - var document = this.getDocument(fileName); - - sharedEmitter = this._emitDocumentDeclarations(document, emitOptions, - file => emitOutput.outputFiles.push(file), sharedEmitter); - } - - if (sharedEmitter) { - emitOutput.outputFiles.push(sharedEmitter.getOutputFile()); - } - - return emitOutput; - } - - // Will not throw exceptions. - public emitDeclarations(fileName: string, resolvePath: (path: string) => string): EmitOutput { - fileName = TypeScript.switchToForwardSlashes(fileName); - var emitOutput = new EmitOutput(); - - var emitOptions = new EmitOptions(this, resolvePath); - if (emitOptions.diagnostic()) { - emitOutput.emitOutputResult = EmitOutputResult.FailedBecauseOfCompilerOptionsErrors; - return emitOutput; - } - - var document = this.getDocument(fileName); - - // Emitting module or multiple files, always goes to single file - if (document.emitToOwnOutputFile()) { - this._emitDocumentDeclarations(document, emitOptions, - file => emitOutput.outputFiles.push(file), /*sharedEmitter:*/ null); - return emitOutput; - } - else { - return this.emitAllDeclarations(resolvePath); - } - } - - public canEmitDeclarations(fileName: string) { - fileName = TypeScript.switchToForwardSlashes(fileName); - var document = this.getDocument(fileName); - return this._shouldEmitDeclarations(document); - } - - static mapToFileNameExtension(extension: string, fileName: string, wholeFileNameReplaced: boolean) { - if (wholeFileNameReplaced) { - // The complete output is redirected in this file so do not change extension - return fileName; - } - else { - // Change the extension of the file - var splitFname = fileName.split("."); - splitFname.pop(); - return splitFname.join(".") + extension; - } - } - - static mapToJSFileName(fileName: string, wholeFileNameReplaced: boolean) { - return TypeScriptCompiler.mapToFileNameExtension(".js", fileName, wholeFileNameReplaced); - } - - // Caller is responsible for closing the returned emitter. - // May throw exceptions. - private emitDocumentWorker(document: Document, emitOptions: EmitOptions, emitter?: Emitter): Emitter { - var sourceUnit = document.sourceUnit(); - Debug.assert(this._shouldEmit(document)); - - if (!emitter) { - var javaScriptFileName = this.mapOutputFileName(document, emitOptions, TypeScriptCompiler.mapToJSFileName); - var outFile = new TextWriter(javaScriptFileName, this.writeByteOrderMarkForDocument(document), OutputFileType.JavaScript); - - emitter = new Emitter(javaScriptFileName, outFile, emitOptions, this.semanticInfoChain); - - if (this.compilationSettings().mapSourceFiles()) { - // We always create map files next to the jsFiles - var sourceMapFile = new TextWriter(javaScriptFileName + SourceMapper.MapFileExtension, /*writeByteOrderMark:*/ false, OutputFileType.SourceMap); - emitter.createSourceMapper(document, javaScriptFileName, outFile, sourceMapFile, emitOptions.resolvePath); - } - } - else if (this.compilationSettings().mapSourceFiles()) { - // Already emitting into js file, update the mapper for new source info - emitter.setSourceMapperNewSourceFile(document); - } - - // Set location info - emitter.setDocument(document); - emitter.emitJavascript(sourceUnit, /*startLine:*/false); - - return emitter; - } - - // Private. only for use by compiler or CompilerIterator - public _emitDocument( - document: Document, - emitOptions: EmitOptions, - onSingleFileEmitComplete: (files: OutputFile[]) => void, - sharedEmitter: Emitter): Emitter { - - var start = new Date().getTime(); - - // Emitting module or multiple files, always goes to single file - if (this._shouldEmit(document)) { - if (document.emitToOwnOutputFile()) { - // We're outputting to mulitple files. We don't want to reuse an emitter in that case. - var singleEmitter = this.emitDocumentWorker(document, emitOptions); - if (singleEmitter) { - onSingleFileEmitComplete(singleEmitter.getOutputFiles()); - } - } - else { - // We're not outputting to multiple files. Keep using the same emitter and don't - // close until below. - sharedEmitter = this.emitDocumentWorker(document, emitOptions, sharedEmitter); - } - } - - emitTime += new Date().getTime() - start; - return sharedEmitter; - } - - // Will not throw exceptions. - public emitAll(resolvePath: (path: string) => string): EmitOutput { - var emitOutput = new EmitOutput(); - - var emitOptions = new EmitOptions(this, resolvePath); - if (emitOptions.diagnostic()) { - emitOutput.emitOutputResult = EmitOutputResult.FailedBecauseOfCompilerOptionsErrors; - return emitOutput; - } - - var fileNames = this.fileNames(); - var sharedEmitter: Emitter = null; - - // Iterate through the files, as long as we don't get an error. - for (var i = 0, n = fileNames.length; i < n; i++) { - var fileName = fileNames[i]; - - var document = this.getDocument(fileName); - - sharedEmitter = this._emitDocument(document, emitOptions, - files => emitOutput.outputFiles.push.apply(emitOutput.outputFiles, files), - sharedEmitter); - } - - if (sharedEmitter) { - emitOutput.outputFiles.push.apply(emitOutput.outputFiles, sharedEmitter.getOutputFiles()); - } - - return emitOutput; - } - - // Emit single file if outputMany is specified, else emit all - // Will not throw exceptions. - public emit(fileName: string, resolvePath: (path: string) => string): EmitOutput { - fileName = TypeScript.switchToForwardSlashes(fileName); - var emitOutput = new EmitOutput(); - - var emitOptions = new EmitOptions(this, resolvePath); - if (emitOptions.diagnostic()) { - emitOutput.emitOutputResult = EmitOutputResult.FailedBecauseOfCompilerOptionsErrors; - return emitOutput; - } - - var document = this.getDocument(fileName); - // Emitting module or multiple files, always goes to single file - if (document.emitToOwnOutputFile()) { - this._emitDocument(document, emitOptions, - files => emitOutput.outputFiles.push.apply(emitOutput.outputFiles, files), /*sharedEmitter:*/ null); - return emitOutput; - } - else { - // In output Single file mode, emit everything - return this.emitAll(resolvePath); - } - } - - // Returns an iterator that will stream compilation results from this compiler. Syntactic - // diagnostics will be returned first, then semantic diagnostics, then emit results, then - // declaration emit results. - // - // The continueOnDiagnostics flag governs whether or not iteration follows the batch compiler - // logic and doesn't perform further analysis once diagnostics are produced. For example, - // in batch compilation nothing is done if there are any syntactic diagnostics. Clients - // can override this if they still want to procede in those cases. - public compile(resolvePath: (path: string) => string, continueOnDiagnostics = false): Iterator { - return new CompilerIterator(this, resolvePath, continueOnDiagnostics); - } - - // - // Pull typecheck infrastructure - // - - public getSyntacticDiagnostics(fileName: string): Diagnostic[] { - fileName = TypeScript.switchToForwardSlashes(fileName); - return this.getDocument(fileName).diagnostics(); - } - - /** Used for diagnostics in tests */ - private getSyntaxTree(fileName: string): SyntaxTree { - return this.getDocument(fileName).syntaxTree(); - } - - private getSourceUnit(fileName: string): SourceUnitSyntax { - return this.getDocument(fileName).sourceUnit(); - } - - public getSemanticDiagnostics(fileName: string): Diagnostic[] { - fileName = TypeScript.switchToForwardSlashes(fileName); - - var document = this.getDocument(fileName); - - var startTime = (new Date()).getTime(); - PullTypeResolver.typeCheck(this.compilationSettings(), this.semanticInfoChain, document); - var endTime = (new Date()).getTime(); - - typeCheckTime += endTime - startTime; - - var errors = this.semanticInfoChain.getDiagnostics(fileName); - - errors = ArrayUtilities.distinct(errors, Diagnostic.equals); - errors.sort((d1, d2) => { - if (d1.fileName() < d2.fileName()) { - return -1; - } - else if (d1.fileName() > d2.fileName()) { - return 1; - } - - if (d1.start() < d2.start()) { - return -1; - } - else if (d1.start() > d2.start()) { - return 1; - } - - // For multiple errors reported on the same file at the same position. - var code1 = diagnosticInformationMap[d1.diagnosticKey()].code; - var code2 = diagnosticInformationMap[d2.diagnosticKey()].code; - if (code1 < code2) { - return -1; - } - else if (code1 > code2) { - return 1; - } - - return 0; - }); - - return errors; - } - - public getCompilerOptionsDiagnostics(resolvePath: (path: string) => string): Diagnostic[] { - var emitOptions = new EmitOptions(this, resolvePath); - var emitDiagnostic = emitOptions.diagnostic(); - if (emitDiagnostic) { - return [emitDiagnostic]; - } - return sentinelEmptyArray; - } - - public resolveAllFiles() { - var fileNames = this.fileNames(); - for (var i = 0, n = fileNames.length; i < n; i++) { - this.getSemanticDiagnostics(fileNames[i]); - } - } - - public getSymbolOfDeclaration(decl: PullDecl): PullSymbol { - if (!decl) { - return null; - } - - var resolver = this.semanticInfoChain.getResolver(); - var ast = this.semanticInfoChain.getASTForDecl(decl); - if (!ast) { - return null; - } - - var enclosingDecl = resolver.getEnclosingDecl(decl); - if (ast.kind() === SyntaxKind.GetAccessor || ast.kind() === SyntaxKind.SetAccessor) { - return this.getSymbolOfDeclaration(enclosingDecl); - } - - return resolver.resolveAST(ast, /*inContextuallyTypedAssignment:*/false, new PullTypeResolutionContext(resolver)); - } - - private extractResolutionContextFromAST(resolver: PullTypeResolver, ast: ISyntaxElement, document: Document, propagateContextualTypes: boolean): { ast: ISyntaxElement; enclosingDecl: PullDecl; resolutionContext: PullTypeResolutionContext; inContextuallyTypedAssignment: boolean; inWithBlock: boolean; } { - var enclosingDecl: PullDecl = null; - var enclosingDeclAST: ISyntaxElement = null; - var inContextuallyTypedAssignment = false; - var inWithBlock = false; - - var resolutionContext = new PullTypeResolutionContext(resolver); - - if (!ast) { - return null; - } - - var path = this.getASTPath(ast); - - // Extract infromation from path - for (var i = 0 , n = path.length; i < n; i++) { - var current = path[i]; - - switch (current.kind()) { - case SyntaxKind.FunctionExpression: - case SyntaxKind.SimpleArrowFunctionExpression: - case SyntaxKind.ParenthesizedArrowFunctionExpression: - if (propagateContextualTypes) { - resolver.resolveAST(current, /*inContextuallyTypedAssignment*/ true, resolutionContext); - } - break; - - //case SyntaxKind.Parameter: - // var parameter = current; - // inContextuallyTypedAssignment = parameter.typeExpr !== null; - - // this.extractResolutionContextForVariable(inContextuallyTypedAssignment, propagateContextualTypes, resolver, resolutionContext, enclosingDecl, parameter, parameter.init); - // break; - - case SyntaxKind.MemberVariableDeclaration: - var memberVariable = current; - inContextuallyTypedAssignment = memberVariable.variableDeclarator.typeAnnotation !== null; - - this.extractResolutionContextForVariable(inContextuallyTypedAssignment, propagateContextualTypes, resolver, resolutionContext, enclosingDecl, memberVariable, memberVariable.variableDeclarator.equalsValueClause); - break; - - case SyntaxKind.VariableDeclarator: - var variableDeclarator = current; - inContextuallyTypedAssignment = variableDeclarator.typeAnnotation !== null; - - this.extractResolutionContextForVariable(inContextuallyTypedAssignment, propagateContextualTypes, resolver, resolutionContext, enclosingDecl, variableDeclarator, variableDeclarator.equalsValueClause); - break; - - case SyntaxKind.InvocationExpression: - case SyntaxKind.ObjectCreationExpression: - if (propagateContextualTypes) { - var isNew = current.kind() === SyntaxKind.ObjectCreationExpression; - var callExpression = current; - var contextualType: PullTypeSymbol = null; - - // Check if we are in an argumnt for a call, propagate the contextual typing - if ((i + 2 < n) && callExpression.argumentList === path[i + 1] && callExpression.argumentList.arguments === path[i + 2]) { - var callResolutionResults = new PullAdditionalCallResolutionData(); - if (isNew) { - resolver.resolveObjectCreationExpression(callExpression, resolutionContext, callResolutionResults); - } - else { - resolver.resolveInvocationExpression(callExpression, resolutionContext, callResolutionResults); - } - - // Find the index in the arguments list - if (callResolutionResults.actualParametersContextTypeSymbols) { - var argExpression = path[i + 3]; - if (argExpression) { - for (var j = 0, m = callExpression.argumentList.arguments.length; j < m; j++) { - if (callExpression.argumentList.arguments[j] === argExpression) { - var callContextualType = callResolutionResults.actualParametersContextTypeSymbols[j]; - if (callContextualType) { - contextualType = callContextualType; - break; - } - } - } - } - } - } - else { - // Just resolve the call expression - if (isNew) { - resolver.resolveObjectCreationExpression(callExpression, resolutionContext); - } - else { - resolver.resolveInvocationExpression(callExpression, resolutionContext); - } - } - - resolutionContext.pushNewContextualType(contextualType); - } - - break; - - case SyntaxKind.ArrayLiteralExpression: - if (propagateContextualTypes) { - // Propagate the child element type - var contextualType: PullTypeSymbol = null; - var currentContextualType = resolutionContext.getContextualType(); - if (currentContextualType && currentContextualType.isArrayNamedTypeReference()) { - contextualType = currentContextualType.getElementType(); - } - - resolutionContext.pushNewContextualType(contextualType); - } - - break; - - case SyntaxKind.ObjectLiteralExpression: - if (propagateContextualTypes) { - var objectLiteralExpression = current; - var objectLiteralResolutionContext = new PullAdditionalObjectLiteralResolutionData(); - resolver.resolveObjectLiteralExpression(objectLiteralExpression, inContextuallyTypedAssignment, resolutionContext, objectLiteralResolutionContext); - - // find the member in the path - var memeberAST = (path[i + 1] && path[i + 1].kind() === SyntaxKind.SeparatedList) ? path[i + 2] : path[i + 1]; - if (memeberAST) { - // Propagate the member contextual type - var contextualType: PullTypeSymbol = null; - var memberDecls = objectLiteralExpression.propertyAssignments; - if (memberDecls && objectLiteralResolutionContext.membersContextTypeSymbols) { - for (var j = 0, m = memberDecls.length; j < m; j++) { - if (memberDecls[j] === memeberAST) { - var memberContextualType = objectLiteralResolutionContext.membersContextTypeSymbols[j]; - if (memberContextualType) { - contextualType = memberContextualType; - break; - } - } - } - } - - resolutionContext.pushNewContextualType(contextualType); - } - } - - break; - - case SyntaxKind.AssignmentExpression: - if (propagateContextualTypes) { - var assignmentExpression = current; - var contextualType: PullTypeSymbol = null; - - if (path[i + 1] && path[i + 1] === assignmentExpression.right) { - // propagate the left hand side type as a contextual type - var leftType = resolver.resolveAST(assignmentExpression.left, inContextuallyTypedAssignment, resolutionContext).type; - if (leftType) { - inContextuallyTypedAssignment = true; - contextualType = leftType; - } - } - - resolutionContext.pushNewContextualType(contextualType); - } - - break; - - case SyntaxKind.CastExpression: - var castExpression = current; - if (!(i + 1 < n && path[i + 1] === castExpression.type)) { - // We are outside the cast term - if (propagateContextualTypes) { - var contextualType: PullTypeSymbol = null; - var typeSymbol = resolver.resolveAST(castExpression, inContextuallyTypedAssignment, resolutionContext).type; - - // Set the context type - if (typeSymbol) { - inContextuallyTypedAssignment = true; - contextualType = typeSymbol; - } - - resolutionContext.pushNewContextualType(contextualType); - } - } - - break; - - case SyntaxKind.ReturnStatement: - if (propagateContextualTypes) { - var contextualType: PullTypeSymbol = null; - - if (enclosingDecl && (enclosingDecl.kind & PullElementKind.SomeFunction)) { - var typeAnnotation = ASTHelpers.getType(enclosingDeclAST); - if (typeAnnotation) { - // The containing function has a type annotation, propagate it as the contextual type - var returnTypeSymbol = resolver.resolveTypeReference(typeAnnotation, resolutionContext); - if (returnTypeSymbol) { - inContextuallyTypedAssignment = true; - contextualType = returnTypeSymbol; - } - } - else { - // No type annotation, check if there is a contextual type enforced on the function, and propagate that - var currentContextualType = resolutionContext.getContextualType(); - if (currentContextualType && currentContextualType.isFunction()) { - var contextualSignatures = currentContextualType.kind == PullElementKind.ConstructorType - ? currentContextualType.getConstructSignatures() - : currentContextualType.getCallSignatures(); - var currentContextualTypeSignatureSymbol = contextualSignatures[0]; - var currentContextualTypeReturnTypeSymbol = currentContextualTypeSignatureSymbol.returnType; - if (currentContextualTypeReturnTypeSymbol) { - inContextuallyTypedAssignment = true; - contextualType = currentContextualTypeReturnTypeSymbol; - } - } - } - } - - resolutionContext.pushNewContextualType(contextualType); - } - - break; - - case SyntaxKind.ObjectType: - // ObjectType are just like Object Literals are bound when needed, ensure we have a decl, by forcing it to be - // resolved before descending into it. - if (propagateContextualTypes && TypeScript.isTypesOnlyLocation(current)) { - resolver.resolveAST(current, /*inContextuallyTypedAssignment*/ false, resolutionContext); - } - - break; - - case SyntaxKind.WithStatement: - inWithBlock = true; - break; - - case SyntaxKind.Block: - inContextuallyTypedAssignment = false; - break; - } - - // Record enclosing Decl - var decl = this.semanticInfoChain.getDeclForAST(current); - if (decl) { - enclosingDecl = decl; - enclosingDeclAST = current; - } - } - - // if the found ISyntaxElement is a named, we want to check for previous dotted expressions, - // since those will give us the right typing - if (ast && ast.parent && ast.kind() === SyntaxKind.IdentifierName) { - if (ast.parent.kind() === SyntaxKind.MemberAccessExpression) { - if ((ast.parent).name === ast) { - ast = ast.parent; - } - } - else if (ast.parent.kind() === SyntaxKind.QualifiedName) { - if ((ast.parent).right === ast) { - ast = ast.parent; - } - } - } - - return { - ast: ast, - enclosingDecl: enclosingDecl, - resolutionContext: resolutionContext, - inContextuallyTypedAssignment: inContextuallyTypedAssignment, - inWithBlock: inWithBlock - }; - } - - private extractResolutionContextForVariable( - inContextuallyTypedAssignment: boolean, - propagateContextualTypes: boolean, - resolver: PullTypeResolver, - resolutionContext: PullTypeResolutionContext, - enclosingDecl: PullDecl, - assigningAST: ISyntaxElement, - init: ISyntaxElement): void { - if (inContextuallyTypedAssignment) { - if (propagateContextualTypes) { - resolver.resolveAST(assigningAST, /*inContextuallyTypedAssignment*/false, resolutionContext); - var varSymbol = this.semanticInfoChain.getSymbolForAST(assigningAST); - - var contextualType: PullTypeSymbol = null; - if (varSymbol && inContextuallyTypedAssignment) { - contextualType = varSymbol.type; - } - - resolutionContext.pushNewContextualType(contextualType); - - if (init) { - resolver.resolveAST(init, inContextuallyTypedAssignment, resolutionContext); - } - } - } - } - - private getASTPath(ast: ISyntaxElement): ISyntaxElement[] { - var result: ISyntaxElement[] = []; - - while (ast) { - result.unshift(ast); - ast = ast.parent; - } - - return result; - } - - public pullGetSymbolInformationFromAST(ast: ISyntaxElement, document: Document): PullSymbolInfo { - var resolver = this.semanticInfoChain.getResolver(); - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ true); - if (!context || context.inWithBlock) { - return null; - } - - ast = context.ast; - var symbol = resolver.resolveAST(ast, context.inContextuallyTypedAssignment, context.resolutionContext); - - if (!symbol) { - Debug.assert( - ast.kind() === SyntaxKind.SourceUnit, - "No symbol was found for ast and ast was not source unit. Ast Kind: " + SyntaxKind[ast.kind()] ); - return null; - } - - if (symbol.isTypeReference()) { - symbol = (symbol).getReferencedTypeSymbol(); - } - - var aliasSymbol = this.semanticInfoChain.getAliasSymbolForAST(ast); - - return { - symbol: symbol, - aliasSymbol: aliasSymbol, - ast: ast, - enclosingScopeSymbol: this.getSymbolOfDeclaration(context.enclosingDecl) - }; - } - - public pullGetCallInformationFromAST(ast: ISyntaxElement, document: Document): PullCallSymbolInfo { - // ISyntaxElement has to be a call expression - if (ast.kind() !== SyntaxKind.InvocationExpression && ast.kind() !== SyntaxKind.ObjectCreationExpression) { - return null; - } - - var isNew = ast.kind() === SyntaxKind.ObjectCreationExpression; - - var resolver = this.semanticInfoChain.getResolver(); - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ true); - if (!context || context.inWithBlock) { - return null; - } - - var callResolutionResults = new PullAdditionalCallResolutionData(); - - if (isNew) { - resolver.resolveObjectCreationExpression(ast, context.resolutionContext, callResolutionResults); - } - else { - resolver.resolveInvocationExpression(ast, context.resolutionContext, callResolutionResults); - } - - return { - targetSymbol: callResolutionResults.targetSymbol, - resolvedSignatures: callResolutionResults.resolvedSignatures, - candidateSignature: callResolutionResults.candidateSignature, - ast: ast, - enclosingScopeSymbol: this.getSymbolOfDeclaration(context.enclosingDecl), - isConstructorCall: isNew - }; - } - - public pullGetVisibleMemberSymbolsFromAST(ast: ISyntaxElement, document: Document): PullVisibleSymbolsInfo { - var resolver = this.semanticInfoChain.getResolver(); - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ true); - if (!context || context.inWithBlock) { - return null; - } - - var symbols = resolver.getVisibleMembersFromExpression(ast, context.enclosingDecl, context.resolutionContext); - if (!symbols) { - return null; - } - - return { - symbols: symbols, - enclosingScopeSymbol: this.getSymbolOfDeclaration(context.enclosingDecl) - }; - } - - public pullGetVisibleDeclsFromAST(ast: ISyntaxElement, document: Document): PullDecl[] { - var resolver = this.semanticInfoChain.getResolver(); - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ false); - if (!context || context.inWithBlock) { - return null; - } - - return resolver.getVisibleDecls(context.enclosingDecl); - } - - public pullGetContextualMembersFromAST(ast: ISyntaxElement, document: Document): PullVisibleSymbolsInfo { - // Input has to be an object literal - if (ast.kind() !== SyntaxKind.ObjectLiteralExpression) { - return null; - } - - var resolver = this.semanticInfoChain.getResolver(); - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ true); - if (!context || context.inWithBlock) { - return null; - } - - var members = resolver.getVisibleContextSymbols(context.enclosingDecl, context.resolutionContext); - - return { - symbols: members, - enclosingScopeSymbol: this.getSymbolOfDeclaration(context.enclosingDecl) - }; - } - - public pullGetDeclInformation(decl: PullDecl, ast: ISyntaxElement, document: Document): PullSymbolInfo { - var resolver = this.semanticInfoChain.getResolver(); - - // Note: we not only need to resolve down to the path the ast is at, but we also need to - // resolve the path to where the decl is at. This is because, currently, some decls - // can't fin their symbols unless they are first resolved. For example, a property of - // an object literal must be resolved before its symbol can be retrieved. - var context = this.extractResolutionContextFromAST(resolver, ast, document, /*propagateContextualTypes*/ true); - if (!context || context.inWithBlock) { - return null; - } - - var astForDecl = decl.ast(); - if (!astForDecl) { - return null; - } - - var astForDeclContext = this.extractResolutionContextFromAST( - resolver, astForDecl, this.getDocument(syntaxTree(astForDecl).fileName()), /*propagateContextualTypes*/ true); - if (!astForDeclContext) { - return null; - } - - var symbol = decl.getSymbol(this.semanticInfoChain); - resolver.resolveDeclaredSymbol(symbol, context.resolutionContext); - symbol.setUnresolved(); - - return { - symbol: symbol, - aliasSymbol: null, - ast: ast, - enclosingScopeSymbol: this.getSymbolOfDeclaration(context.enclosingDecl) - }; - } - - public topLevelDeclaration(fileName: string) : PullDecl { - return this.semanticInfoChain.topLevelDecl(fileName); - } - - public getDeclForAST(ast: ISyntaxElement): PullDecl { - return this.semanticInfoChain.getDeclForAST(ast); - } - - public fileNames(): string[] { - return this.semanticInfoChain.fileNames(); - } - - public topLevelDecl(fileName: string): PullDecl { - return this.semanticInfoChain.topLevelDecl(fileName); - } - - private static getLocationText(location: Location, resolvePath: (path: string) => string): string { - return resolvePath(location.fileName()) + "(" + (location.line() + 1) + "," + (location.character() + 1) + ")"; - } - - public static getFullDiagnosticText(diagnostic: Diagnostic, resolvePath: (path: string) => string): string { - var result = ""; - if (diagnostic.fileName()) { - result += this.getLocationText(diagnostic, resolvePath) + ": "; - } - - result += diagnostic.message(); - - var additionalLocations = diagnostic.additionalLocations(); - if (additionalLocations.length > 0) { - result += " " + getLocalizedText(DiagnosticCode.Additional_locations, null) + Environment.newLine; - - for (var i = 0, n = additionalLocations.length; i < n; i++) { - result += "\t" + this.getLocationText(additionalLocations[i], resolvePath) + Environment.newLine; - } - } - else { - result += Environment.newLine; - } - - return result; - } - } - - enum CompilerPhase { - Syntax, - Semantics, - EmitOptionsValidation, - Emit, - DeclarationEmit, - } - - class CompilerIterator implements Iterator { - private compilerPhase: CompilerPhase; - private index: number = -1; - private fileNames: string[] = null; - private _current: CompileResult = null; - private _emitOptions: EmitOptions = null; - private _sharedEmitter: Emitter = null; - private _sharedDeclarationEmitter: DeclarationEmitter = null; - private hadSyntacticDiagnostics: boolean = false; - private hadSemanticDiagnostics: boolean = false; - private hadEmitDiagnostics: boolean = false; - - constructor(private compiler: TypeScriptCompiler, - private resolvePath: (path: string) => string, - private continueOnDiagnostics: boolean, - startingPhase = CompilerPhase.Syntax) { - this.fileNames = compiler.fileNames(); - this.compilerPhase = startingPhase; - } - - public current(): CompileResult { - return this._current; - } - - public moveNext(): boolean { - this._current = null; - - // Attempt to move the iterator 'one step' forward. Note: this may produce no result - // (for example, if we're emitting everything to a single file). So only return once - // we actually have a result, or we're done enumerating. - while (this.moveNextInternal()) { - if (this._current) { - return true; - } - } - - return false; - } - - private moveNextInternal(): boolean { - this.index++; - - // If we're at the end of hte set of files the compiler knows about, then move to the - // next phase of compilation. - while (this.shouldMoveToNextPhase()) { - this.index = 0; - this.compilerPhase++; - } - - if (this.compilerPhase > CompilerPhase.DeclarationEmit) { - // We're totally done. - return false; - } - - switch (this.compilerPhase) { - case CompilerPhase.Syntax: - return this.moveNextSyntaxPhase(); - case CompilerPhase.Semantics: - return this.moveNextSemanticsPhase(); - case CompilerPhase.EmitOptionsValidation: - return this.moveNextEmitOptionsValidationPhase(); - case CompilerPhase.Emit: - return this.moveNextEmitPhase(); - case CompilerPhase.DeclarationEmit: - return this.moveNextDeclarationEmitPhase(); - } - } - - private shouldMoveToNextPhase(): boolean { - switch (this.compilerPhase) { - case CompilerPhase.EmitOptionsValidation: - // Only one step in emit validation. We're done once we do that step. - return this.index === 1; - - case CompilerPhase.Syntax: - case CompilerPhase.Semantics: - // Each of these phases are done when we've processed the last file. - return this.index === this.fileNames.length; - - case CompilerPhase.Emit: - case CompilerPhase.DeclarationEmit: - // Emitting is done when we get 'one' past the end of hte file list. This is - // because we use that step to collect the results from the shared emitter. - return this.index === (this.fileNames.length + 1); - } - - return false; - } - - private moveNextSyntaxPhase(): boolean { - Debug.assert(this.index >= 0 && this.index < this.fileNames.length); - var fileName = this.fileNames[this.index]; - - var diagnostics = this.compiler.getSyntacticDiagnostics(fileName); - if (diagnostics.length) { - if (!this.continueOnDiagnostics) { - this.hadSyntacticDiagnostics = true; - } - - this._current = CompileResult.fromDiagnostics(diagnostics); - } - - return true; - } - - private moveNextSemanticsPhase(): boolean { - // Don't move forward if there were syntax diagnostics. - if (this.hadSyntacticDiagnostics) { - return false; - } - - Debug.assert(this.index >= 0 && this.index < this.fileNames.length); - var fileName = this.fileNames[this.index]; - var diagnostics = this.compiler.getSemanticDiagnostics(fileName); - if (diagnostics.length) { - if (!this.continueOnDiagnostics) { - this.hadSemanticDiagnostics = true; - } - - this._current = CompileResult.fromDiagnostics(diagnostics); - } - - return true; - } - - private moveNextEmitOptionsValidationPhase(): boolean { - Debug.assert(!this.hadSyntacticDiagnostics); - - if (!this._emitOptions) { - this._emitOptions = new EmitOptions(this.compiler, this.resolvePath); - } - - if (this._emitOptions.diagnostic()) { - if (!this.continueOnDiagnostics) { - this.hadEmitDiagnostics = true; - } - - this._current = CompileResult.fromDiagnostics([this._emitOptions.diagnostic()]); - } - - return true; - } - - private moveNextEmitPhase(): boolean { - Debug.assert(!this.hadSyntacticDiagnostics); - Debug.assert(this._emitOptions); - - if (this.hadEmitDiagnostics) { - return false; - } - - Debug.assert(this.index >= 0 && this.index <= this.fileNames.length); - if (this.index < this.fileNames.length) { - var fileName = this.fileNames[this.index]; - var document = this.compiler.getDocument(fileName); - - // Try to emit this single document. It will either get emitted to its own file - // (in which case we'll have our call back triggered), or it will get added to the - // shared emitter (and we'll take care of it after all the files are done. - this._sharedEmitter = this.compiler._emitDocument( - document, this._emitOptions, - outputFiles => { this._current = CompileResult.fromOutputFiles(outputFiles); }, - this._sharedEmitter); - return true; - } - - // If we've moved past all the files, and we have a multi-input->single-output - // emitter set up. Then add the outputs of that emitter to the results. - if (this.index === this.fileNames.length && this._sharedEmitter) { - // Collect shared emit result. - this._current = CompileResult.fromOutputFiles(this._sharedEmitter.getOutputFiles()); - } - - return true; - } - - private moveNextDeclarationEmitPhase(): boolean { - Debug.assert(!this.hadSyntacticDiagnostics); - Debug.assert(!this.hadEmitDiagnostics); - if (this.hadSemanticDiagnostics) { - return false; - } - - if (!this.compiler.compilationSettings().generateDeclarationFiles()) { - return false; - } - - Debug.assert(this.index >= 0 && this.index <= this.fileNames.length); - if (this.index < this.fileNames.length) { - var fileName = this.fileNames[this.index]; - var document = this.compiler.getDocument(fileName); - - this._sharedDeclarationEmitter = this.compiler._emitDocumentDeclarations( - document, this._emitOptions, - file => { this._current = CompileResult.fromOutputFiles([file]); }, - this._sharedDeclarationEmitter); - return true; - } - - // If we've moved past all the files, and we have a multi-input->single-output - // emitter set up. Then add the outputs of that emitter to the results. - if (this.index === this.fileNames.length && this._sharedDeclarationEmitter) { - this._current = CompileResult.fromOutputFiles([this._sharedDeclarationEmitter.getOutputFile()]); - } - - return true; - } - } - - export function compareDataObjects(dst: any, src: any): boolean { - for (var e in dst) { - if (typeof dst[e] === "object") { - if (!compareDataObjects(dst[e], src[e])) - return false; - } - else if (typeof dst[e] !== "function") { - if (dst[e] !== src[e]) - return false; - } - } - return true; - } -} \ No newline at end of file diff --git a/src/services/compiler/walkContext.ts b/src/services/compiler/walkContext.ts deleted file mode 100644 index 0d08f9af8b2..00000000000 --- a/src/services/compiler/walkContext.ts +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// - -module Tools { - export interface IWalkContext { - goChildren: boolean; - goNextSibling: boolean; - // visit siblings in reverse execution order - reverseSiblings: boolean; - } - - export class BaseWalkContext implements IWalkContext { - public goChildren = true; - public goNextSibling = true; - public reverseSiblings = false; - } -} \ No newline at end of file diff --git a/src/services/core/arrayUtilities.ts b/src/services/core/arrayUtilities.ts deleted file mode 100644 index cfb9a1fd4a2..00000000000 --- a/src/services/core/arrayUtilities.ts +++ /dev/null @@ -1,205 +0,0 @@ -/// - -module TypeScript { - export class ArrayUtilities { - public static sequenceEquals(array1: T[], array2: T[], equals: (v1: T, v2: T) => boolean) { - if (array1 === array2) { - return true; - } - - if (!array1 || !array2) { - return false; - } - - if (array1.length !== array2.length) { - return false; - } - - for (var i = 0, n = array1.length; i < n; i++) { - if (!equals(array1[i], array2[i])) { - return false; - } - } - - return true; - } - - public static contains(array: T[], value: T): boolean { - for (var i = 0; i < array.length; i++) { - if (array[i] === value) { - return true; - } - } - - return false; - } - - // Gets unique element array - public static distinct(array: T[], equalsFn?: (a: T, b: T) => boolean): T[] { - var result: T[] = []; - - // TODO: use map when available - for (var i = 0, n = array.length; i < n; i++) { - var current = array[i]; - for (var j = 0; j < result.length; j++) { - if (equalsFn(result[j], current)) { - break; - } - } - - if (j === result.length) { - result.push(current); - } - } - - return result; - } - - public static last(array: T[]): T { - if (array.length === 0) { - throw Errors.argumentOutOfRange('array'); - } - - return array[array.length - 1]; - } - - public static lastOrDefault(array: T[], predicate: (v: T, index: number) => boolean): T { - for (var i = array.length - 1; i >= 0; i--) { - var v = array[i]; - if (predicate(v, i)) { - return v; - } - } - - return undefined; - } - - public static firstOrDefault(array: T[], func: (v: T, index: number) => boolean): T { - for (var i = 0, n = array.length; i < n; i++) { - var value = array[i]; - if (func(value, i)) { - return value; - } - } - - return undefined; - } - - public static first(array: T[], func?: (v: T, index: number) => boolean): T { - for (var i = 0, n = array.length; i < n; i++) { - var value = array[i]; - if (!func || func(value, i)) { - return value; - } - } - - throw Errors.invalidOperation(); - } - - public static sum(array: T[], func: (v: T) => number): number { - var result = 0; - - for (var i = 0, n = array.length; i < n; i++) { - result += func(array[i]); - } - - return result; - } - - public static select(values: T[], func: (v: T) => S): S[] { - var result: S[] = new Array(values.length); - - for (var i = 0; i < values.length; i++) { - result[i] = func(values[i]); - } - - return result; - } - - public static where(values: T[], func: (v: T) => boolean): T[] { - var result = new Array(); - - for (var i = 0; i < values.length; i++) { - if (func(values[i])) { - result.push(values[i]); - } - } - - return result; - } - - public static any(array: T[], func: (v: T) => boolean): boolean { - for (var i = 0, n = array.length; i < n; i++) { - if (func(array[i])) { - return true; - } - } - - return false; - } - - public static all(array: T[], func: (v: T) => boolean): boolean { - for (var i = 0, n = array.length; i < n; i++) { - if (!func(array[i])) { - return false; - } - } - - return true; - } - - public static binarySearch(array: number[], value: number): number { - var low = 0; - var high = array.length - 1; - - while (low <= high) { - var middle = low + ((high - low) >> 1); - var midValue = array[middle]; - - if (midValue === value) { - return middle; - } - else if (midValue > value) { - high = middle - 1; - } - else { - low = middle + 1; - } - } - - return ~low; - } - - public static createArray(length: number, defaultValue: any): T[] { - var result = new Array(length); - for (var i = 0; i < length; i++) { - result[i] = defaultValue; - } - - return result; - } - - public static grow(array: T[], length: number, defaultValue: T): void { - var count = length - array.length; - for (var i = 0; i < count; i++) { - array.push(defaultValue); - } - } - - public static copy(sourceArray: T[], sourceIndex: number, destinationArray: T[], destinationIndex: number, length: number): void { - for (var i = 0; i < length; i++) { - destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; - } - } - - public static indexOf(array: T[], predicate: (v: T) => boolean): number { - for (var i = 0, n = array.length; i < n; i++) { - if (predicate(array[i])) { - return i; - } - } - - return -1; - } - } -} \ No newline at end of file diff --git a/src/services/core/debug.ts b/src/services/core/debug.ts deleted file mode 100644 index d9e20c27870..00000000000 --- a/src/services/core/debug.ts +++ /dev/null @@ -1,33 +0,0 @@ -/// - -module TypeScript { - export enum AssertionLevel { - None = 0, - Normal = 1, - Aggressive = 2, - VeryAggressive = 3, - } - - export class Debug { - private static currentAssertionLevel = AssertionLevel.None; - public static shouldAssert(level: AssertionLevel): boolean { - return this.currentAssertionLevel >= level; - } - - public static assert(expression: any, message?: string, verboseDebugInfo?: () => string): void { - if (!expression) { - var verboseDebugString = ""; - if (verboseDebugInfo) { - verboseDebugString = "\r\nVerbose Debug Information:" + verboseDebugInfo(); - } - - message = message || ""; - throw new Error("Debug Failure. False expression: " + message + verboseDebugString); - } - } - - public static fail(message?: string): void { - Debug.assert(false, message); - } - } -} \ No newline at end of file diff --git a/src/services/core/diagnosticCategory.ts b/src/services/core/diagnosticCategory.ts deleted file mode 100644 index 30c6513ee38..00000000000 --- a/src/services/core/diagnosticCategory.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -module TypeScript { - export enum DiagnosticCategory { - Warning, - Error, - Message, - NoPrefix, - } -} \ No newline at end of file diff --git a/src/services/core/diagnosticCore.ts b/src/services/core/diagnosticCore.ts deleted file mode 100644 index 5b860dcd31f..00000000000 --- a/src/services/core/diagnosticCore.ts +++ /dev/null @@ -1,195 +0,0 @@ -/// - -module TypeScript { - export class Location { - private _fileName: string; - private _lineMap: LineMap; - private _start: number; - private _length: number; - - constructor(fileName: string, lineMap: LineMap, start: number, length: number) { - this._fileName = fileName; - this._lineMap = lineMap; - this._start = start; - this._length = length; - } - - public fileName(): string { - return this._fileName; - } - - public lineMap(): LineMap { - return this._lineMap; - } - - public line(): number { - return this._lineMap ? this._lineMap.getLineNumberFromPosition(this.start()) : 0; - } - - public character(): number { - return this._lineMap ? this._lineMap.getLineAndCharacterFromPosition(this.start()).character() : 0; - } - - public start(): number { - return this._start; - } - - public length(): number { - return this._length; - } - - public static equals(location1: Location, location2: Location): boolean { - return location1._fileName === location2._fileName && - location1._start === location2._start && - location1._length === location2._length; - } - } - - export class Diagnostic extends Location { - private _diagnosticKey: string; - private _arguments: any[]; - private _additionalLocations: Location[]; - - constructor(fileName: string, lineMap: LineMap, start: number, length: number, diagnosticKey: string, _arguments?: any[], additionalLocations?: Location[]) { - super(fileName, lineMap, start, length); - this._diagnosticKey = diagnosticKey; - this._arguments = (_arguments && _arguments.length > 0) ? _arguments : undefined; - this._additionalLocations = (additionalLocations && additionalLocations.length > 0) ? additionalLocations : undefined; - } - - public toJSON(key: any): any { - var result: any = {}; - result.start = this.start(); - result.length = this.length(); - - result.diagnosticCode = this._diagnosticKey; - - var _arguments: any[] = (this).arguments(); - if (_arguments && _arguments.length > 0) { - result.arguments = _arguments; - } - - return result; - } - - public diagnosticKey(): string { - return this._diagnosticKey; - } - - public arguments(): any[] { - return this._arguments; - } - - /** - * Get the text of the message in the given language. - */ - public text(): string { - return TypeScript.getLocalizedText(this._diagnosticKey, this._arguments); - } - - /** - * Get the text of the message including the error code in the given language. - */ - public message(): string { - return TypeScript.getDiagnosticMessage(this._diagnosticKey, this._arguments); - } - - /** - * If a derived class has additional information about other referenced symbols, it can - * expose the locations of those symbols in a general way, so they can be reported along - * with the error. - */ - public additionalLocations(): Location[] { - return this._additionalLocations || []; - } - - public static equals(diagnostic1: Diagnostic, diagnostic2: Diagnostic): boolean { - return Location.equals(diagnostic1, diagnostic2) && - diagnostic1._diagnosticKey === diagnostic2._diagnosticKey && - ArrayUtilities.sequenceEquals(diagnostic1._arguments, diagnostic2._arguments, (v1, v2) => v1 === v2); - } - - public info(): DiagnosticInfo { - return getDiagnosticInfoFromKey(this.diagnosticKey()); - } - } - - export function newLine(): string { - // TODO: We need to expose an extensibility point on our hosts to have them tell us what - // they want the newline string to be. That way we can get the correct result regardless - // of which host we use - return "\r\n"; - } - - function getLargestIndex(diagnostic: string): number { - var largest = -1; - var regex = /\{(\d+)\}/g; - - var match: RegExpExecArray; - while (match = regex.exec(diagnostic)) { - var val = parseInt(match[1]); - if (!isNaN(val) && val > largest) { - largest = val; - } - } - - return largest; - } - - function getDiagnosticInfoFromKey(diagnosticKey: string): DiagnosticInfo { - var result: DiagnosticInfo = diagnosticInformationMap[diagnosticKey]; - Debug.assert(result); - return result; - } - - export function getLocalizedText(diagnosticKey: string, args: any[]): string { - - var diagnosticMessageText: string = diagnosticKey; - Debug.assert(diagnosticMessageText !== undefined && diagnosticMessageText !== null); - - var actualCount = args ? args.length : 0; - // We have a string like "foo_0_bar_1". We want to find the largest integer there. - // (i.e.'1'). We then need one more arg than that to be correct. - var expectedCount = 1 + getLargestIndex(diagnosticKey); - - if (expectedCount !== actualCount) { - throw new Error(getLocalizedText(DiagnosticCode.Expected_0_arguments_to_message_got_1_instead, [expectedCount, actualCount])); - } - - // This should also be the same number of arguments as the message text - var valueCount = 1 + getLargestIndex(diagnosticMessageText); - if (valueCount !== expectedCount) { - throw new Error(getLocalizedText(DiagnosticCode.Expected_the_message_0_to_have_1_arguments_but_it_had_2, [diagnosticMessageText, expectedCount, valueCount])); - } - - diagnosticMessageText = diagnosticMessageText.replace(/{(\d+)}/g, function (match, num?) { - return typeof args[num] !== 'undefined' - ? args[num] - : match; - }); - - diagnosticMessageText = diagnosticMessageText.replace(/{(NL)}/g, function (match) { - return TypeScript.newLine(); - }); - - return diagnosticMessageText; - } - - export function getDiagnosticMessage(diagnosticKey: string, args: any[]): string { - var diagnostic = getDiagnosticInfoFromKey(diagnosticKey); - var diagnosticMessageText = getLocalizedText(diagnosticKey, args); - - var message: string; - if (diagnostic.category === DiagnosticCategory.Error) { - message = getLocalizedText(DiagnosticCode.error_TS_0_1, [diagnostic.code, diagnosticMessageText]); - } - else if (diagnostic.category === DiagnosticCategory.Warning) { - message = getLocalizedText(DiagnosticCode.warning_TS_0_1, [diagnostic.code, diagnosticMessageText]); - } - else { - message = diagnosticMessageText; - } - - return message; - } -} \ No newline at end of file diff --git a/src/services/core/diagnosticInfo.ts b/src/services/core/diagnosticInfo.ts deleted file mode 100644 index 515f3cff309..00000000000 --- a/src/services/core/diagnosticInfo.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// - -module TypeScript { - export interface DiagnosticInfo { - category: DiagnosticCategory; - message: string; - code: number; - } -} \ No newline at end of file diff --git a/src/services/core/errors.ts b/src/services/core/errors.ts deleted file mode 100644 index 77f0643f333..00000000000 --- a/src/services/core/errors.ts +++ /dev/null @@ -1,29 +0,0 @@ -/// - -module TypeScript { - export class Errors { - public static argument(argument: string, message?: string): Error { - return new Error("Invalid argument: " + argument + ". " + message); - } - - public static argumentOutOfRange(argument: string): Error { - return new Error("Argument out of range: " + argument); - } - - public static argumentNull(argument: string): Error { - return new Error("Argument null: " + argument); - } - - public static abstract(): Error { - return new Error("Operation not implemented properly by subclass."); - } - - public static notYetImplemented(): Error { - return new Error("Not yet implemented."); - } - - public static invalidOperation(message?: string): Error { - return new Error("Invalid operation: " + message); - } - } -} \ No newline at end of file diff --git a/src/services/core/integerUtilities.ts b/src/services/core/integerUtilities.ts deleted file mode 100644 index b0a4d6667b9..00000000000 --- a/src/services/core/integerUtilities.ts +++ /dev/null @@ -1,22 +0,0 @@ -/// - -module TypeScript { - export module IntegerUtilities { - export function integerDivide(numerator: number, denominator: number): number { - return (numerator / denominator) >> 0; - } - - export function integerMultiplyLow32Bits(n1: number, n2: number): number { - var resultLow32 = (((n1 & 0xffff0000) * n2) >>> 0) + (((n1 & 0x0000ffff) * n2) >>> 0) >>> 0; - return resultLow32; - } - - export function isInteger(text: string): boolean { - return /^[0-9]+$/.test(text); - } - - export function isHexInteger(text: string): boolean { - return /^0(x|X)[0-9a-fA-F]+$/.test(text); - } - } -} \ No newline at end of file diff --git a/src/services/core/lineMap.ts b/src/services/core/lineMap.ts deleted file mode 100644 index 947a4fb0bb2..00000000000 --- a/src/services/core/lineMap.ts +++ /dev/null @@ -1,87 +0,0 @@ -/// - -module TypeScript { - export interface ILineAndCharacter { - line: number; - character: number; - } - - export class LineMap { - public static empty = new LineMap(() => [0], 0); - private _lineStarts: number[] = undefined; - - constructor(private _computeLineStarts: () => number[], private length: number) { - } - - public toJSON(key: any) { - return { lineStarts: this.lineStarts(), length: this.length }; - } - - public equals(other: LineMap): boolean { - return this.length === other.length && - ArrayUtilities.sequenceEquals(this.lineStarts(), other.lineStarts(), (v1, v2) => v1 === v2); - } - - public lineStarts(): number[] { - if (!this._lineStarts) { - this._lineStarts = this._computeLineStarts(); - } - - return this._lineStarts; - } - - public lineCount(): number { - return this.lineStarts().length; - } - - public getPosition(line: number, character: number): number { - return this.lineStarts()[line] + character; - } - - public getLineNumberFromPosition(position: number): number { - if (position < 0 || position > this.length) { - throw Errors.argumentOutOfRange("position"); - } - - if (position === this.length) { - // this can happen when the user tried to get the line of items - // that are at the absolute end of this text (i.e. the EndOfLine - // token, or missing tokens that are at the end of the text). - // In this case, we want the last line in the text. - return this.lineCount() - 1; - } - - // Binary search to find the right line - var lineNumber = ArrayUtilities.binarySearch(this.lineStarts(), position); - if (lineNumber < 0) { - lineNumber = (~lineNumber) - 1; - } - - return lineNumber; - } - - public getLineStartPosition(lineNumber: number): number { - return this.lineStarts()[lineNumber]; - } - - public fillLineAndCharacterFromPosition(position: number, lineAndCharacter: ILineAndCharacter): void { - if (position < 0 || position > this.length) { - throw Errors.argumentOutOfRange("position"); - } - - var lineNumber = this.getLineNumberFromPosition(position); - lineAndCharacter.line = lineNumber; - lineAndCharacter.character = position - this.lineStarts()[lineNumber]; - } - - public getLineAndCharacterFromPosition(position: number): LineAndCharacter { - if (position < 0 || position > this.length) { - throw Errors.argumentOutOfRange("position"); - } - - var lineNumber = this.getLineNumberFromPosition(position); - - return new LineAndCharacter(lineNumber, position - this.lineStarts()[lineNumber]); - } - } -} \ No newline at end of file diff --git a/src/services/core/linePosition.ts b/src/services/core/linePosition.ts deleted file mode 100644 index 119c367ee3e..00000000000 --- a/src/services/core/linePosition.ts +++ /dev/null @@ -1,35 +0,0 @@ -/// - -module TypeScript { - export class LineAndCharacter { - private _line: number = 0; - private _character: number = 0; - - /** - * Initializes a new instance of a LinePosition with the given line and character. ArgumentOutOfRangeException if "line" or "character" is less than zero. - * @param line The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). - * @param character The character position in the line. - */ - - constructor(line: number, character: number) { - if (line < 0) { - throw Errors.argumentOutOfRange("line"); - } - - if (character < 0) { - throw Errors.argumentOutOfRange("character"); - } - - this._line = line; - this._character = character; - } - - public line(): number { - return this._line; - } - - public character(): number { - return this._character; - } - } -} \ No newline at end of file diff --git a/src/services/core/mathPrototype.ts b/src/services/core/mathPrototype.ts deleted file mode 100644 index fe4c23f9d91..00000000000 --- a/src/services/core/mathPrototype.ts +++ /dev/null @@ -1,13 +0,0 @@ -/// - -module TypeScript { - export class MathPrototype { - public static max(a: number, b: number): number { - return a >= b ? a : b; - } - - public static min(a: number, b: number): number { - return a <= b ? a : b; - } - } -} \ No newline at end of file diff --git a/src/services/core/references.ts b/src/services/core/references.ts deleted file mode 100644 index 8dcded411a6..00000000000 --- a/src/services/core/references.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// - -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// \ No newline at end of file diff --git a/src/services/core/stringTable.ts b/src/services/core/stringTable.ts deleted file mode 100644 index 18af8be8b5c..00000000000 --- a/src/services/core/stringTable.ts +++ /dev/null @@ -1,159 +0,0 @@ -/// - -module TypeScript.Collections { - export var DefaultStringTableCapacity = 256; - - class StringTableEntry { - constructor(public Text: string, - public HashCode: number, - public Next: StringTableEntry) { - } - } - - // A table of interned strings. Faster and better than an arbitrary hashtable for the needs of the - // scanner. Specifically, the scanner operates over a sliding window of characters, with a start - // and end pointer for the current lexeme. The scanner then wants to get the *interned* string - // represented by that subsection. - // - // Importantly, if the string is already interned, then it wants ask "is the string represented by - // this section of a char array contained within the table" in a non-allocating fashion. i.e. if - // you have "[' ', 'p', 'u', 'b', 'l', 'i', 'c', ' ']" and you ask to get the string represented by - // range [1, 7), then this table will return "public" without any allocations if that value was - // already in the table. - // - // Of course, if the value is not in the table then there will be an initial cost to allocate the - // string and the bucket for the table. However, that is only incurred the first time each unique - // string is added. - export class StringTable { - // TODO: uncomment this once typecheck bug is fixed. - private entries: StringTableEntry[]; - private count: number = 0; - - constructor(capacity: number) { - var size = Hash.getPrime(capacity); - this.entries = ArrayUtilities.createArray(size, null); - } - - public addCharArray(key: number[], start: number, len: number): string { - // Compute the hash for this key. Also ensure that it fits within 31 bits (so that it - // stays a non-heap integer, and so we can index into the array safely). - var hashCode = Hash.computeSimple31BitCharArrayHashCode(key, start, len) & 0x7FFFFFFF; - // Debug.assert(hashCode > 0); - - // First see if we already have the string represented by "key[start, start + len)" already - // present in this table. If we do, just return that string. Do this without any - // allocations - var entry = this.findCharArrayEntry(key, start, len, hashCode); - if (entry !== null) { - return entry.Text; - } - - // We don't have an entry for that string in our table. Convert that - var slice: number[] = key.slice(start, start + len); - return this.addEntry(StringUtilities.fromCharCodeArray(slice), hashCode); - } - - private findCharArrayEntry(key: number[], start: number, len: number, hashCode: number) { - for (var e = this.entries[hashCode % this.entries.length]; e !== null; e = e.Next) { - if (e.HashCode === hashCode && StringTable.textCharArrayEquals(e.Text, key, start, len)) { - return e; - } - } - - return null; - } - - private addEntry(text: string, hashCode: number): string { - var index = hashCode % this.entries.length; - - var e = new StringTableEntry(text, hashCode, this.entries[index]); - - this.entries[index] = e; - - // We grow when our load factor equals 1. I tried different load factors (like .75 and - // .5), however they seemed to have no effect on running time. With a load factor of 1 - // we seem to get about 80% slot fill rate with an average of around 1.25 table entries - // per slot. - if (this.count === this.entries.length) { - this.grow(); - } - - this.count++; - return e.Text; - } - - //private dumpStats() { - // var standardOut = Environment.standardOut; - - // standardOut.WriteLine("----------------------") - // standardOut.WriteLine("String table stats"); - // standardOut.WriteLine("Count : " + this.count); - // standardOut.WriteLine("Entries Length : " + this.entries.length); - - // var longestSlot = 0; - // var occupiedSlots = 0; - // for (var i = 0; i < this.entries.length; i++) { - // if (this.entries[i] !== null) { - // occupiedSlots++; - - // var current = this.entries[i]; - // var slotCount = 0; - // while (current !== null) { - // slotCount++; - // current = current.Next; - // } - - // longestSlot = MathPrototype.max(longestSlot, slotCount); - // } - // } - - // standardOut.WriteLine("Occupied slots : " + occupiedSlots); - // standardOut.WriteLine("Longest slot : " + longestSlot); - // standardOut.WriteLine("Avg Length/Slot : " + (this.count / occupiedSlots)); - // standardOut.WriteLine("----------------------"); - //} - - private grow(): void { - // this.dumpStats(); - - var newSize = Hash.expandPrime(this.entries.length); - - var oldEntries = this.entries; - var newEntries: StringTableEntry[] = ArrayUtilities.createArray(newSize, null); - - this.entries = newEntries; - - for (var i = 0; i < oldEntries.length; i++) { - var e = oldEntries[i]; - while (e !== null) { - var newIndex = e.HashCode % newSize; - var tmp = e.Next; - e.Next = newEntries[newIndex]; - newEntries[newIndex] = e; - e = tmp; - } - } - - // this.dumpStats(); - } - - private static textCharArrayEquals(text: string, array: number[], start: number, length: number): boolean { - if (text.length !== length) { - return false; - } - - var s = start; - for (var i = 0; i < length; i++) { - if (text.charCodeAt(i) !== array[s]) { - return false; - } - - s++; - } - - return true; - } - } - - export var DefaultStringTable = new StringTable(DefaultStringTableCapacity); -} \ No newline at end of file diff --git a/src/services/core/stringUtilities.ts b/src/services/core/stringUtilities.ts deleted file mode 100644 index 0ed2b4a7e8f..00000000000 --- a/src/services/core/stringUtilities.ts +++ /dev/null @@ -1,21 +0,0 @@ -/// - -module TypeScript { - export class StringUtilities { - public static isString(value: any): boolean { - return Object.prototype.toString.apply(value, []) === '[object String]'; - } - - public static endsWith(string: string, value: string): boolean { - return string.substring(string.length - value.length, string.length) === value; - } - - public static startsWith(string: string, value: string): boolean { - return string.substr(0, value.length) === value; - } - - public static repeat(value: string, count: number) { - return Array(count + 1).join(value); - } - } -} \ No newline at end of file diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 180ff0c9e95..6a5ed25459e 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -23,7 +23,7 @@ module ts.formatting { * Indentation for the scope that can be dynamically recomputed. * i.e * while(true) - * { var x; + * { let x; * } * Normally indentation is applied only to the first token in line so at glance 'var' should not be touched. * However if some format rule adds new line between '}' and 'var' 'var' will become @@ -67,12 +67,12 @@ module ts.formatting { } export function formatOnEnter(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeOptions): TextChange[] { - var line = sourceFile.getLineAndCharacterOfPosition(position).line; + let line = sourceFile.getLineAndCharacterOfPosition(position).line; if (line === 0) { return []; } // get the span for the previous\current line - var span = { + let span = { // get start position for the previous line pos: getStartPositionOfLine(line - 1, sourceFile), // get end position for the current line (end value is exclusive so add 1 to the result) @@ -90,7 +90,7 @@ module ts.formatting { } export function formatDocument(sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeOptions): TextChange[] { - var span = { + let span = { pos: 0, end: sourceFile.text.length }; @@ -99,7 +99,7 @@ module ts.formatting { export function formatSelection(start: number, end: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeOptions): TextChange[] { // format from the beginning of the line - var span = { + let span = { pos: getLineStartPositionForPosition(start, sourceFile), end: end }; @@ -107,11 +107,11 @@ module ts.formatting { } function formatOutermostParent(position: number, expectedLastToken: SyntaxKind, sourceFile: SourceFile, options: FormatCodeOptions, rulesProvider: RulesProvider, requestKind: FormattingRequestKind): TextChange[] { - var parent = findOutermostParent(position, expectedLastToken, sourceFile); + let parent = findOutermostParent(position, expectedLastToken, sourceFile); if (!parent) { return []; } - var span = { + let span = { pos: getLineStartPositionForPosition(parent.getStart(sourceFile), sourceFile), end: parent.end }; @@ -119,7 +119,7 @@ module ts.formatting { } function findOutermostParent(position: number, expectedTokenKind: SyntaxKind, sourceFile: SourceFile): Node { - var precedingToken = findPrecedingToken(position, sourceFile); + let precedingToken = findPrecedingToken(position, sourceFile); // when it is claimed that trigger character was typed at given position // we verify that there is a token with a matching kind whose end is equal to position (because the character was just typed). @@ -134,13 +134,13 @@ module ts.formatting { // walk up and search for the parent node that ends at the same position with precedingToken. // for cases like this // - // var x = 1; + // let x = 1; // while (true) { // } // after typing close curly in while statement we want to reformat just the while statement. // However if we just walk upwards searching for the parent that has the same end value - // we'll end up with the whole source file. isListElement allows to stop on the list element level - var current = precedingToken; + let current = precedingToken; while (current && current.parent && current.parent.end === precedingToken.end && @@ -159,7 +159,7 @@ module ts.formatting { case SyntaxKind.InterfaceDeclaration: return rangeContainsRange((parent).members, node); case SyntaxKind.ModuleDeclaration: - var body = (parent).body; + let body = (parent).body; return body && body.kind === SyntaxKind.Block && rangeContainsRange((body).statements, node); case SyntaxKind.SourceFile: case SyntaxKind.Block: @@ -177,9 +177,9 @@ module ts.formatting { return find(sourceFile); function find(n: Node): Node { - var candidate = forEachChild(n, c => startEndContainsRange(c.getStart(sourceFile), c.end, range) && c); + let candidate = forEachChild(n, c => startEndContainsRange(c.getStart(sourceFile), c.end, range) && c); if (candidate) { - var result = find(candidate); + let result = find(candidate); if (result) { return result; } @@ -199,7 +199,7 @@ module ts.formatting { } // pick only errors that fall in range - var sorted = errors + let sorted = errors .filter(d => rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length)) .sort((e1, e2) => e1.start - e2.start); @@ -207,7 +207,7 @@ module ts.formatting { return rangeHasNoErrors; } - var index = 0; + let index = 0; return r => { // in current implementation sequence of arguments [r1, r2...] is monotonically increasing. @@ -218,7 +218,7 @@ module ts.formatting { return false; } - var error = sorted[index]; + let error = sorted[index]; if (r.end <= error.start) { // specified range ends before the error refered by 'index' - no error in range return false; @@ -244,12 +244,12 @@ module ts.formatting { * and return its end as start position for the scanner. */ function getScanStartPosition(enclosingNode: Node, originalRange: TextRange, sourceFile: SourceFile): number { - var start = enclosingNode.getStart(sourceFile); + let start = enclosingNode.getStart(sourceFile); if (start === originalRange.pos && enclosingNode.end === originalRange.end) { return start; } - var precedingToken = findPrecedingToken(originalRange.pos, sourceFile); + let precedingToken = findPrecedingToken(originalRange.pos, sourceFile); if (!precedingToken) { // no preceding token found - start from the beginning of enclosing node return enclosingNode.pos; @@ -280,10 +280,10 @@ module ts.formatting { * to the initial indentation. */ function getOwnOrInheritedDelta(n: Node, options: FormatCodeOptions, sourceFile: SourceFile): number { - var previousLine = Constants.Unknown; - var childKind = SyntaxKind.Unknown; + let previousLine = Constants.Unknown; + let childKind = SyntaxKind.Unknown; while (n) { - var line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; + let line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== Constants.Unknown && line !== previousLine) { break; } @@ -305,30 +305,30 @@ module ts.formatting { rulesProvider: RulesProvider, requestKind: FormattingRequestKind): TextChange[] { - var rangeContainsError = prepareRangeContainsErrorFunction(sourceFile.parseDiagnostics, originalRange); + let rangeContainsError = prepareRangeContainsErrorFunction(sourceFile.parseDiagnostics, originalRange); // formatting context is used by rules provider - var formattingContext = new FormattingContext(sourceFile, requestKind); + let formattingContext = new FormattingContext(sourceFile, requestKind); // find the smallest node that fully wraps the range and compute the initial indentation for the node - var enclosingNode = findEnclosingNode(originalRange, sourceFile); + let enclosingNode = findEnclosingNode(originalRange, sourceFile); - var formattingScanner = getFormattingScanner(sourceFile, getScanStartPosition(enclosingNode, originalRange, sourceFile), originalRange.end); + let formattingScanner = getFormattingScanner(sourceFile, getScanStartPosition(enclosingNode, originalRange, sourceFile), originalRange.end); - var initialIndentation = SmartIndenter.getIndentationForNode(enclosingNode, originalRange, sourceFile, options); + let initialIndentation = SmartIndenter.getIndentationForNode(enclosingNode, originalRange, sourceFile, options); - var previousRangeHasError: boolean; - var previousRange: TextRangeWithKind; - var previousParent: Node; - var previousRangeStartLine: number; + let previousRangeHasError: boolean; + let previousRange: TextRangeWithKind; + let previousParent: Node; + let previousRangeStartLine: number; - var edits: TextChange[] = []; + let edits: TextChange[] = []; formattingScanner.advance(); if (formattingScanner.isOnToken()) { - var startLine = sourceFile.getLineAndCharacterOfPosition(enclosingNode.getStart(sourceFile)).line; - var delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); + let startLine = sourceFile.getLineAndCharacterOfPosition(enclosingNode.getStart(sourceFile)).line; + let delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, initialIndentation, delta); } @@ -357,9 +357,9 @@ module ts.formatting { } } else { - var startLine = sourceFile.getLineAndCharacterOfPosition(startPos).line; - var startLinePosition = getLineStartPositionForPosition(startPos, sourceFile); - var column = SmartIndenter.findFirstNonWhitespaceColumn(startLinePosition, startPos, sourceFile, options); + let startLine = sourceFile.getLineAndCharacterOfPosition(startPos).line; + let startLinePosition = getLineStartPositionForPosition(startPos, sourceFile); + let column = SmartIndenter.findFirstNonWhitespaceColumn(startLinePosition, startPos, sourceFile, options); if (startLine !== parentStartLine || startPos === column) { return column } @@ -376,7 +376,7 @@ module ts.formatting { parentDynamicIndentation: DynamicIndentation, effectiveParentStartLine: number): Indentation { - var indentation = inheritedIndentation; + let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { if (isSomeBlock(node.kind)) { // blocks should be indented in @@ -419,6 +419,29 @@ module ts.formatting { } } + function getFirstNonDecoratorTokenOfNode(node: Node) { + if (node.modifiers && node.modifiers.length) { + return node.modifiers[0].kind; + } + switch (node.kind) { + case SyntaxKind.ClassDeclaration: return SyntaxKind.ClassKeyword; + case SyntaxKind.InterfaceDeclaration: return SyntaxKind.InterfaceKeyword; + case SyntaxKind.FunctionDeclaration: return SyntaxKind.FunctionKeyword; + case SyntaxKind.EnumDeclaration: return SyntaxKind.EnumDeclaration; + case SyntaxKind.GetAccessor: return SyntaxKind.GetKeyword; + case SyntaxKind.SetAccessor: return SyntaxKind.SetKeyword; + case SyntaxKind.MethodDeclaration: + if ((node).asteriskToken) { + return SyntaxKind.AsteriskToken; + } + // fall-through + + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.Parameter: + return (node).name.kind; + } + } + function getDynamicIndentation(node: Node, nodeStartLine: number, indentation: number, delta: number): DynamicIndentation { return { getIndentationForComment: kind => { @@ -434,6 +457,12 @@ module ts.formatting { return indentation; }, getIndentationForToken: (line, kind) => { + if (nodeStartLine !== line && node.decorators) { + if (kind === getFirstNonDecoratorTokenOfNode(node)) { + // if this token is the first token following the list of decorators, we do not need to indent + return indentation; + } + } switch (kind) { // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent case SyntaxKind.OpenBraceToken: @@ -442,6 +471,7 @@ module ts.formatting { case SyntaxKind.CloseBracketToken: case SyntaxKind.ElseKeyword: case SyntaxKind.WhileKeyword: + case SyntaxKind.AtToken: return indentation; default: // if token line equals to the line of containing node (this is a first token in the node) - use node indentation @@ -475,7 +505,7 @@ module ts.formatting { return; } - var nodeDynamicIndentation = getDynamicIndentation(node, nodeStartLine, indentation, delta); + let nodeDynamicIndentation = getDynamicIndentation(node, nodeStartLine, indentation, delta); // a useful observations when tracking context node // / @@ -489,7 +519,7 @@ module ts.formatting { // context node is set to parent node value after processing every child node // context node is set to parent of the token after processing every token - var childContextNode = contextNode; + let childContextNode = contextNode; // if there are any tokens that logically belong to node and interleave child nodes // such tokens will be consumed in processChildNode for for the child that follows them @@ -504,7 +534,7 @@ module ts.formatting { // proceed any tokens in the node that are located after child nodes while (formattingScanner.isOnToken()) { - var tokenInfo = formattingScanner.readTokenInfo(node); + let tokenInfo = formattingScanner.readTokenInfo(node); if (tokenInfo.token.end > node.end) { break; } @@ -519,12 +549,12 @@ module ts.formatting { parentStartLine: number, isListItem: boolean): number { - var childStartPos = child.getStart(sourceFile); + let childStartPos = child.getStart(sourceFile); - var childStart = sourceFile.getLineAndCharacterOfPosition(childStartPos); + let childStart = sourceFile.getLineAndCharacterOfPosition(childStartPos); // if child is a list item - try to get its indentation - var childIndentationAmount = Constants.Unknown; + let childIndentationAmount = Constants.Unknown; if (isListItem) { childIndentationAmount = tryComputeIndentationForListItem(childStartPos, child.end, parentStartLine, originalRange, inheritedIndentation); if (childIndentationAmount !== Constants.Unknown) { @@ -543,7 +573,7 @@ module ts.formatting { while (formattingScanner.isOnToken()) { // proceed any parent tokens that are located prior to child.getStart() - var tokenInfo = formattingScanner.readTokenInfo(node); + let tokenInfo = formattingScanner.readTokenInfo(node); if (tokenInfo.token.end > childStartPos) { // stop when formatting scanner advances past the beginning of the child break; @@ -558,13 +588,13 @@ module ts.formatting { if (isToken(child)) { // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules - var tokenInfo = formattingScanner.readTokenInfo(child); + let tokenInfo = formattingScanner.readTokenInfo(child); Debug.assert(tokenInfo.token.end === child.end); consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); return inheritedIndentation; } - var childIndentation = computeIndentation(child, childStart.line, childIndentationAmount, node, parentDynamicIndentation, parentStartLine); + let childIndentation = computeIndentation(child, childStart.line, childIndentationAmount, node, parentDynamicIndentation, parentStartLine); processNode(child, childContextNode, childStart.line, childIndentation.indentation, childIndentation.delta); @@ -578,16 +608,16 @@ module ts.formatting { parentStartLine: number, parentDynamicIndentation: DynamicIndentation): void { - var listStartToken = getOpenTokenForList(parent, nodes); - var listEndToken = getCloseTokenForOpenToken(listStartToken); + let listStartToken = getOpenTokenForList(parent, nodes); + let listEndToken = getCloseTokenForOpenToken(listStartToken); - var listDynamicIndentation = parentDynamicIndentation; - var startLine = parentStartLine; + let listDynamicIndentation = parentDynamicIndentation; + let startLine = parentStartLine; if (listStartToken !== SyntaxKind.Unknown) { // introduce a new indentation scope for lists (including list start and end tokens) while (formattingScanner.isOnToken()) { - var tokenInfo = formattingScanner.readTokenInfo(parent); + let tokenInfo = formattingScanner.readTokenInfo(parent); if (tokenInfo.token.end > nodes.pos) { // stop when formatting scanner moves past the beginning of node list break; @@ -595,7 +625,7 @@ module ts.formatting { else if (tokenInfo.token.kind === listStartToken) { // consume list start token startLine = sourceFile.getLineAndCharacterOfPosition(tokenInfo.token.pos).line; - var indentation = + let indentation = computeIndentation(tokenInfo.token, startLine, Constants.Unknown, parent, parentDynamicIndentation, startLine); listDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation.indentation, indentation.delta); @@ -608,14 +638,14 @@ module ts.formatting { } } - var inheritedIndentation = Constants.Unknown; - for (var i = 0, len = nodes.length; i < len; ++i) { - inheritedIndentation = processChildNode(nodes[i], inheritedIndentation, node, listDynamicIndentation, startLine, /*isListElement*/ true) + let inheritedIndentation = Constants.Unknown; + for (let child of nodes) { + inheritedIndentation = processChildNode(child, inheritedIndentation, node, listDynamicIndentation, startLine, /*isListElement*/ true) } if (listEndToken !== SyntaxKind.Unknown) { if (formattingScanner.isOnToken()) { - var tokenInfo = formattingScanner.readTokenInfo(parent); + let tokenInfo = formattingScanner.readTokenInfo(parent); // consume the list end token only if it is still belong to the parent // there might be the case when current token matches end token but does not considered as one // function (x: function) <-- @@ -631,21 +661,21 @@ module ts.formatting { function consumeTokenAndAdvanceScanner(currentTokenInfo: TokenInfo, parent: Node, dynamicIndentation: DynamicIndentation): void { Debug.assert(rangeContainsRange(parent, currentTokenInfo.token)); - var lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); - var indentToken = false; + let lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); + let indentToken = false; if (currentTokenInfo.leadingTrivia) { processTrivia(currentTokenInfo.leadingTrivia, parent, childContextNode, dynamicIndentation); } - var lineAdded: boolean; - var isTokenInRange = rangeContainsRange(originalRange, currentTokenInfo.token); + let lineAdded: boolean; + let isTokenInRange = rangeContainsRange(originalRange, currentTokenInfo.token); - var tokenStart = sourceFile.getLineAndCharacterOfPosition(currentTokenInfo.token.pos); + let tokenStart = sourceFile.getLineAndCharacterOfPosition(currentTokenInfo.token.pos); if (isTokenInRange) { - var rangeHasError = rangeContainsError(currentTokenInfo.token); + let rangeHasError = rangeContainsError(currentTokenInfo.token); // save prevStartLine since processRange will overwrite this value with current ones - var prevStartLine = previousRangeStartLine; + let prevStartLine = previousRangeStartLine; lineAdded = processRange(currentTokenInfo.token, tokenStart, parent, childContextNode, dynamicIndentation); if (rangeHasError) { // do not indent comments\token if token range overlaps with some error @@ -666,24 +696,23 @@ module ts.formatting { } if (indentToken) { - var indentNextTokenOrTrivia = true; + let indentNextTokenOrTrivia = true; if (currentTokenInfo.leadingTrivia) { - for (var i = 0, len = currentTokenInfo.leadingTrivia.length; i < len; ++i) { - var triviaItem = currentTokenInfo.leadingTrivia[i]; + for (let triviaItem of currentTokenInfo.leadingTrivia) { if (!rangeContainsRange(originalRange, triviaItem)) { continue; } - var triviaStartLine = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos).line; + let triviaStartLine = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos).line; switch (triviaItem.kind) { case SyntaxKind.MultiLineCommentTrivia: - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); indentMultilineComment(triviaItem, commentIndentation, /*firstLineIsIndented*/ !indentNextTokenOrTrivia); indentNextTokenOrTrivia = false; break; case SyntaxKind.SingleLineCommentTrivia: if (indentNextTokenOrTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); + let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind); insertIndentation(triviaItem.pos, commentIndentation, /*lineAdded*/ false); indentNextTokenOrTrivia = false; } @@ -697,7 +726,7 @@ module ts.formatting { // indent token only if is it is in target range and does not overlap with any error ranges if (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) { - var tokenIndentation = dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind); + let tokenIndentation = dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind); insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); } } @@ -709,10 +738,9 @@ module ts.formatting { } function processTrivia(trivia: TextRangeWithKind[], parent: Node, contextNode: Node, dynamicIndentation: DynamicIndentation): void { - for (var i = 0, len = trivia.length; i < len; ++i) { - var triviaItem = trivia[i]; + for (let triviaItem of trivia) { if (isComment(triviaItem.kind) && rangeContainsRange(originalRange, triviaItem)) { - var triviaItemStart = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos); + let triviaItemStart = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos); processRange(triviaItem, triviaItemStart, parent, contextNode, dynamicIndentation); } } @@ -724,12 +752,12 @@ module ts.formatting { contextNode: Node, dynamicIndentation: DynamicIndentation): boolean { - var rangeHasError = rangeContainsError(range); - var lineAdded: boolean; + let rangeHasError = rangeContainsError(range); + let lineAdded: boolean; if (!rangeHasError && !previousRangeHasError) { if (!previousRange) { // trim whitespaces starting from the beginning of the span up to the current line - var originalStart = sourceFile.getLineAndCharacterOfPosition(originalRange.pos); + let originalStart = sourceFile.getLineAndCharacterOfPosition(originalRange.pos); trimTrailingWhitespacesForLines(originalStart.line, rangeStart.line); } else { @@ -757,10 +785,10 @@ module ts.formatting { formattingContext.updateContext(previousItem, previousParent, currentItem, currentParent, contextNode); - var rule = rulesProvider.getRulesMap().GetRule(formattingContext); + let rule = rulesProvider.getRulesMap().GetRule(formattingContext); - var trimTrailingWhitespaces: boolean; - var lineAdded: boolean; + let trimTrailingWhitespaces: boolean; + let lineAdded: boolean; if (rule) { applyRuleEdits(rule, previousItem, previousStartLine, currentItem, currentStartLine); @@ -800,16 +828,16 @@ module ts.formatting { } function insertIndentation(pos: number, indentation: number, lineAdded: boolean): void { - var indentationString = getIndentationString(indentation, options); + let indentationString = getIndentationString(indentation, options); if (lineAdded) { // new line is added before the token by the formatting rules // insert indentation string at the very beginning of the token recordReplace(pos, 0, indentationString); } else { - var tokenStart = sourceFile.getLineAndCharacterOfPosition(pos); + let tokenStart = sourceFile.getLineAndCharacterOfPosition(pos); if (indentation !== tokenStart.character) { - var startLinePosition = getStartPositionOfLine(tokenStart.line, sourceFile); + let startLinePosition = getStartPositionOfLine(tokenStart.line, sourceFile); recordReplace(startLinePosition, tokenStart.character, indentationString); } } @@ -817,9 +845,9 @@ module ts.formatting { function indentMultilineComment(commentRange: TextRange, indentation: number, firstLineIsIndented: boolean) { // split comment in lines - var startLine = sourceFile.getLineAndCharacterOfPosition(commentRange.pos).line; - var endLine = sourceFile.getLineAndCharacterOfPosition(commentRange.end).line; - + let startLine = sourceFile.getLineAndCharacterOfPosition(commentRange.pos).line; + let endLine = sourceFile.getLineAndCharacterOfPosition(commentRange.end).line; + let parts: TextRange[]; if (startLine === endLine) { if (!firstLineIsIndented) { // treat as single line comment @@ -828,10 +856,10 @@ module ts.formatting { return; } else { - var parts: TextRange[] = []; - var startPos = commentRange.pos; - for (var line = startLine; line < endLine; ++line) { - var endOfLine = getEndLinePosition(line, sourceFile); + parts = []; + let startPos = commentRange.pos; + for (let line = startLine; line < endLine; ++line) { + let endOfLine = getEndLinePosition(line, sourceFile); parts.push({ pos: startPos, end: endOfLine }); startPos = getStartPositionOfLine(line + 1, sourceFile); } @@ -839,52 +867,52 @@ module ts.formatting { parts.push({ pos: startPos, end: commentRange.end }); } - var startLinePos = getStartPositionOfLine(startLine, sourceFile); + let startLinePos = getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumnInFirstPart = - SmartIndenter.findFirstNonWhitespaceColumn(startLinePos, parts[0].pos, sourceFile, options); + let nonWhitespaceColumnInFirstPart = + SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(startLinePos, parts[0].pos, sourceFile, options); - if (indentation === nonWhitespaceColumnInFirstPart) { + if (indentation === nonWhitespaceColumnInFirstPart.column) { return; } - var startIndex = 0; + let startIndex = 0; if (firstLineIsIndented) { startIndex = 1; startLine++; } // shift all parts on the delta size - var delta = indentation - nonWhitespaceColumnInFirstPart; - for (var i = startIndex, len = parts.length; i < len; ++i, ++startLine) { - var startLinePos = getStartPositionOfLine(startLine, sourceFile); - var nonWhitespaceColumn = + let delta = indentation - nonWhitespaceColumnInFirstPart.column; + for (let i = startIndex, len = parts.length; i < len; ++i, ++startLine) { + let startLinePos = getStartPositionOfLine(startLine, sourceFile); + let nonWhitespaceCharacterAndColumn = i === 0 ? nonWhitespaceColumnInFirstPart - : SmartIndenter.findFirstNonWhitespaceColumn(parts[i].pos, parts[i].end, sourceFile, options); + : SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(parts[i].pos, parts[i].end, sourceFile, options); - var newIndentation = nonWhitespaceColumn + delta; + let newIndentation = nonWhitespaceCharacterAndColumn.column + delta; if (newIndentation > 0) { - var indentationString = getIndentationString(newIndentation, options); - recordReplace(startLinePos, nonWhitespaceColumn, indentationString); + let indentationString = getIndentationString(newIndentation, options); + recordReplace(startLinePos, nonWhitespaceCharacterAndColumn.character, indentationString); } else { - recordDelete(startLinePos, nonWhitespaceColumn); + recordDelete(startLinePos, nonWhitespaceCharacterAndColumn.character); } } } function trimTrailingWhitespacesForLines(line1: number, line2: number, range?: TextRangeWithKind) { - for (var line = line1; line < line2; ++line) { - var lineStartPosition = getStartPositionOfLine(line, sourceFile); - var lineEndPosition = getEndLinePosition(line, sourceFile); + for (let line = line1; line < line2; ++line) { + let lineStartPosition = getStartPositionOfLine(line, sourceFile); + let lineEndPosition = getEndLinePosition(line, sourceFile); // do not trim whitespaces in comments if (range && isComment(range.kind) && range.pos <= lineEndPosition && range.end > lineEndPosition) { continue; } - var pos = lineEndPosition; + let pos = lineEndPosition; while (pos >= lineStartPosition && isWhiteSpace(sourceFile.text.charCodeAt(pos))) { pos--; } @@ -917,7 +945,7 @@ module ts.formatting { currentRange: TextRangeWithKind, currentStartLine: number): void { - var between: TextRange; + let between: TextRange; switch (rule.Operation.Action) { case RuleAction.Ignore: // no action required @@ -937,7 +965,7 @@ module ts.formatting { } // edit should not be applied only if we have one line feed between elements - var lineDelta = currentStartLine - previousStartLine; + let lineDelta = currentStartLine - previousStartLine; if (lineDelta !== 1) { recordReplace(previousRange.end, currentRange.pos - previousRange.end, options.NewLineCharacter); } @@ -948,7 +976,7 @@ module ts.formatting { return; } - var posDelta = currentRange.pos - previousRange.end; + let posDelta = currentRange.pos - previousRange.end; if (posDelta !== 1 || sourceFile.text.charCodeAt(previousRange.end) !== CharacterCodes.space) { recordReplace(previousRange.end, currentRange.pos - previousRange.end, " "); } @@ -1010,15 +1038,25 @@ module ts.formatting { return SyntaxKind.Unknown; } + var internedSizes: { tabSize: number; indentSize: number }; var internedTabsIndentation: string[]; var internedSpacesIndentation: string[]; export function getIndentationString(indentation: number, options: FormatCodeOptions): string { - if (!options.ConvertTabsToSpaces) { - var tabs = Math.floor(indentation / options.TabSize); - var spaces = indentation - tabs * options.TabSize; + // reset interned strings if FormatCodeOptions were changed + let resetInternedStrings = + !internedSizes || (internedSizes.tabSize !== options.TabSize || internedSizes.indentSize !== options.IndentSize); - var tabString: string; + if (resetInternedStrings) { + internedSizes = { tabSize: options.TabSize, indentSize: options.IndentSize }; + internedTabsIndentation = internedSpacesIndentation = undefined; + } + + if (!options.ConvertTabsToSpaces) { + let tabs = Math.floor(indentation / options.TabSize); + let spaces = indentation - tabs * options.TabSize; + + let tabString: string; if (!internedTabsIndentation) { internedTabsIndentation = []; } @@ -1033,9 +1071,9 @@ module ts.formatting { return spaces ? tabString + repeat(" ", spaces) : tabString; } else { - var spacesString: string; - var quotient = Math.floor(indentation / options.IndentSize); - var remainder = indentation % options.IndentSize; + let spacesString: string; + let quotient = Math.floor(indentation / options.IndentSize); + let remainder = indentation % options.IndentSize; if (!internedSpacesIndentation) { internedSpacesIndentation = []; } @@ -1048,13 +1086,12 @@ module ts.formatting { spacesString = internedSpacesIndentation[quotient]; } - return remainder ? spacesString + repeat(" ", remainder) : spacesString; } function repeat(value: string, count: number): string { - var s = ""; - for (var i = 0; i < count; ++i) { + let s = ""; + for (let i = 0; i < count; ++i) { s += value; } diff --git a/src/services/formatting/formattingContext.ts b/src/services/formatting/formattingContext.ts index b7573526f78..8683a975777 100644 --- a/src/services/formatting/formattingContext.ts +++ b/src/services/formatting/formattingContext.ts @@ -29,7 +29,7 @@ module ts.formatting { private contextNodeBlockIsOnOneLine: boolean; private nextNodeBlockIsOnOneLine: boolean; - constructor(private sourceFile: SourceFile, public formattingRequestKind: FormattingRequestKind) { + constructor(public sourceFile: SourceFile, public formattingRequestKind: FormattingRequestKind) { } public updateContext(currentRange: TextRangeWithKind, currentTokenParent: Node, nextRange: TextRangeWithKind, nextTokenParent: Node, commonParent: Node) { @@ -71,8 +71,8 @@ module ts.formatting { public TokensAreOnSameLine(): boolean { if (this.tokensAreOnSameLine === undefined) { - var startLine = this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line; - var endLine = this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line; + let startLine = this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line; + let endLine = this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line; this.tokensAreOnSameLine = (startLine == endLine); } @@ -96,17 +96,17 @@ module ts.formatting { } private NodeIsOnOneLine(node: Node): boolean { - var startLine = this.sourceFile.getLineAndCharacterOfPosition(node.getStart(this.sourceFile)).line; - var endLine = this.sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line; + let startLine = this.sourceFile.getLineAndCharacterOfPosition(node.getStart(this.sourceFile)).line; + let endLine = this.sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line; return startLine == endLine; } private BlockIsOnOneLine(node: Node): boolean { - var openBrace = findChildOfKind(node, SyntaxKind.OpenBraceToken, this.sourceFile); - var closeBrace = findChildOfKind(node, SyntaxKind.CloseBraceToken, this.sourceFile); + let openBrace = findChildOfKind(node, SyntaxKind.OpenBraceToken, this.sourceFile); + let closeBrace = findChildOfKind(node, SyntaxKind.CloseBraceToken, this.sourceFile); if (openBrace && closeBrace) { - var startLine = this.sourceFile.getLineAndCharacterOfPosition(openBrace.getEnd()).line; - var endLine = this.sourceFile.getLineAndCharacterOfPosition(closeBrace.getStart(this.sourceFile)).line; + let startLine = this.sourceFile.getLineAndCharacterOfPosition(openBrace.getEnd()).line; + let endLine = this.sourceFile.getLineAndCharacterOfPosition(closeBrace.getStart(this.sourceFile)).line; return startLine === endLine; } return false; diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts index 962f142f609..f93739d6fb5 100644 --- a/src/services/formatting/formattingScanner.ts +++ b/src/services/formatting/formattingScanner.ts @@ -2,7 +2,7 @@ /// module ts.formatting { - var scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false); + let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false); export interface FormattingScanner { advance(): void; @@ -24,13 +24,13 @@ module ts.formatting { scanner.setText(sourceFile.text); scanner.setTextPos(startPos); - var wasNewLine: boolean = true; - var leadingTrivia: TextRangeWithKind[]; - var trailingTrivia: TextRangeWithKind[]; + let wasNewLine: boolean = true; + let leadingTrivia: TextRangeWithKind[]; + let trailingTrivia: TextRangeWithKind[]; - var savedPos: number; - var lastScanAction: ScanAction; - var lastTokenInfo: TokenInfo; + let savedPos: number; + let lastScanAction: ScanAction; + let lastTokenInfo: TokenInfo; return { advance: advance, @@ -45,7 +45,7 @@ module ts.formatting { function advance(): void { lastTokenInfo = undefined; - var isStarted = scanner.getStartPos() !== startPos; + let isStarted = scanner.getStartPos() !== startPos; if (isStarted) { if (trailingTrivia) { @@ -64,19 +64,19 @@ module ts.formatting { scanner.scan(); } - var t: SyntaxKind; - var pos = scanner.getStartPos(); + let t: SyntaxKind; + let pos = scanner.getStartPos(); // Read leading trivia and token while (pos < endPos) { - var t = scanner.getToken(); + let t = scanner.getToken(); if (!isTrivia(t)) { break; } // consume leading trivia scanner.scan(); - var item = { + let item = { pos: pos, end: scanner.getStartPos(), kind: t @@ -133,7 +133,7 @@ module ts.formatting { // normally scanner returns the smallest available token // check the kind of context node to determine if scanner should have more greedy behavior and consume more text. - var expectedScanAction = + let expectedScanAction = shouldRescanGreaterThanToken(n) ? ScanAction.RescanGreaterThanToken : shouldRescanSlashToken(n) @@ -159,7 +159,7 @@ module ts.formatting { scanner.scan(); } - var currentToken = scanner.getToken(); + let currentToken = scanner.getToken(); if (expectedScanAction === ScanAction.RescanGreaterThanToken && currentToken === SyntaxKind.GreaterThanToken) { currentToken = scanner.reScanGreaterToken(); @@ -179,7 +179,7 @@ module ts.formatting { lastScanAction = ScanAction.Scan; } - var token: TextRangeWithKind = { + let token: TextRangeWithKind = { pos: scanner.getStartPos(), end: scanner.getTextPos(), kind: currentToken @@ -194,7 +194,7 @@ module ts.formatting { if (!isTrivia(currentToken)) { break; } - var trivia = { + let trivia = { pos: scanner.getStartPos(), end: scanner.getTextPos(), kind: currentToken @@ -223,8 +223,8 @@ module ts.formatting { } function isOnToken(): boolean { - var current = (lastTokenInfo && lastTokenInfo.token.kind) || scanner.getToken(); - var startPos = (lastTokenInfo && lastTokenInfo.token.pos) || scanner.getStartPos(); + let current = (lastTokenInfo && lastTokenInfo.token.kind) || scanner.getToken(); + let startPos = (lastTokenInfo && lastTokenInfo.token.pos) || scanner.getStartPos(); return startPos < endPos && current !== SyntaxKind.EndOfFileToken && !isTrivia(current); } diff --git a/src/services/formatting/indentation.ts b/src/services/formatting/indentation.ts deleted file mode 100644 index f6f8fc0319f..00000000000 --- a/src/services/formatting/indentation.ts +++ /dev/null @@ -1,54 +0,0 @@ -module ts.formatting { - - var internedTabsIndentation: string[]; - var internedSpacesIndentation: string[]; - - export function getIndentationString(indentation: number, options: FormatCodeOptions): string { - if (!options.ConvertTabsToSpaces) { - var tabs = Math.floor(indentation / options.TabSize); - var spaces = indentation - tabs * options.TabSize; - - var tabString: string; - if (!internedTabsIndentation) { - internedTabsIndentation = []; - } - - if (internedTabsIndentation[tabs] === undefined) { - internedTabsIndentation[tabs] = tabString = repeat('\t', tabs); - } - else { - tabString = internedTabsIndentation[tabs]; - } - - return spaces ? tabString + repeat(" ", spaces) : tabString; - } - else { - var spacesString: string; - var quotient = Math.floor(indentation / options.IndentSize); - var remainder = indentation % options.IndentSize; - if (!internedSpacesIndentation) { - internedSpacesIndentation = []; - } - - if (internedSpacesIndentation[quotient] === undefined) { - spacesString = repeat(" ", options.IndentSize * quotient); - internedSpacesIndentation[quotient] = spacesString; - } - else { - spacesString = internedSpacesIndentation[quotient]; - } - - - return remainder ? spacesString + repeat(" ", remainder) : spacesString; - } - - function repeat(value: string, count: number): string { - var s = ""; - for (var i = 0; i < count; ++i) { - s += value; - } - - return s; - } - } -} \ No newline at end of file diff --git a/src/services/formatting/ruleDescriptor.ts b/src/services/formatting/ruleDescriptor.ts index e5b7d6f3186..031f88be00e 100644 --- a/src/services/formatting/ruleDescriptor.ts +++ b/src/services/formatting/ruleDescriptor.ts @@ -33,8 +33,7 @@ module ts.formatting { return RuleDescriptor.create4(left, Shared.TokenRange.FromToken(right)); } - static create3(left: SyntaxKind, right: Shared.TokenRange): RuleDescriptor - { + static create3(left: SyntaxKind, right: Shared.TokenRange): RuleDescriptor { return RuleDescriptor.create4(Shared.TokenRange.FromToken(left), right); } diff --git a/src/services/formatting/ruleOperation.ts b/src/services/formatting/ruleOperation.ts index c73e3b6bcf7..7bd092e9584 100644 --- a/src/services/formatting/ruleOperation.ts +++ b/src/services/formatting/ruleOperation.ts @@ -35,7 +35,7 @@ module ts.formatting { } static create2(context: RuleOperationContext, action: RuleAction) { - var result = new RuleOperation(); + let result = new RuleOperation(); result.Context = context; result.Action = action; return result; diff --git a/src/services/formatting/ruleOperationContext.ts b/src/services/formatting/ruleOperationContext.ts index d037f8e70d7..dc4e5d4f105 100644 --- a/src/services/formatting/ruleOperationContext.ts +++ b/src/services/formatting/ruleOperationContext.ts @@ -36,8 +36,8 @@ module ts.formatting { return true; } - for (var i = 0, len = this.customContextChecks.length; i < len; i++) { - if (!this.customContextChecks[i](context)) { + for (let check of this.customContextChecks) { + if (!check(context)) { return false; } } diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index e64e29d2808..7d3509ef495 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -18,8 +18,8 @@ module ts.formatting { export class Rules { public getRuleName(rule: Rule) { - var o: ts.Map = this; - for (var name in o) { + let o: ts.Map = this; + for (let name in o) { if (o[name] === rule) { return name; } @@ -35,9 +35,13 @@ module ts.formatting { // Space after keyword but not before ; or : or ? public NoSpaceBeforeSemicolon: Rule; public NoSpaceBeforeColon: Rule; - public NoSpaceBeforeQMark: Rule; + public NoSpaceBeforeQuestionMark: Rule; public SpaceAfterColon: Rule; - public SpaceAfterQMark: Rule; + // insert space after '?' only when it is used in conditional operator + public SpaceAfterQuestionMarkInConditionalOperator: Rule; + // in other cases there should be no space between '?' and next token + public NoSpaceAfterQuestionMark: Rule; + public SpaceAfterSemicolon: Rule; // Space/new line after }. @@ -92,6 +96,7 @@ module ts.formatting { public NoSpaceBeforeComma: Rule; public SpaceAfterCertainKeywords: Rule; + public SpaceAfterLetConstInVariableDeclaration: Rule; public NoSpaceBeforeOpenParenInFuncCall: Rule; public SpaceAfterFunctionInFuncDecl: Rule; public NoSpaceBeforeOpenParenInFuncDecl: Rule; @@ -134,7 +139,7 @@ module ts.formatting { // Lambda expressions public SpaceAfterArrow: Rule; - // Optional parameters and var args + // Optional parameters and let args public NoSpaceAfterEllipsis: Rule; public NoSpaceAfterOptionalParameters: Rule; @@ -215,9 +220,10 @@ module ts.formatting { // Space after keyword but not before ; or : or ? this.NoSpaceBeforeSemicolon = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.SemicolonToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); this.NoSpaceBeforeColon = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.ColonToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Delete)); - this.NoSpaceBeforeQMark = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.QuestionToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Delete)); + this.NoSpaceBeforeQuestionMark = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.QuestionToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Delete)); this.SpaceAfterColon = new Rule(RuleDescriptor.create3(SyntaxKind.ColonToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Space)); - this.SpaceAfterQMark = new Rule(RuleDescriptor.create3(SyntaxKind.QuestionToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Space)); + this.SpaceAfterQuestionMarkInConditionalOperator = new Rule(RuleDescriptor.create3(SyntaxKind.QuestionToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsConditionalOperatorContext), RuleAction.Space)); + this.NoSpaceAfterQuestionMark = new Rule(RuleDescriptor.create3(SyntaxKind.QuestionToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); this.SpaceAfterSemicolon = new Rule(RuleDescriptor.create3(SyntaxKind.SemicolonToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); // Space after }. @@ -238,7 +244,7 @@ module ts.formatting { // Place a space before open brace in a function declaration this.FunctionOpenBraceLeftTokenRange = Shared.TokenRange.AnyIncludingMultilineComments; - this.SpaceBeforeOpenBraceInFunction = new Rule(RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, SyntaxKind.OpenBraceToken), RuleOperation.create2(new RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), RuleAction.Space), RuleFlags.CanDeleteNewLines); + this.SpaceBeforeOpenBraceInFunction = new Rule(RuleDescriptor.create2(this.FunctionOpenBraceLeftTokenRange, SyntaxKind.OpenBraceToken), RuleOperation.create2(new RuleOperationContext(Rules.IsFunctionDeclContext, Rules.IsBeforeBlockContext, Rules.IsNotFormatOnEnter, Rules.IsSameLineTokenOrBeforeMultilineBlockContext), RuleAction.Space), RuleFlags.CanDeleteNewLines); // Place a space before open brace in a TypeScript declaration that has braces as children (class, module, enum, etc) this.TypeScriptOpenBraceLeftTokenRange = Shared.TokenRange.FromTokens([SyntaxKind.Identifier, SyntaxKind.MultiLineCommentTrivia]); @@ -283,6 +289,7 @@ module ts.formatting { this.NoSpaceBeforeComma = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.CommaToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); this.SpaceAfterCertainKeywords = new Rule(RuleDescriptor.create4(Shared.TokenRange.FromTokens([SyntaxKind.VarKeyword, SyntaxKind.ThrowKeyword, SyntaxKind.NewKeyword, SyntaxKind.DeleteKeyword, SyntaxKind.ReturnKeyword, SyntaxKind.TypeOfKeyword]), Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); + this.SpaceAfterLetConstInVariableDeclaration = new Rule(RuleDescriptor.create4(Shared.TokenRange.FromTokens([SyntaxKind.LetKeyword, SyntaxKind.ConstKeyword]), Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsStartOfVariableDeclarationList), RuleAction.Space)); this.NoSpaceBeforeOpenParenInFuncCall = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.OpenParenToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionCallOrNewContext, Rules.IsPreviousTokenNotComma), RuleAction.Delete)); this.SpaceAfterFunctionInFuncDecl = new Rule(RuleDescriptor.create3(SyntaxKind.FunctionKeyword, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsFunctionDeclContext), RuleAction.Space)); this.NoSpaceBeforeOpenParenInFuncDecl = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.OpenParenToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsFunctionDeclContext), RuleAction.Delete)); @@ -323,7 +330,7 @@ module ts.formatting { // Lambda expressions this.SpaceAfterArrow = new Rule(RuleDescriptor.create3(SyntaxKind.EqualsGreaterThanToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); - // Optional parameters and var args + // Optional parameters and let args this.NoSpaceAfterEllipsis = new Rule(RuleDescriptor.create1(SyntaxKind.DotDotDotToken, SyntaxKind.Identifier), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); this.NoSpaceAfterOptionalParameters = new Rule(RuleDescriptor.create3(SyntaxKind.QuestionToken, Shared.TokenRange.FromTokens([SyntaxKind.CloseParenToken, SyntaxKind.CommaToken])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), RuleAction.Delete)); @@ -341,7 +348,8 @@ module ts.formatting { this.HighPriorityCommonRules = [ this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQMark, this.SpaceAfterQMark, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, this.NoSpaceBeforeDot, this.NoSpaceAfterDot, this.NoSpaceAfterUnaryPrefixOperator, this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, @@ -356,6 +364,7 @@ module ts.formatting { this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, this.NoSpaceBetweenReturnAndSemicolon, this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, this.NoSpaceBeforeOpenParenInFuncCall, this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, this.SpaceAfterVoidOperator, @@ -453,7 +462,7 @@ module ts.formatting { // equal in import a = module('a'); case SyntaxKind.ImportEqualsDeclaration: - // equal in var a = 0; + // equal in let a = 0; case SyntaxKind.VariableDeclaration: // equal in p = 0; case SyntaxKind.Parameter: @@ -461,12 +470,14 @@ module ts.formatting { case SyntaxKind.PropertyDeclaration: case SyntaxKind.PropertySignature: return context.currentTokenSpan.kind === SyntaxKind.EqualsToken || context.nextTokenSpan.kind === SyntaxKind.EqualsToken; - // "in" keyword in for (var x in []) { } + // "in" keyword in for (let x in []) { } case SyntaxKind.ForInStatement: return context.currentTokenSpan.kind === SyntaxKind.InKeyword || context.nextTokenSpan.kind === SyntaxKind.InKeyword; // Technically, "of" is not a binary operator, but format it the same way as "in" case SyntaxKind.ForOfStatement: return context.currentTokenSpan.kind === SyntaxKind.OfKeyword || context.nextTokenSpan.kind === SyntaxKind.OfKeyword; + case SyntaxKind.BindingElement: + return context.currentTokenSpan.kind === SyntaxKind.EqualsToken || context.nextTokenSpan.kind === SyntaxKind.EqualsToken; } return false; } @@ -475,6 +486,10 @@ module ts.formatting { return !Rules.IsBinaryOpContext(context); } + static IsConditionalOperatorContext(context: FormattingContext): boolean { + return context.contextNode.kind === SyntaxKind.ConditionalExpression; + } + static IsSameLineTokenOrBeforeMultilineBlockContext(context: FormattingContext): boolean { //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. //// @@ -526,7 +541,7 @@ module ts.formatting { switch (node.kind) { case SyntaxKind.Block: - case SyntaxKind.SwitchStatement: + case SyntaxKind.CaseBlock: case SyntaxKind.ObjectLiteralExpression: case SyntaxKind.ModuleBlock: return true; @@ -634,6 +649,11 @@ module ts.formatting { return context.TokensAreOnSameLine(); } + static IsStartOfVariableDeclarationList(context: FormattingContext): boolean { + return context.currentTokenParent.kind === SyntaxKind.VariableDeclarationList && + context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; + } + static IsNotFormatOnEnter(context: FormattingContext): boolean { return context.formattingRequestKind != FormattingRequestKind.FormatOnEnter; } diff --git a/src/services/formatting/rulesMap.ts b/src/services/formatting/rulesMap.ts index d25320f16a8..b43e91424f8 100644 --- a/src/services/formatting/rulesMap.ts +++ b/src/services/formatting/rulesMap.ts @@ -26,7 +26,7 @@ module ts.formatting { } static create(rules: Rule[]): RulesMap { - var result = new RulesMap(); + let result = new RulesMap(); result.Initialize(rules); return result; } @@ -36,7 +36,7 @@ module ts.formatting { this.map = new Array(this.mapRowLength * this.mapRowLength);//new Array(this.mapRowLength * this.mapRowLength); // This array is used only during construction of the rulesbucket in the map - var rulesBucketConstructionStateList: RulesBucketConstructionState[] = new Array(this.map.length);//new Array(this.map.length); + let rulesBucketConstructionStateList: RulesBucketConstructionState[] = new Array(this.map.length);//new Array(this.map.length); this.FillRules(rules, rulesBucketConstructionStateList); return this.map; @@ -49,20 +49,20 @@ module ts.formatting { } private GetRuleBucketIndex(row: number, column: number): number { - var rulesBucketIndex = (row * this.mapRowLength) + column; + let rulesBucketIndex = (row * this.mapRowLength) + column; //Debug.Assert(rulesBucketIndex < this.map.Length, "Trying to access an index outside the array."); return rulesBucketIndex; } private FillRule(rule: Rule, rulesBucketConstructionStateList: RulesBucketConstructionState[]): void { - var specificRule = rule.Descriptor.LeftTokenRange != Shared.TokenRange.Any && + let specificRule = rule.Descriptor.LeftTokenRange != Shared.TokenRange.Any && rule.Descriptor.RightTokenRange != Shared.TokenRange.Any; rule.Descriptor.LeftTokenRange.GetTokens().forEach((left) => { rule.Descriptor.RightTokenRange.GetTokens().forEach((right) => { - var rulesBucketIndex = this.GetRuleBucketIndex(left, right); + let rulesBucketIndex = this.GetRuleBucketIndex(left, right); - var rulesBucket = this.map[rulesBucketIndex]; + let rulesBucket = this.map[rulesBucketIndex]; if (rulesBucket == undefined) { rulesBucket = this.map[rulesBucketIndex] = new RulesBucket(); } @@ -73,21 +73,21 @@ module ts.formatting { } public GetRule(context: FormattingContext): Rule { - var bucketIndex = this.GetRuleBucketIndex(context.currentTokenSpan.kind, context.nextTokenSpan.kind); - var bucket = this.map[bucketIndex]; + let bucketIndex = this.GetRuleBucketIndex(context.currentTokenSpan.kind, context.nextTokenSpan.kind); + let bucket = this.map[bucketIndex]; if (bucket != null) { - for (var i = 0, len = bucket.Rules().length; i < len; i++) { - var rule = bucket.Rules()[i]; - if (rule.Operation.Context.InContext(context)) + for (let rule of bucket.Rules()) { + if (rule.Operation.Context.InContext(context)) { return rule; + } } } return null; } } - var MaskBitSize = 5; - var Mask = 0x1f; + let MaskBitSize = 5; + let Mask = 0x1f; export enum RulesPosition { IgnoreRulesSpecific = 0, @@ -121,10 +121,10 @@ module ts.formatting { } public GetInsertionIndex(maskPosition: RulesPosition): number { - var index = 0; + let index = 0; - var pos = 0; - var indexBitmap = this.rulesInsertionIndexBitmap; + let pos = 0; + let indexBitmap = this.rulesInsertionIndexBitmap; while (pos <= maskPosition) { index += (indexBitmap & Mask); @@ -136,11 +136,11 @@ module ts.formatting { } public IncreaseInsertionIndex(maskPosition: RulesPosition): void { - var value = (this.rulesInsertionIndexBitmap >> maskPosition) & Mask; + let value = (this.rulesInsertionIndexBitmap >> maskPosition) & Mask; value++; Debug.assert((value & Mask) == value, "Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules."); - var temp = this.rulesInsertionIndexBitmap & ~(Mask << maskPosition); + let temp = this.rulesInsertionIndexBitmap & ~(Mask << maskPosition); temp |= value << maskPosition; this.rulesInsertionIndexBitmap = temp; @@ -159,7 +159,7 @@ module ts.formatting { } public AddRule(rule: Rule, specificTokens: boolean, constructionState: RulesBucketConstructionState[], rulesBucketIndex: number): void { - var position: RulesPosition; + let position: RulesPosition; if (rule.Operation.Action == RuleAction.Ignore) { position = specificTokens ? @@ -177,11 +177,11 @@ module ts.formatting { RulesPosition.NoContextRulesAny; } - var state = constructionState[rulesBucketIndex]; + let state = constructionState[rulesBucketIndex]; if (state === undefined) { state = constructionState[rulesBucketIndex] = new RulesBucketConstructionState(); } - var index = state.GetInsertionIndex(position); + let index = state.GetInsertionIndex(position); this.rules.splice(index, 0, rule); state.IncreaseInsertionIndex(position); } diff --git a/src/services/formatting/rulesProvider.ts b/src/services/formatting/rulesProvider.ts index 25b6f1ba772..5f63db8630b 100644 --- a/src/services/formatting/rulesProvider.ts +++ b/src/services/formatting/rulesProvider.ts @@ -40,8 +40,8 @@ module ts.formatting { public ensureUpToDate(options: ts.FormatCodeOptions) { if (this.options == null || !ts.compareDataObjects(this.options, options)) { - var activeRules = this.createActiveRules(options); - var rulesMap = RulesMap.create(activeRules); + let activeRules = this.createActiveRules(options); + let rulesMap = RulesMap.create(activeRules); this.activeRules = activeRules; this.rulesMap = rulesMap; @@ -50,7 +50,7 @@ module ts.formatting { } private createActiveRules(options: ts.FormatCodeOptions): Rule[] { - var rules = this.globalRules.HighPriorityCommonRules.slice(0); + let rules = this.globalRules.HighPriorityCommonRules.slice(0); if (options.InsertSpaceAfterCommaDelimiter) { rules.push(this.globalRules.SpaceAfterComma); diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 04849420e70..8508e3b932d 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -2,18 +2,23 @@ module ts.formatting { export module SmartIndenter { + + const enum Value { + Unknown = -1 + } + export function getIndentation(position: number, sourceFile: SourceFile, options: EditorOptions): number { if (position > sourceFile.text.length) { return 0; // past EOF } - var precedingToken = findPrecedingToken(position, sourceFile); + let precedingToken = findPrecedingToken(position, sourceFile); if (!precedingToken) { return 0; } // no indentation in string \regex\template literals - var precedingTokenIsLiteral = + let precedingTokenIsLiteral = precedingToken.kind === SyntaxKind.StringLiteral || precedingToken.kind === SyntaxKind.RegularExpressionLiteral || precedingToken.kind === SyntaxKind.NoSubstitutionTemplateLiteral || @@ -24,22 +29,22 @@ module ts.formatting { return 0; } - var lineAtPosition = sourceFile.getLineAndCharacterOfPosition(position).line; + let lineAtPosition = sourceFile.getLineAndCharacterOfPosition(position).line; if (precedingToken.kind === SyntaxKind.CommaToken && precedingToken.parent.kind !== SyntaxKind.BinaryExpression) { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it - var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); - if (actualIndentation !== -1) { + let actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); + if (actualIndentation !== Value.Unknown) { return actualIndentation; } } // try to find node that can contribute to indentation and includes 'position' starting from 'precedingToken' // if such node is found - compute initial indentation for 'position' inside this node - var previous: Node; - var current = precedingToken; - var currentStart: LineAndCharacter; - var indentationDelta: number; + let previous: Node; + let current = precedingToken; + let currentStart: LineAndCharacter; + let indentationDelta: number; while (current) { if (positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : SyntaxKind.Unknown)) { @@ -56,8 +61,8 @@ module ts.formatting { } // check if current node is a list item - if yes, take indentation from it - var actualIndentation = getActualIndentationForListItem(current, sourceFile, options); - if (actualIndentation !== -1) { + let actualIndentation = getActualIndentationForListItem(current, sourceFile, options); + if (actualIndentation !== Value.Unknown) { return actualIndentation; } @@ -74,7 +79,7 @@ module ts.formatting { } export function getIndentationForNode(n: Node, ignoreActualIndentationRange: TextRange, sourceFile: SourceFile, options: FormatCodeOptions): number { - var start = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); + let start = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); return getIndentationForNodeWorker(n, start, ignoreActualIndentationRange, /*indentationDelta*/ 0, sourceFile, options); } @@ -86,34 +91,34 @@ module ts.formatting { sourceFile: SourceFile, options: EditorOptions): number { - var parent: Node = current.parent; - var parentStart: LineAndCharacter; + let parent: Node = current.parent; + let parentStart: LineAndCharacter; // walk upwards and collect indentations for pairs of parent-child nodes // indentation is not added if parent and child nodes start on the same line or if parent is IfStatement and child starts on the same line with 'else clause' while (parent) { - var useActualIndentation = true; + let useActualIndentation = true; if (ignoreActualIndentationRange) { - var start = current.getStart(sourceFile); + let start = current.getStart(sourceFile); useActualIndentation = start < ignoreActualIndentationRange.pos || start > ignoreActualIndentationRange.end; } if (useActualIndentation) { // check if current node is a list item - if yes, take indentation from it - var actualIndentation = getActualIndentationForListItem(current, sourceFile, options); - if (actualIndentation !== -1) { + let actualIndentation = getActualIndentationForListItem(current, sourceFile, options); + if (actualIndentation !== Value.Unknown) { return actualIndentation + indentationDelta; } } parentStart = getParentStart(parent, current, sourceFile); - var parentAndChildShareLine = + let parentAndChildShareLine = parentStart.line === currentStart.line || childStartsOnTheSameLineWithElseInIfStatement(parent, current, currentStart.line, sourceFile); if (useActualIndentation) { // try to fetch actual indentation for current node from source text - var actualIndentation = getActualIndentationForNode(current, parent, currentStart, parentAndChildShareLine, sourceFile, options); - if (actualIndentation !== -1) { + let actualIndentation = getActualIndentationForNode(current, parent, currentStart, parentAndChildShareLine, sourceFile, options); + if (actualIndentation !== Value.Unknown) { return actualIndentation + indentationDelta; } } @@ -133,7 +138,7 @@ module ts.formatting { function getParentStart(parent: Node, child: Node, sourceFile: SourceFile): LineAndCharacter { - var containingList = getContainingList(child, sourceFile); + let containingList = getContainingList(child, sourceFile); if (containingList) { return sourceFile.getLineAndCharacterOfPosition(containingList.pos); } @@ -142,18 +147,22 @@ module ts.formatting { } /* - * Function returns -1 if indentation cannot be determined + * Function returns Value.Unknown if indentation cannot be determined */ function getActualIndentationForListItemBeforeComma(commaToken: Node, sourceFile: SourceFile, options: EditorOptions): number { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it - var commaItemInfo = findListItemInfo(commaToken); - Debug.assert(commaItemInfo && commaItemInfo.listItemIndex > 0); - // The item we're interested in is right before the comma - return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + let commaItemInfo = findListItemInfo(commaToken); + if (commaItemInfo && commaItemInfo.listItemIndex > 0) { + return deriveActualIndentationFromList(commaItemInfo.list.getChildren(), commaItemInfo.listItemIndex - 1, sourceFile, options); + } + else { + // handle broken code gracefully + return Value.Unknown; + } } /* - * Function returns -1 if actual indentation for node should not be used (i.e because node is nested expression) + * Function returns Value.Unknown if actual indentation for node should not be used (i.e because node is nested expression) */ function getActualIndentationForNode(current: Node, parent: Node, @@ -165,19 +174,19 @@ module ts.formatting { // actual indentation is used for statements\declarations if one of cases below is true: // - parent is SourceFile - by default immediate children of SourceFile are not indented except when user indents them manually // - parent and child are not on the same line - var useActualIndentation = + let useActualIndentation = (isDeclaration(current) || isStatement(current)) && (parent.kind === SyntaxKind.SourceFile || !parentAndChildShareLine); if (!useActualIndentation) { - return -1; + return Value.Unknown; } return findColumnForFirstNonWhitespaceCharacterInLine(currentLineAndChar, sourceFile, options); } function nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken: Node, current: Node, lineAtPosition: number, sourceFile: SourceFile): boolean { - var nextToken = findNextToken(precedingToken, current); + let nextToken = findNextToken(precedingToken, current); if (!nextToken) { return false; } @@ -196,7 +205,7 @@ module ts.formatting { // class A { // $} - var nextTokenStartLine = getStartLineAndCharacterForNode(nextToken, sourceFile).line; + let nextTokenStartLine = getStartLineAndCharacterForNode(nextToken, sourceFile).line; return lineAtPosition === nextTokenStartLine; } @@ -206,17 +215,13 @@ module ts.formatting { function getStartLineAndCharacterForNode(n: Node, sourceFile: SourceFile): LineAndCharacter { return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } - - function positionBelongsToNode(candidate: Node, position: number, sourceFile: SourceFile): boolean { - return candidate.end > position || !isCompletedNode(candidate, sourceFile); - } - + export function childStartsOnTheSameLineWithElseInIfStatement(parent: Node, child: TextRangeWithKind, childStartLine: number, sourceFile: SourceFile): boolean { if (parent.kind === SyntaxKind.IfStatement && (parent).elseStatement === child) { - var elseKeyword = findChildOfKind(parent, SyntaxKind.ElseKeyword, sourceFile); + let elseKeyword = findChildOfKind(parent, SyntaxKind.ElseKeyword, sourceFile); Debug.assert(elseKeyword !== undefined); - var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; + let elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; return elseKeywordStartLine === childStartLine; } @@ -242,8 +247,8 @@ module ts.formatting { case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: case SyntaxKind.CallSignature: - case SyntaxKind.ConstructSignature: - var start = node.getStart(sourceFile); + case SyntaxKind.ConstructSignature: { + let start = node.getStart(sourceFile); if ((node.parent).typeParameters && rangeContainsStartEnd((node.parent).typeParameters, start, node.getEnd())) { return (node.parent).typeParameters; @@ -252,9 +257,10 @@ module ts.formatting { return (node.parent).parameters; } break; + } case SyntaxKind.NewExpression: - case SyntaxKind.CallExpression: - var start = node.getStart(sourceFile); + case SyntaxKind.CallExpression: { + let start = node.getStart(sourceFile); if ((node.parent).typeArguments && rangeContainsStartEnd((node.parent).typeArguments, start, node.getEnd())) { return (node.parent).typeArguments; @@ -264,54 +270,63 @@ module ts.formatting { return (node.parent).arguments; } break; + } } } return undefined; } function getActualIndentationForListItem(node: Node, sourceFile: SourceFile, options: EditorOptions): number { - var containingList = getContainingList(node, sourceFile); - return containingList ? getActualIndentationFromList(containingList) : -1; + let containingList = getContainingList(node, sourceFile); + return containingList ? getActualIndentationFromList(containingList) : Value.Unknown; function getActualIndentationFromList(list: Node[]): number { - var index = indexOf(list, node); - return index !== -1 ? deriveActualIndentationFromList(list, index, sourceFile, options) : -1; + let index = indexOf(list, node); + return index !== -1 ? deriveActualIndentationFromList(list, index, sourceFile, options) : Value.Unknown; } } function deriveActualIndentationFromList(list: Node[], index: number, sourceFile: SourceFile, options: EditorOptions): number { Debug.assert(index >= 0 && index < list.length); - var node = list[index]; + let node = list[index]; // walk toward the start of the list starting from current node and check if the line is the same for all items. // if end line for item [i - 1] differs from the start line for item [i] - find column of the first non-whitespace character on the line of item [i] - var lineAndCharacter = getStartLineAndCharacterForNode(node, sourceFile); - for (var i = index - 1; i >= 0; --i) { + let lineAndCharacter = getStartLineAndCharacterForNode(node, sourceFile); + for (let i = index - 1; i >= 0; --i) { if (list[i].kind === SyntaxKind.CommaToken) { continue; } // skip list items that ends on the same line with the current list element - var prevEndLine = sourceFile.getLineAndCharacterOfPosition(list[i].end).line; + let prevEndLine = sourceFile.getLineAndCharacterOfPosition(list[i].end).line; if (prevEndLine !== lineAndCharacter.line) { return findColumnForFirstNonWhitespaceCharacterInLine(lineAndCharacter, sourceFile, options); } lineAndCharacter = getStartLineAndCharacterForNode(list[i], sourceFile); } - return -1; + return Value.Unknown; } function findColumnForFirstNonWhitespaceCharacterInLine(lineAndCharacter: LineAndCharacter, sourceFile: SourceFile, options: EditorOptions): number { - var lineStart = sourceFile.getPositionOfLineAndCharacter(lineAndCharacter.line, 0); + let lineStart = sourceFile.getPositionOfLineAndCharacter(lineAndCharacter.line, 0); return findFirstNonWhitespaceColumn(lineStart, lineStart + lineAndCharacter.character, sourceFile, options); } - export function findFirstNonWhitespaceColumn(startPos: number, endPos: number, sourceFile: SourceFile, options: EditorOptions): number { - var column = 0; - for (var pos = startPos; pos < endPos; ++pos) { - var ch = sourceFile.text.charCodeAt(pos); + /* + Character is the actual index of the character since the beginning of the line. + Column - position of the character after expanding tabs to spaces + "0\t2$" + value of 'character' for '$' is 3 + value of 'column' for '$' is 6 (assuming that tab size is 4) + */ + export function findFirstNonWhitespaceCharacterAndColumn(startPos: number, endPos: number, sourceFile: SourceFile, options: EditorOptions) { + let character = 0; + let column = 0; + for (let pos = startPos; pos < endPos; ++pos) { + let ch = sourceFile.text.charCodeAt(pos); if (!isWhiteSpace(ch)) { - return column; + break; } if (ch === CharacterCodes.tab) { @@ -320,8 +335,14 @@ module ts.formatting { else { column++; } + + character++; } - return column; + return { column, character }; + } + + export function findFirstNonWhitespaceColumn(startPos: number, endPos: number, sourceFile: SourceFile, options: EditorOptions): number { + return findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options).column; } function nodeContentIsAlwaysIndented(kind: SyntaxKind): boolean { @@ -334,7 +355,8 @@ module ts.formatting { case SyntaxKind.ModuleBlock: case SyntaxKind.ObjectLiteralExpression: case SyntaxKind.TypeLiteral: - case SyntaxKind.SwitchStatement: + case SyntaxKind.TupleType: + case SyntaxKind.CaseBlock: case SyntaxKind.DefaultClause: case SyntaxKind.CaseClause: case SyntaxKind.ParenthesizedExpression: @@ -345,6 +367,8 @@ module ts.formatting { case SyntaxKind.ExportAssignment: case SyntaxKind.ReturnStatement: case SyntaxKind.ConditionalExpression: + case SyntaxKind.ArrayBindingPattern: + case SyntaxKind.ObjectBindingPattern: return true; } return false; @@ -365,6 +389,7 @@ module ts.formatting { case SyntaxKind.FunctionExpression: case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: + case SyntaxKind.CallSignature: case SyntaxKind.ArrowFunction: case SyntaxKind.Constructor: case SyntaxKind.GetAccessor: @@ -374,82 +399,5 @@ module ts.formatting { return false; } } - - /* - * Checks if node ends with 'expectedLastToken'. - * If child at position 'length - 1' is 'SemicolonToken' it is skipped and 'expectedLastToken' is compared with child at position 'length - 2'. - */ - function nodeEndsWith(n: Node, expectedLastToken: SyntaxKind, sourceFile: SourceFile): boolean { - var children = n.getChildren(sourceFile); - if (children.length) { - var last = children[children.length - 1]; - if (last.kind === expectedLastToken) { - return true; - } - else if (last.kind === SyntaxKind.SemicolonToken && children.length !== 1) { - return children[children.length - 2].kind === expectedLastToken; - } - } - return false; - } - - /* - * This function is always called when position of the cursor is located after the node - */ - function isCompletedNode(n: Node, sourceFile: SourceFile): boolean { - if (n.getFullWidth() === 0) { - return false; - } - - switch (n.kind) { - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.ObjectLiteralExpression: - case SyntaxKind.Block: - case SyntaxKind.ModuleBlock: - case SyntaxKind.SwitchStatement: - return nodeEndsWith(n, SyntaxKind.CloseBraceToken, sourceFile); - case SyntaxKind.CatchClause: - return isCompletedNode((n).block, sourceFile); - case SyntaxKind.ParenthesizedExpression: - case SyntaxKind.CallSignature: - case SyntaxKind.CallExpression: - case SyntaxKind.ConstructSignature: - return nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile); - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.FunctionExpression: - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - case SyntaxKind.ArrowFunction: - return !(n).body || isCompletedNode((n).body, sourceFile); - case SyntaxKind.ModuleDeclaration: - return (n).body && isCompletedNode((n).body, sourceFile); - case SyntaxKind.IfStatement: - if ((n).elseStatement) { - return isCompletedNode((n).elseStatement, sourceFile); - } - return isCompletedNode((n).thenStatement, sourceFile); - case SyntaxKind.ExpressionStatement: - return isCompletedNode((n).expression, sourceFile); - case SyntaxKind.ArrayLiteralExpression: - return nodeEndsWith(n, SyntaxKind.CloseBracketToken, sourceFile); - case SyntaxKind.CaseClause: - case SyntaxKind.DefaultClause: - // there is no such thing as terminator token for CaseClause\DefaultClause so for simplicitly always consider them non-completed - return false; - case SyntaxKind.WhileStatement: - return isCompletedNode((n).statement, sourceFile); - case SyntaxKind.DoStatement: - // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; - var hasWhileKeyword = findChildOfKind(n, SyntaxKind.WhileKeyword, sourceFile); - if (hasWhileKeyword) { - return nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile); - } - return isCompletedNode((n).statement, sourceFile); - default: - return true; - } - } } } \ No newline at end of file diff --git a/src/services/formatting/tokenRange.ts b/src/services/formatting/tokenRange.ts index ff9cb91ce68..f1cdfebc978 100644 --- a/src/services/formatting/tokenRange.ts +++ b/src/services/formatting/tokenRange.ts @@ -27,7 +27,7 @@ module ts.formatting { constructor(from: SyntaxKind, to: SyntaxKind, except: SyntaxKind[]) { this.tokens = []; - for (var token = from; token <= to; token++) { + for (let token = from; token <= to; token++) { if (except.indexOf(token) < 0) { this.tokens.push(token); } @@ -74,8 +74,8 @@ module ts.formatting { export class TokenAllAccess implements ITokenAccess { public GetTokens(): SyntaxKind[] { - var result: SyntaxKind[] = []; - for (var token = SyntaxKind.FirstToken; token <= SyntaxKind.LastToken; token++) { + let result: SyntaxKind[] = []; + for (let token = SyntaxKind.FirstToken; token <= SyntaxKind.LastToken; token++) { result.push(token); } return result; diff --git a/src/services/navigateTo.ts b/src/services/navigateTo.ts index b3f72d83cb3..54f87d8e50b 100644 --- a/src/services/navigateTo.ts +++ b/src/services/navigateTo.ts @@ -2,31 +2,30 @@ module ts.NavigateTo { type RawNavigateToItem = { name: string; fileName: string; matchKind: PatternMatchKind; isCaseSensitive: boolean; declaration: Declaration }; export function getNavigateToItems(program: Program, cancellationToken: CancellationTokenObject, searchValue: string, maxResultCount: number): NavigateToItem[] { - var patternMatcher = createPatternMatcher(searchValue); - var rawItems: RawNavigateToItem[] = []; + let patternMatcher = createPatternMatcher(searchValue); + let rawItems: RawNavigateToItem[] = []; // Search the declarations in all files and output matched NavigateToItem into array of NavigateToItem[] forEach(program.getSourceFiles(), sourceFile => { cancellationToken.throwIfCancellationRequested(); - var declarations = sourceFile.getNamedDeclarations(); - for (var i = 0, n = declarations.length; i < n; i++) { - var declaration = declarations[i]; + let declarations = sourceFile.getNamedDeclarations(); + for (let declaration of declarations) { var name = getDeclarationName(declaration); if (name !== undefined) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); + let matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); if (!matches) { continue; } - // It was a match! If the pattern has dots in it, then also see if hte + // It was a match! If the pattern has dots in it, then also see if the // declaration container matches as well. if (patternMatcher.patternContainsDots) { - var containers = getContainers(declaration); + let containers = getContainers(declaration); if (!containers) { return undefined; } @@ -38,8 +37,8 @@ module ts.NavigateTo { } } - var fileName = sourceFile.fileName; - var matchKind = bestMatchKind(matches); + let fileName = sourceFile.fileName; + let matchKind = bestMatchKind(matches); rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration }); } } @@ -50,7 +49,7 @@ module ts.NavigateTo { rawItems = rawItems.slice(0, maxResultCount); } - var items = map(rawItems, createNavigateToItem); + let items = map(rawItems, createNavigateToItem); return items; @@ -58,8 +57,8 @@ module ts.NavigateTo { Debug.assert(matches.length > 0); // This is a case sensitive match, only if all the submatches were case sensitive. - for (var i = 0, n = matches.length; i < n; i++) { - if (!matches[i].isCaseSensitive) { + for (let match of matches) { + if (!match.isCaseSensitive) { return false; } } @@ -68,13 +67,13 @@ module ts.NavigateTo { } function getDeclarationName(declaration: Declaration): string { - var result = getTextOfIdentifierOrLiteral(declaration.name); + let result = getTextOfIdentifierOrLiteral(declaration.name); if (result !== undefined) { return result; } if (declaration.name.kind === SyntaxKind.ComputedPropertyName) { - var expr = (declaration.name).expression; + let expr = (declaration.name).expression; if (expr.kind === SyntaxKind.PropertyAccessExpression) { return (expr).name.text; } @@ -98,7 +97,7 @@ module ts.NavigateTo { function tryAddSingleDeclarationName(declaration: Declaration, containers: string[]) { if (declaration && declaration.name) { - var text = getTextOfIdentifierOrLiteral(declaration.name); + let text = getTextOfIdentifierOrLiteral(declaration.name); if (text !== undefined) { containers.unshift(text); } @@ -118,7 +117,7 @@ module ts.NavigateTo { // // [X.Y.Z]() { } function tryAddComputedPropertyName(expression: Expression, containers: string[], includeLastPortion: boolean): boolean { - var text = getTextOfIdentifierOrLiteral(expression); + let text = getTextOfIdentifierOrLiteral(expression); if (text !== undefined) { if (includeLastPortion) { containers.unshift(text); @@ -127,7 +126,7 @@ module ts.NavigateTo { } if (expression.kind === SyntaxKind.PropertyAccessExpression) { - var propertyAccess = expression; + let propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); } @@ -139,7 +138,7 @@ module ts.NavigateTo { } function getContainers(declaration: Declaration) { - var containers: string[] = []; + let containers: string[] = []; // First, if we started with a computed property name, then add all but the last // portion into the container array. @@ -165,10 +164,10 @@ module ts.NavigateTo { function bestMatchKind(matches: PatternMatch[]) { Debug.assert(matches.length > 0); - var bestMatchKind = PatternMatchKind.camelCase; + let bestMatchKind = PatternMatchKind.camelCase; - for (var i = 0, n = matches.length; i < n; i++) { - var kind = matches[i].kind; + for (let match of matches) { + let kind = match.kind; if (kind < bestMatchKind) { bestMatchKind = kind; } @@ -178,7 +177,7 @@ module ts.NavigateTo { } // This means "compare in a case insensitive manner." - var baseSensitivity: Intl.CollatorOptions = { sensitivity: "base" }; + let baseSensitivity: Intl.CollatorOptions = { sensitivity: "base" }; function compareNavigateToItems(i1: RawNavigateToItem, i2: RawNavigateToItem) { // TODO(cyrusn): get the gamut of comparisons that VS already uses here. // Right now we just sort by kind first, and then by name of the item. @@ -190,8 +189,8 @@ module ts.NavigateTo { } function createNavigateToItem(rawItem: RawNavigateToItem): NavigateToItem { - var declaration = rawItem.declaration; - var container = getContainerNode(declaration); + let declaration = rawItem.declaration; + let container = getContainerNode(declaration); return { name: rawItem.name, kind: getNodeKind(declaration), diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index b254397f8b0..e475827837c 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -4,16 +4,16 @@ module ts.NavigationBar { export function getNavigationBarItems(sourceFile: SourceFile): ts.NavigationBarItem[] { // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. - var hasGlobalNode = false; + let hasGlobalNode = false; return getItemsWorker(getTopLevelNodes(sourceFile), createTopLevelItem); function getIndent(node: Node): number { // If we have a global node in the tree, // then it adds an extra layer of depth to all subnodes. - var indent = hasGlobalNode ? 1 : 0; + let indent = hasGlobalNode ? 1 : 0; - var current = node.parent; + let current = node.parent; while (current) { switch (current.kind) { case SyntaxKind.ModuleDeclaration: @@ -39,7 +39,7 @@ module ts.NavigationBar { } function getChildNodes(nodes: Node[]): Node[] { - var childNodes: Node[] = []; + let childNodes: Node[] = []; function visit(node: Node) { switch (node.kind) { @@ -50,6 +50,38 @@ module ts.NavigationBar { case SyntaxKind.ArrayBindingPattern: forEach((node).elements, visit); break; + + case SyntaxKind.ExportDeclaration: + // Handle named exports case e.g.: + // export {a, b as B} from "mod"; + if ((node).exportClause) { + forEach((node).exportClause.elements, visit); + } + break; + + case SyntaxKind.ImportDeclaration: + let importClause = (node).importClause; + if (importClause) { + // Handle default import case e.g.: + // import d from "mod"; + if (importClause.name) { + childNodes.push(importClause); + } + + // Handle named bindings in imports e.g.: + // import * as NS from "mod"; + // import {a, b as B} from "mod"; + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + childNodes.push(importClause.namedBindings); + } + else { + forEach((importClause.namedBindings).elements, visit); + } + } + } + break; + case SyntaxKind.BindingElement: case SyntaxKind.VariableDeclaration: if (isBindingPattern((node).name)) { @@ -62,12 +94,16 @@ module ts.NavigationBar { case SyntaxKind.InterfaceDeclaration: case SyntaxKind.ModuleDeclaration: case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ExportSpecifier: childNodes.push(node); + break; } } - //for (var i = 0, n = nodes.length; i < n; i++) { - // var node = nodes[i]; + //for (let i = 0, n = nodes.length; i < n; i++) { + // let node = nodes[i]; // if (node.kind === SyntaxKind.ClassDeclaration || // node.kind === SyntaxKind.EnumDeclaration || @@ -86,7 +122,7 @@ module ts.NavigationBar { } function getTopLevelNodes(node: SourceFile): Node[] { - var topLevelNodes: Node[] = []; + let topLevelNodes: Node[] = []; topLevelNodes.push(node); addTopLevelNodes(node.statements, topLevelNodes); @@ -114,8 +150,7 @@ module ts.NavigationBar { function addTopLevelNodes(nodes: Node[], topLevelNodes: Node[]): void { nodes = sortNodes(nodes); - for (var i = 0, n = nodes.length; i < n; i++) { - var node = nodes[i]; + for (let node of nodes) { switch (node.kind) { case SyntaxKind.ClassDeclaration: case SyntaxKind.EnumDeclaration: @@ -124,13 +159,13 @@ module ts.NavigationBar { break; case SyntaxKind.ModuleDeclaration: - var moduleDeclaration = node; + let moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes((getInnermostModule(moduleDeclaration).body).statements, topLevelNodes); break; case SyntaxKind.FunctionDeclaration: - var functionDeclaration = node; + let functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); addTopLevelNodes((functionDeclaration.body).statements, topLevelNodes); @@ -164,18 +199,17 @@ module ts.NavigationBar { } function getItemsWorker(nodes: Node[], createItem: (n: Node) => ts.NavigationBarItem): ts.NavigationBarItem[] { - var items: ts.NavigationBarItem[] = []; + let items: ts.NavigationBarItem[] = []; - var keyToItem: Map = {}; + let keyToItem: Map = {}; - for (var i = 0, n = nodes.length; i < n; i++) { - var child = nodes[i]; - var item = createItem(child); + for (let child of nodes) { + let item = createItem(child); if (item !== undefined) { if (item.text.length > 0) { - var key = item.text + "-" + item.kind + "-" + item.indent; + let key = item.text + "-" + item.kind + "-" + item.indent; - var itemWithSameName = keyToItem[key]; + let itemWithSameName = keyToItem[key]; if (itemWithSameName) { // We had an item with the same name. Merge these items together. merge(itemWithSameName, item); @@ -202,12 +236,8 @@ module ts.NavigationBar { // Next, recursively merge or add any children in the source as appropriate. outer: - for (var i = 0, n = source.childItems.length; i < n; i++) { - var sourceChild = source.childItems[i]; - - for (var j = 0, m = target.childItems.length; j < m; j++) { - var targetChild = target.childItems[j]; - + for (let sourceChild of source.childItems) { + for (let targetChild of target.childItems) { if (targetChild.text === sourceChild.text && targetChild.kind === sourceChild.kind) { // Found a match. merge them. merge(targetChild, sourceChild); @@ -263,8 +293,8 @@ module ts.NavigationBar { case SyntaxKind.VariableDeclaration: case SyntaxKind.BindingElement: - var variableDeclarationNode: Node; - var name: Node; + let variableDeclarationNode: Node; + let name: Node; if (node.kind === SyntaxKind.BindingElement) { name = (node).name; @@ -291,9 +321,16 @@ module ts.NavigationBar { else { return createItem(node, getTextOfNode(name), ts.ScriptElementKind.variableElement); } - + case SyntaxKind.Constructor: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); + + case SyntaxKind.ExportSpecifier: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportClause: + case SyntaxKind.NamespaceImport: + return createItem(node, getTextOfNode((node).name), ts.ScriptElementKind.alias); } return undefined; @@ -354,7 +391,7 @@ module ts.NavigationBar { } // Otherwise, we need to aggregate each identifier to build up the qualified name. - var result: string[] = []; + let result: string[] = []; result.push(moduleDeclaration.name.text); @@ -368,9 +405,9 @@ module ts.NavigationBar { } function createModuleItem(node: ModuleDeclaration): NavigationBarItem { - var moduleName = getModuleName(node); + let moduleName = getModuleName(node); - var childItems = getItemsWorker(getChildNodes((getInnermostModule(node).body).statements), createChildItem); + let childItems = getItemsWorker(getChildNodes((getInnermostModule(node).body).statements), createChildItem); return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, @@ -381,10 +418,10 @@ module ts.NavigationBar { } function createFunctionItem(node: FunctionDeclaration) { - if (node.name && node.body && node.body.kind === SyntaxKind.Block) { - var childItems = getItemsWorker(sortNodes((node.body).statements), createChildItem); + if (node.body && node.body.kind === SyntaxKind.Block) { + let childItems = getItemsWorker(sortNodes((node.body).statements), createChildItem); - return getNavigationBarItem(node.name.text, + return getNavigationBarItem(!node.name ? "default": node.name.text , ts.ScriptElementKind.functionElement, getNodeModifiers(node), [getNodeSpan(node)], @@ -396,14 +433,14 @@ module ts.NavigationBar { } function createSourceFileItem(node: SourceFile): ts.NavigationBarItem { - var childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); + let childItems = getItemsWorker(getChildNodes(node.statements), createChildItem); if (childItems === undefined || childItems.length === 0) { return undefined; } hasGlobalNode = true; - var rootName = isExternalModule(node) + let rootName = isExternalModule(node) ? "\"" + escapeString(getBaseFileName(removeFileExtension(normalizePath(node.fileName)))) + "\"" : "" @@ -415,26 +452,28 @@ module ts.NavigationBar { } function createClassItem(node: ClassDeclaration): ts.NavigationBarItem { - var childItems: NavigationBarItem[]; + let childItems: NavigationBarItem[]; if (node.members) { - var constructor = forEach(node.members, member => { + let constructor = forEach(node.members, member => { return member.kind === SyntaxKind.Constructor && member; }); // Add the constructor parameters in as children of the class (for property parameters). - // Note that *all* parameters will be added to the nodes array, but parameters that + // Note that *all non-binding pattern named* parameters will be added to the nodes array, but parameters that // are not properties will be filtered out later by createChildItem. - var nodes: Node[] = removeDynamicallyNamedProperties(node); + let nodes: Node[] = removeDynamicallyNamedProperties(node); if (constructor) { - nodes.push.apply(nodes, constructor.parameters); + nodes.push.apply(nodes, filter(constructor.parameters, p => !isBindingPattern(p.name))); } - var childItems = getItemsWorker(sortNodes(nodes), createChildItem); + childItems = getItemsWorker(sortNodes(nodes), createChildItem); } + var nodeName = !node.name ? "default" : node.name.text; + return getNavigationBarItem( - node.name.text, + nodeName, ts.ScriptElementKind.classElement, getNodeModifiers(node), [getNodeSpan(node)], @@ -443,7 +482,7 @@ module ts.NavigationBar { } function createEnumItem(node: EnumDeclaration): ts.NavigationBarItem { - var childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); + let childItems = getItemsWorker(sortNodes(removeComputedProperties(node)), createChildItem); return getNavigationBarItem( node.name.text, ts.ScriptElementKind.enumElement, @@ -454,7 +493,7 @@ module ts.NavigationBar { } function createIterfaceItem(node: InterfaceDeclaration): ts.NavigationBarItem { - var childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); + let childItems = getItemsWorker(sortNodes(removeDynamicallyNamedProperties(node)), createChildItem); return getNavigationBarItem( node.name.text, ts.ScriptElementKind.interfaceElement, diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index 54b548336de..4c9dcedc7a4 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -16,12 +16,12 @@ module ts { export module OutliningElementsCollector { export function collectElements(sourceFile: SourceFile): OutliningSpan[] { - var elements: OutliningSpan[] = []; - var collapseText = "..."; + let elements: OutliningSpan[] = []; + let collapseText = "..."; function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) { if (hintSpanNode && startElement && endElement) { - var span: OutliningSpan = { + let span: OutliningSpan = { textSpan: createTextSpanFromBounds(startElement.pos, endElement.end), hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end), bannerText: collapseText, @@ -35,8 +35,8 @@ module ts { return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction; } - var depth = 0; - var maxDepth = 20; + let depth = 0; + let maxDepth = 20; function walk(n: Node): void { if (depth > maxDepth) { return; @@ -44,9 +44,9 @@ module ts { switch (n.kind) { case SyntaxKind.Block: if (!isFunctionBlock(n)) { - var parent = n.parent; - var openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - var closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + let parent = n.parent; + let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); // Check if the block is standalone, or 'attached' to some parent statement. // If the latter, we want to collaps the block, but consider its hint span @@ -66,13 +66,13 @@ module ts { if (parent.kind === SyntaxKind.TryStatement) { // Could be the try-block, or the finally-block. - var tryStatement = parent; + let tryStatement = parent; if (tryStatement.tryBlock === n) { addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { - var finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); + let finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); if (finallyKeyword) { addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); break; @@ -84,7 +84,7 @@ module ts { // Block was a standalone block. In this case we want to only collapse // the span of the block, independent of any parent span. - var span = createTextSpanFromBounds(n.getStart(), n.end); + let span = createTextSpanFromBounds(n.getStart(), n.end); elements.push({ textSpan: span, hintSpan: span, @@ -95,23 +95,25 @@ module ts { } // Fallthrough. - case SyntaxKind.ModuleBlock: - var openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - var closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + case SyntaxKind.ModuleBlock: { + let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; + } case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.ObjectLiteralExpression: - case SyntaxKind.SwitchStatement: - var openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - var closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + case SyntaxKind.CaseBlock: { + let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; + } case SyntaxKind.ArrayLiteralExpression: - var openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); - var closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); + let openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); + let closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); break; } diff --git a/src/services/patternMatcher.ts b/src/services/patternMatcher.ts index 9bcd3e1d000..646782b2cf0 100644 --- a/src/services/patternMatcher.ts +++ b/src/services/patternMatcher.ts @@ -112,13 +112,13 @@ module ts { // we see the name of a module that is used everywhere, or the name of an overload). As // such, we cache the information we compute about the candidate for the life of this // pattern matcher so we don't have to compute it multiple times. - var stringToWordSpans: Map = {}; + let stringToWordSpans: Map = {}; pattern = pattern.trim(); - var fullPatternSegment = createSegment(pattern); - var dotSeparatedSegments = pattern.split(".").map(p => createSegment(p.trim())); - var invalidPattern = dotSeparatedSegments.length === 0 || forEach(dotSeparatedSegments, segmentIsInvalid); + let fullPatternSegment = createSegment(pattern); + let dotSeparatedSegments = pattern.split(".").map(p => createSegment(p.trim())); + let invalidPattern = dotSeparatedSegments.length === 0 || forEach(dotSeparatedSegments, segmentIsInvalid); return { getMatches, @@ -147,7 +147,7 @@ module ts { // First, check that the last part of the dot separated pattern matches the name of the // candidate. If not, then there's no point in proceeding and doing the more // expensive work. - var candidateMatch = matchSegment(candidate, lastOrUndefined(dotSeparatedSegments)); + let candidateMatch = matchSegment(candidate, lastOrUndefined(dotSeparatedSegments)); if (!candidateMatch) { return undefined; } @@ -164,16 +164,16 @@ module ts { // So far so good. Now break up the container for the candidate and check if all // the dotted parts match up correctly. - var totalMatch = candidateMatch; + let totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; + for (let i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { - var segment = dotSeparatedSegments[i]; - var containerName = candidateContainers[j]; + let segment = dotSeparatedSegments[i]; + let containerName = candidateContainers[j]; - var containerMatch = matchSegment(containerName, segment); + let containerMatch = matchSegment(containerName, segment); if (!containerMatch) { // This container didn't match the pattern piece. So there's no match at all. return undefined; @@ -196,7 +196,7 @@ module ts { } function matchTextChunk(candidate: string, chunk: TextChunk, punctuationStripped: boolean): PatternMatch { - var index = indexOfIgnoringCase(candidate, chunk.textLowerCase); + let index = indexOfIgnoringCase(candidate, chunk.textLowerCase); if (index === 0) { if (chunk.text.length === candidate.length) { // a) Check if the part matches the candidate entirely, in an case insensitive or @@ -210,7 +210,7 @@ module ts { } } - var isLowercase = chunk.isLowerCase; + let isLowercase = chunk.isLowerCase; if (isLowercase) { if (index > 0) { // c) If the part is entirely lowercase, then check if it is contained anywhere in the @@ -220,9 +220,8 @@ module ts { // Note: We only have a substring match if the lowercase part is prefix match of some // word part. That way we don't match something like 'Class' when the user types 'a'. // But we would match 'FooAttribute' (since 'Attribute' starts with 'a'). - var wordSpans = getWordSpans(candidate); - for (var i = 0, n = wordSpans.length; i < n; i++) { - var span = wordSpans[i] + let wordSpans = getWordSpans(candidate); + for (let span of wordSpans) { if (partStartsWith(candidate, span, chunk.text, /*ignoreCase:*/ true)) { return createPatternMatch(PatternMatchKind.substring, punctuationStripped, /*isCaseSensitive:*/ partStartsWith(candidate, span, chunk.text, /*ignoreCase:*/ false)); @@ -242,8 +241,8 @@ module ts { if (!isLowercase) { // e) If the part was not entirely lowercase, then attempt a camel cased match as well. if (chunk.characterSpans.length > 0) { - var candidateParts = getWordSpans(candidate); - var camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, /*ignoreCase:*/ false); + let candidateParts = getWordSpans(candidate); + let camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, /*ignoreCase:*/ false); if (camelCaseWeight !== undefined) { return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, /*isCaseSensitive:*/ true, /*camelCaseWeight:*/ camelCaseWeight); } @@ -274,8 +273,8 @@ module ts { } function containsSpaceOrAsterisk(text: string): boolean { - for (var i = 0; i < text.length; i++) { - var ch = text.charCodeAt(i); + for (let i = 0; i < text.length; i++) { + let ch = text.charCodeAt(i); if (ch === CharacterCodes.space || ch === CharacterCodes.asterisk) { return true; } @@ -293,7 +292,7 @@ module ts { // Note: if the segment contains a space or an asterisk then we must assume that it's a // multi-word segment. if (!containsSpaceOrAsterisk(segment.totalTextChunk.text)) { - var match = matchTextChunk(candidate, segment.totalTextChunk, /*punctuationStripped:*/ false); + let match = matchTextChunk(candidate, segment.totalTextChunk, /*punctuationStripped:*/ false); if (match) { return [match]; } @@ -336,14 +335,12 @@ module ts { // // Only if all words have some sort of match is the pattern considered matched. - var subWordTextChunks = segment.subWordTextChunks; - var matches: PatternMatch[] = undefined; - - for (var i = 0, n = subWordTextChunks.length; i < n; i++) { - var subWordTextChunk = subWordTextChunks[i]; + let subWordTextChunks = segment.subWordTextChunks; + let matches: PatternMatch[] = undefined; + for (let subWordTextChunk of subWordTextChunks) { // Try to match the candidate with this word - var result = matchTextChunk(candidate, subWordTextChunk, /*punctuationStripped:*/ true); + let result = matchTextChunk(candidate, subWordTextChunk, /*punctuationStripped:*/ true); if (!result) { return undefined; } @@ -356,8 +353,8 @@ module ts { } function partStartsWith(candidate: string, candidateSpan: TextSpan, pattern: string, ignoreCase: boolean, patternSpan?: TextSpan): boolean { - var patternPartStart = patternSpan ? patternSpan.start : 0; - var patternPartLength = patternSpan ? patternSpan.length : pattern.length; + let patternPartStart = patternSpan ? patternSpan.start : 0; + let patternPartLength = patternSpan ? patternSpan.length : pattern.length; if (patternPartLength > candidateSpan.length) { // Pattern part is longer than the candidate part. There can never be a match. @@ -365,18 +362,18 @@ module ts { } if (ignoreCase) { - for (var i = 0; i < patternPartLength; i++) { - var ch1 = pattern.charCodeAt(patternPartStart + i); - var ch2 = candidate.charCodeAt(candidateSpan.start + i); + for (let i = 0; i < patternPartLength; i++) { + let ch1 = pattern.charCodeAt(patternPartStart + i); + let ch2 = candidate.charCodeAt(candidateSpan.start + i); if (toLowerCase(ch1) !== toLowerCase(ch2)) { return false; } } } else { - for (var i = 0; i < patternPartLength; i++) { - var ch1 = pattern.charCodeAt(patternPartStart + i); - var ch2 = candidate.charCodeAt(candidateSpan.start + i); + for (let i = 0; i < patternPartLength; i++) { + let ch1 = pattern.charCodeAt(patternPartStart + i); + let ch2 = candidate.charCodeAt(candidateSpan.start + i); if (ch1 !== ch2) { return false; } @@ -387,23 +384,23 @@ module ts { } function tryCamelCaseMatch(candidate: string, candidateParts: TextSpan[], chunk: TextChunk, ignoreCase: boolean): number { - var chunkCharacterSpans = chunk.characterSpans; + let chunkCharacterSpans = chunk.characterSpans; // Note: we may have more pattern parts than candidate parts. This is because multiple // pattern parts may match a candidate part. For example "SiUI" against "SimpleUI". // We'll have 3 pattern parts Si/U/I against two candidate parts Simple/UI. However, U // and I will both match in UI. - var currentCandidate = 0; - var currentChunkSpan = 0; - var firstMatch: number = undefined; - var contiguous: boolean = undefined; + let currentCandidate = 0; + let currentChunkSpan = 0; + let firstMatch: number = undefined; + let contiguous: boolean = undefined; while (true) { // Let's consider our termination cases if (currentChunkSpan === chunkCharacterSpans.length) { // We did match! We shall assign a weight to this - var weight = 0; + let weight = 0; // Was this contiguous? if (contiguous) { @@ -422,15 +419,15 @@ module ts { return undefined; } - var candidatePart = candidateParts[currentCandidate]; - var gotOneMatchThisCandidate = false; + let candidatePart = candidateParts[currentCandidate]; + let gotOneMatchThisCandidate = false; // Consider the case of matching SiUI against SimpleUIElement. The candidate parts // will be Simple/UI/Element, and the pattern parts will be Si/U/I. We'll match 'Si' // against 'Simple' first. Then we'll match 'U' against 'UI'. However, we want to // still keep matching pattern parts against that candidate part. for (; currentChunkSpan < chunkCharacterSpans.length; currentChunkSpan++) { - var chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; + let chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; if (gotOneMatchThisCandidate) { // We've already gotten one pattern part match in this candidate. We will @@ -474,7 +471,7 @@ module ts { // Helper function to compare two matches to determine which is better. Matches are first // ordered by kind (so all prefix matches always beat all substring matches). Then, if the - // match is a camel case match, the relative weights of hte match are used to determine + // match is a camel case match, the relative weights of the match are used to determine // which is better (with a greater weight being better). Then if the match is of the same // type, then a case sensitive match is considered better than an insensitive one. function patternMatchCompareTo(match1: PatternMatch, match2: PatternMatch): number { @@ -540,7 +537,7 @@ module ts { // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. - var str = String.fromCharCode(ch); + let str = String.fromCharCode(ch); return str === str.toUpperCase(); } @@ -557,12 +554,12 @@ module ts { // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. - var str = String.fromCharCode(ch); + let str = String.fromCharCode(ch); return str === str.toLowerCase(); } function containsUpperCaseLetter(string: string): boolean { - for (var i = 0, n = string.length; i < n; i++) { + for (let i = 0, n = string.length; i < n; i++) { if (isUpperCaseLetter(string.charCodeAt(i))) { return true; } @@ -572,7 +569,7 @@ module ts { } function startsWith(string: string, search: string) { - for (var i = 0, n = search.length; i < n; i++) { + for (let i = 0, n = search.length; i < n; i++) { if (string.charCodeAt(i) !== search.charCodeAt(i)) { return false; } @@ -583,7 +580,7 @@ module ts { // Assumes 'value' is already lowercase. function indexOfIgnoringCase(string: string, value: string): number { - for (var i = 0, n = string.length - value.length; i <= n; i++) { + for (let i = 0, n = string.length - value.length; i <= n; i++) { if (startsWithIgnoringCase(string, value, i)) { return i; } @@ -594,9 +591,9 @@ module ts { // Assumes 'value' is already lowercase. function startsWithIgnoringCase(string: string, value: string, start: number): boolean { - for (var i = 0, n = value.length; i < n; i++) { - var ch1 = toLowerCase(string.charCodeAt(i + start)); - var ch2 = value.charCodeAt(i); + for (let i = 0, n = value.length; i < n; i++) { + let ch1 = toLowerCase(string.charCodeAt(i + start)); + let ch2 = value.charCodeAt(i); if (ch1 !== ch2) { return false; @@ -631,12 +628,12 @@ module ts { } function breakPatternIntoTextChunks(pattern: string): TextChunk[] { - var result: TextChunk[] = []; - var wordStart = 0; - var wordLength = 0; + let result: TextChunk[] = []; + let wordStart = 0; + let wordLength = 0; - for (var i = 0; i < pattern.length; i++) { - var ch = pattern.charCodeAt(i); + for (let i = 0; i < pattern.length; i++) { + let ch = pattern.charCodeAt(i); if (isWordChar(ch)) { if (wordLength++ === 0) { wordStart = i; @@ -658,7 +655,7 @@ module ts { } function createTextChunk(text: string): TextChunk { - var textLowerCase = text.toLowerCase(); + let textLowerCase = text.toLowerCase(); return { text, textLowerCase, @@ -676,15 +673,15 @@ module ts { } function breakIntoSpans(identifier: string, word: boolean): TextSpan[] { - var result: TextSpan[] = []; + let result: TextSpan[] = []; - var wordStart = 0; - for (var i = 1, n = identifier.length; i < n; i++) { - var lastIsDigit = isDigit(identifier.charCodeAt(i - 1)); - var currentIsDigit = isDigit(identifier.charCodeAt(i)); + let wordStart = 0; + for (let i = 1, n = identifier.length; i < n; i++) { + let lastIsDigit = isDigit(identifier.charCodeAt(i - 1)); + let currentIsDigit = isDigit(identifier.charCodeAt(i)); - var hasTransitionFromLowerToUpper = transitionFromLowerToUpper(identifier, word, i); - var hasTransitionFromUpperToLower = transitionFromUpperToLower(identifier, word, i, wordStart); + let hasTransitionFromLowerToUpper = transitionFromLowerToUpper(identifier, word, i); + let hasTransitionFromUpperToLower = transitionFromUpperToLower(identifier, word, i, wordStart); if (charIsPunctuation(identifier.charCodeAt(i - 1)) || charIsPunctuation(identifier.charCodeAt(i)) || @@ -739,8 +736,8 @@ module ts { } function isAllPunctuation(identifier: string, start: number, end: number): boolean { - for (var i = start; i < end; i++) { - var ch = identifier.charCodeAt(i); + for (let i = start; i < end; i++) { + let ch = identifier.charCodeAt(i); // We don't consider _ or $ as punctuation as there may be things with that name. if (!charIsPunctuation(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) { @@ -761,8 +758,8 @@ module ts { // etc. if (index != wordStart && index + 1 < identifier.length) { - var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); - var nextIsLower = isLowerCaseLetter(identifier.charCodeAt(index + 1)); + let currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + let nextIsLower = isLowerCaseLetter(identifier.charCodeAt(index + 1)); if (currentIsUpper && nextIsLower) { // We have a transition from an upper to a lower letter here. But we only @@ -773,7 +770,7 @@ module ts { // that follows. Note: this will make the following not split properly: // "HELLOthere". However, these sorts of names do not show up in .Net // programs. - for (var i = wordStart; i < index; i++) { + for (let i = wordStart; i < index; i++) { if (!isUpperCaseLetter(identifier.charCodeAt(i))) { return false; } @@ -788,8 +785,8 @@ module ts { } function transitionFromLowerToUpper(identifier: string, word: boolean, index: number): boolean { - var lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); - var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + let lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); + let currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); // See if the casing indicates we're starting a new word. Note: if we're breaking on // words, then just seeing an upper case character isn't enough. Instead, it has to @@ -804,7 +801,7 @@ module ts { // on characters would be: A M // // We break the search string on characters. But we break the symbol name on words. - var transition = word + let transition = word ? (currentIsUpper && !lastIsUpper) : currentIsUpper; return transition; diff --git a/src/services/resources/diagnosticCode.generated.ts b/src/services/resources/diagnosticCode.generated.ts deleted file mode 100644 index 1a0ac12e165..00000000000 --- a/src/services/resources/diagnosticCode.generated.ts +++ /dev/null @@ -1,448 +0,0 @@ -// -module TypeScript { - export var DiagnosticCode = { - error_TS_0_1: "error TS{0}: {1}", - warning_TS_0_1: "warning TS{0}: {1}", - Unrecognized_escape_sequence: "Unrecognized escape sequence.", - Unexpected_character_0: "Unexpected character {0}.", - Unterminated_string_literal: "Unterminated string literal.", - Identifier_expected: "Identifier expected.", - _0_keyword_expected: "'{0}' keyword expected.", - _0_expected: "'{0}' expected.", - Identifier_expected_0_is_a_keyword: "Identifier expected; '{0}' is a keyword.", - Automatic_semicolon_insertion_not_allowed: "Automatic semicolon insertion not allowed.", - Unexpected_token_0_expected: "Unexpected token; '{0}' expected.", - Trailing_comma_not_allowed: "Trailing comma not allowed.", - public_or_private_modifier_must_precede_static: "'public' or 'private' modifier must precede 'static'.", - Unexpected_token: "Unexpected token.", - Catch_clause_parameter_cannot_have_a_type_annotation: "Catch clause parameter cannot have a type annotation.", - A_rest_parameter_must_be_last_in_a_parameter_list: "A rest parameter must be last in a parameter list.", - Parameter_cannot_have_question_mark_and_initializer: "Parameter cannot have question mark and initializer.", - A_required_parameter_cannot_follow_an_optional_parameter: "A required parameter cannot follow an optional parameter.", - Index_signatures_cannot_have_rest_parameters: "Index signatures cannot have rest parameters.", - Index_signature_parameter_cannot_have_modifiers: "Index signature parameter cannot have modifiers.", - Index_signature_parameter_cannot_have_a_question_mark: "Index signature parameter cannot have a question mark.", - Index_signature_parameter_cannot_have_an_initializer: "Index signature parameter cannot have an initializer.", - Index_signature_must_have_a_type_annotation: "Index signature must have a type annotation.", - Index_signature_parameter_must_have_a_type_annotation: "Index signature parameter must have a type annotation.", - Index_signature_parameter_type_must_be_string_or_number: "Index signature parameter type must be 'string' or 'number'.", - extends_clause_already_seen: "'extends' clause already seen.", - extends_clause_must_precede_implements_clause: "'extends' clause must precede 'implements' clause.", - Classes_can_only_extend_a_single_class: "Classes can only extend a single class.", - implements_clause_already_seen: "'implements' clause already seen.", - Accessibility_modifier_already_seen: "Accessibility modifier already seen.", - _0_modifier_must_precede_1_modifier: "'{0}' modifier must precede '{1}' modifier.", - _0_modifier_already_seen: "'{0}' modifier already seen.", - _0_modifier_cannot_appear_on_a_class_element: "'{0}' modifier cannot appear on a class element.", - Interface_declaration_cannot_have_implements_clause: "Interface declaration cannot have 'implements' clause.", - super_invocation_cannot_have_type_arguments: "'super' invocation cannot have type arguments.", - Only_ambient_modules_can_use_quoted_names: "Only ambient modules can use quoted names.", - Statements_are_not_allowed_in_ambient_contexts: "Statements are not allowed in ambient contexts.", - A_function_implementation_cannot_be_declared_in_an_ambient_context: "A function implementation cannot be declared in an ambient context.", - A_declare_modifier_cannot_be_used_in_an_already_ambient_context: "A 'declare' modifier cannot be used in an already ambient context.", - Initializers_are_not_allowed_in_ambient_contexts: "Initializers are not allowed in ambient contexts.", - _0_modifier_cannot_appear_on_a_module_element: "'{0}' modifier cannot appear on a module element.", - A_declare_modifier_cannot_be_used_with_an_interface_declaration: "A 'declare' modifier cannot be used with an interface declaration.", - A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file: "A 'declare' modifier is required for a top level declaration in a .d.ts file.", - A_rest_parameter_cannot_be_optional: "A rest parameter cannot be optional.", - A_rest_parameter_cannot_have_an_initializer: "A rest parameter cannot have an initializer.", - set_accessor_must_have_exactly_one_parameter: "'set' accessor must have exactly one parameter.", - set_accessor_parameter_cannot_be_optional: "'set' accessor parameter cannot be optional.", - set_accessor_parameter_cannot_have_an_initializer: "'set' accessor parameter cannot have an initializer.", - set_accessor_cannot_have_rest_parameter: "'set' accessor cannot have rest parameter.", - get_accessor_cannot_have_parameters: "'get' accessor cannot have parameters.", - Modifiers_cannot_appear_here: "Modifiers cannot appear here.", - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: "Accessors are only available when targeting ECMAScript 5 and higher.", - Enum_member_must_have_initializer: "Enum member must have initializer.", - Export_assignment_cannot_be_used_in_internal_modules: "Export assignment cannot be used in internal modules.", - Ambient_enum_elements_can_only_have_integer_literal_initializers: "Ambient enum elements can only have integer literal initializers.", - module_class_interface_enum_import_or_statement: "module, class, interface, enum, import or statement", - constructor_function_accessor_or_variable: "constructor, function, accessor or variable", - statement: "statement", - case_or_default_clause: "case or default clause", - identifier: "identifier", - call_construct_index_property_or_function_signature: "call, construct, index, property or function signature", - expression: "expression", - type_name: "type name", - property_or_accessor: "property or accessor", - parameter: "parameter", - type: "type", - type_parameter: "type parameter", - A_declare_modifier_cannot_be_used_with_an_import_declaration: "A 'declare' modifier cannot be used with an import declaration.", - Invalid_reference_directive_syntax: "Invalid 'reference' directive syntax.", - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: "Octal literals are not available when targeting ECMAScript 5 and higher.", - Accessors_are_not_allowed_in_ambient_contexts: "Accessors are not allowed in ambient contexts.", - _0_modifier_cannot_appear_on_a_constructor_declaration: "'{0}' modifier cannot appear on a constructor declaration.", - _0_modifier_cannot_appear_on_a_parameter: "'{0}' modifier cannot appear on a parameter.", - Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: "Only a single variable declaration is allowed in a 'for...in' statement.", - Type_parameters_cannot_appear_on_a_constructor_declaration: "Type parameters cannot appear on a constructor declaration.", - Type_annotation_cannot_appear_on_a_constructor_declaration: "Type annotation cannot appear on a constructor declaration.", - Type_parameters_cannot_appear_on_an_accessor: "Type parameters cannot appear on an accessor.", - Type_annotation_cannot_appear_on_a_set_accessor: "Type annotation cannot appear on a 'set' accessor.", - Index_signature_must_have_exactly_one_parameter: "Index signature must have exactly one parameter.", - _0_list_cannot_be_empty: "'{0}' list cannot be empty.", - variable_declaration: "variable declaration", - type_argument: "type argument", - Invalid_use_of_0_in_strict_mode: "Invalid use of '{0}' in strict mode.", - with_statements_are_not_allowed_in_strict_mode: "'with' statements are not allowed in strict mode.", - delete_cannot_be_called_on_an_identifier_in_strict_mode: "'delete' cannot be called on an identifier in strict mode.", - Invalid_left_hand_side_in_for_in_statement: "Invalid left-hand side in 'for...in' statement.", - continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: "'continue' statement can only be used within an enclosing iteration statement.", - break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: "'break' statement can only be used within an enclosing iteration or switch statement.", - Jump_target_not_found: "Jump target not found.", - Jump_target_cannot_cross_function_boundary: "Jump target cannot cross function boundary.", - return_statement_must_be_contained_within_a_function_body: "'return' statement must be contained within a function body.", - Expression_expected: "Expression expected.", - Type_expected: "Type expected.", - Template_literal_cannot_be_used_as_an_element_name: "Template literal cannot be used as an element name.", - Computed_property_names_cannot_be_used_here: "Computed property names cannot be used here.", - yield_expression_must_be_contained_within_a_generator_declaration: "'yield' expression must be contained within a generator declaration.", - Unterminated_regular_expression_literal: "Unterminated regular expression literal.", - Unterminated_template_literal: "Unterminated template literal.", - await_expression_must_be_contained_within_an_async_declaration: "'await' expression must be contained within an async declaration.", - async_arrow_function_parameters_must_be_parenthesized: "'async' arrow function parameters must be parenthesized.", - A_generator_declaration_cannot_have_the_async_modifier: "A generator declaration cannot have the 'async' modifier.", - async_modifier_cannot_appear_here: "'async' modifier cannot appear here.", - comma_expression_cannot_appear_in_a_computed_property_name: "'comma' expression cannot appear in a computed property name.", - String_literal_expected: "String literal expected.", - Duplicate_identifier_0: "Duplicate identifier '{0}'.", - The_name_0_does_not_exist_in_the_current_scope: "The name '{0}' does not exist in the current scope.", - The_name_0_does_not_refer_to_a_value: "The name '{0}' does not refer to a value.", - super_can_only_be_used_inside_a_class_instance_method: "'super' can only be used inside a class instance method.", - The_left_hand_side_of_an_assignment_expression_must_be_a_variable_property_or_indexer: "The left-hand side of an assignment expression must be a variable, property or indexer.", - Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: "Value of type '{0}' is not callable. Did you mean to include 'new'?", - Value_of_type_0_is_not_callable: "Value of type '{0}' is not callable.", - Value_of_type_0_is_not_newable: "Value of type '{0}' is not newable.", - An_index_expression_argument_must_be_string_number_or_any: "An index expression argument must be 'string', 'number', or 'any'.", - Operator_0_cannot_be_applied_to_types_1_and_2: "Operator '{0}' cannot be applied to types '{1}' and '{2}'.", - Type_0_is_not_assignable_to_type_1: "Type '{0}' is not assignable to type '{1}'.", - Type_0_is_not_assignable_to_type_1_NL_2: "Type '{0}' is not assignable to type '{1}':{NL}{2}", - Expected_var_class_interface_or_module: "Expected var, class, interface, or module.", - Getter_0_already_declared: "Getter '{0}' already declared.", - Setter_0_already_declared: "Setter '{0}' already declared.", - Exported_class_0_extends_private_class_1: "Exported class '{0}' extends private class '{1}'.", - Exported_class_0_implements_private_interface_1: "Exported class '{0}' implements private interface '{1}'.", - Exported_interface_0_extends_private_interface_1: "Exported interface '{0}' extends private interface '{1}'.", - Exported_class_0_extends_class_from_inaccessible_module_1: "Exported class '{0}' extends class from inaccessible module {1}.", - Exported_class_0_implements_interface_from_inaccessible_module_1: "Exported class '{0}' implements interface from inaccessible module {1}.", - Exported_interface_0_extends_interface_from_inaccessible_module_1: "Exported interface '{0}' extends interface from inaccessible module {1}.", - Public_static_property_0_of_exported_class_has_or_is_using_private_type_1: "Public static property '{0}' of exported class has or is using private type '{1}'.", - Public_property_0_of_exported_class_has_or_is_using_private_type_1: "Public property '{0}' of exported class has or is using private type '{1}'.", - Property_0_of_exported_interface_has_or_is_using_private_type_1: "Property '{0}' of exported interface has or is using private type '{1}'.", - Exported_variable_0_has_or_is_using_private_type_1: "Exported variable '{0}' has or is using private type '{1}'.", - Public_static_property_0_of_exported_class_is_using_inaccessible_module_1: "Public static property '{0}' of exported class is using inaccessible module {1}.", - Public_property_0_of_exported_class_is_using_inaccessible_module_1: "Public property '{0}' of exported class is using inaccessible module {1}.", - Property_0_of_exported_interface_is_using_inaccessible_module_1: "Property '{0}' of exported interface is using inaccessible module {1}.", - Exported_variable_0_is_using_inaccessible_module_1: "Exported variable '{0}' is using inaccessible module {1}.", - Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_type_1: "Parameter '{0}' of constructor from exported class has or is using private type '{1}'.", - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_type_1: "Parameter '{0}' of public static property setter from exported class has or is using private type '{1}'.", - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_type_1: "Parameter '{0}' of public property setter from exported class has or is using private type '{1}'.", - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_1: "Parameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.", - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_type_1: "Parameter '{0}' of call signature from exported interface has or is using private type '{1}'.", - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_type_1: "Parameter '{0}' of public static method from exported class has or is using private type '{1}'.", - Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_type_1: "Parameter '{0}' of public method from exported class has or is using private type '{1}'.", - Parameter_0_of_method_from_exported_interface_has_or_is_using_private_type_1: "Parameter '{0}' of method from exported interface has or is using private type '{1}'.", - Parameter_0_of_exported_function_has_or_is_using_private_type_1: "Parameter '{0}' of exported function has or is using private type '{1}'.", - Parameter_0_of_constructor_from_exported_class_is_using_inaccessible_module_1: "Parameter '{0}' of constructor from exported class is using inaccessible module {1}.", - Parameter_0_of_public_static_property_setter_from_exported_class_is_using_inaccessible_module_1: "Parameter '{0}' of public static property setter from exported class is using inaccessible module {1}.", - Parameter_0_of_public_property_setter_from_exported_class_is_using_inaccessible_module_1: "Parameter '{0}' of public property setter from exported class is using inaccessible module {1}.", - Parameter_0_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_1: "Parameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.", - Parameter_0_of_call_signature_from_exported_interface_is_using_inaccessible_module_1: "Parameter '{0}' of call signature from exported interface is using inaccessible module {1}", - Parameter_0_of_public_static_method_from_exported_class_is_using_inaccessible_module_1: "Parameter '{0}' of public static method from exported class is using inaccessible module {1}.", - Parameter_0_of_public_method_from_exported_class_is_using_inaccessible_module_1: "Parameter '{0}' of public method from exported class is using inaccessible module {1}.", - Parameter_0_of_method_from_exported_interface_is_using_inaccessible_module_1: "Parameter '{0}' of method from exported interface is using inaccessible module {1}.", - Parameter_0_of_exported_function_is_using_inaccessible_module_1: "Parameter '{0}' of exported function is using inaccessible module {1}.", - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_type_0: "Return type of public static property getter from exported class has or is using private type '{0}'.", - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_type_0: "Return type of public property getter from exported class has or is using private type '{0}'.", - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_0: "Return type of constructor signature from exported interface has or is using private type '{0}'.", - Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_type_0: "Return type of call signature from exported interface has or is using private type '{0}'.", - Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_type_0: "Return type of index signature from exported interface has or is using private type '{0}'.", - Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_type_0: "Return type of public static method from exported class has or is using private type '{0}'.", - Return_type_of_public_method_from_exported_class_has_or_is_using_private_type_0: "Return type of public method from exported class has or is using private type '{0}'.", - Return_type_of_method_from_exported_interface_has_or_is_using_private_type_0: "Return type of method from exported interface has or is using private type '{0}'.", - Return_type_of_exported_function_has_or_is_using_private_type_0: "Return type of exported function has or is using private type '{0}'.", - Return_type_of_public_static_property_getter_from_exported_class_is_using_inaccessible_module_0: "Return type of public static property getter from exported class is using inaccessible module {0}.", - Return_type_of_public_property_getter_from_exported_class_is_using_inaccessible_module_0: "Return type of public property getter from exported class is using inaccessible module {0}.", - Return_type_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_0: "Return type of constructor signature from exported interface is using inaccessible module {0}.", - Return_type_of_call_signature_from_exported_interface_is_using_inaccessible_module_0: "Return type of call signature from exported interface is using inaccessible module {0}.", - Return_type_of_index_signature_from_exported_interface_is_using_inaccessible_module_0: "Return type of index signature from exported interface is using inaccessible module {0}.", - Return_type_of_public_static_method_from_exported_class_is_using_inaccessible_module_0: "Return type of public static method from exported class is using inaccessible module {0}.", - Return_type_of_public_method_from_exported_class_is_using_inaccessible_module_0: "Return type of public method from exported class is using inaccessible module {0}.", - Return_type_of_method_from_exported_interface_is_using_inaccessible_module_0: "Return type of method from exported interface is using inaccessible module {0}.", - Return_type_of_exported_function_is_using_inaccessible_module_0: "Return type of exported function is using inaccessible module {0}.", - new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: "'new T[]' cannot be used to create an array. Use 'new Array()' instead.", - A_parameter_list_must_follow_a_generic_type_argument_list_expected: "A parameter list must follow a generic type argument list. '(' expected.", - Multiple_constructor_implementations_are_not_allowed: "Multiple constructor implementations are not allowed.", - Cannot_find_external_module_0: "Cannot find external module '{0}'.", - Module_cannot_be_aliased_to_a_non_module_type: "Module cannot be aliased to a non-module type.", - A_class_may_only_extend_another_class: "A class may only extend another class.", - A_class_may_only_implement_another_class_or_interface: "A class may only implement another class or interface.", - An_interface_may_only_extend_a_class_or_another_interface: "An interface may only extend a class or another interface.", - Unable_to_resolve_type: "Unable to resolve type.", - Unable_to_resolve_type_of_0: "Unable to resolve type of '{0}'.", - Unable_to_resolve_type_parameter_constraint: "Unable to resolve type parameter constraint.", - Type_parameter_constraint_cannot_be_a_primitive_type: "Type parameter constraint cannot be a primitive type.", - Supplied_parameters_do_not_match_any_signature_of_call_target: "Supplied parameters do not match any signature of call target.", - Supplied_parameters_do_not_match_any_signature_of_call_target_NL_0: "Supplied parameters do not match any signature of call target:{NL}{0}", - Cannot_use_new_with_an_expression_whose_type_lacks_a_signature: "Cannot use 'new' with an expression whose type lacks a signature.", - Only_a_void_function_can_be_called_with_the_new_keyword: "Only a void function can be called with the 'new' keyword.", - Could_not_select_overload_for_new_expression: "Could not select overload for 'new' expression.", - Type_0_does_not_satisfy_the_constraint_1: "Type '{0}' does not satisfy the constraint '{1}'.", - Could_not_select_overload_for_call_expression: "Could not select overload for 'call' expression.", - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: "Cannot invoke an expression whose type lacks a call signature.", - Calls_to_super_are_only_valid_inside_a_class: "Calls to 'super' are only valid inside a class.", - Generic_type_0_requires_1_type_argument_s: "Generic type '{0}' requires {1} type argument(s).", - Type_of_array_literal_cannot_be_determined_Best_common_type_could_not_be_found_for_array_elements: "Type of array literal cannot be determined. Best common type could not be found for array elements.", - Could_not_find_enclosing_symbol_for_dotted_name_0: "Could not find enclosing symbol for dotted name '{0}'.", - Property_0_does_not_exist_on_value_of_type_1: "Property '{0}' does not exist on value of type '{1}'.", - Cannot_find_name_0: "Cannot find name '{0}'.", - get_and_set_accessor_must_have_the_same_type: "'get' and 'set' accessor must have the same type.", - this_cannot_be_referenced_in_current_location: "'this' cannot be referenced in current location.", - Static_members_cannot_reference_class_type_parameters: "Static members cannot reference class type parameters.", - Type_0_recursively_references_itself_as_a_base_type: "Type '{0}' recursively references itself as a base type.", - super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.", - super_can_only_be_referenced_in_a_derived_class: "'super' can only be referenced in a derived class.", - A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties.", - Constructors_for_derived_classes_must_contain_a_super_call: "Constructors for derived classes must contain a 'super' call.", - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: "Super calls are not permitted outside constructors or in nested functions inside constructors.", - _0_1_is_inaccessible: "'{0}.{1}' is inaccessible.", - this_cannot_be_referenced_in_a_module_body: "'this' cannot be referenced in a module body.", - Invalid_expression_types_not_known_to_support_the_addition_operator: "Invalid '+' expression - types not known to support the addition operator.", - The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.", - The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.", - An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type: "An arithmetic operand must be of type 'any', 'number' or an enum type.", - Variable_declarations_of_a_for_statement_cannot_use_a_type_annotation: "Variable declarations of a 'for' statement cannot use a type annotation.", - Variable_declarations_of_a_for_statement_must_be_of_types_string_or_any: "Variable declarations of a 'for' statement must be of types 'string' or 'any'.", - The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.", - The_left_hand_side_of_an_in_expression_must_be_of_types_any_string_or_number: "The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.", - The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter.", - The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.", - The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.", - Setters_cannot_return_a_value: "Setters cannot return a value.", - Tried_to_query_type_of_uninitialized_module_0: "Tried to query type of uninitialized module '{0}'.", - Tried_to_set_variable_type_to_uninitialized_module_type_0: "Tried to set variable type to uninitialized module type '{0}'.", - Type_0_is_not_generic: "Type '{0}' is not generic.", - Getters_must_return_a_value: "Getters must return a value.", - Getter_and_setter_accessors_do_not_agree_in_visibility: "Getter and setter accessors do not agree in visibility.", - Invalid_left_hand_side_of_assignment_expression: "Invalid left-hand side of assignment expression.", - Function_declared_a_non_void_return_type_but_has_no_return_expression: "Function declared a non-void return type, but has no return expression.", - Cannot_resolve_return_type_reference: "Cannot resolve return type reference.", - Constructors_cannot_have_a_return_type_of_void: "Constructors cannot have a return type of 'void'.", - Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.", - All_symbols_within_a_with_block_will_be_resolved_to_any: "All symbols within a with block will be resolved to 'any'.", - Import_declarations_in_an_internal_module_cannot_reference_an_external_module: "Import declarations in an internal module cannot reference an external module.", - Class_0_declares_interface_1_but_does_not_implement_it_NL_2: "Class {0} declares interface {1} but does not implement it:{NL}{2}", - Class_0_declares_class_1_as_an_interface_but_does_not_implement_it_NL_2: "Class {0} declares class {1} as an interface but does not implement it:{NL}{2}", - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: "The operand of an increment or decrement operator must be a variable, property or indexer.", - this_cannot_be_referenced_in_a_static_property_initializer: "'this' cannot be referenced in a static property initializer.", - Class_0_cannot_extend_class_1_NL_2: "Class '{0}' cannot extend class '{1}':{NL}{2}", - Interface_0_cannot_extend_class_1_NL_2: "Interface '{0}' cannot extend class '{1}':{NL}{2}", - Interface_0_cannot_extend_interface_1_NL_2: "Interface '{0}' cannot extend interface '{1}':{NL}{2}", - Overload_signature_is_not_compatible_with_function_definition: "Overload signature is not compatible with function definition.", - Overload_signature_is_not_compatible_with_function_definition_NL_0: "Overload signature is not compatible with function definition:{NL}{0}", - Overload_signatures_must_all_be_public_or_private: "Overload signatures must all be public or private.", - Overload_signatures_must_all_be_exported_or_not_exported: "Overload signatures must all be exported or not exported.", - Overload_signatures_must_all_be_ambient_or_non_ambient: "Overload signatures must all be ambient or non-ambient.", - Overload_signatures_must_all_be_optional_or_required: "Overload signatures must all be optional or required.", - Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: "Specialized overload signature is not assignable to any non-specialized signature.", - this_cannot_be_referenced_in_constructor_arguments: "'this' cannot be referenced in constructor arguments.", - Instance_member_cannot_be_accessed_off_a_class: "Instance member cannot be accessed off a class.", - Untyped_function_calls_may_not_accept_type_arguments: "Untyped function calls may not accept type arguments.", - Non_generic_functions_may_not_accept_type_arguments: "Non-generic functions may not accept type arguments.", - A_generic_type_may_not_reference_itself_with_a_wrapped_form_of_its_own_type_parameters: "A generic type may not reference itself with a wrapped form of its own type parameters.", - A_rest_parameter_must_be_of_an_array_type: "A rest parameter must be of an array type.", - Overload_signature_implementation_cannot_use_specialized_type: "Overload signature implementation cannot use specialized type.", - Export_assignments_may_only_be_used_at_the_top_level_of_external_modules: "Export assignments may only be used at the top-level of external modules.", - Export_assignments_may_only_be_made_with_variables_functions_classes_interfaces_enums_and_internal_modules: "Export assignments may only be made with variables, functions, classes, interfaces, enums and internal modules.", - Only_public_methods_of_the_base_class_are_accessible_via_the_super_keyword: "Only public methods of the base class are accessible via the 'super' keyword.", - Numeric_indexer_type_0_must_be_assignable_to_string_indexer_type_1: "Numeric indexer type '{0}' must be assignable to string indexer type '{1}'.", - Numeric_indexer_type_0_must_be_assignable_to_string_indexer_type_1_NL_2: "Numeric indexer type '{0}' must be assignable to string indexer type '{1}':{NL}{2}", - All_numerically_named_properties_must_be_assignable_to_numeric_indexer_type_0: "All numerically named properties must be assignable to numeric indexer type '{0}'.", - All_numerically_named_properties_must_be_assignable_to_numeric_indexer_type_0_NL_1: "All numerically named properties must be assignable to numeric indexer type '{0}':{NL}{1}", - All_named_properties_must_be_assignable_to_string_indexer_type_0: "All named properties must be assignable to string indexer type '{0}'.", - All_named_properties_must_be_assignable_to_string_indexer_type_0_NL_1: "All named properties must be assignable to string indexer type '{0}':{NL}{1}", - A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: "A parameter initializer is only allowed in a function or constructor implementation.", - Function_expression_declared_a_non_void_return_type_but_has_no_return_expression: "Function expression declared a non-void return type, but has no return expression.", - Import_declaration_referencing_identifier_from_internal_module_can_only_be_made_with_variables_functions_classes_interfaces_enums_and_internal_modules: "Import declaration referencing identifier from internal module can only be made with variables, functions, classes, interfaces, enums and internal modules.", - Module_0_has_no_exported_member_1: "Module '{0}' has no exported member '{1}'.", - Unable_to_resolve_module_reference_0: "Unable to resolve module reference '{0}'.", - Could_not_find_module_0_in_module_1: "Could not find module '{0}' in module '{1}'.", - Exported_import_declaration_0_is_assigned_value_with_type_that_has_or_is_using_private_type_1: "Exported import declaration '{0}' is assigned value with type that has or is using private type '{1}'.", - Exported_import_declaration_0_is_assigned_value_with_type_that_is_using_inaccessible_module_1: "Exported import declaration '{0}' is assigned value with type that is using inaccessible module '{1}'.", - Exported_import_declaration_0_is_assigned_type_that_has_or_is_using_private_type_1: "Exported import declaration '{0}' is assigned type that has or is using private type '{1}'.", - Exported_import_declaration_0_is_assigned_type_that_is_using_inaccessible_module_1: "Exported import declaration '{0}' is assigned type that is using inaccessible module '{1}'.", - Exported_import_declaration_0_is_assigned_container_that_is_or_is_using_inaccessible_module_1: "Exported import declaration '{0}' is assigned container that is or is using inaccessible module '{1}'.", - Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_1: "Type name '{0}' in extends clause does not reference constructor function for '{1}'.", - Internal_module_reference_0_in_import_declaration_does_not_reference_module_instance_for_1: "Internal module reference '{0}' in import declaration does not reference module instance for '{1}'.", - Module_0_cannot_merge_with_previous_declaration_of_1_in_a_different_file_2: "Module '{0}' cannot merge with previous declaration of '{1}' in a different file '{2}'.", - Interface_0_cannot_simultaneously_extend_types_1_and_2_NL_3: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}':{NL}{3}", - Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it.", - Ambient_external_module_declaration_cannot_be_reopened: "Ambient external module declaration cannot be reopened.", - All_declarations_of_merged_declaration_0_must_be_exported_or_not_exported: "All declarations of merged declaration '{0}' must be exported or not exported.", - super_cannot_be_referenced_in_constructor_arguments: "'super' cannot be referenced in constructor arguments.", - Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: "Return type of constructor signature must be assignable to the instance type of the class.", - Ambient_external_module_declaration_must_be_defined_in_global_context: "Ambient external module declaration must be defined in global context.", - Ambient_external_module_declaration_cannot_specify_relative_module_name: "Ambient external module declaration cannot specify relative module name.", - Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: "Import declaration in an ambient external module declaration cannot reference external module through relative external module name.", - No_best_common_type_exists_among_return_expressions: "No best common type exists among return expressions.", - Import_declaration_cannot_refer_to_external_module_reference_when_noResolve_option_is_set: "Import declaration cannot refer to external module reference when --noResolve option is set.", - Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.", - Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference.", - Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.", - Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: "Expression resolves to '_super' that compiler uses to capture base class reference.", - TypeParameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_1: "TypeParameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.", - TypeParameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_type_1: "TypeParameter '{0}' of call signature from exported interface has or is using private type '{1}'.", - TypeParameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_type_1: "TypeParameter '{0}' of public static method from exported class has or is using private type '{1}'.", - TypeParameter_0_of_public_method_from_exported_class_has_or_is_using_private_type_1: "TypeParameter '{0}' of public method from exported class has or is using private type '{1}'.", - TypeParameter_0_of_method_from_exported_interface_has_or_is_using_private_type_1: "TypeParameter '{0}' of method from exported interface has or is using private type '{1}'.", - TypeParameter_0_of_exported_function_has_or_is_using_private_type_1: "TypeParameter '{0}' of exported function has or is using private type '{1}'.", - TypeParameter_0_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_1: "TypeParameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.", - TypeParameter_0_of_call_signature_from_exported_interface_is_using_inaccessible_module_1: "TypeParameter '{0}' of call signature from exported interface is using inaccessible module {1}", - TypeParameter_0_of_public_static_method_from_exported_class_is_using_inaccessible_module_1: "TypeParameter '{0}' of public static method from exported class is using inaccessible module {1}.", - TypeParameter_0_of_public_method_from_exported_class_is_using_inaccessible_module_1: "TypeParameter '{0}' of public method from exported class is using inaccessible module {1}.", - TypeParameter_0_of_method_from_exported_interface_is_using_inaccessible_module_1: "TypeParameter '{0}' of method from exported interface is using inaccessible module {1}.", - TypeParameter_0_of_exported_function_is_using_inaccessible_module_1: "TypeParameter '{0}' of exported function is using inaccessible module {1}.", - TypeParameter_0_of_exported_class_has_or_is_using_private_type_1: "TypeParameter '{0}' of exported class has or is using private type '{1}'.", - TypeParameter_0_of_exported_interface_has_or_is_using_private_type_1: "TypeParameter '{0}' of exported interface has or is using private type '{1}'.", - TypeParameter_0_of_exported_class_is_using_inaccessible_module_1: "TypeParameter '{0}' of exported class is using inaccessible module {1}.", - TypeParameter_0_of_exported_interface_is_using_inaccessible_module_1: "TypeParameter '{0}' of exported interface is using inaccessible module {1}.", - Duplicate_identifier_i_Compiler_uses_i_to_initialize_rest_parameter: "Duplicate identifier '_i'. Compiler uses '_i' to initialize rest parameter.", - Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.", - No_best_common_type_exists_between_0_and_1: "No best common type exists between '{0}' and '{1}'.", - No_best_common_type_exists_between_0_1_and_2: "No best common type exists between '{0}', '{1}', and '{2}'.", - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module.", - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list.", - Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.", - Parameter_0_cannot_be_referenced_in_its_initializer: "Parameter '{0}' cannot be referenced in its initializer.", - Duplicate_string_index_signature: "Duplicate string index signature.", - Duplicate_number_index_signature: "Duplicate number index signature.", - All_declarations_of_an_interface_must_have_identical_type_parameters: "All declarations of an interface must have identical type parameters.", - Expression_resolves_to_variable_declaration_i_that_compiler_uses_to_initialize_rest_parameter: "Expression resolves to variable declaration '_i' that compiler uses to initialize rest parameter.", - Neither_type_0_nor_type_1_is_assignable_to_the_other: "Neither type '{0}' nor type '{1}' is assignable to the other.", - Neither_type_0_nor_type_1_is_assignable_to_the_other_NL_2: "Neither type '{0}' nor type '{1}' is assignable to the other:{NL}{2}", - Duplicate_function_implementation: "Duplicate function implementation.", - Function_implementation_expected: "Function implementation expected.", - Function_overload_name_must_be_0: "Function overload name must be '{0}'.", - Constructor_implementation_expected: "Constructor implementation expected.", - Class_name_cannot_be_0: "Class name cannot be '{0}'.", - Interface_name_cannot_be_0: "Interface name cannot be '{0}'.", - Enum_name_cannot_be_0: "Enum name cannot be '{0}'.", - A_module_cannot_have_multiple_export_assignments: "A module cannot have multiple export assignments.", - Export_assignment_not_allowed_in_module_with_exported_element: "Export assignment not allowed in module with exported element.", - A_parameter_property_is_only_allowed_in_a_constructor_implementation: "A parameter property is only allowed in a constructor implementation.", - Function_overload_must_be_static: "Function overload must be static.", - Function_overload_must_not_be_static: "Function overload must not be static.", - Type_0_is_missing_property_1_from_type_2: "Type '{0}' is missing property '{1}' from type '{2}'.", - Types_of_property_0_of_types_1_and_2_are_incompatible: "Types of property '{0}' of types '{1}' and '{2}' are incompatible.", - Types_of_property_0_of_types_1_and_2_are_incompatible_NL_3: "Types of property '{0}' of types '{1}' and '{2}' are incompatible:{NL}{3}", - Property_0_defined_as_private_in_type_1_is_defined_as_public_in_type_2: "Property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.", - Property_0_defined_as_public_in_type_1_is_defined_as_private_in_type_2: "Property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.", - Types_0_and_1_define_property_2_as_private: "Types '{0}' and '{1}' define property '{2}' as private.", - Call_signatures_of_types_0_and_1_are_incompatible: "Call signatures of types '{0}' and '{1}' are incompatible.", - Call_signatures_of_types_0_and_1_are_incompatible_NL_2: "Call signatures of types '{0}' and '{1}' are incompatible:{NL}{2}", - Type_0_requires_a_call_signature_but_type_1_lacks_one: "Type '{0}' requires a call signature, but type '{1}' lacks one.", - Construct_signatures_of_types_0_and_1_are_incompatible: "Construct signatures of types '{0}' and '{1}' are incompatible.", - Construct_signatures_of_types_0_and_1_are_incompatible_NL_2: "Construct signatures of types '{0}' and '{1}' are incompatible:{NL}{2}", - Type_0_requires_a_construct_signature_but_type_1_lacks_one: "Type '{0}' requires a construct signature, but type '{1}' lacks one.", - Index_signatures_of_types_0_and_1_are_incompatible: "Index signatures of types '{0}' and '{1}' are incompatible.", - Index_signatures_of_types_0_and_1_are_incompatible_NL_2: "Index signatures of types '{0}' and '{1}' are incompatible:{NL}{2}", - Call_signature_expects_0_or_fewer_parameters: "Call signature expects {0} or fewer parameters.", - Could_not_apply_type_0_to_argument_1_which_is_of_type_2: "Could not apply type '{0}' to argument {1} which is of type '{2}'.", - Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.", - Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.", - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.", - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property.", - Types_of_static_property_0_of_class_1_and_class_2_are_incompatible: "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible.", - Types_of_static_property_0_of_class_1_and_class_2_are_incompatible_NL_3: "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible:{NL}{3}", - Type_reference_cannot_refer_to_container_0: "Type reference cannot refer to container '{0}'.", - Type_reference_must_refer_to_type: "Type reference must refer to type.", - In_enums_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_the_first_enum_element: "In enums with multiple declarations only one declaration can omit an initializer for the first enum element.", - _0_overload_s: " (+ {0} overload(s))", - Variable_declaration_cannot_have_the_same_name_as_an_import_declaration: "Variable declaration cannot have the same name as an import declaration.", - Signature_expected_0_type_arguments_got_1_instead: "Signature expected {0} type arguments, got {1} instead.", - Property_0_defined_as_optional_in_type_1_but_is_required_in_type_2: "Property '{0}' defined as optional in type '{1}', but is required in type '{2}'.", - Types_0_and_1_originating_in_infinitely_expanding_type_reference_do_not_refer_to_same_named_type: "Types '{0}' and '{1}' originating in infinitely expanding type reference do not refer to same named type.", - Types_0_and_1_originating_in_infinitely_expanding_type_reference_have_incompatible_type_arguments: "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments.", - Types_0_and_1_originating_in_infinitely_expanding_type_reference_have_incompatible_type_arguments_NL_2: "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments:{NL}{2}", - Named_properties_0_of_types_1_and_2_are_not_identical: "Named properties '{0}' of types '{1}' and '{2}' are not identical.", - Types_of_string_indexer_of_types_0_and_1_are_not_identical: "Types of string indexer of types '{0}' and '{1}' are not identical.", - Types_of_number_indexer_of_types_0_and_1_are_not_identical: "Types of number indexer of types '{0}' and '{1}' are not identical.", - Type_of_number_indexer_in_type_0_is_not_assignable_to_string_indexer_type_in_type_1_NL_2: "Type of number indexer in type '{0}' is not assignable to string indexer type in type '{1}'.{NL}{2}", - Type_of_property_0_in_type_1_is_not_assignable_to_string_indexer_type_in_type_2_NL_3: "Type of property '{0}' in type '{1}' is not assignable to string indexer type in type '{2}'.{NL}{3}", - Type_of_property_0_in_type_1_is_not_assignable_to_number_indexer_type_in_type_2_NL_3: "Type of property '{0}' in type '{1}' is not assignable to number indexer type in type '{2}'.{NL}{3}", - Static_property_0_defined_as_private_in_type_1_is_defined_as_public_in_type_2: "Static property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.", - Static_property_0_defined_as_public_in_type_1_is_defined_as_private_in_type_2: "Static property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.", - Types_0_and_1_define_static_property_2_as_private: "Types '{0}' and '{1}' define static property '{2}' as private.", - Current_host_does_not_support_0_option: "Current host does not support '{0}' option.", - ECMAScript_target_version_0_not_supported_Specify_a_valid_target_version_1_default_or_2: "ECMAScript target version '{0}' not supported. Specify a valid target version: '{1}' (default), or '{2}'", - Argument_for_0_option_must_be_1_or_2: "Argument for '{0}' option must be '{1}' or '{2}'", - Could_not_find_file_0: "Could not find file: '{0}'.", - A_file_cannot_have_a_reference_to_itself: "A file cannot have a reference to itself.", - Cannot_resolve_referenced_file_0: "Cannot resolve referenced file: '{0}'.", - Cannot_find_the_common_subdirectory_path_for_the_input_files: "Cannot find the common subdirectory path for the input files.", - Emit_Error_0: "Emit Error: {0}.", - Cannot_read_file_0_1: "Cannot read file '{0}': {1}", - Unsupported_file_encoding: "Unsupported file encoding.", - Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: "Locale must be of the form or -. For example '{0}' or '{1}'.", - Unsupported_locale_0: "Unsupported locale: '{0}'.", - Execution_Failed_NL: "Execution Failed.{NL}", - Invalid_call_to_up: "Invalid call to 'up'", - Invalid_call_to_down: "Invalid call to 'down'", - Base64_value_0_finished_with_a_continuation_bit: "Base64 value '{0}' finished with a continuation bit.", - Unknown_compiler_option_0: "Unknown compiler option '{0}'", - Expected_0_arguments_to_message_got_1_instead: "Expected {0} arguments to message, got {1} instead.", - Expected_the_message_0_to_have_1_arguments_but_it_had_2: "Expected the message '{0}' to have {1} arguments, but it had {2}", - Could_not_delete_file_0: "Could not delete file '{0}'", - Could_not_create_directory_0: "Could not create directory '{0}'", - Error_while_executing_file_0: "Error while executing file '{0}': ", - Cannot_compile_external_modules_unless_the_module_flag_is_provided: "Cannot compile external modules unless the '--module' flag is provided.", - Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: "Option mapRoot cannot be specified without specifying sourcemap option.", - Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: "Option sourceRoot cannot be specified without specifying sourcemap option.", - Options_mapRoot_and_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: "Options mapRoot and sourceRoot cannot be specified without specifying sourcemap option.", - Option_0_specified_without_1: "Option '{0}' specified without '{1}'", - codepage_option_not_supported_on_current_platform: "'codepage' option not supported on current platform.", - Concatenate_and_emit_output_to_single_file: "Concatenate and emit output to single file.", - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: "Specifies the location where debugger should locate map files instead of generated locations.", - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: "Specifies the location where debugger should locate TypeScript files instead of source locations.", - Watch_input_files: "Watch input files.", - Redirect_output_structure_to_the_directory: "Redirect output structure to the directory.", - Do_not_emit_comments_to_output: "Do not emit comments to output.", - Print_this_message: "Print this message.", - Allow_use_of_deprecated_0_keyword_when_referencing_an_external_module: "Allow use of deprecated '{0}' keyword when referencing an external module.", - Syntax_0: "Syntax: {0}", - options: "options", - file1: "file", - Examples: "Examples:", - Options: "Options:", - Insert_command_line_options_and_files_from_a_file: "Insert command line options and files from a file.", - Version_0: "Version {0}", - Use_the_0_flag_to_see_options: "Use the '{0}' flag to see options.", - NL_Recompiling_0: "{NL}Recompiling ({0}):", - STRING: "STRING", - KIND: "KIND", - file2: "FILE", - VERSION: "VERSION", - LOCATION: "LOCATION", - DIRECTORY: "DIRECTORY", - NUMBER: "NUMBER", - Additional_locations: "Additional locations:", - This_version_of_the_Javascript_runtime_does_not_support_the_0_function: "This version of the Javascript runtime does not support the '{0}' function.", - Unknown_rule: "Unknown rule.", - Invalid_line_number_0: "Invalid line number ({0})", - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: "Raise error on expressions and declarations with an implied 'any' type.", - Variable_0_implicitly_has_an_any_type: "Variable '{0}' implicitly has an 'any' type.", - Parameter_0_of_1_implicitly_has_an_any_type: "Parameter '{0}' of '{1}' implicitly has an 'any' type.", - Parameter_0_of_function_type_implicitly_has_an_any_type: "Parameter '{0}' of function type implicitly has an 'any' type.", - Member_0_of_object_type_implicitly_has_an_any_type: "Member '{0}' of object type implicitly has an 'any' type.", - new_expression_which_lacks_a_constructor_signature_implicitly_has_an_any_type: "'new' expression, which lacks a constructor signature, implicitly has an 'any' type.", - _0_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: "'{0}', which lacks return-type annotation, implicitly has an 'any' return type.", - Function_expression_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: "Function expression, which lacks return-type annotation, implicitly has an 'any' return type.", - Parameter_0_of_lambda_function_implicitly_has_an_any_type: "Parameter '{0}' of lambda function implicitly has an 'any' type.", - Constructor_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: "Constructor signature, which lacks return-type annotation, implicitly has an 'any' return type.", - Lambda_Function_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: "Lambda Function, which lacks return-type annotation, implicitly has an 'any' return type.", - Array_Literal_implicitly_has_an_any_type_from_widening: "Array Literal implicitly has an 'any' type from widening.", - _0_which_lacks_get_accessor_and_parameter_type_annotation_on_set_accessor_implicitly_has_an_any_type: "'{0}', which lacks 'get' accessor and parameter type annotation on 'set' accessor, implicitly has an 'any' type.", - Index_signature_of_object_type_implicitly_has_an_any_type: "Index signature of object type implicitly has an 'any' type.", - Object_literal_s_property_0_implicitly_has_an_any_type_from_widening: "Object literal's property '{0}' implicitly has an 'any' type from widening.", - }; -} \ No newline at end of file diff --git a/src/services/resources/diagnosticInformationMap.generated.ts b/src/services/resources/diagnosticInformationMap.generated.ts deleted file mode 100644 index 73e819572d8..00000000000 --- a/src/services/resources/diagnosticInformationMap.generated.ts +++ /dev/null @@ -1,457 +0,0 @@ -// -/// -module TypeScript { - export var diagnosticInformationMap: ts.Map = { - "error TS{0}: {1}": { "code": 0, "category": DiagnosticCategory.NoPrefix }, - "warning TS{0}: {1}": { "code": 1, "category": DiagnosticCategory.NoPrefix }, - "Unrecognized escape sequence.": { "code": 1000, "category": DiagnosticCategory.Error }, - "Unexpected character {0}.": { "code": 1001, "category": DiagnosticCategory.Error }, - "Unterminated string literal.": { "code": 1002, "category": DiagnosticCategory.Error }, - "Identifier expected.": { "code": 1003, "category": DiagnosticCategory.Error }, - "'{0}' keyword expected.": { "code": 1004, "category": DiagnosticCategory.Error }, - "'{0}' expected.": { "code": 1005, "category": DiagnosticCategory.Error }, - "Identifier expected; '{0}' is a keyword.": { "code": 1006, "category": DiagnosticCategory.Error }, - "Automatic semicolon insertion not allowed.": { "code": 1007, "category": DiagnosticCategory.Error }, - "Unexpected token; '{0}' expected.": { "code": 1008, "category": DiagnosticCategory.Error }, - "Trailing comma not allowed.": { "code": 1009, "category": DiagnosticCategory.Error }, - "'*/' expected.": { "code": 1010, "category": DiagnosticCategory.Error }, - "'public' or 'private' modifier must precede 'static'.": { "code": 1011, "category": DiagnosticCategory.Error }, - "Unexpected token.": { "code": 1012, "category": DiagnosticCategory.Error }, - "Catch clause parameter cannot have a type annotation.": { "code": 1013, "category": DiagnosticCategory.Error }, - "A rest parameter must be last in a parameter list.": { "code": 1014, "category": DiagnosticCategory.Error }, - "Parameter cannot have question mark and initializer.": { "code": 1015, "category": DiagnosticCategory.Error }, - "A required parameter cannot follow an optional parameter.": { "code": 1016, "category": DiagnosticCategory.Error }, - "Index signatures cannot have rest parameters.": { "code": 1017, "category": DiagnosticCategory.Error }, - "Index signature parameter cannot have modifiers.": { "code": 1018, "category": DiagnosticCategory.Error }, - "Index signature parameter cannot have a question mark.": { "code": 1019, "category": DiagnosticCategory.Error }, - "Index signature parameter cannot have an initializer.": { "code": 1020, "category": DiagnosticCategory.Error }, - "Index signature must have a type annotation.": { "code": 1021, "category": DiagnosticCategory.Error }, - "Index signature parameter must have a type annotation.": { "code": 1022, "category": DiagnosticCategory.Error }, - "Index signature parameter type must be 'string' or 'number'.": { "code": 1023, "category": DiagnosticCategory.Error }, - "'extends' clause already seen.": { "code": 1024, "category": DiagnosticCategory.Error }, - "'extends' clause must precede 'implements' clause.": { "code": 1025, "category": DiagnosticCategory.Error }, - "Classes can only extend a single class.": { "code": 1026, "category": DiagnosticCategory.Error }, - "'implements' clause already seen.": { "code": 1027, "category": DiagnosticCategory.Error }, - "Accessibility modifier already seen.": { "code": 1028, "category": DiagnosticCategory.Error }, - "'{0}' modifier must precede '{1}' modifier.": { "code": 1029, "category": DiagnosticCategory.Error }, - "'{0}' modifier already seen.": { "code": 1030, "category": DiagnosticCategory.Error }, - "'{0}' modifier cannot appear on a class element.": { "code": 1031, "category": DiagnosticCategory.Error }, - "Interface declaration cannot have 'implements' clause.": { "code": 1032, "category": DiagnosticCategory.Error }, - "'super' invocation cannot have type arguments.": { "code": 1034, "category": DiagnosticCategory.Error }, - "Only ambient modules can use quoted names.": { "code": 1035, "category": DiagnosticCategory.Error }, - "Statements are not allowed in ambient contexts.": { "code": 1036, "category": DiagnosticCategory.Error }, - "A function implementation cannot be declared in an ambient context.": { "code": 1037, "category": DiagnosticCategory.Error }, - "A 'declare' modifier cannot be used in an already ambient context.": { "code": 1038, "category": DiagnosticCategory.Error }, - "Initializers are not allowed in ambient contexts.": { "code": 1039, "category": DiagnosticCategory.Error }, - "'{0}' modifier cannot appear on a module element.": { "code": 1044, "category": DiagnosticCategory.Error }, - "A 'declare' modifier cannot be used with an interface declaration.": { "code": 1045, "category": DiagnosticCategory.Error }, - "A 'declare' modifier is required for a top level declaration in a .d.ts file.": { "code": 1046, "category": DiagnosticCategory.Error }, - "A rest parameter cannot be optional.": { "code": 1047, "category": DiagnosticCategory.Error }, - "A rest parameter cannot have an initializer.": { "code": 1048, "category": DiagnosticCategory.Error }, - "'set' accessor must have exactly one parameter.": { "code": 1049, "category": DiagnosticCategory.Error }, - "'set' accessor parameter cannot be optional.": { "code": 1051, "category": DiagnosticCategory.Error }, - "'set' accessor parameter cannot have an initializer.": { "code": 1052, "category": DiagnosticCategory.Error }, - "'set' accessor cannot have rest parameter.": { "code": 1053, "category": DiagnosticCategory.Error }, - "'get' accessor cannot have parameters.": { "code": 1054, "category": DiagnosticCategory.Error }, - "Modifiers cannot appear here.": { "code": 1055, "category": DiagnosticCategory.Error }, - "Accessors are only available when targeting ECMAScript 5 and higher.": { "code": 1056, "category": DiagnosticCategory.Error }, - "Enum member must have initializer.": { "code": 1061, "category": DiagnosticCategory.Error }, - "Export assignment cannot be used in internal modules.": { "code": 1063, "category": DiagnosticCategory.Error }, - "Ambient enum elements can only have integer literal initializers.": { "code": 1066, "category": DiagnosticCategory.Error }, - "module, class, interface, enum, import or statement": { "code": 1067, "category": DiagnosticCategory.NoPrefix }, - "constructor, function, accessor or variable": { "code": 1068, "category": DiagnosticCategory.NoPrefix }, - "statement": { "code": 1069, "category": DiagnosticCategory.NoPrefix }, - "case or default clause": { "code": 1070, "category": DiagnosticCategory.NoPrefix }, - "identifier": { "code": 1071, "category": DiagnosticCategory.NoPrefix }, - "call, construct, index, property or function signature": { "code": 1072, "category": DiagnosticCategory.NoPrefix }, - "expression": { "code": 1073, "category": DiagnosticCategory.NoPrefix }, - "type name": { "code": 1074, "category": DiagnosticCategory.NoPrefix }, - "property or accessor": { "code": 1075, "category": DiagnosticCategory.NoPrefix }, - "parameter": { "code": 1076, "category": DiagnosticCategory.NoPrefix }, - "type": { "code": 1077, "category": DiagnosticCategory.NoPrefix }, - "type parameter": { "code": 1078, "category": DiagnosticCategory.NoPrefix }, - "A 'declare' modifier cannot be used with an import declaration.": { "code": 1079, "category": DiagnosticCategory.Error }, - "Invalid 'reference' directive syntax.": { "code": 1084, "category": DiagnosticCategory.Error }, - "Octal literals are not available when targeting ECMAScript 5 and higher.": { "code": 1085, "category": DiagnosticCategory.Error }, - "Accessors are not allowed in ambient contexts.": { "code": 1086, "category": DiagnosticCategory.Error }, - "'{0}' modifier cannot appear on a constructor declaration.": { "code": 1089, "category": DiagnosticCategory.Error }, - "'{0}' modifier cannot appear on a parameter.": { "code": 1090, "category": DiagnosticCategory.Error }, - "Only a single variable declaration is allowed in a 'for...in' statement.": { "code": 1091, "category": DiagnosticCategory.Error }, - "Type parameters cannot appear on a constructor declaration.": { "code": 1092, "category": DiagnosticCategory.Error }, - "Type annotation cannot appear on a constructor declaration.": { "code": 1093, "category": DiagnosticCategory.Error }, - "Type parameters cannot appear on an accessor.": { "code": 1094, "category": DiagnosticCategory.Error }, - "Type annotation cannot appear on a 'set' accessor.": { "code": 1095, "category": DiagnosticCategory.Error }, - "Index signature must have exactly one parameter.": { "code": 1096, "category": DiagnosticCategory.Error }, - "'{0}' list cannot be empty.": { "code": 1097, "category": DiagnosticCategory.Error }, - "variable declaration": { "code": 1098, "category": DiagnosticCategory.NoPrefix }, - "type argument": { "code": 1099, "category": DiagnosticCategory.NoPrefix }, - "Invalid use of '{0}' in strict mode.": { "code": 1100, "category": DiagnosticCategory.Error }, - "'with' statements are not allowed in strict mode.": { "code": 1101, "category": DiagnosticCategory.Error }, - "'delete' cannot be called on an identifier in strict mode.": { "code": 1102, "category": DiagnosticCategory.Error }, - "Invalid left-hand side in 'for...in' statement.": { "code": 1103, "category": DiagnosticCategory.Error }, - "'continue' statement can only be used within an enclosing iteration statement.": { "code": 1104, "category": DiagnosticCategory.Error }, - "'break' statement can only be used within an enclosing iteration or switch statement.": { "code": 1105, "category": DiagnosticCategory.Error }, - "Jump target not found.": { "code": 1106, "category": DiagnosticCategory.Error }, - "Jump target cannot cross function boundary.": { "code": 1107, "category": DiagnosticCategory.Error }, - "'return' statement must be contained within a function body.": { "code": 1108, "category": DiagnosticCategory.Error }, - "Expression expected.": { "code": 1109, "category": DiagnosticCategory.Error }, - "Type expected.": { "code": 1110, "category": DiagnosticCategory.Error }, - "Template literal cannot be used as an element name.": { "code": 1111, "category": DiagnosticCategory.Error }, - "Computed property names cannot be used here.": { "code": 1112, "category": DiagnosticCategory.Error }, - "'yield' expression must be contained within a generator declaration.": { "code": 1113, "category": DiagnosticCategory.Error }, - "Unterminated regular expression literal.": { "code": 1114, "category": DiagnosticCategory.Error }, - "Unterminated template literal.": { "code": 1115, "category": DiagnosticCategory.Error }, - "'await' expression must be contained within an 'async' declaration.": { "code": 1116, "category": DiagnosticCategory.Error }, - "'async' arrow function parameters must be parenthesized.": { "code": 1117, "category": DiagnosticCategory.Error }, - "A generator declaration cannot have the 'async' modifier.": { "code": 1118, "category": DiagnosticCategory.Error }, - "'async' modifier cannot appear here.": { "code": 1119, "category": DiagnosticCategory.Error }, - "'comma' expression cannot appear in a computed property name.": { "code": 1120, "category": DiagnosticCategory.Error }, - "String literal expected.": { "code": 1121, "category": DiagnosticCategory.Error }, - "Duplicate identifier '{0}'.": { "code": 2000, "category": DiagnosticCategory.Error }, - "The name '{0}' does not exist in the current scope.": { "code": 2001, "category": DiagnosticCategory.Error }, - "The name '{0}' does not refer to a value.": { "code": 2002, "category": DiagnosticCategory.Error }, - "'super' can only be used inside a class instance method.": { "code": 2003, "category": DiagnosticCategory.Error }, - "The left-hand side of an assignment expression must be a variable, property or indexer.": { "code": 2004, "category": DiagnosticCategory.Error }, - "Value of type '{0}' is not callable. Did you mean to include 'new'?": { "code": 2161, "category": DiagnosticCategory.Error }, - "Value of type '{0}' is not callable.": { "code": 2006, "category": DiagnosticCategory.Error }, - "Value of type '{0}' is not newable.": { "code": 2007, "category": DiagnosticCategory.Error }, - "An index expression argument must be 'string', 'number', or 'any'.": { "code": 2008, "category": DiagnosticCategory.Error }, - "Operator '{0}' cannot be applied to types '{1}' and '{2}'.": { "code": 2009, "category": DiagnosticCategory.Error }, - "Type '{0}' is not assignable to type '{1}'.": { "code": 2011, "category": DiagnosticCategory.Error }, - "Type '{0}' is not assignable to type '{1}':{NL}{2}": { "code": 2012, "category": DiagnosticCategory.Error }, - "Expected var, class, interface, or module.": { "code": 2013, "category": DiagnosticCategory.Error }, - "Getter '{0}' already declared.": { "code": 2015, "category": DiagnosticCategory.Error }, - "Setter '{0}' already declared.": { "code": 2016, "category": DiagnosticCategory.Error }, - "Exported class '{0}' extends private class '{1}'.": { "code": 2018, "category": DiagnosticCategory.Error }, - "Exported class '{0}' implements private interface '{1}'.": { "code": 2019, "category": DiagnosticCategory.Error }, - "Exported interface '{0}' extends private interface '{1}'.": { "code": 2020, "category": DiagnosticCategory.Error }, - "Exported class '{0}' extends class from inaccessible module {1}.": { "code": 2021, "category": DiagnosticCategory.Error }, - "Exported class '{0}' implements interface from inaccessible module {1}.": { "code": 2022, "category": DiagnosticCategory.Error }, - "Exported interface '{0}' extends interface from inaccessible module {1}.": { "code": 2023, "category": DiagnosticCategory.Error }, - "Public static property '{0}' of exported class has or is using private type '{1}'.": { "code": 2024, "category": DiagnosticCategory.Error }, - "Public property '{0}' of exported class has or is using private type '{1}'.": { "code": 2025, "category": DiagnosticCategory.Error }, - "Property '{0}' of exported interface has or is using private type '{1}'.": { "code": 2026, "category": DiagnosticCategory.Error }, - "Exported variable '{0}' has or is using private type '{1}'.": { "code": 2027, "category": DiagnosticCategory.Error }, - "Public static property '{0}' of exported class is using inaccessible module {1}.": { "code": 2028, "category": DiagnosticCategory.Error }, - "Public property '{0}' of exported class is using inaccessible module {1}.": { "code": 2029, "category": DiagnosticCategory.Error }, - "Property '{0}' of exported interface is using inaccessible module {1}.": { "code": 2030, "category": DiagnosticCategory.Error }, - "Exported variable '{0}' is using inaccessible module {1}.": { "code": 2031, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of constructor from exported class has or is using private type '{1}'.": { "code": 2032, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public static property setter from exported class has or is using private type '{1}'.": { "code": 2033, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public property setter from exported class has or is using private type '{1}'.": { "code": 2034, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.": { "code": 2035, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of call signature from exported interface has or is using private type '{1}'.": { "code": 2036, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public static method from exported class has or is using private type '{1}'.": { "code": 2037, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public method from exported class has or is using private type '{1}'.": { "code": 2038, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of method from exported interface has or is using private type '{1}'.": { "code": 2039, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of exported function has or is using private type '{1}'.": { "code": 2040, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of constructor from exported class is using inaccessible module {1}.": { "code": 2041, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public static property setter from exported class is using inaccessible module {1}.": { "code": 2042, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public property setter from exported class is using inaccessible module {1}.": { "code": 2043, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.": { "code": 2044, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of call signature from exported interface is using inaccessible module {1}": { "code": 2045, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public static method from exported class is using inaccessible module {1}.": { "code": 2046, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of public method from exported class is using inaccessible module {1}.": { "code": 2047, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of method from exported interface is using inaccessible module {1}.": { "code": 2048, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of exported function is using inaccessible module {1}.": { "code": 2049, "category": DiagnosticCategory.Error }, - "Return type of public static property getter from exported class has or is using private type '{0}'.": { "code": 2050, "category": DiagnosticCategory.Error }, - "Return type of public property getter from exported class has or is using private type '{0}'.": { "code": 2051, "category": DiagnosticCategory.Error }, - "Return type of constructor signature from exported interface has or is using private type '{0}'.": { "code": 2052, "category": DiagnosticCategory.Error }, - "Return type of call signature from exported interface has or is using private type '{0}'.": { "code": 2053, "category": DiagnosticCategory.Error }, - "Return type of index signature from exported interface has or is using private type '{0}'.": { "code": 2054, "category": DiagnosticCategory.Error }, - "Return type of public static method from exported class has or is using private type '{0}'.": { "code": 2055, "category": DiagnosticCategory.Error }, - "Return type of public method from exported class has or is using private type '{0}'.": { "code": 2056, "category": DiagnosticCategory.Error }, - "Return type of method from exported interface has or is using private type '{0}'.": { "code": 2057, "category": DiagnosticCategory.Error }, - "Return type of exported function has or is using private type '{0}'.": { "code": 2058, "category": DiagnosticCategory.Error }, - "Return type of public static property getter from exported class is using inaccessible module {0}.": { "code": 2059, "category": DiagnosticCategory.Error }, - "Return type of public property getter from exported class is using inaccessible module {0}.": { "code": 2060, "category": DiagnosticCategory.Error }, - "Return type of constructor signature from exported interface is using inaccessible module {0}.": { "code": 2061, "category": DiagnosticCategory.Error }, - "Return type of call signature from exported interface is using inaccessible module {0}.": { "code": 2062, "category": DiagnosticCategory.Error }, - "Return type of index signature from exported interface is using inaccessible module {0}.": { "code": 2063, "category": DiagnosticCategory.Error }, - "Return type of public static method from exported class is using inaccessible module {0}.": { "code": 2064, "category": DiagnosticCategory.Error }, - "Return type of public method from exported class is using inaccessible module {0}.": { "code": 2065, "category": DiagnosticCategory.Error }, - "Return type of method from exported interface is using inaccessible module {0}.": { "code": 2066, "category": DiagnosticCategory.Error }, - "Return type of exported function is using inaccessible module {0}.": { "code": 2067, "category": DiagnosticCategory.Error }, - "'new T[]' cannot be used to create an array. Use 'new Array()' instead.": { "code": 2068, "category": DiagnosticCategory.Error }, - "A parameter list must follow a generic type argument list. '(' expected.": { "code": 2069, "category": DiagnosticCategory.Error }, - "Multiple constructor implementations are not allowed.": { "code": 2070, "category": DiagnosticCategory.Error }, - "Cannot find external module '{0}'.": { "code": 2071, "category": DiagnosticCategory.Error }, - "Module cannot be aliased to a non-module type.": { "code": 2072, "category": DiagnosticCategory.Error }, - "A class may only extend another class.": { "code": 2073, "category": DiagnosticCategory.Error }, - "A class may only implement another class or interface.": { "code": 2074, "category": DiagnosticCategory.Error }, - "An interface may only extend a class or another interface.": { "code": 2075, "category": DiagnosticCategory.Error }, - "Unable to resolve type.": { "code": 2077, "category": DiagnosticCategory.Error }, - "Unable to resolve type of '{0}'.": { "code": 2078, "category": DiagnosticCategory.Error }, - "Unable to resolve type parameter constraint.": { "code": 2079, "category": DiagnosticCategory.Error }, - "Type parameter constraint cannot be a primitive type.": { "code": 2080, "category": DiagnosticCategory.Error }, - "Supplied parameters do not match any signature of call target.": { "code": 2081, "category": DiagnosticCategory.Error }, - "Supplied parameters do not match any signature of call target:{NL}{0}": { "code": 2082, "category": DiagnosticCategory.Error }, - "Cannot use 'new' with an expression whose type lacks a signature.": { "code": 2083, "category": DiagnosticCategory.Error }, - "Only a void function can be called with the 'new' keyword.": { "code": 2084, "category": DiagnosticCategory.Error }, - "Could not select overload for 'new' expression.": { "code": 2085, "category": DiagnosticCategory.Error }, - "Type '{0}' does not satisfy the constraint '{1}'.": { "code": 2086, "category": DiagnosticCategory.Error }, - "Could not select overload for 'call' expression.": { "code": 2087, "category": DiagnosticCategory.Error }, - "Cannot invoke an expression whose type lacks a call signature.": { "code": 2088, "category": DiagnosticCategory.Error }, - "Calls to 'super' are only valid inside a class.": { "code": 2089, "category": DiagnosticCategory.Error }, - "Generic type '{0}' requires {1} type argument(s).": { "code": 2090, "category": DiagnosticCategory.Error }, - "Type of array literal cannot be determined. Best common type could not be found for array elements.": { "code": 2092, "category": DiagnosticCategory.Error }, - "Could not find enclosing symbol for dotted name '{0}'.": { "code": 2093, "category": DiagnosticCategory.Error }, - "Property '{0}' does not exist on value of type '{1}'.": { "code": 2094, "category": DiagnosticCategory.Error }, - "Cannot find name '{0}'.": { "code": 2095, "category": DiagnosticCategory.Error }, - "'get' and 'set' accessor must have the same type.": { "code": 2096, "category": DiagnosticCategory.Error }, - "'this' cannot be referenced in current location.": { "code": 2097, "category": DiagnosticCategory.Error }, - "Static members cannot reference class type parameters.": { "code": 2099, "category": DiagnosticCategory.Error }, - "Type '{0}' recursively references itself as a base type.": { "code": 2100, "category": DiagnosticCategory.Error }, - "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.": { "code": 2102, "category": DiagnosticCategory.Error }, - "'super' can only be referenced in a derived class.": { "code": 2103, "category": DiagnosticCategory.Error }, - "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties.": { "code": 2104, "category": DiagnosticCategory.Error }, - "Constructors for derived classes must contain a 'super' call.": { "code": 2105, "category": DiagnosticCategory.Error }, - "Super calls are not permitted outside constructors or in nested functions inside constructors.": { "code": 2106, "category": DiagnosticCategory.Error }, - "'{0}.{1}' is inaccessible.": { "code": 2107, "category": DiagnosticCategory.Error }, - "'this' cannot be referenced in a module body.": { "code": 2108, "category": DiagnosticCategory.Error }, - "Invalid '+' expression - types not known to support the addition operator.": { "code": 2111, "category": DiagnosticCategory.Error }, - "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.": { "code": 2112, "category": DiagnosticCategory.Error }, - "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.": { "code": 2113, "category": DiagnosticCategory.Error }, - "An arithmetic operand must be of type 'any', 'number' or an enum type.": { "code": 2114, "category": DiagnosticCategory.Error }, - "Variable declarations of a 'for' statement cannot use a type annotation.": { "code": 2115, "category": DiagnosticCategory.Error }, - "Variable declarations of a 'for' statement must be of types 'string' or 'any'.": { "code": 2116, "category": DiagnosticCategory.Error }, - "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.": { "code": 2117, "category": DiagnosticCategory.Error }, - "The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.": { "code": 2118, "category": DiagnosticCategory.Error }, - "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter.": { "code": 2119, "category": DiagnosticCategory.Error }, - "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.": { "code": 2120, "category": DiagnosticCategory.Error }, - "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.": { "code": 2121, "category": DiagnosticCategory.Error }, - "Setters cannot return a value.": { "code": 2122, "category": DiagnosticCategory.Error }, - "Tried to query type of uninitialized module '{0}'.": { "code": 2123, "category": DiagnosticCategory.Error }, - "Tried to set variable type to uninitialized module type '{0}'.": { "code": 2124, "category": DiagnosticCategory.Error }, - "Type '{0}' is not generic.": { "code": 2125, "category": DiagnosticCategory.Error }, - "Getters must return a value.": { "code": 2126, "category": DiagnosticCategory.Error }, - "Getter and setter accessors do not agree in visibility.": { "code": 2127, "category": DiagnosticCategory.Error }, - "Invalid left-hand side of assignment expression.": { "code": 2130, "category": DiagnosticCategory.Error }, - "Function declared a non-void return type, but has no return expression.": { "code": 2131, "category": DiagnosticCategory.Error }, - "Cannot resolve return type reference.": { "code": 2132, "category": DiagnosticCategory.Error }, - "Constructors cannot have a return type of 'void'.": { "code": 2133, "category": DiagnosticCategory.Error }, - "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.": { "code": 2134, "category": DiagnosticCategory.Error }, - "All symbols within a with block will be resolved to 'any'.": { "code": 2135, "category": DiagnosticCategory.Error }, - "Import declarations in an internal module cannot reference an external module.": { "code": 2136, "category": DiagnosticCategory.Error }, - "Class {0} declares interface {1} but does not implement it:{NL}{2}": { "code": 2137, "category": DiagnosticCategory.Error }, - "Class {0} declares class {1} as an interface but does not implement it:{NL}{2}": { "code": 2138, "category": DiagnosticCategory.Error }, - "The operand of an increment or decrement operator must be a variable, property or indexer.": { "code": 2139, "category": DiagnosticCategory.Error }, - "'this' cannot be referenced in a static property initializer.": { "code": 2140, "category": DiagnosticCategory.Error }, - "Class '{0}' cannot extend class '{1}':{NL}{2}": { "code": 2141, "category": DiagnosticCategory.Error }, - "Interface '{0}' cannot extend class '{1}':{NL}{2}": { "code": 2142, "category": DiagnosticCategory.Error }, - "Interface '{0}' cannot extend interface '{1}':{NL}{2}": { "code": 2143, "category": DiagnosticCategory.Error }, - "Overload signature is not compatible with function definition.": { "code": 2148, "category": DiagnosticCategory.Error }, - "Overload signature is not compatible with function definition:{NL}{0}": { "code": 2149, "category": DiagnosticCategory.Error }, - "Overload signatures must all be public or private.": { "code": 2150, "category": DiagnosticCategory.Error }, - "Overload signatures must all be exported or not exported.": { "code": 2151, "category": DiagnosticCategory.Error }, - "Overload signatures must all be ambient or non-ambient.": { "code": 2152, "category": DiagnosticCategory.Error }, - "Overload signatures must all be optional or required.": { "code": 2153, "category": DiagnosticCategory.Error }, - "Specialized overload signature is not assignable to any non-specialized signature.": { "code": 2154, "category": DiagnosticCategory.Error }, - "'this' cannot be referenced in constructor arguments.": { "code": 2155, "category": DiagnosticCategory.Error }, - "Instance member cannot be accessed off a class.": { "code": 2157, "category": DiagnosticCategory.Error }, - "Untyped function calls may not accept type arguments.": { "code": 2158, "category": DiagnosticCategory.Error }, - "Non-generic functions may not accept type arguments.": { "code": 2159, "category": DiagnosticCategory.Error }, - "A generic type may not reference itself with a wrapped form of its own type parameters.": { "code": 2160, "category": DiagnosticCategory.Error }, - "A rest parameter must be of an array type.": { "code": 2162, "category": DiagnosticCategory.Error }, - "Overload signature implementation cannot use specialized type.": { "code": 2163, "category": DiagnosticCategory.Error }, - "Export assignments may only be used at the top-level of external modules.": { "code": 2164, "category": DiagnosticCategory.Error }, - "Export assignments may only be made with variables, functions, classes, interfaces, enums and internal modules.": { "code": 2165, "category": DiagnosticCategory.Error }, - "Only public methods of the base class are accessible via the 'super' keyword.": { "code": 2166, "category": DiagnosticCategory.Error }, - "Numeric indexer type '{0}' must be assignable to string indexer type '{1}'.": { "code": 2167, "category": DiagnosticCategory.Error }, - "Numeric indexer type '{0}' must be assignable to string indexer type '{1}':{NL}{2}": { "code": 2168, "category": DiagnosticCategory.Error }, - "All numerically named properties must be assignable to numeric indexer type '{0}'.": { "code": 2169, "category": DiagnosticCategory.Error }, - "All numerically named properties must be assignable to numeric indexer type '{0}':{NL}{1}": { "code": 2170, "category": DiagnosticCategory.Error }, - "All named properties must be assignable to string indexer type '{0}'.": { "code": 2171, "category": DiagnosticCategory.Error }, - "All named properties must be assignable to string indexer type '{0}':{NL}{1}": { "code": 2172, "category": DiagnosticCategory.Error }, - "A parameter initializer is only allowed in a function or constructor implementation.": { "code": 2174, "category": DiagnosticCategory.Error }, - "Function expression declared a non-void return type, but has no return expression.": { "code": 2176, "category": DiagnosticCategory.Error }, - "Import declaration referencing identifier from internal module can only be made with variables, functions, classes, interfaces, enums and internal modules.": { "code": 2177, "category": DiagnosticCategory.Error }, - "Module '{0}' has no exported member '{1}'.": { "code": 2178, "category": DiagnosticCategory.Error }, - "Unable to resolve module reference '{0}'.": { "code": 2179, "category": DiagnosticCategory.Error }, - "Could not find module '{0}' in module '{1}'.": { "code": 2180, "category": DiagnosticCategory.Error }, - "Exported import declaration '{0}' is assigned value with type that has or is using private type '{1}'.": { "code": 2181, "category": DiagnosticCategory.Error }, - "Exported import declaration '{0}' is assigned value with type that is using inaccessible module '{1}'.": { "code": 2182, "category": DiagnosticCategory.Error }, - "Exported import declaration '{0}' is assigned type that has or is using private type '{1}'.": { "code": 2183, "category": DiagnosticCategory.Error }, - "Exported import declaration '{0}' is assigned type that is using inaccessible module '{1}'.": { "code": 2184, "category": DiagnosticCategory.Error }, - "Exported import declaration '{0}' is assigned container that is or is using inaccessible module '{1}'.": { "code": 2185, "category": DiagnosticCategory.Error }, - "Type name '{0}' in extends clause does not reference constructor function for '{1}'.": { "code": 2186, "category": DiagnosticCategory.Error }, - "Internal module reference '{0}' in import declaration does not reference module instance for '{1}'.": { "code": 2187, "category": DiagnosticCategory.Error }, - "Module '{0}' cannot merge with previous declaration of '{1}' in a different file '{2}'.": { "code": 2188, "category": DiagnosticCategory.Error }, - "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}':{NL}{3}": { "code": 2189, "category": DiagnosticCategory.Error }, - "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it.": { "code": 2190, "category": DiagnosticCategory.Error }, - "Ambient external module declaration cannot be reopened.": { "code": 2191, "category": DiagnosticCategory.Error }, - "All declarations of merged declaration '{0}' must be exported or not exported.": { "code": 2192, "category": DiagnosticCategory.Error }, - "'super' cannot be referenced in constructor arguments.": { "code": 2193, "category": DiagnosticCategory.Error }, - "Return type of constructor signature must be assignable to the instance type of the class.": { "code": 2194, "category": DiagnosticCategory.Error }, - "Ambient external module declaration must be defined in global context.": { "code": 2195, "category": DiagnosticCategory.Error }, - "Ambient external module declaration cannot specify relative module name.": { "code": 2196, "category": DiagnosticCategory.Error }, - "Import declaration in an ambient external module declaration cannot reference external module through relative external module name.": { "code": 2197, "category": DiagnosticCategory.Error }, - "No best common type exists among return expressions.": { "code": 2198, "category": DiagnosticCategory.Error }, - "Import declaration cannot refer to external module reference when --noResolve option is set.": { "code": 2199, "category": DiagnosticCategory.Error }, - "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.": { "code": 2200, "category": DiagnosticCategory.Error }, - "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference.": { "code": 2205, "category": DiagnosticCategory.Error }, - "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.": { "code": 2206, "category": DiagnosticCategory.Error }, - "Expression resolves to '_super' that compiler uses to capture base class reference.": { "code": 2207, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.": { "code": 2208, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of call signature from exported interface has or is using private type '{1}'.": { "code": 2209, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of public static method from exported class has or is using private type '{1}'.": { "code": 2210, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of public method from exported class has or is using private type '{1}'.": { "code": 2211, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of method from exported interface has or is using private type '{1}'.": { "code": 2212, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported function has or is using private type '{1}'.": { "code": 2213, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.": { "code": 2214, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of call signature from exported interface is using inaccessible module {1}": { "code": 2215, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of public static method from exported class is using inaccessible module {1}.": { "code": 2216, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of public method from exported class is using inaccessible module {1}.": { "code": 2217, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of method from exported interface is using inaccessible module {1}.": { "code": 2218, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported function is using inaccessible module {1}.": { "code": 2219, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported class has or is using private type '{1}'.": { "code": 2220, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported interface has or is using private type '{1}'.": { "code": 2221, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported class is using inaccessible module {1}.": { "code": 2222, "category": DiagnosticCategory.Error }, - "TypeParameter '{0}' of exported interface is using inaccessible module {1}.": { "code": 2223, "category": DiagnosticCategory.Error }, - "Duplicate identifier '_i'. Compiler uses '_i' to initialize rest parameter.": { "code": 2224, "category": DiagnosticCategory.Error }, - "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.": { "code": 2225, "category": DiagnosticCategory.Error }, - "No best common type exists between '{0}' and '{1}'.": { "code": 2226, "category": DiagnosticCategory.Error }, - "No best common type exists between '{0}', '{1}', and '{2}'.": { "code": 2227, "category": DiagnosticCategory.Error }, - "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module.": { "code": 2228, "category": DiagnosticCategory.Error }, - "Constraint of a type parameter cannot reference any type parameter from the same type parameter list.": { "code": 2229, "category": DiagnosticCategory.Error }, - "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.": { "code": 2230, "category": DiagnosticCategory.Error }, - "Parameter '{0}' cannot be referenced in its initializer.": { "code": 2231, "category": DiagnosticCategory.Error }, - "Duplicate string index signature.": { "code": 2232, "category": DiagnosticCategory.Error }, - "Duplicate number index signature.": { "code": 2233, "category": DiagnosticCategory.Error }, - "All declarations of an interface must have identical type parameters.": { "code": 2234, "category": DiagnosticCategory.Error }, - "Expression resolves to variable declaration '_i' that compiler uses to initialize rest parameter.": { "code": 2235, "category": DiagnosticCategory.Error }, - "Neither type '{0}' nor type '{1}' is assignable to the other.": { "code": 2236, "category": DiagnosticCategory.Error }, - "Neither type '{0}' nor type '{1}' is assignable to the other:{NL}{2}": { "code": 2237, "category": DiagnosticCategory.Error }, - "Duplicate function implementation.": { "code": 2237, "category": DiagnosticCategory.Error }, - "Function implementation expected.": { "code": 2238, "category": DiagnosticCategory.Error }, - "Function overload name must be '{0}'.": { "code": 2239, "category": DiagnosticCategory.Error }, - "Constructor implementation expected.": { "code": 2240, "category": DiagnosticCategory.Error }, - "Class name cannot be '{0}'.": { "code": 2241, "category": DiagnosticCategory.Error }, - "Interface name cannot be '{0}'.": { "code": 2242, "category": DiagnosticCategory.Error }, - "Enum name cannot be '{0}'.": { "code": 2243, "category": DiagnosticCategory.Error }, - "A module cannot have multiple export assignments.": { "code": 2244, "category": DiagnosticCategory.Error }, - "Export assignment not allowed in module with exported element.": { "code": 2245, "category": DiagnosticCategory.Error }, - "A parameter property is only allowed in a constructor implementation.": { "code": 2246, "category": DiagnosticCategory.Error }, - "Function overload must be static.": { "code": 2247, "category": DiagnosticCategory.Error }, - "Function overload must not be static.": { "code": 2248, "category": DiagnosticCategory.Error }, - "Type '{0}' is missing property '{1}' from type '{2}'.": { "code": 4000, "category": DiagnosticCategory.NoPrefix }, - "Types of property '{0}' of types '{1}' and '{2}' are incompatible.": { "code": 4001, "category": DiagnosticCategory.NoPrefix }, - "Types of property '{0}' of types '{1}' and '{2}' are incompatible:{NL}{3}": { "code": 4002, "category": DiagnosticCategory.NoPrefix }, - "Property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.": { "code": 4003, "category": DiagnosticCategory.NoPrefix }, - "Property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.": { "code": 4004, "category": DiagnosticCategory.NoPrefix }, - "Types '{0}' and '{1}' define property '{2}' as private.": { "code": 4005, "category": DiagnosticCategory.NoPrefix }, - "Call signatures of types '{0}' and '{1}' are incompatible.": { "code": 4006, "category": DiagnosticCategory.NoPrefix }, - "Call signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { "code": 4007, "category": DiagnosticCategory.NoPrefix }, - "Type '{0}' requires a call signature, but type '{1}' lacks one.": { "code": 4008, "category": DiagnosticCategory.NoPrefix }, - "Construct signatures of types '{0}' and '{1}' are incompatible.": { "code": 4009, "category": DiagnosticCategory.NoPrefix }, - "Construct signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { "code": 4010, "category": DiagnosticCategory.NoPrefix }, - "Type '{0}' requires a construct signature, but type '{1}' lacks one.": { "code": 4011, "category": DiagnosticCategory.NoPrefix }, - "Index signatures of types '{0}' and '{1}' are incompatible.": { "code": 4012, "category": DiagnosticCategory.NoPrefix }, - "Index signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { "code": 4013, "category": DiagnosticCategory.NoPrefix }, - "Call signature expects {0} or fewer parameters.": { "code": 4014, "category": DiagnosticCategory.NoPrefix }, - "Could not apply type '{0}' to argument {1} which is of type '{2}'.": { "code": 4015, "category": DiagnosticCategory.NoPrefix }, - "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.": { "code": 4016, "category": DiagnosticCategory.NoPrefix }, - "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.": { "code": 4017, "category": DiagnosticCategory.NoPrefix }, - "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.": { "code": 4018, "category": DiagnosticCategory.NoPrefix }, - "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property.": { "code": 4019, "category": DiagnosticCategory.NoPrefix }, - "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible.": { "code": 4020, "category": DiagnosticCategory.NoPrefix }, - "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible:{NL}{3}": { "code": 4021, "category": DiagnosticCategory.NoPrefix }, - "Type reference cannot refer to container '{0}'.": { "code": 4022, "category": DiagnosticCategory.Error }, - "Type reference must refer to type.": { "code": 4023, "category": DiagnosticCategory.Error }, - "In enums with multiple declarations only one declaration can omit an initializer for the first enum element.": { "code": 4024, "category": DiagnosticCategory.Error }, - " (+ {0} overload(s))": { "code": 4025, "category": DiagnosticCategory.Message }, - "Variable declaration cannot have the same name as an import declaration.": { "code": 4026, "category": DiagnosticCategory.Error }, - "Signature expected {0} type arguments, got {1} instead.": { "code": 4027, "category": DiagnosticCategory.Error }, - "Property '{0}' defined as optional in type '{1}', but is required in type '{2}'.": { "code": 4028, "category": DiagnosticCategory.NoPrefix }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference do not refer to same named type.": { "code": 4029, "category": DiagnosticCategory.NoPrefix }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments.": { "code": 4030, "category": DiagnosticCategory.NoPrefix }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments:{NL}{2}": { "code": 4031, "category": DiagnosticCategory.NoPrefix }, - "Named properties '{0}' of types '{1}' and '{2}' are not identical.": { "code": 4032, "category": DiagnosticCategory.NoPrefix }, - "Types of string indexer of types '{0}' and '{1}' are not identical.": { "code": 4033, "category": DiagnosticCategory.NoPrefix }, - "Types of number indexer of types '{0}' and '{1}' are not identical.": { "code": 4034, "category": DiagnosticCategory.NoPrefix }, - "Type of number indexer in type '{0}' is not assignable to string indexer type in type '{1}'.{NL}{2}": { "code": 4035, "category": DiagnosticCategory.NoPrefix }, - "Type of property '{0}' in type '{1}' is not assignable to string indexer type in type '{2}'.{NL}{3}": { "code": 4036, "category": DiagnosticCategory.NoPrefix }, - "Type of property '{0}' in type '{1}' is not assignable to number indexer type in type '{2}'.{NL}{3}": { "code": 4037, "category": DiagnosticCategory.NoPrefix }, - "Static property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.": { "code": 4038, "category": DiagnosticCategory.NoPrefix }, - "Static property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.": { "code": 4039, "category": DiagnosticCategory.NoPrefix }, - "Types '{0}' and '{1}' define static property '{2}' as private.": { "code": 4040, "category": DiagnosticCategory.NoPrefix }, - "Current host does not support '{0}' option.": { "code": 5001, "category": DiagnosticCategory.Error }, - "ECMAScript target version '{0}' not supported. Specify a valid target version: '{1}' (default), or '{2}'": { "code": 5002, "category": DiagnosticCategory.Error }, - "Argument for '{0}' option must be '{1}' or '{2}'": { "code": 5003, "category": DiagnosticCategory.Error }, - "Could not find file: '{0}'.": { "code": 5004, "category": DiagnosticCategory.Error }, - "A file cannot have a reference to itself.": { "code": 5006, "category": DiagnosticCategory.Error }, - "Cannot resolve referenced file: '{0}'.": { "code": 5007, "category": DiagnosticCategory.Error }, - "Cannot find the common subdirectory path for the input files.": { "code": 5009, "category": DiagnosticCategory.Error }, - "Emit Error: {0}.": { "code": 5011, "category": DiagnosticCategory.Error }, - "Cannot read file '{0}': {1}": { "code": 5012, "category": DiagnosticCategory.Error }, - "Unsupported file encoding.": { "code": 5013, "category": DiagnosticCategory.NoPrefix }, - "Locale must be of the form or -. For example '{0}' or '{1}'.": { "code": 5014, "category": DiagnosticCategory.Error }, - "Unsupported locale: '{0}'.": { "code": 5015, "category": DiagnosticCategory.Error }, - "Execution Failed.{NL}": { "code": 5016, "category": DiagnosticCategory.Error }, - "Invalid call to 'up'": { "code": 5019, "category": DiagnosticCategory.Error }, - "Invalid call to 'down'": { "code": 5020, "category": DiagnosticCategory.Error }, - "Base64 value '{0}' finished with a continuation bit.": { "code": 5021, "category": DiagnosticCategory.Error }, - "Unknown compiler option '{0}'": { "code": 5023, "category": DiagnosticCategory.Error }, - "Expected {0} arguments to message, got {1} instead.": { "code": 5024, "category": DiagnosticCategory.Error }, - "Expected the message '{0}' to have {1} arguments, but it had {2}": { "code": 5025, "category": DiagnosticCategory.Error }, - "Could not delete file '{0}'": { "code": 5034, "category": DiagnosticCategory.Error }, - "Could not create directory '{0}'": { "code": 5035, "category": DiagnosticCategory.Error }, - "Error while executing file '{0}': ": { "code": 5036, "category": DiagnosticCategory.Error }, - "Cannot compile external modules unless the '--module' flag is provided.": { "code": 5037, "category": DiagnosticCategory.Error }, - "Option mapRoot cannot be specified without specifying sourcemap option.": { "code": 5038, "category": DiagnosticCategory.Error }, - "Option sourceRoot cannot be specified without specifying sourcemap option.": { "code": 5039, "category": DiagnosticCategory.Error }, - "Options mapRoot and sourceRoot cannot be specified without specifying sourcemap option.": { "code": 5040, "category": DiagnosticCategory.Error }, - "Option '{0}' specified without '{1}'": { "code": 5041, "category": DiagnosticCategory.Error }, - "'codepage' option not supported on current platform.": { "code": 5042, "category": DiagnosticCategory.Error }, - "Concatenate and emit output to single file.": { "code": 6001, "category": DiagnosticCategory.Message }, - "Generates corresponding {0} file.": { "code": 6002, "category": DiagnosticCategory.Message }, - "Specifies the location where debugger should locate map files instead of generated locations.": { "code": 6003, "category": DiagnosticCategory.Message }, - "Specifies the location where debugger should locate TypeScript files instead of source locations.": { "code": 6004, "category": DiagnosticCategory.Message }, - "Watch input files.": { "code": 6005, "category": DiagnosticCategory.Message }, - "Redirect output structure to the directory.": { "code": 6006, "category": DiagnosticCategory.Message }, - "Do not emit comments to output.": { "code": 6009, "category": DiagnosticCategory.Message }, - "Skip resolution and preprocessing.": { "code": 6010, "category": DiagnosticCategory.Message }, - "Specify ECMAScript target version: '{0}' (default), or '{1}'": { "code": 6015, "category": DiagnosticCategory.Message }, - "Specify module code generation: '{0}' or '{1}'": { "code": 6016, "category": DiagnosticCategory.Message }, - "Print this message.": { "code": 6017, "category": DiagnosticCategory.Message }, - "Print the compiler's version: {0}": { "code": 6019, "category": DiagnosticCategory.Message }, - "Allow use of deprecated '{0}' keyword when referencing an external module.": { "code": 6021, "category": DiagnosticCategory.Message }, - "Specify locale for errors and messages. For example '{0}' or '{1}'": { "code": 6022, "category": DiagnosticCategory.Message }, - "Syntax: {0}": { "code": 6023, "category": DiagnosticCategory.Message }, - "options": { "code": 6024, "category": DiagnosticCategory.Message }, - "file1": { "code": 6025, "category": DiagnosticCategory.Message }, - "Examples:": { "code": 6026, "category": DiagnosticCategory.Message }, - "Options:": { "code": 6027, "category": DiagnosticCategory.Message }, - "Insert command line options and files from a file.": { "code": 6030, "category": DiagnosticCategory.Message }, - "Version {0}": { "code": 6029, "category": DiagnosticCategory.Message }, - "Use the '{0}' flag to see options.": { "code": 6031, "category": DiagnosticCategory.Message }, - "{NL}Recompiling ({0}):": { "code": 6032, "category": DiagnosticCategory.Message }, - "STRING": { "code": 6033, "category": DiagnosticCategory.Message }, - "KIND": { "code": 6034, "category": DiagnosticCategory.Message }, - "file2": { "code": 6035, "category": DiagnosticCategory.Message }, - "VERSION": { "code": 6036, "category": DiagnosticCategory.Message }, - "LOCATION": { "code": 6037, "category": DiagnosticCategory.Message }, - "DIRECTORY": { "code": 6038, "category": DiagnosticCategory.Message }, - "NUMBER": { "code": 6039, "category": DiagnosticCategory.Message }, - "Specify the codepage to use when opening source files.": { "code": 6040, "category": DiagnosticCategory.Message }, - "Additional locations:": { "code": 6041, "category": DiagnosticCategory.Message }, - "This version of the Javascript runtime does not support the '{0}' function.": { "code": 7000, "category": DiagnosticCategory.Error }, - "Unknown rule.": { "code": 7002, "category": DiagnosticCategory.Error }, - "Invalid line number ({0})": { "code": 7003, "category": DiagnosticCategory.Error }, - "Warn on expressions and declarations with an implied 'any' type.": { "code": 7004, "category": DiagnosticCategory.Message }, - "Variable '{0}' implicitly has an 'any' type.": { "code": 7005, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of '{1}' implicitly has an 'any' type.": { "code": 7006, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of function type implicitly has an 'any' type.": { "code": 7007, "category": DiagnosticCategory.Error }, - "Member '{0}' of object type implicitly has an 'any' type.": { "code": 7008, "category": DiagnosticCategory.Error }, - "'new' expression, which lacks a constructor signature, implicitly has an 'any' type.": { "code": 7009, "category": DiagnosticCategory.Error }, - "'{0}', which lacks return-type annotation, implicitly has an 'any' return type.": { "code": 7010, "category": DiagnosticCategory.Error }, - "Function expression, which lacks return-type annotation, implicitly has an 'any' return type.": { "code": 7011, "category": DiagnosticCategory.Error }, - "Parameter '{0}' of lambda function implicitly has an 'any' type.": { "code": 7012, "category": DiagnosticCategory.Error }, - "Constructor signature, which lacks return-type annotation, implicitly has an 'any' return type.": { "code": 7013, "category": DiagnosticCategory.Error }, - "Lambda Function, which lacks return-type annotation, implicitly has an 'any' return type.": { "code": 7014, "category": DiagnosticCategory.Error }, - "Array Literal implicitly has an 'any' type from widening.": { "code": 7015, "category": DiagnosticCategory.Error }, - "'{0}', which lacks 'get' accessor and parameter type annotation on 'set' accessor, implicitly has an 'any' type.": { "code": 7016, "category": DiagnosticCategory.Error }, - "Index signature of object type implicitly has an 'any' type.": { "code": 7017, "category": DiagnosticCategory.Error }, - "Object literal's property '{0}' implicitly has an 'any' type from widening.": { "code": 7018, "category": DiagnosticCategory.Error }, - }; -} \ No newline at end of file diff --git a/src/services/resources/diagnosticMessages.json b/src/services/resources/diagnosticMessages.json deleted file mode 100644 index 60a0bb48df9..00000000000 --- a/src/services/resources/diagnosticMessages.json +++ /dev/null @@ -1,1806 +0,0 @@ -{ - "error TS{0}: {1}": { - "category": "NoPrefix", - "code": 0 - }, - "warning TS{0}: {1}": { - "category": "NoPrefix", - "code": 1 - }, - "Unrecognized escape sequence.": { - "category": "Error", - "code": 1000 - }, - "Unexpected character {0}.": { - "category": "Error", - "code": 1001 - }, - "Unterminated string literal.": { - "category": "Error", - "code": 1002 - }, - "Identifier expected.": { - "category": "Error", - "code": 1003 - }, - "'{0}' keyword expected.": { - "category": "Error", - "code": 1004 - }, - "'{0}' expected.": { - "category": "Error", - "code": 1005 - }, - "Identifier expected; '{0}' is a keyword.": { - "category": "Error", - "code": 1006 - }, - "Automatic semicolon insertion not allowed.": { - "category": "Error", - "code": 1007 - }, - "Unexpected token; '{0}' expected.": { - "category": "Error", - "code": 1008 - }, - "Trailing comma not allowed.": { - "category": "Error", - "code": 1009 - }, - "'public' or 'private' modifier must precede 'static'.": { - "category": "Error", - "code": 1011 - }, - "Unexpected token.": { - "category": "Error", - "code": 1012 - }, - "Catch clause parameter cannot have a type annotation.": { - "category": "Error", - "code": 1013 - }, - "A rest parameter must be last in a parameter list.": { - "category": "Error", - "code": 1014 - }, - "Parameter cannot have question mark and initializer.": { - "category": "Error", - "code": 1015 - }, - "A required parameter cannot follow an optional parameter.": { - "category": "Error", - "code": 1016 - }, - "Index signatures cannot have rest parameters.": { - "category": "Error", - "code": 1017 - }, - "Index signature parameter cannot have modifiers.": { - "category": "Error", - "code": 1018 - }, - "Index signature parameter cannot have a question mark.": { - "category": "Error", - "code": 1019 - }, - "Index signature parameter cannot have an initializer.": { - "category": "Error", - "code": 1020 - }, - "Index signature must have a type annotation.": { - "category": "Error", - "code": 1021 - }, - "Index signature parameter must have a type annotation.": { - "category": "Error", - "code": 1022 - }, - "Index signature parameter type must be 'string' or 'number'.": { - "category": "Error", - "code": 1023 - }, - "'extends' clause already seen.": { - "category": "Error", - "code": 1024 - }, - "'extends' clause must precede 'implements' clause.": { - "category": "Error", - "code": 1025 - }, - "Classes can only extend a single class.": { - "category": "Error", - "code": 1026 - }, - "'implements' clause already seen.": { - "category": "Error", - "code": 1027 - }, - "Accessibility modifier already seen.": { - "category": "Error", - "code": 1028 - }, - "'{0}' modifier must precede '{1}' modifier.": { - "category": "Error", - "code": 1029 - }, - "'{0}' modifier already seen.": { - "category": "Error", - "code": 1030 - }, - "'{0}' modifier cannot appear on a class element.": { - "category": "Error", - "code": 1031 - }, - "Interface declaration cannot have 'implements' clause.": { - "category": "Error", - "code": 1032 - }, - "'super' invocation cannot have type arguments.": { - "category": "Error", - "code": 1034 - }, - "Only ambient modules can use quoted names.": { - "category": "Error", - "code": 1035 - }, - "Statements are not allowed in ambient contexts.": { - "category": "Error", - "code": 1036 - }, - "A function implementation cannot be declared in an ambient context.": { - "category": "Error", - "code": 1037 - }, - "A 'declare' modifier cannot be used in an already ambient context.": { - "category": "Error", - "code": 1038 - }, - "Initializers are not allowed in ambient contexts.": { - "category": "Error", - "code": 1039 - }, - "'{0}' modifier cannot appear on a module element.": { - "category": "Error", - "code": 1044 - }, - "A 'declare' modifier cannot be used with an interface declaration.": { - "category": "Error", - "code": 1045 - }, - "A 'declare' modifier is required for a top level declaration in a .d.ts file.": { - "category": "Error", - "code": 1046 - }, - "A rest parameter cannot be optional.": { - "category": "Error", - "code": 1047 - }, - "A rest parameter cannot have an initializer.": { - "category": "Error", - "code": 1048 - }, - "'set' accessor must have exactly one parameter.": { - "category": "Error", - "code": 1049 - }, - "'set' accessor parameter cannot be optional.": { - "category": "Error", - "code": 1051 - }, - "'set' accessor parameter cannot have an initializer.": { - "category": "Error", - "code": 1052 - }, - "'set' accessor cannot have rest parameter.": { - "category": "Error", - "code": 1053 - }, - "'get' accessor cannot have parameters.": { - "category": "Error", - "code": 1054 - }, - "Modifiers cannot appear here.": { - "category": "Error", - "code": 1055 - }, - "Accessors are only available when targeting ECMAScript 5 and higher.": { - "category": "Error", - "code": 1056 - }, - "Enum member must have initializer.": { - "category": "Error", - "code": 1061 - }, - "Export assignment cannot be used in internal modules.": { - "category": "Error", - "code": 1063 - }, - "Ambient enum elements can only have integer literal initializers.": { - "category": "Error", - "code": 1066 - }, - "module, class, interface, enum, import or statement": { - "category": "NoPrefix", - "code": 1067 - }, - "constructor, function, accessor or variable": { - "category": "NoPrefix", - "code": 1068 - }, - "statement": { - "category": "NoPrefix", - "code": 1069 - }, - "case or default clause": { - "category": "NoPrefix", - "code": 1070 - }, - "identifier": { - "category": "NoPrefix", - "code": 1071 - }, - "call, construct, index, property or function signature": { - "category": "NoPrefix", - "code": 1072 - }, - "expression": { - "category": "NoPrefix", - "code": 1073 - }, - "type name": { - "category": "NoPrefix", - "code": 1074 - }, - "property or accessor": { - "category": "NoPrefix", - "code": 1075 - }, - "parameter": { - "category": "NoPrefix", - "code": 1076 - }, - "type": { - "category": "NoPrefix", - "code": 1077 - }, - "type parameter": { - "category": "NoPrefix", - "code": 1078 - }, - "A 'declare' modifier cannot be used with an import declaration.": { - "category": "Error", - "code": 1079 - }, - "Invalid 'reference' directive syntax.": { - "category": "Error", - "code": 1084 - }, - "Octal literals are not available when targeting ECMAScript 5 and higher.": { - "category": "Error", - "code": 1085 - }, - "Accessors are not allowed in ambient contexts.": { - "category": "Error", - "code": 1086 - }, - "'{0}' modifier cannot appear on a constructor declaration.": { - "category": "Error", - "code": 1089 - }, - "'{0}' modifier cannot appear on a parameter.": { - "category": "Error", - "code": 1090 - }, - "Only a single variable declaration is allowed in a 'for...in' statement.": { - "category": "Error", - "code": 1091 - }, - "Type parameters cannot appear on a constructor declaration.": { - "category": "Error", - "code": 1092 - }, - "Type annotation cannot appear on a constructor declaration.": { - "category": "Error", - "code": 1093 - }, - "Type parameters cannot appear on an accessor.": { - "category": "Error", - "code": 1094 - }, - "Type annotation cannot appear on a 'set' accessor.": { - "category": "Error", - "code": 1095 - }, - "Index signature must have exactly one parameter.": { - "category": "Error", - "code": 1096 - }, - "'{0}' list cannot be empty.": { - "category": "Error", - "code": 1097 - }, - "variable declaration": { - "category": "NoPrefix", - "code": 1098 - }, - "type argument": { - "category": "NoPrefix", - "code": 1099 - }, - "Invalid use of '{0}' in strict mode.": { - "category": "Error", - "code": 1100 - }, - "'with' statements are not allowed in strict mode.": { - "category": "Error", - "code": 1101 - }, - "'delete' cannot be called on an identifier in strict mode.": { - "category": "Error", - "code": 1102 - }, - "Invalid left-hand side in 'for...in' statement.": { - "category": "Error", - "code": 1103 - }, - "'continue' statement can only be used within an enclosing iteration statement.": { - "category": "Error", - "code": 1104 - }, - "'break' statement can only be used within an enclosing iteration or switch statement.": { - "category": "Error", - "code": 1105 - }, - "Jump target not found.": { - "category": "Error", - "code": 1106 - }, - "Jump target cannot cross function boundary.": { - "category": "Error", - "code": 1107 - }, - "'return' statement must be contained within a function body.": { - "category": "Error", - "code": 1108 - }, - "Expression expected.": { - "category": "Error", - "code": 1109 - }, - "Type expected.": { - "category": "Error", - "code": 1110 - }, - "Template literal cannot be used as an element name.": { - "category": "Error", - "code": 1111 - }, - "Computed property names cannot be used here.": { - "category": "Error", - "code": 1112 - }, - "'yield' expression must be contained within a generator declaration.": { - "category": "Error", - "code": 1113 - }, - "Unterminated regular expression literal.": { - "category": "Error", - "code": 1114 - }, - "Unterminated template literal.": { - "category": "Error", - "code": 1115 - }, - "'await' expression must be contained within an 'async' declaration.": { - "category": "Error", - "code": 1116 - }, - "'async' arrow function parameters must be parenthesized.": { - "category": "Error", - "code": 1117 - }, - "A generator declaration cannot have the 'async' modifier.": { - "category": "Error", - "code": 1118 - }, - "'async' modifier cannot appear here.": { - "category": "Error", - "code": 1119 - }, - "'comma' expression cannot appear in a computed property name.": { - "category": "Error", - "code": 1120 - }, - "String literal expected.": { - "category": "Error", - "code": 1121 - }, - "Duplicate identifier '{0}'.": { - "category": "Error", - "code": 2000 - }, - "The name '{0}' does not exist in the current scope.": { - "category": "Error", - "code": 2001 - }, - "The name '{0}' does not refer to a value.": { - "category": "Error", - "code": 2002 - }, - "'super' can only be used inside a class instance method.": { - "category": "Error", - "code": 2003 - }, - "The left-hand side of an assignment expression must be a variable, property or indexer.": { - "category": "Error", - "code": 2004 - }, - "Value of type '{0}' is not callable. Did you mean to include 'new'?": { - "category": "Error", - "code": 2161 - }, - "Value of type '{0}' is not callable.": { - "category": "Error", - "code": 2006 - }, - "Value of type '{0}' is not newable.": { - "category": "Error", - "code": 2007 - }, - "An index expression argument must be 'string', 'number', or 'any'.": { - "category": "Error", - "code": 2008 - }, - "Operator '{0}' cannot be applied to types '{1}' and '{2}'.": { - "category": "Error", - "code": 2009 - }, - "Type '{0}' is not assignable to type '{1}'.": { - "category": "Error", - "code": 2011 - }, - "Type '{0}' is not assignable to type '{1}':{NL}{2}": { - "category": "Error", - "code": 2012 - }, - "Expected var, class, interface, or module.": { - "category": "Error", - "code": 2013 - }, - "Getter '{0}' already declared.": { - "category": "Error", - "code": 2015 - }, - "Setter '{0}' already declared.": { - "category": "Error", - "code": 2016 - }, - "Exported class '{0}' extends private class '{1}'.": { - "category": "Error", - "code": 2018 - }, - "Exported class '{0}' implements private interface '{1}'.": { - "category": "Error", - "code": 2019 - }, - "Exported interface '{0}' extends private interface '{1}'.": { - "category": "Error", - "code": 2020 - }, - "Exported class '{0}' extends class from inaccessible module {1}.": { - "category": "Error", - "code": 2021 - }, - "Exported class '{0}' implements interface from inaccessible module {1}.": { - "category": "Error", - "code": 2022 - }, - "Exported interface '{0}' extends interface from inaccessible module {1}.": { - "category": "Error", - "code": 2023 - }, - "Public static property '{0}' of exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2024 - }, - "Public property '{0}' of exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2025 - }, - "Property '{0}' of exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2026 - }, - "Exported variable '{0}' has or is using private type '{1}'.": { - "category": "Error", - "code": 2027 - }, - "Public static property '{0}' of exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2028 - }, - "Public property '{0}' of exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2029 - }, - "Property '{0}' of exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2030 - }, - "Exported variable '{0}' is using inaccessible module {1}.": { - "category": "Error", - "code": 2031 - }, - "Parameter '{0}' of constructor from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2032 - }, - "Parameter '{0}' of public static property setter from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2033 - }, - "Parameter '{0}' of public property setter from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2034 - }, - "Parameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2035 - }, - "Parameter '{0}' of call signature from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2036 - }, - "Parameter '{0}' of public static method from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2037 - }, - "Parameter '{0}' of public method from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2038 - }, - "Parameter '{0}' of method from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2039 - }, - "Parameter '{0}' of exported function has or is using private type '{1}'.": { - "category": "Error", - "code": 2040 - }, - "Parameter '{0}' of constructor from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2041 - }, - "Parameter '{0}' of public static property setter from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2042 - }, - "Parameter '{0}' of public property setter from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2043 - }, - "Parameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2044 - }, - "Parameter '{0}' of call signature from exported interface is using inaccessible module {1}": { - "category": "Error", - "code": 2045 - }, - "Parameter '{0}' of public static method from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2046 - }, - "Parameter '{0}' of public method from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2047 - }, - "Parameter '{0}' of method from exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2048 - }, - "Parameter '{0}' of exported function is using inaccessible module {1}.": { - "category": "Error", - "code": 2049 - }, - "Return type of public static property getter from exported class has or is using private type '{0}'.": { - "category": "Error", - "code": 2050 - }, - "Return type of public property getter from exported class has or is using private type '{0}'.": { - "category": "Error", - "code": 2051 - }, - "Return type of constructor signature from exported interface has or is using private type '{0}'.": { - "category": "Error", - "code": 2052 - }, - "Return type of call signature from exported interface has or is using private type '{0}'.": { - "category": "Error", - "code": 2053 - }, - "Return type of index signature from exported interface has or is using private type '{0}'.": { - "category": "Error", - "code": 2054 - }, - "Return type of public static method from exported class has or is using private type '{0}'.": { - "category": "Error", - "code": 2055 - }, - "Return type of public method from exported class has or is using private type '{0}'.": { - "category": "Error", - "code": 2056 - }, - "Return type of method from exported interface has or is using private type '{0}'.": { - "category": "Error", - "code": 2057 - }, - "Return type of exported function has or is using private type '{0}'.": { - "category": "Error", - "code": 2058 - }, - "Return type of public static property getter from exported class is using inaccessible module {0}.": { - "category": "Error", - "code": 2059 - }, - "Return type of public property getter from exported class is using inaccessible module {0}.": { - "category": "Error", - "code": 2060 - }, - "Return type of constructor signature from exported interface is using inaccessible module {0}.": { - "category": "Error", - "code": 2061 - }, - "Return type of call signature from exported interface is using inaccessible module {0}.": { - "category": "Error", - "code": 2062 - }, - "Return type of index signature from exported interface is using inaccessible module {0}.": { - "category": "Error", - "code": 2063 - }, - "Return type of public static method from exported class is using inaccessible module {0}.": { - "category": "Error", - "code": 2064 - }, - "Return type of public method from exported class is using inaccessible module {0}.": { - "category": "Error", - "code": 2065 - }, - "Return type of method from exported interface is using inaccessible module {0}.": { - "category": "Error", - "code": 2066 - }, - "Return type of exported function is using inaccessible module {0}.": { - "category": "Error", - "code": 2067 - }, - "'new T[]' cannot be used to create an array. Use 'new Array()' instead.": { - "category": "Error", - "code": 2068 - }, - "A parameter list must follow a generic type argument list. '(' expected.": { - "category": "Error", - "code": 2069 - }, - "Multiple constructor implementations are not allowed.": { - "category": "Error", - "code": 2070 - }, - "Cannot find external module '{0}'.": { - "category": "Error", - "code": 2071 - }, - "Module cannot be aliased to a non-module type.": { - "category": "Error", - "code": 2072 - }, - "A class may only extend another class.": { - "category": "Error", - "code": 2073 - }, - "A class may only implement another class or interface.": { - "category": "Error", - "code": 2074 - }, - "An interface may only extend a class or another interface.": { - "category": "Error", - "code": 2075 - }, - "Unable to resolve type.": { - "category": "Error", - "code": 2077 - }, - "Unable to resolve type of '{0}'.": { - "category": "Error", - "code": 2078 - }, - "Unable to resolve type parameter constraint.": { - "category": "Error", - "code": 2079 - }, - "Type parameter constraint cannot be a primitive type.": { - "category": "Error", - "code": 2080 - }, - "Supplied parameters do not match any signature of call target.": { - "category": "Error", - "code": 2081 - }, - "Supplied parameters do not match any signature of call target:{NL}{0}": { - "category": "Error", - "code": 2082 - }, - "Cannot use 'new' with an expression whose type lacks a signature.": { - "category": "Error", - "code": 2083 - }, - "Only a void function can be called with the 'new' keyword.": { - "category": "Error", - "code": 2084 - }, - "Could not select overload for 'new' expression.": { - "category": "Error", - "code": 2085 - }, - "Type '{0}' does not satisfy the constraint '{1}'.": { - "category": "Error", - "code": 2086 - }, - "Could not select overload for 'call' expression.": { - "category": "Error", - "code": 2087 - }, - "Cannot invoke an expression whose type lacks a call signature.": { - "category": "Error", - "code": 2088 - }, - "Calls to 'super' are only valid inside a class.": { - "category": "Error", - "code": 2089 - }, - "Generic type '{0}' requires {1} type argument(s).": { - "category": "Error", - "code": 2090 - }, - "Type of array literal cannot be determined. Best common type could not be found for array elements.": { - "category": "Error", - "code": 2092 - }, - "Could not find enclosing symbol for dotted name '{0}'.": { - "category": "Error", - "code": 2093 - }, - "Property '{0}' does not exist on value of type '{1}'.": { - "category": "Error", - "code": 2094 - }, - "Cannot find name '{0}'.": { - "category": "Error", - "code": 2095 - }, - "'get' and 'set' accessor must have the same type.": { - "category": "Error", - "code": 2096 - }, - "'this' cannot be referenced in current location.": { - "category": "Error", - "code": 2097 - }, - "Static members cannot reference class type parameters.": { - "category": "Error", - "code": 2099 - }, - "Type '{0}' recursively references itself as a base type.": { - "category": "Error", - "code": 2100 - }, - "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.": { - "category": "Error", - "code": 2102 - }, - "'super' can only be referenced in a derived class.": { - "category": "Error", - "code": 2103 - }, - "A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties.": { - "category": "Error", - "code": 2104 - }, - "Constructors for derived classes must contain a 'super' call.": { - "category": "Error", - "code": 2105 - }, - "Super calls are not permitted outside constructors or in nested functions inside constructors.": { - "category": "Error", - "code": 2106 - }, - "'{0}.{1}' is inaccessible.": { - "category": "Error", - "code": 2107 - }, - "'this' cannot be referenced in a module body.": { - "category": "Error", - "code": 2108 - }, - "Invalid '+' expression - types not known to support the addition operator.": { - "category": "Error", - "code": 2111 - }, - "The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.": { - "category": "Error", - "code": 2112 - }, - "The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.": { - "category": "Error", - "code": 2113 - }, - "An arithmetic operand must be of type 'any', 'number' or an enum type.": { - "category": "Error", - "code": 2114 - }, - "Variable declarations of a 'for' statement cannot use a type annotation.": { - "category": "Error", - "code": 2115 - }, - "Variable declarations of a 'for' statement must be of types 'string' or 'any'.": { - "category": "Error", - "code": 2116 - }, - "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.": { - "category": "Error", - "code": 2117 - }, - "The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.": { - "category": "Error", - "code": 2118 - }, - "The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter.": { - "category": "Error", - "code": 2119 - }, - "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.": { - "category": "Error", - "code": 2120 - }, - "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.": { - "category": "Error", - "code": 2121 - }, - "Setters cannot return a value.": { - "category": "Error", - "code": 2122 - }, - "Tried to query type of uninitialized module '{0}'.": { - "category": "Error", - "code": 2123 - }, - "Tried to set variable type to uninitialized module type '{0}'.": { - "category": "Error", - "code": 2124 - }, - "Type '{0}' is not generic.": { - "category": "Error", - "code": 2125 - }, - "Getters must return a value.": { - "category": "Error", - "code": 2126 - }, - "Getter and setter accessors do not agree in visibility.": { - "category": "Error", - "code": 2127 - }, - "Invalid left-hand side of assignment expression.": { - "category": "Error", - "code": 2130 - }, - "Function declared a non-void return type, but has no return expression.": { - "category": "Error", - "code": 2131 - }, - "Cannot resolve return type reference.": { - "category": "Error", - "code": 2132 - }, - "Constructors cannot have a return type of 'void'.": { - "category": "Error", - "code": 2133 - }, - "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.": { - "category": "Error", - "code": 2134 - }, - "All symbols within a with block will be resolved to 'any'.": { - "category": "Error", - "code": 2135 - }, - "Import declarations in an internal module cannot reference an external module.": { - "category": "Error", - "code": 2136 - }, - "Class {0} declares interface {1} but does not implement it:{NL}{2}": { - "category": "Error", - "code": 2137 - }, - "Class {0} declares class {1} as an interface but does not implement it:{NL}{2}": { - "category": "Error", - "code": 2138 - }, - "The operand of an increment or decrement operator must be a variable, property or indexer.": { - "category": "Error", - "code": 2139 - }, - "'this' cannot be referenced in a static property initializer.": { - "category": "Error", - "code": 2140 - }, - "Class '{0}' cannot extend class '{1}':{NL}{2}": { - "category": "Error", - "code": 2141 - }, - "Interface '{0}' cannot extend class '{1}':{NL}{2}": { - "category": "Error", - "code": 2142 - }, - "Interface '{0}' cannot extend interface '{1}':{NL}{2}": { - "category": "Error", - "code": 2143 - }, - "Overload signature is not compatible with function definition.": { - "category": "Error", - "code": 2148 - }, - "Overload signature is not compatible with function definition:{NL}{0}": { - "category": "Error", - "code": 2149 - }, - "Overload signatures must all be public or private.": { - "category": "Error", - "code": 2150 - }, - "Overload signatures must all be exported or not exported.": { - "category": "Error", - "code": 2151 - }, - "Overload signatures must all be ambient or non-ambient.": { - "category": "Error", - "code": 2152 - }, - "Overload signatures must all be optional or required.": { - "category": "Error", - "code": 2153 - }, - "Specialized overload signature is not assignable to any non-specialized signature.": { - "category": "Error", - "code": 2154 - }, - "'this' cannot be referenced in constructor arguments.": { - "category": "Error", - "code": 2155 - }, - "Instance member cannot be accessed off a class.": { - "category": "Error", - "code": 2157 - }, - "Untyped function calls may not accept type arguments.": { - "category": "Error", - "code": 2158 - }, - "Non-generic functions may not accept type arguments.": { - "category": "Error", - "code": 2159 - }, - "A generic type may not reference itself with a wrapped form of its own type parameters.": { - "category": "Error", - "code": 2160 - }, - "A rest parameter must be of an array type.": { - "category": "Error", - "code": 2162 - }, - "Overload signature implementation cannot use specialized type.": { - "category": "Error", - "code": 2163 - }, - "Export assignments may only be used at the top-level of external modules.": { - "category": "Error", - "code": 2164 - }, - "Export assignments may only be made with variables, functions, classes, interfaces, enums and internal modules.": { - "category": "Error", - "code": 2165 - }, - "Only public methods of the base class are accessible via the 'super' keyword.": { - "category": "Error", - "code": 2166 - }, - "Numeric indexer type '{0}' must be assignable to string indexer type '{1}'.": { - "category": "Error", - "code": 2167 - }, - "Numeric indexer type '{0}' must be assignable to string indexer type '{1}':{NL}{2}": { - "category": "Error", - "code": 2168 - }, - "All numerically named properties must be assignable to numeric indexer type '{0}'.": { - "category": "Error", - "code": 2169 - }, - "All numerically named properties must be assignable to numeric indexer type '{0}':{NL}{1}": { - "category": "Error", - "code": 2170 - }, - "All named properties must be assignable to string indexer type '{0}'.": { - "category": "Error", - "code": 2171 - }, - "All named properties must be assignable to string indexer type '{0}':{NL}{1}": { - "category": "Error", - "code": 2172 - }, - "A parameter initializer is only allowed in a function or constructor implementation.": { - "category": "Error", - "code": 2174 - }, - "Function expression declared a non-void return type, but has no return expression.": { - "category": "Error", - "code": 2176 - }, - "Import declaration referencing identifier from internal module can only be made with variables, functions, classes, interfaces, enums and internal modules.": { - "category": "Error", - "code": 2177 - }, - "Module '{0}' has no exported member '{1}'.": { - "category": "Error", - "code": 2178 - }, - "Unable to resolve module reference '{0}'.": { - "category": "Error", - "code": 2179 - }, - "Could not find module '{0}' in module '{1}'.": { - "category": "Error", - "code": 2180 - }, - "Exported import declaration '{0}' is assigned value with type that has or is using private type '{1}'.": { - "category": "Error", - "code": 2181 - }, - "Exported import declaration '{0}' is assigned value with type that is using inaccessible module '{1}'.": { - "category": "Error", - "code": 2182 - }, - "Exported import declaration '{0}' is assigned type that has or is using private type '{1}'.": { - "category": "Error", - "code": 2183 - }, - "Exported import declaration '{0}' is assigned type that is using inaccessible module '{1}'.": { - "category": "Error", - "code": 2184 - }, - "Exported import declaration '{0}' is assigned container that is or is using inaccessible module '{1}'.": { - "category": "Error", - "code": 2185 - }, - "Type name '{0}' in extends clause does not reference constructor function for '{1}'.": { - "category": "Error", - "code": 2186 - }, - "Internal module reference '{0}' in import declaration does not reference module instance for '{1}'.": { - "category": "Error", - "code": 2187 - }, - "Module '{0}' cannot merge with previous declaration of '{1}' in a different file '{2}'.": { - "category": "Error", - "code": 2188 - }, - "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}':{NL}{3}": { - "category": "Error", - "code": 2189 - }, - "Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it.": { - "category": "Error", - "code": 2190 - }, - "Ambient external module declaration cannot be reopened.": { - "category": "Error", - "code": 2191 - }, - "All declarations of merged declaration '{0}' must be exported or not exported.": { - "category": "Error", - "code": 2192 - }, - "'super' cannot be referenced in constructor arguments.": { - "category": "Error", - "code": 2193 - }, - "Return type of constructor signature must be assignable to the instance type of the class.":{ - "category": "Error", - "code": 2194 - }, - "Ambient external module declaration must be defined in global context.": { - "category": "Error", - "code": 2195 - }, - "Ambient external module declaration cannot specify relative module name.": { - "category": "Error", - "code": 2196 - }, - "Import declaration in an ambient external module declaration cannot reference external module through relative external module name.": { - "category": "Error", - "code": 2197 - }, - "No best common type exists among return expressions.": { - "category": "Error", - "code": 2198 - }, - "Import declaration cannot refer to external module reference when --noResolve option is set.": { - "category": "Error", - "code": 2199 - }, - "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.": { - "category": "Error", - "code": 2200 - }, - "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference.": { - "category": "Error", - "code": 2205 - }, - "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.": { - "category": "Error", - "code": 2206 - }, - "Expression resolves to '_super' that compiler uses to capture base class reference.": { - "category": "Error", - "code": 2207 - }, - "TypeParameter '{0}' of constructor signature from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2208 - }, - "TypeParameter '{0}' of call signature from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2209 - }, - "TypeParameter '{0}' of public static method from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2210 - }, - "TypeParameter '{0}' of public method from exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2211 - }, - "TypeParameter '{0}' of method from exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2212 - }, - "TypeParameter '{0}' of exported function has or is using private type '{1}'.": { - "category": "Error", - "code": 2213 - }, - "TypeParameter '{0}' of constructor signature from exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2214 - }, - "TypeParameter '{0}' of call signature from exported interface is using inaccessible module {1}": { - "category": "Error", - "code": 2215 - }, - "TypeParameter '{0}' of public static method from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2216 - }, - "TypeParameter '{0}' of public method from exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2217 - }, - "TypeParameter '{0}' of method from exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2218 - }, - "TypeParameter '{0}' of exported function is using inaccessible module {1}.": { - "category": "Error", - "code": 2219 - }, - "TypeParameter '{0}' of exported class has or is using private type '{1}'.": { - "category": "Error", - "code": 2220 - }, - "TypeParameter '{0}' of exported interface has or is using private type '{1}'.": { - "category": "Error", - "code": 2221 - }, - "TypeParameter '{0}' of exported class is using inaccessible module {1}.": { - "category": "Error", - "code": 2222 - }, - "TypeParameter '{0}' of exported interface is using inaccessible module {1}.": { - "category": "Error", - "code": 2223 - }, - "Duplicate identifier '_i'. Compiler uses '_i' to initialize rest parameter.": { - "category": "Error", - "code": 2224 - }, - "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.": { - "category": "Error", - "code": 2225 - }, - "No best common type exists between '{0}' and '{1}'.": { - "category": "Error", - "code": 2226 - }, - "No best common type exists between '{0}', '{1}', and '{2}'.": { - "category": "Error", - "code": 2227 - }, - "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of an external module.": { - "category": "Error", - "code": 2228 - }, - "Constraint of a type parameter cannot reference any type parameter from the same type parameter list.": { - "category": "Error", - "code": 2229 - }, - "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.": { - "category": "Error", - "code": 2230 - }, - "Parameter '{0}' cannot be referenced in its initializer.": { - "category": "Error", - "code": 2231 - }, - "Duplicate string index signature.": { - "category": "Error", - "code": 2232 - }, - "Duplicate number index signature.": { - "category": "Error", - "code": 2233 - }, - "All declarations of an interface must have identical type parameters.": { - "category": "Error", - "code": 2234 - }, - "Expression resolves to variable declaration '_i' that compiler uses to initialize rest parameter.": { - "category": "Error", - "code": 2235 - }, - "Neither type '{0}' nor type '{1}' is assignable to the other.": { - "category": "Error", - "code": 2236 - }, - "Neither type '{0}' nor type '{1}' is assignable to the other:{NL}{2}": { - "category": "Error", - "code": 2237 - }, - "Duplicate function implementation.": { - "category": "Error", - "code": 2237 - }, - "Function implementation expected.": { - "category": "Error", - "code": 2238 - }, - "Function overload name must be '{0}'.": { - "category": "Error", - "code": 2239 - }, - "Constructor implementation expected.": { - "category": "Error", - "code": 2240 - }, - "Class name cannot be '{0}'.": { - "category": "Error", - "code": 2241 - }, - "Interface name cannot be '{0}'.": { - "category": "Error", - "code": 2242 - }, - "Enum name cannot be '{0}'.": { - "category": "Error", - "code": 2243 - }, - "A module cannot have multiple export assignments.": { - "category": "Error", - "code": 2244 - }, - "Export assignment not allowed in module with exported element.": { - "category": "Error", - "code": 2245 - }, - "A parameter property is only allowed in a constructor implementation.": { - "category": "Error", - "code": 2246 - }, - "Function overload must be static.": { - "category": "Error", - "code": 2247 - }, - "Function overload must not be static.": { - "category": "Error", - "code": 2248 - }, - "Type '{0}' is missing property '{1}' from type '{2}'.": { - "category": "NoPrefix", - "code": 4000 - }, - "Types of property '{0}' of types '{1}' and '{2}' are incompatible.": { - "category": "NoPrefix", - "code": 4001 - }, - "Types of property '{0}' of types '{1}' and '{2}' are incompatible:{NL}{3}": { - "category": "NoPrefix", - "code": 4002 - }, - "Property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.": { - "category": "NoPrefix", - "code": 4003 - }, - "Property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.": { - "category": "NoPrefix", - "code": 4004 - }, - "Types '{0}' and '{1}' define property '{2}' as private.": { - "category": "NoPrefix", - "code": 4005 - }, - "Call signatures of types '{0}' and '{1}' are incompatible.": { - "category": "NoPrefix", - "code": 4006 - }, - "Call signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { - "category": "NoPrefix", - "code": 4007 - }, - "Type '{0}' requires a call signature, but type '{1}' lacks one.": { - "category": "NoPrefix", - "code": 4008 - }, - "Construct signatures of types '{0}' and '{1}' are incompatible.": { - "category": "NoPrefix", - "code": 4009 - }, - "Construct signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { - "category": "NoPrefix", - "code": 4010 - }, - "Type '{0}' requires a construct signature, but type '{1}' lacks one.": { - "category": "NoPrefix", - "code": 4011 - }, - "Index signatures of types '{0}' and '{1}' are incompatible.": { - "category": "NoPrefix", - "code": 4012 - }, - "Index signatures of types '{0}' and '{1}' are incompatible:{NL}{2}": { - "category": "NoPrefix", - "code": 4013 - }, - "Call signature expects {0} or fewer parameters.": { - "category": "NoPrefix", - "code": 4014 - }, - "Could not apply type '{0}' to argument {1} which is of type '{2}'.": { - "category": "NoPrefix", - "code": 4015 - }, - "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.": { - "category": "NoPrefix", - "code": 4016 - }, - "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.": { - "category": "NoPrefix", - "code": 4017 - }, - "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.": { - "category": "NoPrefix", - "code": 4018 - }, - "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property.": { - "category": "NoPrefix", - "code": 4019 - }, - "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible.": { - "category": "NoPrefix", - "code": 4020 - }, - "Types of static property '{0}' of class '{1}' and class '{2}' are incompatible:{NL}{3}": { - "category": "NoPrefix", - "code": 4021 - }, - "Type reference cannot refer to container '{0}'.": { - "category": "Error", - "code": 4022 - }, - "Type reference must refer to type.": { - "category": "Error", - "code": 4023 - }, - "In enums with multiple declarations only one declaration can omit an initializer for the first enum element.": { - "category": "Error", - "code": 4024 - }, - " (+ {0} overload(s))": { - "category": "Message", - "code": 4025 - }, - "Variable declaration cannot have the same name as an import declaration.": { - "category": "Error", - "code": 4026 - }, - "Signature expected {0} type arguments, got {1} instead.": { - "category": "Error", - "code": 4027 - }, - "Property '{0}' defined as optional in type '{1}', but is required in type '{2}'.": { - "category": "NoPrefix", - "code": 4028 - }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference do not refer to same named type.": { - "category": "NoPrefix", - "code": 4029 - }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments.": { - "category": "NoPrefix", - "code": 4030 - }, - "Types '{0}' and '{1}' originating in infinitely expanding type reference have incompatible type arguments:{NL}{2}": { - "category": "NoPrefix", - "code": 4031 - }, - "Named properties '{0}' of types '{1}' and '{2}' are not identical.": { - "category": "NoPrefix", - "code": 4032 - }, - "Types of string indexer of types '{0}' and '{1}' are not identical.": { - "category": "NoPrefix", - "code": 4033 - }, - "Types of number indexer of types '{0}' and '{1}' are not identical.": { - "category": "NoPrefix", - "code": 4034 - }, - "Type of number indexer in type '{0}' is not assignable to string indexer type in type '{1}'.{NL}{2}": { - "category": "NoPrefix", - "code": 4035 - }, - "Type of property '{0}' in type '{1}' is not assignable to string indexer type in type '{2}'.{NL}{3}": { - "category": "NoPrefix", - "code": 4036 - }, - "Type of property '{0}' in type '{1}' is not assignable to number indexer type in type '{2}'.{NL}{3}": { - "category": "NoPrefix", - "code": 4037 - }, - "Static property '{0}' defined as private in type '{1}' is defined as public in type '{2}'.": { - "category": "NoPrefix", - "code": 4038 - }, - "Static property '{0}' defined as public in type '{1}' is defined as private in type '{2}'.": { - "category": "NoPrefix", - "code": 4039 - }, - "Types '{0}' and '{1}' define static property '{2}' as private.": { - "category": "NoPrefix", - "code": 4040 - }, - "Current host does not support '{0}' option.": { - "category": "Error", - "code": 5001 - }, - "ECMAScript target version '{0}' not supported. Specify a valid target version: '{1}' (default), or '{2}'": { - "category": "Error", - "code": 5002 - }, - "Argument for '{0}' option must be '{1}' or '{2}'": { - "category": "Error", - "code": 5003 - }, - "Could not find file: '{0}'.": { - "category": "Error", - "code": 5004 - }, - "A file cannot have a reference to itself.": { - "category": "Error", - "code": 5006 - }, - "Cannot resolve referenced file: '{0}'.": { - "category": "Error", - "code": 5007 - }, - "Cannot find the common subdirectory path for the input files.": { - "category": "Error", - "code": 5009 - }, - "Emit Error: {0}.": { - "category": "Error", - "code": 5011 - }, - "Cannot read file '{0}': {1}": { - "category": "Error", - "code": 5012 - }, - "Unsupported file encoding.": { - "category": "NoPrefix", - "code": 5013 - }, - "Locale must be of the form or -. For example '{0}' or '{1}'.": { - "category": "Error", - "code": 5014 - }, - "Unsupported locale: '{0}'.": { - "category": "Error", - "code": 5015 - }, - "Execution Failed.{NL}": { - "category": "Error", - "code": 5016 - }, - "Invalid call to 'up'": { - "category": "Error", - "code": 5019 - }, - "Invalid call to 'down'": { - "category": "Error", - "code": 5020 - }, - "Base64 value '{0}' finished with a continuation bit.": { - "category": "Error", - "code": 5021 - }, - "Unknown compiler option '{0}'": { - "category": "Error", - "code": 5023 - }, - "Expected {0} arguments to message, got {1} instead.": { - "category": "Error", - "code": 5024 - }, - "Expected the message '{0}' to have {1} arguments, but it had {2}": { - "category": "Error", - "code": 5025 - }, - "Could not delete file '{0}'": { - "category": "Error", - "code": 5034 - }, - "Could not create directory '{0}'": { - "category": "Error", - "code": 5035 - }, - "Error while executing file '{0}': ": { - "category": "Error", - "code": 5036 - }, - "Cannot compile external modules unless the '--module' flag is provided.": { - "category": "Error", - "code": 5037 - }, - "Option mapRoot cannot be specified without specifying sourcemap option.": { - "category": "Error", - "code": 5038 - }, - "Option sourceRoot cannot be specified without specifying sourcemap option.": { - "category": "Error", - "code": 5039 - }, - "Options mapRoot and sourceRoot cannot be specified without specifying sourcemap option.": { - "category": "Error", - "code": 5040 - }, - "Option '{0}' specified without '{1}'": { - "category": "Error", - "code": 5041 - }, - "'codepage' option not supported on current platform.": { - "category": "Error", - "code": 5042 - }, - "Concatenate and emit output to single file.": { - "category": "Message", - "code": 6001 - }, - "Generates corresponding {0} file.": { - "category": "Message", - "code": 6002 - }, - "Specifies the location where debugger should locate map files instead of generated locations.": { - "category": "Message", - "code": 6003 - }, - "Specifies the location where debugger should locate TypeScript files instead of source locations.": { - "category": "Message", - "code": 6004 - }, - "Watch input files.": { - "category": "Message", - "code": 6005 - }, - "Redirect output structure to the directory.": { - "category": "Message", - "code": 6006 - }, - "Do not emit comments to output.": { - "category": "Message", - "code": 6009 - }, - "Skip resolution and preprocessing.": { - "category": "Message", - "code": 6010 - }, - "Specify ECMAScript target version: '{0}' (default), or '{1}'": { - "category": "Message", - "code": 6015 - }, - "Specify module code generation: '{0}' or '{1}'": { - "category": "Message", - "code": 6016 - }, - "Print this message.": { - "category": "Message", - "code": 6017 - }, - "Print the compiler's version: {0}": { - "category": "Message", - "code": 6019 - }, - "Allow use of deprecated '{0}' keyword when referencing an external module.": { - "category": "Message", - "code": 6021 - }, - "Specify locale for errors and messages. For example '{0}' or '{1}'": { - "category": "Message", - "code": 6022 - }, - "Syntax: {0}": { - "category": "Message", - "code": 6023 - }, - "options": { - "category": "Message", - "code": 6024 - }, - "file": { - "category": "Message", - "code": 6025 - }, - "Examples:": { - "category": "Message", - "code": 6026 - }, - "Options:": { - "category": "Message", - "code": 6027 - }, - "Insert command line options and files from a file.": { - "category": "Message", - "code": 6028 - }, - "Version {0}": { - "category": "Message", - "code": 6029 - }, - "Insert command line options and files from a file.": { - "category": "Message", - "code": 6030 - }, - "Use the '{0}' flag to see options.": { - "category": "Message", - "code": 6031 - }, - "{NL}Recompiling ({0}):": { - "category": "Message", - "code": 6032 - }, - "STRING": { - "category": "Message", - "code": 6033 - }, - "KIND": { - "category": "Message", - "code": 6034 - }, - "FILE": { - "category": "Message", - "code": 6035 - }, - "VERSION": { - "category": "Message", - "code": 6036 - }, - "LOCATION": { - "category": "Message", - "code": 6037 - }, - "DIRECTORY": { - "category": "Message", - "code": 6038 - }, - "NUMBER": { - "category": "Message", - "code": 6039 - }, - "Specify the codepage to use when opening source files.": { - "category": "Message", - "code": 6040 - }, - "Additional locations:": { - "category": "Message", - "code": 6041 - }, - "This version of the Javascript runtime does not support the '{0}' function.": { - "category": "Error", - "code": 7000 - }, - "Unknown rule.": { - "category": "Error", - "code": 7002 - }, - "Invalid line number ({0})": { - "category": "Error", - "code": 7003 - }, - "Raise error on expressions and declarations with an implied 'any' type.": { - "category": "Message", - "code": 7004 - }, - "Variable '{0}' implicitly has an 'any' type.": { - "category": "Error", - "code": 7005 - }, - "Parameter '{0}' of '{1}' implicitly has an 'any' type.": { - "category": "Error", - "code": 7006 - }, - "Parameter '{0}' of function type implicitly has an 'any' type.": { - "category": "Error", - "code": 7007 - }, - "Member '{0}' of object type implicitly has an 'any' type.": { - "category": "Error", - "code": 7008 - }, - "'new' expression, which lacks a constructor signature, implicitly has an 'any' type.": { - "category": "Error", - "code": 7009 - }, - "'{0}', which lacks return-type annotation, implicitly has an 'any' return type.":{ - "category": "Error", - "code": 7010 - }, - "Function expression, which lacks return-type annotation, implicitly has an 'any' return type.":{ - "category": "Error", - "code": 7011 - }, - "Parameter '{0}' of lambda function implicitly has an 'any' type.":{ - "category": "Error", - "code": 7012 - }, - "Constructor signature, which lacks return-type annotation, implicitly has an 'any' return type.":{ - "category": "Error", - "code": 7013 - }, - "Lambda Function, which lacks return-type annotation, implicitly has an 'any' return type.":{ - "category": "Error", - "code": 7014 - }, - "Array Literal implicitly has an 'any' type from widening.":{ - "category": "Error", - "code": 7015 - }, - "'{0}', which lacks 'get' accessor and parameter type annotation on 'set' accessor, implicitly has an 'any' type.":{ - "category": "Error", - "code": 7016 - }, - "Index signature of object type implicitly has an 'any' type.": { - "category": "Error", - "code": 7017 - }, - "Object literal's property '{0}' implicitly has an 'any' type from widening.":{ - "category": "Error", - "code": 7018 - }, -} \ No newline at end of file diff --git a/src/services/resources/references.ts b/src/services/resources/references.ts deleted file mode 100644 index 0624c396fb3..00000000000 --- a/src/services/resources/references.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/src/services/services.ts b/src/services/services.ts index 2fc154f610f..12ea84eafc1 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -11,7 +11,8 @@ /// module ts { - export var servicesVersion = "0.4" + /** The version of the language service API */ + export let servicesVersion = "0.4" export interface Node { getSourceFile(): SourceFile; @@ -58,9 +59,10 @@ module ts { } export interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; + /* @internal */ version: string; + /* @internal */ scriptSnapshot: IScriptSnapshot; + /* @internal */ nameTable: Map; + getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -122,12 +124,12 @@ module ts { isLibFile: boolean } - var scanner: Scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ true); + let scanner: Scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ true); - var emptyArray: any[] = []; + let emptyArray: any[] = []; function createNode(kind: SyntaxKind, pos: number, end: number, flags: NodeFlags, parent?: Node): NodeObject { - var node = new (getNodeConstructor(kind))(); + let node = new (getNodeConstructor(kind))(); node.pos = pos; node.end = end; node.flags = flags; @@ -182,8 +184,8 @@ module ts { private addSyntheticNodes(nodes: Node[], pos: number, end: number): number { scanner.setTextPos(pos); while (pos < end) { - var token = scanner.scan(); - var textPos = scanner.getTextPos(); + let token = scanner.scan(); + let textPos = scanner.getTextPos(); nodes.push(createNode(token, pos, textPos, NodeFlags.Synthetic, this)); pos = textPos; } @@ -191,11 +193,10 @@ module ts { } private createSyntaxList(nodes: NodeArray): Node { - var list = createNode(SyntaxKind.SyntaxList, nodes.pos, nodes.end, NodeFlags.Synthetic, this); + let list = createNode(SyntaxKind.SyntaxList, nodes.pos, nodes.end, NodeFlags.Synthetic, this); list._children = []; - var pos = nodes.pos; - for (var i = 0, len = nodes.length; i < len; i++) { - var node = nodes[i]; + let pos = nodes.pos; + for (let node of nodes) { if (pos < node.pos) { pos = this.addSyntheticNodes(list._children, pos, node.pos); } @@ -209,18 +210,19 @@ module ts { } private createChildren(sourceFile?: SourceFile) { + let children: Node[]; if (this.kind >= SyntaxKind.FirstNode) { scanner.setText((sourceFile || this.getSourceFile()).text); - var children: Node[] = []; - var pos = this.pos; - var processNode = (node: Node) => { + children = []; + let pos = this.pos; + let processNode = (node: Node) => { if (pos < node.pos) { pos = this.addSyntheticNodes(children, pos, node.pos); } children.push(node); pos = node.end; }; - var processNodes = (nodes: NodeArray) => { + let processNodes = (nodes: NodeArray) => { if (pos < nodes.pos) { pos = this.addSyntheticNodes(children, pos, nodes.pos); } @@ -252,9 +254,8 @@ module ts { } public getFirstToken(sourceFile?: SourceFile): Node { - var children = this.getChildren(); - for (var i = 0; i < children.length; i++) { - var child = children[i]; + let children = this.getChildren(); + for (let child of children) { if (child.kind < SyntaxKind.FirstNode) { return child; } @@ -264,9 +265,9 @@ module ts { } public getLastToken(sourceFile?: SourceFile): Node { - var children = this.getChildren(sourceFile); - for (var i = children.length - 1; i >= 0; i--) { - var child = children[i]; + let children = this.getChildren(sourceFile); + for (let i = children.length - 1; i >= 0; i--) { + let child = children[i]; if (child.kind < SyntaxKind.FirstNode) { return child; } @@ -312,8 +313,8 @@ module ts { } function getJsDocCommentsFromDeclarations(declarations: Declaration[], name: string, canUseParsedParamTagComments: boolean) { - var documentationComment = []; - var docComments = getJsDocCommentsSeparatedByNewLines(); + let documentationComment = []; + let docComments = getJsDocCommentsSeparatedByNewLines(); ts.forEach(docComments, docComment => { if (documentationComment.length) { documentationComment.push(lineBreakPart()); @@ -324,22 +325,22 @@ module ts { return documentationComment; function getJsDocCommentsSeparatedByNewLines() { - var paramTag = "@param"; - var jsDocCommentParts: SymbolDisplayPart[] = []; + let paramTag = "@param"; + let jsDocCommentParts: SymbolDisplayPart[] = []; ts.forEach(declarations, (declaration, indexOfDeclaration) => { // Make sure we are collecting doc comment from declaration once, // In case of union property there might be same declaration multiple times // which only varies in type parameter - // Eg. var a: Array | Array; a.length + // Eg. let a: Array | Array; a.length // The property length will have two declarations of property length coming // from Array - Array and Array if (indexOf(declarations, declaration) === indexOfDeclaration) { - var sourceFileOfDeclaration = getSourceFileOfNode(declaration); + let sourceFileOfDeclaration = getSourceFileOfNode(declaration); // If it is parameter - try and get the jsDoc comment with @param tag from function declaration's jsDoc comments if (canUseParsedParamTagComments && declaration.kind === SyntaxKind.Parameter) { ts.forEach(getJsDocCommentTextRange(declaration.parent, sourceFileOfDeclaration), jsDocCommentTextRange => { - var cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); + let cleanedParamJsDocComment = getCleanedParamJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedParamJsDocComment) { jsDocCommentParts.push.apply(jsDocCommentParts, cleanedParamJsDocComment); } @@ -359,7 +360,7 @@ module ts { // Get the cleaned js doc comment text from the declaration ts.forEach(getJsDocCommentTextRange( declaration.kind === SyntaxKind.VariableDeclaration ? declaration.parent.parent : declaration, sourceFileOfDeclaration), jsDocCommentTextRange => { - var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); + let cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { jsDocCommentParts.push.apply(jsDocCommentParts, cleanedJsDocComment); } @@ -385,7 +386,7 @@ module ts { } for (; pos < end; pos++) { - var ch = sourceFile.text.charCodeAt(pos); + let ch = sourceFile.text.charCodeAt(pos); if (!isWhiteSpace(ch) || isLineBreak(ch)) { // Either found lineBreak or non whiteSpace return pos; @@ -417,24 +418,27 @@ module ts { function pushDocCommentLineText(docComments: SymbolDisplayPart[], text: string, blankLineCount: number) { // Add the empty lines in between texts - while (blankLineCount--) docComments.push(textPart("")); + while (blankLineCount--) { + docComments.push(textPart("")); + } + docComments.push(textPart(text)); } function getCleanedJsDocComment(pos: number, end: number, sourceFile: SourceFile) { - var spacesToRemoveAfterAsterisk: number; - var docComments: SymbolDisplayPart[] = []; - var blankLineCount = 0; - var isInParamTag = false; + let spacesToRemoveAfterAsterisk: number; + let docComments: SymbolDisplayPart[] = []; + let blankLineCount = 0; + let isInParamTag = false; while (pos < end) { - var docCommentTextOfLine = ""; + let docCommentTextOfLine = ""; // First consume leading white space pos = consumeWhiteSpacesOnTheLine(pos, end, sourceFile); // If the comment starts with '*' consume the spaces on this line if (pos < end && sourceFile.text.charCodeAt(pos) === CharacterCodes.asterisk) { - var lineStartPos = pos + 1; + let lineStartPos = pos + 1; pos = consumeWhiteSpacesOnTheLine(pos + 1, end, sourceFile, spacesToRemoveAfterAsterisk); // Set the spaces to remove after asterisk as margin if not already set @@ -448,7 +452,7 @@ module ts { // Analyse text on this line while (pos < end && !isLineBreak(sourceFile.text.charCodeAt(pos))) { - var ch = sourceFile.text.charAt(pos); + let ch = sourceFile.text.charAt(pos); if (ch === "@") { // If it is @param tag if (isParamTag(pos, end, sourceFile)) { @@ -486,12 +490,12 @@ module ts { } function getCleanedParamJsDocComment(pos: number, end: number, sourceFile: SourceFile) { - var paramHelpStringMargin: number; - var paramDocComments: SymbolDisplayPart[] = []; + let paramHelpStringMargin: number; + let paramDocComments: SymbolDisplayPart[] = []; while (pos < end) { if (isParamTag(pos, end, sourceFile)) { - var blankLineCount = 0; - var recordedParamTag = false; + let blankLineCount = 0; + let recordedParamTag = false; // Consume leading spaces pos = consumeWhiteSpaces(pos + paramTag.length); if (pos >= end) { @@ -501,8 +505,8 @@ module ts { // Ignore type expression if (sourceFile.text.charCodeAt(pos) === CharacterCodes.openBrace) { pos++; - for (var curlies = 1; pos < end; pos++) { - var charCode = sourceFile.text.charCodeAt(pos); + for (let curlies = 1; pos < end; pos++) { + let charCode = sourceFile.text.charCodeAt(pos); // { character means we need to find another } to match the found one if (charCode === CharacterCodes.openBrace) { @@ -545,10 +549,10 @@ module ts { break; } - var paramHelpString = ""; - var firstLineParamHelpStringPos = pos; + let paramHelpString = ""; + let firstLineParamHelpStringPos = pos; while (pos < end) { - var ch = sourceFile.text.charCodeAt(pos); + let ch = sourceFile.text.charCodeAt(pos); // at line break, set this comment line text and go to next line if (isLineBreak(ch)) { @@ -617,15 +621,15 @@ module ts { } // Now consume white spaces max - var startOfLinePos = pos; + let startOfLinePos = pos; pos = consumeWhiteSpacesOnTheLine(pos, end, sourceFile, paramHelpStringMargin); if (pos >= end) { return; } - var consumedSpaces = pos - startOfLinePos; + let consumedSpaces = pos - startOfLinePos; if (consumedSpaces < paramHelpStringMargin) { - var ch = sourceFile.text.charCodeAt(pos); + let ch = sourceFile.text.charCodeAt(pos); if (ch === CharacterCodes.asterisk) { // Consume more spaces after asterisk pos = consumeWhiteSpacesOnTheLine(pos + 1, end, sourceFile, paramHelpStringMargin - consumedSpaces - 1); @@ -726,7 +730,7 @@ module ts { public statements: NodeArray; public endOfFileToken: Node; - public amdDependencies: {name: string; path: string}[]; + public amdDependencies: { name: string; path: string }[]; public amdModuleName: string; public referencedFiles: FileReference[]; @@ -765,90 +769,131 @@ module ts { public getNamedDeclarations() { if (!this.namedDeclarations) { - var sourceFile = this; - var namedDeclarations: Declaration[] = []; - - forEachChild(sourceFile, function visit(node: Node): void { - switch (node.kind) { - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.MethodDeclaration: - case SyntaxKind.MethodSignature: - var functionDeclaration = node; - - if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { - var lastDeclaration = namedDeclarations.length > 0 ? - namedDeclarations[namedDeclarations.length - 1] : - undefined; - - // Check whether this declaration belongs to an "overload group". - if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { - // Overwrite the last declaration if it was an overload - // and this one is an implementation. - if (functionDeclaration.body && !(lastDeclaration).body) { - namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; - } - } - else { - namedDeclarations.push(functionDeclaration); - } - - forEachChild(node, visit); - } - break; - - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.TypeAliasDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.ModuleDeclaration: - case SyntaxKind.ImportEqualsDeclaration: - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - case SyntaxKind.TypeLiteral: - if ((node).name) { - namedDeclarations.push(node); - } - // fall through - case SyntaxKind.Constructor: - case SyntaxKind.VariableStatement: - case SyntaxKind.VariableDeclarationList: - case SyntaxKind.ObjectBindingPattern: - case SyntaxKind.ArrayBindingPattern: - case SyntaxKind.ModuleBlock: - forEachChild(node, visit); - break; - - case SyntaxKind.Block: - if (isFunctionBlock(node)) { - forEachChild(node, visit); - } - break; - - case SyntaxKind.Parameter: - // Only consider properties defined as constructor parameters - if (!(node.flags & NodeFlags.AccessibilityModifier)) { - break; - } - // fall through - case SyntaxKind.VariableDeclaration: - case SyntaxKind.BindingElement: - if (isBindingPattern((node).name)) { - forEachChild((node).name, visit); - break; - } - case SyntaxKind.EnumMember: - case SyntaxKind.PropertyDeclaration: - case SyntaxKind.PropertySignature: - namedDeclarations.push(node); - break; - } - }); - - this.namedDeclarations = namedDeclarations; + this.namedDeclarations = this.computeNamedDeclarations(); } return this.namedDeclarations; } + + private computeNamedDeclarations() { + let namedDeclarations: Declaration[] = []; + + forEachChild(this, visit); + + return namedDeclarations; + + function visit(node: Node): void { + switch (node.kind) { + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + let functionDeclaration = node; + + if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { + let lastDeclaration = namedDeclarations.length > 0 ? + namedDeclarations[namedDeclarations.length - 1] : + undefined; + + // Check whether this declaration belongs to an "overload group". + if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { + // Overwrite the last declaration if it was an overload + // and this one is an implementation. + if (functionDeclaration.body && !(lastDeclaration).body) { + namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; + } + } + else { + namedDeclarations.push(functionDeclaration); + } + + forEachChild(node, visit); + } + break; + + case SyntaxKind.ClassDeclaration: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.TypeAliasDeclaration: + case SyntaxKind.EnumDeclaration: + case SyntaxKind.ModuleDeclaration: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ExportSpecifier: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportClause: + case SyntaxKind.NamespaceImport: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.TypeLiteral: + if ((node).name) { + namedDeclarations.push(node); + } + // fall through + case SyntaxKind.Constructor: + case SyntaxKind.VariableStatement: + case SyntaxKind.VariableDeclarationList: + case SyntaxKind.ObjectBindingPattern: + case SyntaxKind.ArrayBindingPattern: + case SyntaxKind.ModuleBlock: + forEachChild(node, visit); + break; + + case SyntaxKind.Block: + if (isFunctionBlock(node)) { + forEachChild(node, visit); + } + break; + + case SyntaxKind.Parameter: + // Only consider properties defined as constructor parameters + if (!(node.flags & NodeFlags.AccessibilityModifier)) { + break; + } + // fall through + case SyntaxKind.VariableDeclaration: + case SyntaxKind.BindingElement: + if (isBindingPattern((node).name)) { + forEachChild((node).name, visit); + break; + } + case SyntaxKind.EnumMember: + case SyntaxKind.PropertyDeclaration: + case SyntaxKind.PropertySignature: + namedDeclarations.push(node); + break; + + case SyntaxKind.ExportDeclaration: + // Handle named exports case e.g.: + // export {a, b as B} from "mod"; + if ((node).exportClause) { + forEach((node).exportClause.elements, visit); + } + break; + + case SyntaxKind.ImportDeclaration: + let importClause = (node).importClause; + if (importClause) { + // Handle default import case e.g.: + // import d from "mod"; + if (importClause.name) { + namedDeclarations.push(importClause); + } + + // Handle named bindings in imports e.g.: + // import * as NS from "mod"; + // import {a, b as B} from "mod"; + if (importClause.namedBindings) { + if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { + namedDeclarations.push(importClause.namedBindings); + } + else { + forEach((importClause.namedBindings).elements, visit); + } + } + } + break; + } + } + } } // @@ -900,6 +945,7 @@ module ts { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; @@ -1005,6 +1051,11 @@ module ts { containerName: string; } + export interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } + export enum SymbolDisplayPartKind { aliasName, className, @@ -1097,6 +1148,7 @@ module ts { name: string; kind: string; // see ScriptElementKind kindModifiers: string; // see ScriptElementKindModifier, comma separated + sortText: string; } export interface CompletionEntryDetails { @@ -1234,31 +1286,21 @@ module ts { /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ updateDocument( - sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, - version: string, - textChangeRange: TextChangeRange): SourceFile; + version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. @@ -1275,6 +1317,7 @@ module ts { // TODO: move these to enums export class ScriptElementKind { static unknown = ""; + static warning = "warning"; // predefined type (void) or keyword (class) static keyword = "keyword"; @@ -1298,7 +1341,7 @@ module ts { static enumElement = "enum"; // Inside module and script only - // var v = .. + // let v = .. static variableElement = "var"; // Inside function @@ -1382,14 +1425,6 @@ module ts { /// Language Service - interface CompletionSession { - fileName: string; // the file where the completion was requested - position: number; // position in the file where the completion was requested - entries: CompletionEntry[]; // entries for this completion - symbols: Map; // symbols by entry name map - typeChecker: TypeChecker; // the typeChecker used to generate this completion - } - interface FormattingOptions { useTabs: boolean; spacesPerTab: number; @@ -1406,7 +1441,11 @@ module ts { interface DocumentRegistryEntry { sourceFile: SourceFile; - refCount: number; + + // The number of language services that this source file is referenced in. When no more + // language services are referencing the file, then the file can be removed from the + // registry. + languageServiceRefCount: number; owners: string[]; } @@ -1438,7 +1477,7 @@ module ts { } // If the parent is not sourceFile or module block it is local variable - for (var parent = declaration.parent; !isFunctionBlock(parent); parent = parent.parent) { + for (let parent = declaration.parent; !isFunctionBlock(parent); parent = parent.parent) { // Reached source file or module block if (parent.kind === SyntaxKind.SourceFile || parent.kind === SyntaxKind.ModuleBlock) { return false; @@ -1490,9 +1529,9 @@ module ts { this.fileNameToEntry = {}; // Initialize the list with the root file names - var rootFileNames = host.getScriptFileNames(); - for (var i = 0, n = rootFileNames.length; i < n; i++) { - this.createEntry(rootFileNames[i]); + let rootFileNames = host.getScriptFileNames(); + for (let fileName of rootFileNames) { + this.createEntry(fileName); } // store the compilation settings @@ -1504,8 +1543,8 @@ module ts { } private createEntry(fileName: string) { - var entry: HostFileInformation; - var scriptSnapshot = this.host.getScriptSnapshot(fileName); + let entry: HostFileInformation; + let scriptSnapshot = this.host.getScriptSnapshot(fileName); if (scriptSnapshot) { entry = { hostFileName: fileName, @@ -1534,7 +1573,7 @@ module ts { } public getRootFileNames(): string[] { - var fileNames: string[] = []; + let fileNames: string[] = []; forEachKey(this.fileNameToEntry, key => { if (hasProperty(this.fileNameToEntry, key) && this.fileNameToEntry[key]) @@ -1545,12 +1584,12 @@ module ts { } public getVersion(fileName: string): string { - var file = this.getEntry(fileName); + let file = this.getEntry(fileName); return file && file.version; } public getScriptSnapshot(fileName: string): IScriptSnapshot { - var file = this.getEntry(fileName); + let file = this.getEntry(fileName); return file && file.scriptSnapshot; } } @@ -1567,14 +1606,14 @@ module ts { } public getCurrentSourceFile(fileName: string): SourceFile { - var scriptSnapshot = this.host.getScriptSnapshot(fileName); + let scriptSnapshot = this.host.getScriptSnapshot(fileName); if (!scriptSnapshot) { // The host does not know about this file. throw new Error("Could not find file: '" + fileName + "'."); } - var version = this.host.getScriptVersion(fileName); - var sourceFile: SourceFile; + let version = this.host.getScriptVersion(fileName); + let sourceFile: SourceFile; if (this.currentFileName !== fileName) { // This is a new file, just parse it @@ -1582,7 +1621,7 @@ module ts { } else if (this.currentFileVersion !== version) { // This is the same file, just a newer version. Incrementally parse the file. - var editRange = scriptSnapshot.getChangeRange(this.currentFileScriptSnapshot); + let editRange = scriptSnapshot.getChangeRange(this.currentFileScriptSnapshot); sourceFile = updateLanguageServiceSourceFile(this.currentSourceFile, scriptSnapshot, version, editRange); } @@ -1603,15 +1642,70 @@ module ts { sourceFile.scriptSnapshot = scriptSnapshot; } + /* + * This function will compile source text from 'input' argument using specified compiler options. + * If not options are provided - it will use a set of default compiler options. + * Extra compiler options that will unconditionally be used bu this function are: + * - separateCompilation = true + * - allowNonTsExtensions = true + */ + export function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string { + let options = compilerOptions ? clone(compilerOptions) : getDefaultCompilerOptions(); + + options.separateCompilation = true; + + // Filename can be non-ts file. + options.allowNonTsExtensions = true; + + // Parse + var inputFileName = fileName || "module.ts"; + var sourceFile = createSourceFile(inputFileName, input, options.target); + + // Store syntactic diagnostics + if (diagnostics && sourceFile.parseDiagnostics) { + diagnostics.push(...sourceFile.parseDiagnostics); + } + + // Output + let outputText: string; + + // Create a compilerHost object to allow the compiler to read and write files + var compilerHost: CompilerHost = { + getSourceFile: (fileName, target) => fileName === inputFileName ? sourceFile : undefined, + writeFile: (name, text, writeByteOrderMark) => { + Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + outputText = text; + }, + getDefaultLibFileName: () => "lib.d.ts", + useCaseSensitiveFileNames: () => false, + getCanonicalFileName: fileName => fileName, + getCurrentDirectory: () => "", + getNewLine: () => "\r\n" + }; + + var program = createProgram([inputFileName], options, compilerHost); + + if (diagnostics) { + diagnostics.push(...program.getGlobalDiagnostics()); + } + + // Emit + program.emit(); + + Debug.assert(outputText !== undefined, "Output generation failed"); + + return outputText; + } + export function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile { - var sourceFile = createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), scriptTarget, setNodeParents); + let sourceFile = createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), scriptTarget, setNodeParents); setSourceFileFields(sourceFile, scriptSnapshot, version); // after full parsing we can use table with interned strings as name table sourceFile.nameTable = sourceFile.identifiers; return sourceFile; } - export var disableIncrementalParsing = false; + export let disableIncrementalParsing = false; export function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile { // If we were given a text change range, and our version or open-ness changed, then @@ -1620,7 +1714,7 @@ module ts { if (version !== sourceFile.version) { // Once incremental parsing is ready, then just call into this function. if (!disableIncrementalParsing) { - var newSourceFile = updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks); + let newSourceFile = updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks); setSourceFileFields(newSourceFile, scriptSnapshot, version); // after incremental parsing nameTable might not be up-to-date // drop it so it can be lazily recreated later @@ -1635,15 +1729,17 @@ module ts { } export function createDocumentRegistry(): DocumentRegistry { - var buckets: Map> = {}; + // Maps from compiler setting target (ES3, ES5, etc.) to all the cached documents we have + // for those settings. + let buckets: Map> = {}; function getKeyFromCompilationSettings(settings: CompilerOptions): string { return "_" + settings.target; // + "|" + settings.propagateEnumConstantoString() } function getBucketForCompilationSettings(settings: CompilerOptions, createIfMissing: boolean): Map { - var key = getKeyFromCompilationSettings(settings); - var bucket = lookUp(buckets, key); + let key = getKeyFromCompilationSettings(settings); + let bucket = lookUp(buckets, key); if (!bucket && createIfMissing) { buckets[key] = bucket = {}; } @@ -1651,14 +1747,14 @@ module ts { } function reportStats() { - var bucketInfoArray = Object.keys(buckets).filter(name => name && name.charAt(0) === '_').map(name => { - var entries = lookUp(buckets, name); - var sourceFiles: { name: string; refCount: number; references: string[]; }[] = []; - for (var i in entries) { - var entry = entries[i]; + let bucketInfoArray = Object.keys(buckets).filter(name => name && name.charAt(0) === '_').map(name => { + let entries = lookUp(buckets, name); + let sourceFiles: { name: string; refCount: number; references: string[]; }[] = []; + for (let i in entries) { + let entry = entries[i]; sourceFiles.push({ name: i, - refCount: entry.refCount, + refCount: entry.languageServiceRefCount, references: entry.owners.slice(0) }); } @@ -1671,55 +1767,66 @@ module ts { return JSON.stringify(bucketInfoArray, null, 2); } - function acquireDocument( - fileName: string, - compilationSettings: CompilerOptions, - scriptSnapshot: IScriptSnapshot, - version: string): SourceFile { - - var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ true); - var entry = lookUp(bucket, fileName); - if (!entry) { - var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents:*/ false); - - bucket[fileName] = entry = { - sourceFile: sourceFile, - refCount: 0, - owners: [] - }; - } - entry.refCount++; - - return entry.sourceFile; + function acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ true); } - function updateDocument( - sourceFile: SourceFile, + function updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile { + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ false); + } + + function acquireOrUpdateDocument( fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, - textChangeRange: TextChangeRange - ): SourceFile { + acquiring: boolean): SourceFile { - var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ false); - Debug.assert(bucket !== undefined); - var entry = lookUp(bucket, fileName); - Debug.assert(entry !== undefined); + let bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ true); + let entry = lookUp(bucket, fileName); + if (!entry) { + Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); + + // Have never seen this file with these settings. Create a new source file for it. + let sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents:*/ false); + + bucket[fileName] = entry = { + sourceFile: sourceFile, + languageServiceRefCount: 0, + owners: [] + }; + } + else { + // We have an entry for this file. However, it may be for a different version of + // the script snapshot. If so, update it appropriately. Otherwise, we can just + // return it as is. + if (entry.sourceFile.version !== version) { + entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, + scriptSnapshot.getChangeRange(entry.sourceFile.scriptSnapshot)); + } + } + + // If we're acquiring, then this is the first time this LS is asking for this document. + // Increase our ref count so we know there's another LS using the document. If we're + // not acquiring, then that means the LS is 'updating' the file instead, and that means + // it has already acquired the document previously. As such, we do not need to increase + // the ref count. + if (acquiring) { + entry.languageServiceRefCount++; + } - entry.sourceFile = updateLanguageServiceSourceFile(entry.sourceFile, scriptSnapshot, version, textChangeRange); return entry.sourceFile; } function releaseDocument(fileName: string, compilationSettings: CompilerOptions): void { - var bucket = getBucketForCompilationSettings(compilationSettings, false); + let bucket = getBucketForCompilationSettings(compilationSettings, false); Debug.assert(bucket !== undefined); - var entry = lookUp(bucket, fileName); - entry.refCount--; + let entry = lookUp(bucket, fileName); + entry.languageServiceRefCount--; - Debug.assert(entry.refCount >= 0); - if (entry.refCount === 0) { + Debug.assert(entry.languageServiceRefCount >= 0); + if (entry.languageServiceRefCount === 0) { delete bucket[fileName]; } } @@ -1733,18 +1840,18 @@ module ts { } export function preProcessFile(sourceText: string, readImportFiles = true): PreProcessedFileInfo { - var referencedFiles: FileReference[] = []; - var importedFiles: FileReference[] = []; - var isNoDefaultLib = false; + let referencedFiles: FileReference[] = []; + let importedFiles: FileReference[] = []; + let isNoDefaultLib = false; function processTripleSlashDirectives(): void { - var commentRanges = getLeadingCommentRanges(sourceText, 0); + let commentRanges = getLeadingCommentRanges(sourceText, 0); forEach(commentRanges, commentRange => { - var comment = sourceText.substring(commentRange.pos, commentRange.end); - var referencePathMatchResult = getFileReferenceFromReferencePath(comment, commentRange); + let comment = sourceText.substring(commentRange.pos, commentRange.end); + let referencePathMatchResult = getFileReferenceFromReferencePath(comment, commentRange); if (referencePathMatchResult) { isNoDefaultLib = referencePathMatchResult.isNoDefaultLib; - var fileReference = referencePathMatchResult.fileReference; + let fileReference = referencePathMatchResult.fileReference; if (fileReference) { referencedFiles.push(fileReference); } @@ -1752,33 +1859,140 @@ module ts { }); } + function recordModuleName() { + let importPath = scanner.getTokenValue(); + let pos = scanner.getTokenPos(); + importedFiles.push({ + fileName: importPath, + pos: pos, + end: pos + importPath.length + }); + } + function processImport(): void { scanner.setText(sourceText); - var token = scanner.scan(); + let token = scanner.scan(); // Look for: - // import foo = module("foo"); + // import "mod"; + // import d from "mod" + // import {a as A } from "mod"; + // import * as NS from "mod" + // import d, {a, b as B} from "mod" + // import i = require("mod"); + // + // export * from "mod" + // export {a as b} from "mod" + while (token !== SyntaxKind.EndOfFileToken) { if (token === SyntaxKind.ImportKeyword) { token = scanner.scan(); - if (token === SyntaxKind.Identifier) { - token = scanner.scan(); - if (token === SyntaxKind.EqualsToken) { + if (token === SyntaxKind.StringLiteral) { + // import "mod"; + recordModuleName(); + continue; + } + else { + if (token === SyntaxKind.Identifier) { token = scanner.scan(); - if (token === SyntaxKind.RequireKeyword) { + if (token === SyntaxKind.FromKeyword) { token = scanner.scan(); - if (token === SyntaxKind.OpenParenToken) { + if (token === SyntaxKind.StringLiteral) { + // import d from "mod"; + recordModuleName(); + continue + } + } + else if (token === SyntaxKind.EqualsToken) { + token = scanner.scan(); + if (token === SyntaxKind.RequireKeyword) { token = scanner.scan(); - if (token === SyntaxKind.StringLiteral) { - var importPath = scanner.getTokenValue(); - var pos = scanner.getTokenPos(); - importedFiles.push({ - fileName: importPath, - pos: pos, - end: pos + importPath.length - }); + if (token === SyntaxKind.OpenParenToken) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // import i = require("mod"); + recordModuleName(); + continue; + } } } } + else if (token === SyntaxKind.CommaToken) { + // consume comma and keep going + token = scanner.scan(); + } + else { + // unknown syntax + continue; + } + } + + if (token === SyntaxKind.OpenBraceToken) { + token = scanner.scan(); + // consume "{ a as B, c, d as D}" clauses + while (token !== SyntaxKind.CloseBraceToken) { + token = scanner.scan(); + } + + if (token === SyntaxKind.CloseBraceToken) { + token = scanner.scan(); + if (token === SyntaxKind.FromKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // import {a as A} from "mod"; + // import d, {a, b as B} from "mod" + recordModuleName(); + } + } + } + } + else if (token === SyntaxKind.AsteriskToken) { + token = scanner.scan(); + if (token === SyntaxKind.AsKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.Identifier) { + token = scanner.scan(); + if (token === SyntaxKind.FromKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // import * as NS from "mod" + // import d, * as NS from "mod" + recordModuleName(); + } + } + } + } + } + } + } + else if (token === SyntaxKind.ExportKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.OpenBraceToken) { + token = scanner.scan(); + // consume "{ a as B, c, d as D}" clauses + while (token !== SyntaxKind.CloseBraceToken) { + token = scanner.scan(); + } + + if (token === SyntaxKind.CloseBraceToken) { + token = scanner.scan(); + if (token === SyntaxKind.FromKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // export {a as A} from "mod"; + // export {a, b as B} from "mod" + recordModuleName(); + } + } + } + } + else if (token === SyntaxKind.AsteriskToken) { + token = scanner.scan(); + if (token === SyntaxKind.FromKeyword) { + token = scanner.scan(); + if (token === SyntaxKind.StringLiteral) { + // export * from "mod" + recordModuleName(); + } } } } @@ -1822,7 +2036,7 @@ module ts { * Note: 'node' cannot be a SourceFile. */ function isLabeledBy(node: Node, labelName: string) { - for (var owner = node.parent; owner.kind === SyntaxKind.LabeledStatement; owner = owner.parent) { + for (let owner = node.parent; owner.kind === SyntaxKind.LabeledStatement; owner = owner.parent) { if ((owner).label.text === labelName) { return true; } @@ -1863,7 +2077,7 @@ module ts { function isNameOfFunctionDeclaration(node: Node): boolean { return node.kind === SyntaxKind.Identifier && - isAnyFunction(node.parent) && (node.parent).name === node; + isFunctionLike(node.parent) && (node.parent).name === node; } /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */ @@ -1916,8 +2130,8 @@ module ts { return true; } else if (position === comment.end) { - var text = sourceFile.text; - var width = comment.end - comment.pos; + let text = sourceFile.text; + let width = comment.end - comment.pos; // is single line comment or just /* if (width <= 2 || text.charCodeAt(comment.pos + 1) === CharacterCodes.slash) { return true; @@ -1949,12 +2163,13 @@ module ts { } // A cache of completion entries for keywords, these do not change between sessions - var keywordCompletions: CompletionEntry[] = []; - for (var i = SyntaxKind.FirstKeyword; i <= SyntaxKind.LastKeyword; i++) { + let keywordCompletions: CompletionEntry[] = []; + for (let i = SyntaxKind.FirstKeyword; i <= SyntaxKind.LastKeyword; i++) { keywordCompletions.push({ name: tokenToString(i), kind: ScriptElementKind.keyword, - kindModifiers: ScriptElementKindModifier.none + kindModifiers: ScriptElementKindModifier.none, + sortText: "0" }); } @@ -2010,20 +2225,25 @@ module ts { case SyntaxKind.TypeParameter: return ScriptElementKind.typeParameterElement; case SyntaxKind.EnumMember: return ScriptElementKind.variableElement; case SyntaxKind.Parameter: return (node.flags & NodeFlags.AccessibilityModifier) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; + case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportSpecifier: + case SyntaxKind.ImportClause: + case SyntaxKind.ExportSpecifier: + case SyntaxKind.NamespaceImport: + return ScriptElementKind.alias; } return ScriptElementKind.unknown; } export function createLanguageService(host: LanguageServiceHost, documentRegistry: DocumentRegistry = createDocumentRegistry()): LanguageService { - var syntaxTreeCache: SyntaxTreeCache = new SyntaxTreeCache(host); - var ruleProvider: formatting.RulesProvider; - var program: Program; + let syntaxTreeCache: SyntaxTreeCache = new SyntaxTreeCache(host); + let ruleProvider: formatting.RulesProvider; + let program: Program; // this checker is used to answer all LS questions except errors - var typeInfoResolver: TypeChecker; - var useCaseSensitivefileNames = false; - var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); - var activeCompletionSession: CompletionSession; // The current active completion session, used to get the completion entry details + let typeInfoResolver: TypeChecker; + let useCaseSensitivefileNames = false; + let cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); // Check if the localized messages json is set, otherwise query the host for it if (!localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) { @@ -2042,7 +2262,7 @@ module ts { function getValidSourceFile(fileName: string): SourceFile { fileName = normalizeSlashes(fileName); - var sourceFile = program.getSourceFile(getCanonicalFileName(fileName)); + let sourceFile = program.getSourceFile(getCanonicalFileName(fileName)); if (!sourceFile) { throw new Error("Could not find file: '" + fileName + "'."); } @@ -2061,7 +2281,7 @@ module ts { function synchronizeHostData(): void { // Get a fresh cache of the host information - var hostCache = new HostCache(host); + let hostCache = new HostCache(host); // If the program is already up-to-date, we can reuse it if (programUpToDate()) { @@ -2074,12 +2294,12 @@ module ts { // the program points to old source files that have been invalidated because of // incremental parsing. - var oldSettings = program && program.getCompilerOptions(); - var newSettings = hostCache.compilationSettings(); - var changesInCompilationSettingsAffectSyntax = oldSettings && oldSettings.target !== newSettings.target; + let oldSettings = program && program.getCompilerOptions(); + let newSettings = hostCache.compilationSettings(); + let changesInCompilationSettingsAffectSyntax = oldSettings && oldSettings.target !== newSettings.target; // Now create a new compiler - var newProgram = createProgram(hostCache.getRootFileNames(), newSettings, { + let newProgram = createProgram(hostCache.getRootFileNames(), newSettings, { getSourceFile: getOrCreateSourceFile, getCancellationToken: () => cancellationToken, getCanonicalFileName: (fileName) => useCaseSensitivefileNames ? fileName : fileName.toLowerCase(), @@ -2093,9 +2313,9 @@ module ts { // Release any files we have acquired in the old program but are // not part of the new program. if (program) { - var oldSourceFiles = program.getSourceFiles(); - for (var i = 0, n = oldSourceFiles.length; i < n; i++) { - var fileName = oldSourceFiles[i].fileName; + let oldSourceFiles = program.getSourceFiles(); + for (let oldSourceFile of oldSourceFiles) { + let fileName = oldSourceFile.fileName; if (!newProgram.getSourceFile(fileName) || changesInCompilationSettingsAffectSyntax) { documentRegistry.releaseDocument(fileName, oldSettings); } @@ -2111,7 +2331,7 @@ module ts { // The program is asking for this file, check first if the host can locate it. // If the host can not locate the file, then it does not exist. return undefined // to the program to allow reporting of errors for missing files. - var hostFileInformation = hostCache.getOrCreateEntry(fileName); + let hostFileInformation = hostCache.getOrCreateEntry(fileName); if (!hostFileInformation) { return undefined; } @@ -2120,19 +2340,34 @@ module ts { // it is safe to reuse the souceFiles; if not, then the shape of the AST can change, and the oldSourceFile // can not be reused. we have to dump all syntax trees and create new ones. if (!changesInCompilationSettingsAffectSyntax) { - // Check if the old program had this file already - var oldSourceFile = program && program.getSourceFile(fileName); + let oldSourceFile = program && program.getSourceFile(fileName); if (oldSourceFile) { - // This SourceFile is safe to reuse, return it - if (sourceFileUpToDate(oldSourceFile)) { - return oldSourceFile; - } - - // We have an older version of the sourceFile, incrementally parse the changes - var textChangeRange = hostFileInformation.scriptSnapshot.getChangeRange(oldSourceFile.scriptSnapshot); - return documentRegistry.updateDocument(oldSourceFile, fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version, textChangeRange); + // We already had a source file for this file name. Go to the registry to + // ensure that we get the right up to date version of it. We need this to + // address the following 'race'. Specifically, say we have the following: + // + // LS1 + // \ + // DocumentRegistry + // / + // LS2 + // + // Each LS has a reference to file 'foo.ts' at version 1. LS2 then updates + // it's version of 'foo.ts' to version 2. This will cause LS2 and the + // DocumentRegistry to have version 2 of the document. HOwever, LS1 will + // have version 1. And *importantly* this source file will be *corrupt*. + // The act of creating version 2 of the file irrevocably damages the version + // 1 file. + // + // So, later when we call into LS1, we need to make sure that it doesn't use + // it's source file any more, and instead defers to DocumentRegistry to get + // either version 1, version 2 (or some other version) depending on what the + // host says should be used. + return documentRegistry.updateDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } + + // We didn't already have the file. Fall through and acquire it from the registry. } // Could not find this file in the old program, create a new SourceFile for it. @@ -2150,14 +2385,14 @@ module ts { } // If number of files in the program do not match, it is not up-to-date - var rootFileNames = hostCache.getRootFileNames(); + let rootFileNames = hostCache.getRootFileNames(); if (program.getSourceFiles().length !== rootFileNames.length) { return false; } // If any file is not up-to-date, then the whole program is not up-to-date - for (var i = 0, n = rootFileNames.length; i < n; i++) { - if (!sourceFileUpToDate(program.getSourceFile(rootFileNames[i]))) { + for (let fileName of rootFileNames) { + if (!sourceFileUpToDate(program.getSourceFile(fileName))) { return false; } } @@ -2186,8 +2421,8 @@ module ts { function dispose(): void { if (program) { - forEach(program.getSourceFiles(), - (f) => { documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions()); }); + forEach(program.getSourceFiles(), f => + documentRegistry.releaseDocument(f.fileName, program.getCompilerOptions())); } } @@ -2198,26 +2433,193 @@ module ts { return program.getSyntacticDiagnostics(getValidSourceFile(fileName)); } + function isJavaScript(fileName: string) { + return fileExtensionIs(fileName, ".js"); + } + /** * getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors * If '-d' enabled, report both semantic and emitter errors */ - function getSemanticDiagnostics(fileName: string) { + function getSemanticDiagnostics(fileName: string): Diagnostic[] { synchronizeHostData(); - var targetSourceFile = getValidSourceFile(fileName); + let targetSourceFile = getValidSourceFile(fileName); + + // For JavaScript files, we don't want to report the normal typescript semantic errors. + // Instead, we just report errors for using TypeScript-only constructs from within a + // JavaScript file. + if (isJavaScript(fileName)) { + return getJavaScriptSemanticDiagnostics(targetSourceFile); + } // Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file. // Therefore only get diagnostics for given file. - var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile); + let semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile); if (!program.getCompilerOptions().declaration) { return semanticDiagnostics; } // If '-d' is enabled, check for emitter error. One example of emitter error is export class implements non-export interface - var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile); - return semanticDiagnostics.concat(declarationDiagnostics); + let declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile); + return concatenate(semanticDiagnostics, declarationDiagnostics); + } + + function getJavaScriptSemanticDiagnostics(sourceFile: SourceFile): Diagnostic[] { + let diagnostics: Diagnostic[] = []; + walk(sourceFile); + + return diagnostics; + + function walk(node: Node): boolean { + if (!node) { + return false; + } + + switch (node.kind) { + case SyntaxKind.ImportEqualsDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.import_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.ExportAssignment: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.ClassDeclaration: + let classDeclaration = node; + if (checkModifiers(classDeclaration.modifiers) || + checkTypeParameters(classDeclaration.typeParameters)) { + return true; + } + break; + case SyntaxKind.HeritageClause: + let heritageClause = node; + if (heritageClause.token === SyntaxKind.ImplementsKeyword) { + diagnostics.push(createDiagnosticForNode(node, Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case SyntaxKind.InterfaceDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.ModuleDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.TypeAliasDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + case SyntaxKind.Constructor: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.FunctionExpression: + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.ArrowFunction: + case SyntaxKind.FunctionDeclaration: + let functionDeclaration = node; + if (checkModifiers(functionDeclaration.modifiers) || + checkTypeParameters(functionDeclaration.typeParameters) || + checkTypeAnnotation(functionDeclaration.type)) { + return true; + } + break; + case SyntaxKind.VariableStatement: + let variableStatement = node; + if (checkModifiers(variableStatement.modifiers)) { + return true; + } + break; + case SyntaxKind.VariableDeclaration: + let variableDeclaration = node; + if (checkTypeAnnotation(variableDeclaration.type)) { + return true; + } + break; + case SyntaxKind.CallExpression: + case SyntaxKind.NewExpression: + let expression = node; + if (expression.typeArguments && expression.typeArguments.length > 0) { + let start = expression.typeArguments.pos; + diagnostics.push(createFileDiagnostic(sourceFile, start, expression.typeArguments.end - start, + Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case SyntaxKind.Parameter: + let parameter = node; + if (parameter.modifiers) { + let start = parameter.modifiers.pos; + diagnostics.push(createFileDiagnostic(sourceFile, start, parameter.modifiers.end - start, + Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.questionToken) { + diagnostics.push(createDiagnosticForNode(parameter.questionToken, Diagnostics.can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.type) { + diagnostics.push(createDiagnosticForNode(parameter.type, Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case SyntaxKind.PropertyDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.EnumDeclaration: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.TypeAssertionExpression: + let typeAssertionExpression = node; + diagnostics.push(createDiagnosticForNode(typeAssertionExpression.type, Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); + return true; + case SyntaxKind.Decorator: + diagnostics.push(createDiagnosticForNode(node, Diagnostics.decorators_can_only_be_used_in_a_ts_file)); + return true; + } + + return forEachChild(node, walk); + } + + function checkTypeParameters(typeParameters: NodeArray): boolean { + if (typeParameters) { + let start = typeParameters.pos; + diagnostics.push(createFileDiagnostic(sourceFile, start, typeParameters.end - start, Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + + function checkTypeAnnotation(type: TypeNode): boolean { + if (type) { + diagnostics.push(createDiagnosticForNode(type, Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + + return false; + } + + function checkModifiers(modifiers: ModifiersArray): boolean { + if (modifiers) { + for (let modifier of modifiers) { + switch (modifier.kind) { + case SyntaxKind.PublicKeyword: + case SyntaxKind.PrivateKeyword: + case SyntaxKind.ProtectedKeyword: + case SyntaxKind.DeclareKeyword: + diagnostics.push(createDiagnosticForNode(modifier, Diagnostics._0_can_only_be_used_in_a_ts_file, tokenToString(modifier.kind))); + return true; + + // These are all legal modifiers. + case SyntaxKind.StaticKeyword: + case SyntaxKind.ExportKeyword: + case SyntaxKind.ConstKeyword: + case SyntaxKind.DefaultKeyword: + } + } + } + + return false; + } } function getCompilerOptionsDiagnostics() { @@ -2226,145 +2628,182 @@ module ts { } /// Completion - function getValidCompletionEntryDisplayName(symbol: Symbol, target: ScriptTarget): string { - var displayName = symbol.getName(); - if (displayName && displayName.length > 0) { - var firstCharCode = displayName.charCodeAt(0); + function getCompletionEntryDisplayNameForSymbol(symbol: Symbol, target: ScriptTarget, performCharacterChecks: boolean): string { + let displayName = symbol.getName(); + if (displayName) { + // If this is the default export, get the name of the declaration if it exists + if (displayName === "default") { + let localSymbol = getLocalSymbolForExportDefault(symbol); + if (localSymbol && localSymbol.name) { + displayName = symbol.valueDeclaration.localSymbol.name; + } + } + + let firstCharCode = displayName.charCodeAt(0); // First check of the displayName is not external module; if it is an external module, it is not valid entry if ((symbol.flags & SymbolFlags.Namespace) && (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) { // If the symbol is external module, don't show it in the completion list - // (i.e declare module "http" { var x; } | // <= request completion here, "http" should not be there) + // (i.e declare module "http" { let x; } | // <= request completion here, "http" should not be there) return undefined; } - - if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) && - (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) { - // If the user entered name for the symbol was quoted, removing the quotes is not enough, as the name could be an - // invalid identifier name. We need to check if whatever was inside the quotes is actually a valid identifier name. - displayName = displayName.substring(1, displayName.length - 1); - } - - var isValid = isIdentifierStart(displayName.charCodeAt(0), target); - for (var i = 1, n = displayName.length; isValid && i < n; i++) { - isValid = isIdentifierPart(displayName.charCodeAt(i), target); - } - - - if (isValid) { - return unescapeIdentifier(displayName); - } } - return undefined; + return getCompletionEntryDisplayName(displayName, target, performCharacterChecks); + } + + function getCompletionEntryDisplayName(displayName: string, target: ScriptTarget, performCharacterChecks: boolean): string { + if (!displayName) { + return undefined; + } + + let firstCharCode = displayName.charCodeAt(0); + if (displayName.length >= 2 && + firstCharCode === displayName.charCodeAt(displayName.length - 1) && + (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) { + // If the user entered name for the symbol was quoted, removing the quotes is not enough, as the name could be an + // invalid identifier name. We need to check if whatever was inside the quotes is actually a valid identifier name. + displayName = displayName.substring(1, displayName.length - 1); + } + + if (!displayName) { + return undefined; + } + + if (performCharacterChecks) { + if (!isIdentifierStart(displayName.charCodeAt(0), target)) { + return undefined; + } + + for (let i = 1, n = displayName.length; i < n; i++) { + if (!isIdentifierPart(displayName.charCodeAt(i), target)) { + return undefined; + } + } + } + + return unescapeIdentifier(displayName); } function createCompletionEntry(symbol: Symbol, typeChecker: TypeChecker, location: Node): CompletionEntry { // Try to get a valid display name for this symbol, if we could not find one, then ignore it. // We would like to only show things that can be added after a dot, so for instance numeric properties can // not be accessed with a dot (a.1 <- invalid) - var displayName = getValidCompletionEntryDisplayName(symbol, program.getCompilerOptions().target); + let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true); if (!displayName) { return undefined; } - // TODO(drosen): Right now we just permit *all* semantic meanings when calling 'getSymbolKind' - // which is permissible given that it is backwards compatible; but really we should consider - // passing the meaning for the node so that we don't report that a suggestion for a value is an interface. - // We COULD also just do what 'getSymbolModifiers' does, which is to use the first declaration. + // TODO(drosen): Right now we just permit *all* semantic meanings when calling + // 'getSymbolKind' which is permissible given that it is backwards compatible; but + // really we should consider passing the meaning for the node so that we don't report + // that a suggestion for a value is an interface. We COULD also just do what + // 'getSymbolModifiers' does, which is to use the first declaration. + + // Use a 'sortText' of 0' so that all symbol completion entries come before any other + // entries (like JavaScript identifier entries). return { name: displayName, kind: getSymbolKind(symbol, typeChecker, location), - kindModifiers: getSymbolModifiers(symbol) + kindModifiers: getSymbolModifiers(symbol), + sortText: "0", }; } - function getCompletionsAtPosition(fileName: string, position: number) { - synchronizeHostData(); + function getCompletionData(fileName: string, position: number) { + let syntacticStart = new Date().getTime(); + let sourceFile = getValidSourceFile(fileName); - var syntacticStart = new Date().getTime(); - var sourceFile = getValidSourceFile(fileName); + let start = new Date().getTime(); + let currentToken = getTokenAtPosition(sourceFile, position); + log("getCompletionData: Get current token: " + (new Date().getTime() - start)); - var start = new Date().getTime(); - var currentToken = getTokenAtPosition(sourceFile, position); - log("getCompletionsAtPosition: Get current token: " + (new Date().getTime() - start)); - - var start = new Date().getTime(); + start = new Date().getTime(); // Completion not allowed inside comments, bail out if this is the case - var insideComment = isInsideComment(sourceFile, currentToken, position); - log("getCompletionsAtPosition: Is inside comment: " + (new Date().getTime() - start)); + let insideComment = isInsideComment(sourceFile, currentToken, position); + log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); if (insideComment) { log("Returning an empty list because completion was inside a comment."); return undefined; } - // The decision to provide completion depends on the previous token, so find it - // Note: previousToken can be undefined if we are the beginning of the file - var start = new Date().getTime(); - var previousToken = findPrecedingToken(position, sourceFile); - log("getCompletionsAtPosition: Get previous token 1: " + (new Date().getTime() - start)); + start = new Date().getTime(); + let previousToken = findPrecedingToken(position, sourceFile); + log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); - // The caret is at the end of an identifier; this is a partial identifier that we want to complete: e.g. a.toS| - // Skip this partial identifier to the previous token - if (previousToken && position <= previousToken.end && previousToken.kind === SyntaxKind.Identifier) { - var start = new Date().getTime(); - previousToken = findPrecedingToken(previousToken.pos, sourceFile); - log("getCompletionsAtPosition: Get previous token 2: " + (new Date().getTime() - start)); + // The decision to provide completion depends on the contextToken, which is determined through the previousToken. + // Note: 'previousToken' (and thus 'contextToken') can be undefined if we are the beginning of the file + let contextToken = previousToken; + + // Check if the caret is at the end of an identifier; this is a partial identifier that we want to complete: e.g. a.toS| + // Skip this partial identifier and adjust the contextToken to the token that precedes it. + if (contextToken && position <= contextToken.end && isWord(contextToken.kind)) { + let start = new Date().getTime(); + contextToken = findPrecedingToken(contextToken.getFullStart(), sourceFile); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start)); } // Check if this is a valid completion location - if (previousToken && isCompletionListBlocker(previousToken)) { + if (contextToken && isCompletionListBlocker(contextToken)) { log("Returning an empty list because completion was requested in an invalid position."); return undefined; } - // Find the node where completion is requested on, in the case of a completion after a dot, it is the member access expression - // other wise, it is a request for all visible symbols in the scope, and the node is the current location - var node: Node; - var isRightOfDot: boolean; - if (previousToken && previousToken.kind === SyntaxKind.DotToken && previousToken.parent.kind === SyntaxKind.PropertyAccessExpression) { - node = (previousToken.parent).expression; + // Find the node where completion is requested on, in the case of a completion after + // a dot, it is the member access expression other wise, it is a request for all + // visible symbols in the scope, and the node is the current location. + let node = currentToken; + let isRightOfDot = false; + if (contextToken && contextToken.kind === SyntaxKind.DotToken && contextToken.parent.kind === SyntaxKind.PropertyAccessExpression) { + node = (contextToken.parent).expression; isRightOfDot = true; } - else if (previousToken && previousToken.kind === SyntaxKind.DotToken && previousToken.parent.kind === SyntaxKind.QualifiedName) { - node = (previousToken.parent).left; + else if (contextToken && contextToken.kind === SyntaxKind.DotToken && contextToken.parent.kind === SyntaxKind.QualifiedName) { + node = (contextToken.parent).left; isRightOfDot = true; } + + let location = getTouchingPropertyName(sourceFile, position); + var target = program.getCompilerOptions().target; + + let semanticStart = new Date().getTime(); + let isMemberCompletion: boolean; + let isNewIdentifierLocation: boolean; + let symbols: Symbol[] = []; + + if (isRightOfDot) { + getTypeScriptMemberSymbols(); + } else { - node = currentToken; - isRightOfDot = false; + // For JavaScript or TypeScript, if we're not after a dot, then just try to get the + // global symbols in scope. These results should be valid for either language as + // the set of symbols that can be referenced from this location. + if (!tryGetGlobalSymbols()) { + return undefined; + } } - // Clear the current activeCompletionSession for this session - activeCompletionSession = { - fileName: fileName, - position: position, - entries: [], - symbols: {}, - typeChecker: typeInfoResolver - }; - log("getCompletionsAtPosition: Syntactic work: " + (new Date().getTime() - syntacticStart)); + log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart)); - var location = getTouchingPropertyName(sourceFile, position); - // Populate the completion list - var semanticStart = new Date().getTime(); - if (isRightOfDot) { + return { symbols, isMemberCompletion, isNewIdentifierLocation, location, isRightOfDot }; + + function getTypeScriptMemberSymbols(): void { // Right of dot member completion list - var symbols: Symbol[] = []; - var isMemberCompletion = true; - var isNewIdentifierLocation = false; + isMemberCompletion = true; + isNewIdentifierLocation = false; if (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName || node.kind === SyntaxKind.PropertyAccessExpression) { - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); // This is an alias, follow what it aliases - if (symbol && symbol.flags & SymbolFlags.Import) { + if (symbol && symbol.flags & SymbolFlags.Alias) { symbol = typeInfoResolver.getAliasedSymbol(symbol); } if (symbol && symbol.flags & SymbolFlags.HasExports) { // Extract module or enum members - forEachValue(symbol.exports, symbol => { + let exportedSymbols = typeInfoResolver.getExportsOfModule(symbol); + forEach(exportedSymbols, symbol => { if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) { symbols.push(symbol); } @@ -2372,7 +2811,7 @@ module ts { } } - var type = typeInfoResolver.getTypeAtLocation(node); + let type = typeInfoResolver.getTypeAtLocation(node); if (type) { // Filter private properties forEach(type.getApparentProperties(), symbol => { @@ -2381,95 +2820,144 @@ module ts { } }); } - - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); } - else { - var containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(previousToken); + + function tryGetGlobalSymbols(): boolean { + let containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(contextToken); if (containingObjectLiteral) { // Object literal expression, look up possible property names from contextual type isMemberCompletion = true; isNewIdentifierLocation = true; - var contextualType = typeInfoResolver.getContextualType(containingObjectLiteral); + let contextualType = typeInfoResolver.getContextualType(containingObjectLiteral); if (!contextualType) { - return undefined; + return false; } - var contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); + let contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); if (contextualTypeMembers && contextualTypeMembers.length > 0) { // Add filtered items to the completion list - var filteredMembers = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); - getCompletionEntriesFromSymbols(filteredMembers, activeCompletionSession); + symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); + } + } + else if (getAncestor(contextToken, SyntaxKind.ImportClause)) { + // cursor is in import clause + // try to show exported member for imported module + isMemberCompletion = true; + isNewIdentifierLocation = true; + if (showCompletionsInImportsClause(contextToken)) { + let importDeclaration = getAncestor(contextToken, SyntaxKind.ImportDeclaration); + Debug.assert(importDeclaration !== undefined); + + let exports: Symbol[]; + if (importDeclaration.moduleSpecifier) { + let moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier); + if (moduleSpecifierSymbol) { + exports = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol); + } + } + + //let exports = typeInfoResolver.getExportsOfImportDeclaration(importDeclaration); + symbols = exports ? filterModuleExports(exports, importDeclaration) : emptyArray; } } else { - // Get scope members + // Get all entities in the current scope. isMemberCompletion = false; - isNewIdentifierLocation = isNewIdentifierDefinitionLocation(previousToken); + isNewIdentifierLocation = isNewIdentifierDefinitionLocation(contextToken); + + if (previousToken !== contextToken) { + Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); + } + // We need to find the node that will give us an appropriate scope to begin + // aggregating completion candidates. This is achieved in 'getScopeNode' + // by finding the first node that encompasses a position, accounting for whether a node + // is "complete" to decide whether a position belongs to the node. + // + // However, at the end of an identifier, we are interested in the scope of the identifier + // itself, but fall outside of the identifier. For instance: + // + // xyz => x$ + // + // the cursor is outside of both the 'x' and the arrow function 'xyz => x', + // so 'xyz' is not returned in our results. + // + // We define 'adjustedPosition' so that we may appropriately account for + // being at the end of an identifier. The intention is that if requesting completion + // at the end of an identifier, it should be effectively equivalent to requesting completion + // anywhere inside/at the beginning of the identifier. So in the previous case, the + // 'adjustedPosition' will work as if requesting completion in the following: + // + // xyz => $x + // + // If previousToken !== contextToken, then + // - 'contextToken' was adjusted to the token prior to 'previousToken' + // because we were at the end of an identifier. + // - 'previousToken' is defined. + let adjustedPosition = previousToken !== contextToken ? + previousToken.getStart() : + position; + + let scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile; /// TODO filter meaning based on the current context - var symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Import; - var symbols = typeInfoResolver.getSymbolsInScope(node, symbolMeanings); - - getCompletionEntriesFromSymbols(symbols, activeCompletionSession); + let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias; + symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings); } + + return true; } - // Add keywords if this is not a member completion list - if (!isMemberCompletion) { - Array.prototype.push.apply(activeCompletionSession.entries, keywordCompletions); - } - log("getCompletionsAtPosition: Semantic work: " + (new Date().getTime() - semanticStart)); - - return { - isMemberCompletion, - isNewIdentifierLocation, - isBuilder : isNewIdentifierDefinitionLocation, // temporary property used to match VS implementation - entries: activeCompletionSession.entries - }; - - function getCompletionEntriesFromSymbols(symbols: Symbol[], session: CompletionSession): void { - var start = new Date().getTime(); - forEach(symbols, symbol => { - var entry = createCompletionEntry(symbol, session.typeChecker, location); - if (entry) { - var id = escapeIdentifier(entry.name); - if (!lookUp(session.symbols, id)) { - session.entries.push(entry); - session.symbols[id] = symbol; - } - } - }); - log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + /** + * Finds the first node that "embraces" the position, so that one may + * accurately aggregate locals from the closest containing scope. + */ + function getScopeNode(initialToken: Node, position: number, sourceFile: SourceFile) { + var scope = initialToken; + while (scope && !positionBelongsToNode(scope, position, sourceFile)) { + scope = scope.parent; + } + return scope; } function isCompletionListBlocker(previousToken: Node): boolean { - var start = new Date().getTime(); - var result = isInStringOrRegularExpressionOrTemplateLiteral(previousToken) || + let start = new Date().getTime(); + let result = isInStringOrRegularExpressionOrTemplateLiteral(previousToken) || isIdentifierDefinitionLocation(previousToken) || isRightOfIllegalDot(previousToken); log("getCompletionsAtPosition: isCompletionListBlocker: " + (new Date().getTime() - start)); return result; } + function showCompletionsInImportsClause(node: Node): boolean { + if (node) { + // import {| + // import {a,| + if (node.kind === SyntaxKind.OpenBraceToken || node.kind === SyntaxKind.CommaToken) { + return node.parent.kind === SyntaxKind.NamedImports; + } + } + + return false; + } + function isNewIdentifierDefinitionLocation(previousToken: Node): boolean { if (previousToken) { - var containingNodeKind = previousToken.parent.kind; + let containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case SyntaxKind.CommaToken: return containingNodeKind === SyntaxKind.CallExpression // func( a, | || containingNodeKind === SyntaxKind.Constructor // constructor( a, | public, protected, private keywords are allowed here, so show completion || containingNodeKind === SyntaxKind.NewExpression // new C(a, | || containingNodeKind === SyntaxKind.ArrayLiteralExpression // [a, | - || containingNodeKind === SyntaxKind.BinaryExpression; // var x = (a, | + || containingNodeKind === SyntaxKind.BinaryExpression; // let x = (a, | case SyntaxKind.OpenParenToken: return containingNodeKind === SyntaxKind.CallExpression // func( | || containingNodeKind === SyntaxKind.Constructor // constructor( | || containingNodeKind === SyntaxKind.NewExpression // new C(a| - || containingNodeKind === SyntaxKind.ParenthesizedExpression; // var x = (a| + || containingNodeKind === SyntaxKind.ParenthesizedExpression; // let x = (a| case SyntaxKind.OpenBracketToken: return containingNodeKind === SyntaxKind.ArrayLiteralExpression; // [ | @@ -2484,8 +2972,8 @@ module ts { return containingNodeKind === SyntaxKind.ClassDeclaration; // class A{ | case SyntaxKind.EqualsToken: - return containingNodeKind === SyntaxKind.VariableDeclaration // var x = a| - || containingNodeKind === SyntaxKind.BinaryExpression; // x = a| + return containingNodeKind === SyntaxKind.VariableDeclaration // let x = a| + || containingNodeKind === SyntaxKind.BinaryExpression; // x = a| case SyntaxKind.TemplateHead: return containingNodeKind === SyntaxKind.TemplateExpression; // `aa ${| @@ -2517,8 +3005,8 @@ module ts { || isTemplateLiteralKind(previousToken.kind)) { // The position has to be either: 1. entirely within the token text, or // 2. at the end position of an unterminated token. - var start = previousToken.getStart(); - var end = previousToken.getEnd(); + let start = previousToken.getStart(); + let end = previousToken.getEnd(); if (start < position && position < end) { return true; @@ -2535,11 +3023,11 @@ module ts { // The locations in an object literal expression that are applicable for completion are property name definition locations. if (previousToken) { - var parent = previousToken.parent; + let parent = previousToken.parent; switch (previousToken.kind) { - case SyntaxKind.OpenBraceToken: // var x = { | - case SyntaxKind.CommaToken: // var x = { a: 0, | + case SyntaxKind.OpenBraceToken: // let x = { | + case SyntaxKind.CommaToken: // let x = { a: 0, | if (parent && parent.kind === SyntaxKind.ObjectLiteralExpression) { return parent; } @@ -2569,7 +3057,7 @@ module ts { function isIdentifierDefinitionLocation(previousToken: Node): boolean { if (previousToken) { - var containingNodeKind = previousToken.parent.kind; + let containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case SyntaxKind.CommaToken: return containingNodeKind === SyntaxKind.VariableDeclaration || @@ -2596,13 +3084,13 @@ module ts { case SyntaxKind.OpenBraceToken: return containingNodeKind === SyntaxKind.EnumDeclaration || // enum a { | containingNodeKind === SyntaxKind.InterfaceDeclaration || // interface a { | - containingNodeKind === SyntaxKind.TypeLiteral || // var x : { | + containingNodeKind === SyntaxKind.TypeLiteral || // let x : { | containingNodeKind === SyntaxKind.ObjectBindingPattern; // function func({ x| case SyntaxKind.SemicolonToken: return containingNodeKind === SyntaxKind.PropertySignature && (previousToken.parent.parent.kind === SyntaxKind.InterfaceDeclaration || // interface a { f; | - previousToken.parent.parent.kind === SyntaxKind.TypeLiteral); // var x : { a; | + previousToken.parent.parent.kind === SyntaxKind.TypeLiteral); // let x : { a; | case SyntaxKind.LessThanToken: return containingNodeKind === SyntaxKind.ClassDeclaration || // class A< | @@ -2657,19 +3145,41 @@ module ts { function isRightOfIllegalDot(previousToken: Node): boolean { if (previousToken && previousToken.kind === SyntaxKind.NumericLiteral) { - var text = previousToken.getFullText(); + let text = previousToken.getFullText(); return text.charAt(text.length - 1) === "."; } return false; } + function filterModuleExports(exports: Symbol[], importDeclaration: ImportDeclaration): Symbol[] { + let exisingImports: Map = {}; + + if (!importDeclaration.importClause) { + return exports; + } + + if (importDeclaration.importClause.namedBindings && + importDeclaration.importClause.namedBindings.kind === SyntaxKind.NamedImports) { + + forEach((importDeclaration.importClause.namedBindings).elements, el => { + let name = el.propertyName || el.name; + exisingImports[name.text] = true; + }); + } + + if (isEmpty(exisingImports)) { + return exports; + } + return filter(exports, e => !lookUp(exisingImports, e.name)); + } + function filterContextualMembersList(contextualMemberSymbols: Symbol[], existingMembers: Declaration[]): Symbol[] { if (!existingMembers || existingMembers.length === 0) { return contextualMemberSymbols; } - var existingMemberNames: Map = {}; + let existingMemberNames: Map = {}; forEach(existingMembers, m => { if (m.kind !== SyntaxKind.PropertyAssignment && m.kind !== SyntaxKind.ShorthandPropertyAssignment) { // Ignore omitted expressions for missing members in the object literal @@ -2685,7 +3195,7 @@ module ts { existingMemberNames[(m.name).text] = true; }); - var filteredMembers: Symbol[] = []; + let filteredMembers: Symbol[] = []; forEach(contextualMemberSymbols, s => { if (!existingMemberNames[s.name]) { filteredMembers.push(s); @@ -2696,38 +3206,116 @@ module ts { } } - function getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails { - // Note: No need to call synchronizeHostData, as we have captured all the data we need - // in the getCompletionsAtPosition earlier - var sourceFile = getValidSourceFile(fileName); + function getCompletionsAtPosition(fileName: string, position: number): CompletionInfo { + synchronizeHostData(); - var session = activeCompletionSession; - - // Ensure that the current active completion session is still valid for this request - if (!session || session.fileName !== fileName || session.position !== position) { + let completionData = getCompletionData(fileName, position); + if (!completionData) { return undefined; } - var symbol = lookUp(activeCompletionSession.symbols, escapeIdentifier(entryName)); - if (symbol) { - var location = getTouchingPropertyName(sourceFile, position); - var completionEntry = createCompletionEntry(symbol, session.typeChecker, location); - // TODO(drosen): Right now we just permit *all* semantic meanings when calling 'getSymbolKind' - // which is permissible given that it is backwards compatible; but really we should consider - // passing the meaning for the node so that we don't report that a suggestion for a value is an interface. - // We COULD also just do what 'getSymbolModifiers' does, which is to use the first declaration. - Debug.assert(session.typeChecker.getTypeOfSymbolAtLocation(symbol, location) !== undefined, "Could not find type for symbol"); - var displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, session.typeChecker, location, SemanticMeaning.All); - return { - name: entryName, - kind: displayPartsDocumentationsAndSymbolKind.symbolKind, - kindModifiers: completionEntry.kindModifiers, - displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, - documentation: displayPartsDocumentationsAndSymbolKind.documentation - }; + let { symbols, isMemberCompletion, isNewIdentifierLocation, location, isRightOfDot } = completionData; + + let entries: CompletionEntry[]; + if (isRightOfDot && isJavaScript(fileName)) { + entries = getCompletionEntriesFromSymbols(symbols); + addRange(entries, getJavaScriptCompletionEntries()); } else { - // No symbol, it is a keyword + if (!symbols || symbols.length === 0) { + return undefined; + } + + entries = getCompletionEntriesFromSymbols(symbols); + } + + // Add keywords if this is not a member completion list + if (!isMemberCompletion) { + addRange(entries, keywordCompletions); + } + + return { isMemberCompletion, isNewIdentifierLocation, entries }; + + function getJavaScriptCompletionEntries(): CompletionEntry[] { + let entries: CompletionEntry[] = []; + let allNames: Map = {}; + let target = program.getCompilerOptions().target; + + for (let sourceFile of program.getSourceFiles()) { + let nameTable = getNameTable(sourceFile); + for (let name in nameTable) { + if (!allNames[name]) { + allNames[name] = name; + let displayName = getCompletionEntryDisplayName(name, target, /*performCharacterChecks:*/ true); + if (displayName) { + let entry = { + name: displayName, + kind: ScriptElementKind.warning, + kindModifiers: "", + sortText: "1" + }; + entries.push(entry); + } + } + } + } + + return entries; + } + + function getCompletionEntriesFromSymbols(symbols: Symbol[]): CompletionEntry[] { + let start = new Date().getTime(); + var entries: CompletionEntry[] = []; + + if (symbols) { + var nameToSymbol: Map = {}; + for (let symbol of symbols) { + let entry = createCompletionEntry(symbol, typeInfoResolver, location); + if (entry) { + let id = escapeIdentifier(entry.name); + if (!lookUp(nameToSymbol, id)) { + entries.push(entry); + nameToSymbol[id] = symbol; + } + } + } + } + + log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start)); + return entries; + } + } + + function getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails { + synchronizeHostData(); + + // Compute all the completion symbols again. + let completionData = getCompletionData(fileName, position); + if (completionData) { + let { symbols, location } = completionData; + + // Find the symbol with the matching entry name. + let target = program.getCompilerOptions().target; + // We don't need to perform character checks here because we're only comparing the + // name against 'entryName' (which is known to be good), not building a new + // completion entry. + let symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false) === entryName ? s : undefined); + + if (symbol) { + let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, typeInfoResolver, location, SemanticMeaning.All); + return { + name: entryName, + kind: displayPartsDocumentationsAndSymbolKind.symbolKind, + kindModifiers: getSymbolModifiers(symbol), + displayParts: displayPartsDocumentationsAndSymbolKind.displayParts, + documentation: displayPartsDocumentationsAndSymbolKind.documentation + }; + } + } + + // Didn't find a symbol with this name. See if we can find a keyword instead. + let keywordCompletion = forEach(keywordCompletions, c => c.name === entryName); + if (keywordCompletion) { return { name: entryName, kind: ScriptElementKind.keyword, @@ -2736,11 +3324,13 @@ module ts { documentation: undefined }; } + + return undefined; } // TODO(drosen): use contextual SemanticMeaning. function getSymbolKind(symbol: Symbol, typeResolver: TypeChecker, location: Node): string { - var flags = symbol.getFlags(); + let flags = symbol.getFlags(); if (flags & SymbolFlags.Class) return ScriptElementKind.classElement; if (flags & SymbolFlags.Enum) return ScriptElementKind.enumElement; @@ -2748,11 +3338,11 @@ module ts { if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement; if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; - var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location); + let result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location); if (result === ScriptElementKind.unknown) { if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; if (flags & SymbolFlags.EnumMember) return ScriptElementKind.variableElement; - if (flags & SymbolFlags.Import) return ScriptElementKind.alias; + if (flags & SymbolFlags.Alias) return ScriptElementKind.alias; if (flags & SymbolFlags.Module) return ScriptElementKind.moduleElement; } @@ -2787,8 +3377,8 @@ module ts { if (flags & SymbolFlags.Property) { if (flags & SymbolFlags.UnionProperty) { // If union property is result of union of non method (property/accessors/variables), it is labeled as property - var unionPropertyKind = forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => { - var rootSymbolFlags = rootSymbol.getFlags(); + let unionPropertyKind = forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => { + let rootSymbolFlags = rootSymbol.getFlags(); if (rootSymbolFlags & (SymbolFlags.PropertyOrAccessor | SymbolFlags.Variable)) { return ScriptElementKind.memberVariableElement; } @@ -2797,7 +3387,7 @@ module ts { if (!unionPropertyKind) { // If this was union of all methods, //make sure it has call signatures before we can label it as method - var typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location); + let typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location); if (typeOfUnionProperty.getCallSignatures().length) { return ScriptElementKind.memberFunctionElement; } @@ -2812,7 +3402,7 @@ module ts { } function getTypeKind(type: Type): string { - var flags = type.getFlags(); + let flags = type.getFlags(); if (flags & TypeFlags.Enum) return ScriptElementKind.enumElement; if (flags & TypeFlags.Class) return ScriptElementKind.classElement; @@ -2834,22 +3424,26 @@ module ts { typeResolver: TypeChecker, location: Node, // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location semanticMeaning = getMeaningFromLocation(location)) { - var displayParts: SymbolDisplayPart[] = []; - var documentation: SymbolDisplayPart[]; - var symbolFlags = symbol.flags; - var symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); - var hasAddedSymbolInfo: boolean; + + let displayParts: SymbolDisplayPart[] = []; + let documentation: SymbolDisplayPart[]; + let symbolFlags = symbol.flags; + let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); + let hasAddedSymbolInfo: boolean; + let type: Type; + // Class at constructor site need to be shown as constructor apart from property,method, vars - if (symbolKind !== ScriptElementKind.unknown || symbolFlags & SymbolFlags.Class || symbolFlags & SymbolFlags.Import) { + if (symbolKind !== ScriptElementKind.unknown || symbolFlags & SymbolFlags.Class || symbolFlags & SymbolFlags.Alias) { // If it is accessor they are allowed only if location is at name of the accessor if (symbolKind === ScriptElementKind.memberGetAccessorElement || symbolKind === ScriptElementKind.memberSetAccessorElement) { symbolKind = ScriptElementKind.memberVariableElement; } - var type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + let signature: Signature; + type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); if (type) { if (location.parent && location.parent.kind === SyntaxKind.PropertyAccessExpression) { - var right = (location.parent).name; + let right = (location.parent).name; // Either the location is on the right of a property access, or on the left and the right is missing if (right === location || (right && right.getFullWidth() === 0)) { location = location.parent; @@ -2857,7 +3451,7 @@ module ts { } // try get the call/construct signature from the type if it matches - var callExpression: CallExpression; + let callExpression: CallExpression; if (location.kind === SyntaxKind.CallExpression || location.kind === SyntaxKind.NewExpression) { callExpression = location; } @@ -2866,15 +3460,15 @@ module ts { } if (callExpression) { - var candidateSignatures: Signature[] = []; + let candidateSignatures: Signature[] = []; signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures); if (!signature && candidateSignatures.length) { // Use the first candidate: signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === SyntaxKind.NewExpression || callExpression.expression.kind === SyntaxKind.SuperKeyword; - var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); + let useConstructSignatures = callExpression.kind === SyntaxKind.NewExpression || callExpression.expression.kind === SyntaxKind.SuperKeyword; + let allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!contains(allSignatures, signature.target || signature)) { // Get the first signature if there @@ -2887,11 +3481,9 @@ module ts { symbolKind = ScriptElementKind.constructorImplementationElement; addPrefixForAnyFunctionOrVar(type.symbol, symbolKind); } - else if (symbolFlags & SymbolFlags.Import) { + else if (symbolFlags & SymbolFlags.Alias) { symbolKind = ScriptElementKind.alias; - displayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); - displayParts.push(textPart(symbolKind)); - displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); + pushTypePart(symbolKind); displayParts.push(spacePart()); if (useConstructSignatures) { displayParts.push(keywordPart(SyntaxKind.NewKeyword)); @@ -2933,9 +3525,8 @@ module ts { else if ((isNameOfFunctionDeclaration(location) && !(symbol.flags & SymbolFlags.Accessor)) || // name of function declaration (location.kind === SyntaxKind.ConstructorKeyword && location.parent.kind === SyntaxKind.Constructor)) { // At constructor keyword of constructor declaration // get the signature from the declaration and write it - var signature: Signature; - var functionDeclaration = location.parent; - var allSignatures = functionDeclaration.kind === SyntaxKind.Constructor ? type.getConstructSignatures() : type.getCallSignatures(); + let functionDeclaration = location.parent; + let allSignatures = functionDeclaration.kind === SyntaxKind.Constructor ? type.getConstructSignatures() : type.getCallSignatures(); if (!typeResolver.isImplementationOfOverload(functionDeclaration)) { signature = typeResolver.getSignatureFromDeclaration(functionDeclaration); } @@ -3015,8 +3606,8 @@ module ts { } else { // Method/function type parameter - var signatureDeclaration = getDeclarationOfKind(symbol, SyntaxKind.TypeParameter).parent; - var signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); + let signatureDeclaration = getDeclarationOfKind(symbol, SyntaxKind.TypeParameter).parent; + let signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); if (signatureDeclaration.kind === SyntaxKind.ConstructSignature) { displayParts.push(keywordPart(SyntaxKind.NewKeyword)); displayParts.push(spacePart()); @@ -3029,9 +3620,9 @@ module ts { } if (symbolFlags & SymbolFlags.EnumMember) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); - var declaration = symbol.declarations[0]; + let declaration = symbol.declarations[0]; if (declaration.kind === SyntaxKind.EnumMember) { - var constantValue = typeResolver.getConstantValue(declaration); + let constantValue = typeResolver.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); @@ -3040,14 +3631,14 @@ module ts { } } } - if (symbolFlags & SymbolFlags.Import) { + if (symbolFlags & SymbolFlags.Alias) { addNewLineIfDisplayPartsExist(); displayParts.push(keywordPart(SyntaxKind.ImportKeyword)); displayParts.push(spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, declaration => { if (declaration.kind === SyntaxKind.ImportEqualsDeclaration) { - var importEqualsDeclaration = declaration; + let importEqualsDeclaration = declaration; if (isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); @@ -3058,7 +3649,7 @@ module ts { displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); } else { - var internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); + let internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); if (internalAliasSymbol) { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); @@ -3082,7 +3673,7 @@ module ts { displayParts.push(spacePart()); // If the type is type parameter, format it specially if (type.symbol && type.symbol.flags & SymbolFlags.TypeParameter) { - var typeParameterParts = mapToDisplayParts(writer => { + let typeParameterParts = mapToDisplayParts(writer => { typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration); }); displayParts.push.apply(displayParts, typeParameterParts); @@ -3097,7 +3688,7 @@ module ts { symbolFlags & SymbolFlags.Signature || symbolFlags & SymbolFlags.Accessor || symbolKind === ScriptElementKind.memberFunctionElement) { - var allSignatures = type.getCallSignatures(); + let allSignatures = type.getCallSignatures(); addSignatureDisplayParts(allSignatures[0], allSignatures); } } @@ -3120,7 +3711,7 @@ module ts { } function addFullSymbolName(symbol: Symbol, enclosingDeclaration?: Node) { - var fullSymbolDisplayParts = symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined, + let fullSymbolDisplayParts = symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments | SymbolFormatFlags.UseOnlyExternalAliasing); displayParts.push.apply(displayParts, fullSymbolDisplayParts); } @@ -3128,14 +3719,29 @@ module ts { function addPrefixForAnyFunctionOrVar(symbol: Symbol, symbolKind: string) { addNewLineIfDisplayPartsExist(); if (symbolKind) { - displayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); - displayParts.push(textPart(symbolKind)); - displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); + pushTypePart(symbolKind); displayParts.push(spacePart()); addFullSymbolName(symbol); } } + function pushTypePart(symbolKind: string) { + switch (symbolKind) { + case ScriptElementKind.variableElement: + case ScriptElementKind.functionElement: + case ScriptElementKind.letElement: + case ScriptElementKind.constElement: + case ScriptElementKind.constructorImplementationElement: + displayParts.push(textOrKeywordPart(symbolKind)); + return; + default: + displayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); + displayParts.push(textOrKeywordPart(symbolKind)); + displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); + return; + } + } + function addSignatureDisplayParts(signature: Signature, allSignatures: Signature[], flags?: TypeFormatFlags) { displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | TypeFormatFlags.WriteTypeArgumentsOfSignature)); if (allSignatures.length > 1) { @@ -3151,7 +3757,7 @@ module ts { } function writeTypeParametersOfSymbol(symbol: Symbol, enclosingDeclaration: Node) { - var typeParameterParts = mapToDisplayParts(writer => { + let typeParameterParts = mapToDisplayParts(writer => { typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration); }); displayParts.push.apply(displayParts, typeParameterParts); @@ -3161,13 +3767,13 @@ module ts { function getQuickInfoAtPosition(fileName: string, position: number): QuickInfo { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); - var node = getTouchingPropertyName(sourceFile, position); + let sourceFile = getValidSourceFile(fileName); + let node = getTouchingPropertyName(sourceFile, position); if (!node) { return undefined; } - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { // Try getting just type at this position and show switch (node.kind) { @@ -3177,7 +3783,7 @@ module ts { case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: // For the identifiers/this/super etc get the type at position - var type = typeInfoResolver.getTypeAtLocation(node); + let type = typeInfoResolver.getTypeAtLocation(node); if (type) { return { kind: ScriptElementKind.unknown, @@ -3192,7 +3798,7 @@ module ts { return undefined; } - var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node); + let displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node); return { kind: displayPartsDocumentationsAndKind.symbolKind, kindModifiers: getSymbolModifiers(symbol), @@ -3202,28 +3808,39 @@ module ts { }; } + function createDefinitionInfo(node: Node, symbolKind: string, symbolName: string, containerName: string): DefinitionInfo { + return { + fileName: node.getSourceFile().fileName, + textSpan: createTextSpanFromBounds(node.getStart(), node.getEnd()), + kind: symbolKind, + name: symbolName, + containerKind: undefined, + containerName + }; + } + /// Goto definition function getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[] { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); - var node = getTouchingPropertyName(sourceFile, position); + let node = getTouchingPropertyName(sourceFile, position); if (!node) { return undefined; } // Labels if (isJumpStatementTarget(node)) { - var labelName = (node).text; - var label = getTargetLabel((node.parent), (node).text); - return label ? [getDefinitionInfo(label, ScriptElementKind.label, labelName, /*containerName*/ undefined)] : undefined; + let labelName = (node).text; + let label = getTargetLabel((node.parent), (node).text); + return label ? [createDefinitionInfo(label, ScriptElementKind.label, labelName, /*containerName*/ undefined)] : undefined; } /// Triple slash reference comments - var comment = forEach(sourceFile.referencedFiles, r => (r.pos <= position && position < r.end) ? r : undefined); + let comment = forEach(sourceFile.referencedFiles, r => (r.pos <= position && position < r.end) ? r : undefined); if (comment) { - var referenceFile = tryResolveScriptReference(program, sourceFile, comment); + let referenceFile = tryResolveScriptReference(program, sourceFile, comment); if (referenceFile) { return [{ fileName: referenceFile.fileName, @@ -3237,7 +3854,7 @@ module ts { return undefined; } - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); // Could not find a symbol e.g. node is string or number keyword, // or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol @@ -3245,7 +3862,16 @@ module ts { return undefined; } - var result: DefinitionInfo[] = []; + // If this is an alias, and the request came at the declaration location + // get the aliased symbol instead. This allows for goto def on an import e.g. + // import {A, B} from "mod"; + // to jump to the implementation directly. + if (symbol.flags & SymbolFlags.Alias) { + let declaration = symbol.declarations[0]; + if (node.kind === SyntaxKind.Identifier && node.parent === declaration) { + symbol = typeInfoResolver.getAliasedSymbol(symbol); + } + } // Because name in short-hand property assignment has two different meanings: property name and property value, // using go-to-definition at such position should go to the variable declaration of the property value rather than @@ -3253,74 +3879,42 @@ module ts { // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. if (node.parent.kind === SyntaxKind.ShorthandPropertyAssignment) { - var shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); - var shorthandDeclarations = shorthandSymbol.getDeclarations(); - var shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); - var shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); - var shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); - forEach(shorthandDeclarations, declaration => { - result.push(getDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName)); - }); - return result + let shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); + if (!shorthandSymbol) { + return []; + } + + let shorthandDeclarations = shorthandSymbol.getDeclarations(); + let shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); + let shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); + let shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); + return map(shorthandDeclarations, + declaration => createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName)); } - var declarations = symbol.getDeclarations(); - var symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol - var symbolKind = getSymbolKind(symbol, typeInfoResolver, node); - var containerSymbol = symbol.parent; - var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; + let result: DefinitionInfo[] = []; + let declarations = symbol.getDeclarations(); + let symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol + let symbolKind = getSymbolKind(symbol, typeInfoResolver, node); + let containerSymbol = symbol.parent; + let containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { // Just add all the declarations. forEach(declarations, declaration => { - result.push(getDefinitionInfo(declaration, symbolKind, symbolName, containerName)); + result.push(createDefinitionInfo(declaration, symbolKind, symbolName, containerName)); }); } return result; - function getDefinitionInfo(node: Node, symbolKind: string, symbolName: string, containerName: string): DefinitionInfo { - return { - fileName: node.getSourceFile().fileName, - textSpan: createTextSpanFromBounds(node.getStart(), node.getEnd()), - kind: symbolKind, - name: symbolName, - containerKind: undefined, - containerName - }; - } - - function tryAddSignature(signatureDeclarations: Declaration[], selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { - var declarations: Declaration[] = []; - var definition: Declaration; - - forEach(signatureDeclarations, d => { - if ((selectConstructors && d.kind === SyntaxKind.Constructor) || - (!selectConstructors && (d.kind === SyntaxKind.FunctionDeclaration || d.kind === SyntaxKind.MethodDeclaration || d.kind === SyntaxKind.MethodSignature))) { - declarations.push(d); - if ((d).body) definition = d; - } - }); - - if (definition) { - result.push(getDefinitionInfo(definition, symbolKind, symbolName, containerName)); - return true; - } - else if (declarations.length) { - result.push(getDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); - return true; - } - - return false; - } - function tryAddConstructSignature(symbol: Symbol, location: Node, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { // Applicable only if we are in a new expression, or we are on a constructor declaration // and in either case the symbol has a construct signature definition, i.e. class if (isNewExpressionTarget(location) || location.kind === SyntaxKind.ConstructorKeyword) { if (symbol.flags & SymbolFlags.Class) { - var classDeclaration = symbol.getDeclarations()[0]; + let classDeclaration = symbol.getDeclarations()[0]; Debug.assert(classDeclaration && classDeclaration.kind === SyntaxKind.ClassDeclaration); return tryAddSignature(classDeclaration.members, /*selectConstructors*/ true, symbolKind, symbolName, containerName, result); @@ -3335,22 +3929,62 @@ module ts { } return false; } + + function tryAddSignature(signatureDeclarations: Declaration[], selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { + let declarations: Declaration[] = []; + let definition: Declaration; + + forEach(signatureDeclarations, d => { + if ((selectConstructors && d.kind === SyntaxKind.Constructor) || + (!selectConstructors && (d.kind === SyntaxKind.FunctionDeclaration || d.kind === SyntaxKind.MethodDeclaration || d.kind === SyntaxKind.MethodSignature))) { + declarations.push(d); + if ((d).body) definition = d; + } + }); + + if (definition) { + result.push(createDefinitionInfo(definition, symbolKind, symbolName, containerName)); + return true; + } + else if (declarations.length) { + result.push(createDefinitionInfo(declarations[declarations.length - 1], symbolKind, symbolName, containerName)); + return true; + } + + return false; + } + } + + function getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] { + let results = getOccurrencesAtPositionCore(fileName, position); + + if (results) { + let sourceFile = getCanonicalFileName(normalizeSlashes(fileName)); + + // ensure the results are in the file we're interested in + results.forEach((value) => { + let targetFile = getCanonicalFileName(normalizeSlashes(value.fileName)); + Debug.assert(sourceFile == targetFile, `Unexpected file in results. Found results in ${targetFile} expected only results in ${sourceFile}.`); + }); + } + + return results; } /// References and Occurrences - function getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] { + function getOccurrencesAtPositionCore(fileName: string, position: number): ReferenceEntry[] { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); - var node = getTouchingWord(sourceFile, position); + let node = getTouchingWord(sourceFile, position); if (!node) { return undefined; } if (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ThisKeyword || node.kind === SyntaxKind.SuperKeyword || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { - return getReferencesForNode(node, [sourceFile], /*searchOnlyInCurrentFile*/ true, /*findInStrings:*/ false, /*findInComments:*/ false); + return convertReferences(getReferencesForNode(node, [sourceFile], /*searchOnlyInCurrentFile*/ true, /*findInStrings:*/ false, /*findInComments:*/ false)); } switch (node.kind) { @@ -3388,8 +4022,8 @@ module ts { break; case SyntaxKind.CaseKeyword: case SyntaxKind.DefaultKeyword: - if (hasKind(parent(parent(node)), SyntaxKind.SwitchStatement)) { - return getSwitchCaseDefaultOccurrences(node.parent.parent); + if (hasKind(parent(parent(parent(node))), SyntaxKind.SwitchStatement)) { + return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case SyntaxKind.BreakKeyword: @@ -3431,7 +4065,7 @@ module ts { return undefined; function getIfElseOccurrences(ifStatement: IfStatement): ReferenceEntry[] { - var keywords: Node[] = []; + let keywords: Node[] = []; // Traverse upwards through all parent if-statements linked by their else-branches. while (hasKind(ifStatement.parent, SyntaxKind.IfStatement) && (ifStatement.parent).elseStatement === ifStatement) { @@ -3440,11 +4074,11 @@ module ts { // Now traverse back down through the else branches, aggregating if/else keywords of if-statements. while (ifStatement) { - var children = ifStatement.getChildren(); + let children = ifStatement.getChildren(); pushKeywordIf(keywords, children[0], SyntaxKind.IfKeyword); // Generally the 'else' keyword is second-to-last, so we traverse backwards. - for (var i = children.length - 1; i >= 0; i--) { + for (let i = children.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, children[i], SyntaxKind.ElseKeyword)) { break; } @@ -3457,19 +4091,19 @@ module ts { ifStatement = ifStatement.elseStatement; } - var result: ReferenceEntry[] = []; + let result: ReferenceEntry[] = []; // We'd like to highlight else/ifs together if they are only separated by whitespace // (i.e. the keywords are separated by no comments, no newlines). - for (var i = 0; i < keywords.length; i++) { + for (let i = 0; i < keywords.length; i++) { if (keywords[i].kind === SyntaxKind.ElseKeyword && i < keywords.length - 1) { - var elseKeyword = keywords[i]; - var ifKeyword = keywords[i + 1]; // this *should* always be an 'if' keyword. + let elseKeyword = keywords[i]; + let ifKeyword = keywords[i + 1]; // this *should* always be an 'if' keyword. - var shouldHighlightNextKeyword = true; + let shouldHighlightNextKeyword = true; // Avoid recalculating getStart() by iterating backwards. - for (var j = ifKeyword.getStart() - 1; j >= elseKeyword.end; j--) { + for (let j = ifKeyword.getStart() - 1; j >= elseKeyword.end; j--) { if (!isWhiteSpace(sourceFile.text.charCodeAt(j))) { shouldHighlightNextKeyword = false; break; @@ -3495,14 +4129,14 @@ module ts { } function getReturnOccurrences(returnStatement: ReturnStatement): ReferenceEntry[] { - var func = getContainingFunction(returnStatement); + let func = getContainingFunction(returnStatement); // If we didn't find a containing function with a block body, bail out. if (!(func && hasKind(func.body, SyntaxKind.Block))) { return undefined; } - var keywords: Node[] = [] + let keywords: Node[] = [] forEachReturnStatement(func.body, returnStatement => { pushKeywordIf(keywords, returnStatement.getFirstToken(), SyntaxKind.ReturnKeyword); }); @@ -3516,13 +4150,13 @@ module ts { } function getThrowOccurrences(throwStatement: ThrowStatement) { - var owner = getThrowStatementOwner(throwStatement); + let owner = getThrowStatementOwner(throwStatement); if (!owner) { return undefined; } - var keywords: Node[] = []; + let keywords: Node[] = []; forEach(aggregateOwnedThrowStatements(owner), throwStatement => { pushKeywordIf(keywords, throwStatement.getFirstToken(), SyntaxKind.ThrowKeyword); @@ -3544,7 +4178,7 @@ module ts { * into function boundaries and try-blocks with catch-clauses. */ function aggregateOwnedThrowStatements(node: Node): ThrowStatement[] { - var statementAccumulator: ThrowStatement[] = [] + let statementAccumulator: ThrowStatement[] = [] aggregate(node); return statementAccumulator; @@ -3553,7 +4187,7 @@ module ts { statementAccumulator.push(node); } else if (node.kind === SyntaxKind.TryStatement) { - var tryStatement = node; + let tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -3569,7 +4203,7 @@ module ts { } } // Do not cross function boundaries. - else if (!isAnyFunction(node)) { + else if (!isFunctionLike(node)) { forEachChild(node, aggregate); } }; @@ -3581,10 +4215,10 @@ module ts { * function-block, or source file. */ function getThrowStatementOwner(throwStatement: ThrowStatement): Node { - var child: Node = throwStatement; + let child: Node = throwStatement; while (child.parent) { - var parent = child.parent; + let parent = child.parent; if (isFunctionBlock(parent) || parent.kind === SyntaxKind.SourceFile) { return parent; @@ -3593,7 +4227,7 @@ module ts { // A throw-statement is only owned by a try-statement if the try-statement has // a catch clause, and if the throw-statement occurs within the try block. if (parent.kind === SyntaxKind.TryStatement) { - var tryStatement = parent; + let tryStatement = parent; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; @@ -3607,7 +4241,7 @@ module ts { } function getTryCatchFinallyOccurrences(tryStatement: TryStatement): ReferenceEntry[] { - var keywords: Node[] = []; + let keywords: Node[] = []; pushKeywordIf(keywords, tryStatement.getFirstToken(), SyntaxKind.TryKeyword); @@ -3616,7 +4250,7 @@ module ts { } if (tryStatement.finallyBlock) { - var finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); + let finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); pushKeywordIf(keywords, finallyKeyword, SyntaxKind.FinallyKeyword); } @@ -3624,14 +4258,14 @@ module ts { } function getLoopBreakContinueOccurrences(loopNode: IterationStatement): ReferenceEntry[] { - var keywords: Node[] = []; + let keywords: Node[] = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), SyntaxKind.ForKeyword, SyntaxKind.WhileKeyword, SyntaxKind.DoKeyword)) { // If we succeeded and got a do-while loop, then start looking for a 'while' keyword. if (loopNode.kind === SyntaxKind.DoStatement) { - var loopTokens = loopNode.getChildren(); + let loopTokens = loopNode.getChildren(); - for (var i = loopTokens.length - 1; i >= 0; i--) { + for (let i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], SyntaxKind.WhileKeyword)) { break; } @@ -3639,7 +4273,7 @@ module ts { } } - var breaksAndContinues = aggregateAllBreakAndContinueStatements(loopNode.statement); + let breaksAndContinues = aggregateAllBreakAndContinueStatements(loopNode.statement); forEach(breaksAndContinues, statement => { if (ownsBreakOrContinueStatement(loopNode, statement)) { @@ -3650,16 +4284,16 @@ module ts { return map(keywords, getReferenceEntryFromNode); } - function getSwitchCaseDefaultOccurrences(switchStatement: SwitchStatement) { - var keywords: Node[] = []; + function getSwitchCaseDefaultOccurrences(switchStatement: SwitchStatement): ReferenceEntry[] { + let keywords: Node[] = []; pushKeywordIf(keywords, switchStatement.getFirstToken(), SyntaxKind.SwitchKeyword); // Go through each clause in the switch statement, collecting the 'case'/'default' keywords. - forEach(switchStatement.clauses, clause => { + forEach(switchStatement.caseBlock.clauses, clause => { pushKeywordIf(keywords, clause.getFirstToken(), SyntaxKind.CaseKeyword, SyntaxKind.DefaultKeyword); - var breaksAndContinues = aggregateAllBreakAndContinueStatements(clause); + let breaksAndContinues = aggregateAllBreakAndContinueStatements(clause); forEach(breaksAndContinues, statement => { if (ownsBreakOrContinueStatement(switchStatement, statement)) { @@ -3672,7 +4306,7 @@ module ts { } function getBreakOrContinueStatementOccurences(breakOrContinueStatement: BreakOrContinueStatement): ReferenceEntry[] { - var owner = getBreakOrContinueOwner(breakOrContinueStatement); + let owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { @@ -3692,7 +4326,7 @@ module ts { } function aggregateAllBreakAndContinueStatements(node: Node): BreakOrContinueStatement[] { - var statementAccumulator: BreakOrContinueStatement[] = [] + let statementAccumulator: BreakOrContinueStatement[] = [] aggregate(node); return statementAccumulator; @@ -3701,20 +4335,20 @@ module ts { statementAccumulator.push(node); } // Do not cross function boundaries. - else if (!isAnyFunction(node)) { + else if (!isFunctionLike(node)) { forEachChild(node, aggregate); } }; } function ownsBreakOrContinueStatement(owner: Node, statement: BreakOrContinueStatement): boolean { - var actualOwner = getBreakOrContinueOwner(statement); + let actualOwner = getBreakOrContinueOwner(statement); return actualOwner && actualOwner === owner; } function getBreakOrContinueOwner(statement: BreakOrContinueStatement): Node { - for (var node = statement.parent; node; node = node.parent) { + for (let node = statement.parent; node; node = node.parent) { switch (node.kind) { case SyntaxKind.SwitchStatement: if (statement.kind === SyntaxKind.ContinueStatement) { @@ -3732,7 +4366,7 @@ module ts { break; default: // Don't cross function boundaries. - if (isAnyFunction(node)) { + if (isFunctionLike(node)) { return undefined; } break; @@ -3743,9 +4377,9 @@ module ts { } function getConstructorOccurrences(constructorDeclaration: ConstructorDeclaration): ReferenceEntry[] { - var declarations = constructorDeclaration.symbol.getDeclarations() + let declarations = constructorDeclaration.symbol.getDeclarations() - var keywords: Node[] = []; + let keywords: Node[] = []; forEach(declarations, declaration => { forEach(declaration.getChildren(), token => { @@ -3757,7 +4391,7 @@ module ts { } function getGetAndSetOccurrences(accessorDeclaration: AccessorDeclaration): ReferenceEntry[] { - var keywords: Node[] = []; + let keywords: Node[] = []; tryPushAccessorKeyword(accessorDeclaration.symbol, SyntaxKind.GetAccessor); tryPushAccessorKeyword(accessorDeclaration.symbol, SyntaxKind.SetAccessor); @@ -3765,7 +4399,7 @@ module ts { return map(keywords, getReferenceEntryFromNode); function tryPushAccessorKeyword(accessorSymbol: Symbol, accessorKind: SyntaxKind): void { - var accessor = getDeclarationOfKind(accessorSymbol, accessorKind); + let accessor = getDeclarationOfKind(accessorSymbol, accessorKind); if (accessor) { forEach(accessor.getChildren(), child => pushKeywordIf(keywords, child, SyntaxKind.GetKeyword, SyntaxKind.SetKeyword)); @@ -3773,22 +4407,22 @@ module ts { } } - function getModifierOccurrences(modifier: SyntaxKind, declaration: Node) { - var container = declaration.parent; + function getModifierOccurrences(modifier: SyntaxKind, declaration: Node): ReferenceEntry[] { + let container = declaration.parent; // Make sure we only highlight the keyword when it makes sense to do so. - if (declaration.flags & NodeFlags.AccessibilityModifier) { + if (isAccessibilityModifier(modifier)) { if (!(container.kind === SyntaxKind.ClassDeclaration || (declaration.kind === SyntaxKind.Parameter && hasKind(container, SyntaxKind.Constructor)))) { return undefined; } } - else if (declaration.flags & NodeFlags.Static) { + else if (modifier === SyntaxKind.StaticKeyword) { if (container.kind !== SyntaxKind.ClassDeclaration) { return undefined; } } - else if (declaration.flags & (NodeFlags.Export | NodeFlags.Ambient)) { + else if (modifier === SyntaxKind.ExportKeyword || modifier === SyntaxKind.DeclareKeyword) { if (!(container.kind === SyntaxKind.ModuleBlock || container.kind === SyntaxKind.SourceFile)) { return undefined; } @@ -3798,10 +4432,10 @@ module ts { return undefined; } - var keywords: Node[] = []; - var modifierFlag: NodeFlags = getFlagFromModifier(modifier); + let keywords: Node[] = []; + let modifierFlag: NodeFlags = getFlagFromModifier(modifier); - var nodes: Node[]; + let nodes: Node[]; switch (container.kind) { case SyntaxKind.ModuleBlock: case SyntaxKind.SourceFile: @@ -3817,7 +4451,7 @@ module ts { // If we're an accessibility modifier, we're in an instance member and should search // the constructor's parameter list for instance members as well. if (modifierFlag & NodeFlags.AccessibilityModifier) { - var constructor = forEach((container).members, member => { + let constructor = forEach((container).members, member => { return member.kind === SyntaxKind.Constructor && member; }); @@ -3829,7 +4463,7 @@ module ts { default: Debug.fail("Invalid container kind.") } - + forEach(nodes, node => { if (node.modifiers && node.flags & modifierFlag) { forEach(node.modifiers, child => pushKeywordIf(keywords, child, modifier)); @@ -3878,20 +4512,41 @@ module ts { } } - function findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[] { - return findReferences(fileName, position, findInStrings, findInComments); + function convertReferences(referenceSymbols: ReferencedSymbol[]): ReferenceEntry[]{ + if (!referenceSymbols) { + return undefined; + } + + let referenceEntries: ReferenceEntry[] = []; + for (let referenceSymbol of referenceSymbols) { + addRange(referenceEntries, referenceSymbol.references); + } + return referenceEntries; + } + + function findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[]{ + var referencedSymbols = findReferencedSymbols(fileName, position, findInStrings, findInComments); + return convertReferences(referencedSymbols); } function getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] { - return findReferences(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + return convertReferences(referencedSymbols); } - function findReferences(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): ReferenceEntry[] { + function findReferences(fileName: string, position: number): ReferencedSymbol[]{ + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + + // Only include referenced symbols that have a valid definition. + return filter(referencedSymbols, rs => !!rs.definition); + } + + function findReferencedSymbols(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): ReferencedSymbol[] { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); - var node = getTouchingPropertyName(sourceFile, position); + let node = getTouchingPropertyName(sourceFile, position); if (!node) { return undefined; } @@ -3909,35 +4564,14 @@ module ts { return getReferencesForNode(node, program.getSourceFiles(), /*searchOnlyInCurrentFile*/ false, findInStrings, findInComments); } - function initializeNameTable(sourceFile: SourceFile): void { - var nameTable: Map = {}; - - walk(sourceFile); - sourceFile.nameTable = nameTable; - - function walk(node: Node) { - switch (node.kind) { - case SyntaxKind.Identifier: - nameTable[(node).text] = (node).text; - break; - case SyntaxKind.StringLiteral: - case SyntaxKind.NumericLiteral: - nameTable[(node).text] = (node).text; - break; - default: - forEachChild(node, walk); - } - } - } - - function getReferencesForNode(node: Node, sourceFiles: SourceFile[], searchOnlyInCurrentFile: boolean, findInStrings: boolean, findInComments: boolean): ReferenceEntry[] { + function getReferencesForNode(node: Node, sourceFiles: SourceFile[], searchOnlyInCurrentFile: boolean, findInStrings: boolean, findInComments: boolean): ReferencedSymbol[]{ // Labels if (isLabelName(node)) { if (isJumpStatementTarget(node)) { - var labelDefinition = getTargetLabel((node.parent), (node).text); + let labelDefinition = getTargetLabel((node.parent), (node).text); // if we have a label definition, look within its statement for references, if not, then - // the label is undefined, just return a set of one for the current node. - return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : [getReferenceEntryFromNode(node)]; + // the label is undefined and we have no results.. + return labelDefinition ? getLabelReferencesInNode(labelDefinition.parent, labelDefinition) : undefined; } else { // it is a label definition and not a target, search within the parent labeledStatement @@ -3953,58 +4587,56 @@ module ts { return getReferencesForSuperKeyword(node); } - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); // Could not find a symbol e.g. unknown identifier if (!symbol) { - // Even if we did not find a symbol, we have an identifier, so there is at least - // one reference that we know of. return that instead of undefined. - return [getReferenceEntryFromNode(node)]; + // Can't have references to something that we have no symbol for. + return undefined; } - var declarations = symbol.declarations; + let declarations = symbol.declarations; // The symbol was an internal symbol and does not have a declaration e.g.undefined symbol if (!declarations || !declarations.length) { return undefined; } - var result: ReferenceEntry[]; + let result: ReferencedSymbol[]; // Compute the meaning from the location and the symbol it references - var searchMeaning = getIntersectingMeaningFromDeclarations(getMeaningFromLocation(node), declarations); + let searchMeaning = getIntersectingMeaningFromDeclarations(getMeaningFromLocation(node), declarations); // Get the text to search for, we need to normalize it as external module names will have quote - var declaredName = getDeclaredName(symbol); + let declaredName = getDeclaredName(symbol, node); // Try to get the smallest valid scope that we can limit our search to; // otherwise we'll need to search globally (i.e. include each file). - var scope = getSymbolScope(symbol); + let scope = getSymbolScope(symbol); + + // Maps from a symbol ID to the ReferencedSymbol entry in 'result'. + let symbolToIndex: number[] = []; if (scope) { result = []; - getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(scope, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { if (searchOnlyInCurrentFile) { Debug.assert(sourceFiles.length === 1); result = []; - getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFiles[0], symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } else { - var internedName = getInternedName(symbol, declarations) + let internedName = getInternedName(symbol, node, declarations) forEach(sourceFiles, sourceFile => { cancellationToken.throwIfCancellationRequested(); - if (!sourceFile.nameTable) { - initializeNameTable(sourceFile) - } + let nameTable = getNameTable(sourceFile); - Debug.assert(sourceFile.nameTable !== undefined); - - if (lookUp(sourceFile.nameTable, internedName)) { + if (lookUp(nameTable, internedName)) { result = result || []; - getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result); + getReferencesInNode(sourceFile, symbol, declaredName, node, searchMeaning, findInStrings, findInComments, result, symbolToIndex); } }); } @@ -4012,33 +4644,87 @@ module ts { return result; - function getDeclaredName(symbol: Symbol) { - var name = typeInfoResolver.symbolToString(symbol); + function getDefinition(symbol: Symbol): DefinitionInfo { + let info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node); + let name = map(info.displayParts, p => p.text).join(""); + let declarations = symbol.declarations; + if (!declarations || declarations.length === 0) { + return undefined; + } - return stripQuotes(name); + return { + containerKind: "", + containerName: "", + name, + kind: info.symbolKind, + fileName: declarations[0].getSourceFile().fileName, + textSpan: createTextSpan(declarations[0].getStart(), 0) + }; } - function getInternedName(symbol: Symbol, declarations: Declaration[]): string { + function isImportOrExportSpecifierName(location: Node): boolean { + return location.parent && + (location.parent.kind === SyntaxKind.ImportSpecifier || location.parent.kind === SyntaxKind.ExportSpecifier) && + (location.parent).propertyName === location; + } + + function isImportOrExportSpecifierImportSymbol(symbol: Symbol) { + return (symbol.flags & SymbolFlags.Alias) && forEach(symbol.declarations, declaration => { + return declaration.kind === SyntaxKind.ImportSpecifier || declaration.kind === SyntaxKind.ExportSpecifier; + }); + } + + function getDeclaredName(symbol: Symbol, location: Node) { // Special case for function expressions, whose names are solely local to their bodies. - var functionExpression = forEach(declarations, d => d.kind === SyntaxKind.FunctionExpression ? d : undefined); + let functionExpression = forEach(symbol.declarations, d => d.kind === SyntaxKind.FunctionExpression ? d : undefined); // When a name gets interned into a SourceFile's 'identifiers' Map, // its name is escaped and stored in the same way its symbol name/identifier // name should be stored. Function expressions, however, are a special case, // because despite sometimes having a name, the binder unconditionally binds them // to a symbol with the name "__function". + let name: string; if (functionExpression && functionExpression.name) { - var name = functionExpression.name.text; + name = functionExpression.name.text; } - else { - var name = symbol.name; + + // If this is an export or import specifier it could have been renamed using the as syntax. + // if so we want to search for whatever under the cursor, the symbol is pointing to the alias (name) + // so check for the propertyName. + if (isImportOrExportSpecifierName(location)) { + return location.getText(); } + name = typeInfoResolver.symbolToString(symbol); + + return stripQuotes(name); + } + + function getInternedName(symbol: Symbol, location: Node, declarations: Declaration[]): string { + // If this is an export or import specifier it could have been renamed using the as syntax. + // if so we want to search for whatever under the cursor, the symbol is pointing to the alias (name) + // so check for the propertyName. + if (isImportOrExportSpecifierName(location)) { + return location.getText(); + } + + // Special case for function expressions, whose names are solely local to their bodies. + let functionExpression = forEach(declarations, d => d.kind === SyntaxKind.FunctionExpression ? d : undefined); + + // When a name gets interned into a SourceFile's 'identifiers' Map, + // its name is escaped and stored in the same way its symbol name/identifier + // name should be stored. Function expressions, however, are a special case, + // because despite sometimes having a name, the binder unconditionally binds them + // to a symbol with the name "__function". + let name = functionExpression && functionExpression.name + ? functionExpression.name.text + : symbol.name; + return stripQuotes(name); } function stripQuotes(name: string) { - var length = name.length; + let length = name.length; if (length >= 2 && name.charCodeAt(0) === CharacterCodes.doubleQuote && name.charCodeAt(length - 1) === CharacterCodes.doubleQuote) { return name.substring(1, length - 1); }; @@ -4047,25 +4733,31 @@ module ts { function getSymbolScope(symbol: Symbol): Node { // If this is private property or method, the scope is the containing class - if (symbol.getFlags() && (SymbolFlags.Property | SymbolFlags.Method)) { - var privateDeclaration = forEach(symbol.getDeclarations(), d => (d.flags & NodeFlags.Private) ? d : undefined); + if (symbol.flags & (SymbolFlags.Property | SymbolFlags.Method)) { + let privateDeclaration = forEach(symbol.getDeclarations(), d => (d.flags & NodeFlags.Private) ? d : undefined); if (privateDeclaration) { return getAncestor(privateDeclaration, SyntaxKind.ClassDeclaration); } } - // if this symbol is visible from its parent container, e.g. exported, then bail out - // if symbol correspond to the union property - bail out - if (symbol.parent || (symbol.getFlags() & SymbolFlags.UnionProperty)) { + // If the symbol is an import we would like to find it if we are looking for what it imports. + // So consider it visibile outside its declaration scope. + if (symbol.flags & SymbolFlags.Alias) { return undefined; } - var scope: Node = undefined; + // if this symbol is visible from its parent container, e.g. exported, then bail out + // if symbol correspond to the union property - bail out + if (symbol.parent || (symbol.flags & SymbolFlags.UnionProperty)) { + return undefined; + } - var declarations = symbol.getDeclarations(); + let scope: Node = undefined; + + let declarations = symbol.getDeclarations(); if (declarations) { - for (var i = 0, n = declarations.length; i < n; i++) { - var container = getContainerNode(declarations[i]); + for (let declaration of declarations) { + let container = getContainerNode(declaration); if (!container) { return undefined; @@ -4091,7 +4783,7 @@ module ts { } function getPossibleSymbolReferencePositions(sourceFile: SourceFile, symbolName: string, start: number, end: number): number[] { - var positions: number[] = []; + let positions: number[] = []; /// TODO: Cache symbol existence for files to save text search // Also, need to make this work for unicode escapes. @@ -4101,11 +4793,11 @@ module ts { return positions; } - var text = sourceFile.text; - var sourceLength = text.length; - var symbolNameLength = symbolName.length; + let text = sourceFile.text; + let sourceLength = text.length; + let symbolNameLength = symbolName.length; - var position = text.indexOf(symbolName, start); + let position = text.indexOf(symbolName, start); while (position >= 0) { cancellationToken.throwIfCancellationRequested(); @@ -4114,7 +4806,7 @@ module ts { // We found a match. Make sure it's not part of a larger word (i.e. the char // before and after it have to be a non-identifier char). - var endPosition = position + symbolNameLength; + let endPosition = position + symbolNameLength; if ((position === 0 || !isIdentifierPart(text.charCodeAt(position - 1), ScriptTarget.Latest)) && (endPosition === sourceLength || !isIdentifierPart(text.charCodeAt(endPosition), ScriptTarget.Latest))) { @@ -4127,15 +4819,15 @@ module ts { return positions; } - function getLabelReferencesInNode(container: Node, targetLabel: Identifier): ReferenceEntry[] { - var result: ReferenceEntry[] = []; - var sourceFile = container.getSourceFile(); - var labelName = targetLabel.text; - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd()); + function getLabelReferencesInNode(container: Node, targetLabel: Identifier): ReferencedSymbol[] { + let references: ReferenceEntry[] = []; + let sourceFile = container.getSourceFile(); + let labelName = targetLabel.text; + let possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd()); forEach(possiblePositions, position => { cancellationToken.throwIfCancellationRequested(); - var node = getTouchingWord(sourceFile, position); + let node = getTouchingWord(sourceFile, position); if (!node || node.getWidth() !== labelName.length) { return; } @@ -4143,10 +4835,20 @@ module ts { // Only pick labels that are either the target label, or have a target that is the target label if (node === targetLabel || (isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel)) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + + var definition: DefinitionInfo = { + containerKind: "", + containerName: "", + fileName: targetLabel.getSourceFile().fileName, + kind: ScriptElementKind.label, + name: labelName, + textSpan: createTextSpanFromBounds(targetLabel.getStart(), targetLabel.getEnd()) + } + + return [{ definition, references }]; } function isValidReferencePosition(node: Node, searchSymbolName: string): boolean { @@ -4186,30 +4888,40 @@ module ts { searchMeaning: SemanticMeaning, findInStrings: boolean, findInComments: boolean, - result: ReferenceEntry[]): void { - var sourceFile = container.getSourceFile(); - var tripleSlashDirectivePrefixRegex = /^\/\/\/\s* { cancellationToken.throwIfCancellationRequested(); - var referenceLocation = getTouchingPropertyName(sourceFile, position); + let referenceLocation = getTouchingPropertyName(sourceFile, position); if (!isValidReferencePosition(referenceLocation, searchText)) { // This wasn't the start of a token. Check to see if it might be a // match in a comment or string if that's what the caller is asking // for. if ((findInStrings && isInString(position)) || (findInComments && isInComment(position))) { + + // In the case where we're looking inside comments/strings, we don't have + // an actual definition. So just use 'undefined' here. Features like + // 'Rename' won't care (as they ignore the definitions), and features like + // 'FindReferences' will just filter out these results. result.push({ - fileName: sourceFile.fileName, - textSpan: createTextSpan(position, searchText.length), - isWriteAccess: false + definition: undefined, + references: [{ + fileName: sourceFile.fileName, + textSpan: createTextSpan(position, searchText.length), + isWriteAccess: false + }] }); } return; @@ -4219,12 +4931,15 @@ module ts { return; } - var referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation); + let referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation); if (referenceSymbol) { - var referenceSymbolDeclaration = referenceSymbol.valueDeclaration; - var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration); - if (isRelatableToSearchSet(searchSymbols, referenceSymbol, referenceLocation)) { - result.push(getReferenceEntryFromNode(referenceLocation)); + let referenceSymbolDeclaration = referenceSymbol.valueDeclaration; + let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration); + var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation); + + if (relatedSymbol) { + var referencedSymbol = getReferencedSymbol(relatedSymbol); + referencedSymbol.references.push(getReferenceEntryFromNode(referenceLocation)); } /* Because in short-hand property assignment, an identifier which stored as name of the short-hand property assignment * has two meaning : property name and property value. Therefore when we do findAllReference at the position where @@ -4233,28 +4948,47 @@ module ts { * position of property accessing, the referenceEntry of such position will be handled in the first case. */ else if (!(referenceSymbol.flags & SymbolFlags.Transient) && searchSymbols.indexOf(shorthandValueSymbol) >= 0) { - result.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); + var referencedSymbol = getReferencedSymbol(shorthandValueSymbol); + referencedSymbol.references.push(getReferenceEntryFromNode(referenceSymbolDeclaration.name)); } } }); } + return; + + function getReferencedSymbol(symbol: Symbol): ReferencedSymbol { + var symbolId = getSymbolId(symbol); + var index = symbolToIndex[symbolId]; + if (index === undefined) { + index = result.length; + symbolToIndex[symbolId] = index; + + result.push({ + definition: getDefinition(symbol), + references: [] + }); + } + + return result[index]; + } + function isInString(position: number) { - var token = getTokenAtPosition(sourceFile, position); + let token = getTokenAtPosition(sourceFile, position); return token && token.kind === SyntaxKind.StringLiteral && position > token.getStart(); } function isInComment(position: number) { - var token = getTokenAtPosition(sourceFile, position); + let token = getTokenAtPosition(sourceFile, position); if (token && position < token.getStart()) { // First, we have to see if this position actually landed in a comment. - var commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); + let commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); // Then we want to make sure that it wasn't in a "///<" directive comment // We don't want to unintentionally update a file name. return forEach(commentRanges, c => { if (c.pos < position && position < c.end) { - var commentText = sourceFile.text.substring(c.pos, c.end); + let commentText = sourceFile.text.substring(c.pos, c.end); if (!tripleSlashDirectivePrefixRegex.test(commentText)) { return true; } @@ -4266,13 +5000,13 @@ module ts { } } - function getReferencesForSuperKeyword(superKeyword: Node): ReferenceEntry[] { - var searchSpaceNode = getSuperContainer(superKeyword, /*includeFunctions*/ false); + function getReferencesForSuperKeyword(superKeyword: Node): ReferencedSymbol[] { + let searchSpaceNode = getSuperContainer(superKeyword, /*includeFunctions*/ false); if (!searchSpaceNode) { return undefined; } // Whether 'super' occurs in a static context within a class. - var staticFlag = NodeFlags.Static; + let staticFlag = NodeFlags.Static; switch (searchSpaceNode.kind) { case SyntaxKind.PropertyDeclaration: @@ -4289,37 +5023,38 @@ module ts { return undefined; } - var result: ReferenceEntry[] = []; + let references: ReferenceEntry[] = []; - var sourceFile = searchSpaceNode.getSourceFile(); - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + let sourceFile = searchSpaceNode.getSourceFile(); + let possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); forEach(possiblePositions, position => { cancellationToken.throwIfCancellationRequested(); - var node = getTouchingWord(sourceFile, position); + let node = getTouchingWord(sourceFile, position); if (!node || node.kind !== SyntaxKind.SuperKeyword) { return; } - var container = getSuperContainer(node, /*includeFunctions*/ false); + let container = getSuperContainer(node, /*includeFunctions*/ false); // If we have a 'super' container, we must have an enclosing class. // Now make sure the owning class is the same as the search-space // and has the same static qualifier as the original 'super's owner. if (container && (NodeFlags.Static & container.flags) === staticFlag && container.parent.symbol === searchSpaceNode.symbol) { - result.push(getReferenceEntryFromNode(node)); + references.push(getReferenceEntryFromNode(node)); } }); - return result; + var definition = getDefinition(searchSpaceNode.symbol); + return [{ definition, references }]; } - function getReferencesForThisKeyword(thisOrSuperKeyword: Node, sourceFiles: SourceFile[]): ReferenceEntry[] { - var searchSpaceNode = getThisContainer(thisOrSuperKeyword, /* includeArrowFunctions */ false); + function getReferencesForThisKeyword(thisOrSuperKeyword: Node, sourceFiles: SourceFile[]): ReferencedSymbol[] { + let searchSpaceNode = getThisContainer(thisOrSuperKeyword, /* includeArrowFunctions */ false); // Whether 'this' occurs in a static context within a class. - var staticFlag = NodeFlags.Static; + let staticFlag = NodeFlags.Static; switch (searchSpaceNode.kind) { case SyntaxKind.MethodDeclaration: @@ -4350,32 +5085,43 @@ module ts { return undefined; } - var result: ReferenceEntry[] = []; + let references: ReferenceEntry[] = []; + let possiblePositions: number[]; if (searchSpaceNode.kind === SyntaxKind.SourceFile) { forEach(sourceFiles, sourceFile => { - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); - getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, result); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); + getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); }); } else { - var sourceFile = searchSpaceNode.getSourceFile(); - var possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); - getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, result); + let sourceFile = searchSpaceNode.getSourceFile(); + possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd()); + getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, references); } - return result; + return [{ + definition: { + containerKind: "", + containerName: "", + fileName: node.getSourceFile().fileName, + kind: ScriptElementKind.variableElement, + name: "this", + textSpan: createTextSpanFromBounds(node.getStart(), node.getEnd()) + }, + references: references + }]; function getThisReferencesInFile(sourceFile: SourceFile, searchSpaceNode: Node, possiblePositions: number[], result: ReferenceEntry[]): void { forEach(possiblePositions, position => { cancellationToken.throwIfCancellationRequested(); - var node = getTouchingWord(sourceFile, position); + let node = getTouchingWord(sourceFile, position); if (!node || node.kind !== SyntaxKind.ThisKeyword) { return; } - var container = getThisContainer(node, /* includeArrowFunctions */ false); + let container = getThisContainer(node, /* includeArrowFunctions */ false); switch (searchSpaceNode.kind) { case SyntaxKind.FunctionExpression: @@ -4409,7 +5155,12 @@ module ts { function populateSearchSymbolSet(symbol: Symbol, location: Node): Symbol[] { // The search set contains at least the current symbol - var result = [symbol]; + let result = [symbol]; + + // If the symbol is an alias, add what it alaises to the list + if (isImportOrExportSpecifierImportSymbol(symbol)) { + result.push(typeInfoResolver.getAliasedSymbol(symbol)); + } // If the location is in a context sensitive location (i.e. in an object literal) try // to get a contextual type for it, and add the property symbol from the contextual @@ -4424,13 +5175,13 @@ module ts { * property name and variable declaration of the identifier. * Like in below example, when querying for all references for an identifier 'name', of the property assignment, the language service * should show both 'name' in 'obj' and 'name' in variable declaration - * var name = "Foo"; - * var obj = { name }; + * let name = "Foo"; + * let obj = { name }; * In order to do that, we will populate the search set with the value symbol of the identifier as a value of the property assignment * so that when matching with potential reference symbol, both symbols from property declaration and variable declaration * will be included correctly. */ - var shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent); + let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent); if (shorthandValueSymbol) { result.push(shorthandValueSymbol); } @@ -4456,8 +5207,8 @@ module ts { if (symbol && symbol.flags & (SymbolFlags.Class | SymbolFlags.Interface)) { forEach(symbol.getDeclarations(), declaration => { if (declaration.kind === SyntaxKind.ClassDeclaration) { - getPropertySymbolFromTypeReference(getClassBaseTypeNode(declaration)); - forEach(getClassImplementedTypeNodes(declaration), getPropertySymbolFromTypeReference); + getPropertySymbolFromTypeReference(getClassExtendsHeritageClauseElement(declaration)); + forEach(getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } else if (declaration.kind === SyntaxKind.InterfaceDeclaration) { forEach(getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); @@ -4466,11 +5217,11 @@ module ts { } return; - function getPropertySymbolFromTypeReference(typeReference: TypeReferenceNode) { + function getPropertySymbolFromTypeReference(typeReference: HeritageClauseElement) { if (typeReference) { - var type = typeInfoResolver.getTypeAtLocation(typeReference); + let type = typeInfoResolver.getTypeAtLocation(typeReference); if (type) { - var propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName); + let propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName); if (propertySymbol) { result.push(propertySymbol); } @@ -4482,9 +5233,18 @@ module ts { } } - function isRelatableToSearchSet(searchSymbols: Symbol[], referenceSymbol: Symbol, referenceLocation: Node): boolean { + function getRelatedSymbol(searchSymbols: Symbol[], referenceSymbol: Symbol, referenceLocation: Node): Symbol { if (searchSymbols.indexOf(referenceSymbol) >= 0) { - return true; + return referenceSymbol; + } + + // If the reference symbol is an alias, check if what it is aliasing is one of the search + // symbols. + if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) { + var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol); + if (searchSymbols.indexOf(aliasedSymbol) >= 0) { + return aliasedSymbol; + } } // If the reference location is in an object literal, try to get the contextual type for the @@ -4492,7 +5252,7 @@ module ts { // compare to our searchSymbol if (isNameOfPropertyAssignment(referenceLocation)) { return forEach(getPropertySymbolsFromContextualType(referenceLocation), contextualSymbol => { - return forEach(typeInfoResolver.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0); + return forEach(typeInfoResolver.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined); }); } @@ -4501,38 +5261,38 @@ module ts { return forEach(typeInfoResolver.getRootSymbols(referenceSymbol), rootSymbol => { // if it is in the list, then we are done if (searchSymbols.indexOf(rootSymbol) >= 0) { - return true; + return rootSymbol; } // Finally, try all properties with the same name in any type the containing type extended or implemented, and // see if any is in the list if (rootSymbol.parent && rootSymbol.parent.flags & (SymbolFlags.Class | SymbolFlags.Interface)) { - var result: Symbol[] = []; + let result: Symbol[] = []; getPropertySymbolsFromBaseTypes(rootSymbol.parent, rootSymbol.getName(), result); - return forEach(result, s => searchSymbols.indexOf(s) >= 0); + return forEach(result, s => searchSymbols.indexOf(s) >= 0 ? s : undefined); } - return false; + return undefined; }); } function getPropertySymbolsFromContextualType(node: Node): Symbol[] { if (isNameOfPropertyAssignment(node)) { - var objectLiteral = node.parent.parent; - var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name = (node).text; + let objectLiteral = node.parent.parent; + let contextualType = typeInfoResolver.getContextualType(objectLiteral); + let name = (node).text; if (contextualType) { if (contextualType.flags & TypeFlags.Union) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name) + let unionProperty = contextualType.getProperty(name) if (unionProperty) { return [unionProperty]; } else { - var result: Symbol[] = []; + let result: Symbol[] = []; forEach((contextualType).types, t => { - var symbol = t.getProperty(name); + let symbol = t.getProperty(name); if (symbol) { result.push(symbol); } @@ -4541,7 +5301,7 @@ module ts { } } else { - var symbol = contextualType.getProperty(name); + let symbol = contextualType.getProperty(name); if (symbol) { return [symbol]; } @@ -4560,6 +5320,7 @@ module ts { */ function getIntersectingMeaningFromDeclarations(meaning: SemanticMeaning, declarations: Declaration[]): SemanticMeaning { if (declarations) { + let lastIterationMeaning: SemanticMeaning; do { // The result is order-sensitive, for instance if initialMeaning === Namespace, and declarations = [class, instantiated module] // we need to consider both as they initialMeaning intersects with the module in the namespace space, and the module @@ -4567,24 +5328,25 @@ module ts { // To achieve that we will keep iterating until the result stabilizes. // Remember the last meaning - var lastIterationMeaning = meaning; + lastIterationMeaning = meaning; - for (var i = 0, n = declarations.length; i < n; i++) { - var declarationMeaning = getMeaningFromDeclaration(declarations[i]); + for (let declaration of declarations) { + let declarationMeaning = getMeaningFromDeclaration(declaration); if (declarationMeaning & meaning) { meaning |= declarationMeaning; } } - } while (meaning !== lastIterationMeaning); + } + while (meaning !== lastIterationMeaning); } return meaning; } } function getReferenceEntryFromNode(node: Node): ReferenceEntry { - var start = node.getStart(); - var end = node.getEnd(); + let start = node.getStart(); + let end = node.getEnd(); if (node.kind === SyntaxKind.StringLiteral) { start += 1; @@ -4600,17 +5362,17 @@ module ts { /** A node is considered a writeAccess iff it is a name of a declaration or a target of an assignment */ function isWriteAccess(node: Node): boolean { - if (node.kind === SyntaxKind.Identifier && isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + if (node.kind === SyntaxKind.Identifier && isDeclarationName(node)) { return true; } - var parent = node.parent; + let parent = node.parent; if (parent) { if (parent.kind === SyntaxKind.PostfixUnaryExpression || parent.kind === SyntaxKind.PrefixUnaryExpression) { return true; } else if (parent.kind === SyntaxKind.BinaryExpression && (parent).left === node) { - var operator = (parent).operatorToken.kind; + let operator = (parent).operatorToken.kind; return SyntaxKind.FirstAssignment <= operator && operator <= SyntaxKind.LastAssignment; } } @@ -4632,9 +5394,8 @@ module ts { function getEmitOutput(fileName: string): EmitOutput { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); - - var outputFiles: OutputFile[] = []; + let sourceFile = getValidSourceFile(fileName); + let outputFiles: OutputFile[] = []; function writeFile(fileName: string, data: string, writeByteOrderMark: boolean) { outputFiles.push({ @@ -4644,7 +5405,7 @@ module ts { }); } - var emitOutput = program.emit(sourceFile, writeFile); + let emitOutput = program.emit(sourceFile, writeFile); return { outputFiles, @@ -4694,30 +5455,63 @@ module ts { return SemanticMeaning.Namespace; } + case SyntaxKind.NamedImports: + case SyntaxKind.ImportSpecifier: case SyntaxKind.ImportEqualsDeclaration: + case SyntaxKind.ImportDeclaration: + case SyntaxKind.ExportAssignment: + case SyntaxKind.ExportDeclaration: return SemanticMeaning.Value | SemanticMeaning.Type | SemanticMeaning.Namespace; // An external module can be a Value case SyntaxKind.SourceFile: return SemanticMeaning.Namespace | SemanticMeaning.Value; } + + return SemanticMeaning.Value | SemanticMeaning.Type | SemanticMeaning.Namespace; + Debug.fail("Unknown declaration type"); } function isTypeReference(node: Node): boolean { - if (isRightSideOfQualifiedName(node)) { + if (isRightSideOfQualifiedNameOrPropertyAccess(node) ) { node = node.parent; } - return node.parent.kind === SyntaxKind.TypeReference; + return node.parent.kind === SyntaxKind.TypeReference || node.parent.kind === SyntaxKind.HeritageClauseElement; } function isNamespaceReference(node: Node): boolean { - var root = node; - var isLastClause = true; - if (root.parent.kind === SyntaxKind.QualifiedName) { - while (root.parent && root.parent.kind === SyntaxKind.QualifiedName) + return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); + } + + function isPropertyAccessNamespaceReference(node: Node): boolean { + let root = node; + let isLastClause = true; + if (root.parent.kind === SyntaxKind.PropertyAccessExpression) { + while (root.parent && root.parent.kind === SyntaxKind.PropertyAccessExpression) { root = root.parent; + } + + isLastClause = (root).name === node; + } + + if (!isLastClause && root.parent.kind === SyntaxKind.HeritageClauseElement && root.parent.parent.kind === SyntaxKind.HeritageClause) { + let decl = root.parent.parent.parent; + return (decl.kind === SyntaxKind.ClassDeclaration && (root.parent.parent).token === SyntaxKind.ImplementsKeyword) || + (decl.kind === SyntaxKind.InterfaceDeclaration && (root.parent.parent).token === SyntaxKind.ExtendsKeyword); + } + + return false; + } + + function isQualifiedNameNamespaceReference(node: Node): boolean { + let root = node; + let isLastClause = true; + if (root.parent.kind === SyntaxKind.QualifiedName) { + while (root.parent && root.parent.kind === SyntaxKind.QualifiedName) { + root = root.parent; + } isLastClause = (root).right === node; } @@ -4754,7 +5548,7 @@ module ts { else if (isInRightSideOfImport(node)) { return getMeaningFromRightHandSideOfImportEquals(node); } - else if (isDeclarationOrFunctionExpressionOrCatchVariableName(node)) { + else if (isDeclarationName(node)) { return getMeaningFromDeclaration(node.parent); } else if (isTypeReference(node)) { @@ -4775,7 +5569,7 @@ module ts { function getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); return SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); } @@ -4786,10 +5580,10 @@ module ts { } function getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan { - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); // Get node at the location - var node = getTouchingPropertyName(sourceFile, startPos); + let node = getTouchingPropertyName(sourceFile, startPos); if (!node) { return; @@ -4812,7 +5606,7 @@ module ts { return; } - var nodeForStartPos = node; + let nodeForStartPos = node; while (true) { if (isRightSideOfPropertyAccess(nodeForStartPos) || isRightSideOfQualifiedName(nodeForStartPos)) { // If on the span is in right side of the the property or qualified name, return the span from the qualified name pos to end of this node @@ -4843,13 +5637,13 @@ module ts { function getBreakpointStatementAtPosition(fileName: string, position: number) { // doesn't use compiler - no need to synchronize with host - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return BreakpointResolver.spanInSourceFileAtLocation(sourceFile, position); } function getNavigationBarItems(fileName: string): NavigationBarItem[]{ - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return NavigationBar.getNavigationBarItems(sourceFile); } @@ -4857,15 +5651,15 @@ module ts { function getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[] { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); - var result: ClassifiedSpan[] = []; + let result: ClassifiedSpan[] = []; processNode(sourceFile); return result; function classifySymbol(symbol: Symbol, meaningAtPosition: SemanticMeaning) { - var flags = symbol.getFlags(); + let flags = symbol.getFlags(); if (flags & SymbolFlags.Class) { return ClassificationTypeNames.className; @@ -4910,9 +5704,9 @@ module ts { // Only walk into nodes that intersect the requested span. if (node && textSpanIntersectsWith(span, node.getStart(), node.getWidth())) { if (node.kind === SyntaxKind.Identifier && node.getWidth() > 0) { - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); if (symbol) { - var type = classifySymbol(symbol, getMeaningFromLocation(node)); + let type = classifySymbol(symbol, getMeaningFromLocation(node)); if (type) { result.push({ textSpan: createTextSpan(node.getStart(), node.getWidth()), @@ -4929,19 +5723,19 @@ module ts { function getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[] { // doesn't use compiler - no need to synchronize with host - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); // Make a scanner we can get trivia from. - var triviaScanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ false, sourceFile.text); - var mergeConflictScanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ false, sourceFile.text); + let triviaScanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ false, sourceFile.text); + let mergeConflictScanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ false, sourceFile.text); - var result: ClassifiedSpan[] = []; + let result: ClassifiedSpan[] = []; processElement(sourceFile); return result; function classifyLeadingTrivia(token: Node): void { - var tokenStart = skipTrivia(sourceFile.text, token.pos, /*stopAfterLineBreak:*/ false); + let tokenStart = skipTrivia(sourceFile.text, token.pos, /*stopAfterLineBreak:*/ false); if (tokenStart === token.pos) { return; } @@ -4949,10 +5743,10 @@ module ts { // token has trivia. Classify them appropriately. triviaScanner.setTextPos(token.pos); while (true) { - var start = triviaScanner.getTextPos(); - var kind = triviaScanner.scan(); - var end = triviaScanner.getTextPos(); - var width = end - start; + let start = triviaScanner.getTextPos(); + let kind = triviaScanner.scan(); + let end = triviaScanner.getTextPos(); + let width = end - start; if (textSpanIntersectsWith(span, start, width)) { if (!isTrivia(kind)) { @@ -4969,8 +5763,8 @@ module ts { } if (kind === SyntaxKind.ConflictMarkerTrivia) { - var text = sourceFile.text; - var ch = text.charCodeAt(start); + let text = sourceFile.text; + let ch = text.charCodeAt(start); // for the <<<<<<< and >>>>>>> markers, we just add them in as comments // in the classification stream. @@ -5012,11 +5806,11 @@ module ts { } function classifyDisabledCodeToken() { - var start = mergeConflictScanner.getTextPos(); - var tokenKind = mergeConflictScanner.scan(); - var end = mergeConflictScanner.getTextPos(); + let start = mergeConflictScanner.getTextPos(); + let tokenKind = mergeConflictScanner.scan(); + let end = mergeConflictScanner.getTextPos(); - var type = classifyTokenType(tokenKind); + let type = classifyTokenType(tokenKind); if (type) { result.push({ textSpan: createTextSpanFromBounds(start, end), @@ -5029,7 +5823,7 @@ module ts { classifyLeadingTrivia(token); if (token.getWidth() > 0) { - var type = classifyTokenType(token.kind, token); + let type = classifyTokenType(token.kind, token); if (type) { result.push({ textSpan: createTextSpan(token.getStart(), token.getWidth()), @@ -5130,9 +5924,8 @@ module ts { function processElement(element: Node) { // Ignore nodes that don't intersect the original span to classify. if (textSpanIntersectsWith(span, element.getFullStart(), element.getFullWidth())) { - var children = element.getChildren(); - for (var i = 0, n = children.length; i < n; i++) { - var child = children[i]; + let children = element.getChildren(); + for (let child of children) { if (isToken(child)) { classifyToken(child); } @@ -5147,30 +5940,28 @@ module ts { function getOutliningSpans(fileName: string): OutliningSpan[] { // doesn't use compiler - no need to synchronize with host - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return OutliningElementsCollector.collectElements(sourceFile); } function getBraceMatchingAtPosition(fileName: string, position: number) { - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - var result: TextSpan[] = []; + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let result: TextSpan[] = []; - var token = getTouchingToken(sourceFile, position); + let token = getTouchingToken(sourceFile, position); if (token.getStart(sourceFile) === position) { - var matchKind = getMatchingTokenKind(token); + let matchKind = getMatchingTokenKind(token); // Ensure that there is a corresponding token to match ours. if (matchKind) { - var parentElement = token.parent; - - var childNodes = parentElement.getChildren(sourceFile); - for (var i = 0, n = childNodes.length; i < n; i++) { - var current = childNodes[i]; + let parentElement = token.parent; + let childNodes = parentElement.getChildren(sourceFile); + for (let current of childNodes) { if (current.kind === matchKind) { - var range1 = createTextSpan(token.getStart(sourceFile), token.getWidth(sourceFile)); - var range2 = createTextSpan(current.getStart(sourceFile), current.getWidth(sourceFile)); + let range1 = createTextSpan(token.getStart(sourceFile), token.getWidth(sourceFile)); + let range2 = createTextSpan(current.getStart(sourceFile), current.getWidth(sourceFile)); // We want to order the braces when we return the result. if (range1.start < range2.start) { @@ -5205,30 +5996,30 @@ module ts { } function getIndentationAtPosition(fileName: string, position: number, editorOptions: EditorOptions) { - var start = new Date().getTime(); - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let start = new Date().getTime(); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); log("getIndentationAtPosition: getCurrentSourceFile: " + (new Date().getTime() - start)); - var start = new Date().getTime(); + start = new Date().getTime(); - var result = formatting.SmartIndenter.getIndentation(position, sourceFile, editorOptions); + let result = formatting.SmartIndenter.getIndentation(position, sourceFile, editorOptions); log("getIndentationAtPosition: computeIndentation : " + (new Date().getTime() - start)); return result; } function getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions): TextChange[] { - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return formatting.formatSelection(start, end, sourceFile, getRuleProvider(options), options); } function getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions): TextChange[] { - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); return formatting.formatDocument(sourceFile, getRuleProvider(options), options); } function getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions): TextChange[] { - var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); + let sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); if (key === "}") { return formatting.formatOnClosingCurly(position, sourceFile, getRuleProvider(options), options); @@ -5252,17 +6043,17 @@ module ts { // anything away. synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); cancellationToken.throwIfCancellationRequested(); - var fileContents = sourceFile.text; - var result: TodoComment[] = []; + let fileContents = sourceFile.text; + let result: TodoComment[] = []; if (descriptors.length > 0) { - var regExp = getTodoCommentsRegExp(); + let regExp = getTodoCommentsRegExp(); - var matchArray: RegExpExecArray; + let matchArray: RegExpExecArray; while (matchArray = regExp.exec(fileContents)) { cancellationToken.throwIfCancellationRequested(); @@ -5283,21 +6074,21 @@ module ts { // // i.e. 'undefined' in position 3 above means TODO(jason) didn't match. // "hack" in position 4 means HACK did match. - var firstDescriptorCaptureIndex = 3; + let firstDescriptorCaptureIndex = 3; Debug.assert(matchArray.length === descriptors.length + firstDescriptorCaptureIndex); - var preamble = matchArray[1]; - var matchPosition = matchArray.index + preamble.length; + let preamble = matchArray[1]; + let matchPosition = matchArray.index + preamble.length; // OK, we have found a match in the file. This is only an acceptable match if // it is contained within a comment. - var token = getTokenAtPosition(sourceFile, matchPosition); + let token = getTokenAtPosition(sourceFile, matchPosition); if (!isInsideComment(sourceFile, token, matchPosition)) { continue; } - var descriptor: TodoCommentDescriptor = undefined; - for (var i = 0, n = descriptors.length; i < n; i++) { + let descriptor: TodoCommentDescriptor = undefined; + for (let i = 0, n = descriptors.length; i < n; i++) { if (matchArray[i + firstDescriptorCaptureIndex]) { descriptor = descriptors[i]; } @@ -5310,7 +6101,7 @@ module ts { continue; } - var message = matchArray[2]; + let message = matchArray[2]; result.push({ descriptor: descriptor, message: message, @@ -5341,14 +6132,14 @@ module ts { // // The following three regexps are used to match the start of the text up to the TODO // comment portion. - var singleLineCommentStart = /(?:\/\/+\s*)/.source; - var multiLineCommentStart = /(?:\/\*+\s*)/.source; - var anyNumberOfSpacesAndAsterixesAtStartOfLine = /(?:^(?:\s|\*)*)/.source; + let singleLineCommentStart = /(?:\/\/+\s*)/.source; + let multiLineCommentStart = /(?:\/\*+\s*)/.source; + let anyNumberOfSpacesAndAsterixesAtStartOfLine = /(?:^(?:\s|\*)*)/.source; // Match any of the above three TODO comment start regexps. // Note that the outermost group *is* a capture group. We want to capture the preamble // so that we can determine the starting position of the TODO comment match. - var preamble = "(" + anyNumberOfSpacesAndAsterixesAtStartOfLine + "|" + singleLineCommentStart + "|" + multiLineCommentStart + ")"; + let preamble = "(" + anyNumberOfSpacesAndAsterixesAtStartOfLine + "|" + singleLineCommentStart + "|" + multiLineCommentStart + ")"; // Takes the descriptors and forms a regexp that matches them as if they were literals. // For example, if the descriptors are "TODO(jason)" and "HACK", then this will be: @@ -5358,17 +6149,17 @@ module ts { // Note that the outermost group is *not* a capture group, but the innermost groups // *are* capture groups. By capturing the inner literals we can determine after // matching which descriptor we are dealing with. - var literals = "(?:" + map(descriptors, d => "(" + escapeRegExp(d.text) + ")").join("|") + ")"; + let literals = "(?:" + map(descriptors, d => "(" + escapeRegExp(d.text) + ")").join("|") + ")"; // After matching a descriptor literal, the following regexp matches the rest of the // text up to the end of the line (or */). - var endOfLineOrEndOfComment = /(?:$|\*\/)/.source - var messageRemainder = /(?:.*?)/.source + let endOfLineOrEndOfComment = /(?:$|\*\/)/.source + let messageRemainder = /(?:.*?)/.source // This is the portion of the match we'll return as part of the TODO comment result. We // match the literal portion up to the end of the line or end of comment. - var messagePortion = "(" + literals + messageRemainder + ")"; - var regExpString = preamble + messagePortion + endOfLineOrEndOfComment; + let messagePortion = "(" + literals + messageRemainder + ")"; + let regExpString = preamble + messagePortion + endOfLineOrEndOfComment; // The final regexp will look like this: // /((?:\/\/+\s*)|(?:\/\*+\s*)|(?:^(?:\s|\*)*))((?:(TODO\(jason\))|(HACK))(?:.*?))(?:$|\*\/)/gim @@ -5394,30 +6185,30 @@ module ts { function getRenameInfo(fileName: string, position: number): RenameInfo { synchronizeHostData(); - var sourceFile = getValidSourceFile(fileName); + let sourceFile = getValidSourceFile(fileName); - var node = getTouchingWord(sourceFile, position); + let node = getTouchingWord(sourceFile, position); // Can only rename an identifier. if (node && node.kind === SyntaxKind.Identifier) { - var symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeInfoResolver.getSymbolAtLocation(node); // Only allow a symbol to be renamed if it actually has at least one declaration. if (symbol) { - var declarations = symbol.getDeclarations(); + let declarations = symbol.getDeclarations(); if (declarations && declarations.length > 0) { // Disallow rename for elements that are defined in the standard TypeScript library. - var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); + let defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); if (defaultLibFileName) { - for (var i = 0; i < declarations.length; i++) { - var sourceFile = declarations[i].getSourceFile(); + for (let current of declarations) { + let sourceFile = current.getSourceFile(); if (sourceFile && getCanonicalFileName(ts.normalizePath(sourceFile.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { return getRenameInfoError(getLocaleSpecificMessage(Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library.key)); } } } - var kind = getSymbolKind(symbol, typeInfoResolver, node); + let kind = getSymbolKind(symbol, typeInfoResolver, node); if (kind) { return { canRename: true, @@ -5462,6 +6253,7 @@ module ts { getQuickInfoAtPosition, getDefinitionAtPosition, getReferencesAtPosition, + findReferences, getOccurrencesAtPosition, getNameOrDottedNameSpan, getBreakpointStatementAtPosition, @@ -5482,15 +6274,61 @@ module ts { }; } + /* @internal */ + export function getNameTable(sourceFile: SourceFile): Map { + if (!sourceFile.nameTable) { + initializeNameTable(sourceFile) + } + + return sourceFile.nameTable; + } + + function initializeNameTable(sourceFile: SourceFile): void { + let nameTable: Map = {}; + + walk(sourceFile); + sourceFile.nameTable = nameTable; + + function walk(node: Node) { + switch (node.kind) { + case SyntaxKind.Identifier: + nameTable[(node).text] = (node).text; + break; + case SyntaxKind.StringLiteral: + case SyntaxKind.NumericLiteral: + // We want to store any numbers/strings if they were a name that could be + // related to a declaration. So, if we have 'import x = require("something")' + // then we want 'something' to be in the name table. Similarly, if we have + // "a['propname']" then we want to store "propname" in the name table. + if (isDeclarationName(node) || + node.parent.kind === SyntaxKind.ExternalModuleReference || + isArgumentOfElementAccessExpression(node)) { + + nameTable[(node).text] = (node).text; + } + break; + default: + forEachChild(node, walk); + } + } + } + + function isArgumentOfElementAccessExpression(node: Node) { + return node && + node.parent && + node.parent.kind === SyntaxKind.ElementAccessExpression && + (node.parent).argumentExpression === node; + } + /// Classifier export function createClassifier(): Classifier { - var scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false); + let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false); /// We do not have a full parser support to know when we should parse a regex or not /// If we consider every slash token to be a regex, we could be missing cases like "1/2/3", where /// we have a series of divide operator. this list allows us to be more accurate by ruling out /// locations where a regexp cannot exist. - var noRegexTable: boolean[] = []; + let noRegexTable: boolean[] = []; noRegexTable[SyntaxKind.Identifier] = true; noRegexTable[SyntaxKind.StringLiteral] = true; noRegexTable[SyntaxKind.NumericLiteral] = true; @@ -5524,18 +6362,7 @@ module ts { // // Where on the second line, you will get the 'return' keyword, // a string literal, and a template end consisting of '} } `'. - var templateStack: SyntaxKind[] = []; - - function isAccessibilityModifier(kind: SyntaxKind) { - switch (kind) { - case SyntaxKind.PublicKeyword: - case SyntaxKind.PrivateKeyword: - case SyntaxKind.ProtectedKeyword: - return true; - } - - return false; - } + let templateStack: SyntaxKind[] = []; /** Returns true if 'keyword2' can legally follow 'keyword1' in any language construct. */ function canFollow(keyword1: SyntaxKind, keyword2: SyntaxKind) { @@ -5563,9 +6390,9 @@ module ts { // If there is a syntactic classifier ('syntacticClassifierAbsent' is false), // we will be more conservative in order to avoid conflicting with the syntactic classifier. function getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult { - var offset = 0; - var token = SyntaxKind.Unknown; - var lastNonTriviaToken = SyntaxKind.Unknown; + let offset = 0; + let token = SyntaxKind.Unknown; + let lastNonTriviaToken = SyntaxKind.Unknown; // Empty out the template stack for reuse. while (templateStack.length > 0) { @@ -5605,7 +6432,7 @@ module ts { scanner.setText(text); - var result: ClassificationResult = { + let result: ClassificationResult = { finalLexState: EndOfLineState.Start, entries: [] }; @@ -5629,7 +6456,7 @@ module ts { // In order to determine if the user is potentially typing something generic, we use a // weak heuristic where we track < and > tokens. It's a weak heuristic, but should // work well enough in practice. - var angleBracketStack = 0; + let angleBracketStack = 0; do { token = scanner.scan(); @@ -5687,7 +6514,7 @@ module ts { // If we don't have anything on the template stack, // then we aren't trying to keep track of a previously scanned template head. if (templateStack.length > 0) { - var lastTemplateStackToken = lastOrUndefined(templateStack); + let lastTemplateStackToken = lastOrUndefined(templateStack); if (lastTemplateStackToken === SyntaxKind.TemplateHead) { token = scanner.reScanTemplateToken(); @@ -5717,26 +6544,26 @@ module ts { return result; function processToken(): void { - var start = scanner.getTokenPos(); - var end = scanner.getTextPos(); + let start = scanner.getTokenPos(); + let end = scanner.getTextPos(); addResult(end - start, classFromKind(token)); if (end >= text.length) { if (token === SyntaxKind.StringLiteral) { // Check to see if we finished up on a multiline string literal. - var tokenText = scanner.getTokenText(); + let tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { - var lastCharIndex = tokenText.length - 1; + let lastCharIndex = tokenText.length - 1; - var numBackslashes = 0; + let numBackslashes = 0; while (tokenText.charCodeAt(lastCharIndex - numBackslashes) === CharacterCodes.backslash) { numBackslashes++; } // If we have an odd number of backslashes, then the multiline string is unclosed if (numBackslashes & 1) { - var quoteChar = tokenText.charCodeAt(0); + let quoteChar = tokenText.charCodeAt(0); result.finalLexState = quoteChar === CharacterCodes.doubleQuote ? EndOfLineState.InDoubleQuoteStringLiteral : EndOfLineState.InSingleQuoteStringLiteral; @@ -5881,7 +6708,7 @@ module ts { } /// getDefaultLibraryFilePath - declare var __dirname: string; + declare let __dirname: string; /** * Get the path of the default library file (lib.d.ts) as distributed with the typescript @@ -5902,7 +6729,7 @@ module ts { getNodeConstructor: kind => { function Node() { } - var proto = kind === SyntaxKind.SourceFile ? new SourceFileObject() : new NodeObject(); + let proto = kind === SyntaxKind.SourceFile ? new SourceFileObject() : new NodeObject(); proto.kind = kind; proto.pos = 0; proto.end = 0; diff --git a/src/services/shims.ts b/src/services/shims.ts index 01950772903..7b5eeaf94d2 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -127,6 +127,12 @@ module ts { * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[] */ getReferencesAtPosition(fileName: string, position: number): string; + + /** + * Returns a JSON-encoded value of the type: + * { definition: ; references: [] }[] + */ + findReferences(fileName: string, position: number): string; /** * Returns a JSON-encoded value of the type: @@ -274,7 +280,14 @@ module ts { } public getDefaultLibFileName(options: CompilerOptions): string { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + // Wrap the API changes for 1.5 release. This try/catch + // should be removed once TypeScript 1.5 has shipped. + try { + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); + } + catch (e) { + return ""; + } } } @@ -318,6 +331,22 @@ module ts { } } + /* @internal */ + export function realizeDiagnostics(diagnostics: Diagnostic[], newLine: string): { message: string; start: number; length: number; category: string; } []{ + return diagnostics.map(d => realizeDiagnostic(d, newLine)); + } + + function realizeDiagnostic(diagnostic: Diagnostic, newLine: string): { message: string; start: number; length: number; category: string; } { + return { + message: flattenDiagnosticMessageText(diagnostic.messageText, newLine), + start: diagnostic.start, + length: diagnostic.length, + /// TODO: no need for the tolowerCase call + category: DiagnosticCategory[diagnostic.category].toLowerCase(), + code: diagnostic.code + }; + } + class LanguageServiceShimObject extends ShimBase implements LanguageServiceShim { private logger: Logger; @@ -378,18 +407,7 @@ module ts { private realizeDiagnostics(diagnostics: Diagnostic[]): { message: string; start: number; length: number; category: string; }[]{ var newLine = this.getNewLine(); - return diagnostics.map(d => this.realizeDiagnostic(d, newLine)); - } - - private realizeDiagnostic(diagnostic: Diagnostic, newLine: string): { message: string; start: number; length: number; category: string; } { - return { - message: flattenDiagnosticMessageText(diagnostic.messageText, newLine), - start: diagnostic.start, - length: diagnostic.length, - /// TODO: no need for the tolowerCase call - category: DiagnosticCategory[diagnostic.category].toLowerCase(), - code: diagnostic.code - }; + return ts.realizeDiagnostics(diagnostics, newLine); } public getSyntacticClassifications(fileName: string, start: number, length: number): string { @@ -548,11 +566,6 @@ module ts { /// GET REFERENCES - /** - * Return references to a symbol at the requested position. - * References are separated by "\n". - * Each reference is a "fileindex min lim" sub-string. - */ public getReferencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( "getReferencesAtPosition('" + fileName + "', " + position + ")", @@ -561,6 +574,14 @@ module ts { }); } + public findReferences(fileName: string, position: number): string { + return this.forwardJSONCall( + "findReferences('" + fileName + "', " + position + ")", + () => { + return this.languageService.findReferences(fileName, position); + }); + } + public getOccurrencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( "getOccurrencesAtPosition('" + fileName + "', " + position + ")", @@ -826,3 +847,5 @@ module ts { module TypeScript.Services { export var TypeScriptServicesFactory = ts.TypeScriptServicesFactory; } + +let toolsVersion = "1.4"; diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 8b7dea13ead..419d4819ba6 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -8,15 +8,15 @@ module ts.SignatureHelp { // will return the generic identifier that started the expression (e.g. "foo" in "foo[]; - var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates); + let call = argumentInfo.invocation; + let candidates = []; + let resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates); cancellationToken.throwIfCancellationRequested(); if (!candidates.length) { @@ -211,7 +211,7 @@ module ts.SignatureHelp { */ function getImmediatelyContainingArgumentInfo(node: Node): ArgumentListInfo { if (node.parent.kind === SyntaxKind.CallExpression || node.parent.kind === SyntaxKind.NewExpression) { - var callExpression = node.parent; + let callExpression = node.parent; // There are 3 cases to handle: // 1. The token introduces a list, and should begin a sig help session // 2. The token is either not associated with a list, or ends a list, so the session should end @@ -230,15 +230,15 @@ module ts.SignatureHelp { node.kind === SyntaxKind.OpenParenToken) { // Find the list that starts right *after* the < or ( token. // If the user has just opened a list, consider this item 0. - var list = getChildListThatStartsWithOpenerToken(callExpression, node, sourceFile); - var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; + let list = getChildListThatStartsWithOpenerToken(callExpression, node, sourceFile); + let isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; Debug.assert(list !== undefined); return { kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments, invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: 0, - argumentCount: getCommaBasedArgCount(list) + argumentCount: getArgumentCount(list) }; } @@ -248,28 +248,23 @@ module ts.SignatureHelp { // - Between the type arguments and the arguments (greater than token) // - On the target of the call (parent.func) // - On the 'new' keyword in a 'new' expression - var listItemInfo = findListItemInfo(node); + let listItemInfo = findListItemInfo(node); if (listItemInfo) { - var list = listItemInfo.list; - var isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; + let list = listItemInfo.list; + let isTypeArgList = callExpression.typeArguments && callExpression.typeArguments.pos === list.pos; - // The listItemIndex we got back includes commas. Our goal is to return the index of the proper - // item (not including commas). Here are some examples: - // 1. foo(a, b, c #) -> the listItemIndex is 4, we want to return 2 - // 2. foo(a, b, # c) -> listItemIndex is 3, we want to return 2 - // 3. foo(#a) -> listItemIndex is 0, we want to return 0 - // - // In general, we want to subtract the number of commas before the current index. - // But if we are on a comma, we also want to pretend we are on the argument *following* - // the comma. That amounts to taking the ceiling of half the index. - var argumentIndex = (listItemInfo.listItemIndex + 1) >> 1; + let argumentIndex = getArgumentIndex(list, node); + let argumentCount = getArgumentCount(list); + + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, + `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); return { kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments, invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: argumentIndex, - argumentCount: getCommaBasedArgCount(list) + argumentCount: argumentCount }; } } @@ -281,27 +276,27 @@ module ts.SignatureHelp { } } else if (node.kind === SyntaxKind.TemplateHead && node.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) { - var templateExpression = node.parent; - var tagExpression = templateExpression.parent; + let templateExpression = node.parent; + let tagExpression = templateExpression.parent; Debug.assert(templateExpression.kind === SyntaxKind.TemplateExpression); - var argumentIndex = isInsideTemplateLiteral(node, position) ? 0 : 1; + let argumentIndex = isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } else if (node.parent.kind === SyntaxKind.TemplateSpan && node.parent.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) { - var templateSpan = node.parent; - var templateExpression = templateSpan.parent; - var tagExpression = templateExpression.parent; + let templateSpan = node.parent; + let templateExpression = templateSpan.parent; + let tagExpression = templateExpression.parent; Debug.assert(templateExpression.kind === SyntaxKind.TemplateExpression); - // If we're just after a template tail, don't show signature help. - if (node.kind === SyntaxKind.TemplateTail && !isInsideTemplateLiteral(node, position)) { + // If we're just after a template tail, don't show signature help. + if (node.kind === SyntaxKind.TemplateTail && !isInsideTemplateLiteral(node, position)) { return undefined; } - var spanIndex = templateExpression.templateSpans.indexOf(templateSpan); - var argumentIndex = getArgumentIndexForTemplatePiece(spanIndex, node); + let spanIndex = templateExpression.templateSpans.indexOf(templateSpan); + let argumentIndex = getArgumentIndexForTemplatePiece(spanIndex, node); return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } @@ -309,12 +304,52 @@ module ts.SignatureHelp { return undefined; } - function getCommaBasedArgCount(argumentsList: Node) { - // The number of arguments is the number of commas plus one, unless the list - // is completely empty, in which case there are 0 arguments. - return argumentsList.getChildCount() === 0 - ? 0 - : 1 + countWhere(argumentsList.getChildren(), arg => arg.kind === SyntaxKind.CommaToken); + function getArgumentIndex(argumentsList: Node, node: Node) { + // The list we got back can include commas. In the presence of errors it may + // also just have nodes without commas. For example "Foo(a b c)" will have 3 + // args without commas. We want to find what index we're at. So we count + // forward until we hit ourselves, only incrementing the index if it isn't a + // comma. + // + // Note: the subtlety around trailing commas (in getArgumentCount) does not apply + // here. That's because we're only walking forward until we hit the node we're + // on. In that case, even if we're after the trailing comma, we'll still see + // that trailing comma in the list, and we'll have generated the appropriate + // arg index. + let argumentIndex = 0; + let listChildren = argumentsList.getChildren(); + for (let child of listChildren) { + if (child === node) { + break; + } + if (child.kind !== SyntaxKind.CommaToken) { + argumentIndex++; + } + } + + return argumentIndex; + } + + function getArgumentCount(argumentsList: Node) { + // The argument count for a list is normally the number of non-comma children it has. + // For example, if you have "Foo(a,b)" then there will be three children of the arg + // list 'a' '' 'b'. So, in this case the arg count will be 2. However, there + // is a small subtlety. If you have "Foo(a,)", then the child list will just have + // 'a' ''. So, in the case where the last child is a comma, we increase the + // arg count by one to compensate. + // + // Note: this subtlety only applies to the last comma. If you had "Foo(a,," then + // we'll have: 'a' '' '' + // That will give us 2 non-commas. We then add one for the last comma, givin us an + // arg count of 3. + let listChildren = argumentsList.getChildren(); + + let argumentCount = countWhere(listChildren, arg => arg.kind !== SyntaxKind.CommaToken); + if (listChildren.length > 0 && lastOrUndefined(listChildren).kind === SyntaxKind.CommaToken) { + argumentCount++; + } + + return argumentCount; } // spanIndex is either the index for a given template span. @@ -343,10 +378,12 @@ module ts.SignatureHelp { function getArgumentListInfoForTemplate(tagExpression: TaggedTemplateExpression, argumentIndex: number): ArgumentListInfo { // argumentCount is either 1 or (numSpans + 1) to account for the template strings array argument. - var argumentCount = tagExpression.template.kind === SyntaxKind.NoSubstitutionTemplateLiteral + let argumentCount = tagExpression.template.kind === SyntaxKind.NoSubstitutionTemplateLiteral ? 1 : (tagExpression.template).templateSpans.length + 1; + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + return { kind: ArgumentListKind.TaggedTemplateArguments, invocation: tagExpression, @@ -365,15 +402,15 @@ module ts.SignatureHelp { // // The applicable span is from the first bar to the second bar (inclusive, // but not including parentheses) - var applicableSpanStart = argumentsList.getFullStart(); - var applicableSpanEnd = skipTrivia(sourceFile.text, argumentsList.getEnd(), /*stopAfterLineBreak*/ false); + let applicableSpanStart = argumentsList.getFullStart(); + let applicableSpanEnd = skipTrivia(sourceFile.text, argumentsList.getEnd(), /*stopAfterLineBreak*/ false); return createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getApplicableSpanForTaggedTemplate(taggedTemplate: TaggedTemplateExpression): TextSpan { - var template = taggedTemplate.template; - var applicableSpanStart = template.getStart(); - var applicableSpanEnd = template.getEnd(); + let template = taggedTemplate.template; + let applicableSpanStart = template.getStart(); + let applicableSpanEnd = template.getEnd(); // We need to adjust the end position for the case where the template does not have a tail. // Otherwise, we will not show signature help past the expression. @@ -385,7 +422,7 @@ module ts.SignatureHelp { // This is because a Missing node has no width. However, what we actually want is to include trivia // leading up to the next token in case the user is about to type in a TemplateMiddle or TemplateTail. if (template.kind === SyntaxKind.TemplateExpression) { - var lastSpan = lastOrUndefined((template).templateSpans); + let lastSpan = lastOrUndefined((template).templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = skipTrivia(sourceFile.text, applicableSpanEnd, /*stopAfterLineBreak*/ false); } @@ -395,7 +432,7 @@ module ts.SignatureHelp { } function getContainingArgumentInfo(node: Node): ArgumentListInfo { - for (var n = node; n.kind !== SyntaxKind.SourceFile; n = n.parent) { + for (let n = node; n.kind !== SyntaxKind.SourceFile; n = n.parent) { if (isFunctionBlock(n)) { return undefined; } @@ -406,7 +443,7 @@ module ts.SignatureHelp { Debug.fail("Node of kind " + n.kind + " is not a subspan of its parent of kind " + n.parent.kind); } - var argumentInfo = getImmediatelyContainingArgumentInfo(n); + let argumentInfo = getImmediatelyContainingArgumentInfo(n); if (argumentInfo) { return argumentInfo; } @@ -418,8 +455,8 @@ module ts.SignatureHelp { } function getChildListThatStartsWithOpenerToken(parent: Node, openerToken: Node, sourceFile: SourceFile): Node { - var children = parent.getChildren(sourceFile); - var indexOfOpenerToken = children.indexOf(openerToken); + let children = parent.getChildren(sourceFile); + let indexOfOpenerToken = children.indexOf(openerToken); Debug.assert(indexOfOpenerToken >= 0 && children.length > indexOfOpenerToken + 1); return children[indexOfOpenerToken + 1]; } @@ -433,10 +470,10 @@ module ts.SignatureHelp { * or the one with the most parameters. */ function selectBestInvalidOverloadIndex(candidates: Signature[], argumentCount: number): number { - var maxParamsSignatureIndex = -1; - var maxParams = -1; - for (var i = 0; i < candidates.length; i++) { - var candidate = candidates[i]; + let maxParamsSignatureIndex = -1; + let maxParams = -1; + for (let i = 0; i < candidates.length; i++) { + let candidate = candidates[i]; if (candidate.hasRestParameter || candidate.parameters.length >= argumentCount) { return i; @@ -452,17 +489,17 @@ module ts.SignatureHelp { } function createSignatureHelpItems(candidates: Signature[], bestSignature: Signature, argumentListInfo: ArgumentListInfo): SignatureHelpItems { - var applicableSpan = argumentListInfo.argumentsSpan; - var isTypeParameterList = argumentListInfo.kind === ArgumentListKind.TypeArguments; + let applicableSpan = argumentListInfo.argumentsSpan; + let isTypeParameterList = argumentListInfo.kind === ArgumentListKind.TypeArguments; - var invocation = argumentListInfo.invocation; - var callTarget = getInvokedExpression(invocation) - var callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget); - var callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeInfoResolver, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined); - var items: SignatureHelpItem[] = map(candidates, candidateSignature => { - var signatureHelpParameters: SignatureHelpParameter[]; - var prefixDisplayParts: SymbolDisplayPart[] = []; - var suffixDisplayParts: SymbolDisplayPart[] = []; + let invocation = argumentListInfo.invocation; + let callTarget = getInvokedExpression(invocation) + let callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget); + let callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeInfoResolver, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined); + let items: SignatureHelpItem[] = map(candidates, candidateSignature => { + let signatureHelpParameters: SignatureHelpParameter[]; + let prefixDisplayParts: SymbolDisplayPart[] = []; + let suffixDisplayParts: SymbolDisplayPart[] = []; if (callTargetDisplayParts) { prefixDisplayParts.push.apply(prefixDisplayParts, callTargetDisplayParts); @@ -470,25 +507,25 @@ module ts.SignatureHelp { if (isTypeParameterList) { prefixDisplayParts.push(punctuationPart(SyntaxKind.LessThanToken)); - var typeParameters = candidateSignature.typeParameters; + let typeParameters = candidateSignature.typeParameters; signatureHelpParameters = typeParameters && typeParameters.length > 0 ? map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(punctuationPart(SyntaxKind.GreaterThanToken)); - var parameterParts = mapToDisplayParts(writer => + let parameterParts = mapToDisplayParts(writer => typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation)); suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts); } else { - var typeParameterParts = mapToDisplayParts(writer => + let typeParameterParts = mapToDisplayParts(writer => typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation)); prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts); prefixDisplayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); - var parameters = candidateSignature.parameters; + let parameters = candidateSignature.parameters; signatureHelpParameters = parameters.length > 0 ? map(parameters, createSignatureHelpParameterForParameter) : emptyArray; suffixDisplayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); } - var returnTypeParts = mapToDisplayParts(writer => + let returnTypeParts = mapToDisplayParts(writer => typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation)); suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts); @@ -502,16 +539,18 @@ module ts.SignatureHelp { }; }); - var argumentIndex = argumentListInfo.argumentIndex; + let argumentIndex = argumentListInfo.argumentIndex; // argumentCount is the *apparent* number of arguments. - var argumentCount = argumentListInfo.argumentCount; + let argumentCount = argumentListInfo.argumentCount; - var selectedItemIndex = candidates.indexOf(bestSignature); + let selectedItemIndex = candidates.indexOf(bestSignature); if (selectedItemIndex < 0) { selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); } + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + return { items, applicableSpan, @@ -521,10 +560,10 @@ module ts.SignatureHelp { }; function createSignatureHelpParameterForParameter(parameter: Symbol): SignatureHelpParameter { - var displayParts = mapToDisplayParts(writer => + let displayParts = mapToDisplayParts(writer => typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation)); - var isOptional = hasQuestionToken(parameter.valueDeclaration); + let isOptional = hasQuestionToken(parameter.valueDeclaration); return { name: parameter.name, @@ -535,7 +574,7 @@ module ts.SignatureHelp { } function createSignatureHelpParameterForTypeParameter(typeParameter: TypeParameter): SignatureHelpParameter { - var displayParts = mapToDisplayParts(writer => + let displayParts = mapToDisplayParts(writer => typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation)); return { diff --git a/src/services/syntax/SyntaxGenerator.d.ts b/src/services/syntax/SyntaxGenerator.d.ts deleted file mode 100644 index 783ecb436ed..00000000000 --- a/src/services/syntax/SyntaxGenerator.d.ts +++ /dev/null @@ -1,1132 +0,0 @@ -declare var require: any; -declare var module: any; -declare module TypeScript { - var DiagnosticCode: { - error_TS_0_1: string; - warning_TS_0_1: string; - Unrecognized_escape_sequence: string; - Unexpected_character_0: string; - Missing_close_quote_character: string; - Identifier_expected: string; - _0_keyword_expected: string; - _0_expected: string; - Identifier_expected_0_is_a_keyword: string; - Automatic_semicolon_insertion_not_allowed: string; - Unexpected_token_0_expected: string; - Trailing_separator_not_allowed: string; - AsteriskSlash_expected: string; - public_or_private_modifier_must_precede_static: string; - Unexpected_token: string; - Catch_clause_parameter_cannot_have_a_type_annotation: string; - Rest_parameter_must_be_last_in_list: string; - Parameter_cannot_have_question_mark_and_initializer: string; - Required_parameter_cannot_follow_optional_parameter: string; - Index_signatures_cannot_have_rest_parameters: string; - Index_signature_parameter_cannot_have_accessibility_modifiers: string; - Index_signature_parameter_cannot_have_a_question_mark: string; - Index_signature_parameter_cannot_have_an_initializer: string; - Index_signature_must_have_a_type_annotation: string; - Index_signature_parameter_must_have_a_type_annotation: string; - Index_signature_parameter_type_must_be_string_or_number: string; - extends_clause_already_seen: string; - extends_clause_must_precede_implements_clause: string; - Classes_can_only_extend_a_single_class: string; - implements_clause_already_seen: string; - Accessibility_modifier_already_seen: string; - _0_modifier_must_precede_1_modifier: string; - _0_modifier_already_seen: string; - _0_modifier_cannot_appear_on_a_class_element: string; - Interface_declaration_cannot_have_implements_clause: string; - super_invocation_cannot_have_type_arguments: string; - Only_ambient_modules_can_use_quoted_names: string; - Statements_are_not_allowed_in_ambient_contexts: string; - Implementations_are_not_allowed_in_ambient_contexts: string; - declare_modifier_not_allowed_for_code_already_in_an_ambient_context: string; - Initializers_are_not_allowed_in_ambient_contexts: string; - Parameter_property_declarations_can_only_be_used_in_a_non_ambient_constructor_declaration: string; - Function_implementation_expected: string; - Constructor_implementation_expected: string; - Function_overload_name_must_be_0: string; - _0_modifier_cannot_appear_on_a_module_element: string; - declare_modifier_cannot_appear_on_an_interface_declaration: string; - declare_modifier_required_for_top_level_element: string; - Rest_parameter_cannot_be_optional: string; - Rest_parameter_cannot_have_an_initializer: string; - set_accessor_must_have_one_and_only_one_parameter: string; - set_accessor_parameter_cannot_be_optional: string; - set_accessor_parameter_cannot_have_an_initializer: string; - set_accessor_cannot_have_rest_parameter: string; - get_accessor_cannot_have_parameters: string; - Modifiers_cannot_appear_here: string; - Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: string; - Class_name_cannot_be_0: string; - Interface_name_cannot_be_0: string; - Enum_name_cannot_be_0: string; - Module_name_cannot_be_0: string; - Enum_member_must_have_initializer: string; - Export_assignment_cannot_be_used_in_internal_modules: string; - Export_assignment_not_allowed_in_module_with_exported_element: string; - Module_cannot_have_multiple_export_assignments: string; - Ambient_enum_elements_can_only_have_integer_literal_initializers: string; - module_class_interface_enum_import_or_statement: string; - constructor_function_accessor_or_variable: string; - statement: string; - case_or_default_clause: string; - identifier: string; - call_construct_index_property_or_function_signature: string; - expression: string; - type_name: string; - property_or_accessor: string; - parameter: string; - type: string; - type_parameter: string; - declare_modifier_not_allowed_on_import_declaration: string; - Function_overload_must_be_static: string; - Function_overload_must_not_be_static: string; - Parameter_property_declarations_cannot_be_used_in_a_constructor_overload: string; - Invalid_reference_directive_syntax: string; - Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher: string; - Accessors_are_not_allowed_in_ambient_contexts: string; - _0_modifier_cannot_appear_on_a_constructor_declaration: string; - _0_modifier_cannot_appear_on_a_parameter: string; - Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: string; - Type_parameters_cannot_appear_on_a_constructor_declaration: string; - Type_annotation_cannot_appear_on_a_constructor_declaration: string; - Duplicate_identifier_0: string; - The_name_0_does_not_exist_in_the_current_scope: string; - The_name_0_does_not_refer_to_a_value: string; - super_can_only_be_used_inside_a_class_instance_method: string; - The_left_hand_side_of_an_assignment_expression_must_be_a_variable_property_or_indexer: string; - Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: string; - Value_of_type_0_is_not_callable: string; - Value_of_type_0_is_not_newable: string; - Value_of_type_0_is_not_indexable_by_type_1: string; - Operator_0_cannot_be_applied_to_types_1_and_2: string; - Operator_0_cannot_be_applied_to_types_1_and_2_3: string; - Cannot_convert_0_to_1: string; - Cannot_convert_0_to_1_NL_2: string; - Expected_var_class_interface_or_module: string; - Operator_0_cannot_be_applied_to_type_1: string; - Getter_0_already_declared: string; - Setter_0_already_declared: string; - Exported_class_0_extends_private_class_1: string; - Exported_class_0_implements_private_interface_1: string; - Exported_interface_0_extends_private_interface_1: string; - Exported_class_0_extends_class_from_inaccessible_module_1: string; - Exported_class_0_implements_interface_from_inaccessible_module_1: string; - Exported_interface_0_extends_interface_from_inaccessible_module_1: string; - Public_static_property_0_of_exported_class_has_or_is_using_private_type_1: string; - Public_property_0_of_exported_class_has_or_is_using_private_type_1: string; - Property_0_of_exported_interface_has_or_is_using_private_type_1: string; - Exported_variable_0_has_or_is_using_private_type_1: string; - Public_static_property_0_of_exported_class_is_using_inaccessible_module_1: string; - Public_property_0_of_exported_class_is_using_inaccessible_module_1: string; - Property_0_of_exported_interface_is_using_inaccessible_module_1: string; - Exported_variable_0_is_using_inaccessible_module_1: string; - Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_type_1: string; - Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_type_1: string; - Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_type_1: string; - Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_1: string; - Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_type_1: string; - Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_type_1: string; - Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_type_1: string; - Parameter_0_of_method_from_exported_interface_has_or_is_using_private_type_1: string; - Parameter_0_of_exported_function_has_or_is_using_private_type_1: string; - Parameter_0_of_constructor_from_exported_class_is_using_inaccessible_module_1: string; - Parameter_0_of_public_static_property_setter_from_exported_class_is_using_inaccessible_module_1: string; - Parameter_0_of_public_property_setter_from_exported_class_is_using_inaccessible_module_1: string; - Parameter_0_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_1: string; - Parameter_0_of_call_signature_from_exported_interface_is_using_inaccessible_module_1: string; - Parameter_0_of_public_static_method_from_exported_class_is_using_inaccessible_module_1: string; - Parameter_0_of_public_method_from_exported_class_is_using_inaccessible_module_1: string; - Parameter_0_of_method_from_exported_interface_is_using_inaccessible_module_1: string; - Parameter_0_of_exported_function_is_using_inaccessible_module_1: string; - Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_type_0: string; - Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_type_0: string; - Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_0: string; - Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_type_0: string; - Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_type_0: string; - Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_type_0: string; - Return_type_of_public_method_from_exported_class_has_or_is_using_private_type_0: string; - Return_type_of_method_from_exported_interface_has_or_is_using_private_type_0: string; - Return_type_of_exported_function_has_or_is_using_private_type_0: string; - Return_type_of_public_static_property_getter_from_exported_class_is_using_inaccessible_module_0: string; - Return_type_of_public_property_getter_from_exported_class_is_using_inaccessible_module_0: string; - Return_type_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_0: string; - Return_type_of_call_signature_from_exported_interface_is_using_inaccessible_module_0: string; - Return_type_of_index_signature_from_exported_interface_is_using_inaccessible_module_0: string; - Return_type_of_public_static_method_from_exported_class_is_using_inaccessible_module_0: string; - Return_type_of_public_method_from_exported_class_is_using_inaccessible_module_0: string; - Return_type_of_method_from_exported_interface_is_using_inaccessible_module_0: string; - Return_type_of_exported_function_is_using_inaccessible_module_0: string; - new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: string; - A_parameter_list_must_follow_a_generic_type_argument_list_expected: string; - Multiple_constructor_implementations_are_not_allowed: string; - Unable_to_resolve_external_module_0: string; - Module_cannot_be_aliased_to_a_non_module_type: string; - A_class_may_only_extend_another_class: string; - A_class_may_only_implement_another_class_or_interface: string; - An_interface_may_only_extend_another_class_or_interface: string; - Unable_to_resolve_type: string; - Unable_to_resolve_type_of_0: string; - Unable_to_resolve_type_parameter_constraint: string; - Type_parameter_constraint_cannot_be_a_primitive_type: string; - Supplied_parameters_do_not_match_any_signature_of_call_target: string; - Supplied_parameters_do_not_match_any_signature_of_call_target_NL_0: string; - Invalid_new_expression: string; - Call_signatures_used_in_a_new_expression_must_have_a_void_return_type: string; - Could_not_select_overload_for_new_expression: string; - Type_0_does_not_satisfy_the_constraint_1_for_type_parameter_2: string; - Could_not_select_overload_for_call_expression: string; - Cannot_invoke_an_expression_whose_type_lacks_a_call_signature: string; - Calls_to_super_are_only_valid_inside_a_class: string; - Generic_type_0_requires_1_type_argument_s: string; - Type_of_array_literal_cannot_be_determined_Best_common_type_could_not_be_found_for_array_elements: string; - Could_not_find_enclosing_symbol_for_dotted_name_0: string; - The_property_0_does_not_exist_on_value_of_type_1: string; - Could_not_find_symbol_0: string; - get_and_set_accessor_must_have_the_same_type: string; - this_cannot_be_referenced_in_current_location: string; - Static_members_cannot_reference_class_type_parameters: string; - Class_0_is_recursively_referenced_as_a_base_type_of_itself: string; - Interface_0_is_recursively_referenced_as_a_base_type_of_itself: string; - super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: string; - super_cannot_be_referenced_in_non_derived_classes: string; - A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties: string; - Constructors_for_derived_classes_must_contain_a_super_call: string; - Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: string; - _0_1_is_inaccessible: string; - this_cannot_be_referenced_within_module_bodies: string; - Invalid_expression_types_not_known_to_support_the_addition_operator: string; - The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: string; - The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type: string; - The_type_of_a_unary_arithmetic_operation_operand_must_be_of_type_any_number_or_an_enum_type: string; - Variable_declarations_of_a_for_statement_cannot_use_a_type_annotation: string; - Variable_declarations_of_a_for_statement_must_be_of_types_string_or_any: string; - The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter: string; - The_left_hand_side_of_an_in_expression_must_be_of_types_any_string_or_number: string; - The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: string; - The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: string; - The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: string; - Setters_cannot_return_a_value: string; - Tried_to_query_type_of_uninitialized_module_0: string; - Tried_to_set_variable_type_to_uninitialized_module_type_0: string; - Type_0_does_not_have_type_parameters: string; - Getters_must_return_a_value: string; - Getter_and_setter_accessors_do_not_agree_in_visibility: string; - Invalid_left_hand_side_of_assignment_expression: string; - Function_declared_a_non_void_return_type_but_has_no_return_expression: string; - Cannot_resolve_return_type_reference: string; - Constructors_cannot_have_a_return_type_of_void: string; - Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: string; - All_symbols_within_a_with_block_will_be_resolved_to_any: string; - Import_declarations_in_an_internal_module_cannot_reference_an_external_module: string; - Class_0_declares_interface_1_but_does_not_implement_it_NL_2: string; - Class_0_declares_class_1_as_an_interface_but_does_not_implement_it_NL_2: string; - The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_property_or_indexer: string; - this_cannot_be_referenced_in_static_initializers_in_a_class_body: string; - Class_0_cannot_extend_class_1_NL_2: string; - Interface_0_cannot_extend_class_1_NL_2: string; - Interface_0_cannot_extend_interface_1_NL_2: string; - Overload_signature_is_not_compatible_with_function_definition: string; - Overload_signature_is_not_compatible_with_function_definition_NL_0: string; - Overload_signatures_must_all_be_public_or_private: string; - Overload_signatures_must_all_be_exported_or_not_exported: string; - Overload_signatures_must_all_be_ambient_or_non_ambient: string; - Overload_signatures_must_all_be_optional_or_required: string; - Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature: string; - this_cannot_be_referenced_in_constructor_arguments: string; - Instance_member_cannot_be_accessed_off_a_class: string; - Untyped_function_calls_may_not_accept_type_arguments: string; - Non_generic_functions_may_not_accept_type_arguments: string; - A_generic_type_may_not_reference_itself_with_a_wrapped_form_of_its_own_type_parameters: string; - Rest_parameters_must_be_array_types: string; - Overload_signature_implementation_cannot_use_specialized_type: string; - Export_assignments_may_only_be_used_at_the_top_level_of_external_modules: string; - Export_assignments_may_only_be_made_with_variables_functions_classes_interfaces_enums_and_internal_modules: string; - Only_public_methods_of_the_base_class_are_accessible_via_the_super_keyword: string; - Numeric_indexer_type_0_must_be_assignable_to_string_indexer_type_1: string; - Numeric_indexer_type_0_must_be_assignable_to_string_indexer_type_1_NL_2: string; - All_numerically_named_properties_must_be_assignable_to_numeric_indexer_type_0: string; - All_numerically_named_properties_must_be_assignable_to_numeric_indexer_type_0_NL_1: string; - All_named_properties_must_be_assignable_to_string_indexer_type_0: string; - All_named_properties_must_be_assignable_to_string_indexer_type_0_NL_1: string; - Generic_type_references_must_include_all_type_arguments: string; - Default_arguments_are_only_allowed_in_implementation: string; - Function_expression_declared_a_non_void_return_type_but_has_no_return_expression: string; - Import_declaration_referencing_identifier_from_internal_module_can_only_be_made_with_variables_functions_classes_interfaces_enums_and_internal_modules: string; - Could_not_find_symbol_0_in_module_1: string; - Unable_to_resolve_module_reference_0: string; - Could_not_find_module_0_in_module_1: string; - Exported_import_declaration_0_is_assigned_value_with_type_that_has_or_is_using_private_type_1: string; - Exported_import_declaration_0_is_assigned_value_with_type_that_is_using_inaccessible_module_1: string; - Exported_import_declaration_0_is_assigned_type_that_has_or_is_using_private_type_1: string; - Exported_import_declaration_0_is_assigned_type_that_is_using_inaccessible_module_1: string; - Exported_import_declaration_0_is_assigned_container_that_is_or_is_using_inaccessible_module_1: string; - Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_1: string; - Internal_module_reference_0_in_import_declaration_does_not_reference_module_instance_for_1: string; - Module_0_cannot_merge_with_previous_declaration_of_1_in_a_different_file_2: string; - Interface_0_cannot_simultaneously_extend_types_1_and_2_NL_3: string; - Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it: string; - Ambient_external_module_declaration_cannot_be_reopened: string; - All_declarations_of_merged_declaration_0_must_be_exported_or_not_exported: string; - super_cannot_be_referenced_in_constructor_arguments: string; - Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: string; - Ambient_external_module_declaration_must_be_defined_in_global_context: string; - Ambient_external_module_declaration_cannot_specify_relative_module_name: string; - Import_declaration_in_an_ambient_external_module_declaration_cannot_reference_external_module_through_relative_external_module_name: string; - Could_not_find_the_best_common_type_of_types_of_all_return_statement_expressions: string; - Import_declaration_cannot_refer_to_external_module_reference_when_noResolve_option_is_set: string; - Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: string; - continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: string; - break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: string; - Jump_target_not_found: string; - Jump_target_cannot_cross_function_boundary: string; - Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: string; - Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: string; - Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: string; - TypeParameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_type_1: string; - TypeParameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_type_1: string; - TypeParameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_type_1: string; - TypeParameter_0_of_public_method_from_exported_class_has_or_is_using_private_type_1: string; - TypeParameter_0_of_method_from_exported_interface_has_or_is_using_private_type_1: string; - TypeParameter_0_of_exported_function_has_or_is_using_private_type_1: string; - TypeParameter_0_of_constructor_signature_from_exported_interface_is_using_inaccessible_module_1: string; - TypeParameter_0_of_call_signature_from_exported_interface_is_using_inaccessible_module_1: string; - TypeParameter_0_of_public_static_method_from_exported_class_is_using_inaccessible_module_1: string; - TypeParameter_0_of_public_method_from_exported_class_is_using_inaccessible_module_1: string; - TypeParameter_0_of_method_from_exported_interface_is_using_inaccessible_module_1: string; - TypeParameter_0_of_exported_function_is_using_inaccessible_module_1: string; - TypeParameter_0_of_exported_class_has_or_is_using_private_type_1: string; - TypeParameter_0_of_exported_interface_has_or_is_using_private_type_1: string; - TypeParameter_0_of_exported_class_is_using_inaccessible_module_1: string; - TypeParameter_0_of_exported_interface_is_using_inaccessible_module_1: string; - Duplicate_identifier_i_Compiler_uses_i_to_initialize_rest_parameter: string; - Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: string; - Type_of_conditional_0_must_be_identical_to_1_or_2: string; - Type_of_conditional_0_must_be_identical_to_1_2_or_3: string; - Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_an_external_module: string; - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: string; - Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: string; - Parameter_0_cannot_be_referenced_in_its_initializer: string; - Duplicate_string_index_signature: string; - Duplicate_number_index_signature: string; - All_declarations_of_an_interface_must_have_identical_type_parameters: string; - Expression_resolves_to_variable_declaration_i_that_compiler_uses_to_initialize_rest_parameter: string; - Type_0_is_missing_property_1_from_type_2: string; - Types_of_property_0_of_types_1_and_2_are_incompatible: string; - Types_of_property_0_of_types_1_and_2_are_incompatible_NL_3: string; - Property_0_defined_as_private_in_type_1_is_defined_as_public_in_type_2: string; - Property_0_defined_as_public_in_type_1_is_defined_as_private_in_type_2: string; - Types_0_and_1_define_property_2_as_private: string; - Call_signatures_of_types_0_and_1_are_incompatible: string; - Call_signatures_of_types_0_and_1_are_incompatible_NL_2: string; - Type_0_requires_a_call_signature_but_type_1_lacks_one: string; - Construct_signatures_of_types_0_and_1_are_incompatible: string; - Construct_signatures_of_types_0_and_1_are_incompatible_NL_2: string; - Type_0_requires_a_construct_signature_but_type_1_lacks_one: string; - Index_signatures_of_types_0_and_1_are_incompatible: string; - Index_signatures_of_types_0_and_1_are_incompatible_NL_2: string; - Call_signature_expects_0_or_fewer_parameters: string; - Could_not_apply_type_0_to_argument_1_which_is_of_type_2: string; - Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: string; - Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: string; - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: string; - Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property: string; - Types_of_static_property_0_of_class_1_and_class_2_are_incompatible: string; - Types_of_static_property_0_of_class_1_and_class_2_are_incompatible_NL_3: string; - Type_reference_cannot_refer_to_container_0: string; - Type_reference_must_refer_to_type: string; - In_enums_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_the_first_enum_element: string; - _0_overload_s: string; - Variable_declaration_cannot_have_the_same_name_as_an_import_declaration: string; - Signature_expected_0_type_arguments_got_1_instead: string; - Property_0_defined_as_optional_in_type_1_but_is_required_in_type_2: string; - Types_0_and_1_originating_in_infinitely_expanding_type_reference_do_not_refer_to_same_named_type: string; - Types_0_and_1_originating_in_infinitely_expanding_type_reference_have_incompatible_type_arguments: string; - Types_0_and_1_originating_in_infinitely_expanding_type_reference_have_incompatible_type_arguments_NL_2: string; - Named_properties_0_of_types_1_and_2_are_not_identical: string; - Types_of_string_indexer_of_types_0_and_1_are_not_identical: string; - Types_of_number_indexer_of_types_0_and_1_are_not_identical: string; - Type_of_number_indexer_in_type_0_is_not_assignable_to_string_indexer_type_in_type_1_NL_2: string; - Type_of_property_0_in_type_1_is_not_assignable_to_string_indexer_type_in_type_2_NL_3: string; - Type_of_property_0_in_type_1_is_not_assignable_to_number_indexer_type_in_type_2_NL_3: string; - Static_property_0_defined_as_private_in_type_1_is_defined_as_public_in_type_2: string; - Static_property_0_defined_as_public_in_type_1_is_defined_as_private_in_type_2: string; - Types_0_and_1_define_static_property_2_as_private: string; - Current_host_does_not_support_0_option: string; - ECMAScript_target_version_0_not_supported_Specify_a_valid_target_version_1_default_or_2: string; - Module_code_generation_0_not_supported: string; - Could_not_find_file_0: string; - A_file_cannot_have_a_reference_to_itself: string; - Cannot_resolve_referenced_file_0: string; - Cannot_find_the_common_subdirectory_path_for_the_input_files: string; - Emit_Error_0: string; - Cannot_read_file_0_1: string; - Unsupported_file_encoding: string; - Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: string; - Unsupported_locale_0: string; - Execution_Failed_NL: string; - Invalid_call_to_up: string; - Invalid_call_to_down: string; - Base64_value_0_finished_with_a_continuation_bit: string; - Unknown_option_0: string; - Expected_0_arguments_to_message_got_1_instead: string; - Expected_the_message_0_to_have_1_arguments_but_it_had_2: string; - Could_not_delete_file_0: string; - Could_not_create_directory_0: string; - Error_while_executing_file_0: string; - Cannot_compile_external_modules_unless_the_module_flag_is_provided: string; - Option_mapRoot_cannot_be_specified_without_specifying_sourcemap_option: string; - Option_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: string; - Options_mapRoot_and_sourceRoot_cannot_be_specified_without_specifying_sourcemap_option: string; - Option_0_specified_without_1: string; - codepage_option_not_supported_on_current_platform: string; - Concatenate_and_emit_output_to_single_file: string; - Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: string; - Specifies_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: string; - Watch_input_files: string; - Redirect_output_structure_to_the_directory: string; - Do_not_emit_comments_to_output: string; - Print_this_message: string; - Allow_use_of_deprecated_0_keyword_when_referencing_an_external_module: string; - Syntax_0: string; - options: string; - file1: string; - Examples: string; - Options: string; - Insert_command_line_options_and_files_from_a_file: string; - Version_0: string; - Use_the_0_flag_to_see_options: string; - NL_Recompiling_0: string; - STRING: string; - KIND: string; - file2: string; - VERSION: string; - LOCATION: string; - DIRECTORY: string; - NUMBER: string; - Additional_locations: string; - This_version_of_the_Javascript_runtime_does_not_support_the_0_function: string; - Unknown_rule: string; - Invalid_line_number_0: string; - Raise_error_on_expressions_and_declarations_with_an_implied_any_type: string; - Variable_0_implicitly_has_an_any_type: string; - Parameter_0_of_1_implicitly_has_an_any_type: string; - Parameter_0_of_function_type_implicitly_has_an_any_type: string; - Member_0_of_object_type_implicitly_has_an_any_type: string; - new_expression_which_lacks_a_constructor_signature_implicitly_has_an_any_type: string; - _0_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: string; - Function_expression_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: string; - Parameter_0_of_lambda_function_implicitly_has_an_any_type: string; - Constructor_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: string; - Lambda_Function_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: string; - Array_Literal_implicitly_has_an_any_type_from_widening: string; - _0_which_lacks_get_accessor_and_parameter_type_annotation_on_set_accessor_implicitly_has_an_any_type: string; - Index_signature_of_object_type_implicitly_has_an_any_type: string; - Object_literal_s_property_0_implicitly_has_an_any_type_from_widening: string; - }; -} -declare module TypeScript { - enum DiagnosticCategory { - Warning = 0, - Error = 1, - Message = 2, - NoPrefix = 3, - } -} -declare module TypeScript { - var diagnosticInformationMap: IIndexable; -} -declare module TypeScript { - class ArrayUtilities { - static isArray(value: any): boolean; - static sequenceEquals(array1: T[], array2: T[], equals: (v1: T, v2: T) => boolean): boolean; - static contains(array: T[], value: T): boolean; - static groupBy(array: T[], func: (v: T) => string): any; - static distinct(array: T[], equalsFn?: (a: T, b: T) => boolean): T[]; - static min(array: T[], func: (v: T) => number): number; - static max(array: T[], func: (v: T) => number): number; - static last(array: T[]): T; - static lastOrDefault(array: T[], predicate: (v: T, index: number) => boolean): T; - static firstOrDefault(array: T[], func: (v: T, index: number) => boolean): T; - static first(array: T[], func?: (v: T, index: number) => boolean): T; - static sum(array: T[], func: (v: T) => number): number; - static select(values: T[], func: (v: T) => S): S[]; - static where(values: T[], func: (v: T) => boolean): T[]; - static any(array: T[], func: (v: T) => boolean): boolean; - static all(array: T[], func: (v: T) => boolean): boolean; - static binarySearch(array: number[], value: number): number; - static createArray(length: number, defaultValue: any): T[]; - static grow(array: T[], length: number, defaultValue: T): void; - static copy(sourceArray: T[], sourceIndex: number, destinationArray: T[], destinationIndex: number, length: number): void; - static indexOf(array: T[], predicate: (v: T) => boolean): number; - } -} -declare module TypeScript { - interface IBitVector { - valueAt(index: number): boolean; - setValueAt(index: number, value: boolean): void; - release(): void; - } - module BitVector { - function getBitVector(allowUndefinedValues: boolean): IBitVector; - } -} -declare module TypeScript { - interface IBitMatrix { - valueAt(x: number, y: number): boolean; - setValueAt(x: number, y: number, value: boolean): void; - release(): void; - } - module BitMatrix { - function getBitMatrix(allowUndefinedValues: boolean): IBitMatrix; - } -} -declare module TypeScript { - enum Constants { - Max31BitInteger = 1073741823, - Min31BitInteger = -1073741824, - } -} -declare module TypeScript { - enum AssertionLevel { - None = 0, - Normal = 1, - Aggressive = 2, - VeryAggressive = 3, - } - class Debug { - private static currentAssertionLevel; - static shouldAssert(level: AssertionLevel): boolean; - static assert(expression: any, message?: string, verboseDebugInfo?: () => string): void; - static fail(message?: string): void; - } -} -declare module TypeScript { - var LocalizedDiagnosticMessages: IIndexable; - class Location { - private _fileName; - private _lineMap; - private _start; - private _length; - constructor(fileName: string, lineMap: LineMap, start: number, length: number); - public fileName(): string; - public lineMap(): LineMap; - public line(): number; - public character(): number; - public start(): number; - public length(): number; - static equals(location1: Location, location2: Location): boolean; - } - class Diagnostic extends Location { - private _diagnosticKey; - private _arguments; - private _additionalLocations; - constructor(fileName: string, lineMap: LineMap, start: number, length: number, diagnosticKey: string, _arguments?: any[], additionalLocations?: Location[]); - public toJSON(key: any): any; - public diagnosticKey(): string; - public arguments(): any[]; - public text(): string; - public message(): string; - public additionalLocations(): Location[]; - static equals(diagnostic1: Diagnostic, diagnostic2: Diagnostic): boolean; - public info(): DiagnosticInfo; - } - function newLine(): string; - function getLocalizedText(diagnosticKey: string, args: any[]): string; - function getDiagnosticMessage(diagnosticKey: string, args: any[]): string; -} -declare module TypeScript { - interface DiagnosticInfo { - category: DiagnosticCategory; - message: string; - code: number; - } -} -declare module TypeScript { - class Errors { - static argument(argument: string, message?: string): Error; - static argumentOutOfRange(argument: string): Error; - static argumentNull(argument: string): Error; - static abstract(): Error; - static notYetImplemented(): Error; - static invalidOperation(message?: string): Error; - } -} -declare module TypeScript { - class Hash { - private static FNV_BASE; - private static FNV_PRIME; - private static computeFnv1aCharArrayHashCode(text, start, len); - static computeSimple31BitCharArrayHashCode(key: number[], start: number, len: number): number; - static computeSimple31BitStringHashCode(key: string): number; - static computeMurmur2StringHashCode(key: string, seed: number): number; - private static primes; - static getPrime(min: number): number; - static expandPrime(oldSize: number): number; - static combine(value: number, currentHash: number): number; - } -} -declare module TypeScript.Collections { - var DefaultHashTableCapacity: number; - class HashTable { - private hash; - private entries; - private count; - constructor(capacity: number, hash: (k: TKey) => number); - public set(key: TKey, value: TValue): void; - public add(key: TKey, value: TValue): void; - public containsKey(key: TKey): boolean; - public get(key: TKey): TValue; - private computeHashCode(key); - private addOrSet(key, value, throwOnExistingEntry); - private findEntry(key, hashCode); - private addEntry(key, value, hashCode); - private grow(); - } - function createHashTable(capacity?: number, hash?: (k: TKey) => number): HashTable; - function identityHashCode(value: any): number; -} -declare class Enumerator { - public atEnd(): boolean; - public moveNext(): boolean; - public item(): any; - constructor(o: any); -} -declare module process { - var argv: string[]; - var platform: string; - function on(event: string, handler: (arg: any) => void): void; - module stdout { - function write(str: string): any; - function on(event: string, action: () => void): void; - } - module stderr { - function write(str: string): any; - function on(event: string, action: () => void): void; - } - module mainModule { - var filename: string; - } - function exit(exitCode?: number): any; -} -declare var Buffer: new(str: string, encoding?: string) => any; -declare module TypeScript { - var nodeMakeDirectoryTime: number; - var nodeCreateBufferTime: number; - var nodeWriteFileSyncTime: number; - enum ByteOrderMark { - None = 0, - Utf8 = 1, - Utf16BigEndian = 2, - Utf16LittleEndian = 3, - } - class FileInformation { - public contents: string; - public byteOrderMark: ByteOrderMark; - constructor(contents: string, byteOrderMark: ByteOrderMark); - } - interface IEnvironment { - supportsCodePage(): boolean; - readFile(path: string, codepage: number): FileInformation; - writeFile(path: string, contents: string, writeByteOrderMark: boolean): void; - deleteFile(path: string): void; - fileExists(path: string): boolean; - directoryExists(path: string): boolean; - listFiles(path: string, re?: RegExp, options?: { - recursive?: boolean; - }): string[]; - arguments: string[]; - standardOut: ITextWriter; - currentDirectory(): string; - newLine: string; - } - var Environment: IEnvironment; -} -declare module TypeScript { - interface IIndexable { - [s: string]: T; - } -} -declare module TypeScript { - module IntegerUtilities { - function integerDivide(numerator: number, denominator: number): number; - function integerMultiplyLow32Bits(n1: number, n2: number): number; - function integerMultiplyHigh32Bits(n1: number, n2: number): number; - function isInteger(text: string): boolean; - function isHexInteger(text: string): boolean; - } -} -declare module TypeScript { - interface Iterator { - moveNext(): boolean; - current(): T; - } -} -declare module TypeScript { - interface ILineAndCharacter { - line: number; - character: number; - } -} -declare module TypeScript { - class LineMap { - private _computeLineStarts; - private length; - static empty: LineMap; - private _lineStarts; - constructor(_computeLineStarts: () => number[], length: number); - public toJSON(key: any): { - lineStarts: number[]; - length: number; - }; - public equals(other: LineMap): boolean; - public lineStarts(): number[]; - public lineCount(): number; - public getPosition(line: number, character: number): number; - public getLineNumberFromPosition(position: number): number; - public getLineStartPosition(lineNumber: number): number; - public fillLineAndCharacterFromPosition(position: number, lineAndCharacter: ILineAndCharacter): void; - public getLineAndCharacterFromPosition(position: number): LineAndCharacter; - } -} -declare module TypeScript { - class LineAndCharacter { - private _line; - private _character; - constructor(line: number, character: number); - public line(): number; - public character(): number; - } -} -declare module TypeScript { - class MathPrototype { - static max(a: number, b: number): number; - static min(a: number, b: number): number; - } -} -declare module TypeScript.Collections { - var DefaultStringTableCapacity: number; - class StringTable { - private entries; - private count; - constructor(capacity: number); - public addCharArray(key: number[], start: number, len: number): string; - private findCharArrayEntry(key, start, len, hashCode); - private addEntry(text, hashCode); - private grow(); - private static textCharArrayEquals(text, array, start, length); - } - var DefaultStringTable: StringTable; -} -declare module TypeScript { - class StringUtilities { - static isString(value: any): boolean; - static fromCharCodeArray(array: number[]): string; - static endsWith(string: string, value: string): boolean; - static startsWith(string: string, value: string): boolean; - static copyTo(source: string, sourceIndex: number, destination: number[], destinationIndex: number, count: number): void; - static repeat(value: string, count: number): string; - static stringEquals(val1: string, val2: string): boolean; - } -} -declare var global: any; -declare module TypeScript { - class Timer { - public startTime: number; - public time: number; - public start(): void; - public end(): void; - } -} -declare module TypeScript { - enum SyntaxKind { - None = 0, - List = 1, - SeparatedList = 2, - TriviaList = 3, - WhitespaceTrivia = 4, - NewLineTrivia = 5, - MultiLineCommentTrivia = 6, - SingleLineCommentTrivia = 7, - SkippedTokenTrivia = 8, - ErrorToken = 9, - EndOfFileToken = 10, - IdentifierName = 11, - RegularExpressionLiteral = 12, - NumericLiteral = 13, - StringLiteral = 14, - NoSubstitutionStringTemplateLiteral = 15, - StringTemplateHead = 16, - StringTemplateMiddle = 17, - StringTemplateTail = 18, - DollarSignOpenBraceToken = 19, - BreakKeyword = 20, - CaseKeyword = 21, - CatchKeyword = 22, - ContinueKeyword = 23, - DebuggerKeyword = 24, - DefaultKeyword = 25, - DeleteKeyword = 26, - DoKeyword = 27, - ElseKeyword = 28, - FalseKeyword = 29, - FinallyKeyword = 30, - ForKeyword = 31, - FunctionKeyword = 32, - IfKeyword = 33, - InKeyword = 34, - InstanceOfKeyword = 35, - NewKeyword = 36, - NullKeyword = 37, - ReturnKeyword = 38, - SwitchKeyword = 39, - ThisKeyword = 40, - ThrowKeyword = 41, - TrueKeyword = 42, - TryKeyword = 43, - TypeOfKeyword = 44, - VarKeyword = 45, - VoidKeyword = 46, - WhileKeyword = 47, - WithKeyword = 48, - ClassKeyword = 49, - ConstKeyword = 50, - EnumKeyword = 51, - ExportKeyword = 52, - ExtendsKeyword = 53, - ImportKeyword = 54, - SuperKeyword = 55, - ImplementsKeyword = 56, - InterfaceKeyword = 57, - LetKeyword = 58, - PackageKeyword = 59, - PrivateKeyword = 60, - ProtectedKeyword = 61, - PublicKeyword = 62, - StaticKeyword = 63, - YieldKeyword = 64, - AnyKeyword = 65, - BooleanKeyword = 66, - ConstructorKeyword = 67, - DeclareKeyword = 68, - GetKeyword = 69, - ModuleKeyword = 70, - RequireKeyword = 71, - NumberKeyword = 72, - SetKeyword = 73, - StringKeyword = 74, - OpenBraceToken = 75, - CloseBraceToken = 76, - OpenParenToken = 77, - CloseParenToken = 78, - OpenBracketToken = 79, - CloseBracketToken = 80, - DotToken = 81, - DotDotDotToken = 82, - SemicolonToken = 83, - CommaToken = 84, - LessThanToken = 85, - GreaterThanToken = 86, - LessThanEqualsToken = 87, - GreaterThanEqualsToken = 88, - EqualsEqualsToken = 89, - EqualsGreaterThanToken = 90, - ExclamationEqualsToken = 91, - EqualsEqualsEqualsToken = 92, - ExclamationEqualsEqualsToken = 93, - PlusToken = 94, - MinusToken = 95, - AsteriskToken = 96, - PercentToken = 97, - PlusPlusToken = 98, - MinusMinusToken = 99, - LessThanLessThanToken = 100, - GreaterThanGreaterThanToken = 101, - GreaterThanGreaterThanGreaterThanToken = 102, - AmpersandToken = 103, - BarToken = 104, - CaretToken = 105, - ExclamationToken = 106, - TildeToken = 107, - AmpersandAmpersandToken = 108, - BarBarToken = 109, - QuestionToken = 110, - ColonToken = 111, - EqualsToken = 112, - PlusEqualsToken = 113, - MinusEqualsToken = 114, - AsteriskEqualsToken = 115, - PercentEqualsToken = 116, - LessThanLessThanEqualsToken = 117, - GreaterThanGreaterThanEqualsToken = 118, - GreaterThanGreaterThanGreaterThanEqualsToken = 119, - AmpersandEqualsToken = 120, - BarEqualsToken = 121, - CaretEqualsToken = 122, - SlashToken = 123, - SlashEqualsToken = 124, - SourceUnit = 125, - QualifiedName = 126, - ObjectType = 127, - FunctionType = 128, - ArrayType = 129, - ConstructorType = 130, - GenericType = 131, - TypeQuery = 132, - InterfaceDeclaration = 133, - FunctionDeclaration = 134, - ModuleDeclaration = 135, - ClassDeclaration = 136, - EnumDeclaration = 137, - ImportDeclaration = 138, - ExportAssignment = 139, - MemberFunctionDeclaration = 140, - MemberVariableDeclaration = 141, - ConstructorDeclaration = 142, - IndexMemberDeclaration = 143, - GetAccessor = 144, - SetAccessor = 145, - PropertySignature = 146, - CallSignature = 147, - ConstructSignature = 148, - IndexSignature = 149, - MethodSignature = 150, - Block = 151, - IfStatement = 152, - VariableStatement = 153, - ExpressionStatement = 154, - ReturnStatement = 155, - SwitchStatement = 156, - BreakStatement = 157, - ContinueStatement = 158, - ForStatement = 159, - ForInStatement = 160, - EmptyStatement = 161, - ThrowStatement = 162, - WhileStatement = 163, - TryStatement = 164, - LabeledStatement = 165, - DoStatement = 166, - DebuggerStatement = 167, - WithStatement = 168, - PlusExpression = 169, - NegateExpression = 170, - BitwiseNotExpression = 171, - LogicalNotExpression = 172, - PreIncrementExpression = 173, - PreDecrementExpression = 174, - DeleteExpression = 175, - TypeOfExpression = 176, - VoidExpression = 177, - CommaExpression = 178, - AssignmentExpression = 179, - AddAssignmentExpression = 180, - SubtractAssignmentExpression = 181, - MultiplyAssignmentExpression = 182, - DivideAssignmentExpression = 183, - ModuloAssignmentExpression = 184, - AndAssignmentExpression = 185, - ExclusiveOrAssignmentExpression = 186, - OrAssignmentExpression = 187, - LeftShiftAssignmentExpression = 188, - SignedRightShiftAssignmentExpression = 189, - UnsignedRightShiftAssignmentExpression = 190, - ConditionalExpression = 191, - LogicalOrExpression = 192, - LogicalAndExpression = 193, - BitwiseOrExpression = 194, - BitwiseExclusiveOrExpression = 195, - BitwiseAndExpression = 196, - EqualsWithTypeConversionExpression = 197, - NotEqualsWithTypeConversionExpression = 198, - EqualsExpression = 199, - NotEqualsExpression = 200, - LessThanExpression = 201, - GreaterThanExpression = 202, - LessThanOrEqualExpression = 203, - GreaterThanOrEqualExpression = 204, - InstanceOfExpression = 205, - InExpression = 206, - LeftShiftExpression = 207, - SignedRightShiftExpression = 208, - UnsignedRightShiftExpression = 209, - MultiplyExpression = 210, - DivideExpression = 211, - ModuloExpression = 212, - AddExpression = 213, - SubtractExpression = 214, - PostIncrementExpression = 215, - PostDecrementExpression = 216, - MemberAccessExpression = 217, - InvocationExpression = 218, - ArrayLiteralExpression = 219, - ObjectLiteralExpression = 220, - ObjectCreationExpression = 221, - ParenthesizedExpression = 222, - ParenthesizedArrowFunctionExpression = 223, - SimpleArrowFunctionExpression = 224, - CastExpression = 225, - ElementAccessExpression = 226, - FunctionExpression = 227, - StringTemplateSubstitutionExpression = 228, - SubstitutionStringTemplate = 229, - NoSubstitutionStringTemplateInvocationExpression = 230, - SubstitutionStringTemplateInvocationExpression = 231, - OmittedExpression = 232, - VariableDeclaration = 233, - VariableDeclarator = 234, - ArgumentList = 235, - ParameterList = 236, - TypeArgumentList = 237, - TypeParameterList = 238, - ExtendsHeritageClause = 239, - ImplementsHeritageClause = 240, - EqualsValueClause = 241, - CaseSwitchClause = 242, - DefaultSwitchClause = 243, - ElseClause = 244, - CatchClause = 245, - FinallyClause = 246, - TypeParameter = 247, - Constraint = 248, - SimplePropertyAssignment = 249, - FunctionPropertyAssignment = 250, - Parameter = 251, - EnumElement = 252, - TypeAnnotation = 253, - ExternalModuleReference = 254, - ModuleNameModuleReference = 255, - Last = 255, - FirstStandardKeyword = 20, - LastStandardKeyword = 48, - FirstFutureReservedKeyword = 49, - LastFutureReservedKeyword = 55, - FirstFutureReservedStrictKeyword = 56, - LastFutureReservedStrictKeyword = 64, - FirstTypeScriptKeyword = 65, - LastTypeScriptKeyword = 74, - FirstKeyword = 20, - LastKeyword = 74, - FirstToken = 9, - LastToken = 124, - FirstPunctuation = 75, - LastPunctuation = 124, - FirstFixedWidth = 20, - LastFixedWidth = 124, - FirstTrivia = 4, - LastTrivia = 8, - } -} -declare module TypeScript.SyntaxFacts { - function getTokenKind(text: string): SyntaxKind; - function getText(kind: SyntaxKind): string; - function isTokenKind(kind: SyntaxKind): boolean; - function isAnyKeyword(kind: SyntaxKind): boolean; - function isStandardKeyword(kind: SyntaxKind): boolean; - function isFutureReservedKeyword(kind: SyntaxKind): boolean; - function isFutureReservedStrictKeyword(kind: SyntaxKind): boolean; - function isAnyPunctuation(kind: SyntaxKind): boolean; - function isPrefixUnaryExpressionOperatorToken(tokenKind: SyntaxKind): boolean; - function isBinaryExpressionOperatorToken(tokenKind: SyntaxKind): boolean; - function getPrefixUnaryExpressionFromOperatorToken(tokenKind: SyntaxKind): SyntaxKind; - function getPostfixUnaryExpressionFromOperatorToken(tokenKind: SyntaxKind): SyntaxKind; - function getBinaryExpressionFromOperatorToken(tokenKind: SyntaxKind): SyntaxKind; - function getOperatorTokenFromBinaryExpression(tokenKind: SyntaxKind): SyntaxKind; - function isAnyDivideToken(kind: SyntaxKind): boolean; - function isAnyDivideOrRegularExpressionToken(kind: SyntaxKind): boolean; -} -declare var argumentChecks: boolean; -declare var forPrettyPrinter: boolean; -interface ITypeDefinition { - name: string; - baseType: string; - interfaces?: string[]; - children: IMemberDefinition[]; - isTypeScriptSpecific: boolean; -} -interface IMemberDefinition { - name: string; - type?: string; - isToken?: boolean; - isList?: boolean; - isSeparatedList?: boolean; - requiresAtLeastOneItem?: boolean; - isOptional?: boolean; - tokenKinds?: string[]; - isTypeScriptSpecific: boolean; - elementType?: string; -} -declare var interfaces: TypeScript.IIndexable; -declare var definitions: ITypeDefinition[]; -declare function getStringWithoutSuffix(definition: string): string; -declare function getNameWithoutSuffix(definition: ITypeDefinition): string; -declare function getType(child: IMemberDefinition): string; -declare var hasKind: boolean; -declare function pascalCase(value: string): string; -declare function camelCase(value: string): string; -declare function getSafeName(child: IMemberDefinition): string; -declare function getPropertyAccess(child: IMemberDefinition): string; -declare function generateProperties(definition: ITypeDefinition): string; -declare function generateNullChecks(definition: ITypeDefinition): string; -declare function generateIfKindCheck(child: IMemberDefinition, tokenKinds: string[], indent: string): string; -declare function generateSwitchCase(tokenKind: string, indent: string): string; -declare function generateBreakStatement(indent: string): string; -declare function generateSwitchCases(tokenKinds: string[], indent: string): string; -declare function generateDefaultCase(child: IMemberDefinition, indent: string): string; -declare function generateSwitchKindCheck(child: IMemberDefinition, tokenKinds: string[], indent: string): string; -declare function tokenKinds(child: IMemberDefinition): string[]; -declare function generateKindCheck(child: IMemberDefinition): string; -declare function generateKindChecks(definition: ITypeDefinition): string; -declare function generateArgumentChecks(definition: ITypeDefinition): string; -declare function generateConstructor(definition: ITypeDefinition): string; -declare function isOptional(child: IMemberDefinition): boolean; -declare function generateFactory1Method(definition: ITypeDefinition): string; -declare function isKeywordOrPunctuation(kind: string): boolean; -declare function isDefaultConstructable(definition: ITypeDefinition): boolean; -declare function isMandatory(child: IMemberDefinition): boolean; -declare function generateFactory2Method(definition: ITypeDefinition): string; -declare function generateFactoryMethod(definition: ITypeDefinition): string; -declare function generateAcceptMethods(definition: ITypeDefinition): string; -declare function generateIsMethod(definition: ITypeDefinition): string; -declare function generateKindMethod(definition: ITypeDefinition): string; -declare function generateSlotMethods(definition: ITypeDefinition): string; -declare function generateFirstTokenMethod(definition: ITypeDefinition): string; -declare function generateLastTokenMethod(definition: ITypeDefinition): string; -declare function generateInsertChildrenIntoMethod(definition: ITypeDefinition): string; -declare function baseType(definition: ITypeDefinition): ITypeDefinition; -declare function memberDefinitionType(child: IMemberDefinition): ITypeDefinition; -declare function derivesFrom(def1: ITypeDefinition, def2: ITypeDefinition): boolean; -declare function contains(definition: ITypeDefinition, child: IMemberDefinition): boolean; -declare function generateAccessors(definition: ITypeDefinition): string; -declare function generateWithMethod(definition: ITypeDefinition, child: IMemberDefinition): string; -declare function generateWithMethods(definition: ITypeDefinition): string; -declare function generateTriviaMethods(definition: ITypeDefinition): string; -declare function generateUpdateMethod(definition: ITypeDefinition): string; -declare function generateIsTypeScriptSpecificMethod(definition: ITypeDefinition): string; -declare function couldBeRegularExpressionToken(child: IMemberDefinition): boolean; -declare function generateStructuralEqualsMethod(definition: ITypeDefinition): string; -declare function generateNode(definition: ITypeDefinition): string; -declare function generateNodes(): string; -declare function isInterface(name: string): boolean; -declare function isNodeOrToken(child: IMemberDefinition): boolean; -declare function generateRewriter(): string; -declare function generateToken(isFixedWidth: boolean, leading: boolean, trailing: boolean): string; -declare function generateTokens(): string; -declare function generateWalker(): string; -declare function firstEnumName(e: any, value: number): any; -declare function generateKeywordCondition(keywords: { - text: string; - kind: TypeScript.SyntaxKind; -}[], currentCharacter: number, indent: string): string; -declare function generateScannerUtilities(): string; -declare function generateVisitor(): string; -declare function generateFactory(): string; -declare var syntaxNodes: string; -declare var rewriter: string; -declare var tokens: string; -declare var walker: string; -declare var scannerUtilities: string; -declare var visitor: string; -declare var factory: string; diff --git a/src/services/syntax/SyntaxGenerator.js b/src/services/syntax/SyntaxGenerator.js deleted file mode 100644 index 2576aab73d7..00000000000 --- a/src/services/syntax/SyntaxGenerator.js +++ /dev/null @@ -1,2277 +0,0 @@ -var sys = (function () { - function getWScriptSystem() { - var fso = new ActiveXObject("Scripting.FileSystemObject"); - var fileStream = new ActiveXObject("ADODB.Stream"); - fileStream.Type = 2; - var binaryStream = new ActiveXObject("ADODB.Stream"); - binaryStream.Type = 1; - var args = []; - for (var i = 0; i < WScript.Arguments.length; i++) { - args[i] = WScript.Arguments.Item(i); - } - function readFile(fileName, encoding) { - if (!fso.FileExists(fileName)) { - return undefined; - } - fileStream.Open(); - try { - if (encoding) { - fileStream.Charset = encoding; - fileStream.LoadFromFile(fileName); - } - else { - fileStream.Charset = "x-ansi"; - fileStream.LoadFromFile(fileName); - var bom = fileStream.ReadText(2) || ""; - fileStream.Position = 0; - fileStream.Charset = bom.length >= 2 && (bom.charCodeAt(0) === 0xFF && bom.charCodeAt(1) === 0xFE || bom.charCodeAt(0) === 0xFE && bom.charCodeAt(1) === 0xFF) ? "unicode" : "utf-8"; - } - return fileStream.ReadText(); - } - catch (e) { - throw e; - } - finally { - fileStream.Close(); - } - } - function writeFile(fileName, data, writeByteOrderMark) { - fileStream.Open(); - binaryStream.Open(); - try { - fileStream.Charset = "utf-8"; - fileStream.WriteText(data); - if (writeByteOrderMark) { - fileStream.Position = 0; - } - else { - fileStream.Position = 3; - } - fileStream.CopyTo(binaryStream); - binaryStream.SaveToFile(fileName, 2); - } - finally { - binaryStream.Close(); - fileStream.Close(); - } - } - return { - args: args, - newLine: "\r\n", - useCaseSensitiveFileNames: false, - write: function (s) { - WScript.StdOut.Write(s); - }, - readFile: readFile, - writeFile: writeFile, - resolvePath: function (path) { - return fso.GetAbsolutePathName(path); - }, - fileExists: function (path) { - return fso.FileExists(path); - }, - directoryExists: function (path) { - return fso.FolderExists(path); - }, - createDirectory: function (directoryName) { - if (!this.directoryExists(directoryName)) { - fso.CreateFolder(directoryName); - } - }, - getExecutingFilePath: function () { - return WScript.ScriptFullName; - }, - getCurrentDirectory: function () { - return new ActiveXObject("WScript.Shell").CurrentDirectory; - }, - exit: function (exitCode) { - try { - WScript.Quit(exitCode); - } - catch (e) { - } - } - }; - } - function getNodeSystem() { - var _fs = require("fs"); - var _path = require("path"); - var _os = require('os'); - var platform = _os.platform(); - var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; - function readFile(fileName, encoding) { - if (!_fs.existsSync(fileName)) { - return undefined; - } - var buffer = _fs.readFileSync(fileName); - var len = buffer.length; - if (len >= 2 && buffer[0] === 0xFE && buffer[1] === 0xFF) { - len &= ~1; - for (var i = 0; i < len; i += 2) { - var temp = buffer[i]; - buffer[i] = buffer[i + 1]; - buffer[i + 1] = temp; - } - return buffer.toString("utf16le", 2); - } - if (len >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) { - return buffer.toString("utf16le", 2); - } - if (len >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { - return buffer.toString("utf8", 3); - } - return buffer.toString("utf8"); - } - function writeFile(fileName, data, writeByteOrderMark) { - if (writeByteOrderMark) { - data = '\uFEFF' + data; - } - _fs.writeFileSync(fileName, data, "utf8"); - } - return { - args: process.argv.slice(2), - newLine: _os.EOL, - useCaseSensitiveFileNames: useCaseSensitiveFileNames, - write: function (s) { - _fs.writeSync(1, s); - }, - readFile: readFile, - writeFile: writeFile, - watchFile: function (fileName, callback) { - _fs.watchFile(fileName, { persistent: true, interval: 250 }, fileChanged); - return { - close: function () { - _fs.unwatchFile(fileName, fileChanged); - } - }; - function fileChanged(curr, prev) { - if (+curr.mtime <= +prev.mtime) { - return; - } - callback(fileName); - } - ; - }, - resolvePath: function (path) { - return _path.resolve(path); - }, - fileExists: function (path) { - return _fs.existsSync(path); - }, - directoryExists: function (path) { - return _fs.existsSync(path) && _fs.statSync(path).isDirectory(); - }, - createDirectory: function (directoryName) { - if (!this.directoryExists(directoryName)) { - _fs.mkdirSync(directoryName); - } - }, - getExecutingFilePath: function () { - return process.mainModule.filename; - }, - getCurrentDirectory: function () { - return process.cwd(); - }, - getMemoryUsage: function () { - if (global.gc) { - global.gc(); - } - return process.memoryUsage().heapUsed; - }, - exit: function (exitCode) { - process.exit(exitCode); - } - }; - } - if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { - return getWScriptSystem(); - } - else if (typeof module !== "undefined" && module.exports) { - return getNodeSystem(); - } - else { - return undefined; - } -})(); -var TypeScript; -(function (TypeScript) { - var Errors = (function () { - function Errors() { - } - Errors.argument = function (argument, message) { - return new Error("Invalid argument: " + argument + ". " + message); - }; - Errors.argumentOutOfRange = function (argument) { - return new Error("Argument out of range: " + argument); - }; - Errors.argumentNull = function (argument) { - return new Error("Argument null: " + argument); - }; - Errors.abstract = function () { - return new Error("Operation not implemented properly by subclass."); - }; - Errors.notYetImplemented = function () { - return new Error("Not yet implemented."); - }; - Errors.invalidOperation = function (message) { - return new Error("Invalid operation: " + message); - }; - return Errors; - })(); - TypeScript.Errors = Errors; -})(TypeScript || (TypeScript = {})); -var TypeScript; -(function (TypeScript) { - var ArrayUtilities = (function () { - function ArrayUtilities() { - } - ArrayUtilities.sequenceEquals = function (array1, array2, equals) { - if (array1 === array2) { - return true; - } - if (!array1 || !array2) { - return false; - } - if (array1.length !== array2.length) { - return false; - } - for (var i = 0, n = array1.length; i < n; i++) { - if (!equals(array1[i], array2[i])) { - return false; - } - } - return true; - }; - ArrayUtilities.contains = function (array, value) { - for (var i = 0; i < array.length; i++) { - if (array[i] === value) { - return true; - } - } - return false; - }; - ArrayUtilities.distinct = function (array, equalsFn) { - var result = []; - for (var i = 0, n = array.length; i < n; i++) { - var current = array[i]; - for (var j = 0; j < result.length; j++) { - if (equalsFn(result[j], current)) { - break; - } - } - if (j === result.length) { - result.push(current); - } - } - return result; - }; - ArrayUtilities.last = function (array) { - if (array.length === 0) { - throw TypeScript.Errors.argumentOutOfRange('array'); - } - return array[array.length - 1]; - }; - ArrayUtilities.lastOrDefault = function (array, predicate) { - for (var i = array.length - 1; i >= 0; i--) { - var v = array[i]; - if (predicate(v, i)) { - return v; - } - } - return undefined; - }; - ArrayUtilities.firstOrDefault = function (array, func) { - for (var i = 0, n = array.length; i < n; i++) { - var value = array[i]; - if (func(value, i)) { - return value; - } - } - return undefined; - }; - ArrayUtilities.first = function (array, func) { - for (var i = 0, n = array.length; i < n; i++) { - var value = array[i]; - if (!func || func(value, i)) { - return value; - } - } - throw TypeScript.Errors.invalidOperation(); - }; - ArrayUtilities.sum = function (array, func) { - var result = 0; - for (var i = 0, n = array.length; i < n; i++) { - result += func(array[i]); - } - return result; - }; - ArrayUtilities.select = function (values, func) { - var result = new Array(values.length); - for (var i = 0; i < values.length; i++) { - result[i] = func(values[i]); - } - return result; - }; - ArrayUtilities.where = function (values, func) { - var result = new Array(); - for (var i = 0; i < values.length; i++) { - if (func(values[i])) { - result.push(values[i]); - } - } - return result; - }; - ArrayUtilities.any = function (array, func) { - for (var i = 0, n = array.length; i < n; i++) { - if (func(array[i])) { - return true; - } - } - return false; - }; - ArrayUtilities.all = function (array, func) { - for (var i = 0, n = array.length; i < n; i++) { - if (!func(array[i])) { - return false; - } - } - return true; - }; - ArrayUtilities.binarySearch = function (array, value) { - var low = 0; - var high = array.length - 1; - while (low <= high) { - var middle = low + ((high - low) >> 1); - var midValue = array[middle]; - if (midValue === value) { - return middle; - } - else if (midValue > value) { - high = middle - 1; - } - else { - low = middle + 1; - } - } - return ~low; - }; - ArrayUtilities.createArray = function (length, defaultValue) { - var result = new Array(length); - for (var i = 0; i < length; i++) { - result[i] = defaultValue; - } - return result; - }; - ArrayUtilities.grow = function (array, length, defaultValue) { - var count = length - array.length; - for (var i = 0; i < count; i++) { - array.push(defaultValue); - } - }; - ArrayUtilities.copy = function (sourceArray, sourceIndex, destinationArray, destinationIndex, length) { - for (var i = 0; i < length; i++) { - destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; - } - }; - ArrayUtilities.indexOf = function (array, predicate) { - for (var i = 0, n = array.length; i < n; i++) { - if (predicate(array[i])) { - return i; - } - } - return -1; - }; - return ArrayUtilities; - })(); - TypeScript.ArrayUtilities = ArrayUtilities; -})(TypeScript || (TypeScript = {})); -var TypeScript; -(function (TypeScript) { - var StringUtilities = (function () { - function StringUtilities() { - } - StringUtilities.isString = function (value) { - return Object.prototype.toString.apply(value, []) === '[object String]'; - }; - StringUtilities.endsWith = function (string, value) { - return string.substring(string.length - value.length, string.length) === value; - }; - StringUtilities.startsWith = function (string, value) { - return string.substr(0, value.length) === value; - }; - StringUtilities.repeat = function (value, count) { - return Array(count + 1).join(value); - }; - return StringUtilities; - })(); - TypeScript.StringUtilities = StringUtilities; -})(TypeScript || (TypeScript = {})); -var TypeScript; -(function (TypeScript) { - (function (SyntaxKind) { - SyntaxKind[SyntaxKind["None"] = 0] = "None"; - SyntaxKind[SyntaxKind["List"] = 1] = "List"; - SyntaxKind[SyntaxKind["WhitespaceTrivia"] = 2] = "WhitespaceTrivia"; - SyntaxKind[SyntaxKind["NewLineTrivia"] = 3] = "NewLineTrivia"; - SyntaxKind[SyntaxKind["MultiLineCommentTrivia"] = 4] = "MultiLineCommentTrivia"; - SyntaxKind[SyntaxKind["SingleLineCommentTrivia"] = 5] = "SingleLineCommentTrivia"; - SyntaxKind[SyntaxKind["SkippedTokenTrivia"] = 6] = "SkippedTokenTrivia"; - SyntaxKind[SyntaxKind["ErrorToken"] = 7] = "ErrorToken"; - SyntaxKind[SyntaxKind["EndOfFileToken"] = 8] = "EndOfFileToken"; - SyntaxKind[SyntaxKind["IdentifierName"] = 9] = "IdentifierName"; - SyntaxKind[SyntaxKind["RegularExpressionLiteral"] = 10] = "RegularExpressionLiteral"; - SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral"; - SyntaxKind[SyntaxKind["StringLiteral"] = 12] = "StringLiteral"; - SyntaxKind[SyntaxKind["NoSubstitutionTemplateToken"] = 13] = "NoSubstitutionTemplateToken"; - SyntaxKind[SyntaxKind["TemplateStartToken"] = 14] = "TemplateStartToken"; - SyntaxKind[SyntaxKind["TemplateMiddleToken"] = 15] = "TemplateMiddleToken"; - SyntaxKind[SyntaxKind["TemplateEndToken"] = 16] = "TemplateEndToken"; - SyntaxKind[SyntaxKind["BreakKeyword"] = 17] = "BreakKeyword"; - SyntaxKind[SyntaxKind["CaseKeyword"] = 18] = "CaseKeyword"; - SyntaxKind[SyntaxKind["CatchKeyword"] = 19] = "CatchKeyword"; - SyntaxKind[SyntaxKind["ContinueKeyword"] = 20] = "ContinueKeyword"; - SyntaxKind[SyntaxKind["DebuggerKeyword"] = 21] = "DebuggerKeyword"; - SyntaxKind[SyntaxKind["DefaultKeyword"] = 22] = "DefaultKeyword"; - SyntaxKind[SyntaxKind["DeleteKeyword"] = 23] = "DeleteKeyword"; - SyntaxKind[SyntaxKind["DoKeyword"] = 24] = "DoKeyword"; - SyntaxKind[SyntaxKind["ElseKeyword"] = 25] = "ElseKeyword"; - SyntaxKind[SyntaxKind["FalseKeyword"] = 26] = "FalseKeyword"; - SyntaxKind[SyntaxKind["FinallyKeyword"] = 27] = "FinallyKeyword"; - SyntaxKind[SyntaxKind["ForKeyword"] = 28] = "ForKeyword"; - SyntaxKind[SyntaxKind["FunctionKeyword"] = 29] = "FunctionKeyword"; - SyntaxKind[SyntaxKind["IfKeyword"] = 30] = "IfKeyword"; - SyntaxKind[SyntaxKind["InKeyword"] = 31] = "InKeyword"; - SyntaxKind[SyntaxKind["InstanceOfKeyword"] = 32] = "InstanceOfKeyword"; - SyntaxKind[SyntaxKind["NewKeyword"] = 33] = "NewKeyword"; - SyntaxKind[SyntaxKind["NullKeyword"] = 34] = "NullKeyword"; - SyntaxKind[SyntaxKind["ReturnKeyword"] = 35] = "ReturnKeyword"; - SyntaxKind[SyntaxKind["SwitchKeyword"] = 36] = "SwitchKeyword"; - SyntaxKind[SyntaxKind["ThisKeyword"] = 37] = "ThisKeyword"; - SyntaxKind[SyntaxKind["ThrowKeyword"] = 38] = "ThrowKeyword"; - SyntaxKind[SyntaxKind["TrueKeyword"] = 39] = "TrueKeyword"; - SyntaxKind[SyntaxKind["TryKeyword"] = 40] = "TryKeyword"; - SyntaxKind[SyntaxKind["TypeOfKeyword"] = 41] = "TypeOfKeyword"; - SyntaxKind[SyntaxKind["VarKeyword"] = 42] = "VarKeyword"; - SyntaxKind[SyntaxKind["VoidKeyword"] = 43] = "VoidKeyword"; - SyntaxKind[SyntaxKind["WhileKeyword"] = 44] = "WhileKeyword"; - SyntaxKind[SyntaxKind["WithKeyword"] = 45] = "WithKeyword"; - SyntaxKind[SyntaxKind["ClassKeyword"] = 46] = "ClassKeyword"; - SyntaxKind[SyntaxKind["ConstKeyword"] = 47] = "ConstKeyword"; - SyntaxKind[SyntaxKind["EnumKeyword"] = 48] = "EnumKeyword"; - SyntaxKind[SyntaxKind["ExportKeyword"] = 49] = "ExportKeyword"; - SyntaxKind[SyntaxKind["ExtendsKeyword"] = 50] = "ExtendsKeyword"; - SyntaxKind[SyntaxKind["ImportKeyword"] = 51] = "ImportKeyword"; - SyntaxKind[SyntaxKind["SuperKeyword"] = 52] = "SuperKeyword"; - SyntaxKind[SyntaxKind["ImplementsKeyword"] = 53] = "ImplementsKeyword"; - SyntaxKind[SyntaxKind["InterfaceKeyword"] = 54] = "InterfaceKeyword"; - SyntaxKind[SyntaxKind["LetKeyword"] = 55] = "LetKeyword"; - SyntaxKind[SyntaxKind["PackageKeyword"] = 56] = "PackageKeyword"; - SyntaxKind[SyntaxKind["PrivateKeyword"] = 57] = "PrivateKeyword"; - SyntaxKind[SyntaxKind["ProtectedKeyword"] = 58] = "ProtectedKeyword"; - SyntaxKind[SyntaxKind["PublicKeyword"] = 59] = "PublicKeyword"; - SyntaxKind[SyntaxKind["StaticKeyword"] = 60] = "StaticKeyword"; - SyntaxKind[SyntaxKind["YieldKeyword"] = 61] = "YieldKeyword"; - SyntaxKind[SyntaxKind["AnyKeyword"] = 62] = "AnyKeyword"; - SyntaxKind[SyntaxKind["AsyncKeyword"] = 63] = "AsyncKeyword"; - SyntaxKind[SyntaxKind["AwaitKeyword"] = 64] = "AwaitKeyword"; - SyntaxKind[SyntaxKind["BooleanKeyword"] = 65] = "BooleanKeyword"; - SyntaxKind[SyntaxKind["ConstructorKeyword"] = 66] = "ConstructorKeyword"; - SyntaxKind[SyntaxKind["DeclareKeyword"] = 67] = "DeclareKeyword"; - SyntaxKind[SyntaxKind["GetKeyword"] = 68] = "GetKeyword"; - SyntaxKind[SyntaxKind["ModuleKeyword"] = 69] = "ModuleKeyword"; - SyntaxKind[SyntaxKind["RequireKeyword"] = 70] = "RequireKeyword"; - SyntaxKind[SyntaxKind["NumberKeyword"] = 71] = "NumberKeyword"; - SyntaxKind[SyntaxKind["SetKeyword"] = 72] = "SetKeyword"; - SyntaxKind[SyntaxKind["TypeKeyword"] = 73] = "TypeKeyword"; - SyntaxKind[SyntaxKind["StringKeyword"] = 74] = "StringKeyword"; - SyntaxKind[SyntaxKind["OpenBraceToken"] = 75] = "OpenBraceToken"; - SyntaxKind[SyntaxKind["CloseBraceToken"] = 76] = "CloseBraceToken"; - SyntaxKind[SyntaxKind["OpenParenToken"] = 77] = "OpenParenToken"; - SyntaxKind[SyntaxKind["CloseParenToken"] = 78] = "CloseParenToken"; - SyntaxKind[SyntaxKind["OpenBracketToken"] = 79] = "OpenBracketToken"; - SyntaxKind[SyntaxKind["CloseBracketToken"] = 80] = "CloseBracketToken"; - SyntaxKind[SyntaxKind["DotToken"] = 81] = "DotToken"; - SyntaxKind[SyntaxKind["DotDotDotToken"] = 82] = "DotDotDotToken"; - SyntaxKind[SyntaxKind["SemicolonToken"] = 83] = "SemicolonToken"; - SyntaxKind[SyntaxKind["CommaToken"] = 84] = "CommaToken"; - SyntaxKind[SyntaxKind["LessThanToken"] = 85] = "LessThanToken"; - SyntaxKind[SyntaxKind["GreaterThanToken"] = 86] = "GreaterThanToken"; - SyntaxKind[SyntaxKind["LessThanEqualsToken"] = 87] = "LessThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanEqualsToken"] = 88] = "GreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["EqualsEqualsToken"] = 89] = "EqualsEqualsToken"; - SyntaxKind[SyntaxKind["EqualsGreaterThanToken"] = 90] = "EqualsGreaterThanToken"; - SyntaxKind[SyntaxKind["ExclamationEqualsToken"] = 91] = "ExclamationEqualsToken"; - SyntaxKind[SyntaxKind["EqualsEqualsEqualsToken"] = 92] = "EqualsEqualsEqualsToken"; - SyntaxKind[SyntaxKind["ExclamationEqualsEqualsToken"] = 93] = "ExclamationEqualsEqualsToken"; - SyntaxKind[SyntaxKind["PlusToken"] = 94] = "PlusToken"; - SyntaxKind[SyntaxKind["MinusToken"] = 95] = "MinusToken"; - SyntaxKind[SyntaxKind["AsteriskToken"] = 96] = "AsteriskToken"; - SyntaxKind[SyntaxKind["PercentToken"] = 97] = "PercentToken"; - SyntaxKind[SyntaxKind["PlusPlusToken"] = 98] = "PlusPlusToken"; - SyntaxKind[SyntaxKind["MinusMinusToken"] = 99] = "MinusMinusToken"; - SyntaxKind[SyntaxKind["LessThanLessThanToken"] = 100] = "LessThanLessThanToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanToken"] = 101] = "GreaterThanGreaterThanToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanToken"] = 102] = "GreaterThanGreaterThanGreaterThanToken"; - SyntaxKind[SyntaxKind["AmpersandToken"] = 103] = "AmpersandToken"; - SyntaxKind[SyntaxKind["BarToken"] = 104] = "BarToken"; - SyntaxKind[SyntaxKind["CaretToken"] = 105] = "CaretToken"; - SyntaxKind[SyntaxKind["ExclamationToken"] = 106] = "ExclamationToken"; - SyntaxKind[SyntaxKind["TildeToken"] = 107] = "TildeToken"; - SyntaxKind[SyntaxKind["AmpersandAmpersandToken"] = 108] = "AmpersandAmpersandToken"; - SyntaxKind[SyntaxKind["BarBarToken"] = 109] = "BarBarToken"; - SyntaxKind[SyntaxKind["QuestionToken"] = 110] = "QuestionToken"; - SyntaxKind[SyntaxKind["ColonToken"] = 111] = "ColonToken"; - SyntaxKind[SyntaxKind["EqualsToken"] = 112] = "EqualsToken"; - SyntaxKind[SyntaxKind["PlusEqualsToken"] = 113] = "PlusEqualsToken"; - SyntaxKind[SyntaxKind["MinusEqualsToken"] = 114] = "MinusEqualsToken"; - SyntaxKind[SyntaxKind["AsteriskEqualsToken"] = 115] = "AsteriskEqualsToken"; - SyntaxKind[SyntaxKind["PercentEqualsToken"] = 116] = "PercentEqualsToken"; - SyntaxKind[SyntaxKind["LessThanLessThanEqualsToken"] = 117] = "LessThanLessThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanEqualsToken"] = 118] = "GreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["GreaterThanGreaterThanGreaterThanEqualsToken"] = 119] = "GreaterThanGreaterThanGreaterThanEqualsToken"; - SyntaxKind[SyntaxKind["AmpersandEqualsToken"] = 120] = "AmpersandEqualsToken"; - SyntaxKind[SyntaxKind["BarEqualsToken"] = 121] = "BarEqualsToken"; - SyntaxKind[SyntaxKind["CaretEqualsToken"] = 122] = "CaretEqualsToken"; - SyntaxKind[SyntaxKind["SlashToken"] = 123] = "SlashToken"; - SyntaxKind[SyntaxKind["SlashEqualsToken"] = 124] = "SlashEqualsToken"; - SyntaxKind[SyntaxKind["SourceUnit"] = 125] = "SourceUnit"; - SyntaxKind[SyntaxKind["QualifiedName"] = 126] = "QualifiedName"; - SyntaxKind[SyntaxKind["ObjectType"] = 127] = "ObjectType"; - SyntaxKind[SyntaxKind["FunctionType"] = 128] = "FunctionType"; - SyntaxKind[SyntaxKind["ArrayType"] = 129] = "ArrayType"; - SyntaxKind[SyntaxKind["ConstructorType"] = 130] = "ConstructorType"; - SyntaxKind[SyntaxKind["GenericType"] = 131] = "GenericType"; - SyntaxKind[SyntaxKind["TypeQuery"] = 132] = "TypeQuery"; - SyntaxKind[SyntaxKind["TupleType"] = 133] = "TupleType"; - SyntaxKind[SyntaxKind["UnionType"] = 134] = "UnionType"; - SyntaxKind[SyntaxKind["ParenthesizedType"] = 135] = "ParenthesizedType"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 136] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 137] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 138] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 139] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 140] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 141] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 142] = "ExportAssignment"; - SyntaxKind[SyntaxKind["MethodDeclaration"] = 143] = "MethodDeclaration"; - SyntaxKind[SyntaxKind["PropertyDeclaration"] = 144] = "PropertyDeclaration"; - SyntaxKind[SyntaxKind["ConstructorDeclaration"] = 145] = "ConstructorDeclaration"; - SyntaxKind[SyntaxKind["GetAccessor"] = 146] = "GetAccessor"; - SyntaxKind[SyntaxKind["SetAccessor"] = 147] = "SetAccessor"; - SyntaxKind[SyntaxKind["PropertySignature"] = 148] = "PropertySignature"; - SyntaxKind[SyntaxKind["CallSignature"] = 149] = "CallSignature"; - SyntaxKind[SyntaxKind["ConstructSignature"] = 150] = "ConstructSignature"; - SyntaxKind[SyntaxKind["IndexSignature"] = 151] = "IndexSignature"; - SyntaxKind[SyntaxKind["MethodSignature"] = 152] = "MethodSignature"; - SyntaxKind[SyntaxKind["Block"] = 153] = "Block"; - SyntaxKind[SyntaxKind["IfStatement"] = 154] = "IfStatement"; - SyntaxKind[SyntaxKind["VariableStatement"] = 155] = "VariableStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 156] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 157] = "ReturnStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 158] = "SwitchStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 159] = "BreakStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 160] = "ContinueStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 161] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 162] = "ForInStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 163] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 164] = "ThrowStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 165] = "WhileStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 166] = "TryStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 167] = "LabeledStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 168] = "DoStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 169] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 170] = "WithStatement"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 171] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 172] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 173] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 174] = "VoidExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 175] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 176] = "BinaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 177] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 178] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["InvocationExpression"] = 179] = "InvocationExpression"; - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 180] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 181] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectCreationExpression"] = 182] = "ObjectCreationExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 183] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["ParenthesizedArrowFunctionExpression"] = 184] = "ParenthesizedArrowFunctionExpression"; - SyntaxKind[SyntaxKind["SimpleArrowFunctionExpression"] = 185] = "SimpleArrowFunctionExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 186] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 187] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 188] = "FunctionExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 189] = "OmittedExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 190] = "TemplateExpression"; - SyntaxKind[SyntaxKind["TemplateAccessExpression"] = 191] = "TemplateAccessExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 192] = "YieldExpression"; - SyntaxKind[SyntaxKind["AwaitExpression"] = 193] = "AwaitExpression"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 194] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarator"] = 195] = "VariableDeclarator"; - SyntaxKind[SyntaxKind["ArgumentList"] = 196] = "ArgumentList"; - SyntaxKind[SyntaxKind["ParameterList"] = 197] = "ParameterList"; - SyntaxKind[SyntaxKind["TypeArgumentList"] = 198] = "TypeArgumentList"; - SyntaxKind[SyntaxKind["TypeParameterList"] = 199] = "TypeParameterList"; - SyntaxKind[SyntaxKind["HeritageClause"] = 200] = "HeritageClause"; - SyntaxKind[SyntaxKind["EqualsValueClause"] = 201] = "EqualsValueClause"; - SyntaxKind[SyntaxKind["CaseSwitchClause"] = 202] = "CaseSwitchClause"; - SyntaxKind[SyntaxKind["DefaultSwitchClause"] = 203] = "DefaultSwitchClause"; - SyntaxKind[SyntaxKind["ElseClause"] = 204] = "ElseClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 205] = "CatchClause"; - SyntaxKind[SyntaxKind["FinallyClause"] = 206] = "FinallyClause"; - SyntaxKind[SyntaxKind["TemplateClause"] = 207] = "TemplateClause"; - SyntaxKind[SyntaxKind["TypeParameter"] = 208] = "TypeParameter"; - SyntaxKind[SyntaxKind["Constraint"] = 209] = "Constraint"; - SyntaxKind[SyntaxKind["Parameter"] = 210] = "Parameter"; - SyntaxKind[SyntaxKind["EnumElement"] = 211] = "EnumElement"; - SyntaxKind[SyntaxKind["TypeAnnotation"] = 212] = "TypeAnnotation"; - SyntaxKind[SyntaxKind["ExpressionBody"] = 213] = "ExpressionBody"; - SyntaxKind[SyntaxKind["ComputedPropertyName"] = 214] = "ComputedPropertyName"; - SyntaxKind[SyntaxKind["PropertyAssignment"] = 215] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["TypeAlias"] = 216] = "TypeAlias"; - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 217] = "ExternalModuleReference"; - SyntaxKind[SyntaxKind["ModuleNameModuleReference"] = 218] = "ModuleNameModuleReference"; - SyntaxKind[SyntaxKind["FirstStandardKeyword"] = 17] = "FirstStandardKeyword"; - SyntaxKind[SyntaxKind["LastStandardKeyword"] = 45] = "LastStandardKeyword"; - SyntaxKind[SyntaxKind["FirstFutureReservedKeyword"] = 46] = "FirstFutureReservedKeyword"; - SyntaxKind[SyntaxKind["LastFutureReservedKeyword"] = 52] = "LastFutureReservedKeyword"; - SyntaxKind[SyntaxKind["FirstFutureReservedStrictKeyword"] = 53] = "FirstFutureReservedStrictKeyword"; - SyntaxKind[SyntaxKind["LastFutureReservedStrictKeyword"] = 61] = "LastFutureReservedStrictKeyword"; - SyntaxKind[SyntaxKind["FirstTypeScriptKeyword"] = 62] = "FirstTypeScriptKeyword"; - SyntaxKind[SyntaxKind["LastTypeScriptKeyword"] = 74] = "LastTypeScriptKeyword"; - SyntaxKind[SyntaxKind["FirstKeyword"] = 17] = "FirstKeyword"; - SyntaxKind[SyntaxKind["LastKeyword"] = 74] = "LastKeyword"; - SyntaxKind[SyntaxKind["FirstToken"] = 7] = "FirstToken"; - SyntaxKind[SyntaxKind["LastToken"] = 124] = "LastToken"; - SyntaxKind[SyntaxKind["FirstPunctuation"] = 75] = "FirstPunctuation"; - SyntaxKind[SyntaxKind["LastPunctuation"] = 124] = "LastPunctuation"; - SyntaxKind[SyntaxKind["FirstFixedWidth"] = 17] = "FirstFixedWidth"; - SyntaxKind[SyntaxKind["LastFixedWidth"] = 124] = "LastFixedWidth"; - SyntaxKind[SyntaxKind["FirstTrivia"] = 2] = "FirstTrivia"; - SyntaxKind[SyntaxKind["LastTrivia"] = 6] = "LastTrivia"; - SyntaxKind[SyntaxKind["FirstNode"] = 125] = "FirstNode"; - SyntaxKind[SyntaxKind["LastNode"] = 218] = "LastNode"; - })(TypeScript.SyntaxKind || (TypeScript.SyntaxKind = {})); - var SyntaxKind = TypeScript.SyntaxKind; -})(TypeScript || (TypeScript = {})); -var TypeScript; -(function (TypeScript) { - var SyntaxFacts; - (function (SyntaxFacts) { - var textToKeywordKind = { - "any": 62 /* AnyKeyword */, - "async": 63 /* AsyncKeyword */, - "await": 64 /* AwaitKeyword */, - "boolean": 65 /* BooleanKeyword */, - "break": 17 /* BreakKeyword */, - "case": 18 /* CaseKeyword */, - "catch": 19 /* CatchKeyword */, - "class": 46 /* ClassKeyword */, - "continue": 20 /* ContinueKeyword */, - "const": 47 /* ConstKeyword */, - "constructor": 66 /* ConstructorKeyword */, - "debugger": 21 /* DebuggerKeyword */, - "declare": 67 /* DeclareKeyword */, - "default": 22 /* DefaultKeyword */, - "delete": 23 /* DeleteKeyword */, - "do": 24 /* DoKeyword */, - "else": 25 /* ElseKeyword */, - "enum": 48 /* EnumKeyword */, - "export": 49 /* ExportKeyword */, - "extends": 50 /* ExtendsKeyword */, - "false": 26 /* FalseKeyword */, - "finally": 27 /* FinallyKeyword */, - "for": 28 /* ForKeyword */, - "function": 29 /* FunctionKeyword */, - "get": 68 /* GetKeyword */, - "if": 30 /* IfKeyword */, - "implements": 53 /* ImplementsKeyword */, - "import": 51 /* ImportKeyword */, - "in": 31 /* InKeyword */, - "instanceof": 32 /* InstanceOfKeyword */, - "interface": 54 /* InterfaceKeyword */, - "let": 55 /* LetKeyword */, - "module": 69 /* ModuleKeyword */, - "new": 33 /* NewKeyword */, - "null": 34 /* NullKeyword */, - "number": 71 /* NumberKeyword */, - "package": 56 /* PackageKeyword */, - "private": 57 /* PrivateKeyword */, - "protected": 58 /* ProtectedKeyword */, - "public": 59 /* PublicKeyword */, - "require": 70 /* RequireKeyword */, - "return": 35 /* ReturnKeyword */, - "set": 72 /* SetKeyword */, - "static": 60 /* StaticKeyword */, - "string": 74 /* StringKeyword */, - "super": 52 /* SuperKeyword */, - "switch": 36 /* SwitchKeyword */, - "this": 37 /* ThisKeyword */, - "throw": 38 /* ThrowKeyword */, - "true": 39 /* TrueKeyword */, - "try": 40 /* TryKeyword */, - "type": 73 /* TypeKeyword */, - "typeof": 41 /* TypeOfKeyword */, - "var": 42 /* VarKeyword */, - "void": 43 /* VoidKeyword */, - "while": 44 /* WhileKeyword */, - "with": 45 /* WithKeyword */, - "yield": 61 /* YieldKeyword */, - "{": 75 /* OpenBraceToken */, - "}": 76 /* CloseBraceToken */, - "(": 77 /* OpenParenToken */, - ")": 78 /* CloseParenToken */, - "[": 79 /* OpenBracketToken */, - "]": 80 /* CloseBracketToken */, - ".": 81 /* DotToken */, - "...": 82 /* DotDotDotToken */, - ";": 83 /* SemicolonToken */, - ",": 84 /* CommaToken */, - "<": 85 /* LessThanToken */, - ">": 86 /* GreaterThanToken */, - "<=": 87 /* LessThanEqualsToken */, - ">=": 88 /* GreaterThanEqualsToken */, - "==": 89 /* EqualsEqualsToken */, - "=>": 90 /* EqualsGreaterThanToken */, - "!=": 91 /* ExclamationEqualsToken */, - "===": 92 /* EqualsEqualsEqualsToken */, - "!==": 93 /* ExclamationEqualsEqualsToken */, - "+": 94 /* PlusToken */, - "-": 95 /* MinusToken */, - "*": 96 /* AsteriskToken */, - "%": 97 /* PercentToken */, - "++": 98 /* PlusPlusToken */, - "--": 99 /* MinusMinusToken */, - "<<": 100 /* LessThanLessThanToken */, - ">>": 101 /* GreaterThanGreaterThanToken */, - ">>>": 102 /* GreaterThanGreaterThanGreaterThanToken */, - "&": 103 /* AmpersandToken */, - "|": 104 /* BarToken */, - "^": 105 /* CaretToken */, - "!": 106 /* ExclamationToken */, - "~": 107 /* TildeToken */, - "&&": 108 /* AmpersandAmpersandToken */, - "||": 109 /* BarBarToken */, - "?": 110 /* QuestionToken */, - ":": 111 /* ColonToken */, - "=": 112 /* EqualsToken */, - "+=": 113 /* PlusEqualsToken */, - "-=": 114 /* MinusEqualsToken */, - "*=": 115 /* AsteriskEqualsToken */, - "%=": 116 /* PercentEqualsToken */, - "<<=": 117 /* LessThanLessThanEqualsToken */, - ">>=": 118 /* GreaterThanGreaterThanEqualsToken */, - ">>>=": 119 /* GreaterThanGreaterThanGreaterThanEqualsToken */, - "&=": 120 /* AmpersandEqualsToken */, - "|=": 121 /* BarEqualsToken */, - "^=": 122 /* CaretEqualsToken */, - "/": 123 /* SlashToken */, - "/=": 124 /* SlashEqualsToken */ - }; - var kindToText = new Array(); - for (var name in textToKeywordKind) { - if (textToKeywordKind.hasOwnProperty(name)) { - kindToText[textToKeywordKind[name]] = name; - } - } - kindToText[66 /* ConstructorKeyword */] = "constructor"; - function getTokenKind(text) { - if (textToKeywordKind.hasOwnProperty(text)) { - return textToKeywordKind[text]; - } - return 0 /* None */; - } - SyntaxFacts.getTokenKind = getTokenKind; - function getText(kind) { - var result = kindToText[kind]; - return result; - } - SyntaxFacts.getText = getText; - function isAnyKeyword(kind) { - return kind >= 17 /* FirstKeyword */ && kind <= 74 /* LastKeyword */; - } - SyntaxFacts.isAnyKeyword = isAnyKeyword; - function isAnyPunctuation(kind) { - return kind >= 75 /* FirstPunctuation */ && kind <= 124 /* LastPunctuation */; - } - SyntaxFacts.isAnyPunctuation = isAnyPunctuation; - function isPrefixUnaryExpressionOperatorToken(tokenKind) { - switch (tokenKind) { - case 94 /* PlusToken */: - case 95 /* MinusToken */: - case 107 /* TildeToken */: - case 106 /* ExclamationToken */: - case 98 /* PlusPlusToken */: - case 99 /* MinusMinusToken */: - return true; - default: - return false; - } - } - SyntaxFacts.isPrefixUnaryExpressionOperatorToken = isPrefixUnaryExpressionOperatorToken; - function isBinaryExpressionOperatorToken(tokenKind) { - switch (tokenKind) { - case 96 /* AsteriskToken */: - case 123 /* SlashToken */: - case 97 /* PercentToken */: - case 94 /* PlusToken */: - case 95 /* MinusToken */: - case 100 /* LessThanLessThanToken */: - case 101 /* GreaterThanGreaterThanToken */: - case 102 /* GreaterThanGreaterThanGreaterThanToken */: - case 85 /* LessThanToken */: - case 86 /* GreaterThanToken */: - case 87 /* LessThanEqualsToken */: - case 88 /* GreaterThanEqualsToken */: - case 32 /* InstanceOfKeyword */: - case 31 /* InKeyword */: - case 89 /* EqualsEqualsToken */: - case 91 /* ExclamationEqualsToken */: - case 92 /* EqualsEqualsEqualsToken */: - case 93 /* ExclamationEqualsEqualsToken */: - case 103 /* AmpersandToken */: - case 105 /* CaretToken */: - case 104 /* BarToken */: - case 108 /* AmpersandAmpersandToken */: - case 109 /* BarBarToken */: - case 121 /* BarEqualsToken */: - case 120 /* AmpersandEqualsToken */: - case 122 /* CaretEqualsToken */: - case 117 /* LessThanLessThanEqualsToken */: - case 118 /* GreaterThanGreaterThanEqualsToken */: - case 119 /* GreaterThanGreaterThanGreaterThanEqualsToken */: - case 113 /* PlusEqualsToken */: - case 114 /* MinusEqualsToken */: - case 115 /* AsteriskEqualsToken */: - case 124 /* SlashEqualsToken */: - case 116 /* PercentEqualsToken */: - case 112 /* EqualsToken */: - case 84 /* CommaToken */: - return true; - default: - return false; - } - } - SyntaxFacts.isBinaryExpressionOperatorToken = isBinaryExpressionOperatorToken; - function isAssignmentOperatorToken(tokenKind) { - switch (tokenKind) { - case 121 /* BarEqualsToken */: - case 120 /* AmpersandEqualsToken */: - case 122 /* CaretEqualsToken */: - case 117 /* LessThanLessThanEqualsToken */: - case 118 /* GreaterThanGreaterThanEqualsToken */: - case 119 /* GreaterThanGreaterThanGreaterThanEqualsToken */: - case 113 /* PlusEqualsToken */: - case 114 /* MinusEqualsToken */: - case 115 /* AsteriskEqualsToken */: - case 124 /* SlashEqualsToken */: - case 116 /* PercentEqualsToken */: - case 112 /* EqualsToken */: - return true; - default: - return false; - } - } - SyntaxFacts.isAssignmentOperatorToken = isAssignmentOperatorToken; - function isType(kind) { - switch (kind) { - case 129 /* ArrayType */: - case 62 /* AnyKeyword */: - case 71 /* NumberKeyword */: - case 65 /* BooleanKeyword */: - case 74 /* StringKeyword */: - case 43 /* VoidKeyword */: - case 128 /* FunctionType */: - case 127 /* ObjectType */: - case 130 /* ConstructorType */: - case 132 /* TypeQuery */: - case 131 /* GenericType */: - case 126 /* QualifiedName */: - case 9 /* IdentifierName */: - return true; - } - return false; - } - SyntaxFacts.isType = isType; - })(SyntaxFacts = TypeScript.SyntaxFacts || (TypeScript.SyntaxFacts = {})); -})(TypeScript || (TypeScript = {})); -var forPrettyPrinter = false; -var interfaces = { - IMemberDeclarationSyntax: 'IClassElementSyntax', - IStatementSyntax: 'IModuleElementSyntax', - INameSyntax: 'ITypeSyntax', - IUnaryExpressionSyntax: 'IExpressionSyntax', - IPostfixExpressionSyntax: 'IUnaryExpressionSyntax', - ILeftHandSideExpressionSyntax: 'IPostfixExpressionSyntax', - IMemberExpressionSyntax: 'ILeftHandSideExpressionSyntax', - ICallExpressionSyntax: 'ILeftHandSideExpressionSyntax', - IPrimaryExpressionSyntax: 'IMemberExpressionSyntax' -}; -var definitions = [ - { - name: 'SourceUnitSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'moduleElements', isList: true, elementType: 'IModuleElementSyntax' }, - { name: 'endOfFileToken', isToken: true } - ] - }, - { - name: 'ExternalModuleReferenceSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleReferenceSyntax'], - children: [ - { name: 'requireKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'stringLiteral', isToken: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ModuleNameModuleReferenceSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleReferenceSyntax'], - children: [ - { name: 'moduleName', type: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ImportDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'importKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'moduleReference', type: 'IModuleReferenceSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ExportAssignmentSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'exportKeyword', isToken: true, excludeFromAST: true }, - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ClassDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'classKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'heritageClauses', isList: true, elementType: 'HeritageClauseSyntax' }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'classElements', isList: true, elementType: 'IClassElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'InterfaceDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'interfaceKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'heritageClauses', isList: true, elementType: 'HeritageClauseSyntax' }, - { name: 'body', type: 'ObjectTypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'HeritageClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'extendsOrImplementsKeyword', isToken: true }, - { name: 'typeNames', isSeparatedList: true, requiresAtLeastOneItem: true, elementType: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ModuleDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'moduleKeyword', isToken: true, excludeFromAST: true }, - { name: 'name', type: 'INameSyntax' }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'moduleElements', isList: true, elementType: 'IModuleElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeAliasSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'typeKeyword', isToken: true }, - { name: 'identifier', isToken: true }, - { name: 'equalsToken', isToken: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'FunctionDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'functionKeyword', isToken: true, excludeFromAST: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'identifier', isToken: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ] - }, - { - name: 'ExpressionBody', - baseType: 'ISyntaxNode', - children: [ - { name: 'equalsGreaterThanToken', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax' } - ] - }, - { - name: 'VariableStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'variableDeclaration', type: 'VariableDeclarationSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'VariableDeclarationSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'varConstOrLetKeyword', isToken: true }, - { name: 'variableDeclarators', isSeparatedList: true, requiresAtLeastOneItem: true, elementType: 'VariableDeclaratorSyntax' } - ] - }, - { - name: 'VariableDeclaratorSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true } - ] - }, - { - name: 'EqualsValueClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'value', type: 'IExpressionSyntax' } - ] - }, - { - name: 'PrefixUnaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'operatorToken', isToken: true }, - { name: 'operand', type: 'IUnaryExpressionSyntax' } - ] - }, - { - name: 'ArrayLiteralExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'expressions', isSeparatedList: true, elementType: 'IExpressionSyntax' }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'OmittedExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [] - }, - { - name: 'ParenthesizedExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'SimpleArrowFunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'parameter', type: 'ParameterSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'body', type: 'BlockSyntax | IExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ParenthesizedArrowFunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, isOptional: true }, - { name: 'body', type: 'BlockSyntax | IExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'QualifiedNameSyntax', - baseType: 'ISyntaxNode', - interfaces: ['INameSyntax'], - children: [ - { name: 'left', type: 'INameSyntax' }, - { name: 'dotToken', isToken: true, excludeFromAST: true }, - { name: 'right', isToken: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeArgumentListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'lessThanToken', isToken: true }, - { name: 'typeArguments', isSeparatedList: true, elementType: 'ITypeSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ConstructorTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'FunctionTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ObjectTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'typeMembers', isList: true, elementType: 'ITypeMemberSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ArrayTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'type', type: 'ITypeSyntax' }, - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'GenericTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'name', type: 'INameSyntax' }, - { name: 'typeArgumentList', type: 'TypeArgumentListSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeQuerySyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'typeOfKeyword', isToken: true, excludeFromAST: true }, - { name: 'name', type: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'TupleTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'types', isSeparatedList: true, elementType: 'ITypeSyntax' }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'UnionTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'left', type: 'ITypeSyntax' }, - { name: 'barToken', isToken: true, excludeFromAST: true }, - { name: 'right', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ParenthesizedTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeAnnotationSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'BlockSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'equalsGreaterThanToken', isToken: true, isOptional: 'true' }, - { name: 'openBraceToken', isToken: true }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'ParameterSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'dotDotDotToken', isToken: true, isOptional: true, isTypeScriptSpecific: true }, - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'identifier', isToken: true }, - { name: 'questionToken', isToken: true, isOptional: true, isTypeScriptSpecific: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true, isTypeScriptSpecific: true } - ] - }, - { - name: 'PropertyAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'dotToken', isToken: true, excludeFromAST: true }, - { name: 'name', isToken: true } - ] - }, - { - name: 'PostfixUnaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPostfixExpressionSyntax'], - children: [ - { name: 'operand', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'operatorToken', isToken: true } - ] - }, - { - name: 'ElementAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'argumentExpression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'TemplateAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'templateExpression', type: 'IPrimaryExpressionSyntax' } - ] - }, - { - name: 'TemplateExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'templateStartToken', isToken: true, excludeFromAST: true }, - { name: 'templateClauses', isList: true, elementType: 'TemplateClauseSyntax' } - ] - }, - { - name: 'TemplateClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'templateMiddleOrEndToken', isToken: true, elementType: 'TemplateSpanSyntax' } - ] - }, - { - name: 'InvocationExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'argumentList', type: 'ArgumentListSyntax' } - ] - }, - { - name: 'ArgumentListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'typeArgumentList', type: 'TypeArgumentListSyntax', isOptional: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'arguments', isSeparatedList: true, elementType: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'BinaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'left', type: 'IExpressionSyntax' }, - { name: 'operatorToken', isToken: true }, - { name: 'right', type: 'IExpressionSyntax' } - ] - }, - { - name: 'ConditionalExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'questionToken', isToken: true, excludeFromAST: true }, - { name: 'whenTrue', type: 'IExpressionSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'whenFalse', type: 'IExpressionSyntax' } - ] - }, - { - name: 'ConstructSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'MethodSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'questionToken', isToken: true, isOptional: true, itTypeScriptSpecific: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' } - ] - }, - { - name: 'IndexSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax', 'IClassElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'openBracketToken', isToken: true }, - { name: 'parameters', isSeparatedList: true, elementType: 'ParameterSyntax' }, - { name: 'closeBracketToken', isToken: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'PropertySignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'questionToken', isToken: true, isOptional: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'CallSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ] - }, - { - name: 'ParameterListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'parameters', isSeparatedList: true, elementType: 'ParameterSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'TypeParameterListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'lessThanToken', isToken: true }, - { name: 'typeParameters', isSeparatedList: true, elementType: 'TypeParameterSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeParameterSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'identifier', isToken: true }, - { name: 'constraint', type: 'ConstraintSyntax', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ConstraintSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'extendsKeyword', isToken: true, excludeFromAST: true }, - { name: 'typeOrExpression', type: 'ISyntaxNodeOrToken' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ElseClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'elseKeyword', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'IfStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'ifKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' }, - { name: 'elseClause', type: 'ElseClauseSyntax', isOptional: true } - ] - }, - { - name: 'ExpressionStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ConstructorDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IClassElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'constructorKeyword', isToken: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'MethodDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'GetAccessorSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IAccessorSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'getKeyword', isToken: true, excludeFromAST: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ] - }, - { - name: 'SetAccessorSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IAccessorSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'setKeyword', isToken: true, excludeFromAST: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'PropertyDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberDeclarationSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'variableDeclarator', type: 'VariableDeclaratorSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ThrowStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'throwKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ReturnStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'returnKeyword', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ObjectCreationExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IMemberExpressionSyntax' }, - { name: 'argumentList', type: 'ArgumentListSyntax', isOptional: true } - ] - }, - { - name: 'SwitchStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'switchKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'switchClauses', isList: true, elementType: 'ISwitchClauseSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'CaseSwitchClauseSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ISwitchClauseSyntax'], - children: [ - { name: 'caseKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' } - ] - }, - { - name: 'DefaultSwitchClauseSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ISwitchClauseSyntax'], - children: [ - { name: 'defaultKeyword', isToken: true, excludeFromAST: true }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' } - ] - }, - { - name: 'BreakStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'breakKeyword', isToken: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ContinueStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'continueKeyword', isToken: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ForStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'forKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'initializer', type: 'VariableDeclarationSyntax | IExpressionSyntax', isOptional: true }, - { name: 'firstSemicolonToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax', isOptional: true }, - { name: 'secondSemicolonToken', isToken: true, excludeFromAST: true }, - { name: 'incrementor', type: 'IExpressionSyntax', isOptional: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'ForInStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'forKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'left', type: 'VariableDeclarationSyntax | IExpressionSyntax' }, - { name: 'inKeyword', isToken: true, excludeFromAST: true }, - { name: 'right', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'WhileStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'whileKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'WithStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'withKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'EnumDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'enumKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'enumElements', isSeparatedList: true, elementType: 'EnumElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'EnumElementSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true } - ] - }, - { - name: 'TypeAssertionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'lessThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ObjectLiteralExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'propertyAssignments', isSeparatedList: true, elementType: 'IPropertyAssignmentSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'ComputedPropertyNameSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPropertyNameSyntax'], - children: [ - { name: 'openBracketToken', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeBracketToken', isToken: true } - ] - }, - { - name: 'PropertyAssignmentSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPropertyAssignmentSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' } - ] - }, - { - name: 'FunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'functionKeyword', isToken: true, excludeFromAST: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ] - }, - { - name: 'EmptyStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'semicolonToken', isToken: true } - ] - }, - { - name: 'TryStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'tryKeyword', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' }, - { name: 'catchClause', type: 'CatchClauseSyntax', isOptional: true }, - { name: 'finallyClause', type: 'FinallyClauseSyntax', isOptional: true } - ] - }, - { - name: 'CatchClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'catchKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecified: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' } - ] - }, - { - name: 'FinallyClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'finallyKeyword', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' } - ] - }, - { - name: 'LabeledStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'identifier', isToken: true }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'DoStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'doKeyword', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' }, - { name: 'whileKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'TypeOfExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'typeOfKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' } - ] - }, - { - name: 'DeleteExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'deleteKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' } - ] - }, - { - name: 'VoidExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'voidKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' } - ] - }, - { - name: 'YieldExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'yieldKeyword', isToken: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true } - ] - }, - { - name: 'AwaitExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'awaitKeyword', isToken: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax', isOptional: true } - ] - }, - { - name: 'DebuggerStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'debuggerKeyword', isToken: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - } -]; -function getSyntaxKindEnum() { - var name = "SyntaxKind"; - return TypeScript[name]; -} -function firstKind(definition) { - var kindName = getNameWithoutSuffix(definition); - return getSyntaxKindEnum()[kindName]; -} -definitions.sort(function (d1, d2) { return firstKind(d1) - firstKind(d2); }); -function getStringWithoutSuffix(definition) { - if (TypeScript.StringUtilities.endsWith(definition, "Syntax")) { - return definition.substring(0, definition.length - "Syntax".length); - } - return definition; -} -function getNameWithoutSuffix(definition) { - return getStringWithoutSuffix(definition.name); -} -function getType(child) { - if (child.isToken) { - return "ISyntaxToken"; - } - else if (child.isSeparatedList) { - return "ISeparatedSyntaxList<" + child.elementType + ">"; - } - else if (child.isList) { - return child.elementType + "[]"; - } - else { - return child.type; - } -} -function camelCase(value) { - return value.substr(0, 1).toLowerCase() + value.substr(1); -} -function getSafeName(child) { - if (child.name === "arguments") { - return "_" + child.name; - } - return child.name; -} -function generateConstructorFunction(definition) { - var result = " export var " + definition.name + ": " + getNameWithoutSuffix(definition) + "Constructor = function(data: number"; - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += ", "; - result += getSafeName(child); - result += ": " + getType(child); - } - result += ") {\r\n"; - result += " if (data) { this.__data = data; }\r\n"; - result += " this.parent = undefined"; - if (definition.children.length) { - result += " "; - for (var i = 0; i < definition.children.length; i++) { -<<<<<<< HEAD - if (i) { - result += ", "; - } -======= - result += ",\r\n"; ->>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. - var child = definition.children[i]; - result += "this." + child.name + " = " + getSafeName(child); - } - result += ";\r\n"; - } -<<<<<<< HEAD - if (definition.children.length > 0) { - result += " "; - for (var i = 0; i < definition.children.length; i++) { - if (i) { - result += ", "; - } - var child = definition.children[i]; - if (child.isOptional) { - result += getSafeName(child) + " && (" + getSafeName(child) + ".parent = this)"; - } - else { - result += getSafeName(child) + ".parent = this"; - } - } - result += ";\r\n"; - } -======= - result += ";\r\n"; ->>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. - result += " };\r\n"; - result += " " + definition.name + ".prototype.kind = SyntaxKind." + getNameWithoutSuffix(definition) + ";\r\n"; - result += " " + definition.name + ".prototype.childCount = " + definition.children.length + ";\r\n"; - result += " " + definition.name + ".prototype.childAt = function(index: number): ISyntaxElement {\r\n"; - if (definition.children.length) { - result += " switch (index) {\r\n"; - for (var j = 0; j < definition.children.length; j++) { - result += " case " + j + ": return this." + definition.children[j].name + ";\r\n"; - } - result += " }\r\n"; - } - else { - result += " throw Errors.invalidOperation();\r\n"; - } - result += " }\r\n"; - return result; -} -function generateSyntaxInterfaces() { - var result = "///\r\n\r\n"; - result += "module TypeScript {\r\n"; - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - if (i > 0) { - result += "\r\n"; - } - result += generateSyntaxInterface(definition); - } - result += "}"; - return result; -} -function generateSyntaxInterface(definition) { - var result = " export interface " + definition.name + " extends ISyntaxNode"; - if (definition.interfaces) { - result += ", "; - result += definition.interfaces.join(", "); - } - result += " {\r\n"; - if (definition.name === "SourceUnitSyntax") { - result += " syntaxTree: SyntaxTree;\r\n"; - } - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += " " + child.name + ": " + getType(child) + ";\r\n"; - } - result += " }\r\n"; - result += " export interface " + getNameWithoutSuffix(definition) + "Constructor {"; - result += " new (data: number"; - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += ", "; - result += getSafeName(child); - result += ": " + getType(child); - } - result += "): " + definition.name; - result += " }\r\n"; - return result; -} -function generateNodes() { - var result = "///\r\n\r\n"; - result += "module TypeScript"; - result += " {\r\n"; - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - if (i) { - result += "\r\n"; - } - result += generateConstructorFunction(definition); - } - result += "}"; - return result; -} -function isInterface(name) { - return name.substr(0, 1) === "I" && name.substr(1, 1).toUpperCase() === name.substr(1, 1); -} -function generateWalker() { - var result = ""; - result += "///\r\n" + "\r\n" + "module TypeScript {\r\n" + " export class SyntaxWalker implements ISyntaxVisitor {\r\n" + " public visitToken(token: ISyntaxToken): void {\r\n" + " }\r\n" + "\r\n" + " private visitOptionalToken(token: ISyntaxToken): void {\r\n" + " if (token === undefined) {\r\n" + " return;\r\n" + " }\r\n" + "\r\n" + " this.visitToken(token);\r\n" + " }\r\n" + "\r\n" + " public visitList(list: ISyntaxNodeOrToken[]): void {\r\n" + " for (var i = 0, n = list.length; i < n; i++) {\r\n" + " visitNodeOrToken(this, list[i]);\r\n" + " }\r\n" + " }\r\n"; - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - result += "\r\n"; - result += " public visit" + getNameWithoutSuffix(definition) + "(node: " + definition.name + "): void {\r\n"; - for (var j = 0; j < definition.children.length; j++) { - var child = definition.children[j]; - if (child.isToken) { - if (child.isOptional) { - result += " this.visitOptionalToken(node." + child.name + ");\r\n"; - } - else { - result += " this.visitToken(node." + child.name + ");\r\n"; - } - } - else if (child.isList || child.isSeparatedList) { - result += " this.visitList(node." + child.name + ");\r\n"; - } - else if (child.isToken) { - if (child.isOptional) { - result += " this.visitOptionalToken(node." + child.name + ");\r\n"; - } - else { - result += " this.visitToken(node." + child.name + ");\r\n"; - } - } - else { - result += " visitNodeOrToken(this, node." + child.name + ");\r\n"; - } - } - result += " }\r\n"; - } - result += " }"; - result += "\r\n}"; - return result; -} -function firstEnumName(e, value) { - for (var name in e) { - if (e[name] === value) { - return name; - } - } -} -function groupBy(array, func) { - var result = {}; - for (var i = 0, n = array.length; i < n; i++) { - var v = array[i]; - var k = func(v); - var list = result[k] || []; - list.push(v); - result[k] = list; - } - return result; -} -function generateKeywordCondition(keywords, currentCharacter, indent) { - var length = keywords[0].text.length; - var result = ""; - var index; - if (keywords.length === 1) { - var keyword = keywords[0]; - if (currentCharacter === length) { - return " return SyntaxKind." + firstEnumName(getSyntaxKindEnum(), keyword.kind) + ";\r\n"; - } - var keywordText = keywords[0].text; - result = " return ("; - for (var i = currentCharacter; i < length; i++) { - if (i > currentCharacter) { - result += " && "; - } - index = i === 0 ? "start" : ("start + " + i); - result += "str.charCodeAt(" + index + ") === CharacterCodes." + keywordText.substr(i, 1); - } - result += ") ? SyntaxKind." + firstEnumName(getSyntaxKindEnum(), keyword.kind) + " : SyntaxKind.IdentifierName;\r\n"; - } - else { - result += " // " + TypeScript.ArrayUtilities.select(keywords, function (k) { return k.text; }).join(", ") + "\r\n"; - index = currentCharacter === 0 ? "start" : ("start + " + currentCharacter); - result += indent + "switch(str.charCodeAt(" + index + ")) {\r\n"; - var groupedKeywords = groupBy(keywords, function (k) { return k.text.substr(currentCharacter, 1); }); - for (var c in groupedKeywords) { - if (groupedKeywords.hasOwnProperty(c)) { - result += indent + " case CharacterCodes." + c + ":"; - result += generateKeywordCondition(groupedKeywords[c], currentCharacter + 1, indent + " "); - } - } - result += indent + " default: return SyntaxKind.IdentifierName;\r\n"; - result += indent + "}\r\n"; - } - return result; -} -function min(array, func) { - var min = func(array[0]); - for (var i = 1; i < array.length; i++) { - var next = func(array[i]); - if (next < min) { - min = next; - } - } - return min; -} -function max(array, func) { - var max = func(array[0]); - for (var i = 1; i < array.length; i++) { - var next = func(array[i]); - if (next > max) { - max = next; - } - } - return max; -} -function generateUtilities() { - var result = ""; - return result; -} -function generateScannerUtilities() { - var result = "///\r\n" + "\r\n" + "module TypeScript {\r\n" + " export module ScannerUtilities {\r\n"; - result += " export var fixedWidthArray = ["; - for (var i = 0; i <= 124 /* LastFixedWidth */; i++) { - if (i) { - result += ", "; - } - if (i < 17 /* FirstFixedWidth */) { - result += "0"; - } - else { - result += TypeScript.SyntaxFacts.getText(i).length; - } - } - result += "];\r\n"; - var i; - var keywords = []; - for (i = 17 /* FirstKeyword */; i <= 74 /* LastKeyword */; i++) { - keywords.push({ kind: i, text: TypeScript.SyntaxFacts.getText(i) }); - } - keywords.sort(function (a, b) { return a.text.localeCompare(b.text); }); - result += " export function identifierKind(str: string, start: number, length: number): SyntaxKind {\r\n"; - var minTokenLength = min(keywords, function (k) { return k.text.length; }); - var maxTokenLength = max(keywords, function (k) { return k.text.length; }); - result += " switch (length) {\r\n"; - for (i = minTokenLength; i <= maxTokenLength; i++) { - var keywordsOfLengthI = TypeScript.ArrayUtilities.where(keywords, function (k) { return k.text.length === i; }); - if (keywordsOfLengthI.length > 0) { - result += " case " + i + ":"; - result += generateKeywordCondition(keywordsOfLengthI, 0, " "); - } - } - result += " default: return SyntaxKind.IdentifierName;\r\n"; - result += " }\r\n"; - result += " }\r\n"; - result += " }\r\n"; - result += "}"; - return result; -} -function syntaxKindName(kind) { - for (var name in getSyntaxKindEnum()) { - if (getSyntaxKindEnum()[name] === kind) { - return name; - } - } - throw new Error(); -} -function generateVisitor() { - var result = ""; - result += "///\r\n\r\n"; - result += "module TypeScript {\r\n"; - result += " export function visitNodeOrToken(visitor: ISyntaxVisitor, element: ISyntaxNodeOrToken): any {\r\n"; - result += " if (element === undefined) { return undefined; }\r\n"; - result += " switch (element.kind) {\r\n"; - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - result += " case SyntaxKind." + getNameWithoutSuffix(definition) + ": "; - result += "return visitor.visit" + getNameWithoutSuffix(definition) + "(<" + definition.name + ">element);\r\n"; - } - result += " default: return visitor.visitToken(element);\r\n"; - result += " }\r\n"; - result += " }\r\n\r\n"; - result += " export interface ISyntaxVisitor {\r\n"; - result += " visitToken(token: ISyntaxToken): any;\r\n"; - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - result += " visit" + getNameWithoutSuffix(definition) + "(node: " + definition.name + "): any;\r\n"; - } - result += " }"; - result += "\r\n}"; - return result; -} -var syntaxNodesConcrete = generateNodes(); -var syntaxInterfaces = generateSyntaxInterfaces(); -var walker = generateWalker(); -var scannerUtilities = generateScannerUtilities(); -var visitor = generateVisitor(); -var utilities = generateUtilities(); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false); -//# sourceMappingURL=file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.js.map diff --git a/src/services/syntax/SyntaxGenerator.js.map b/src/services/syntax/SyntaxGenerator.js.map deleted file mode 100644 index cc670d0eeba..00000000000 --- a/src/services/syntax/SyntaxGenerator.js.map +++ /dev/null @@ -1,113 +0,0 @@ -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< Updated upstream -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> Stashed changes -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 1324350... Simplify module name parsing. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> e8c937b... Simplify API for nodes htat have both a block and a semicolon token. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> e070f8f... Simplify API for nodes that have both a block and an expression. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f2c20c8... Use union types to make For/ForIn statements simpler. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAATA,CAACA;gBACGA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,EAAEA,IAAIA;YACVA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,EAALA,UAAMA,CAASA;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACDA,QAAQA,EAAEA,QAAQA;YAClBA,SAASA,EAAEA,SAASA;YACpBA,WAAWA,EAAXA,UAAYA,IAAYA;gBACpB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAClC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC;YAC/D,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,IAAA,CAAC;oBACG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CACA;gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAT,CAAC;gBACD,CAAC;YACL,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBG,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,IAAIA,KAAKA,GAAGA,OAAOA,CAACA,MAAMA,CAACA,CAACA;QAC5BA,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QAExBA,IAAIA,QAAQA,GAAWA,GAAGA,CAACA,QAAQA,EAAEA,CAACA;QAEtCA,IAAIA,yBAAyBA,GAAGA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,QAAQA,CAACA;QAEtGA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;YACxCA,IAAIA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;YACxBA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAGvDA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA;oBAC9BA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBACzBA,CAACA;gBACDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAEvDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAE7EA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;YACtCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;QACnCA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAE3EE,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;gBACrBA,IAAIA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA;YAC3BA,CAACA;YAEDA,GAAGA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;QAC9CA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;YAC3BA,OAAOA,EAAEA,GAAGA,CAACA,GAAGA;YAChBA,yBAAyBA,EAAEA,yBAAyBA;YACpDA,KAAKA,EAALA,UAAMA,CAASA;gBAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;YACDA,QAAQA,EAAEA,QAAQA;YAClBA,SAASA,EAAEA,SAASA;YACpBA,SAASA,EAAEA,UAACA,QAAQA,EAAEA,QAAQA;gBAE1BA,GAAGA,CAACA,SAASA,CAACA,QAAQA,EAAEA,EAAEA,UAAUA,EAAEA,IAAIA,EAAEA,QAAQA,EAAEA,GAAGA,EAAEA,EAAEA,WAAWA,CAACA,CAACA;gBAE1EA,MAAMA,CAACA;oBACHA,KAAKA,EAALA;wBAAU,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAAC,CAAC;iBACtDA,CAACA;gBAEFA,SAASA,WAAWA,CAACA,IAASA,EAAEA,IAASA;oBACrCG,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAC7BA,MAAMA,CAACA;oBACXA,CAACA;oBAEDA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBACvBA,CAACA;gBAAAH,CAACA;YACNA,CAACA;YACDA,WAAWA,EAAEA,UAAUA,IAAYA;gBAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACjC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;YACvC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAO,OAAQ,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YACDA,cAAcA,EAAdA;gBACI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAC1C,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;ACzPL,IAAO,UAAU,CA0BhB;AA1BD,WAAO,UAAU,EAAC,CAAC;IACfI,IAAaA,MAAMA;QAAnBC,SAAaA,MAAMA;QAwBnBC,CAACA;QAvBiBD,eAAQA,GAAtBA,UAAuBA,QAAgBA,EAAEA,OAAgBA;YACrDE,MAAMA,CAACA,IAAIA,KAAKA,CAACA,oBAAoBA,GAAGA,QAAQA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,CAACA;QACvEA,CAACA;QAEaF,yBAAkBA,GAAhCA,UAAiCA,QAAgBA;YAC7CG,MAAMA,CAACA,IAAIA,KAAKA,CAACA,yBAAyBA,GAAGA,QAAQA,CAACA,CAACA;QAC3DA,CAACA;QAEaH,mBAAYA,GAA1BA,UAA2BA,QAAgBA;YACvCI,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iBAAiBA,GAAGA,QAAQA,CAACA,CAACA;QACnDA,CAACA;QAEaJ,eAAQA,GAAtBA;YACIK,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iDAAiDA,CAACA,CAACA;QACxEA,CAACA;QAEaL,wBAAiBA,GAA/BA;YACIM,MAAMA,CAACA,IAAIA,KAAKA,CAACA,sBAAsBA,CAACA,CAACA;QAC7CA,CAACA;QAEaN,uBAAgBA,GAA9BA,UAA+BA,OAAgBA;YAC3CO,MAAMA,CAACA,IAAIA,KAAKA,CAACA,qBAAqBA,GAAGA,OAAOA,CAACA,CAACA;QACtDA,CAACA;QACLP,aAACA;IAADA,CAACA,AAxBDD,IAwBCA;IAxBYA,iBAAMA,GAANA,MAwBZA,CAAAA;AACLA,CAACA,EA1BM,UAAU,KAAV,UAAU,QA0BhB;AC1BD,IAAO,UAAU,CA0MhB;AA1MD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,cAAcA;QAA3BS,SAAaA,cAAcA;QAwM3BC,CAACA;QAvMiBD,6BAAcA,GAA5BA,UAAgCA,MAAWA,EAAEA,MAAWA,EAAEA,MAAiCA;YACvFE,EAAEA,CAACA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,CAACA,CAACA;gBACpBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAChCA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEaF,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,KAAQA;YAC1CG,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAGaH,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,QAAkCA;YACpEI,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;YAGrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,OAAOA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACvBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBAC/BA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBACzBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaJ,mBAAIA,GAAlBA,UAAsBA,KAAUA;YAC5BK,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,iBAAMA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,CAACA;YAC7CA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;QACnCA,CAACA;QAEaL,4BAAaA,GAA3BA,UAA+BA,KAAUA,EAAEA,SAA2CA;YAClFM,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACzCA,IAAIA,CAACA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACjBA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaN,6BAAcA,GAA5BA,UAAgCA,KAAUA,EAAEA,IAAsCA;YAC9EO,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaP,oBAAKA,GAAnBA,UAAuBA,KAAUA,EAAEA,IAAuCA;YACtEQ,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,iBAAMA,CAACA,gBAAgBA,EAAEA,CAACA;QACpCA,CAACA;QAEaR,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAsBA;YACnDS,IAAIA,MAAMA,GAAGA,CAACA,CAACA;YAEfA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,MAAMA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaT,qBAAMA,GAApBA,UAA0BA,MAAWA,EAAEA,IAAiBA;YACpDU,IAAIA,MAAMA,GAAQA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA;YAE9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;YAChCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaV,oBAAKA,GAAnBA,UAAuBA,MAAWA,EAAEA,IAAuBA;YACvDW,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,EAAKA,CAACA;YAE5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC3BA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaX,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDY,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEaZ,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDa,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEab,2BAAYA,GAA1BA,UAA2BA,KAAeA,EAAEA,KAAaA;YACrDc,IAAIA,GAAGA,GAAGA,CAACA,CAACA;YACZA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;YAE5BA,OAAOA,GAAGA,IAAIA,IAAIA,EAAEA,CAACA;gBACjBA,IAAIA,MAAMA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACvCA,IAAIA,QAAQA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,MAAMA,CAACA;gBAClBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,GAAGA,KAAKA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,GAAGA,CAACA;QAChBA,CAACA;QAEad,0BAAWA,GAAzBA,UAA6BA,MAAcA,EAAEA,YAAiBA;YAC1De,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,MAAMA,CAACA,CAACA,CAACA,GAAGA,YAAYA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaf,mBAAIA,GAAlBA,UAAsBA,KAAUA,EAAEA,MAAcA,EAAEA,YAAeA;YAC7DgB,IAAIA,KAAKA,GAAGA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC7BA,KAAKA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;YAC7BA,CAACA;QACLA,CAACA;QAEahB,mBAAIA,GAAlBA,UAAsBA,WAAgBA,EAAEA,WAAmBA,EAAEA,gBAAqBA,EAAEA,gBAAwBA,EAAEA,MAAcA;YACxHiB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,gBAAgBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,GAAGA,WAAWA,CAACA,WAAWA,GAAGA,CAACA,CAACA,CAACA;YAC1EA,CAACA;QACLA,CAACA;QAEajB,sBAAOA,GAArBA,UAAyBA,KAAUA,EAAEA,SAA4BA;YAC7DkB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,CAACA,CAACA;QACdA,CAACA;QACLlB,qBAACA;IAADA,CAACA,AAxMDT,IAwMCA;IAxMYA,yBAAcA,GAAdA,cAwMZA,CAAAA;AACLA,CAACA,EA1MM,UAAU,KAAV,UAAU,QA0MhB;AC1MD,IAAO,UAAU,CAkBhB;AAlBD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,eAAeA;QAA5B4B,SAAaA,eAAeA;QAgB5BC,CAACA;QAfiBD,wBAAQA,GAAtBA,UAAuBA,KAAUA;YAC7BE,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,iBAAiBA,CAACA;QAC5EA,CAACA;QAEaF,wBAAQA,GAAtBA,UAAuBA,MAAcA,EAAEA,KAAaA;YAChDG,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACnFA,CAACA;QAEaH,0BAAUA,GAAxBA,UAAyBA,MAAcA,EAAEA,KAAaA;YAClDI,MAAMA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,EAAEA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACpDA,CAACA;QAEaJ,sBAAMA,GAApBA,UAAqBA,KAAaA,EAAEA,KAAaA;YAC7CK,MAAMA,CAACA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;QACxCA,CAACA;QACLL,sBAACA;IAADA,CAACA,AAhBD5B,IAgBCA;IAhBYA,0BAAeA,GAAfA,eAgBZA,CAAAA;AACLA,CAACA,EAlBM,UAAU,KAAV,UAAU,QAkBhB;AClBD,IAAO,UAAU,CA6ShB;AA7SD,WAAO,UAAU,EAAC,CAAC;IACfA,WAAYA,UAAUA;QAElBkC,2CAAIA;QACJA,2CAAIA;QAGJA,mEAAgBA;QAChBA,6DAAaA;QACbA,+EAAsBA;QACtBA,iFAAuBA;QACvBA,uEAAkBA;QAIlBA,uDAAUA;QACVA,+DAAcA;QAGdA,+DAAcA;QAGdA,oFAAwBA;QACxBA,gEAAcA;QACdA,8DAAaA;QAGbA,0FAA2BA;QAC3BA,wEAAkBA;QAClBA,0EAAmBA;QACnBA,oEAAgBA;QAKhBA,4DAAYA;QACZA,0DAAWA;QACXA,4DAAYA;QACZA,kEAAeA;QACfA,kEAAeA;QACfA,gEAAcA;QACdA,8DAAaA;QACbA,sDAASA;QACTA,0DAAWA;QACXA,4DAAYA;QACZA,gEAAcA;QACdA,wDAAUA;QACVA,kEAAeA;QACfA,sDAASA;QACTA,sDAASA;QACTA,sEAAiBA;QACjBA,wDAAUA;QACVA,0DAAWA;QACXA,8DAAaA;QACbA,8DAAaA;QACbA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QACXA,wDAAUA;QACVA,8DAAaA;QACbA,wDAAUA;QACVA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QAGXA,4DAAYA;QACZA,4DAAYA;QACZA,0DAAWA;QACXA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,4DAAYA;QAGZA,sEAAiBA;QACjBA,oEAAgBA;QAChBA,wDAAUA;QACVA,gEAAcA;QACdA,gEAAcA;QACdA,oEAAgBA;QAChBA,8DAAaA;QACbA,8DAAaA;QACbA,4DAAYA;QAGZA,wDAAUA;QACVA,gEAAcA;QACdA,wEAAkBA;QAClBA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,wDAAUA;QACVA,8DAAaA;QAGbA,gEAAcA;QACdA,kEAAeA;QACfA,gEAAcA;QACdA,kEAAeA;QACfA,oEAAgBA;QAChBA,sEAAiBA;QACjBA,oDAAQA;QACRA,gEAAcA;QACdA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,oEAAgBA;QAChBA,0EAAmBA;QACnBA,gFAAsBA;QACtBA,sEAAiBA;QACjBA,gFAAsBA;QACtBA,gFAAsBA;QACtBA,kFAAuBA;QACvBA,4FAA4BA;QAC5BA,sDAASA;QACTA,wDAAUA;QACVA,8DAAaA;QACbA,4DAAYA;QACZA,8DAAaA;QACbA,kEAAeA;QACfA,8EAAqBA;QACrBA,0FAA2BA;QAC3BA,gHAAsCA;QACtCA,iEAAcA;QACdA,qDAAQA;QACRA,yDAAUA;QACVA,qEAAgBA;QAChBA,yDAAUA;QACVA,mFAAuBA;QACvBA,2DAAWA;QACXA,+DAAaA;QACbA,yDAAUA;QACVA,2DAAWA;QACXA,mEAAeA;QACfA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yEAAkBA;QAClBA,2FAA2BA;QAC3BA,uGAAiCA;QACjCA,6HAA4CA;QAC5CA,6EAAoBA;QACpBA,iEAAcA;QACdA,qEAAgBA;QAChBA,yDAAUA;QACVA,qEAAgBA;QAGhBA,yDAAUA;QAGVA,+DAAaA;QAGbA,yDAAUA;QACVA,6DAAYA;QACZA,uDAASA;QACTA,mEAAeA;QACfA,2DAAWA;QACXA,uDAASA;QACTA,uDAASA;QACTA,uDAASA;QACTA,uEAAiBA;QAGjBA,6EAAoBA;QACpBA,2EAAmBA;QACnBA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,mEAAeA;QACfA,uEAAiBA;QACjBA,qEAAgBA;QAGhBA,uFAAyBA;QACzBA,uFAAyBA;QACzBA,iFAAsBA;QACtBA,iFAAsBA;QAGtBA,2DAAWA;QACXA,2DAAWA;QAGXA,uEAAiBA;QACjBA,+DAAaA;QACbA,yEAAkBA;QAClBA,iEAAcA;QACdA,mEAAeA;QAGfA,+CAAKA;QACLA,2DAAWA;QACXA,uEAAiBA;QACjBA,2EAAmBA;QACnBA,mEAAeA;QACfA,mEAAeA;QACfA,iEAAcA;QACdA,uEAAiBA;QACjBA,6DAAYA;QACZA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,6DAAYA;QACZA,qEAAgBA;QAChBA,2DAAWA;QACXA,uEAAiBA;QACjBA,+DAAaA;QAGbA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,qEAAgBA;QAChBA,iEAAcA;QACdA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,iFAAsBA;QACtBA,iFAAsBA;QACtBA,6EAAoBA;QACpBA,iFAAsBA;QACtBA,mFAAuBA;QACvBA,qFAAwBA;QACxBA,mFAAuBA;QACvBA,6GAAoCA;QACpCA,+FAA6BA;QAC7BA,iEAAcA;QACdA,mFAAuBA;QACvBA,yEAAkBA;QAClBA,uEAAiBA;QACjBA,yEAAkBA;QAClBA,qFAAwBA;QAGxBA,2EAAmBA;QACnBA,yEAAkBA;QAGlBA,6DAAYA;QACZA,+DAAaA;QACbA,qEAAgBA;QAChBA,uEAAiBA;QAGjBA,iEAAcA;QACdA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yDAAUA;QACVA,2DAAWA;QACXA,+DAAaA;QACbA,iEAAcA;QAGdA,+DAAaA;QACbA,yDAAUA;QAGVA,qFAAwBA;QACxBA,yFAA0BA;QAG1BA,uDAASA;QACTA,2DAAWA;QACXA,iEAAcA;QACdA,6EAAoBA;QACpBA,mFAAuBA;QACvBA,uFAAyBA;QAEzBA,gDAAuBA,uBAAYA,0BAAAA;QACnCA,+CAAsBA,sBAAWA,yBAAAA;QAEjCA,sDAA6BA,uBAAYA,gCAAAA;QACzCA,qDAA4BA,uBAAYA,+BAAAA;QAExCA,4DAAmCA,4BAAiBA,sCAAAA;QACpDA,2DAAkCA,uBAAYA,qCAAAA;QAE9CA,kDAAyBA,qBAAUA,4BAAAA;QACnCA,iDAAwBA,wBAAaA,2BAAAA;QAErCA,wCAAeA,+BAAoBA,kBAAAA;QACnCA,uCAAcA,gCAAqBA,iBAAAA;QAEnCA,sCAAaA,qBAAUA,gBAAAA;QACvBA,qCAAYA,2BAAgBA,eAAAA;QAE5BA,4CAAmBA,yBAAcA,sBAAAA;QACjCA,2CAAkBA,2BAAgBA,qBAAAA;QAElCA,2CAAkBA,uBAAYA,qBAAAA;QAC9BA,0CAAiBA,0BAAeA,oBAAAA;QAEhCA,uCAAcA,2BAAgBA,iBAAAA;QAC9BA,sCAAaA,6BAAkBA,gBAAAA;QAE/BA,qCAAYA,qBAAUA,eAAAA;QACtBA,oCAAWA,oCAAyBA,cAAAA;IACxCA,CAACA,EA3SWlC,qBAAUA,KAAVA,qBAAUA,QA2SrBA;IA3SDA,IAAYA,UAAUA,GAAVA,qBA2SXA,CAAAA;AACLA,CAACA,EA7SM,UAAU,KAAV,UAAU,QA6ShB;AC7SD,IAAO,UAAU,CAoPhB;AApPD,WAAO,UAAU;IAACA,IAAAA,WAAWA,CAoP5BA;IApPiBA,WAAAA,WAAWA,EAACA,CAACA;QAC3BmC,IAAIA,iBAAiBA,GAAQA;YACzBA,KAAKA,EAAEA,mBAAqBA;YAC5BA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,OAAOA,EAAEA,qBAAuBA;YAChCA,UAAUA,EAAEA,wBAA0BA;YACtCA,OAAOA,EAAEA,qBAAuBA;YAChCA,aAAaA,EAAEA,2BAA6BA;YAC5CA,UAAUA,EAAEA,wBAA0BA;YACtCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,SAASA,EAAEA,uBAAyBA;YACpCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,UAAUA,EAAEA,wBAA0BA;YACtCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,WAAWA,EAAEA,yBAA2BA;YACxCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAACA,sBAAwBA;YACjCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,WAAWA,EAAEA,yBAA2BA;YACxCA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,QAAQA,EAAEA,sBAAwBA;YAClCA,OAAOA,EAAEA,qBAAuBA;YAChCA,QAAQA,EAAEA,sBAAwBA;YAClCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAEhCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,yBAA2BA;YAChCA,GAAGA,EAAEA,0BAA4BA;YACjCA,GAAGA,EAAEA,iBAAmBA;YACxBA,KAAKA,EAAEA,uBAAyBA;YAChCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,yBAA2BA;YAChCA,IAAIA,EAAEA,4BAA8BA;YACpCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,0BAA4BA;YAClCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,+BAAiCA;YACvCA,KAAKA,EAAEA,gCAAkCA;YACzCA,KAAKA,EAAEA,qCAAuCA;YAC9CA,GAAGA,EAAEA,kBAAoBA;YACzBA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,qBAAuBA;YAC5BA,IAAIA,EAAEA,sBAAwBA;YAC9BA,IAAIA,EAAEA,wBAA0BA;YAChCA,IAAIA,EAAEA,8BAAgCA;YACtCA,IAAIA,EAAEA,oCAAsCA;YAC5CA,KAAKA,EAAEA,+CAAiDA;YACxDA,GAAGA,EAAEA,wBAAyBA;YAC9BA,GAAGA,EAAEA,kBAAmBA;YACxBA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,0BAA2BA;YAChCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,iCAAkCA;YACxCA,IAAIA,EAAEA,qBAAsBA;YAC5BA,GAAGA,EAAEA,uBAAwBA;YAC7BA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,qBAAsBA;YAC3BA,IAAIA,EAAEA,yBAA0BA;YAChCA,IAAIA,EAAEA,0BAA2BA;YACjCA,IAAIA,EAAEA,6BAA8BA;YACpCA,IAAIA,EAAEA,4BAA6BA;YACnCA,KAAKA,EAAEA,qCAAsCA;YAC7CA,KAAKA,EAAEA,2CAA4CA;YACnDA,MAAMA,EAAEA,sDAAuDA;YAC/DA,IAAIA,EAAEA,8BAA+BA;YACrCA,IAAIA,EAAEA,wBAAyBA;YAC/BA,IAAIA,EAAEA,0BAA2BA;YACjCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,0BAA2BA;SACpCA,CAACA;QAEFA,IAAIA,UAAUA,GAAGA,IAAIA,KAAKA,EAAUA,CAACA;QAErCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,iBAAiBA,CAACA,CAACA,CAACA;YACjCA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAEzCA,UAAUA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA,GAAGA,IAAIA,CAACA;YAC/CA,CAACA;QACLA,CAACA;QAKDA,UAAUA,CAACA,2BAA6BA,CAACA,GAAGA,aAAaA,CAACA;QAE1DA,SAAgBA,YAAYA,CAACA,IAAYA;YACrCC,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBACzCA,MAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA;YACnCA,CAACA;YAEDA,MAAMA,CAACA,YAAeA,CAACA;QAC3BA,CAACA;QANeD,wBAAYA,GAAZA,YAMfA,CAAAA;QAEDA,SAAgBA,OAAOA,CAACA,IAAgBA;YACpCE,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAHeF,mBAAOA,GAAPA,OAGfA,CAAAA;QAEDA,SAAgBA,YAAYA,CAACA,IAAgBA;YACzCG,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,YAAYA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,WAAWA,CAACA;QAC7EA,CAACA;QAFeH,wBAAYA,GAAZA,YAEfA,CAAAA;QAEDA,SAAgBA,gBAAgBA,CAACA,IAAgBA;YAC7CI,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,gBAAgBA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,eAAeA,CAACA;QACrFA,CAACA;QAFeJ,4BAAgBA,GAAhBA,gBAEfA,CAAAA;QAEDA,SAAgBA,oCAAoCA,CAACA,SAAqBA;YACtEK,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,wBAA0BA;oBAC3BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAZeL,gDAAoCA,GAApCA,oCAYfA,CAAAA;QAEDA,SAAgBA,+BAA+BA,CAACA,SAAqBA;YACjEM,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,qBAAuBA,CAACA;gBAC7BA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,8BAAgCA,CAACA;gBACtCA,KAAKA,oCAAsCA,CAACA;gBAC5CA,KAAKA,+CAAiDA,CAACA;gBACvDA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,yBAA2BA,CAACA;gBACjCA,KAAKA,4BAA8BA,CAACA;gBACpCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,gCAAkCA,CAACA;gBACxCA,KAAKA,qCAAuCA,CAACA;gBAC7CA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,kBAAmBA,CAACA;gBACzBA,KAAKA,iCAAkCA,CAACA;gBACxCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,mBAAqBA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QA1CeN,2CAA+BA,GAA/BA,+BA0CfA,CAAAA;QAEDA,SAAgBA,yBAAyBA,CAACA,SAAqBA;YAC3DO,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA;oBACvBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAnBeP,qCAAyBA,GAAzBA,yBAmBfA,CAAAA;QAEDA,SAAgBA,MAAMA,CAACA,IAAgBA;YACnCQ,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACXA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,uBAAyBA,CAACA;gBAC/BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAsBA,CAACA;gBAC5BA,KAAKA,sBAAuBA,CAACA;gBAC7BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,uBAAwBA,CAACA;gBAC9BA,KAAKA,sBAAyBA;oBAC1BA,MAAMA,CAACA,IAAIA,CAACA;YACpBA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAnBeR,kBAAMA,GAANA,MAmBfA,CAAAA;IACLA,CAACA,EApPiBnC,WAAWA,GAAXA,sBAAWA,KAAXA,sBAAWA,QAoP5BA;AAADA,CAACA,EApPM,UAAU,KAAV,UAAU,QAoPhB;AC/OD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAuB7B,IAAI,UAAU,GAAQ;IAClB,wBAAwB,EAAE,qBAAqB;IAC/C,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,aAAa;IAC1B,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,wBAAwB;IAClD,6BAA6B,EAAE,0BAA0B;IAGzD,uBAAuB,EAAE,+BAA+B;IACxD,qBAAqB,EAAE,+BAA+B;IACtD,wBAAwB,EAAE,yBAAyB;CACtD,CAAC;AAEF,IAAI,WAAW,GAAqB;IAC3B;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SACjD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/F,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,eAAe,CAAC,EAAE;YACvE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;SACnD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAClD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;SAC9G;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAClE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACrI;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC3D;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAO,EAAE;KACpB;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,qCAAqC;QAC3C,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC,gBAAgB,CAAC,EAAE;SACvE;QAGD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YAC5E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE;SACpE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YACpE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;YACzC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACvF,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SACpH;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;SACvE;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;SAChD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACtF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC9F;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,uBAAuB,CAAC;QACrC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC5D;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC9E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACxD;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5G,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SAC9G;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrF,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAE/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAChE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAG;SAC/E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAG;SAC/E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAE;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAC;QAC/B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACvF,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACvF,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,+CAA+C,EAAE,UAAU,EAAE,IAAI,EAAE;YAChG,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;YACpG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAClE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;YACrG,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,EAAE;YACvE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACjF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE;YAChG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACK;QACF,IAAI,EAAE,kCAAkC;QACxC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACvF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SAAC;KACtD;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KACrF;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAAC;KAC5D;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;CAAC,CAAC;AAEP,SAAS,SAAS,CAAC,UAA2B;IAC1C4C,IAAIA,QAAQA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA;IAChDA,MAAMA,CAAOA,UAAUA,CAACA,UAAWA,CAACA,QAAQA,CAACA,CAACA;AAClDA,CAACA;AAED,WAAW,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAE5D,SAAS,sBAAsB,CAAC,UAAkB;IAC9CC,EAAEA,CAACA,CAACA,UAAUA,CAACA,eAAeA,CAACA,QAAQA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAC5DA,MAAMA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,EAAEA,UAAUA,CAACA,MAAMA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,CAACA,UAAUA,CAACA;AACtBA,CAACA;AAED,SAAS,oBAAoB,CAAC,UAA2B;IACrDC,MAAMA,CAACA,sBAAsBA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;AACnDA,CAACA;AAED,SAAS,OAAO,CAAC,KAAwB;IACrCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;QAChBA,MAAMA,CAACA,cAAcA,CAACA;IAC1BA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,uBAAuBA,GAAGA,KAAKA,CAACA,WAAWA,GAAGA,GAAGA,CAACA;IAC7DA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;QACpBA,MAAMA,CAACA,KAAKA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;IACpCA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;IACtBA,CAACA;AACLA,CAACA;AAED,SAAS,SAAS,CAAC,KAAa;IAC5BC,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;AAC9DA,CAACA;AAED,SAAS,WAAW,CAAC,KAAwB;IACzCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,KAAKA,WAAWA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,IAAIA,CAACA;IAC5BA,CAACA;IAEDA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;AACtBA,CAACA;AAED,SAAS,2BAA2B,CAAC,UAA2B;IAC5DC,IAAIA,MAAMA,GAAGA,iBAAiBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,0CAA0CA,CAACA;IAExIA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,SAASA,CAACA;IAEpBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACJA,MAAMA,IAAIA,OAAOA,CAACA;YACtBA,CAACA;YAEDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,IAAIA,eAAeA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QACxEA,CAACA;IACLA,CAACA;IAEDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;QACjCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,eAAeA,CAACA;YAE1BA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;gBACnBA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,iBAAiBA,CAACA;YACpFA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,gBAAgBA,CAACA;YACpDA,CAACA;QACLA,CAACA;QACDA,MAAMA,IAAIA,OAAOA,CAACA;IACtBA,CAACA;IAEDA,MAAMA,IAAIA,YAAYA,CAACA;IACvBA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,+BAA+BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,OAAOA,CAACA;IAClHA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,0BAA0BA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,OAAOA,CAACA;IACvGA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,oEAAoEA,CAACA;IAC1GA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,8BAA8BA,CAACA;QAEzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,mBAAmBA,GAAGA,CAACA,GAAGA,gBAAgBA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,GAAGA,OAAOA,CAACA;QACjGA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,8CAA8CA,CAACA;IAC7DA,CAACA;IACDA,MAAMA,IAAIA,WAAWA,CAACA;IAEtBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,yBAAyBA,CAACA;IAEpCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACRA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,uBAAuBA,CAACA,UAAUA,CAACA,CAACA;IAClDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,uBAAuB,CAAC,UAA2B;IACxDC,IAAIA,MAAMA,GAAGA,uBAAuBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,sBAAsBA,CAAAA;IAE/EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACxBA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;IAC/CA,CAACA;IAEDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,KAAKA,kBAAkBA,CAACA,CAACA,CAACA;QACzCA,MAAMA,IAAIA,qCAAqCA,CAACA;IACpDA,CAACA;IAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,UAAUA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,uBAAuBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,eAAeA,CAACA;IACvFA,MAAMA,IAAIA,oBAAoBA,CAACA;IAE/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,IAAIA,CAACA;IAClCA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa;IAClBC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,mBAAmBA,CAACA;IAE9BA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,2BAA2BA,CAACA,UAAUA,CAACA,CAACA;IACtDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,WAAW,CAAC,IAAY;IAC7BC,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAAAA;AAC7FA,CAACA;AAED,SAAS,cAAc;IACnBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IACNA,2CAA2CA,GAC3CA,MAAMA,GACNA,yBAAyBA,GACzBA,+DAA+DA,GAC/DA,4DAA4DA,GAC5DA,eAAeA,GACfA,MAAMA,GACNA,qEAAqEA,GACrEA,4CAA4CA,GAC5CA,6BAA6BA,GAC7BA,mBAAmBA,GACnBA,MAAMA,GACNA,yCAAyCA,GACzCA,eAAeA,GACfA,MAAMA,GACNA,kEAAkEA,GAClEA,gEAAgEA,GAChEA,sDAAsDA,GACtDA,mBAAmBA,GACnBA,eAAeA,CAACA;IAEhBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,MAAMA,CAACA;QACjBA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,eAAeA,CAACA;QAEpHA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBAChBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,IAAIA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;gBAC7CA,MAAMA,IAAIA,kCAAkCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACzEA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,0CAA0CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACjFA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa,CAAC,CAAM,EAAE,KAAa;IACxCC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;YACpBA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;AACLA,CAACA;AAED,SAAS,OAAO,CAAI,KAAU,EAAE,IAAsB;IAClDC,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;IAErBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC3CA,IAAIA,CAACA,GAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACtBA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA;QAEhBA,IAAIA,IAAIA,GAAQA,MAAMA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;QAChCA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACbA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA;IACrBA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB,CAAC,QAA0D,EAAE,gBAAwB,EAAE,MAAc;IAClIC,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;IAErCA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,IAAIA,KAAaA,CAACA;IAElBA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACxBA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAE1BA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,MAAMA,CAACA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,qBAAqBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,OAAOA,CAACA;QAChGA,CAACA;QAEDA,IAAIA,WAAWA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;QACnCA,MAAMA,GAAGA,WAAWA,CAAAA;QAEpBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAC7CA,EAAEA,CAACA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;gBACvBA,MAAMA,IAAIA,MAAMA,CAACA;YACrBA,CAACA;YAEDA,KAAKA,GAAGA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA;YAC7CA,MAAMA,IAAIA,iBAAiBA,GAAGA,KAAKA,GAAGA,uBAAuBA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;QAC7FA,CAACA;QAEDA,MAAMA,IAAIA,iBAAiBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,mCAAmCA,CAACA;IAC3HA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,MAAMA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAAAA;QAC9FA,KAAKA,GAAGA,gBAAgBA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,gBAAgBA,CAACA,CAACA;QAC3EA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,KAAKA,GAAGA,UAAUA,CAAAA;QAEhEA,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;QAEjFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,IAAIA,eAAeA,CAACA,CAACA,CAACA;YAC5BA,EAAEA,CAACA,CAACA,eAAeA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACpCA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;gBACtDA,MAAMA,IAAIA,wBAAwBA,CAACA,eAAeA,CAACA,CAACA,CAACA,EAAEA,gBAAgBA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,MAAMA,CAACA,CAACA;YAClGA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,MAAMA,GAAGA,kDAAkDA,CAACA;QACtEA,MAAMA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA;IAC/BA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,iBAAiB;IACtBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,MAAMA,IAAIA,iCAAiCA,CAACA;IAC5CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC7DA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,IAAIA,CAACA;QACnBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,eAAeA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,IAAIA,GAAGA,CAACA;QAClBA,CAACA;QACDA,IAAIA,CAACA,CAACA;YACFA,MAAMA,IAAIA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA;QACvDA,CAACA;IACLA,CAACA;IACDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,IAAIA,gEAAgEA,CAACA;IAC3EA,MAAMA,IAAIA,+CAA+CA,CAACA;IAS1DA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,2CAA2CA,GACpDA,MAAMA,GACNA,yBAAyBA,GACzBA,0CAA0CA,CAACA;IAE/CA,IAAIA,CAASA,CAACA;IACdA,IAAIA,QAAQA,GAAqDA,EAAEA,CAACA;IAEpEA,GAAGA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACvFA,QAAQA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;IACxEA,CAACA;IAEDA,QAAQA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,IAAIA,CAACA,EAA5BA,CAA4BA,CAACA,CAACA;IAEtDA,MAAMA,IAAIA,sGAAsGA,CAACA;IAEjHA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,MAAMA,IAAIA,mCAAmCA,CAACA;IAG9CA,GAAGA,CAACA,CAACA,CAACA,GAAGA,cAAcA,EAAEA,CAACA,IAAIA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAChDA,IAAIA,iBAAiBA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,EAAnBA,CAAmBA,CAACA,CAACA;QAC5FA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAC/BA,MAAMA,IAAIA,qBAAqBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;YAC1CA,MAAMA,IAAIA,wBAAwBA,CAACA,iBAAiBA,EAAEA,CAACA,EAAEA,kBAAkBA,CAACA,CAACA;QACjFA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,8DAA8DA,CAACA;IACzEA,MAAMA,IAAIA,mBAAmBA,CAACA;IAC9BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,GAAGA,CAACA;IAEdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,cAAc,CAAC,IAA2B;IAC/CC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACrCA,EAAEA,CAACA,CAAMA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,EAAEA,CAACA;AACtBA,CAACA;AAED,SAAS,eAAe;IACpBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,MAAMA,IAAIA,yBAAyBA,CAACA;IACpCA,MAAMA,IAAIA,uGAAuGA,CAACA;IAClHA,MAAMA,IAAIA,8DAA8DA,CAACA;IAEzEA,MAAMA,IAAIA,qCAAqCA,CAACA;IAEhDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,8BAA8BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,CAACA;QACnFA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,gBAAgBA,CAACA;IACpHA,CAACA;IAEDA,MAAMA,IAAIA,4EAA4EA,CAACA;IACvFA,MAAMA,IAAIA,eAAeA,CAACA;IAC1BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,2CAA2CA,CAACA;IACtDA,MAAMA,IAAIA,mDAAmDA,CAACA;IAE9DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAChCA,MAAMA,IAAIA,eAAeA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,aAAaA,CAACA;IAC/GA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,IAAI,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAC1C,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;AAC9B,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;AAEpC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,4DAA4D,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACpI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,oDAAoD,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/G,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,iDAAiD,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC"} ->>>>>>> 6d94dc3... Body is optional. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f4fb252... Add support for parsing generator declarations. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> a5407f9... Function property assignments can also be generators. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 99981aa... Add support for parsing yield expressions. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAATA,CAACA;gBACGA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,EAALA,UAAMA,CAASA;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,EAAXA,UAAYA,IAAYA;gBACpB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAClC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC;YAC/D,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,IAAA,CAAC;oBACG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CACA;gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAT,CAAC;gBACD,CAAC;YACL,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBG,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,IAAIA,KAAKA,GAAGA,OAAOA,CAACA,MAAMA,CAACA,CAACA;QAC5BA,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QAExBA,IAAIA,QAAQA,GAAWA,GAAGA,CAACA,QAAQA,EAAEA,CAACA;QAEtCA,IAAIA,yBAAyBA,GAAGA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,QAAQA,CAACA;QAEtGA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;YACxCA,IAAIA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;YACxBA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAGvDA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA;oBAC9BA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBACzBA,CAACA;gBACDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAEvDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAE7EA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;YACtCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;QACnCA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAE3EE,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;gBACrBA,IAAIA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA;YAC3BA,CAACA;YAEDA,GAAGA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;QAC9CA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;YAC3BA,OAAOA,EAAEA,GAAGA,CAACA,GAAGA;YAChBA,yBAAyBA,EAAEA,yBAAyBA;YACpDA,KAAKA,EAALA,UAAMA,CAASA;gBAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,SAASA,EAAEA,UAACA,QAAQA,EAAEA,QAAQA;gBAE1BA,GAAGA,CAACA,SAASA,CAACA,QAAQA,EAAEA,EAAEA,UAAUA,EAAEA,IAAIA,EAAEA,QAAQA,EAAEA,GAAGA,EAAEA,EAAEA,WAAWA,CAACA,CAACA;gBAE1EA,MAAMA,CAACA;oBACHA,KAAKA,EAALA;wBAAU,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAAC,CAAC;iBACtDA,CAACA;gBAEFA,SAASA,WAAWA,CAACA,IAASA,EAAEA,IAASA;oBACrCG,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAC7BA,MAAMA,CAACA;oBACXA,CAACA;oBAEDA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBACvBA,CAACA;gBAAAH,CAACA;YACNA,CAACA;YACDA,WAAWA,EAAEA,UAAUA,IAAYA;gBAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACjC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;YACvC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAO,OAAQ,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YACDA,cAAcA,EAAdA;gBACI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAC1C,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;ACzPL,IAAO,UAAU,CA0BhB;AA1BD,WAAO,UAAU,EAAC,CAAC;IACfI,IAAaA,MAAMA;QAAnBC,SAAaA,MAAMA;QAwBnBC,CAACA;QAvBiBD,eAAQA,GAAtBA,UAAuBA,QAAgBA,EAAEA,OAAgBA;YACrDE,MAAMA,CAACA,IAAIA,KAAKA,CAACA,oBAAoBA,GAAGA,QAAQA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,CAACA;QACvEA,CAACA;QAEaF,yBAAkBA,GAAhCA,UAAiCA,QAAgBA;YAC7CG,MAAMA,CAACA,IAAIA,KAAKA,CAACA,yBAAyBA,GAAGA,QAAQA,CAACA,CAACA;QAC3DA,CAACA;QAEaH,mBAAYA,GAA1BA,UAA2BA,QAAgBA;YACvCI,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iBAAiBA,GAAGA,QAAQA,CAACA,CAACA;QACnDA,CAACA;QAEaJ,eAAQA,GAAtBA;YACIK,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iDAAiDA,CAACA,CAACA;QACxEA,CAACA;QAEaL,wBAAiBA,GAA/BA;YACIM,MAAMA,CAACA,IAAIA,KAAKA,CAACA,sBAAsBA,CAACA,CAACA;QAC7CA,CAACA;QAEaN,uBAAgBA,GAA9BA,UAA+BA,OAAgBA;YAC3CO,MAAMA,CAACA,IAAIA,KAAKA,CAACA,qBAAqBA,GAAGA,OAAOA,CAACA,CAACA;QACtDA,CAACA;QACLP,aAACA;IAADA,CAACA,AAxBDD,IAwBCA;IAxBYA,iBAAMA,GAANA,MAwBZA,CAAAA;AACLA,CAACA,EA1BM,UAAU,KAAV,UAAU,QA0BhB;AC1BD,IAAO,UAAU,CA0MhB;AA1MD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,cAAcA;QAA3BS,SAAaA,cAAcA;QAwM3BC,CAACA;QAvMiBD,6BAAcA,GAA5BA,UAAgCA,MAAWA,EAAEA,MAAWA,EAAEA,MAAiCA;YACvFE,EAAEA,CAACA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,CAACA,CAACA;gBACpBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAChCA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEaF,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,KAAQA;YAC1CG,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAGaH,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,QAAkCA;YACpEI,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;YAGrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,OAAOA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACvBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBAC/BA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBACzBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaJ,mBAAIA,GAAlBA,UAAsBA,KAAUA;YAC5BK,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,iBAAMA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,CAACA;YAC7CA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;QACnCA,CAACA;QAEaL,4BAAaA,GAA3BA,UAA+BA,KAAUA,EAAEA,SAA2CA;YAClFM,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACzCA,IAAIA,CAACA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACjBA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaN,6BAAcA,GAA5BA,UAAgCA,KAAUA,EAAEA,IAAsCA;YAC9EO,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaP,oBAAKA,GAAnBA,UAAuBA,KAAUA,EAAEA,IAAuCA;YACtEQ,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,iBAAMA,CAACA,gBAAgBA,EAAEA,CAACA;QACpCA,CAACA;QAEaR,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAsBA;YACnDS,IAAIA,MAAMA,GAAGA,CAACA,CAACA;YAEfA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,MAAMA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaT,qBAAMA,GAApBA,UAA0BA,MAAWA,EAAEA,IAAiBA;YACpDU,IAAIA,MAAMA,GAAQA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA;YAE9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;YAChCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaV,oBAAKA,GAAnBA,UAAuBA,MAAWA,EAAEA,IAAuBA;YACvDW,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,EAAKA,CAACA;YAE5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC3BA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaX,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDY,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEaZ,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDa,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEab,2BAAYA,GAA1BA,UAA2BA,KAAeA,EAAEA,KAAaA;YACrDc,IAAIA,GAAGA,GAAGA,CAACA,CAACA;YACZA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;YAE5BA,OAAOA,GAAGA,IAAIA,IAAIA,EAAEA,CAACA;gBACjBA,IAAIA,MAAMA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACvCA,IAAIA,QAAQA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,MAAMA,CAACA;gBAClBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,GAAGA,KAAKA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,GAAGA,CAACA;QAChBA,CAACA;QAEad,0BAAWA,GAAzBA,UAA6BA,MAAcA,EAAEA,YAAiBA;YAC1De,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,MAAMA,CAACA,CAACA,CAACA,GAAGA,YAAYA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaf,mBAAIA,GAAlBA,UAAsBA,KAAUA,EAAEA,MAAcA,EAAEA,YAAeA;YAC7DgB,IAAIA,KAAKA,GAAGA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC7BA,KAAKA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;YAC7BA,CAACA;QACLA,CAACA;QAEahB,mBAAIA,GAAlBA,UAAsBA,WAAgBA,EAAEA,WAAmBA,EAAEA,gBAAqBA,EAAEA,gBAAwBA,EAAEA,MAAcA;YACxHiB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,gBAAgBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,GAAGA,WAAWA,CAACA,WAAWA,GAAGA,CAACA,CAACA,CAACA;YAC1EA,CAACA;QACLA,CAACA;QAEajB,sBAAOA,GAArBA,UAAyBA,KAAUA,EAAEA,SAA4BA;YAC7DkB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,CAACA,CAACA;QACdA,CAACA;QACLlB,qBAACA;IAADA,CAACA,AAxMDT,IAwMCA;IAxMYA,yBAAcA,GAAdA,cAwMZA,CAAAA;AACLA,CAACA,EA1MM,UAAU,KAAV,UAAU,QA0MhB;AC1MD,IAAO,UAAU,CAkBhB;AAlBD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,eAAeA;QAA5B4B,SAAaA,eAAeA;QAgB5BC,CAACA;QAfiBD,wBAAQA,GAAtBA,UAAuBA,KAAUA;YAC7BE,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,iBAAiBA,CAACA;QAC5EA,CAACA;QAEaF,wBAAQA,GAAtBA,UAAuBA,MAAcA,EAAEA,KAAaA;YAChDG,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACnFA,CAACA;QAEaH,0BAAUA,GAAxBA,UAAyBA,MAAcA,EAAEA,KAAaA;YAClDI,MAAMA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,EAAEA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACpDA,CAACA;QAEaJ,sBAAMA,GAApBA,UAAqBA,KAAaA,EAAEA,KAAaA;YAC7CK,MAAMA,CAACA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;QACxCA,CAACA;QACLL,sBAACA;IAADA,CAACA,AAhBD5B,IAgBCA;IAhBYA,0BAAeA,GAAfA,eAgBZA,CAAAA;AACLA,CAACA,EAlBM,UAAU,KAAV,UAAU,QAkBhB;AClBD,IAAO,UAAU,CA8ShB;AA9SD,WAAO,UAAU,EAAC,CAAC;IACfA,WAAYA,UAAUA;QAElBkC,2CAAIA;QACJA,2CAAIA;QAGJA,mEAAgBA;QAChBA,6DAAaA;QACbA,+EAAsBA;QACtBA,iFAAuBA;QACvBA,uEAAkBA;QAIlBA,uDAAUA;QACVA,+DAAcA;QAGdA,+DAAcA;QAGdA,oFAAwBA;QACxBA,gEAAcA;QACdA,8DAAaA;QAGbA,0FAA2BA;QAC3BA,wEAAkBA;QAClBA,0EAAmBA;QACnBA,oEAAgBA;QAKhBA,4DAAYA;QACZA,0DAAWA;QACXA,4DAAYA;QACZA,kEAAeA;QACfA,kEAAeA;QACfA,gEAAcA;QACdA,8DAAaA;QACbA,sDAASA;QACTA,0DAAWA;QACXA,4DAAYA;QACZA,gEAAcA;QACdA,wDAAUA;QACVA,kEAAeA;QACfA,sDAASA;QACTA,sDAASA;QACTA,sEAAiBA;QACjBA,wDAAUA;QACVA,0DAAWA;QACXA,8DAAaA;QACbA,8DAAaA;QACbA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QACXA,wDAAUA;QACVA,8DAAaA;QACbA,wDAAUA;QACVA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QAGXA,4DAAYA;QACZA,4DAAYA;QACZA,0DAAWA;QACXA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,4DAAYA;QAGZA,sEAAiBA;QACjBA,oEAAgBA;QAChBA,wDAAUA;QACVA,gEAAcA;QACdA,gEAAcA;QACdA,oEAAgBA;QAChBA,8DAAaA;QACbA,8DAAaA;QACbA,4DAAYA;QAGZA,wDAAUA;QACVA,gEAAcA;QACdA,wEAAkBA;QAClBA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,wDAAUA;QACVA,8DAAaA;QAGbA,gEAAcA;QACdA,kEAAeA;QACfA,gEAAcA;QACdA,kEAAeA;QACfA,oEAAgBA;QAChBA,sEAAiBA;QACjBA,oDAAQA;QACRA,gEAAcA;QACdA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,oEAAgBA;QAChBA,0EAAmBA;QACnBA,gFAAsBA;QACtBA,sEAAiBA;QACjBA,gFAAsBA;QACtBA,gFAAsBA;QACtBA,kFAAuBA;QACvBA,4FAA4BA;QAC5BA,sDAASA;QACTA,wDAAUA;QACVA,8DAAaA;QACbA,4DAAYA;QACZA,8DAAaA;QACbA,kEAAeA;QACfA,8EAAqBA;QACrBA,0FAA2BA;QAC3BA,gHAAsCA;QACtCA,iEAAcA;QACdA,qDAAQA;QACRA,yDAAUA;QACVA,qEAAgBA;QAChBA,yDAAUA;QACVA,mFAAuBA;QACvBA,2DAAWA;QACXA,+DAAaA;QACbA,yDAAUA;QACVA,2DAAWA;QACXA,mEAAeA;QACfA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yEAAkBA;QAClBA,2FAA2BA;QAC3BA,uGAAiCA;QACjCA,6HAA4CA;QAC5CA,6EAAoBA;QACpBA,iEAAcA;QACdA,qEAAgBA;QAChBA,yDAAUA;QACVA,qEAAgBA;QAGhBA,yDAAUA;QAGVA,+DAAaA;QAGbA,yDAAUA;QACVA,6DAAYA;QACZA,uDAASA;QACTA,mEAAeA;QACfA,2DAAWA;QACXA,uDAASA;QACTA,uDAASA;QACTA,uDAASA;QACTA,uEAAiBA;QAGjBA,6EAAoBA;QACpBA,2EAAmBA;QACnBA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,mEAAeA;QACfA,uEAAiBA;QACjBA,qEAAgBA;QAGhBA,uFAAyBA;QACzBA,uFAAyBA;QACzBA,iFAAsBA;QACtBA,iFAAsBA;QAGtBA,2DAAWA;QACXA,2DAAWA;QAGXA,uEAAiBA;QACjBA,+DAAaA;QACbA,yEAAkBA;QAClBA,iEAAcA;QACdA,mEAAeA;QAGfA,+CAAKA;QACLA,2DAAWA;QACXA,uEAAiBA;QACjBA,2EAAmBA;QACnBA,mEAAeA;QACfA,mEAAeA;QACfA,iEAAcA;QACdA,uEAAiBA;QACjBA,6DAAYA;QACZA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,6DAAYA;QACZA,qEAAgBA;QAChBA,2DAAWA;QACXA,uEAAiBA;QACjBA,+DAAaA;QAGbA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,qEAAgBA;QAChBA,iEAAcA;QACdA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,iFAAsBA;QACtBA,iFAAsBA;QACtBA,6EAAoBA;QACpBA,iFAAsBA;QACtBA,mFAAuBA;QACvBA,qFAAwBA;QACxBA,mFAAuBA;QACvBA,6GAAoCA;QACpCA,+FAA6BA;QAC7BA,iEAAcA;QACdA,mFAAuBA;QACvBA,yEAAkBA;QAClBA,uEAAiBA;QACjBA,yEAAkBA;QAClBA,qFAAwBA;QACxBA,mEAAeA;QAGfA,2EAAmBA;QACnBA,yEAAkBA;QAGlBA,6DAAYA;QACZA,+DAAaA;QACbA,qEAAgBA;QAChBA,uEAAiBA;QAGjBA,iEAAcA;QACdA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yDAAUA;QACVA,2DAAWA;QACXA,+DAAaA;QACbA,iEAAcA;QAGdA,+DAAaA;QACbA,yDAAUA;QAGVA,qFAAwBA;QACxBA,yFAA0BA;QAG1BA,uDAASA;QACTA,2DAAWA;QACXA,iEAAcA;QACdA,6EAAoBA;QACpBA,mFAAuBA;QACvBA,uFAAyBA;QAEzBA,gDAAuBA,uBAAYA,0BAAAA;QACnCA,+CAAsBA,sBAAWA,yBAAAA;QAEjCA,sDAA6BA,uBAAYA,gCAAAA;QACzCA,qDAA4BA,uBAAYA,+BAAAA;QAExCA,4DAAmCA,4BAAiBA,sCAAAA;QACpDA,2DAAkCA,uBAAYA,qCAAAA;QAE9CA,kDAAyBA,qBAAUA,4BAAAA;QACnCA,iDAAwBA,wBAAaA,2BAAAA;QAErCA,wCAAeA,+BAAoBA,kBAAAA;QACnCA,uCAAcA,gCAAqBA,iBAAAA;QAEnCA,sCAAaA,qBAAUA,gBAAAA;QACvBA,qCAAYA,2BAAgBA,eAAAA;QAE5BA,4CAAmBA,yBAAcA,sBAAAA;QACjCA,2CAAkBA,2BAAgBA,qBAAAA;QAElCA,2CAAkBA,uBAAYA,qBAAAA;QAC9BA,0CAAiBA,0BAAeA,oBAAAA;QAEhCA,uCAAcA,2BAAgBA,iBAAAA;QAC9BA,sCAAaA,6BAAkBA,gBAAAA;QAE/BA,qCAAYA,qBAAUA,eAAAA;QACtBA,oCAAWA,oCAAyBA,cAAAA;IACxCA,CAACA,EA5SWlC,qBAAUA,KAAVA,qBAAUA,QA4SrBA;IA5SDA,IAAYA,UAAUA,GAAVA,qBA4SXA,CAAAA;AACLA,CAACA,EA9SM,UAAU,KAAV,UAAU,QA8ShB;AC9SD,IAAO,UAAU,CAoPhB;AApPD,WAAO,UAAU;IAACA,IAAAA,WAAWA,CAoP5BA;IApPiBA,WAAAA,WAAWA,EAACA,CAACA;QAC3BmC,IAAIA,iBAAiBA,GAAQA;YACzBA,KAAKA,EAAEA,mBAAqBA;YAC5BA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,OAAOA,EAAEA,qBAAuBA;YAChCA,UAAUA,EAAEA,wBAA0BA;YACtCA,OAAOA,EAAEA,qBAAuBA;YAChCA,aAAaA,EAAEA,2BAA6BA;YAC5CA,UAAUA,EAAEA,wBAA0BA;YACtCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,SAASA,EAAEA,uBAAyBA;YACpCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,UAAUA,EAAEA,wBAA0BA;YACtCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,WAAWA,EAAEA,yBAA2BA;YACxCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAACA,sBAAwBA;YACjCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,WAAWA,EAAEA,yBAA2BA;YACxCA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,QAAQA,EAAEA,sBAAwBA;YAClCA,OAAOA,EAAEA,qBAAuBA;YAChCA,QAAQA,EAAEA,sBAAwBA;YAClCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAEhCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,yBAA2BA;YAChCA,GAAGA,EAAEA,0BAA4BA;YACjCA,GAAGA,EAAEA,iBAAmBA;YACxBA,KAAKA,EAAEA,uBAAyBA;YAChCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,yBAA2BA;YAChCA,IAAIA,EAAEA,4BAA8BA;YACpCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,0BAA4BA;YAClCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,+BAAiCA;YACvCA,KAAKA,EAAEA,gCAAkCA;YACzCA,KAAKA,EAAEA,qCAAuCA;YAC9CA,GAAGA,EAAEA,kBAAoBA;YACzBA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,qBAAuBA;YAC5BA,IAAIA,EAAEA,sBAAwBA;YAC9BA,IAAIA,EAAEA,wBAA0BA;YAChCA,IAAIA,EAAEA,8BAAgCA;YACtCA,IAAIA,EAAEA,oCAAsCA;YAC5CA,KAAKA,EAAEA,+CAAiDA;YACxDA,GAAGA,EAAEA,wBAAyBA;YAC9BA,GAAGA,EAAEA,kBAAmBA;YACxBA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,0BAA2BA;YAChCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,iCAAkCA;YACxCA,IAAIA,EAAEA,qBAAsBA;YAC5BA,GAAGA,EAAEA,uBAAwBA;YAC7BA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,qBAAsBA;YAC3BA,IAAIA,EAAEA,yBAA0BA;YAChCA,IAAIA,EAAEA,0BAA2BA;YACjCA,IAAIA,EAAEA,6BAA8BA;YACpCA,IAAIA,EAAEA,4BAA6BA;YACnCA,KAAKA,EAAEA,qCAAsCA;YAC7CA,KAAKA,EAAEA,2CAA4CA;YACnDA,MAAMA,EAAEA,sDAAuDA;YAC/DA,IAAIA,EAAEA,8BAA+BA;YACrCA,IAAIA,EAAEA,wBAAyBA;YAC/BA,IAAIA,EAAEA,0BAA2BA;YACjCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,0BAA2BA;SACpCA,CAACA;QAEFA,IAAIA,UAAUA,GAAGA,IAAIA,KAAKA,EAAUA,CAACA;QAErCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,iBAAiBA,CAACA,CAACA,CAACA;YACjCA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAEzCA,UAAUA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA,GAAGA,IAAIA,CAACA;YAC/CA,CAACA;QACLA,CAACA;QAKDA,UAAUA,CAACA,2BAA6BA,CAACA,GAAGA,aAAaA,CAACA;QAE1DA,SAAgBA,YAAYA,CAACA,IAAYA;YACrCC,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBACzCA,MAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA;YACnCA,CAACA;YAEDA,MAAMA,CAACA,YAAeA,CAACA;QAC3BA,CAACA;QANeD,wBAAYA,GAAZA,YAMfA,CAAAA;QAEDA,SAAgBA,OAAOA,CAACA,IAAgBA;YACpCE,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAHeF,mBAAOA,GAAPA,OAGfA,CAAAA;QAEDA,SAAgBA,YAAYA,CAACA,IAAgBA;YACzCG,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,YAAYA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,WAAWA,CAACA;QAC7EA,CAACA;QAFeH,wBAAYA,GAAZA,YAEfA,CAAAA;QAEDA,SAAgBA,gBAAgBA,CAACA,IAAgBA;YAC7CI,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,gBAAgBA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,eAAeA,CAACA;QACrFA,CAACA;QAFeJ,4BAAgBA,GAAhBA,gBAEfA,CAAAA;QAEDA,SAAgBA,oCAAoCA,CAACA,SAAqBA;YACtEK,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,wBAA0BA;oBAC3BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAZeL,gDAAoCA,GAApCA,oCAYfA,CAAAA;QAEDA,SAAgBA,+BAA+BA,CAACA,SAAqBA;YACjEM,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,qBAAuBA,CAACA;gBAC7BA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,8BAAgCA,CAACA;gBACtCA,KAAKA,oCAAsCA,CAACA;gBAC5CA,KAAKA,+CAAiDA,CAACA;gBACvDA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,yBAA2BA,CAACA;gBACjCA,KAAKA,4BAA8BA,CAACA;gBACpCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,gCAAkCA,CAACA;gBACxCA,KAAKA,qCAAuCA,CAACA;gBAC7CA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,kBAAmBA,CAACA;gBACzBA,KAAKA,iCAAkCA,CAACA;gBACxCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,mBAAqBA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QA1CeN,2CAA+BA,GAA/BA,+BA0CfA,CAAAA;QAEDA,SAAgBA,yBAAyBA,CAACA,SAAqBA;YAC3DO,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA;oBACvBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAnBeP,qCAAyBA,GAAzBA,yBAmBfA,CAAAA;QAEDA,SAAgBA,MAAMA,CAACA,IAAgBA;YACnCQ,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACXA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,uBAAyBA,CAACA;gBAC/BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAsBA,CAACA;gBAC5BA,KAAKA,sBAAuBA,CAACA;gBAC7BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,uBAAwBA,CAACA;gBAC9BA,KAAKA,sBAAyBA;oBAC1BA,MAAMA,CAACA,IAAIA,CAACA;YACpBA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAnBeR,kBAAMA,GAANA,MAmBfA,CAAAA;IACLA,CAACA,EApPiBnC,WAAWA,GAAXA,sBAAWA,KAAXA,sBAAWA,QAoP5BA;AAADA,CAACA,EApPM,UAAU,KAAV,UAAU,QAoPhB;AC/OD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAsB7B,IAAI,UAAU,GAAQ;IAClB,wBAAwB,EAAE,qBAAqB;IAC/C,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,aAAa;IAC1B,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,wBAAwB;IAClD,6BAA6B,EAAE,0BAA0B;IAGzD,uBAAuB,EAAE,+BAA+B;IACxD,qBAAqB,EAAE,+BAA+B;IACtD,wBAAwB,EAAE,yBAAyB;CACtD,CAAC;AAEF,IAAI,WAAW,GAAqB;IAC3B;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SACjD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;SACnD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAClD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;SAC9G;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAClE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACrI;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC3D;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAO,EAAE;KACpB;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,qCAAqC;QAC3C,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACxC;QAGD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YAC5E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE;SACpE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YACpE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;YACzC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACvF,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SACpH;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;SAChD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACtF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC9F;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,uBAAuB,CAAC;QACrC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC5D;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC9E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACxD;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5G,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SAC9G;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrF,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAE/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAChE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAG;SAC/E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAG;SAC/E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAE;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAC;QAC/B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,+CAA+C,EAAE,UAAU,EAAE,IAAI,EAAE;YAChG,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAClE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACrE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,EAAE;YACvE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACjF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE;YAChG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACK;QACF,IAAI,EAAE,kCAAkC;QACxC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SAAC;KACtD;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KACrF;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAAC;KAC5D;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KAChF;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;CAAC,CAAC;AAEP,SAAS,SAAS,CAAC,UAA2B;IAC1C4C,IAAIA,QAAQA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA;IAChDA,MAAMA,CAAOA,UAAUA,CAACA,UAAWA,CAACA,QAAQA,CAACA,CAACA;AAClDA,CAACA;AAED,WAAW,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAE5D,SAAS,sBAAsB,CAAC,UAAkB;IAC9CC,EAAEA,CAACA,CAACA,UAAUA,CAACA,eAAeA,CAACA,QAAQA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAC5DA,MAAMA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,EAAEA,UAAUA,CAACA,MAAMA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,CAACA,UAAUA,CAACA;AACtBA,CAACA;AAED,SAAS,oBAAoB,CAAC,UAA2B;IACrDC,MAAMA,CAACA,sBAAsBA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;AACnDA,CAACA;AAED,SAAS,OAAO,CAAC,KAAwB;IACrCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;QAChBA,MAAMA,CAACA,cAAcA,CAACA;IAC1BA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,uBAAuBA,GAAGA,KAAKA,CAACA,WAAWA,GAAGA,GAAGA,CAACA;IAC7DA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;QACpBA,MAAMA,CAACA,KAAKA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;IACpCA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;IACtBA,CAACA;AACLA,CAACA;AAED,SAAS,SAAS,CAAC,KAAa;IAC5BC,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;AAC9DA,CAACA;AAED,SAAS,WAAW,CAAC,KAAwB;IACzCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,KAAKA,WAAWA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,IAAIA,CAACA;IAC5BA,CAACA;IAEDA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;AACtBA,CAACA;AAED,SAAS,2BAA2B,CAAC,UAA2B;IAC5DC,IAAIA,MAAMA,GAAGA,iBAAiBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,0CAA0CA,CAACA;IAExIA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,SAASA,CAACA;IAEpBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACJA,MAAMA,IAAIA,OAAOA,CAACA;YACtBA,CAACA;YAEDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,IAAIA,eAAeA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QACxEA,CAACA;IACLA,CAACA;IAEDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;QACjCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,eAAeA,CAACA;YAE1BA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;gBACnBA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,iBAAiBA,CAACA;YACpFA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,gBAAgBA,CAACA;YACpDA,CAACA;QACLA,CAACA;QACDA,MAAMA,IAAIA,OAAOA,CAACA;IACtBA,CAACA;IAEDA,MAAMA,IAAIA,YAAYA,CAACA;IACvBA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,+BAA+BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,OAAOA,CAACA;IAClHA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,0BAA0BA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,OAAOA,CAACA;IACvGA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,oEAAoEA,CAACA;IAC1GA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,8BAA8BA,CAACA;QAEzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,mBAAmBA,GAAGA,CAACA,GAAGA,gBAAgBA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,GAAGA,OAAOA,CAACA;QACjGA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,8CAA8CA,CAACA;IAC7DA,CAACA;IACDA,MAAMA,IAAIA,WAAWA,CAACA;IAEtBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,yBAAyBA,CAACA;IAEpCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACRA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,uBAAuBA,CAACA,UAAUA,CAACA,CAACA;IAClDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,uBAAuB,CAAC,UAA2B;IACxDC,IAAIA,MAAMA,GAAGA,uBAAuBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,sBAAsBA,CAAAA;IAE/EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACxBA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;IAC/CA,CAACA;IAEDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,KAAKA,kBAAkBA,CAACA,CAACA,CAACA;QACzCA,MAAMA,IAAIA,qCAAqCA,CAACA;IACpDA,CAACA;IAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,UAAUA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,uBAAuBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,eAAeA,CAACA;IACvFA,MAAMA,IAAIA,oBAAoBA,CAACA;IAE/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,IAAIA,CAACA;IAClCA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa;IAClBC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,mBAAmBA,CAACA;IAE9BA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,2BAA2BA,CAACA,UAAUA,CAACA,CAACA;IACtDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,WAAW,CAAC,IAAY;IAC7BC,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAAAA;AAC7FA,CAACA;AAED,SAAS,cAAc;IACnBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IACNA,2CAA2CA,GAC3CA,MAAMA,GACNA,yBAAyBA,GACzBA,+DAA+DA,GAC/DA,4DAA4DA,GAC5DA,eAAeA,GACfA,MAAMA,GACNA,qEAAqEA,GACrEA,4CAA4CA,GAC5CA,6BAA6BA,GAC7BA,mBAAmBA,GACnBA,MAAMA,GACNA,yCAAyCA,GACzCA,eAAeA,GACfA,MAAMA,GACNA,kEAAkEA,GAClEA,gEAAgEA,GAChEA,sDAAsDA,GACtDA,mBAAmBA,GACnBA,eAAeA,CAACA;IAEhBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,MAAMA,CAACA;QACjBA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,eAAeA,CAACA;QAEpHA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBAChBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,IAAIA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;gBAC7CA,MAAMA,IAAIA,kCAAkCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACzEA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,0CAA0CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACjFA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa,CAAC,CAAM,EAAE,KAAa;IACxCC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;YACpBA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;AACLA,CAACA;AAED,SAAS,OAAO,CAAI,KAAU,EAAE,IAAsB;IAClDC,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;IAErBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC3CA,IAAIA,CAACA,GAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACtBA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA;QAEhBA,IAAIA,IAAIA,GAAQA,MAAMA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;QAChCA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACbA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA;IACrBA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB,CAAC,QAA0D,EAAE,gBAAwB,EAAE,MAAc;IAClIC,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;IAErCA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,IAAIA,KAAaA,CAACA;IAElBA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACxBA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAE1BA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,MAAMA,CAACA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,qBAAqBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,OAAOA,CAACA;QAChGA,CAACA;QAEDA,IAAIA,WAAWA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;QACnCA,MAAMA,GAAGA,WAAWA,CAAAA;QAEpBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAC7CA,EAAEA,CAACA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;gBACvBA,MAAMA,IAAIA,MAAMA,CAACA;YACrBA,CAACA;YAEDA,KAAKA,GAAGA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA;YAC7CA,MAAMA,IAAIA,iBAAiBA,GAAGA,KAAKA,GAAGA,uBAAuBA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;QAC7FA,CAACA;QAEDA,MAAMA,IAAIA,iBAAiBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,mCAAmCA,CAACA;IAC3HA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,MAAMA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAAAA;QAC9FA,KAAKA,GAAGA,gBAAgBA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,gBAAgBA,CAACA,CAACA;QAC3EA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,KAAKA,GAAGA,UAAUA,CAAAA;QAEhEA,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;QAEjFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,IAAIA,eAAeA,CAACA,CAACA,CAACA;YAC5BA,EAAEA,CAACA,CAACA,eAAeA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACpCA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;gBACtDA,MAAMA,IAAIA,wBAAwBA,CAACA,eAAeA,CAACA,CAACA,CAACA,EAAEA,gBAAgBA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,MAAMA,CAACA,CAACA;YAClGA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,MAAMA,GAAGA,kDAAkDA,CAACA;QACtEA,MAAMA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA;IAC/BA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,iBAAiB;IACtBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,MAAMA,IAAIA,iCAAiCA,CAACA;IAC5CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC7DA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,IAAIA,CAACA;QACnBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,eAAeA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,IAAIA,GAAGA,CAACA;QAClBA,CAACA;QACDA,IAAIA,CAACA,CAACA;YACFA,MAAMA,IAAIA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA;QACvDA,CAACA;IACLA,CAACA;IACDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,IAAIA,gEAAgEA,CAACA;IAC3EA,MAAMA,IAAIA,+CAA+CA,CAACA;IAS1DA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,2CAA2CA,GACpDA,MAAMA,GACNA,yBAAyBA,GACzBA,0CAA0CA,CAACA;IAE/CA,IAAIA,CAASA,CAACA;IACdA,IAAIA,QAAQA,GAAqDA,EAAEA,CAACA;IAEpEA,GAAGA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACvFA,QAAQA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;IACxEA,CAACA;IAEDA,QAAQA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,IAAIA,CAACA,EAA5BA,CAA4BA,CAACA,CAACA;IAEtDA,MAAMA,IAAIA,sGAAsGA,CAACA;IAEjHA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,MAAMA,IAAIA,mCAAmCA,CAACA;IAG9CA,GAAGA,CAACA,CAACA,CAACA,GAAGA,cAAcA,EAAEA,CAACA,IAAIA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAChDA,IAAIA,iBAAiBA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,EAAnBA,CAAmBA,CAACA,CAACA;QAC5FA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAC/BA,MAAMA,IAAIA,qBAAqBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;YAC1CA,MAAMA,IAAIA,wBAAwBA,CAACA,iBAAiBA,EAAEA,CAACA,EAAEA,kBAAkBA,CAACA,CAACA;QACjFA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,8DAA8DA,CAACA;IACzEA,MAAMA,IAAIA,mBAAmBA,CAACA;IAC9BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,GAAGA,CAACA;IAEdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,cAAc,CAAC,IAA2B;IAC/CC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACrCA,EAAEA,CAACA,CAAMA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,EAAEA,CAACA;AACtBA,CAACA;AAED,SAAS,eAAe;IACpBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,MAAMA,IAAIA,yBAAyBA,CAACA;IACpCA,MAAMA,IAAIA,uGAAuGA,CAACA;IAClHA,MAAMA,IAAIA,8DAA8DA,CAACA;IAEzEA,MAAMA,IAAIA,qCAAqCA,CAACA;IAEhDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,8BAA8BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,CAACA;QACnFA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,gBAAgBA,CAACA;IACpHA,CAACA;IAEDA,MAAMA,IAAIA,4EAA4EA,CAACA;IACvFA,MAAMA,IAAIA,eAAeA,CAACA;IAC1BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,2CAA2CA,CAACA;IACtDA,MAAMA,IAAIA,mDAAmDA,CAACA;IAE9DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAChCA,MAAMA,IAAIA,eAAeA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,aAAaA,CAACA;IAC/GA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,IAAI,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAC1C,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;AAC9B,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;AAEpC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,4DAA4D,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACpI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,oDAAoD,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/G,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,iDAAiD,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC"} ->>>>>>> 8097afa... Move parser error to grammar check phase. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 67123d7... Move parser error to the grammar checker. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAATA,CAACA;gBACGA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,EAALA,UAAMA,CAASA;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,EAAXA,UAAYA,IAAYA;gBACpB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAClC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC;YAC/D,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,IAAA,CAAC;oBACG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CACA;gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAT,CAAC;gBACD,CAAC;YACL,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBG,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,IAAIA,KAAKA,GAAGA,OAAOA,CAACA,MAAMA,CAACA,CAACA;QAC5BA,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QAExBA,IAAIA,QAAQA,GAAWA,GAAGA,CAACA,QAAQA,EAAEA,CAACA;QAEtCA,IAAIA,yBAAyBA,GAAGA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,QAAQA,CAACA;QAEtGA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;YACxCA,IAAIA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;YACxBA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAGvDA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA;oBAC9BA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBACzBA,CAACA;gBACDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAEvDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAE7EA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;YACtCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;QACnCA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAE3EE,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;gBACrBA,IAAIA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA;YAC3BA,CAACA;YAEDA,GAAGA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;QAC9CA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;YAC3BA,OAAOA,EAAEA,GAAGA,CAACA,GAAGA;YAChBA,yBAAyBA,EAAEA,yBAAyBA;YACpDA,KAAKA,EAALA,UAAMA,CAASA;gBAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,SAASA,EAAEA,UAACA,QAAQA,EAAEA,QAAQA;gBAE1BA,GAAGA,CAACA,SAASA,CAACA,QAAQA,EAAEA,EAAEA,UAAUA,EAAEA,IAAIA,EAAEA,QAAQA,EAAEA,GAAGA,EAAEA,EAAEA,WAAWA,CAACA,CAACA;gBAE1EA,MAAMA,CAACA;oBACHA,KAAKA,EAALA;wBAAU,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAAC,CAAC;iBACtDA,CAACA;gBAEFA,SAASA,WAAWA,CAACA,IAASA,EAAEA,IAASA;oBACrCG,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAC7BA,MAAMA,CAACA;oBACXA,CAACA;oBAEDA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBACvBA,CAACA;gBAAAH,CAACA;YACNA,CAACA;YACDA,WAAWA,EAAEA,UAAUA,IAAYA;gBAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACjC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;YACvC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAO,OAAQ,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YACDA,cAAcA,EAAdA;gBACI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAC1C,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;ACzPL,IAAO,UAAU,CA0BhB;AA1BD,WAAO,UAAU,EAAC,CAAC;IACfI,IAAaA,MAAMA;QAAnBC,SAAaA,MAAMA;QAwBnBC,CAACA;QAvBiBD,eAAQA,GAAtBA,UAAuBA,QAAgBA,EAAEA,OAAgBA;YACrDE,MAAMA,CAACA,IAAIA,KAAKA,CAACA,oBAAoBA,GAAGA,QAAQA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,CAACA;QACvEA,CAACA;QAEaF,yBAAkBA,GAAhCA,UAAiCA,QAAgBA;YAC7CG,MAAMA,CAACA,IAAIA,KAAKA,CAACA,yBAAyBA,GAAGA,QAAQA,CAACA,CAACA;QAC3DA,CAACA;QAEaH,mBAAYA,GAA1BA,UAA2BA,QAAgBA;YACvCI,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iBAAiBA,GAAGA,QAAQA,CAACA,CAACA;QACnDA,CAACA;QAEaJ,eAAQA,GAAtBA;YACIK,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iDAAiDA,CAACA,CAACA;QACxEA,CAACA;QAEaL,wBAAiBA,GAA/BA;YACIM,MAAMA,CAACA,IAAIA,KAAKA,CAACA,sBAAsBA,CAACA,CAACA;QAC7CA,CAACA;QAEaN,uBAAgBA,GAA9BA,UAA+BA,OAAgBA;YAC3CO,MAAMA,CAACA,IAAIA,KAAKA,CAACA,qBAAqBA,GAAGA,OAAOA,CAACA,CAACA;QACtDA,CAACA;QACLP,aAACA;IAADA,CAACA,AAxBDD,IAwBCA;IAxBYA,iBAAMA,GAANA,MAwBZA,CAAAA;AACLA,CAACA,EA1BM,UAAU,KAAV,UAAU,QA0BhB;AC1BD,IAAO,UAAU,CA0MhB;AA1MD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,cAAcA;QAA3BS,SAAaA,cAAcA;QAwM3BC,CAACA;QAvMiBD,6BAAcA,GAA5BA,UAAgCA,MAAWA,EAAEA,MAAWA,EAAEA,MAAiCA;YACvFE,EAAEA,CAACA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,CAACA,CAACA;gBACpBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAChCA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEaF,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,KAAQA;YAC1CG,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAGaH,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,QAAkCA;YACpEI,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;YAGrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,OAAOA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACvBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBAC/BA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBACzBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaJ,mBAAIA,GAAlBA,UAAsBA,KAAUA;YAC5BK,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,iBAAMA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,CAACA;YAC7CA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;QACnCA,CAACA;QAEaL,4BAAaA,GAA3BA,UAA+BA,KAAUA,EAAEA,SAA2CA;YAClFM,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACzCA,IAAIA,CAACA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACjBA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaN,6BAAcA,GAA5BA,UAAgCA,KAAUA,EAAEA,IAAsCA;YAC9EO,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaP,oBAAKA,GAAnBA,UAAuBA,KAAUA,EAAEA,IAAuCA;YACtEQ,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,iBAAMA,CAACA,gBAAgBA,EAAEA,CAACA;QACpCA,CAACA;QAEaR,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAsBA;YACnDS,IAAIA,MAAMA,GAAGA,CAACA,CAACA;YAEfA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,MAAMA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaT,qBAAMA,GAApBA,UAA0BA,MAAWA,EAAEA,IAAiBA;YACpDU,IAAIA,MAAMA,GAAQA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA;YAE9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;YAChCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaV,oBAAKA,GAAnBA,UAAuBA,MAAWA,EAAEA,IAAuBA;YACvDW,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,EAAKA,CAACA;YAE5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC3BA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaX,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDY,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEaZ,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDa,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEab,2BAAYA,GAA1BA,UAA2BA,KAAeA,EAAEA,KAAaA;YACrDc,IAAIA,GAAGA,GAAGA,CAACA,CAACA;YACZA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;YAE5BA,OAAOA,GAAGA,IAAIA,IAAIA,EAAEA,CAACA;gBACjBA,IAAIA,MAAMA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACvCA,IAAIA,QAAQA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,MAAMA,CAACA;gBAClBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,GAAGA,KAAKA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,GAAGA,CAACA;QAChBA,CAACA;QAEad,0BAAWA,GAAzBA,UAA6BA,MAAcA,EAAEA,YAAiBA;YAC1De,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,MAAMA,CAACA,CAACA,CAACA,GAAGA,YAAYA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaf,mBAAIA,GAAlBA,UAAsBA,KAAUA,EAAEA,MAAcA,EAAEA,YAAeA;YAC7DgB,IAAIA,KAAKA,GAAGA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC7BA,KAAKA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;YAC7BA,CAACA;QACLA,CAACA;QAEahB,mBAAIA,GAAlBA,UAAsBA,WAAgBA,EAAEA,WAAmBA,EAAEA,gBAAqBA,EAAEA,gBAAwBA,EAAEA,MAAcA;YACxHiB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,gBAAgBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,GAAGA,WAAWA,CAACA,WAAWA,GAAGA,CAACA,CAACA,CAACA;YAC1EA,CAACA;QACLA,CAACA;QAEajB,sBAAOA,GAArBA,UAAyBA,KAAUA,EAAEA,SAA4BA;YAC7DkB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,CAACA,CAACA;QACdA,CAACA;QACLlB,qBAACA;IAADA,CAACA,AAxMDT,IAwMCA;IAxMYA,yBAAcA,GAAdA,cAwMZA,CAAAA;AACLA,CAACA,EA1MM,UAAU,KAAV,UAAU,QA0MhB;AC1MD,IAAO,UAAU,CAkBhB;AAlBD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,eAAeA;QAA5B4B,SAAaA,eAAeA;QAgB5BC,CAACA;QAfiBD,wBAAQA,GAAtBA,UAAuBA,KAAUA;YAC7BE,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,iBAAiBA,CAACA;QAC5EA,CAACA;QAEaF,wBAAQA,GAAtBA,UAAuBA,MAAcA,EAAEA,KAAaA;YAChDG,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACnFA,CAACA;QAEaH,0BAAUA,GAAxBA,UAAyBA,MAAcA,EAAEA,KAAaA;YAClDI,MAAMA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,EAAEA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACpDA,CAACA;QAEaJ,sBAAMA,GAApBA,UAAqBA,KAAaA,EAAEA,KAAaA;YAC7CK,MAAMA,CAACA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;QACxCA,CAACA;QACLL,sBAACA;IAADA,CAACA,AAhBD5B,IAgBCA;IAhBYA,0BAAeA,GAAfA,eAgBZA,CAAAA;AACLA,CAACA,EAlBM,UAAU,KAAV,UAAU,QAkBhB;AClBD,IAAO,UAAU,CA+ShB;AA/SD,WAAO,UAAU,EAAC,CAAC;IACfA,WAAYA,UAAUA;QAElBkC,2CAAIA;QACJA,2CAAIA;QAGJA,mEAAgBA;QAChBA,6DAAaA;QACbA,+EAAsBA;QACtBA,iFAAuBA;QACvBA,uEAAkBA;QAIlBA,uDAAUA;QACVA,+DAAcA;QAGdA,+DAAcA;QAGdA,oFAAwBA;QACxBA,gEAAcA;QACdA,8DAAaA;QAGbA,0FAA2BA;QAC3BA,wEAAkBA;QAClBA,0EAAmBA;QACnBA,oEAAgBA;QAKhBA,4DAAYA;QACZA,0DAAWA;QACXA,4DAAYA;QACZA,kEAAeA;QACfA,kEAAeA;QACfA,gEAAcA;QACdA,8DAAaA;QACbA,sDAASA;QACTA,0DAAWA;QACXA,4DAAYA;QACZA,gEAAcA;QACdA,wDAAUA;QACVA,kEAAeA;QACfA,sDAASA;QACTA,sDAASA;QACTA,sEAAiBA;QACjBA,wDAAUA;QACVA,0DAAWA;QACXA,8DAAaA;QACbA,8DAAaA;QACbA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QACXA,wDAAUA;QACVA,8DAAaA;QACbA,wDAAUA;QACVA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QAGXA,4DAAYA;QACZA,4DAAYA;QACZA,0DAAWA;QACXA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,4DAAYA;QAGZA,sEAAiBA;QACjBA,oEAAgBA;QAChBA,wDAAUA;QACVA,gEAAcA;QACdA,gEAAcA;QACdA,oEAAgBA;QAChBA,8DAAaA;QACbA,8DAAaA;QACbA,4DAAYA;QAGZA,wDAAUA;QACVA,gEAAcA;QACdA,wEAAkBA;QAClBA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,wDAAUA;QACVA,8DAAaA;QAGbA,gEAAcA;QACdA,kEAAeA;QACfA,gEAAcA;QACdA,kEAAeA;QACfA,oEAAgBA;QAChBA,sEAAiBA;QACjBA,oDAAQA;QACRA,gEAAcA;QACdA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,oEAAgBA;QAChBA,0EAAmBA;QACnBA,gFAAsBA;QACtBA,sEAAiBA;QACjBA,gFAAsBA;QACtBA,gFAAsBA;QACtBA,kFAAuBA;QACvBA,4FAA4BA;QAC5BA,sDAASA;QACTA,wDAAUA;QACVA,8DAAaA;QACbA,4DAAYA;QACZA,8DAAaA;QACbA,kEAAeA;QACfA,8EAAqBA;QACrBA,0FAA2BA;QAC3BA,gHAAsCA;QACtCA,iEAAcA;QACdA,qDAAQA;QACRA,yDAAUA;QACVA,qEAAgBA;QAChBA,yDAAUA;QACVA,mFAAuBA;QACvBA,2DAAWA;QACXA,+DAAaA;QACbA,yDAAUA;QACVA,2DAAWA;QACXA,mEAAeA;QACfA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yEAAkBA;QAClBA,2FAA2BA;QAC3BA,uGAAiCA;QACjCA,6HAA4CA;QAC5CA,6EAAoBA;QACpBA,iEAAcA;QACdA,qEAAgBA;QAChBA,yDAAUA;QACVA,qEAAgBA;QAGhBA,yDAAUA;QAGVA,+DAAaA;QAGbA,yDAAUA;QACVA,6DAAYA;QACZA,uDAASA;QACTA,mEAAeA;QACfA,2DAAWA;QACXA,uDAASA;QACTA,uDAASA;QACTA,uDAASA;QACTA,uEAAiBA;QAGjBA,6EAAoBA;QACpBA,2EAAmBA;QACnBA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,mEAAeA;QACfA,uEAAiBA;QACjBA,qEAAgBA;QAGhBA,uFAAyBA;QACzBA,uFAAyBA;QACzBA,iFAAsBA;QACtBA,iFAAsBA;QAGtBA,2DAAWA;QACXA,2DAAWA;QAGXA,uEAAiBA;QACjBA,+DAAaA;QACbA,yEAAkBA;QAClBA,iEAAcA;QACdA,mEAAeA;QAGfA,+CAAKA;QACLA,2DAAWA;QACXA,uEAAiBA;QACjBA,2EAAmBA;QACnBA,mEAAeA;QACfA,mEAAeA;QACfA,iEAAcA;QACdA,uEAAiBA;QACjBA,6DAAYA;QACZA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,6DAAYA;QACZA,qEAAgBA;QAChBA,2DAAWA;QACXA,uEAAiBA;QACjBA,+DAAaA;QAGbA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,qEAAgBA;QAChBA,iEAAcA;QACdA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,iFAAsBA;QACtBA,iFAAsBA;QACtBA,6EAAoBA;QACpBA,iFAAsBA;QACtBA,mFAAuBA;QACvBA,qFAAwBA;QACxBA,mFAAuBA;QACvBA,6GAAoCA;QACpCA,+FAA6BA;QAC7BA,iEAAcA;QACdA,mFAAuBA;QACvBA,yEAAkBA;QAClBA,uEAAiBA;QACjBA,yEAAkBA;QAClBA,qFAAwBA;QACxBA,mEAAeA;QAGfA,2EAAmBA;QACnBA,yEAAkBA;QAGlBA,6DAAYA;QACZA,+DAAaA;QACbA,qEAAgBA;QAChBA,uEAAiBA;QAGjBA,iEAAcA;QACdA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yDAAUA;QACVA,2DAAWA;QACXA,+DAAaA;QACbA,iEAAcA;QAGdA,+DAAaA;QACbA,yDAAUA;QAGVA,qFAAwBA;QACxBA,yFAA0BA;QAG1BA,uDAASA;QACTA,2DAAWA;QACXA,iEAAcA;QACdA,iEAAcA;QACdA,6EAAoBA;QACpBA,mFAAuBA;QACvBA,uFAAyBA;QAEzBA,gDAAuBA,uBAAYA,0BAAAA;QACnCA,+CAAsBA,sBAAWA,yBAAAA;QAEjCA,sDAA6BA,uBAAYA,gCAAAA;QACzCA,qDAA4BA,uBAAYA,+BAAAA;QAExCA,4DAAmCA,4BAAiBA,sCAAAA;QACpDA,2DAAkCA,uBAAYA,qCAAAA;QAE9CA,kDAAyBA,qBAAUA,4BAAAA;QACnCA,iDAAwBA,wBAAaA,2BAAAA;QAErCA,wCAAeA,+BAAoBA,kBAAAA;QACnCA,uCAAcA,gCAAqBA,iBAAAA;QAEnCA,sCAAaA,qBAAUA,gBAAAA;QACvBA,qCAAYA,2BAAgBA,eAAAA;QAE5BA,4CAAmBA,yBAAcA,sBAAAA;QACjCA,2CAAkBA,2BAAgBA,qBAAAA;QAElCA,2CAAkBA,uBAAYA,qBAAAA;QAC9BA,0CAAiBA,0BAAeA,oBAAAA;QAEhCA,uCAAcA,2BAAgBA,iBAAAA;QAC9BA,sCAAaA,6BAAkBA,gBAAAA;QAE/BA,qCAAYA,qBAAUA,eAAAA;QACtBA,oCAAWA,oCAAyBA,cAAAA;IACxCA,CAACA,EA7SWlC,qBAAUA,KAAVA,qBAAUA,QA6SrBA;IA7SDA,IAAYA,UAAUA,GAAVA,qBA6SXA,CAAAA;AACLA,CAACA,EA/SM,UAAU,KAAV,UAAU,QA+ShB;AC/SD,IAAO,UAAU,CAoPhB;AApPD,WAAO,UAAU;IAACA,IAAAA,WAAWA,CAoP5BA;IApPiBA,WAAAA,WAAWA,EAACA,CAACA;QAC3BmC,IAAIA,iBAAiBA,GAAQA;YACzBA,KAAKA,EAAEA,mBAAqBA;YAC5BA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,OAAOA,EAAEA,qBAAuBA;YAChCA,UAAUA,EAAEA,wBAA0BA;YACtCA,OAAOA,EAAEA,qBAAuBA;YAChCA,aAAaA,EAAEA,2BAA6BA;YAC5CA,UAAUA,EAAEA,wBAA0BA;YACtCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,SAASA,EAAEA,uBAAyBA;YACpCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,UAAUA,EAAEA,wBAA0BA;YACtCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,WAAWA,EAAEA,yBAA2BA;YACxCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAACA,sBAAwBA;YACjCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,WAAWA,EAAEA,yBAA2BA;YACxCA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,QAAQA,EAAEA,sBAAwBA;YAClCA,OAAOA,EAAEA,qBAAuBA;YAChCA,QAAQA,EAAEA,sBAAwBA;YAClCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAEhCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,yBAA2BA;YAChCA,GAAGA,EAAEA,0BAA4BA;YACjCA,GAAGA,EAAEA,iBAAmBA;YACxBA,KAAKA,EAAEA,uBAAyBA;YAChCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,yBAA2BA;YAChCA,IAAIA,EAAEA,4BAA8BA;YACpCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,0BAA4BA;YAClCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,+BAAiCA;YACvCA,KAAKA,EAAEA,gCAAkCA;YACzCA,KAAKA,EAAEA,qCAAuCA;YAC9CA,GAAGA,EAAEA,kBAAoBA;YACzBA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,qBAAuBA;YAC5BA,IAAIA,EAAEA,sBAAwBA;YAC9BA,IAAIA,EAAEA,wBAA0BA;YAChCA,IAAIA,EAAEA,8BAAgCA;YACtCA,IAAIA,EAAEA,oCAAsCA;YAC5CA,KAAKA,EAAEA,+CAAiDA;YACxDA,GAAGA,EAAEA,wBAAyBA;YAC9BA,GAAGA,EAAEA,kBAAmBA;YACxBA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,0BAA2BA;YAChCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,iCAAkCA;YACxCA,IAAIA,EAAEA,qBAAsBA;YAC5BA,GAAGA,EAAEA,uBAAwBA;YAC7BA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,qBAAsBA;YAC3BA,IAAIA,EAAEA,yBAA0BA;YAChCA,IAAIA,EAAEA,0BAA2BA;YACjCA,IAAIA,EAAEA,6BAA8BA;YACpCA,IAAIA,EAAEA,4BAA6BA;YACnCA,KAAKA,EAAEA,qCAAsCA;YAC7CA,KAAKA,EAAEA,2CAA4CA;YACnDA,MAAMA,EAAEA,sDAAuDA;YAC/DA,IAAIA,EAAEA,8BAA+BA;YACrCA,IAAIA,EAAEA,wBAAyBA;YAC/BA,IAAIA,EAAEA,0BAA2BA;YACjCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,0BAA2BA;SACpCA,CAACA;QAEFA,IAAIA,UAAUA,GAAGA,IAAIA,KAAKA,EAAUA,CAACA;QAErCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,iBAAiBA,CAACA,CAACA,CAACA;YACjCA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAEzCA,UAAUA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA,GAAGA,IAAIA,CAACA;YAC/CA,CAACA;QACLA,CAACA;QAKDA,UAAUA,CAACA,2BAA6BA,CAACA,GAAGA,aAAaA,CAACA;QAE1DA,SAAgBA,YAAYA,CAACA,IAAYA;YACrCC,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBACzCA,MAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA;YACnCA,CAACA;YAEDA,MAAMA,CAACA,YAAeA,CAACA;QAC3BA,CAACA;QANeD,wBAAYA,GAAZA,YAMfA,CAAAA;QAEDA,SAAgBA,OAAOA,CAACA,IAAgBA;YACpCE,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAHeF,mBAAOA,GAAPA,OAGfA,CAAAA;QAEDA,SAAgBA,YAAYA,CAACA,IAAgBA;YACzCG,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,YAAYA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,WAAWA,CAACA;QAC7EA,CAACA;QAFeH,wBAAYA,GAAZA,YAEfA,CAAAA;QAEDA,SAAgBA,gBAAgBA,CAACA,IAAgBA;YAC7CI,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,gBAAgBA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,eAAeA,CAACA;QACrFA,CAACA;QAFeJ,4BAAgBA,GAAhBA,gBAEfA,CAAAA;QAEDA,SAAgBA,oCAAoCA,CAACA,SAAqBA;YACtEK,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,wBAA0BA;oBAC3BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAZeL,gDAAoCA,GAApCA,oCAYfA,CAAAA;QAEDA,SAAgBA,+BAA+BA,CAACA,SAAqBA;YACjEM,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,qBAAuBA,CAACA;gBAC7BA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,8BAAgCA,CAACA;gBACtCA,KAAKA,oCAAsCA,CAACA;gBAC5CA,KAAKA,+CAAiDA,CAACA;gBACvDA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,yBAA2BA,CAACA;gBACjCA,KAAKA,4BAA8BA,CAACA;gBACpCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,gCAAkCA,CAACA;gBACxCA,KAAKA,qCAAuCA,CAACA;gBAC7CA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,kBAAmBA,CAACA;gBACzBA,KAAKA,iCAAkCA,CAACA;gBACxCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,mBAAqBA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QA1CeN,2CAA+BA,GAA/BA,+BA0CfA,CAAAA;QAEDA,SAAgBA,yBAAyBA,CAACA,SAAqBA;YAC3DO,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA;oBACvBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAnBeP,qCAAyBA,GAAzBA,yBAmBfA,CAAAA;QAEDA,SAAgBA,MAAMA,CAACA,IAAgBA;YACnCQ,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACXA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,uBAAyBA,CAACA;gBAC/BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAsBA,CAACA;gBAC5BA,KAAKA,sBAAuBA,CAACA;gBAC7BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,uBAAwBA,CAACA;gBAC9BA,KAAKA,sBAAyBA;oBAC1BA,MAAMA,CAACA,IAAIA,CAACA;YACpBA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAnBeR,kBAAMA,GAANA,MAmBfA,CAAAA;IACLA,CAACA,EApPiBnC,WAAWA,GAAXA,sBAAWA,KAAXA,sBAAWA,QAoP5BA;AAADA,CAACA,EApPM,UAAU,KAAV,UAAU,QAoPhB;AC/OD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAsB7B,IAAI,UAAU,GAAQ;IAClB,wBAAwB,EAAE,qBAAqB;IAC/C,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,aAAa;IAC1B,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,wBAAwB;IAClD,6BAA6B,EAAE,0BAA0B;IAGzD,uBAAuB,EAAE,+BAA+B;IACxD,qBAAqB,EAAE,+BAA+B;IACtD,wBAAwB,EAAE,yBAAyB;CACtD,CAAC;AAEF,IAAI,WAAW,GAAqB;IAC3B;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SACjD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;SACnD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAClD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;SAC9G;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAE;SAC/F;KACJ;IACK;QACF,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAG;YAClD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAClE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACrI;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC3D;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAO,EAAE;KACpB;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,qCAAqC;QAC3C,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACxC;QAGD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YAC5E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE;SACpE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YACpE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAG;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACvF,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SACpH;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;SAChD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC3E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACtF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC9F;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,uBAAuB,CAAC;QACrC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC5D;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC9E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACxD;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5G,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SAC9G;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrF,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAE/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAChE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAE;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SACjG;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAC;QAC/B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SACjG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,+CAA+C,EAAE,UAAU,EAAE,IAAI,EAAE;YAChG,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAClE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACrE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,EAAE;YACvE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACjF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE;YAChG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACK;QACF,IAAI,EAAE,kCAAkC;QACxC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SACjG;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAAC;KACtG;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SAAC;KACtD;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KACrF;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAAC;KAC5D;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KAChF;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;CAAC,CAAC;AAEP,SAAS,SAAS,CAAC,UAA2B;IAC1C4C,IAAIA,QAAQA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA;IAChDA,MAAMA,CAAOA,UAAUA,CAACA,UAAWA,CAACA,QAAQA,CAACA,CAACA;AAClDA,CAACA;AAED,WAAW,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAE5D,SAAS,sBAAsB,CAAC,UAAkB;IAC9CC,EAAEA,CAACA,CAACA,UAAUA,CAACA,eAAeA,CAACA,QAAQA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAC5DA,MAAMA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,EAAEA,UAAUA,CAACA,MAAMA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,CAACA,UAAUA,CAACA;AACtBA,CAACA;AAED,SAAS,oBAAoB,CAAC,UAA2B;IACrDC,MAAMA,CAACA,sBAAsBA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;AACnDA,CAACA;AAED,SAAS,OAAO,CAAC,KAAwB;IACrCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;QAChBA,MAAMA,CAACA,cAAcA,CAACA;IAC1BA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,uBAAuBA,GAAGA,KAAKA,CAACA,WAAWA,GAAGA,GAAGA,CAACA;IAC7DA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;QACpBA,MAAMA,CAACA,KAAKA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;IACpCA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;IACtBA,CAACA;AACLA,CAACA;AAED,SAAS,SAAS,CAAC,KAAa;IAC5BC,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;AAC9DA,CAACA;AAED,SAAS,WAAW,CAAC,KAAwB;IACzCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,KAAKA,WAAWA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,IAAIA,CAACA;IAC5BA,CAACA;IAEDA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;AACtBA,CAACA;AAED,SAAS,2BAA2B,CAAC,UAA2B;IAC5DC,IAAIA,MAAMA,GAAGA,iBAAiBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,0CAA0CA,CAACA;IAExIA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,SAASA,CAACA;IAEpBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACJA,MAAMA,IAAIA,OAAOA,CAACA;YACtBA,CAACA;YAEDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,IAAIA,eAAeA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QACxEA,CAACA;IACLA,CAACA;IAEDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;QACjCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,eAAeA,CAACA;YAE1BA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;gBACnBA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,iBAAiBA,CAACA;YACpFA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,gBAAgBA,CAACA;YACpDA,CAACA;QACLA,CAACA;QACDA,MAAMA,IAAIA,OAAOA,CAACA;IACtBA,CAACA;IAEDA,MAAMA,IAAIA,YAAYA,CAACA;IACvBA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,+BAA+BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,OAAOA,CAACA;IAClHA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,0BAA0BA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,OAAOA,CAACA;IACvGA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,oEAAoEA,CAACA;IAC1GA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,8BAA8BA,CAACA;QAEzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,mBAAmBA,GAAGA,CAACA,GAAGA,gBAAgBA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,GAAGA,OAAOA,CAACA;QACjGA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,8CAA8CA,CAACA;IAC7DA,CAACA;IACDA,MAAMA,IAAIA,WAAWA,CAACA;IAEtBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,yBAAyBA,CAACA;IAEpCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACRA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,uBAAuBA,CAACA,UAAUA,CAACA,CAACA;IAClDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,uBAAuB,CAAC,UAA2B;IACxDC,IAAIA,MAAMA,GAAGA,uBAAuBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,sBAAsBA,CAAAA;IAE/EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACxBA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;IAC/CA,CAACA;IAEDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,KAAKA,kBAAkBA,CAACA,CAACA,CAACA;QACzCA,MAAMA,IAAIA,qCAAqCA,CAACA;IACpDA,CAACA;IAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,UAAUA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,uBAAuBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,eAAeA,CAACA;IACvFA,MAAMA,IAAIA,oBAAoBA,CAACA;IAE/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,IAAIA,CAACA;IAClCA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa;IAClBC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,mBAAmBA,CAACA;IAE9BA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,2BAA2BA,CAACA,UAAUA,CAACA,CAACA;IACtDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,WAAW,CAAC,IAAY;IAC7BC,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAAAA;AAC7FA,CAACA;AAED,SAAS,cAAc;IACnBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IACNA,2CAA2CA,GAC3CA,MAAMA,GACNA,yBAAyBA,GACzBA,+DAA+DA,GAC/DA,4DAA4DA,GAC5DA,eAAeA,GACfA,MAAMA,GACNA,qEAAqEA,GACrEA,4CAA4CA,GAC5CA,6BAA6BA,GAC7BA,mBAAmBA,GACnBA,MAAMA,GACNA,yCAAyCA,GACzCA,eAAeA,GACfA,MAAMA,GACNA,kEAAkEA,GAClEA,gEAAgEA,GAChEA,sDAAsDA,GACtDA,mBAAmBA,GACnBA,eAAeA,CAACA;IAEhBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,MAAMA,CAACA;QACjBA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,eAAeA,CAACA;QAEpHA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBAChBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,IAAIA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;gBAC7CA,MAAMA,IAAIA,kCAAkCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACzEA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,0CAA0CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACjFA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa,CAAC,CAAM,EAAE,KAAa;IACxCC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;YACpBA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;AACLA,CAACA;AAED,SAAS,OAAO,CAAI,KAAU,EAAE,IAAsB;IAClDC,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;IAErBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC3CA,IAAIA,CAACA,GAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACtBA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA;QAEhBA,IAAIA,IAAIA,GAAQA,MAAMA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;QAChCA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACbA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA;IACrBA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB,CAAC,QAA0D,EAAE,gBAAwB,EAAE,MAAc;IAClIC,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;IAErCA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,IAAIA,KAAaA,CAACA;IAElBA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACxBA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAE1BA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,MAAMA,CAACA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,qBAAqBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,OAAOA,CAACA;QAChGA,CAACA;QAEDA,IAAIA,WAAWA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;QACnCA,MAAMA,GAAGA,WAAWA,CAAAA;QAEpBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAC7CA,EAAEA,CAACA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;gBACvBA,MAAMA,IAAIA,MAAMA,CAACA;YACrBA,CAACA;YAEDA,KAAKA,GAAGA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA;YAC7CA,MAAMA,IAAIA,iBAAiBA,GAAGA,KAAKA,GAAGA,uBAAuBA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;QAC7FA,CAACA;QAEDA,MAAMA,IAAIA,iBAAiBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,mCAAmCA,CAACA;IAC3HA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,MAAMA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAAAA;QAC9FA,KAAKA,GAAGA,gBAAgBA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,gBAAgBA,CAACA,CAACA;QAC3EA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,KAAKA,GAAGA,UAAUA,CAAAA;QAEhEA,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;QAEjFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,IAAIA,eAAeA,CAACA,CAACA,CAACA;YAC5BA,EAAEA,CAACA,CAACA,eAAeA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACpCA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;gBACtDA,MAAMA,IAAIA,wBAAwBA,CAACA,eAAeA,CAACA,CAACA,CAACA,EAAEA,gBAAgBA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,MAAMA,CAACA,CAACA;YAClGA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,MAAMA,GAAGA,kDAAkDA,CAACA;QACtEA,MAAMA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA;IAC/BA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,iBAAiB;IACtBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,MAAMA,IAAIA,iCAAiCA,CAACA;IAC5CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC7DA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,IAAIA,CAACA;QACnBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,eAAeA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,IAAIA,GAAGA,CAACA;QAClBA,CAACA;QACDA,IAAIA,CAACA,CAACA;YACFA,MAAMA,IAAIA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA;QACvDA,CAACA;IACLA,CAACA;IACDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,IAAIA,gEAAgEA,CAACA;IAC3EA,MAAMA,IAAIA,+CAA+CA,CAACA;IAS1DA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,2CAA2CA,GACpDA,MAAMA,GACNA,yBAAyBA,GACzBA,0CAA0CA,CAACA;IAE/CA,IAAIA,CAASA,CAACA;IACdA,IAAIA,QAAQA,GAAqDA,EAAEA,CAACA;IAEpEA,GAAGA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACvFA,QAAQA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;IACxEA,CAACA;IAEDA,QAAQA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,IAAIA,CAACA,EAA5BA,CAA4BA,CAACA,CAACA;IAEtDA,MAAMA,IAAIA,sGAAsGA,CAACA;IAEjHA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,MAAMA,IAAIA,mCAAmCA,CAACA;IAG9CA,GAAGA,CAACA,CAACA,CAACA,GAAGA,cAAcA,EAAEA,CAACA,IAAIA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAChDA,IAAIA,iBAAiBA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,EAAnBA,CAAmBA,CAACA,CAACA;QAC5FA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAC/BA,MAAMA,IAAIA,qBAAqBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;YAC1CA,MAAMA,IAAIA,wBAAwBA,CAACA,iBAAiBA,EAAEA,CAACA,EAAEA,kBAAkBA,CAACA,CAACA;QACjFA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,8DAA8DA,CAACA;IACzEA,MAAMA,IAAIA,mBAAmBA,CAACA;IAC9BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,GAAGA,CAACA;IAEdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,cAAc,CAAC,IAA2B;IAC/CC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACrCA,EAAEA,CAACA,CAAMA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,EAAEA,CAACA;AACtBA,CAACA;AAED,SAAS,eAAe;IACpBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,MAAMA,IAAIA,yBAAyBA,CAACA;IACpCA,MAAMA,IAAIA,uGAAuGA,CAACA;IAClHA,MAAMA,IAAIA,8DAA8DA,CAACA;IAEzEA,MAAMA,IAAIA,qCAAqCA,CAACA;IAEhDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,8BAA8BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,CAACA;QACnFA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,gBAAgBA,CAACA;IACpHA,CAACA;IAEDA,MAAMA,IAAIA,4EAA4EA,CAACA;IACvFA,MAAMA,IAAIA,eAAeA,CAACA;IAC1BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,2CAA2CA,CAACA;IACtDA,MAAMA,IAAIA,mDAAmDA,CAACA;IAE9DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAChCA,MAAMA,IAAIA,eAAeA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,aAAaA,CAACA;IAC/GA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,IAAI,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAC1C,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;AAC9B,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;AAEpC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,4DAA4D,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACpI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,oDAAoD,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/G,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,iDAAiD,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC"} ->>>>>>> e97cba0... Make parser more lenient with what it allows as the body of a function. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAATA,CAACA;gBACGA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,EAALA,UAAMA,CAASA;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,EAAXA,UAAYA,IAAYA;gBACpB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAClC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAC,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC;YAC/D,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,IAAA,CAAC;oBACG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CACA;gBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAT,CAAC;gBACD,CAAC;YACL,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBG,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,IAAIA,KAAKA,GAAGA,OAAOA,CAACA,MAAMA,CAACA,CAACA;QAC5BA,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QAExBA,IAAIA,QAAQA,GAAWA,GAAGA,CAACA,QAAQA,EAAEA,CAACA;QAEtCA,IAAIA,yBAAyBA,GAAGA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,OAAOA,IAAIA,QAAQA,KAAKA,QAAQA,CAACA;QAEtGA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;YACxCA,IAAIA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;YACxBA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAGvDA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA;oBAC9BA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBACzBA,CAACA;gBACDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAEvDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;YACzCA,CAACA;YACDA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,MAAMA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAE7EA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;YACtCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;QACnCA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAE3EE,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;gBACrBA,IAAIA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA;YAC3BA,CAACA;YAEDA,GAAGA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;QAC9CA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;YAC3BA,OAAOA,EAAEA,GAAGA,CAACA,GAAGA;YAChBA,yBAAyBA,EAAEA,yBAAyBA;YACpDA,KAAKA,EAALA,UAAMA,CAASA;gBAEZ,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;YACDA,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,SAASA,EAAEA,UAACA,QAAQA,EAAEA,QAAQA;gBAE1BA,GAAGA,CAACA,SAASA,CAACA,QAAQA,EAAEA,EAAEA,UAAUA,EAAEA,IAAIA,EAAEA,QAAQA,EAAEA,GAAGA,EAAEA,EAAEA,WAAWA,CAACA,CAACA;gBAE1EA,MAAMA,CAACA;oBACHA,KAAKA,EAALA;wBAAU,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAAC,CAAC;iBACtDA,CAACA;gBAEFA,SAASA,WAAWA,CAACA,IAASA,EAAEA,IAASA;oBACrCG,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAC7BA,MAAMA,CAACA;oBACXA,CAACA;oBAEDA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBACvBA,CAACA;gBAAAH,CAACA;YACNA,CAACA;YACDA,WAAWA,EAAEA,UAAUA,IAAYA;gBAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACDA,UAAUA,EAAVA,UAAWA,IAAYA;gBACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,IAAYA;gBACxB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,CAAC;YACDA,eAAeA,EAAfA,UAAgBA,aAAqBA;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACvC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACjC,CAAC;YACL,CAAC;YACDA,oBAAoBA,EAApBA;gBACI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;YACvC,CAAC;YACDA,mBAAmBA,EAAnBA;gBACI,MAAM,CAAO,OAAQ,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YACDA,cAAcA,EAAdA;gBACI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAC1C,CAAC;YACDA,IAAIA,EAAJA,UAAKA,QAAiBA;gBAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;SACJA,CAACA;IACNA,CAACA;IACD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;ACzPL,IAAO,UAAU,CA0BhB;AA1BD,WAAO,UAAU,EAAC,CAAC;IACfI,IAAaA,MAAMA;QAAnBC,SAAaA,MAAMA;QAwBnBC,CAACA;QAvBiBD,eAAQA,GAAtBA,UAAuBA,QAAgBA,EAAEA,OAAgBA;YACrDE,MAAMA,CAACA,IAAIA,KAAKA,CAACA,oBAAoBA,GAAGA,QAAQA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,CAACA;QACvEA,CAACA;QAEaF,yBAAkBA,GAAhCA,UAAiCA,QAAgBA;YAC7CG,MAAMA,CAACA,IAAIA,KAAKA,CAACA,yBAAyBA,GAAGA,QAAQA,CAACA,CAACA;QAC3DA,CAACA;QAEaH,mBAAYA,GAA1BA,UAA2BA,QAAgBA;YACvCI,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iBAAiBA,GAAGA,QAAQA,CAACA,CAACA;QACnDA,CAACA;QAEaJ,eAAQA,GAAtBA;YACIK,MAAMA,CAACA,IAAIA,KAAKA,CAACA,iDAAiDA,CAACA,CAACA;QACxEA,CAACA;QAEaL,wBAAiBA,GAA/BA;YACIM,MAAMA,CAACA,IAAIA,KAAKA,CAACA,sBAAsBA,CAACA,CAACA;QAC7CA,CAACA;QAEaN,uBAAgBA,GAA9BA,UAA+BA,OAAgBA;YAC3CO,MAAMA,CAACA,IAAIA,KAAKA,CAACA,qBAAqBA,GAAGA,OAAOA,CAACA,CAACA;QACtDA,CAACA;QACLP,aAACA;IAADA,CAACA,AAxBDD,IAwBCA;IAxBYA,iBAAMA,GAANA,MAwBZA,CAAAA;AACLA,CAACA,EA1BM,UAAU,KAAV,UAAU,QA0BhB;AC1BD,IAAO,UAAU,CA0MhB;AA1MD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,cAAcA;QAA3BS,SAAaA,cAAcA;QAwM3BC,CAACA;QAvMiBD,6BAAcA,GAA5BA,UAAgCA,MAAWA,EAAEA,MAAWA,EAAEA,MAAiCA;YACvFE,EAAEA,CAACA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,CAACA,CAACA;gBACpBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAChCA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEaF,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,KAAQA;YAC1CG,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAGaH,uBAAQA,GAAtBA,UAA0BA,KAAUA,EAAEA,QAAkCA;YACpEI,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;YAGrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,OAAOA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACvBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBAC/BA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,KAAKA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBACzBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaJ,mBAAIA,GAAlBA,UAAsBA,KAAUA;YAC5BK,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,iBAAMA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,CAACA;YAC7CA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;QACnCA,CAACA;QAEaL,4BAAaA,GAA3BA,UAA+BA,KAAUA,EAAEA,SAA2CA;YAClFM,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACzCA,IAAIA,CAACA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACjBA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaN,6BAAcA,GAA5BA,UAAgCA,KAAUA,EAAEA,IAAsCA;YAC9EO,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEaP,oBAAKA,GAAnBA,UAAuBA,KAAUA,EAAEA,IAAuCA;YACtEQ,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,IAAIA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,iBAAMA,CAACA,gBAAgBA,EAAEA,CAACA;QACpCA,CAACA;QAEaR,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAsBA;YACnDS,IAAIA,MAAMA,GAAGA,CAACA,CAACA;YAEfA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,MAAMA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaT,qBAAMA,GAApBA,UAA0BA,MAAWA,EAAEA,IAAiBA;YACpDU,IAAIA,MAAMA,GAAQA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA;YAE9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;YAChCA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaV,oBAAKA,GAAnBA,UAAuBA,MAAWA,EAAEA,IAAuBA;YACvDW,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,EAAKA,CAACA;YAE5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBACrCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC3BA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaX,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDY,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEaZ,kBAAGA,GAAjBA,UAAqBA,KAAUA,EAAEA,IAAuBA;YACpDa,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEab,2BAAYA,GAA1BA,UAA2BA,KAAeA,EAAEA,KAAaA;YACrDc,IAAIA,GAAGA,GAAGA,CAACA,CAACA;YACZA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;YAE5BA,OAAOA,GAAGA,IAAIA,IAAIA,EAAEA,CAACA;gBACjBA,IAAIA,MAAMA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACvCA,IAAIA,QAAQA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,KAAKA,CAACA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,MAAMA,CAACA;gBAClBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,GAAGA,KAAKA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA,GAAGA,MAAMA,GAAGA,CAACA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,GAAGA,CAACA;QAChBA,CAACA;QAEad,0BAAWA,GAAzBA,UAA6BA,MAAcA,EAAEA,YAAiBA;YAC1De,IAAIA,MAAMA,GAAGA,IAAIA,KAAKA,CAAIA,MAAMA,CAACA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,MAAMA,CAACA,CAACA,CAACA,GAAGA,YAAYA,CAACA;YAC7BA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAEaf,mBAAIA,GAAlBA,UAAsBA,KAAUA,EAAEA,MAAcA,EAAEA,YAAeA;YAC7DgB,IAAIA,KAAKA,GAAGA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,CAACA;YAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC7BA,KAAKA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;YAC7BA,CAACA;QACLA,CAACA;QAEahB,mBAAIA,GAAlBA,UAAsBA,WAAgBA,EAAEA,WAAmBA,EAAEA,gBAAqBA,EAAEA,gBAAwBA,EAAEA,MAAcA;YACxHiB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC9BA,gBAAgBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,GAAGA,WAAWA,CAACA,WAAWA,GAAGA,CAACA,CAACA,CAACA;YAC1EA,CAACA;QACLA,CAACA;QAEajB,sBAAOA,GAArBA,UAAyBA,KAAUA,EAAEA,SAA4BA;YAC7DkB,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,CAACA,CAACA;gBACbA,CAACA;YACLA,CAACA;YAEDA,MAAMA,CAACA,CAACA,CAACA,CAACA;QACdA,CAACA;QACLlB,qBAACA;IAADA,CAACA,AAxMDT,IAwMCA;IAxMYA,yBAAcA,GAAdA,cAwMZA,CAAAA;AACLA,CAACA,EA1MM,UAAU,KAAV,UAAU,QA0MhB;AC1MD,IAAO,UAAU,CAkBhB;AAlBD,WAAO,UAAU,EAAC,CAAC;IACfA,IAAaA,eAAeA;QAA5B4B,SAAaA,eAAeA;QAgB5BC,CAACA;QAfiBD,wBAAQA,GAAtBA,UAAuBA,KAAUA;YAC7BE,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,iBAAiBA,CAACA;QAC5EA,CAACA;QAEaF,wBAAQA,GAAtBA,UAAuBA,MAAcA,EAAEA,KAAaA;YAChDG,MAAMA,CAACA,MAAMA,CAACA,SAASA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACnFA,CAACA;QAEaH,0BAAUA,GAAxBA,UAAyBA,MAAcA,EAAEA,KAAaA;YAClDI,MAAMA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,EAAEA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA;QACpDA,CAACA;QAEaJ,sBAAMA,GAApBA,UAAqBA,KAAaA,EAAEA,KAAaA;YAC7CK,MAAMA,CAACA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;QACxCA,CAACA;QACLL,sBAACA;IAADA,CAACA,AAhBD5B,IAgBCA;IAhBYA,0BAAeA,GAAfA,eAgBZA,CAAAA;AACLA,CAACA,EAlBM,UAAU,KAAV,UAAU,QAkBhB;AClBD,IAAO,UAAU,CA+ShB;AA/SD,WAAO,UAAU,EAAC,CAAC;IACfA,WAAYA,UAAUA;QAElBkC,2CAAIA;QACJA,2CAAIA;QAGJA,mEAAgBA;QAChBA,6DAAaA;QACbA,+EAAsBA;QACtBA,iFAAuBA;QACvBA,uEAAkBA;QAIlBA,uDAAUA;QACVA,+DAAcA;QAGdA,+DAAcA;QAGdA,oFAAwBA;QACxBA,gEAAcA;QACdA,8DAAaA;QAGbA,0FAA2BA;QAC3BA,wEAAkBA;QAClBA,0EAAmBA;QACnBA,oEAAgBA;QAKhBA,4DAAYA;QACZA,0DAAWA;QACXA,4DAAYA;QACZA,kEAAeA;QACfA,kEAAeA;QACfA,gEAAcA;QACdA,8DAAaA;QACbA,sDAASA;QACTA,0DAAWA;QACXA,4DAAYA;QACZA,gEAAcA;QACdA,wDAAUA;QACVA,kEAAeA;QACfA,sDAASA;QACTA,sDAASA;QACTA,sEAAiBA;QACjBA,wDAAUA;QACVA,0DAAWA;QACXA,8DAAaA;QACbA,8DAAaA;QACbA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QACXA,wDAAUA;QACVA,8DAAaA;QACbA,wDAAUA;QACVA,0DAAWA;QACXA,4DAAYA;QACZA,0DAAWA;QAGXA,4DAAYA;QACZA,4DAAYA;QACZA,0DAAWA;QACXA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,4DAAYA;QAGZA,sEAAiBA;QACjBA,oEAAgBA;QAChBA,wDAAUA;QACVA,gEAAcA;QACdA,gEAAcA;QACdA,oEAAgBA;QAChBA,8DAAaA;QACbA,8DAAaA;QACbA,4DAAYA;QAGZA,wDAAUA;QACVA,gEAAcA;QACdA,wEAAkBA;QAClBA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,gEAAcA;QACdA,8DAAaA;QACbA,wDAAUA;QACVA,8DAAaA;QAGbA,gEAAcA;QACdA,kEAAeA;QACfA,gEAAcA;QACdA,kEAAeA;QACfA,oEAAgBA;QAChBA,sEAAiBA;QACjBA,oDAAQA;QACRA,gEAAcA;QACdA,gEAAcA;QACdA,wDAAUA;QACVA,8DAAaA;QACbA,oEAAgBA;QAChBA,0EAAmBA;QACnBA,gFAAsBA;QACtBA,sEAAiBA;QACjBA,gFAAsBA;QACtBA,gFAAsBA;QACtBA,kFAAuBA;QACvBA,4FAA4BA;QAC5BA,sDAASA;QACTA,wDAAUA;QACVA,8DAAaA;QACbA,4DAAYA;QACZA,8DAAaA;QACbA,kEAAeA;QACfA,8EAAqBA;QACrBA,0FAA2BA;QAC3BA,gHAAsCA;QACtCA,iEAAcA;QACdA,qDAAQA;QACRA,yDAAUA;QACVA,qEAAgBA;QAChBA,yDAAUA;QACVA,mFAAuBA;QACvBA,2DAAWA;QACXA,+DAAaA;QACbA,yDAAUA;QACVA,2DAAWA;QACXA,mEAAeA;QACfA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yEAAkBA;QAClBA,2FAA2BA;QAC3BA,uGAAiCA;QACjCA,6HAA4CA;QAC5CA,6EAAoBA;QACpBA,iEAAcA;QACdA,qEAAgBA;QAChBA,yDAAUA;QACVA,qEAAgBA;QAGhBA,yDAAUA;QAGVA,+DAAaA;QAGbA,yDAAUA;QACVA,6DAAYA;QACZA,uDAASA;QACTA,mEAAeA;QACfA,2DAAWA;QACXA,uDAASA;QACTA,uDAASA;QACTA,uDAASA;QACTA,uEAAiBA;QAGjBA,6EAAoBA;QACpBA,2EAAmBA;QACnBA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,mEAAeA;QACfA,uEAAiBA;QACjBA,qEAAgBA;QAGhBA,uFAAyBA;QACzBA,uFAAyBA;QACzBA,iFAAsBA;QACtBA,iFAAsBA;QAGtBA,2DAAWA;QACXA,2DAAWA;QAGXA,uEAAiBA;QACjBA,+DAAaA;QACbA,yEAAkBA;QAClBA,iEAAcA;QACdA,mEAAeA;QAGfA,+CAAKA;QACLA,2DAAWA;QACXA,uEAAiBA;QACjBA,2EAAmBA;QACnBA,mEAAeA;QACfA,mEAAeA;QACfA,iEAAcA;QACdA,uEAAiBA;QACjBA,6DAAYA;QACZA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,iEAAcA;QACdA,6DAAYA;QACZA,qEAAgBA;QAChBA,2DAAWA;QACXA,uEAAiBA;QACjBA,+DAAaA;QAGbA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,qEAAgBA;QAChBA,iEAAcA;QACdA,+EAAqBA;QACrBA,qEAAgBA;QAChBA,iFAAsBA;QACtBA,iFAAsBA;QACtBA,6EAAoBA;QACpBA,iFAAsBA;QACtBA,mFAAuBA;QACvBA,qFAAwBA;QACxBA,mFAAuBA;QACvBA,6GAAoCA;QACpCA,+FAA6BA;QAC7BA,iEAAcA;QACdA,mFAAuBA;QACvBA,yEAAkBA;QAClBA,uEAAiBA;QACjBA,yEAAkBA;QAClBA,qFAAwBA;QACxBA,mEAAeA;QAGfA,2EAAmBA;QACnBA,yEAAkBA;QAGlBA,6DAAYA;QACZA,+DAAaA;QACbA,qEAAgBA;QAChBA,uEAAiBA;QAGjBA,iEAAcA;QACdA,uEAAiBA;QACjBA,qEAAgBA;QAChBA,2EAAmBA;QACnBA,yDAAUA;QACVA,2DAAWA;QACXA,+DAAaA;QACbA,iEAAcA;QAGdA,+DAAaA;QACbA,yDAAUA;QAGVA,qFAAwBA;QACxBA,yFAA0BA;QAG1BA,uDAASA;QACTA,2DAAWA;QACXA,iEAAcA;QACdA,iEAAcA;QACdA,6EAAoBA;QACpBA,mFAAuBA;QACvBA,uFAAyBA;QAEzBA,gDAAuBA,uBAAYA,0BAAAA;QACnCA,+CAAsBA,sBAAWA,yBAAAA;QAEjCA,sDAA6BA,uBAAYA,gCAAAA;QACzCA,qDAA4BA,uBAAYA,+BAAAA;QAExCA,4DAAmCA,4BAAiBA,sCAAAA;QACpDA,2DAAkCA,uBAAYA,qCAAAA;QAE9CA,kDAAyBA,qBAAUA,4BAAAA;QACnCA,iDAAwBA,wBAAaA,2BAAAA;QAErCA,wCAAeA,+BAAoBA,kBAAAA;QACnCA,uCAAcA,gCAAqBA,iBAAAA;QAEnCA,sCAAaA,qBAAUA,gBAAAA;QACvBA,qCAAYA,2BAAgBA,eAAAA;QAE5BA,4CAAmBA,yBAAcA,sBAAAA;QACjCA,2CAAkBA,2BAAgBA,qBAAAA;QAElCA,2CAAkBA,uBAAYA,qBAAAA;QAC9BA,0CAAiBA,0BAAeA,oBAAAA;QAEhCA,uCAAcA,2BAAgBA,iBAAAA;QAC9BA,sCAAaA,6BAAkBA,gBAAAA;QAE/BA,qCAAYA,qBAAUA,eAAAA;QACtBA,oCAAWA,oCAAyBA,cAAAA;IACxCA,CAACA,EA7SWlC,qBAAUA,KAAVA,qBAAUA,QA6SrBA;IA7SDA,IAAYA,UAAUA,GAAVA,qBA6SXA,CAAAA;AACLA,CAACA,EA/SM,UAAU,KAAV,UAAU,QA+ShB;AC/SD,IAAO,UAAU,CAoPhB;AApPD,WAAO,UAAU;IAACA,IAAAA,WAAWA,CAoP5BA;IApPiBA,WAAAA,WAAWA,EAACA,CAACA;QAC3BmC,IAAIA,iBAAiBA,GAAQA;YACzBA,KAAKA,EAAEA,mBAAqBA;YAC5BA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,OAAOA,EAAEA,qBAAuBA;YAChCA,UAAUA,EAAEA,wBAA0BA;YACtCA,OAAOA,EAAEA,qBAAuBA;YAChCA,aAAaA,EAAEA,2BAA6BA;YAC5CA,UAAUA,EAAEA,wBAA0BA;YACtCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,OAAOA,EAAEA,qBAAuBA;YAChCA,SAASA,EAAEA,uBAAyBA;YACpCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,UAAUA,EAAEA,wBAA0BA;YACtCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,QAAQA,EAAEA,sBAAwBA;YAClCA,IAAIA,EAAEA,kBAAoBA;YAC1BA,YAAYA,EAAEA,0BAA4BA;YAC1CA,WAAWA,EAAEA,yBAA2BA;YACxCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,QAAQA,EAACA,sBAAwBA;YACjCA,SAASA,EAAEA,uBAAyBA;YACpCA,SAASA,EAAEA,uBAAyBA;YACpCA,WAAWA,EAAEA,yBAA2BA;YACxCA,QAAQA,EAAEA,sBAAwBA;YAClCA,SAASA,EAAEA,uBAAyBA;YACpCA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,QAAQA,EAAEA,sBAAwBA;YAClCA,OAAOA,EAAEA,qBAAuBA;YAChCA,QAAQA,EAAEA,sBAAwBA;YAClCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,KAAKA,EAAEA,mBAAqBA;YAC5BA,QAAQA,EAAEA,sBAAwBA;YAClCA,KAAKA,EAAEA,mBAAqBA;YAC5BA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAChCA,MAAMA,EAAEA,oBAAsBA;YAC9BA,OAAOA,EAAEA,qBAAuBA;YAEhCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,wBAA0BA;YAC/BA,GAAGA,EAAEA,yBAA2BA;YAChCA,GAAGA,EAAEA,0BAA4BA;YACjCA,GAAGA,EAAEA,iBAAmBA;YACxBA,KAAKA,EAAEA,uBAAyBA;YAChCA,GAAGA,EAAEA,uBAAyBA;YAC9BA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,yBAA2BA;YAChCA,IAAIA,EAAEA,4BAA8BA;YACpCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,0BAA4BA;YAClCA,IAAIA,EAAEA,+BAAiCA;YACvCA,IAAIA,EAAEA,+BAAiCA;YACvCA,KAAKA,EAAEA,gCAAkCA;YACzCA,KAAKA,EAAEA,qCAAuCA;YAC9CA,GAAGA,EAAEA,kBAAoBA;YACzBA,GAAGA,EAAEA,mBAAqBA;YAC1BA,GAAGA,EAAEA,sBAAwBA;YAC7BA,GAAGA,EAAEA,qBAAuBA;YAC5BA,IAAIA,EAAEA,sBAAwBA;YAC9BA,IAAIA,EAAEA,wBAA0BA;YAChCA,IAAIA,EAAEA,8BAAgCA;YACtCA,IAAIA,EAAEA,oCAAsCA;YAC5CA,KAAKA,EAAEA,+CAAiDA;YACxDA,GAAGA,EAAEA,wBAAyBA;YAC9BA,GAAGA,EAAEA,kBAAmBA;YACxBA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,0BAA2BA;YAChCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,iCAAkCA;YACxCA,IAAIA,EAAEA,qBAAsBA;YAC5BA,GAAGA,EAAEA,uBAAwBA;YAC7BA,GAAGA,EAAEA,oBAAqBA;YAC1BA,GAAGA,EAAEA,qBAAsBA;YAC3BA,IAAIA,EAAEA,yBAA0BA;YAChCA,IAAIA,EAAEA,0BAA2BA;YACjCA,IAAIA,EAAEA,6BAA8BA;YACpCA,IAAIA,EAAEA,4BAA6BA;YACnCA,KAAKA,EAAEA,qCAAsCA;YAC7CA,KAAKA,EAAEA,2CAA4CA;YACnDA,MAAMA,EAAEA,sDAAuDA;YAC/DA,IAAIA,EAAEA,8BAA+BA;YACrCA,IAAIA,EAAEA,wBAAyBA;YAC/BA,IAAIA,EAAEA,0BAA2BA;YACjCA,GAAGA,EAAEA,oBAAqBA;YAC1BA,IAAIA,EAAEA,0BAA2BA;SACpCA,CAACA;QAEFA,IAAIA,UAAUA,GAAGA,IAAIA,KAAKA,EAAUA,CAACA;QAErCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,iBAAiBA,CAACA,CAACA,CAACA;YACjCA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBAEzCA,UAAUA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA,GAAGA,IAAIA,CAACA;YAC/CA,CAACA;QACLA,CAACA;QAKDA,UAAUA,CAACA,2BAA6BA,CAACA,GAAGA,aAAaA,CAACA;QAE1DA,SAAgBA,YAAYA,CAACA,IAAYA;YACrCC,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBACzCA,MAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,CAACA;YACnCA,CAACA;YAEDA,MAAMA,CAACA,YAAeA,CAACA;QAC3BA,CAACA;QANeD,wBAAYA,GAAZA,YAMfA,CAAAA;QAEDA,SAAgBA,OAAOA,CAACA,IAAgBA;YACpCE,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAHeF,mBAAOA,GAAPA,OAGfA,CAAAA;QAEDA,SAAgBA,YAAYA,CAACA,IAAgBA;YACzCG,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,YAAYA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,WAAWA,CAACA;QAC7EA,CAACA;QAFeH,wBAAYA,GAAZA,YAEfA,CAAAA;QAEDA,SAAgBA,gBAAgBA,CAACA,IAAgBA;YAC7CI,MAAMA,CAACA,IAAIA,IAAIA,qBAAUA,CAACA,gBAAgBA,IAAIA,IAAIA,IAAIA,qBAAUA,CAACA,eAAeA,CAACA;QACrFA,CAACA;QAFeJ,4BAAgBA,GAAhBA,gBAEfA,CAAAA;QAEDA,SAAgBA,oCAAoCA,CAACA,SAAqBA;YACtEK,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,wBAA0BA;oBAC3BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAZeL,gDAAoCA,GAApCA,oCAYfA,CAAAA;QAEDA,SAAgBA,+BAA+BA,CAACA,SAAqBA;YACjEM,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,qBAAuBA,CAACA;gBAC7BA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,8BAAgCA,CAACA;gBACtCA,KAAKA,oCAAsCA,CAACA;gBAC5CA,KAAKA,+CAAiDA,CAACA;gBACvDA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,yBAA2BA,CAACA;gBACjCA,KAAKA,4BAA8BA,CAACA;gBACpCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,kBAAoBA,CAACA;gBAC1BA,KAAKA,0BAA4BA,CAACA;gBAClCA,KAAKA,+BAAiCA,CAACA;gBACvCA,KAAKA,gCAAkCA,CAACA;gBACxCA,KAAKA,qCAAuCA,CAACA;gBAC7CA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,kBAAmBA,CAACA;gBACzBA,KAAKA,iCAAkCA,CAACA;gBACxCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,mBAAqBA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QA1CeN,2CAA+BA,GAA/BA,+BA0CfA,CAAAA;QAEDA,SAAgBA,yBAAyBA,CAACA,SAAqBA;YAC3DO,MAAMA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gBAChBA,KAAKA,wBAAyBA,CAACA;gBAC/BA,KAAKA,8BAA+BA,CAACA;gBACrCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,qCAAsCA,CAACA;gBAC5CA,KAAKA,2CAA4CA,CAACA;gBAClDA,KAAKA,sDAAuDA,CAACA;gBAC7DA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,6BAA8BA,CAACA;gBACpCA,KAAKA,0BAA2BA,CAACA;gBACjCA,KAAKA,4BAA6BA,CAACA;gBACnCA,KAAKA,qBAAsBA;oBACvBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA;oBACIA,MAAMA,CAACA,KAAKA,CAACA;YACrBA,CAACA;QACLA,CAACA;QAnBeP,qCAAyBA,GAAzBA,yBAmBfA,CAAAA;QAEDA,SAAgBA,MAAMA,CAACA,IAAgBA;YACnCQ,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACXA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,mBAAqBA,CAACA;gBAC3BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,uBAAyBA,CAACA;gBAC/BA,KAAKA,sBAAwBA,CAACA;gBAC9BA,KAAKA,oBAAsBA,CAACA;gBAC5BA,KAAKA,sBAAuBA,CAACA;gBAC7BA,KAAKA,oBAAqBA,CAACA;gBAC3BA,KAAKA,yBAA0BA,CAACA;gBAChCA,KAAKA,mBAAoBA,CAACA;gBAC1BA,KAAKA,qBAAsBA,CAACA;gBAC5BA,KAAKA,uBAAwBA,CAACA;gBAC9BA,KAAKA,sBAAyBA;oBAC1BA,MAAMA,CAACA,IAAIA,CAACA;YACpBA,CAACA;YAEDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAnBeR,kBAAMA,GAANA,MAmBfA,CAAAA;IACLA,CAACA,EApPiBnC,WAAWA,GAAXA,sBAAWA,KAAXA,sBAAWA,QAoP5BA;AAADA,CAACA,EApPM,UAAU,KAAV,UAAU,QAoPhB;AC/OD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAsB7B,IAAI,UAAU,GAAQ;IAClB,wBAAwB,EAAE,qBAAqB;IAC/C,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,aAAa;IAC1B,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,wBAAwB;IAClD,6BAA6B,EAAE,0BAA0B;IAGzD,uBAAuB,EAAE,+BAA+B;IACxD,qBAAqB,EAAE,+BAA+B;IACtD,wBAAwB,EAAE,yBAAyB;CACtD,CAAC;AAEF,IAAI,WAAW,GAAqB;IAC3B;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SACjD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;SACnD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAClD;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;SAC9G;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAE;SAC/F;KACJ;IACK;QACF,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAG;YAClD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAClE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACrI;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC3D;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAO,EAAE;KACpB;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,qCAAqC;QAC3C,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACjE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACxC;QAGD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YAC5E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE;SACpE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;YACpE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACK;QACF,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,aAAa,CAAC;QAC3B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;SAC7C;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAG;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACvF,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SACpH;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;SAChD;KACJ;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC3E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;QAChE,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACtF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC9F;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,uBAAuB,CAAC;QACrC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC5D;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC9E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,6BAA6B;QACnC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACxD;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;SAC9D;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;SAClF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5G,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE;SAC9G;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE;YAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACrF,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAE/D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAChE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC1E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAE;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;KACJ;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,iBAAiB,CAAC;QAC/B,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;YAC5F,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,8BAA8B;QACpC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE;YACxC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9E;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC3E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC7E;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACzF;KACJ;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,+CAA+C,EAAE,UAAU,EAAE,IAAI,EAAE;YAChG,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YAClE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACrE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+CAA+C,EAAE;YACvE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SACvD;KACJ;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACjF,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,EAAE;SACxF;KACJ;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACjE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAC9D;QACD,oBAAoB,EAAE,IAAI;KAC7B;IACI;QACD,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE;YAChG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACxE;KACJ;IACI;QACD,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE;SACpD;KACJ;IACI;QACD,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACzD;KACJ;IACK;QACF,IAAI,EAAE,kCAAkC;QACxC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,2BAA2B,CAAC;QACzC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACrD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAChG;KACJ;IACI;QACD,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,UAAU,EAAE,IAAI,EAAG;SAAC;KACrG;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;SAAC;KACtD;IACI;QACD,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACpE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KACrF;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAAC;KACnD;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;YACrC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAAC;KAC5D;IACI;QACD,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAChD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAChE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAAE;SAAC;KACnE;IACI;QACD,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;SAAC;KAChF;IACI;QACD,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,QAAQ,EAAE;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAAC;KAC9F;CAAC,CAAC;AAEP,SAAS,SAAS,CAAC,UAA2B;IAC1C4C,IAAIA,QAAQA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA;IAChDA,MAAMA,CAAOA,UAAUA,CAACA,UAAWA,CAACA,QAAQA,CAACA,CAACA;AAClDA,CAACA;AAED,WAAW,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAE5D,SAAS,sBAAsB,CAAC,UAAkB;IAC9CC,EAAEA,CAACA,CAACA,UAAUA,CAACA,eAAeA,CAACA,QAAQA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAC5DA,MAAMA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,EAAEA,UAAUA,CAACA,MAAMA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,CAACA,UAAUA,CAACA;AACtBA,CAACA;AAED,SAAS,oBAAoB,CAAC,UAA2B;IACrDC,MAAMA,CAACA,sBAAsBA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;AACnDA,CAACA;AAED,SAAS,OAAO,CAAC,KAAwB;IACrCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;QAChBA,MAAMA,CAACA,cAAcA,CAACA;IAC1BA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,uBAAuBA,GAAGA,KAAKA,CAACA,WAAWA,GAAGA,GAAGA,CAACA;IAC7DA,CAACA;IACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;QACpBA,MAAMA,CAACA,KAAKA,CAACA,WAAWA,GAAGA,IAAIA,CAACA;IACpCA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;IACtBA,CAACA;AACLA,CAACA;AAED,SAAS,SAAS,CAAC,KAAa;IAC5BC,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;AAC9DA,CAACA;AAED,SAAS,WAAW,CAAC,KAAwB;IACzCC,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,KAAKA,WAAWA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,IAAIA,CAACA;IAC5BA,CAACA;IAEDA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA;AACtBA,CAACA;AAED,SAAS,2BAA2B,CAAC,UAA2B;IAC5DC,IAAIA,MAAMA,GAAGA,iBAAiBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,0CAA0CA,CAACA;IAExIA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,SAASA,CAACA;IAEpBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACJA,MAAMA,IAAIA,OAAOA,CAACA;YACtBA,CAACA;YAEDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,IAAIA,eAAeA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QACxEA,CAACA;IACLA,CAACA;IAEDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;QACjCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,eAAeA,CAACA;YAE1BA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;gBACnBA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,iBAAiBA,CAACA;YACpFA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,GAAGA,gBAAgBA,CAACA;YACpDA,CAACA;QACLA,CAACA;QACDA,MAAMA,IAAIA,OAAOA,CAACA;IACtBA,CAACA;IAEDA,MAAMA,IAAIA,YAAYA,CAACA;IACvBA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,+BAA+BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,OAAOA,CAACA;IAClHA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,0BAA0BA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,OAAOA,CAACA;IACvGA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,oEAAoEA,CAACA;IAC1GA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,8BAA8BA,CAACA;QAEzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,MAAMA,IAAIA,mBAAmBA,GAAGA,CAACA,GAAGA,gBAAgBA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,GAAGA,OAAOA,CAACA;QACjGA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,8CAA8CA,CAACA;IAC7DA,CAACA;IACDA,MAAMA,IAAIA,WAAWA,CAACA;IAEtBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,yBAAyBA,CAACA;IAEpCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACRA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,uBAAuBA,CAACA,UAAUA,CAACA,CAACA;IAClDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,uBAAuB,CAAC,UAA2B;IACxDC,IAAIA,MAAMA,GAAGA,uBAAuBA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,sBAAsBA,CAAAA;IAE/EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACxBA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;IAC/CA,CAACA;IAEDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,KAAKA,kBAAkBA,CAACA,CAACA,CAACA;QACzCA,MAAMA,IAAIA,qCAAqCA,CAACA;IACpDA,CAACA;IAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,UAAUA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,CAACA;IACxEA,CAACA;IAEDA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,uBAAuBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,eAAeA,CAACA;IACvFA,MAAMA,IAAIA,oBAAoBA,CAACA;IAE/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;QACnCA,MAAMA,IAAIA,IAAIA,CAACA;QACfA,MAAMA,IAAIA,WAAWA,CAACA,KAAKA,CAACA,CAACA;QAC7BA,MAAMA,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,IAAIA,CAACA;IAClCA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa;IAClBC,IAAIA,MAAMA,GAAGA,+CAA+CA,CAACA;IAE7DA,MAAMA,IAAIA,mBAAmBA,CAACA;IAE9BA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,MAAMA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,IAAIA,2BAA2BA,CAACA,UAAUA,CAACA,CAACA;IACtDA,CAACA;IAEDA,MAAMA,IAAIA,GAAGA,CAACA;IACdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,WAAW,CAAC,IAAY;IAC7BC,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,EAAEA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAAAA;AAC7FA,CAACA;AAED,SAAS,cAAc;IACnBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IACNA,2CAA2CA,GAC3CA,MAAMA,GACNA,yBAAyBA,GACzBA,+DAA+DA,GAC/DA,4DAA4DA,GAC5DA,eAAeA,GACfA,MAAMA,GACNA,qEAAqEA,GACrEA,4CAA4CA,GAC5CA,6BAA6BA,GAC7BA,mBAAmBA,GACnBA,MAAMA,GACNA,yCAAyCA,GACzCA,eAAeA,GACfA,MAAMA,GACNA,kEAAkEA,GAClEA,gEAAgEA,GAChEA,sDAAsDA,GACtDA,mBAAmBA,GACnBA,eAAeA,CAACA;IAEhBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,MAAMA,CAACA;QACjBA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,eAAeA,CAACA;QAEpHA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAClDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;YAEnCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBAChBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,IAAIA,KAAKA,CAACA,eAAeA,CAACA,CAACA,CAACA;gBAC7CA,MAAMA,IAAIA,kCAAkCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACzEA,CAACA;YACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,IAAIA,2CAA2CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAClFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,MAAMA,IAAIA,mCAAmCA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;gBAC1EA,CAACA;YACLA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,MAAMA,IAAIA,0CAA0CA,GAAGA,KAAKA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;YACjFA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,eAAeA,CAACA;IAC9BA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,IAAIA,OAAOA,CAACA;IAClBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,aAAa,CAAC,CAAM,EAAE,KAAa;IACxCC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA;YACpBA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;AACLA,CAACA;AAED,SAAS,OAAO,CAAI,KAAU,EAAE,IAAsB;IAClDC,IAAIA,MAAMA,GAAQA,EAAEA,CAACA;IAErBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC3CA,IAAIA,CAACA,GAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACtBA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA;QAEhBA,IAAIA,IAAIA,GAAQA,MAAMA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;QAChCA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACbA,MAAMA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA;IACrBA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB,CAAC,QAA0D,EAAE,gBAAwB,EAAE,MAAc;IAClIC,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;IAErCA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,IAAIA,KAAaA,CAACA;IAElBA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;QACxBA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA;QAE1BA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,MAAMA,CAACA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,qBAAqBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,OAAOA,CAACA;QAChGA,CAACA;QAEDA,IAAIA,WAAWA,GAAGA,QAAQA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;QACnCA,MAAMA,GAAGA,WAAWA,CAAAA;QAEpBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAC7CA,EAAEA,CAACA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;gBACvBA,MAAMA,IAAIA,MAAMA,CAACA;YACrBA,CAACA;YAEDA,KAAKA,GAAGA,CAACA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA;YAC7CA,MAAMA,IAAIA,iBAAiBA,GAAGA,KAAKA,GAAGA,uBAAuBA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;QAC7FA,CAACA;QAEDA,MAAMA,IAAIA,iBAAiBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,GAAGA,mCAAmCA,CAACA;IAC3HA,CAACA;IACDA,IAAIA,CAACA,CAACA;QACFA,MAAMA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,MAAMA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAAAA;QAC9FA,KAAKA,GAAGA,gBAAgBA,KAAKA,CAACA,GAAGA,OAAOA,GAAGA,CAACA,UAAUA,GAAGA,gBAAgBA,CAACA,CAACA;QAC3EA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,KAAKA,GAAGA,UAAUA,CAAAA;QAEhEA,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;QAEjFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,IAAIA,eAAeA,CAACA,CAACA,CAACA;YAC5BA,EAAEA,CAACA,CAACA,eAAeA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACpCA,MAAMA,IAAIA,MAAMA,GAAGA,wBAAwBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;gBACtDA,MAAMA,IAAIA,wBAAwBA,CAACA,eAAeA,CAACA,CAACA,CAACA,EAAEA,gBAAgBA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,MAAMA,CAACA,CAACA;YAClGA,CAACA;QACLA,CAACA;QAEDA,MAAMA,IAAIA,MAAMA,GAAGA,kDAAkDA,CAACA;QACtEA,MAAMA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA;IAC/BA,CAACA;IAEDA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,GAAG,CAAI,KAAU,EAAE,IAAsB;IAC9CC,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;IAEzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;QAC1BA,EAAEA,CAACA,CAACA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA;YACbA,GAAGA,GAAGA,IAAIA,CAACA;QACfA,CAACA;IACLA,CAACA;IAEDA,MAAMA,CAACA,GAAGA,CAACA;AACfA,CAACA;AAED,SAAS,iBAAiB;IACtBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAChBA,MAAMA,IAAIA,iCAAiCA,CAACA;IAC5CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC7DA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;YACJA,MAAMA,IAAIA,IAAIA,CAACA;QACnBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,eAAeA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,IAAIA,GAAGA,CAACA;QAClBA,CAACA;QACDA,IAAIA,CAACA,CAACA;YACFA,MAAMA,IAAIA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA;QACvDA,CAACA;IACLA,CAACA;IACDA,MAAMA,IAAIA,QAAQA,CAACA;IAEnBA,MAAMA,IAAIA,gEAAgEA,CAACA;IAC3EA,MAAMA,IAAIA,+CAA+CA,CAACA;IAS1DA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,wBAAwB;IAC7BC,IAAIA,MAAMA,GAAGA,2CAA2CA,GACpDA,MAAMA,GACNA,yBAAyBA,GACzBA,0CAA0CA,CAACA;IAE/CA,IAAIA,CAASA,CAACA;IACdA,IAAIA,QAAQA,GAAqDA,EAAEA,CAACA;IAEpEA,GAAGA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,EAAEA,CAACA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QACvFA,QAAQA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;IACxEA,CAACA;IAEDA,QAAQA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,IAAIA,CAACA,EAA5BA,CAA4BA,CAACA,CAACA;IAEtDA,MAAMA,IAAIA,sGAAsGA,CAACA;IAEjHA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,IAAIA,cAAcA,GAAGA,GAAGA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,EAAbA,CAAaA,CAACA,CAACA;IACvDA,MAAMA,IAAIA,mCAAmCA,CAACA;IAG9CA,GAAGA,CAACA,CAACA,CAACA,GAAGA,cAAcA,EAAEA,CAACA,IAAIA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAChDA,IAAIA,iBAAiBA,GAAGA,UAAUA,CAACA,cAAcA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,UAAAA,CAAIA,IAACA,OAAAA,CAACA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,EAAnBA,CAAmBA,CAACA,CAACA;QAC5FA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAC/BA,MAAMA,IAAIA,qBAAqBA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;YAC1CA,MAAMA,IAAIA,wBAAwBA,CAACA,iBAAiBA,EAAEA,CAACA,EAAEA,kBAAkBA,CAACA,CAACA;QACjFA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,8DAA8DA,CAACA;IACzEA,MAAMA,IAAIA,mBAAmBA,CAACA;IAC9BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,WAAWA,CAACA;IACtBA,MAAMA,IAAIA,GAAGA,CAACA;IAEdA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,SAAS,cAAc,CAAC,IAA2B;IAC/CC,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;QACrCA,EAAEA,CAACA,CAAMA,UAAUA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAC5CA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;IACLA,CAACA;IAEDA,MAAMA,IAAIA,KAAKA,EAAEA,CAACA;AACtBA,CAACA;AAED,SAAS,eAAe;IACpBC,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;IAEhBA,MAAMA,IAAIA,+CAA+CA,CAACA;IAE1DA,MAAMA,IAAIA,yBAAyBA,CAACA;IACpCA,MAAMA,IAAIA,uGAAuGA,CAACA;IAClHA,MAAMA,IAAIA,8DAA8DA,CAACA;IAEzEA,MAAMA,IAAIA,qCAAqCA,CAACA;IAEhDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAEhCA,MAAMA,IAAIA,8BAA8BA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,CAACA;QACnFA,MAAMA,IAAIA,sBAAsBA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,IAAIA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,gBAAgBA,CAACA;IACpHA,CAACA;IAEDA,MAAMA,IAAIA,4EAA4EA,CAACA;IACvFA,MAAMA,IAAIA,eAAeA,CAACA;IAC1BA,MAAMA,IAAIA,eAAeA,CAACA;IAE1BA,MAAMA,IAAIA,2CAA2CA,CAACA;IACtDA,MAAMA,IAAIA,mDAAmDA,CAACA;IAE9DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;QAC1CA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,CAACA,CAACA,CAACA;QAChCA,MAAMA,IAAIA,eAAeA,GAAGA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,SAASA,GAAGA,UAAUA,CAACA,IAAIA,GAAGA,aAAaA,CAACA;IAC/GA,CAACA;IAEDA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,IAAIA,OAAOA,CAACA;IAElBA,MAAMA,CAACA,MAAMA,CAACA;AAClBA,CAACA;AAED,IAAI,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAC1C,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;AAC9B,IAAI,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;AAClD,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;AAEpC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,4DAA4D,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACpI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,oDAAoD,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/G,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,wDAAwD,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7H,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,iDAAiD,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC"} ->>>>>>> f41e8c3... Rename 'block' to 'body'. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 57d7f11... Add support for parsing async/await in fidelity. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f89de4c... Remove redundant syntax type. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 9a2e8e3... Rename SimplePropertyAssignment to PropertyAssignment. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 2e3c262... Allow modifiers on an Export Assignment node. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f370dc1... Use a const enum for the syntax kind. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 8c342a2... Add support for parsing type aliases. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f65fbe4... Update name of variable declaration member. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> f086395... Simplify how type members are represented in the tree. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 49919b5... Remove IndexMemberDeclaration, we can just use IndexSignature instead. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> c9b778e... Rename 'CastExpression' to 'TypeAssertionExpression'. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 5910bee... Rename some kinds to match new parser. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 4afcf50... Rename MemberAccess to PropertyAccess. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ->>>>>>> 7a4a842... Tighten the bounds on an 'await' expression. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getWScriptSystem.write","getWScriptSystem.resolvePath","getWScriptSystem.fileExists","getWScriptSystem.directoryExists","getWScriptSystem.createDirectory","getWScriptSystem.getExecutingFilePath","getWScriptSystem.getCurrentDirectory","getWScriptSystem.exit","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.write","getNodeSystem.close","getNodeSystem.fileChanged","getNodeSystem.fileExists","getNodeSystem.directoryExists","getNodeSystem.createDirectory","getNodeSystem.getExecutingFilePath","getNodeSystem.getCurrentDirectory","getNodeSystem.getMemoryUsage","getNodeSystem.exit","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,YAACA,CAASA;gBACXG,OAAOA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAC5BA,CAACA;YACDH,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,YAACA,IAAYA;gBACpBI,MAAMA,CAACA,GAAGA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YACDJ,UAAUA,YAACA,IAAYA;gBACnBK,MAAMA,CAACA,GAAGA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAChCA,CAACA;YACDL,eAAeA,YAACA,IAAYA;gBACxBM,MAAMA,CAACA,GAAGA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAClCA,CAACA;YACDN,eAAeA,YAACA,aAAqBA;gBACjCO,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;oBACvCA,GAAGA,CAACA,YAAYA,CAACA,aAAaA,CAACA,CAACA;gBACpCA,CAACA;YACLA,CAACA;YACDP,oBAAoBA;gBAChBQ,MAAMA,CAACA,OAAOA,CAACA,cAAcA,CAACA;YAClCA,CAACA;YACDR,mBAAmBA;gBACfS,MAAMA,CAACA,IAAIA,aAAaA,CAACA,eAAeA,CAACA,CAACA,gBAAgBA,CAACA;YAC/DA,CAACA;YACDT,IAAIA,YAACA,QAAiBA;gBAClBU,IAAAA,CAACA;oBACGA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAC3BA,CACAA;gBAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACXA,CAACA;YACLA,CAACA;SACJV,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBW,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,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"} ->>>>>>> 44381ba... Use callbacks for speculative parsing. -======= -{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getWScriptSystem.write","getWScriptSystem.resolvePath","getWScriptSystem.fileExists","getWScriptSystem.directoryExists","getWScriptSystem.createDirectory","getWScriptSystem.getExecutingFilePath","getWScriptSystem.getCurrentDirectory","getWScriptSystem.exit","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.write","getNodeSystem.close","getNodeSystem.fileChanged","getNodeSystem.fileExists","getNodeSystem.directoryExists","getNodeSystem.createDirectory","getNodeSystem.getExecutingFilePath","getNodeSystem.getCurrentDirectory","getNodeSystem.getMemoryUsage","getNodeSystem.exit","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACPA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,YAACA,CAASA;gBACXG,OAAOA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAC5BA,CAACA;YACDH,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,YAACA,IAAYA;gBACpBI,MAAMA,CAACA,GAAGA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YACDJ,UAAUA,YAACA,IAAYA;gBACnBK,MAAMA,CAACA,GAAGA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAChCA,CAACA;YACDL,eAAeA,YAACA,IAAYA;gBACxBM,MAAMA,CAACA,GAAGA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAClCA,CAACA;YACDN,eAAeA,YAACA,aAAqBA;gBACjCO,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;oBACvCA,GAAGA,CAACA,YAAYA,CAACA,aAAaA,CAACA,CAACA;gBACpCA,CAACA;YACLA,CAACA;YACDP,oBAAoBA;gBAChBQ,MAAMA,CAACA,OAAOA,CAACA,cAAcA,CAACA;YAClCA,CAACA;YACDR,mBAAmBA;gBACfS,MAAMA,CAACA,IAAIA,aAAaA,CAACA,eAAeA,CAACA,CAACA,gBAAgBA,CAACA;YAC/DA,CAACA;YACDT,IAAIA,YAACA,QAAiBA;gBAClBU,IAAAA,CAACA;oBACGA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAC3BA,CACAA;gBAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACXA,CAACA;YACLA,CAACA;SACJV,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBW,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,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"} ->>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. diff --git a/src/services/syntax/characterInfo.ts b/src/services/syntax/characterInfo.ts deleted file mode 100644 index 6ab4a91ddc8..00000000000 --- a/src/services/syntax/characterInfo.ts +++ /dev/null @@ -1,70 +0,0 @@ -/// - -module TypeScript { - export module CharacterInfo { - export function isDecimalDigit(c: number): boolean { - return c >= CharacterCodes._0 && c <= CharacterCodes._9; - } - - export function isOctalDigit(c: number): boolean { - return c >= CharacterCodes._0 && c <= CharacterCodes._7; - } - - export function isHexDigit(c: number): boolean { - return CharacterInfo.isDecimalDigit(c) || - (c >= CharacterCodes.A && c <= CharacterCodes.F) || - (c >= CharacterCodes.a && c <= CharacterCodes.f); - } - - export function hexValue(c: number): number { - // Debug.assert(isHexDigit(c)); - return CharacterInfo.isDecimalDigit(c) - ? (c - CharacterCodes._0) - : (c >= CharacterCodes.A && c <= CharacterCodes.F) - ? c - CharacterCodes.A + 10 - : c - CharacterCodes.a + 10; - } - - export function isWhitespace(ch: number): boolean { - switch (ch) { - // Unicode 3.0 space characters. - case CharacterCodes.space: - case CharacterCodes.nonBreakingSpace: - case CharacterCodes.enQuad: - case CharacterCodes.emQuad: - case CharacterCodes.enSpace: - case CharacterCodes.emSpace: - case CharacterCodes.threePerEmSpace: - case CharacterCodes.fourPerEmSpace: - case CharacterCodes.sixPerEmSpace: - case CharacterCodes.figureSpace: - case CharacterCodes.punctuationSpace: - case CharacterCodes.thinSpace: - case CharacterCodes.hairSpace: - case CharacterCodes.zeroWidthSpace: - case CharacterCodes.narrowNoBreakSpace: - case CharacterCodes.ideographicSpace: - - case CharacterCodes.tab: - case CharacterCodes.verticalTab: - case CharacterCodes.formFeed: - case CharacterCodes.byteOrderMark: - return true; - } - - return false; - } - - export function isLineTerminator(ch: number): boolean { - switch (ch) { - case CharacterCodes.carriageReturn: - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - return true; - } - - return false; - } - } -} \ No newline at end of file diff --git a/src/services/syntax/constants.ts b/src/services/syntax/constants.ts deleted file mode 100644 index 43c4edd62fd..00000000000 --- a/src/services/syntax/constants.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// - -module TypeScript { - export const enum ParserContextFlags { - StrictMode = 1 << 0, - DisallowIn = 1 << 1, - Yield = 1 << 2, - GeneratorParameter = 1 << 3, - Async = 1 << 4, - - Mask = 0x1F - } - - export enum SyntaxNodeConstants { - None = 0, - - // The first five bit of the flags are used to store parser context flags. The next bit - // marks if we've computed the transitive data for the node. The next bit marks if the node - // is incrementally unusable. - // - // The width of the node is stored in the remainder of the number. - DataComputed = 1 << 5, // 0000 0000 0000 0000 0000 0000 0010 0000 - IncrementallyUnusableMask = 1 << 6, // 0000 0000 0000 0000 0000 0000 0100 0000 - FullWidthShift = 1 << 7, // 1111 1111 1111 1111 1111 1111 1000 0000 - } -} \ No newline at end of file diff --git a/src/services/syntax/emitter.ts b/src/services/syntax/emitter.ts deleted file mode 100644 index bfcae7d5bb3..00000000000 --- a/src/services/syntax/emitter.ts +++ /dev/null @@ -1,1246 +0,0 @@ -/// - -module TypeScript.Emitter1 { - function callSignature(parameter: ParameterSyntax): CallSignatureSyntax { - return CallSignatureSyntax.create1().withParameterList( - ParameterListSyntax.create1().withParameter(parameter)); - } - - // Class that makes sure we're not reusing tokens in a tree - class EnsureTokenUniquenessRewriter extends SyntaxRewriter { - private tokenTable = Collections.createHashTable(Collections.DefaultHashTableCapacity, Collections.identityHashCode); - - public visitToken(token: ISyntaxToken): ISyntaxToken { - if (this.tokenTable.containsKey(token)) { - // already saw this token. so clone it and return a new one. so that the tree stays - // unique/ - return token.clone(); - } - - this.tokenTable.add(token, token); - return token; - } - } - - class EmitterImpl extends SyntaxRewriter { - private space: ISyntaxTriviaList; - private newLine: ISyntaxTriviaList; - private factory: Syntax.IFactory = Syntax.normalModeFactory; - - // A copy of the syntax tree we keep around so that we can determine where tokens were - // before we started moving them around. - private syntaxTreeCopy: SyntaxTree; - - constructor(syntaxTree: SyntaxTree, private options: FormattingOptions) { - super(); - - this.options = options || FormattingOptions.defaultOptions; - - // TODO: use proper new line based on options. - this.space = Syntax.spaceTriviaList; - this.newLine = Syntax.triviaList([Syntax.carriageReturnLineFeedTrivia]); - - this.syntaxTreeCopy = Parser.parse(syntaxTree.fileName(), SimpleText.fromString(syntaxTree.sourceUnit().fullText()), syntaxTree.isDeclaration(), syntaxTree.parseOptions()); - } - - private columnForStartOfToken(token: ISyntaxToken): number { - return Indentation.columnForStartOfTokenAtPosition(this.syntaxTreeCopy, token.fullStart(), this.options); - } - - private columnForEndOfToken(token: ISyntaxToken): number { - return Indentation.columnForEndOfTokenAtPosition(this.syntaxTreeCopy, token.fullStart(), this.options); - } - - private indentationTrivia(column: number): ISyntaxTriviaList { - var triviaArray = column === 0 ? null : [Indentation.indentationTrivia(column, this.options)]; - return Syntax.triviaList(triviaArray); - } - - private indentationTriviaForStartOfNode(node: ISyntaxNodeOrToken): ISyntaxTriviaList { - var column = this.columnForStartOfToken(node.firstToken()); - return this.indentationTrivia(column); - } - - private changeIndentation(node: T, changeFirstToken: boolean, indentAmount: number): T { - if (indentAmount === 0) { - return node; - } - else if (indentAmount > 0) { - return SyntaxIndenter.indentNode(node, - /*indentFirstToken:*/ changeFirstToken, /*indentAmount:*/ indentAmount, - this.options); - } - else { - // Dedent the node. But don't allow it go before the minimum indent amount. - return SyntaxDedenter.dedentNode(node, - /*dedentFirstToken:*/ changeFirstToken, /*dedentAmount:*/-indentAmount, - /*minimumColumn:*/this.options.indentSpaces, this.options); - } - } - - private withNoTrivia(token: ISyntaxToken): ISyntaxToken { - return token.withLeadingTrivia(Syntax.emptyTriviaList).withTrailingTrivia(Syntax.emptyTriviaList); - } - - public visitSourceUnit(node: SourceUnitSyntax): SourceUnitSyntax { - return node.withModuleElements(Syntax.list( - this.convertModuleElements(node.moduleElements))); - } - - private convertModuleElements(list: ISyntaxList): IModuleElementSyntax[] { - var moduleElements: IModuleElementSyntax[] = []; - - for (var i = 0, n = list.childCount(); i < n; i++) { - var moduleElement = list.childAt(i); - - var converted = this.visitNode(moduleElement); - if (converted !== null) { - if (ArrayUtilities.isArray(converted)) { - moduleElements.push.apply(moduleElements, converted); - } - else { - moduleElements.push(converted); - } - } - } - - return moduleElements; - } - - private static splitModuleName(name: INameSyntax): ISyntaxToken[] { - var result: ISyntaxToken[] = []; - while (true) { - if (name.kind() === SyntaxKind.IdentifierName) { - result.unshift(name); - return result; - } - else if (name.kind() === SyntaxKind.QualifiedName) { - var qualifiedName = name; - result.unshift(qualifiedName.right); - name = qualifiedName.left; - } - else { - throw Errors.invalidOperation(); - } - } - } - - private leftmostName(name: INameSyntax): ISyntaxToken { - while (name.kind() === SyntaxKind.QualifiedName) { - name = (name).left; - } - - return name; - } - - private rightmostName(name: INameSyntax): ISyntaxToken { - if (name.kind() === SyntaxKind.QualifiedName) { - return (name).right; - } - - return name; - } - - private containsToken(list: ISyntaxList, kind: SyntaxKind): boolean { - for (var i = 0, n = list.childCount(); i < n; i++) { - if (list.childAt(i).kind() === kind) { - return true; - } - } - - return false; - } - - private exportModuleElement(moduleIdentifier: ISyntaxToken, - moduleElement: IModuleElementSyntax, - elementIdentifier: ISyntaxToken): ExpressionStatementSyntax { - elementIdentifier = this.withNoTrivia(elementIdentifier); - - // M1.e = e; - return ExpressionStatementSyntax.create1( - this.factory.binaryExpression( - SyntaxKind.AssignmentExpression, - MemberAccessExpressionSyntax.create1( - this.withNoTrivia(moduleIdentifier), - elementIdentifier.withTrailingTrivia(Syntax.spaceTriviaList)), - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - elementIdentifier)) - .withLeadingTrivia(this.indentationTriviaForStartOfNode(moduleElement)) - .withTrailingTrivia(this.newLine); - } - - private handleExportedModuleElement(parentModule: ISyntaxToken, - moduleElement: IModuleElementSyntax, - elements: IModuleElementSyntax[]): void { - if (moduleElement.kind() === SyntaxKind.VariableStatement) { - var variableStatement = moduleElement; - if (this.containsToken(variableStatement.modifiers, SyntaxKind.ExportKeyword)) { - var declarators = variableStatement.variableDeclaration.variableDeclarators; - for (var i = 0, n = declarators.nonSeparatorCount(); i < n; i++) { - var declarator = declarators.nonSeparatorAt(i); - elements.push(this.exportModuleElement(parentModule, moduleElement, declarator.propertyName)); - } - } - } - else if (moduleElement.kind() === SyntaxKind.FunctionDeclaration) { - var functionDeclaration = moduleElement; - if (this.containsToken(functionDeclaration.modifiers, SyntaxKind.ExportKeyword)) { - elements.push(this.exportModuleElement( - parentModule, moduleElement, functionDeclaration.identifier)); - } - } - else if (moduleElement.kind() === SyntaxKind.ClassDeclaration) { - var classDeclaration = moduleElement; - if (this.containsToken(classDeclaration.modifiers, SyntaxKind.ExportKeyword)) { - elements.push(this.exportModuleElement(parentModule, moduleElement, classDeclaration.identifier)); - } - } - else if (moduleElement.kind() === SyntaxKind.ModuleDeclaration) { - var childModule = moduleElement; - if (this.containsToken(childModule.modifiers, SyntaxKind.ExportKeyword)) { - elements.push(this.exportModuleElement( - parentModule, moduleElement, this.leftmostName(childModule.name))); - } - } - } - - public visitModuleDeclaration(node: ModuleDeclarationSyntax): IModuleElementSyntax[] { - var _this = this; - - // Recurse downwards and get the rewritten children. - var moduleElements = this.convertModuleElements(node.moduleElements); - - if (this.mustCaptureThisInModule(node)) { - // TODO: determine the right column for the 'this capture' statment. - moduleElements.unshift(this.generateThisCaptureStatement(0)); - } - - // Handle the case where the child is an export. - var parentModule = this.rightmostName(node.name); - for (var i = 0, n = node.moduleElements.childCount(); i < n; i++) { - this.handleExportedModuleElement( - parentModule, node.moduleElements.childAt(i), moduleElements); - } - - // Break up the dotted name into pieces. - var names = EmitterImpl.splitModuleName(node.name); - - // Then, for all the names left of that name, wrap what we've created in a larger module. - for (var nameIndex = names.length - 1; nameIndex >= 0; nameIndex--) { - moduleElements = this.convertModuleDeclaration( - node, names[nameIndex], moduleElements, nameIndex === 0); - - if (nameIndex > 0) { - // We're popping out and generate each outer module. As we do so, we have to - // indent whatever we've created so far appropriately. - moduleElements.push(this.exportModuleElement( - names[nameIndex - 1], node, names[nameIndex])); - - moduleElements = ArrayUtilities.select(moduleElements, - e => _this.changeIndentation(e, /*indentFirstToken:*/ true, _this.options.indentSpaces)); - } - } - - return moduleElements; - } - - private initializedVariable(name: ISyntaxToken): BinaryExpressionSyntax { - return this.factory.binaryExpression(SyntaxKind.LogicalOrExpression, - name, - Syntax.token(SyntaxKind.BarBarToken), - ParenthesizedExpressionSyntax.create1( - Syntax.assignmentExpression( - name, - Syntax.token(SyntaxKind.EqualsToken), - ObjectLiteralExpressionSyntax.create1()))); - } - - private convertModuleDeclaration(moduleDeclaration: ModuleDeclarationSyntax, - moduleName: ISyntaxToken, - moduleElements: IModuleElementSyntax[], - outermost: boolean): IModuleElementSyntax[] { - moduleName = moduleName.withLeadingTrivia(Syntax.emptyTriviaList).withTrailingTrivia(Syntax.emptyTriviaList); - var moduleIdentifier = moduleName; - - var moduleIndentation = this.indentationTriviaForStartOfNode(moduleDeclaration); - var leadingTrivia = outermost ? moduleDeclaration.leadingTrivia() : moduleIndentation; - - // var M; - var variableStatement = VariableStatementSyntax.create1(this.factory.variableDeclaration( - Syntax.token(SyntaxKind.VarKeyword).withTrailingTrivia(this.space), - Syntax.separatedList( - [VariableDeclaratorSyntax.create(moduleIdentifier)]))) - .withLeadingTrivia(leadingTrivia).withTrailingTrivia(this.newLine); - - // function(M) { ... } - var functionExpression = FunctionExpressionSyntax.create1() - .withCallSignature(callSignature(ParameterSyntax.create(moduleIdentifier)).withTrailingTrivia(this.space)) - .withBlock(this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.list(moduleElements), - Syntax.token(SyntaxKind.CloseBraceToken).withLeadingTrivia(moduleIndentation))); - - // (function(M) { ... })(M||(M={})); - var expressionStatement = ExpressionStatementSyntax.create1( - this.factory.invocationExpression( - ParenthesizedExpressionSyntax.create1(functionExpression), - ArgumentListSyntax.create1().withArgument(this.initializedVariable(moduleName)))) - .withLeadingTrivia(moduleIndentation).withTrailingTrivia(this.newLine); - - return [variableStatement, expressionStatement]; - } - - public visitExpressionStatement(node: ExpressionStatementSyntax): ExpressionStatementSyntax { - // Can't have an expression statement with an anonymous function expression in it. - var rewritten: ExpressionStatementSyntax = super.visitExpressionStatement(node); - - // convert: function() { ... }; to (function() { ... }); - if (rewritten.expression.kind() === SyntaxKind.FunctionExpression) { - // Wasn a function expression - var functionExpression = rewritten.expression; - if (functionExpression.identifier === null) { - // Was anonymous. - - // Remove the leading trivia from the function keyword. We'll put it on the open paren - // token instead. - - // Now, wrap the function expression in parens to make it legal in javascript. - var parenthesizedExpression = ParenthesizedExpressionSyntax.create1( - functionExpression.withLeadingTrivia(Syntax.emptyTriviaList)).withLeadingTrivia(functionExpression.leadingTrivia()); - - return rewritten.withExpression(parenthesizedExpression); - } - } - - return rewritten; - } - - public visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): FunctionExpressionSyntax { - return FunctionExpressionSyntax.create1() - .withCallSignature(callSignature(ParameterSyntax.create(this.withNoTrivia(node.identifier))).withTrailingTrivia(this.space)) - .withBlock(this.convertArrowFunctionBody(node)).withLeadingTrivia(node.leadingTrivia()); - } - - public visitParenthesizedArrowFunctionExpression(node: ParenthesizedArrowFunctionExpressionSyntax): FunctionExpressionSyntax { - return FunctionExpressionSyntax.create1() - .withCallSignature(CallSignatureSyntax.create(node.callSignature.parameterList.accept(this))) - .withBlock(this.convertArrowFunctionBody(node)).withLeadingTrivia(node.leadingTrivia()); - } - - private convertArrowFunctionBody(arrowFunction: IArrowFunctionExpressionSyntax): BlockSyntax { - var rewrittenBody = arrowFunction.block ? this.visitNode(arrowFunction.block) : this.visitNodeOrToken(arrowFunction.expression); - - if (rewrittenBody.kind() === SyntaxKind.Block) { - return rewrittenBody; - } - - var arrowToken = arrowFunction.equalsGreaterThanToken; - - // first, attach the expression to the return statement - var returnStatement = this.factory.returnStatement( - Syntax.token(SyntaxKind.ReturnKeyword, { trailingTrivia: arrowToken.trailingTrivia().toArray() }), - rewrittenBody, - Syntax.token(SyntaxKind.SemicolonToken)).withTrailingTrivia(this.newLine); - - // We want to adjust the indentation of the expression so that is aligns as it - // did before. For example, if we started with: - // - // a => foo().bar() - // .baz() - // - // Then we want to end up with: - // - // return foo().bar() - // .baz() - // - // To do this we look at where the previous token (=>) used to end and where the new pevious - // token (return) ends. The difference (in this case '2') is our offset. - - var difference = 0; - if (arrowToken.hasTrailingNewLine()) { - // The expression is on the next line. i.e. - // - // foo => - // expr - // - // So we want it to immediately follow the return statement. i.e.: - // - // return - // expr; - // - // and we adjust based on the column difference between the start of the arrow function - // and the start of the expr. - var arrowFunctionStart = this.columnForStartOfToken(arrowFunction.firstToken()); - difference = -arrowFunctionStart; - } - else { - // the expression immediately follows the arrow. i.e.: - // - // foo => expr - // - // So we want it to immediately follow the return statement. i.e.: - // - // return expr; - // - // and we adjust based on the column difference between the end of the arrow token and - // the end of the return statement. - var arrowEndColumn = this.columnForEndOfToken(arrowToken); - var returnKeywordEndColumn = returnStatement.returnKeyword.width(); - difference = returnKeywordEndColumn - arrowEndColumn; - } - - returnStatement = this.changeIndentation( - returnStatement, /*changeFirstToken:*/ false, difference); - - // Next, indent the return statement. It's going in a block, so it needs to be properly - // indented. Note we do this *after* we've ensured the expression aligns properly. - - returnStatement = this.changeIndentation( - returnStatement, /*indentFirstToken:*/ true, this.options.indentSpaces); - - // Now wrap the return statement in a block. - var block = this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.list([returnStatement]), - Syntax.token(SyntaxKind.CloseBraceToken)); - - // Note: if we started with something like: - // - // var v = a => 1; - // - // Then we want to convert that to: - // - // var v = function(a) { - // return 1; - // }; - // - // However, right now what we've created is: - // - // { - // return 1; - // } - // - // So we need to indent the block with our current column indent so that it aligns with the - // parent structure. Note: we don't wan to adjust the leading brace as that's going to go - // after the function sigature. - - return this.changeIndentation(block, /*indentFirstToken:*/ false, - Indentation.columnForStartOfFirstTokenInLineContainingPosition( - this.syntaxTreeCopy, arrowFunction.firstToken().fullStart(), this.options)); - } - - private static methodSignatureDefaultParameters(signature: MethodSignatureSyntax): ParameterSyntax[] { - return EmitterImpl.callSignatureDefaultParameters(signature.callSignature); - } - - private static callSignatureDefaultParameters(callSignature: CallSignatureSyntax): ParameterSyntax[] { - return EmitterImpl.parameterListDefaultParameters(callSignature.parameterList); - } - - private static parameterListDefaultParameters(parameterList: ParameterListSyntax): ParameterSyntax[] { - return ArrayUtilities.where(parameterList.parameters.toNonSeparatorArray(), p => p.equalsValueClause !== null); - } - - private generatePropertyAssignmentStatement(parameter: ParameterSyntax): ExpressionStatementSyntax { - var identifier = this.withNoTrivia(parameter.identifier); - - // this.foo = foo; - return ExpressionStatementSyntax.create1( - Syntax.assignmentExpression( - MemberAccessExpressionSyntax.create1( - Syntax.token(SyntaxKind.ThisKeyword), - identifier.withTrailingTrivia(Syntax.spaceTriviaList)), - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - identifier)).withTrailingTrivia(this.newLine); - } - - private generateDefaultValueAssignmentStatement(parameter: ParameterSyntax): IfStatementSyntax { - var identifierName = this.withNoTrivia(parameter.identifier).withTrailingTrivia(this.space); - - // typeof foo === 'undefined' - var condition = this.factory.binaryExpression( - SyntaxKind.EqualsExpression, - this.factory.typeOfExpression( - Syntax.token(SyntaxKind.TypeOfKeyword).withTrailingTrivia(this.space), - identifierName), - Syntax.token(SyntaxKind.EqualsEqualsEqualsToken).withTrailingTrivia(this.space), - Syntax.stringLiteralExpression('"undefined"')); - - // foo = expr; - var assignmentStatement = ExpressionStatementSyntax.create1( - Syntax.assignmentExpression( - identifierName, - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - parameter.equalsValueClause.value.accept(this))).withTrailingTrivia(this.space); - - var block = this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.space), - Syntax.list([assignmentStatement]), - Syntax.token(SyntaxKind.CloseBraceToken)).withTrailingTrivia(this.newLine); - - // if (typeof foo === 'undefined') { foo = expr; } - return this.factory.ifStatement( - Syntax.token(SyntaxKind.IfKeyword).withTrailingTrivia(this.space), - Syntax.token(SyntaxKind.OpenParenToken), - condition, - Syntax.token(SyntaxKind.CloseParenToken).withTrailingTrivia(this.space), - block, null); - } - - public visitFunctionDeclaration(node: FunctionDeclarationSyntax): FunctionDeclarationSyntax { - if (node.block === null) { - // Function overloads aren't emitted. - return null; - } - - var rewritten = super.visitFunctionDeclaration(node); - var parametersWithDefaults = EmitterImpl.callSignatureDefaultParameters(node.callSignature); - - if (parametersWithDefaults.length !== 0) { - var defaultValueAssignmentStatements = ArrayUtilities.select( - parametersWithDefaults, p => this.generateDefaultValueAssignmentStatement(p)); - - var statementColumn = this.columnForStartOfToken(node.firstToken()) + this.options.indentSpaces; - var statements = ArrayUtilities.select(defaultValueAssignmentStatements, - s => this.changeIndentation(s, /*indentFirstToken:*/ true, statementColumn)); - - // Capture _this if necessary - if (this.mustCaptureThisInFunction(node)) { - statements.push(this.generateThisCaptureStatement(statementColumn)); - } - - statements.push.apply(statements, rewritten.block.statements.toArray()); - - rewritten = rewritten.withBlock(rewritten.block.withStatements( - Syntax.list(statements))); - } - - return rewritten.withModifiers(Syntax.emptyList()) - .withLeadingTrivia(rewritten.leadingTrivia()); - } - - public visitParameter(node: ParameterSyntax): ParameterSyntax { - // transfer the trivia from the first token to the the identifier. - return ParameterSyntax.create(node.identifier) - .withLeadingTrivia(node.leadingTrivia()) - .withTrailingTrivia(node.trailingTrivia()) - } - - private generatePropertyAssignment(classDeclaration: ClassDeclarationSyntax, - static: boolean, - memberDeclaration: MemberVariableDeclarationSyntax): ExpressionStatementSyntax { - var isStatic = this.containsToken(memberDeclaration.modifiers, SyntaxKind.StaticKeyword); - var declarator = memberDeclaration.variableDeclarator; - if (static !== isStatic || declarator.equalsValueClause === null) { - return null; - } - - // this.foo = expr; - var receiver = MemberAccessExpressionSyntax.create1( - static ? this.withNoTrivia(classDeclaration.identifier) - : Syntax.token(SyntaxKind.ThisKeyword), - this.withNoTrivia(declarator.propertyName)).withTrailingTrivia(Syntax.spaceTriviaList); - - return ExpressionStatementSyntax.create1( - Syntax.assignmentExpression( - receiver, - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - declarator.equalsValueClause.value.accept(this).withTrailingTrivia(Syntax.emptyTriviaList))) - .withLeadingTrivia(memberDeclaration.leadingTrivia()).withTrailingTrivia(this.newLine); - } - - private generatePropertyAssignments(classDeclaration: ClassDeclarationSyntax, - static: boolean): ExpressionStatementSyntax[] { - var result: ExpressionStatementSyntax[] = []; - - // TODO: handle alignment here. - for (var i = 0, n = classDeclaration.classElements.childCount(); i < n; i++) { - var classElement = classDeclaration.classElements.childAt(i); - - if (classElement.kind() === SyntaxKind.MemberVariableDeclaration) { - var statement = this.generatePropertyAssignment( - classDeclaration, static, classElement); - if (statement !== null) { - result.push(statement); - } - } - } - - return result; - } - - private createDefaultConstructorDeclaration(classDeclaration: ClassDeclarationSyntax): FunctionDeclarationSyntax { - var classIndentationColumn = this.columnForStartOfToken(classDeclaration.firstToken()); - var statementIndentationColumn = classIndentationColumn + this.options.indentSpaces; - - var statements: IStatementSyntax[] = []; - if (classDeclaration.heritageClauses.childCount() > 0) { - statements.push(ExpressionStatementSyntax.create1( - this.factory.invocationExpression( - MemberAccessExpressionSyntax.create1( - Syntax.identifierName("_super"), Syntax.identifierName("apply")), - ArgumentListSyntax.create1().withArguments( - Syntax.separatedList([ - Syntax.token(SyntaxKind.ThisKeyword), - Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space), - Syntax.identifierName("arguments")]))) - ).withLeadingTrivia(this.indentationTrivia(statementIndentationColumn)) - .withTrailingTrivia(this.newLine)); - } - - if (this.mustCaptureThisInClass(classDeclaration)) { - statements.push(this.generateThisCaptureStatement(statementIndentationColumn)); - } - - statements.push.apply(statements, this.generatePropertyAssignments(classDeclaration, /*static:*/ false)); - - var indentationTrivia = this.indentationTrivia(classIndentationColumn); - - var functionDeclaration = FunctionDeclarationSyntax.create( - Syntax.token(SyntaxKind.FunctionKeyword).withLeadingTrivia(indentationTrivia).withTrailingTrivia(this.space), - this.withNoTrivia(classDeclaration.identifier), - CallSignatureSyntax.create1().withTrailingTrivia(this.space)) - .withBlock(this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.list(statements), - Syntax.token(SyntaxKind.CloseBraceToken).withLeadingTrivia(indentationTrivia))).withTrailingTrivia(this.newLine); - - return this.changeIndentation( - functionDeclaration, /*indentFirstToken:*/ true, this.options.indentSpaces); - } - - private convertConstructorDeclaration(classDeclaration: ClassDeclarationSyntax, - constructorDeclaration: ConstructorDeclarationSyntax): FunctionDeclarationSyntax { - if (constructorDeclaration.block === null) { - return null; - } - - var i: number; - var identifier = this.withNoTrivia(classDeclaration.identifier); - - var constructorIndentationColumn = this.columnForStartOfToken(constructorDeclaration.firstToken()); - var originalParameterListindentation = this.columnForStartOfToken(constructorDeclaration.callSignature.firstToken()); - - // The original indent + "function" + + "ClassName" - var newParameterListIndentation = - constructorIndentationColumn + SyntaxFacts.getText(SyntaxKind.FunctionKeyword).length + 1 + identifier.width(); - - var callSignature = constructorDeclaration.callSignature.accept(this); - callSignature= this.changeIndentation( - callSignature, /*changeFirstToken:*/ false, newParameterListIndentation - originalParameterListindentation); - - var block = constructorDeclaration.block; - var allStatements = block.statements.toArray(); - - var normalStatements: IStatementSyntax[] = ArrayUtilities.select(ArrayUtilities.where(allStatements, - s => !Syntax.isSuperInvocationExpressionStatement(s)), s => s.accept(this)); - - var instanceAssignments = this.generatePropertyAssignments(classDeclaration, /*static:*/ false); - - for (i = instanceAssignments.length - 1; i >= 0; i--) { - normalStatements.unshift(this.changeIndentation( - instanceAssignments[i], /*changeFirstToken:*/ true, this.options.indentSpaces)); - } - - var parameterPropertyAssignments = ArrayUtilities.select( - ArrayUtilities.where(constructorDeclaration.callSignature.parameterList.parameters.toNonSeparatorArray(), p => p.modifiers.childCount() > 0), - p => this.generatePropertyAssignmentStatement(p)); - - for (i = parameterPropertyAssignments.length - 1; i >= 0; i--) { - normalStatements.unshift(this.changeIndentation( - parameterPropertyAssignments[i], /*changeFirstToken:*/ true, this.options.indentSpaces + constructorIndentationColumn)); - } - - var superStatements: IStatementSyntax[] = ArrayUtilities.select(ArrayUtilities.where(allStatements, - s => Syntax.isSuperInvocationExpressionStatement(s)), s => s.accept(this)); - - normalStatements.unshift.apply(normalStatements, superStatements); - - // TODO: use typecheck to determine if 'this' needs to be captured. - if (this.mustCaptureThisInConstructor(constructorDeclaration)) { - normalStatements.unshift(this.generateThisCaptureStatement(this.options.indentSpaces + constructorIndentationColumn)); - } - - var defaultValueAssignments = ArrayUtilities.select( - EmitterImpl.parameterListDefaultParameters(constructorDeclaration.callSignature.parameterList), - p => this.generateDefaultValueAssignmentStatement(p)); - - for (i = defaultValueAssignments.length - 1; i >= 0; i--) { - normalStatements.unshift(this.changeIndentation( - defaultValueAssignments[i], /*changeFirstToken:*/ true, this.options.indentSpaces + constructorIndentationColumn)); - } - - // function C(...) { ... } - return FunctionDeclarationSyntax.create( - Syntax.token(SyntaxKind.FunctionKeyword).withTrailingTrivia(this.space), - identifier, callSignature) - .withBlock(block.withStatements(Syntax.list(normalStatements))).withLeadingTrivia(constructorDeclaration.leadingTrivia()); - } - - private convertMemberFunctionDeclaration(classDeclaration: ClassDeclarationSyntax, - functionDeclaration: MemberFunctionDeclarationSyntax): ExpressionStatementSyntax { - var _this = this; - if (functionDeclaration.block === null) { - return null; - } - - var classIdentifier = this.withNoTrivia(classDeclaration.identifier); - var functionIdentifier = this.withNoTrivia(functionDeclaration.propertyName); - - var receiver: ILeftHandSideExpressionSyntax = classIdentifier.withLeadingTrivia(functionDeclaration.leadingTrivia()); - - receiver = this.containsToken(functionDeclaration.modifiers, SyntaxKind.StaticKeyword) - ? receiver - : MemberAccessExpressionSyntax.create1(receiver, Syntax.identifierName("prototype")); - - receiver = MemberAccessExpressionSyntax.create1( - receiver, functionIdentifier.withTrailingTrivia(Syntax.spaceTriviaList)); - - var block: BlockSyntax = functionDeclaration.block.accept(this); - var blockTrailingTrivia = block.trailingTrivia(); - - block = block.withTrailingTrivia(Syntax.emptyTriviaList); - - var defaultValueAssignments = ArrayUtilities.select( - EmitterImpl.callSignatureDefaultParameters(functionDeclaration.callSignature), - p => _this.generateDefaultValueAssignmentStatement(p)); - - var functionColumn = this.columnForStartOfToken(functionDeclaration.firstToken()); - - var blockStatements = block.statements.toArray(); - for (var i = defaultValueAssignments.length - 1; i >= 0; i--) { - blockStatements.unshift(this.changeIndentation( - defaultValueAssignments[i], /*changeFirstToken:*/ true, functionColumn + this.options.indentSpaces)); - } - - var callSignatureParameterList = functionDeclaration.callSignature.parameterList.accept(this); - if (!callSignatureParameterList.hasTrailingTrivia()) { - callSignatureParameterList = callSignatureParameterList.withTrailingTrivia(Syntax.spaceTriviaList); - } - - // C.prototype.f = function (p1, p2) { ... }; - return ExpressionStatementSyntax.create1(Syntax.assignmentExpression( - receiver, - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - FunctionExpressionSyntax.create1() - .withCallSignature(CallSignatureSyntax.create(callSignatureParameterList)) - .withBlock(block.withStatements( - Syntax.list(blockStatements))))).withTrailingTrivia(blockTrailingTrivia); - } - - private convertMemberAccessor(memberAccessor: SyntaxNode): SimplePropertyAssignmentSyntax { - var propertyName = memberAccessor.kind() === SyntaxKind.GetAccessor - ? "get" : "set"; - - var parameterList = (memberAccessor).parameterList.accept(this); - if (!parameterList.hasTrailingTrivia()) { - parameterList = parameterList.withTrailingTrivia(Syntax.spaceTriviaList); - } - - return this.factory.simplePropertyAssignment( - Syntax.identifier(propertyName), - Syntax.token(SyntaxKind.ColonToken).withTrailingTrivia(this.space), - FunctionExpressionSyntax.create( - Syntax.token(SyntaxKind.FunctionKeyword), - CallSignatureSyntax.create(parameterList), - (memberAccessor).block.accept(this).withTrailingTrivia(Syntax.emptyTriviaList))) - .withLeadingTrivia(this.indentationTriviaForStartOfNode(memberAccessor)); - } - - private convertMemberAccessorDeclaration(classDeclaration: ClassDeclarationSyntax, - memberAccessor: SyntaxNode, - classElements: IClassElementSyntax[]): IStatementSyntax { - var name = (memberAccessor).propertyName.valueText(); - var i: number; - - // Find all the accessors with that name. - var accessors: any[] = [memberAccessor]; - - for (i = classElements.length - 1; i >= 0; i--) { - var element = classElements[i]; - if (element.kind() === SyntaxKind.GetAccessor || - element.kind() === SyntaxKind.SetAccessor) { - - var otherAccessor = element; - if ((otherAccessor).propertyName.value() === name && - (otherAccessor).block !== null) { - accessors.push(otherAccessor); - classElements.splice(i, 1); - } - } - } - - var arguments = [ - MemberAccessExpressionSyntax.create1( - this.withNoTrivia(classDeclaration.identifier), Syntax.identifierName("prototype")), - Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space), - Syntax.stringLiteralExpression('"' + (memberAccessor).propertyName.text() + '"'), - Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space) - ]; - - var propertyAssignments: ISyntaxNodeOrToken[] = []; - for (i = 0; i < accessors.length; i++) { - var converted = this.convertMemberAccessor(accessors[i]); - converted = this.changeIndentation( - converted, /*changeFirstToken:*/ true, this.options.indentSpaces); - propertyAssignments.push(converted); - propertyAssignments.push( - Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.newLine)); - } - - var accessorColumn = this.columnForStartOfToken(memberAccessor.firstToken()); - var accessorTrivia = this.indentationTrivia(accessorColumn); - var propertyTrivia = this.indentationTrivia(accessorColumn + this.options.indentSpaces); - - propertyAssignments.push(this.factory.simplePropertyAssignment( - Syntax.identifier("enumerable"), - Syntax.token(SyntaxKind.ColonToken).withTrailingTrivia(this.space), - Syntax.trueExpression()).withLeadingTrivia(propertyTrivia)); - propertyAssignments.push(Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.newLine)); - - propertyAssignments.push(this.factory.simplePropertyAssignment( - Syntax.identifier("configurable"), - Syntax.token(SyntaxKind.ColonToken).withTrailingTrivia(this.space), - Syntax.trueExpression()).withLeadingTrivia(propertyTrivia).withTrailingTrivia(this.newLine)); - - arguments.push(this.factory.objectLiteralExpression( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.separatedList(propertyAssignments), - Syntax.token(SyntaxKind.CloseBraceToken).withLeadingTrivia(accessorTrivia))); - - return ExpressionStatementSyntax.create1( - this.factory.invocationExpression( - MemberAccessExpressionSyntax.create1(Syntax.identifierName("Object"), Syntax.identifierName("defineProperty")), - ArgumentListSyntax.create1().withArguments(Syntax.separatedList(arguments)))) - .withLeadingTrivia(memberAccessor.leadingTrivia()).withTrailingTrivia(this.newLine); - } - - private convertClassElements(classDeclaration: ClassDeclarationSyntax): IStatementSyntax[] { - var result: IStatementSyntax[] = []; - - var classElements = classDeclaration.classElements.toArray(); - while (classElements.length > 0) { - var classElement = classElements.shift(); - - var converted: IStatementSyntax = null; - if (classElement.kind() === SyntaxKind.MemberFunctionDeclaration) { - converted = this.convertMemberFunctionDeclaration(classDeclaration, classElement); - } - else if (classElement.kind() === SyntaxKind.MemberVariableDeclaration) { - converted = this.generatePropertyAssignment(classDeclaration, /*static:*/ true, classElement); - } - else if (classElement.kind() === SyntaxKind.GetAccessor || - classElement.kind() === SyntaxKind.SetAccessor) { - converted = this.convertMemberAccessorDeclaration(classDeclaration, classElement, classElements); - } - - if (converted !== null) { - result.push(converted); - } - } - - return result; - } - - public visitClassDeclaration(node: ClassDeclarationSyntax): VariableStatementSyntax { - var identifier = this.withNoTrivia(node.identifier); - - var statements: IStatementSyntax[] = []; - var statementIndentation = this.indentationTrivia(this.options.indentSpaces + this.columnForStartOfToken(node.firstToken())); - - if (node.heritageClauses.childCount() > 0) { - // __extends(C, _super); - statements.push(ExpressionStatementSyntax.create1( - this.factory.invocationExpression( - Syntax.identifierName("__extends"), - ArgumentListSyntax.create1().withArguments(Syntax.separatedList([ - identifier, - Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space), - Syntax.identifierName("_super")])))).withLeadingTrivia(statementIndentation).withTrailingTrivia(this.newLine)); - } - - var constructorDeclaration = ArrayUtilities.firstOrDefault( - node.classElements.toArray(), c => c.kind() === SyntaxKind.ConstructorDeclaration); - - var constructorFunctionDeclaration = constructorDeclaration === null - ? this.createDefaultConstructorDeclaration(node) - : this.convertConstructorDeclaration(node, constructorDeclaration); - - if (constructorFunctionDeclaration !== null) { - statements.push(constructorFunctionDeclaration) - } - - statements.push.apply(statements, this.convertClassElements(node)); - - // return C; - statements.push(this.factory.returnStatement( - Syntax.token(SyntaxKind.ReturnKeyword).withTrailingTrivia(this.space), - identifier, - Syntax.token(SyntaxKind.SemicolonToken)) - .withLeadingTrivia(statementIndentation).withTrailingTrivia(this.newLine)); - - var block = this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.list(statements), - Syntax.token(SyntaxKind.CloseBraceToken).withLeadingTrivia(this.indentationTriviaForStartOfNode(node))); - - var callParameters: ParameterSyntax[] = []; - if (node.heritageClauses.childCount() > 0) { - callParameters.push(ParameterSyntax.create(Syntax.identifier("_super"))); - } - - var callSignature = CallSignatureSyntax.create( - ParameterListSyntax.create1().withParameters( - Syntax.separatedList(callParameters))).withTrailingTrivia(this.space); - - var invocationParameters: ISyntaxNodeOrToken[] = []; - if (node.heritageClauses.childCount() > 0) { - var heritageClause = node.heritageClauses.childAt(0); - if (heritageClause.typeNames.nonSeparatorCount() > 0) { - invocationParameters.push(heritageClause.typeNames.nonSeparatorAt(0) - .withLeadingTrivia(Syntax.emptyTriviaList) - .withTrailingTrivia(Syntax.emptyTriviaList)); - } - } - - // (function(_super) { ... })(BaseType) - var invocationExpression = this.factory.invocationExpression( - ParenthesizedExpressionSyntax.create1(FunctionExpressionSyntax.create1() - .withCallSignature(callSignature) - .withBlock(block)), - ArgumentListSyntax.create1().withArguments( - Syntax.separatedList(invocationParameters))); - - // C = (function(_super) { ... })(BaseType) - var variableDeclarator = VariableDeclaratorSyntax.create( - identifier.withTrailingTrivia(Syntax.spaceTriviaList)).withEqualsValueClause( - this.factory.equalsValueClause( - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - invocationExpression)); - - // var C = (function(_super) { ... })(BaseType); - return VariableStatementSyntax.create1(this.factory.variableDeclaration( - Syntax.token(SyntaxKind.VarKeyword).withTrailingTrivia(this.space), - Syntax.separatedList([variableDeclarator]))) - .withLeadingTrivia(node.leadingTrivia()).withTrailingTrivia(this.newLine); - } - - public visitVariableDeclarator(node: VariableDeclaratorSyntax): VariableDeclaratorSyntax { - var result: VariableDeclaratorSyntax = super.visitVariableDeclarator(node); - if (result.typeAnnotation === null) { - return result; - } - - var newTrailingTrivia = result.propertyName.trailingTrivia().concat(result.typeAnnotation.trailingTrivia()); - - return result.withTypeAnnotation(null) - .withPropertyName(result.propertyName.withTrailingTrivia(newTrailingTrivia)); - } - - public visitCallSignature(node: CallSignatureSyntax): CallSignatureSyntax { - var result: CallSignatureSyntax = super.visitCallSignature(node); - if (result.typeAnnotation === null) { - return result; - } - - var newTrailingTrivia = result.parameterList.trailingTrivia().concat( - result.typeAnnotation.trailingTrivia()); - - return result.withTypeAnnotation(null).withTrailingTrivia(newTrailingTrivia); - } - - public visitCastExpression(node: CastExpressionSyntax): IExpressionSyntax { - var result: CastExpressionSyntax = super.visitCastExpression(node); - - var subExpression = result.expression; - var totalTrivia = result.leadingTrivia().concat(subExpression.leadingTrivia()); - - return subExpression.withLeadingTrivia(totalTrivia); - } - - public visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): InterfaceDeclarationSyntax { - // TODO: transfer trivia if important. - return null; - } - - public visitTypeParameterList(node: TypeParameterListSyntax): TypeParameterListSyntax { - return null; - } - - private generateEnumValueExpression(enumDeclaration: EnumDeclarationSyntax, - enumElement: EnumElementSyntax, - assignDefaultValues: boolean, - index: number): IExpressionSyntax { - if (enumElement.equalsValueClause !== null) { - // Use the value if one is provided. - return enumElement.equalsValueClause.value.accept(this).withTrailingTrivia(Syntax.emptyTriviaList); - } - - // Didn't have a value. Synthesize one if we're doing that, or use the previous item's value - // (plus one). - if (assignDefaultValues) { - return Syntax.numericLiteralExpression(index.toString()); - } - - // Add one to the previous value. - var enumIdentifier = this.withNoTrivia(enumDeclaration.identifier); - var previousEnumElement = enumDeclaration.enumElements.nonSeparatorAt(index - 1); - var variableIdentifier = this.withNoTrivia(previousEnumElement.propertyName); - - var receiver = variableIdentifier.kind() === SyntaxKind.StringLiteral - ? ElementAccessExpressionSyntax.create1(enumIdentifier, variableIdentifier) - : MemberAccessExpressionSyntax.create1(enumIdentifier, variableIdentifier); - - return this.factory.binaryExpression(SyntaxKind.PlusExpression, - receiver.withTrailingTrivia(Syntax.spaceTriviaList), - Syntax.token(SyntaxKind.PlusToken).withTrailingTrivia(this.space), - Syntax.numericLiteralExpression("1")); - } - - private generateEnumFunctionExpression(node: EnumDeclarationSyntax): FunctionExpressionSyntax { - var identifier = this.withNoTrivia(node.identifier); - - var enumColumn = this.columnForStartOfToken(node.firstToken()); - - var statements: IStatementSyntax[] = []; - - var initIndentationColumn = enumColumn + this.options.indentSpaces; - var initIndentationTrivia = this.indentationTrivia(initIndentationColumn); - - if (node.enumElements.nonSeparatorCount() > 0) { - var assignDefaultValues = { value: true }; - for (var i = 0, n = node.enumElements.nonSeparatorCount(); i < n; i++) { - var enumElement = node.enumElements.nonSeparatorAt(i) - var variableIdentifier = this.withNoTrivia(enumElement.propertyName); - - assignDefaultValues.value = assignDefaultValues.value && (enumElement.equalsValueClause === null); - - // "E.Foo = 1" or "E['A B'] = 1" - var left = variableIdentifier.kind() === SyntaxKind.StringLiteral - ? ElementAccessExpressionSyntax.create1(identifier, variableIdentifier) - : MemberAccessExpressionSyntax.create1(identifier, variableIdentifier); - var innerAssign = Syntax.assignmentExpression( - left.withTrailingTrivia(this.space), - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - this.generateEnumValueExpression(node, enumElement, assignDefaultValues.value, i)) - - // E[E.Foo = 1] - var elementAccessExpression = ElementAccessExpressionSyntax.create1(identifier, innerAssign) - .withLeadingTrivia(enumElement.leadingTrivia()).withTrailingTrivia(this.space); - - // E[E.Foo = 1] = "Foo" - var outerAssign = Syntax.assignmentExpression( - elementAccessExpression, - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - variableIdentifier.kind() === SyntaxKind.StringLiteral - ? variableIdentifier - : Syntax.stringLiteralExpression('"' + variableIdentifier.text() + '"')); - - var expressionStatement = ExpressionStatementSyntax.create1( - outerAssign).withTrailingTrivia(this.newLine); - - statements.push(expressionStatement); - } - } - - var block = this.factory.block( - Syntax.token(SyntaxKind.OpenBraceToken).withTrailingTrivia(this.newLine), - Syntax.list(statements), - Syntax.token(SyntaxKind.CloseBraceToken) - .withLeadingTrivia(this.indentationTrivia(enumColumn))); - - var parameterList = ParameterListSyntax.create1().withParameter(ParameterSyntax.create1(identifier)).withTrailingTrivia(this.space); - - return FunctionExpressionSyntax.create1() - .withCallSignature(CallSignatureSyntax.create(parameterList)) - .withBlock(block); - } - - public visitEnumDeclaration(node: EnumDeclarationSyntax): IStatementSyntax[] { - var identifier = this.withNoTrivia(node.identifier); - - // Copy existing leading trivia of the enum declaration to this node. - // var E; - var variableStatement: IStatementSyntax = VariableStatementSyntax.create1(this.factory.variableDeclaration( - Syntax.token(SyntaxKind.VarKeyword).withTrailingTrivia(this.space), - Syntax.separatedList([VariableDeclaratorSyntax.create(identifier)]))) - .withLeadingTrivia(node.leadingTrivia()).withTrailingTrivia(this.newLine); - - // (function(E) { E[E.e1 = ... })(E||(E={})); - var expressionStatement: IStatementSyntax = ExpressionStatementSyntax.create1( - this.factory.invocationExpression( - ParenthesizedExpressionSyntax.create1(this.generateEnumFunctionExpression(node)), - ArgumentListSyntax.create1().withArgument(this.initializedVariable(identifier)))) - .withLeadingTrivia(this.indentationTriviaForStartOfNode(node)) - .withTrailingTrivia(this.newLine); - - return [variableStatement, expressionStatement]; - } - - private convertSuperInvocationExpression(node: InvocationExpressionSyntax): InvocationExpressionSyntax { - var result: InvocationExpressionSyntax = super.visitInvocationExpression(node); - - var expression = MemberAccessExpressionSyntax.create1(Syntax.identifierName("_super"), Syntax.identifierName("call")); - - var arguments = result.argumentList.arguments.toArray(); - if (arguments.length > 0) { - arguments.unshift(Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space)); - } - - arguments.unshift(Syntax.token(SyntaxKind.ThisKeyword)); - - return result.withExpression(expression) - .withArgumentList(result.argumentList.withArguments(Syntax.separatedList(arguments))) - .withLeadingTrivia(result.leadingTrivia()); - } - - private convertSuperMemberAccessInvocationExpression(node: InvocationExpressionSyntax): InvocationExpressionSyntax { - var result: InvocationExpressionSyntax = super.visitInvocationExpression(node); - - var arguments = result.argumentList.arguments.toArray(); - if (arguments.length > 0) { - arguments.unshift(Syntax.token(SyntaxKind.CommaToken).withTrailingTrivia(this.space)); - } - - arguments.unshift(Syntax.token(SyntaxKind.ThisKeyword)); - - var expression = MemberAccessExpressionSyntax.create1(result.expression, Syntax.identifierName("call")); - return result.withExpression(expression) - .withArgumentList(result.argumentList.withArguments(Syntax.separatedList(arguments))); - } - - public visitInvocationExpression(node: InvocationExpressionSyntax): InvocationExpressionSyntax { - if (Syntax.isSuperInvocationExpression(node)) { - return this.convertSuperInvocationExpression(node); - } - else if (Syntax.isSuperMemberAccessInvocationExpression(node)) { - return this.convertSuperMemberAccessInvocationExpression(node); - } - - return super.visitInvocationExpression(node); - } - - public visitVariableStatement(node: VariableStatementSyntax): VariableStatementSyntax { - var result: VariableStatementSyntax = super.visitVariableStatement(node); - - return result.withModifiers(Syntax.emptyList()) - .withLeadingTrivia(result.leadingTrivia()); - } - - public visitMemberAccessExpression(node: MemberAccessExpressionSyntax): MemberAccessExpressionSyntax { - var result: MemberAccessExpressionSyntax = super.visitMemberAccessExpression(node); - - if (Syntax.isSuperMemberAccessExpression(result)) { - return MemberAccessExpressionSyntax.create1( - MemberAccessExpressionSyntax.create1(Syntax.identifierName("_super"), Syntax.identifierName("prototype")), - result.name).withLeadingTrivia(result.leadingTrivia()); - } - - return result; - } - - public visitToken(token: ISyntaxToken): ISyntaxToken { - if (token.kind() === SyntaxKind.IdentifierName) { - return this.visitIdentifierName(token); - } - - if (token.kind() === SyntaxKind.ThisKeyword) { - return this.visitThisKeyword(token); - } - - return token; - } - - public visitThisKeyword(token: ISyntaxToken): ISyntaxToken { - // TODO: use typecheck information to tell if we're accessing 'this' in a lambda and - // should use "_this" instead. - return token; - } - - public visitIdentifierName(token: ISyntaxToken): INameSyntax { - // Check if a name token needs to become fully qualified. - var parent = token.parent; - - // We never qualify in a qualified name. A qualified name only shows up in type - // contexts, and will be removed anyways. - if (parent.kind() === SyntaxKind.QualifiedName) { - return token; - } - - // Same issue for a generic name. - if (parent.kind() === SyntaxKind.GenericType) { - return token; - } - - // We never qualify the right hand side of a dot. - if (parent.kind() === SyntaxKind.MemberAccessExpression && (parent).name === token) { - return token; - } - - // TODO(cyrusn): Implement this when we have type check support. - - // Ok. We're a name token that isn't on the right side of a dot. We may need to be - // qualified. Get the symbol that this token binds to. If it is a module/class and - // has a full name that is larger than this token, then return the full name as a - // member access expression. - return token; - } - - private generateThisCaptureStatement(indentationColumn: number): VariableStatementSyntax { - // var _this = this; - return VariableStatementSyntax.create1(this.factory.variableDeclaration( - Syntax.token(SyntaxKind.VarKeyword).withTrailingTrivia(this.space), - Syntax.separatedList([ - this.factory.variableDeclarator( - Syntax.identifier("_this").withTrailingTrivia(this.space), - null, - this.factory.equalsValueClause( - Syntax.token(SyntaxKind.EqualsToken).withTrailingTrivia(this.space), - Syntax.token(SyntaxKind.ThisKeyword))) - ]))).withLeadingTrivia(this.indentationTrivia(indentationColumn)).withTrailingTrivia(this.newLine); - } - - private mustCaptureThisInConstructor(constructorDeclaration: ConstructorDeclarationSyntax): boolean { - // TODO: use typecheck to answer this question properly. - return false; - } - - private mustCaptureThisInClass(classDeclaratoin: ClassDeclarationSyntax): boolean { - // TODO: use typecheck to answer this question properly. - return false; - } - - private mustCaptureThisInModule(moduleDeclaration: ModuleDeclarationSyntax): boolean { - // TODO: use typecheck to answer this question properly. - return false; - } - - private mustCaptureThisInFunction(functionDeclaration: FunctionDeclarationSyntax): boolean { - // TODO: use typecheck to answer this question properly. - return false; - } - } - - export function emit(input: SourceUnitSyntax, options: FormattingOptions = null): SourceUnitSyntax { - // Make sure no one is passing us a bogus tree. - SyntaxNodeInvariantsChecker.checkInvariants(input); - - // If there's nothing typescript specific about this node, then just return it as is. - if (!input.isTypeScriptSpecific()) { - return input; - } - - // Do the initial conversion. Note: the result at this point may be 'bogus'. For example, - // it make contain the same token instance multiple times in the tree. - var output: SourceUnitSyntax = input.accept(new EmitterImpl(input.syntaxTree(), options)); - - // Make sure we clone any nodes/tokens we used in multiple places in the result. That way - // we don't break the invariant that all tokens in a tree are unique. - output = output.accept(new EnsureTokenUniquenessRewriter()); - - SyntaxNodeInvariantsChecker.checkInvariants(output); - Debug.assert(!output.isTypeScriptSpecific()); - - return output; - } -} \ No newline at end of file diff --git a/src/services/syntax/formattingOptions.ts b/src/services/syntax/formattingOptions.ts deleted file mode 100644 index ddbf7af9301..00000000000 --- a/src/services/syntax/formattingOptions.ts +++ /dev/null @@ -1,13 +0,0 @@ -/// - -module TypeScript { - export class FormattingOptions { - constructor(public useTabs: boolean, - public spacesPerTab: number, - public indentSpaces: number, - public newLineCharacter: string) { - } - - public static defaultOptions = new FormattingOptions(/*useTabs:*/ false, /*spacesPerTab:*/ 4, /*indentSpaces:*/ 4, /*newLineCharacter*/ "\r\n"); - } -} \ No newline at end of file diff --git a/src/services/syntax/incrementalParser.ts b/src/services/syntax/incrementalParser.ts deleted file mode 100644 index 0147cb8e32a..00000000000 --- a/src/services/syntax/incrementalParser.ts +++ /dev/null @@ -1,428 +0,0 @@ -/// - -module TypeScript.IncrementalParser { - interface ISyntaxElementInternal extends ISyntaxElement { - intersectsChange: boolean; - } - - // Parser source used in incremental scenarios. This parser source wraps an old tree, text - // change and new text, and uses all three to provide nodes and tokens to the parser. In - // general, nodes from the old tree are returned as long as they do not intersect with the text - // change. Then, once the text change is reached, tokens from the old tree are returned as - // long as they do not intersect with the text change. Then, the text that is actually changed - // will be scanned using a normal scanner. Then, once the new text is scanned, the source will - // attempt to sync back up with nodes or tokens that started where the new tokens end. Once it - // can do that, then all subsequent data will come from the original tree. - // - // This allows for an enormous amount of tree reuse in common scenarios. Situations that - // prevent this level of reuse include substantially destructive operations like introducing - // "/*" without a "*/" nearby to terminate the comment. - function createParserSource(oldSyntaxTree: SyntaxTree, textChangeRange: TextChangeRange, text: ISimpleText): Parser.IParserSource { - // The underlying source that we will use to scan tokens from any new text, or any tokens - // from the old tree that we decide we can't use for any reason. We will also continue - // scanning tokens from this source until we've decided that we're resynchronized and can - // read in subsequent data from the old tree. - // - // This parser source also keeps track of the absolute position in the text that we're in, - // and any token diagnostics produced. That way we dont' have to track that ourselves. - var scannerParserSource = Scanner.createParserSource(oldSyntaxTree.fileName(), text, oldSyntaxTree.languageVersion()); - - // The cursor we use to navigate through and retrieve nodes and tokens from the old tree. - var oldSourceUnit = oldSyntaxTree.sourceUnit(); - - // Start the cursor pointing at the first element in the source unit (if it exists). - var oldSourceUnitCursor = getSyntaxCursor(); - if (oldSourceUnit.moduleElements.length > 0) { - oldSourceUnitCursor.pushElement(childAt(oldSourceUnit.moduleElements, 0), /*indexInParent:*/ 0); - } - - // In general supporting multiple individual edits is just not that important. So we - // just collapse this all down to a single range to make the code here easier. The only - // time this could be problematic would be if the user made a ton of discontinuous edits. - // For example, doing a column select on a *large* section of a code. If this is a - // problem, we can always update this code to handle multiple changes. - var changeRange = extendToAffectedRange(textChangeRange, oldSourceUnit); - - // The old tree's length, plus whatever length change was caused by the edit - // Had better equal the new text's length! - if (Debug.shouldAssert(AssertionLevel.Aggressive)) { - Debug.assert((fullWidth(oldSourceUnit) - changeRange.span().length() + changeRange.newLength()) === text.length()); - } - - var delta = changeRange.newSpan().length() - changeRange.span().length(); - - // If we added or removed characters during the edit, then we need to go and adjust all - // the nodes after the edit. Those nodes may move forward down (if we inserted chars) - // or they may move backward (if we deleted chars). - // - // Doing this helps us out in two ways. First, it means that any nodes/tokens we want - // to reuse are already at the appropriate position in the new text. That way when we - // reuse them, we don't have to figure out if they need to be adjusted. Second, it makes - // it very easy to determine if we can reuse a node. If the node's position is at where - // we are in the text, then we can reuse it. Otherwise we can't. If hte node's position - // is ahead of us, then we'll need to rescan tokens. If the node's position is behind - // us, then we'll need to skip it or crumble it as appropriate - // - // Also, mark any syntax elements that intersect the changed span. We know, up front, - // that we cannot reuse these elements. - updateTokenPositionsAndMarkElements(oldSourceUnit, - changeRange.span().start(), changeRange.span().end(), delta, /*fullStart:*/ 0); - - function extendToAffectedRange(changeRange: TextChangeRange, sourceUnit: SourceUnitSyntax): TextChangeRange { - // Consider the following code: - // void foo() { /; } - // - // If the text changes with an insertion of / just before the semicolon then we end up with: - // void foo() { //; } - // - // If we were to just use the changeRange a is, then we would not rescan the { token - // (as it does not intersect the actual original change range). Because an edit may - // change the token touching it, we actually need to look back *at least* one token so - // that the prior token sees that change. - var maxLookahead = 1; - - var start = changeRange.span().start(); - - // the first iteration aligns us with the change start. subsequent iteration move us to - // the left by maxLookahead tokens. We only need to do this as long as we're not at the - // start of the tree. - for (var i = 0; start > 0 && i <= maxLookahead; i++) { - var token = findToken(sourceUnit, start); - var position = token.fullStart(); - - start = Math.max(0, position - 1); - } - - var finalSpan = TextSpan.fromBounds(start, changeRange.span().end()); - var finalLength = changeRange.newLength() + (changeRange.span().start() - start); - - return new TextChangeRange(finalSpan, finalLength); - } - - function absolutePosition() { - return scannerParserSource.absolutePosition(); - } - - function diagnostics(): Diagnostic[] { - return scannerParserSource.diagnostics(); - } - - function tryParse(callback: () => T): T { - // Clone our cursor. That way we can restore to that point if the parser needs to rewind. - var savedOldSourceUnitCursor = cloneSyntaxCursor(oldSourceUnitCursor); - - // Now defer to our underlying scanner source to actually invoke the callback. That - // way, if the parser decides to rewind, both the scanner source and this incremental - // source will rewind appropriately. - var result = scannerParserSource.tryParse(callback); - - if (!result) { - // We're rewinding. Reset the cursor to what it was when we got the rewind point. - // Make sure to return our existing cursor to the pool so it can be reused. - returnSyntaxCursor(oldSourceUnitCursor); - oldSourceUnitCursor = savedOldSourceUnitCursor; - } - else { - // We're not rewinding. Return the cloned original cursor back to the pool. - returnSyntaxCursor(savedOldSourceUnitCursor); - } - - return result; - } - - function trySynchronizeCursorToPosition() { - var absolutePos = absolutePosition(); - while (true) { - if (oldSourceUnitCursor.isFinished()) { - // Can't synchronize the cursor to the current position if the cursor is finished. - return false; - } - - // Start with the current node or token the cursor is pointing at. - var currentNodeOrToken = oldSourceUnitCursor.currentNodeOrToken(); - - // Node, move the cursor past any nodes or tokens that intersect the change range - // 1) they are never reusable. - // 2) their positions are wacky as they refer to the original text. - // - // We consider these nodes and tokens essentially invisible to all further parts - // of the incremental algorithm. - if ((currentNodeOrToken).intersectsChange) { - if (isNode(currentNodeOrToken)) { - oldSourceUnitCursor.moveToFirstChild(); - } - else { - oldSourceUnitCursor.moveToNextSibling(); - } - continue; - } - - var currentNodeOrTokenFullStart = fullStart(currentNodeOrToken); - if (currentNodeOrTokenFullStart === absolutePos) { - // We were able to synchronize the cursor to the current position. We can - // read from the cursor - return true; - } - - if (currentNodeOrTokenFullStart > absolutePos) { - // The node or token is ahead of the current position. We'll need to rescan - // tokens until we catch up. - return false; - } - - // The node or is behind the current position we're at in the text. - - var currentNodeOrTokenFullWidth = fullWidth(currentNodeOrToken); - var currentNodeOrTokenFullEnd = currentNodeOrTokenFullStart + currentNodeOrTokenFullWidth; - - // If we're pointing at a node, and that node ends before our current position, we - // can just skip the node entirely. Or, if we're pointing at a token, we won't be - // able to break up that token any further and we should just move to the next - // token. - if (currentNodeOrTokenFullEnd <= absolutePos || isToken(currentNodeOrToken)) { - oldSourceUnitCursor.moveToNextSibling(); - } - else { - // We have a node, and it started before our absolute pos, and ended after our - // pos. Try to crumble this node to see if we'll be able to skip the first node - // or token contained within. - oldSourceUnitCursor.moveToFirstChild(); - } - } - } - - function currentNode(): ISyntaxNode { - if (trySynchronizeCursorToPosition()) { - // Try to read a node. If we can't then our caller will call back in and just try - // to get a token. - var node = tryGetNodeFromOldSourceUnit(); - if (node) { - return node; - } - } - - // Either we were ahead of the old text, or we were pinned. No node can be read here. - return undefined; - } - - function currentToken(): ISyntaxToken { - if (trySynchronizeCursorToPosition()) { - var token = tryGetTokenFromOldSourceUnit(); - if (token) { - return token; - } - } - - // Either we couldn't read from the old source unit, or we weren't able to successfully - // get a token from it. In this case we need to read a token from the underlying text. - return scannerParserSource.currentToken(); - } - - function currentContextualToken(): ISyntaxToken { - // Just delegate to the underlying source to handle - return scannerParserSource.currentContextualToken(); - } - - function tryGetNodeFromOldSourceUnit(): ISyntaxNode { - // Keep moving the cursor down to the first node that is safe to return. A node is - // safe to return if: - // a) it does not contain skipped text. - // b) it does not have any zero width tokens in it. - // c) it does not have a regex token in it. - // d) we are still in the same strict or non-strict state that the node was originally parsed in. - while (true) { - var node = oldSourceUnitCursor.currentNode(); - if (node === undefined) { - // Couldn't even read a node, nothing to return. - return undefined; - } - - if (!TypeScript.isIncrementallyUnusable(node)) { - // Didn't contain anything that would make it unusable. Awesome. This is - // a node we can reuse. - return node; - } - - // We couldn't use currentNode. Try to move to its first child (in case that's a - // node). If it is we can try using that. Otherwise we'll just bail out in the - // next iteration of the loop. - oldSourceUnitCursor.moveToFirstChild(); - } - } - - function canReuseTokenFromOldSourceUnit(token: ISyntaxToken): boolean { - // A token is safe to return if: - // a) it did not intersect the change range. - // b) it does not contain skipped text. - // c) it is not zero width. - // d) it is not a contextual parser token. - // - // NOTE: It is safe to get a token regardless of what our strict context was/is. That's - // because the strict context doesn't change what tokens are scanned, only how the - // parser reacts to them. - // - // NOTE: we don't mark a keyword that was converted to an identifier as 'incrementally - // unusable. This is because we don't want to mark it's containing parent node as - // unusable. i.e. if i have this: "public Foo(string: Type) { }", then that *entire* node - // is reusuable even though "string" was converted to an identifier. However, we still - // need to make sure that if that the parser asks for a *token* we don't return it. - // Converted identifiers can't ever be created by the scanner, and as such, should not - // be returned by this source. - return token && - !(token).intersectsChange && - !token.isIncrementallyUnusable() && - !Scanner.isContextualToken(token); - } - - function tryGetTokenFromOldSourceUnit(): ISyntaxToken { - // get the current token that the cursor is pointing at. - var token = oldSourceUnitCursor.currentToken(); - - return canReuseTokenFromOldSourceUnit(token) ? token : undefined; - } - - function peekToken(n: number): ISyntaxToken { - if (trySynchronizeCursorToPosition()) { - var token = tryPeekTokenFromOldSourceUnit(n); - if (token) { - return token; - } - } - - // Couldn't peek this far in the old tree. Get the token from the new text. - return scannerParserSource.peekToken(n); - } - - function tryPeekTokenFromOldSourceUnit(n: number): ISyntaxToken { - // clone the existing cursor so we can move it forward and then restore ourselves back - // to where we started from. - - var cursorClone = cloneSyntaxCursor(oldSourceUnitCursor); - - var token = tryPeekTokenFromOldSourceUnitWorker(n); - - returnSyntaxCursor(oldSourceUnitCursor); - oldSourceUnitCursor = cursorClone; - - return token; - } - - function tryPeekTokenFromOldSourceUnitWorker(n: number): ISyntaxToken { - // First, make sure the cursor is pointing at a token. - oldSourceUnitCursor.moveToFirstToken(); - - // Now, keep walking forward to successive tokens. - for (var i = 0; i < n; i++) { - var interimToken = oldSourceUnitCursor.currentToken(); - - if (!canReuseTokenFromOldSourceUnit(interimToken)) { - return undefined; - } - - oldSourceUnitCursor.moveToNextSibling(); - } - - var token = oldSourceUnitCursor.currentToken(); - return canReuseTokenFromOldSourceUnit(token) ? token : undefined; - } - - function consumeNodeOrToken(nodeOrToken: ISyntaxNodeOrToken): void { - scannerParserSource.consumeNodeOrToken(nodeOrToken); - } - - return { - text: text, - fileName: oldSyntaxTree.fileName(), - languageVersion: oldSyntaxTree.languageVersion(), - absolutePosition: absolutePosition, - currentNode: currentNode, - currentToken: currentToken, - currentContextualToken: currentContextualToken, - peekToken: peekToken, - consumeNodeOrToken: scannerParserSource.consumeNodeOrToken, - tryParse: tryParse, - diagnostics: diagnostics - }; - } - - function updateTokenPositionsAndMarkElements(element: ISyntaxElement, changeStart: number, changeRangeOldEnd: number, delta: number, fullStart: number): void { - // First, try to skip past any elements that we dont' need to move. We don't need to - // move any elements that don't start after the end of the change range. - if (fullStart > changeRangeOldEnd) { - // Note, we only move elements that are truly after the end of the change range. - // We consider elements that are touching the end of the change range to be unusable. - forceUpdateTokenPositionsForElement(element, delta); - } - else { - // Check if the element intersects the change range. If it does, then it is not - // reusable. Also, we'll need to recurse to see what constituent portions we may - // be able to use. - var fullEnd = fullStart + fullWidth(element); - if (fullEnd >= changeStart) { - (element).intersectsChange = true; - - if (isList(element)) { - var list = element; - for (var i = 0, n = list.length; i < n; i++) { - var child: ISyntaxElement = list[i]; - updateTokenPositionsAndMarkElements(child, changeStart, changeRangeOldEnd, delta, fullStart); - fullStart += fullWidth(child); - } - } - else if (isNode(element)) { - var node = element; - for (var i = 0, n = node.childCount; i < n; i++) { - var child = node.childAt(i); - if (child) { - updateTokenPositionsAndMarkElements(child, changeStart, changeRangeOldEnd, delta, fullStart); - fullStart += fullWidth(child); - } - } - } - } - // else { - // This element ended strictly before the edited range. We don't need to do anything - // with it. - // } - } - } - - function forceUpdateTokenPositionsForElement(element: ISyntaxElement, delta: number) { - // No need to move anything if the delta is 0. - if (delta !== 0) { - if (isList(element)) { - var list = element; - for (var i = 0, n = list.length; i < n; i++) { - forceUpdateTokenPositionForNodeOrToken(list[i], delta); - } - } - else { - forceUpdateTokenPositionForNodeOrToken(element, delta); - } - } - } - - function forceUpdateTokenPosition(token: ISyntaxToken, delta: number) { - token.setFullStart(token.fullStart() + delta); - } - - function forceUpdateTokenPositionForNodeOrToken(nodeOrToken: ISyntaxNodeOrToken, delta: number) { - if (isToken(nodeOrToken)) { - forceUpdateTokenPosition(nodeOrToken, delta); - } - else { - var tokens = getTokens(nodeOrToken); - for (var i = 0, n = tokens.length; i < n; i++) { - forceUpdateTokenPosition(tokens[i], delta); - } - } - } - - export function parse(oldSyntaxTree: SyntaxTree, textChangeRange: TextChangeRange, newText: ISimpleText): SyntaxTree { - if (textChangeRange.isUnchanged()) { - return oldSyntaxTree; - } - - return Parser.parseSource(createParserSource(oldSyntaxTree, textChangeRange, newText), oldSyntaxTree.isDeclaration()); - } -} \ No newline at end of file diff --git a/src/services/syntax/languageVersion.ts b/src/services/syntax/languageVersion.ts deleted file mode 100644 index 0c662a0307c..00000000000 --- a/src/services/syntax/languageVersion.ts +++ /dev/null @@ -1,3 +0,0 @@ -module TypeScript { - -} \ No newline at end of file diff --git a/src/services/syntax/parser.ts b/src/services/syntax/parser.ts deleted file mode 100644 index 537ebd66f06..00000000000 --- a/src/services/syntax/parser.ts +++ /dev/null @@ -1,4916 +0,0 @@ -/// - -module TypeScript.Parser { - // Interface that represents the source that the parser pulls tokens from. Essentially, this - // is the interface that the parser needs an underlying scanner to provide. This allows us to - // separate out "what" the parser does with the tokens it retrieves versus "how" it obtains - // the tokens. i.e. all the logic for parsing language constructs sits in ParserImpl, while - // all the logic for retrieving tokens sits in individual IParserSources. - // - // By separating out this interface, we also make incremental parsing much easier. Instead of - // having the parser directly sit on top of the scanner, we sit it on this abstraction. Then - // in incremental scenarios, we can use the IncrementalParserSource to pull tokens (or even - // full nodes) from the previous tree when possible. Of course, we'll still end up using a - // scanner for new text. But that can all happen inside the source, with none of the logic in - // the parser having to be aware of it. - // - // In general terms, a parser source represents a position within a text. At that position, - // one can ask for the 'currentToken' that the source is pointing at. Then, once the parser - // consumes that token it can ask the source to 'moveToNextToken'. - // - // Additional special abilities include: - // 1) Being able to peek an arbitrary number of tokens ahead efficiently. - // 2) Being able to retrieve fully parsed nodes from the source, not just tokens. This happens - // in incremental scenarios when the source is certain that the node is completley safe to - // reuse. - // 3) Being able to get a 'rewind point' to the current location. This allows the parser to - // speculatively parse as much as it wants, and then reset itself back to that point, - // ensuring that no state changes that occurred after getting the 'rewing point' are - // observable. - // 4) Being able to reinterpret the current token being pointed at as a regular expression - // token. This is necessary as the scanner does not have enough information to correctly - // distinguish "/" or "/=" as divide tokens, versus "/..../" as a regex token. If the - // parser sees a "/" in a place where a divide is not allowed, but a regex would be, then - // it can call into the source and ask if a regex token could be returned instead. The - // sources are smart enough to do that and not be affected by any additional work they may - // have done when they originally scanned that token. - export interface IParserSource { - // The text we are parsing. - text: ISimpleText; - - // the name of the file we're parsing. - fileName: string; - - // The version of the language we're using while parsing. Does not affect the final tree, - // but can affect the diagnostics produced while parsing. - languageVersion: ts.ScriptTarget; - - // The place in the source text that we're currently pointing at. - absolutePosition(): number; - - // The current syntax node the source is pointing at. Only available in incremental settings. - // The source can point at a node if that node doesn't intersect any of the text changes in - // the file, and doesn't contain certain unacceptable constructs. For example, if the node - // contains skipped text, then it will not be reused. - currentNode(): ISyntaxNode; - - // The current token the source is pointing at. - currentToken(): ISyntaxToken; - - // The current token reinterpretted contextually based on where the parser is. If the - // source is on a / or /= token, then it can be reinterpretted as a regex token. If the - // source is on a > token, it may be reinterpretted to: >> >>> >= >>= >>>=. If the - // source is on a }, it will be reinterpretted as a template middle/end token. - currentContextualToken(): ISyntaxToken; - - // Called to move the source to the next node or token once the parser has consumed the - // current one. - consumeNodeOrToken(node: ISyntaxNodeOrToken): void; - - // Peek any number of tokens ahead from the current location in source. peekToken(0) is - // equivalent to 'currentToken', peekToken(1) is the next token, peekToken(2) the token - // after that, etc. If the caller peeks past the end of the text, then EndOfFile tokens - // will be returned. - peekToken(n: number): ISyntaxToken; - - // Used by the parser to tell the source that it is currently speculatively parsing. The - // source will save its current state and then invoke the passed in callback. If the call - // back returned 'undefined', then the source will rollback to the exact state it was in - // prior to calling the callback. If the callback returns an actual node then the source - // will stay in its current state and then return that node back out of this function. - tryParse(callback: () => T): T; - - // Called to move the source to the next node or token once the parser has consumed the - // current one. - consumeNodeOrToken(node: ISyntaxNodeOrToken): void; - - // Retrieves the diagnostics generated while the source was producing nodes or tokens. - // Should generally only be called after the document has been completely parsed. - diagnostics(): Diagnostic[]; - } - - // Contains the actual logic to parse typescript/javascript. This is the code that generally - // represents the logic necessary to handle all the language grammar constructs. When the - // language changes, this should generally only be the place necessary to fix up. - function createParseSyntaxTree(): (source: IParserSource, isDeclaration: boolean) => SyntaxTree { - // Underlying source where we pull nodes and tokens from. - var source: IParserSource; - - // TODO: do we need to store/restore this when speculative parsing? I don't think so. The - // parsing logic already handles storing/restoring this and should work properly even if we're - // speculative parsing. - var listParsingState: ListParsingState = 0; - - // Whether or not we are in strict parsing mode. All that changes in strict parsing mode is - // that some tokens that would be considered identifiers may be considered keywords. When - // rewinding, we need to store and restore this as the mode may have changed. - // - // TODO: do we need to store/restore this when speculative parsing? I don't think so. The - // parsing logic already handles storing/restoring this and should work properly even if we're - // speculative parsing. - // - // When adding more parser context flags, consider which is the more common case that the - // flag will be in. This should be hte 'false' state for that flag. The reason for this is - // that we don't store data in our nodes unless the value is in the *non-default* state. So, - // for example, more often than code 'allows-in' (or doesn't 'disallow-in'). We opt for - // 'disallow-in' set to 'false'. Otherwise, if we had 'allowsIn' set to 'true', then almost - // all nodes would need extra state on them to store this info. - // - // Note: 'allowIn' and 'allowYield' track 1:1 with the [in] and [yield] concepts in the ES6 - // grammar specification. - // - // An important thing about these context concepts. By default they are effectively inherited - // while parsing through every grammar production. i.e. if you don't change them, then when - // you parse a sub-production, it will have the same context values as hte parent production. - // This is great most of the time. After all, consider all the 'expression' grammar productions - // and how nearly all of them pass along the 'in' and 'yield' context values: - // - // EqualityExpression[In, Yield] : - // RelationalExpression[?In, ?Yield] - // EqualityExpression[?In, ?Yield] == RelationalExpression[?In, ?Yield] - // EqualityExpression[?In, ?Yield] != RelationalExpression[?In, ?Yield] - // EqualityExpression[?In, ?Yield] === RelationalExpression[?In, ?Yield] - // EqualityExpression[?In, ?Yield] !== RelationalExpression[?In, ?Yield] - // - // Where you have to be careful is then understanding what the points are in the grammar - // where the values are *not* passed along. For example: - // - // SingleNameBinding[Yield,GeneratorParameter] - // [+GeneratorParameter]BindingIdentifier[Yield] Initializer[In]opt - // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt - // - // Here this is saying that if the GeneratorParameter context flag is set, that we should - // explicitly set the 'yield' context flag to true before calling into the 'BindingIdentifier' - // and we should explicitly unset the 'yield' context flag before calling into the 'Initializer'. - // production. Conversely, if the GeneratorParameter context flag is not set, then we - // should leave the 'yield' context flag alone. - // - // Getting this all correct is tricky and requires careful reading of the grammar to - // understand when these values should be changed versus when they should be inherited. - var contextFlags: ParserContextFlags = 0; - - // Current state of the parser. If we need to rewind we will store and reset these values as - // appropriate. - - // Diagnostics created when parsing invalid code. Any diagnosics created when speculative - // parsing need to removed when rewinding. To do this we store the count of diagnostics when - // we start speculative parsing. And if we rewind, we restore this to the same count that we - // started at. - var diagnostics: Diagnostic[] = []; - - // Any tokens we decided to skip during list (when we can't find any parse function that - // will accept the token). These tokens will be attached to the next token we actually - // consume. If there are any skipped tokens at the end of the file, they will be attached - // to the EndOfFile token. - var skippedTokens: ISyntaxToken[] = undefined; - - function setContextFlag(val: boolean, flag: ParserContextFlags) { - if (val) { - contextFlags |= flag; - } - else { - contextFlags &= ~flag; - } - } - - function setStrictModeContext(val: boolean) { - setContextFlag(val, ParserContextFlags.StrictMode); - } - - function setDisallowInContext(val: boolean) { - setContextFlag(val, ParserContextFlags.DisallowIn); - } - - function setYieldContext(val: boolean) { - setContextFlag(val, ParserContextFlags.Yield); - } - - function setGeneratorParameterContext(val: boolean) { - setContextFlag(val, ParserContextFlags.GeneratorParameter); - } - - function setAsyncContext(val: boolean) { - setContextFlag(val, ParserContextFlags.Async); - } - - function inStrictModeContext() { - return (contextFlags & ParserContextFlags.StrictMode) !== 0; - } - - function inDisallowInContext() { - return (contextFlags & ParserContextFlags.DisallowIn) !== 0; - } - - function inYieldContext() { - return (contextFlags & ParserContextFlags.Yield) !== 0; - } - - function inGeneratorParameterContext() { - return (contextFlags & ParserContextFlags.GeneratorParameter) !== 0; - } - - function inAsyncContext() { - return (contextFlags & ParserContextFlags.Async) !== 0; - } - - function allowInAnd(func: () => T): T { - if (inDisallowInContext()) { - setDisallowInContext(false); - var result = func(); - setDisallowInContext(true); - return result; - } - - // no need to do anything special if 'in' is already allowed. - return func(); - } - - function disallowInAnd(func: () => T): T { - if (inDisallowInContext()) { - // no need to do anything special if 'in' is already disallowed. - return func(); - } - - setDisallowInContext(true); - var result = func(); - setDisallowInContext(false); - return result; - } - - function doInsideYieldContext(func: () => T): T { - if (inYieldContext()) { - // no need to do anything special if we're already in the [Yield] context. - return func(); - } - - setYieldContext(true); - var result = func(); - setYieldContext(false); - return result; - } - - function doOutsideYieldContext(func: () => T): T { - if (inYieldContext()) { - setYieldContext(false); - var result = func(); - setYieldContext(true); - return result; - } - - // no need to do anything special if we're not in the [Yield] context. - return func(); - } - - function doInsideAsyncContext(func: () => T): T { - if (inAsyncContext()) { - // no need to do anything special if we're already in the [Async] context. - return func(); - } - - setAsyncContext(true); - var result = func(); - setAsyncContext(false); - return result; - } - - function doOutsideAsyncContext(func: () => T): T { - if (inAsyncContext()) { - setAsyncContext(false); - var result = func(); - setAsyncContext(true); - return result; - } - - // no need to do anything special if we're not in the [Async] context. - return func(); - } - - function parseSyntaxTree(_source: IParserSource, isDeclaration: boolean): SyntaxTree { - // First, set up our state. - source = _source; - - // Now actually parse the tree. - var result = parseSyntaxTreeWorker(isDeclaration); - - // Now, clear out our state so that our singleton parser doesn't keep things alive. - diagnostics = []; - contextFlags = 0; - source = undefined; - - return result; - } - - function parseSyntaxTreeWorker(isDeclaration: boolean): SyntaxTree { - var sourceUnit = parseSourceUnit(); - setupParentsForSyntaxNodeOrToken(sourceUnit); - - var allDiagnostics = source.diagnostics().concat(diagnostics); - allDiagnostics.sort((a: Diagnostic, b: Diagnostic) => a.start() - b.start()); - - return new SyntaxTree(sourceUnit, isDeclaration, allDiagnostics, source.fileName, source.text, source.languageVersion); - } - - function setupParentsForElement(element: ISyntaxElement, parent: ISyntaxElement) { - if (element) { - if (element.parent === parent) { - return; - } - element.parent = parent; - - if (isList(element)) { - setupParentsForList(element); - } - else { - setupParentsForSyntaxNodeOrToken(element); - } - } - } - - function setupParentsForList(list: ISyntaxNodeOrToken[]) { - for (var i = 0, n = list.length; i < n; i++) { - setupParentsForElement(list[i], list); - } - } - - function setupParentsForSyntaxNodeOrToken(nodeOrToken: ISyntaxNodeOrToken) { - for (var i = 0, n = nodeOrToken.childCount; i < n; i++) { - setupParentsForElement(nodeOrToken.childAt(i), nodeOrToken); - } - } - - function tryParse(callback: () => T): T { - // See the comments in IParserRewindPoint for the explanation on why we need to store - // this data, and what it is used for. - var savedDiagnosticsCount = diagnostics.length; - var savedSkippedTokens = skippedTokens ? skippedTokens.slice(0) : undefined; - - var result = source.tryParse(callback); - - if (!result) { - diagnostics.length = savedDiagnosticsCount; - skippedTokens = savedSkippedTokens; - } - - return result; - } - - function currentToken(): ISyntaxToken { - return source.currentToken(); - } - - function currentContextualToken(): ISyntaxToken { - // We're mutating the source here. We are potentially overwriting the original token we - // scanned with a regex token. So we have to clear our state. - return source.currentContextualToken(); - } - - function peekToken(n: number): ISyntaxToken { - return source.peekToken(n); - } - - function skipToken(token: ISyntaxToken): void { - skippedTokens = skippedTokens || []; - skippedTokens.push(token); - - // directly tell the source to just consume the token we're skipping. i.e. do not - // call 'consumeToken'. Doing so would attempt to add any previous skipped tokens - // to this token we're skipping. We don't want to do that. Instead, we want to add - // all the skipped tokens when we finally eat the next good token. - source.consumeNodeOrToken(token) - } - - function consumeToken(token: ISyntaxToken): ISyntaxToken { - // Debug.assert(token.fullWidth() > 0 || token.kind === SyntaxKind.EndOfFileToken); - - // First, tell our source that the token has been consumed. - source.consumeNodeOrToken(token); - - // Now, if we had any skipped tokens, we want to add them to the start of this token - // we're consuming. - if (skippedTokens) { - token = addSkippedTokensBeforeToken(token, skippedTokens); - skippedTokens = undefined; - } - - return token; - } - - function addSkippedTokensBeforeToken(token: ISyntaxToken, skippedTokens: ISyntaxToken[]): ISyntaxToken { - //Debug.assert(token.fullWidth() > 0 || token.kind === SyntaxKind.EndOfFileToken); - //Debug.assert(skippedTokens.length > 0); - - var leadingTrivia: ISyntaxTrivia[] = []; - for (var i = 0, n = skippedTokens.length; i < n; i++) { - var skippedToken = skippedTokens[i]; - addSkippedTokenToTriviaArray(leadingTrivia, skippedToken); - } - - addTriviaTo(token.leadingTrivia(source.text), leadingTrivia); - - var updatedToken = Syntax.withLeadingTrivia(token, Syntax.triviaList(leadingTrivia), source.text); - - // We've prepending this token with new leading trivia. This means the full start of - // the token is not where the scanner originally thought it was, but is instead at the - // start of the first skipped token. - updatedToken.setFullStart(skippedTokens[0].fullStart()); - - return updatedToken; - } - - function addSkippedTokenToTriviaArray(array: ISyntaxTrivia[], skippedToken: ISyntaxToken): void { - // Debug.assert(skippedToken.text().length > 0); - - // first, add the leading trivia of the skipped token to the array - addTriviaTo(skippedToken.leadingTrivia(source.text), array); - - // now, add the text of the token as skipped text to the trivia array. - var trimmedToken = Syntax.withLeadingTrivia(skippedToken, Syntax.emptyTriviaList, source.text); - - // Because we removed the leading trivia from the skipped token, the full start of the - // trimmed token is the start of the skipped token. - trimmedToken.setFullStart(start(skippedToken, source.text)); - - array.push(Syntax.skippedTokenTrivia(trimmedToken, source.text)); - } - - function addTriviaTo(list: ISyntaxTriviaList, array: ISyntaxTrivia[]): void { - for (var i = 0, n = list.count(); i < n; i++) { - array.push(list.syntaxTriviaAt(i)); - } - } - - function consumeNode(node: ISyntaxNode): ISyntaxNode { - Debug.assert(skippedTokens === undefined); - source.consumeNodeOrToken(node); - return node; - } - - //this method is called very frequently - //we should keep it simple so that it can be inlined. - function eatToken(kind: SyntaxKind): ISyntaxToken { - var token = currentToken(); - if (token.kind === kind) { - return consumeToken(token); - } - - //slow part of EatToken(SyntaxKind kind) - return createMissingToken(kind, token); - } - - // Eats the token if it is there. Otherwise does nothing. Will not report errors. - function tryEatToken(kind: SyntaxKind): ISyntaxToken { - var _currentToken = currentToken(); - if (_currentToken.kind === kind) { - return consumeToken(_currentToken); - } - - return undefined; - } - - // An identifier is basically any word, unless it is a reserved keyword. so 'foo' is an - // identifier and 'return' is not. Note: a word may or may not be an identifier depending - // on the state of the parser. For example, 'yield' is an identifier *unless* the parser - // is in strict mode. - function isIdentifier(token: ISyntaxToken): boolean { - var tokenKind = token.kind; - - if (tokenKind === SyntaxKind.IdentifierName) { - return true; - } - - // If we have a 'yield' keyword, and we're in the [yield] context, then 'yield' is - // considered a keyword and is not an identifier. - if (tokenKind === SyntaxKind.YieldKeyword && inYieldContext()) { - return false; - } - - // If we have an 'await' keyword, and we're in the [async] context, then 'await' is - // considered a keyword and is not an identifier. - if (tokenKind === SyntaxKind.AwaitKeyword && inAsyncContext()) { - return false; - } - - // Keywords are only identifiers if they're FutureReservedStrictWords and we're in - // strict mode. *Or* if it's a typescript 'keyword'. - if (tokenKind >= SyntaxKind.FirstFutureReservedStrictKeyword) { - if (tokenKind <= SyntaxKind.LastFutureReservedStrictKeyword) { - // Could be a keyword or identifier. It's an identifier if we're not in strict - // mode. - return !inStrictModeContext(); - } - - // If it's typescript keyword, then it's actually a javascript identifier. - return tokenKind <= SyntaxKind.LastTypeScriptKeyword; - } - - // Anything else is not an identifier. - return false; - } - - // This method should be called when the grammar calls for an *IdentifierName* and not an - // *Identifier*. - function eatIdentifierNameToken(): ISyntaxToken { - var token = currentToken(); - - // If we have an identifier name, then consume and return it. - var tokenKind = token.kind; - if (tokenKind === SyntaxKind.IdentifierName) { - return consumeToken(token); - } - - // If we have a keyword, then it can be used as an identifier name. However, we need - // to convert it to an identifier so that no later parts of the systems see it as a - // keyword. - if (SyntaxFacts.isAnyKeyword(tokenKind)) { - return TypeScript.Syntax.convertKeywordToIdentifier(consumeToken(token)); - } - - return createMissingToken(SyntaxKind.IdentifierName, token); - } - - function eatOptionalIdentifierToken(): ISyntaxToken { - return isIdentifier(currentToken()) ? eatIdentifierToken() : undefined; - } - - // This method should be called when the grammar calls for an *Identifier* and not an - // *IdentifierName*. - function eatIdentifierToken(diagnosticCode?: string): ISyntaxToken { - var token = currentToken(); - if (isIdentifier(token)) { - if (token.kind === SyntaxKind.IdentifierName) { - return consumeToken(token); - } - - return TypeScript.Syntax.convertKeywordToIdentifier(consumeToken(token)); - } - - return createMissingToken(SyntaxKind.IdentifierName, token, diagnosticCode); - } - - function canEatAutomaticSemicolon(): boolean { - var token = currentToken(); - - // An automatic semicolon is always allowed if we're at the end of the file. - var tokenKind = token.kind; - if (tokenKind === SyntaxKind.EndOfFileToken) { - return true; - } - - // Or if the next token is a close brace (regardless of which line it is on). - if (tokenKind === SyntaxKind.CloseBraceToken) { - return true; - } - - // It is also allowed if there is a newline between the last token seen and the next one. - if (token.hasLeadingNewLine()) { - return true; - } - - return false; - } - - function canEatExplicitOrAutomaticSemicolon(): boolean { - var token = currentToken(); - - if (token.kind === SyntaxKind.SemicolonToken) { - return true; - } - - return canEatAutomaticSemicolon(); - } - - function eatExplicitOrAutomaticSemicolon(): ISyntaxToken { - var token = currentToken(); - - // If we see a semicolon, then we can definitely eat it. - if (token.kind === SyntaxKind.SemicolonToken) { - return consumeToken(token); - } - - // Check if an automatic semicolon could go here. If so, then there's no problem and - // we can proceed without error. Return 'undefined' as there's no actual token for this - // position. - if (canEatAutomaticSemicolon()) { - return undefined; - } - - // No semicolon could be consumed here at all. Just call the standard eating function - // so we get the token and the error for it. - return eatToken(SyntaxKind.SemicolonToken); - } - - function createEmptyToken(kind: SyntaxKind): ISyntaxToken { - // The position of the empty token we're creating is not necessarily the position that - // the parser is at now. This is because we may have seen some existing missing tokens - // before finally deciding we needed a missing token. For example, if you have: - // - // Foo(a, # - // - // We will need to create a empty token for the missing ")". However, we will have - // skipped the "#" token, and thus will be right after the "#". Because the "#" token - // will actually become *skipped* trivia on the *next* token we see, the close paren - // should not be considered to be after #, and should instead be after the ",". - // - // So, if we have any skipped tokens, then the position of the empty token should be - // the position of the first skipped token we have. Otherwise it's just at the position - // of the parser. - var fullStart = skippedTokens ? skippedTokens[0].fullStart() : source.absolutePosition(); - return Syntax.emptyToken(kind, fullStart); - } - - function createMissingToken(expectedKind: SyntaxKind, actual: ISyntaxToken, diagnosticCode?: string, args?: any[]): ISyntaxToken { - var diagnostic = getExpectedTokenDiagnostic(expectedKind, actual, diagnosticCode, args); - addDiagnostic(diagnostic); - - // The missing token will be at the full start of the current token. That way empty tokens - // will always be between real tokens and not inside an actual token. - return createEmptyToken(expectedKind); - } - - function getExpectedTokenDiagnostic(expectedKind: SyntaxKind, actual?: ISyntaxToken, diagnosticCode?: string, args?: any[]): Diagnostic { - var token = currentToken(); - - // If a specialized diagnostic message was provided, just use that. - if (!diagnosticCode) { - // They wanted something specific, just report that that token was missing. - if (SyntaxFacts.isAnyKeyword(expectedKind) || SyntaxFacts.isAnyPunctuation(expectedKind)) { - diagnosticCode = DiagnosticCode._0_expected; - args = [SyntaxFacts.getText(expectedKind)]; - } - else { - // They wanted an identifier. - - // If the user supplied a keyword, give them a specialized message. - if (actual && SyntaxFacts.isAnyKeyword(actual.kind)) { - diagnosticCode = DiagnosticCode.Identifier_expected_0_is_a_keyword; - args = [SyntaxFacts.getText(actual.kind)]; - } - else { - // Otherwise just report that an identifier was expected. - diagnosticCode = DiagnosticCode.Identifier_expected; - } - } - } - - return new Diagnostic(source.fileName, source.text.lineMap(), start(token, source.text), width(token), diagnosticCode, args); - } - - function getBinaryExpressionPrecedence(tokenKind: SyntaxKind): BinaryExpressionPrecedence { - switch (tokenKind) { - case SyntaxKind.BarBarToken: return BinaryExpressionPrecedence.LogicalOrExpressionPrecedence; - case SyntaxKind.AmpersandAmpersandToken: return BinaryExpressionPrecedence.LogicalAndExpressionPrecedence; - case SyntaxKind.BarToken: return BinaryExpressionPrecedence.BitwiseOrExpressionPrecedence; - case SyntaxKind.CaretToken: return BinaryExpressionPrecedence.BitwiseExclusiveOrExpressionPrecedence; - case SyntaxKind.AmpersandToken: return BinaryExpressionPrecedence.BitwiseAndExpressionPrecedence; - case SyntaxKind.EqualsEqualsToken: - case SyntaxKind.ExclamationEqualsToken: - case SyntaxKind.EqualsEqualsEqualsToken: - case SyntaxKind.ExclamationEqualsEqualsToken: - return BinaryExpressionPrecedence.EqualityExpressionPrecedence; - case SyntaxKind.LessThanToken: - case SyntaxKind.GreaterThanToken: - case SyntaxKind.LessThanEqualsToken: - case SyntaxKind.GreaterThanEqualsToken: - case SyntaxKind.InstanceOfKeyword: - case SyntaxKind.InKeyword: - return BinaryExpressionPrecedence.RelationalExpressionPrecedence; - case SyntaxKind.LessThanLessThanToken: - case SyntaxKind.GreaterThanGreaterThanToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: - return BinaryExpressionPrecedence.ShiftExpressionPrecdence; - case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: - return BinaryExpressionPrecedence.AdditiveExpressionPrecedence; - case SyntaxKind.AsteriskToken: - case SyntaxKind.SlashToken: - case SyntaxKind.PercentToken: - return BinaryExpressionPrecedence.MultiplicativeExpressionPrecedence; - } - - throw Errors.invalidOperation(); - } - - function parseSourceUnit(): SourceUnitSyntax { - // Note: saving and restoring the 'isInStrictMode' state is not really necessary here - // (as it will never be read afterwards). However, for symmetry with the rest of the - // parsing code, we do the same here. - var savedIsInStrictMode = inStrictModeContext() - - // Note: any skipped tokens produced after the end of all the module elements will be - // added as skipped trivia to the start of the EOF token. - var moduleElements = parseSyntaxList(ListParsingState.SourceUnit_ModuleElements, updateStrictModeState); - - setStrictModeContext(savedIsInStrictMode); - - var sourceUnit = new SourceUnitSyntax(contextFlags, moduleElements, consumeToken(currentToken())); - - if (Debug.shouldAssert(AssertionLevel.Aggressive)) { - Debug.assert(fullWidth(sourceUnit) === source.text.length()); - - if (Debug.shouldAssert(AssertionLevel.VeryAggressive)) { - Debug.assert(fullText(sourceUnit) === source.text.substr(0, source.text.length())); - } - } - - return sourceUnit; - } - - function isDirectivePrologueElement(node: ISyntaxNodeOrToken): boolean { - return node.kind === SyntaxKind.ExpressionStatement && - (node).expression.kind === SyntaxKind.StringLiteral; - } - - function updateStrictModeState(items: any[]): void { - if (!inStrictModeContext()) { - // Check if all the items are directive prologue elements. - for (var i = 0, n = items.length; i < n; i++) { - if (!isDirectivePrologueElement(items[i])) { - return; - } - } - - setStrictModeContext(SyntaxFacts.isUseStrictDirective(items[items.length - 1])); - } - } - - function isModuleElement(inErrorRecovery: boolean): boolean { - var _modifierCount = modifierCount(); - return isInterfaceEnumClassModuleImportExportOrTypeAlias(_modifierCount) || - isStatement(_modifierCount, inErrorRecovery); - } - - function tryParseModuleElement(inErrorRecovery: boolean): IModuleElementSyntax { - var _currentToken = currentToken(); - var _modifierCount = modifierCount(); - - if (_modifierCount) { - // if we have modifiers, then these are definitely TS constructs and we can - // immediately start parsing them. - switch (peekToken(_modifierCount).kind) { - case SyntaxKind.ImportKeyword: return parseImportDeclaration(); - case SyntaxKind.ModuleKeyword: return parseModuleDeclaration(); - case SyntaxKind.InterfaceKeyword: return parseInterfaceDeclaration(); - case SyntaxKind.ClassKeyword: return parseClassDeclaration(); - case SyntaxKind.EnumKeyword: return parseEnumDeclaration(); - case SyntaxKind.ExportKeyword: return parseExportAssignment(); - case SyntaxKind.TypeKeyword: return parseTypeAlias(); - } - } - - // No modifiers. If we see 'class, enum, import and export' we could technically - // aggressively consume them as they can't start another construct. However, it's - // not uncommon in error recovery to run into a situation where we see those keywords, - // but the code was using it as the name of an object property. To avoid overzealously - // consuming these, we only parse them out if we can see enough context to 'prove' that - // they really do start the module element - var nextToken = peekToken(1); - var currentTokenKind = _currentToken.kind; - switch (currentTokenKind) { - case SyntaxKind.ModuleKeyword: - if (isIdentifier(nextToken) || nextToken.kind === SyntaxKind.StringLiteral) { - return parseModuleDeclaration(); - } - break; - - case SyntaxKind.ImportKeyword: - if (isIdentifier(nextToken)) { - return parseImportDeclaration(); - } - break; - - case SyntaxKind.ClassKeyword: - if (isIdentifier(nextToken)) { - return parseClassDeclaration(); - } - break; - - case SyntaxKind.EnumKeyword: - if (isIdentifier(nextToken)) { - return parseEnumDeclaration(); - } - break; - - case SyntaxKind.InterfaceKeyword: - if (isIdentifier(nextToken)) { - return parseInterfaceDeclaration(); - } - break; - - case SyntaxKind.TypeKeyword: - if (isIdentifier(nextToken)) { - return parseTypeAlias(); - } - break; - - case SyntaxKind.ExportKeyword: - // 'export' could be a modifier on a statement (like export var ...). So we - // only want to parse out an export assignment here if we actually see the equals. - if (nextToken.kind === SyntaxKind.EqualsToken) { - return parseExportAssignment(); - } - break; - } - - return tryParseStatementWorker(_currentToken, currentTokenKind, _modifierCount, inErrorRecovery); - } - - function parseImportDeclaration(): ImportDeclarationSyntax { - return new ImportDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.ImportKeyword), - eatIdentifierToken(), - eatToken(SyntaxKind.EqualsToken), - parseModuleReference(), - eatExplicitOrAutomaticSemicolon()); - } - - function parseExportAssignment(): ExportAssignmentSyntax { - return new ExportAssignmentSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.ExportKeyword), - eatToken(SyntaxKind.EqualsToken), - eatIdentifierToken(), - eatExplicitOrAutomaticSemicolon()); - } - - function parseModuleReference(): IModuleReferenceSyntax { - return isExternalModuleReference() ? parseExternalModuleReference() : parseModuleNameModuleReference(); - } - - function isExternalModuleReference(): boolean { - return currentToken().kind === SyntaxKind.RequireKeyword && - peekToken(1).kind === SyntaxKind.OpenParenToken; - } - - function parseExternalModuleReference(): ExternalModuleReferenceSyntax { - return new ExternalModuleReferenceSyntax(contextFlags, - eatToken(SyntaxKind.RequireKeyword), - eatToken(SyntaxKind.OpenParenToken), - parseExpression(), - eatToken(SyntaxKind.CloseParenToken)); - } - - function parseModuleNameModuleReference(): ModuleNameModuleReferenceSyntax { - return new ModuleNameModuleReferenceSyntax(contextFlags, parseName(/*allowIdentifierNames:*/ false)); - } - - function parseName(allowIdentifierName: boolean): INameSyntax { - return tryParseName(allowIdentifierName) || eatIdentifierToken(); - } - - function eatRightSideOfDot(allowIdentifierNames: boolean): ISyntaxToken { - var _currentToken = currentToken(); - - // Technically a keyword is valid here as all keywords are identifier names. - // However, often we'll encounter this in error situations when the keyword - // is actually starting another valid construct. - // - // So, we check for the following specific case: - // - // name. - // keyword identifierNameOrKeyword - // - // Note: the newlines are important here. For example, if that above code - // were rewritten into: - // - // name.keyword - // identifierNameOrKeyword - // - // Then we would consider it valid. That's because ASI would take effect and - // the code would be implicitly: "name.keyword; identifierNameOrKeyword". - // In the first case though, ASI will not take effect because there is not a - // line terminator after the keyword. - if (SyntaxFacts.isAnyKeyword(_currentToken.kind) && - _currentToken.hasLeadingNewLine()) { - - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && - SyntaxFacts.isIdentifierNameOrAnyKeyword(token1)) { - - return createMissingToken(SyntaxKind.IdentifierName, _currentToken); - } - } - - return allowIdentifierNames ? eatIdentifierNameToken() : eatIdentifierToken(); - } - - function tryParseName(allowIdentifierNames: boolean): INameSyntax { - var token0 = currentToken(); - var shouldContinue = isIdentifier(token0); - if (!shouldContinue) { - return undefined; - } - - // Call eatIdentifierName to convert the token to an identifier if it is as keyword. - var current: INameSyntax = eatIdentifierToken(); - - while (shouldContinue && currentToken().kind === SyntaxKind.DotToken) { - var dotToken = consumeToken(currentToken()); - var identifierName = eatRightSideOfDot(allowIdentifierNames); - - current = new QualifiedNameSyntax(contextFlags, current, dotToken, identifierName); - shouldContinue = identifierName.fullWidth() > 0; - } - - return current; - } - - function parseEnumDeclaration(): EnumDeclarationSyntax { - var openBraceToken: ISyntaxToken; - - return new EnumDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.EnumKeyword), - eatIdentifierToken(), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSeparatedSyntaxList(ListParsingState.EnumDeclaration_EnumElements) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function isEnumElement(inErrorRecovery: boolean): boolean { - return isPropertyName(/*peekToken:*/ 0, inErrorRecovery); - } - - function tryParseEnumElementEqualsValueClause(): EqualsValueClauseSyntax { - return isEqualsValueClause(/*inParameter*/ false) ? allowInAnd(parseEqualsValueClause) : undefined; - } - - function tryParseEnumElement(inErrorRecovery: boolean): EnumElementSyntax { - if (!isPropertyName(/*peekToken:*/ 0, inErrorRecovery)) { - return undefined; - } - - return new EnumElementSyntax(contextFlags, parsePropertyName(), tryParseEnumElementEqualsValueClause()); - } - - function isModifierKind(kind: SyntaxKind): boolean { - switch (kind) { - case SyntaxKind.ExportKeyword: - case SyntaxKind.PublicKeyword: - case SyntaxKind.PrivateKeyword: - case SyntaxKind.ProtectedKeyword: - case SyntaxKind.StaticKeyword: - case SyntaxKind.DeclareKeyword: - case SyntaxKind.AsyncKeyword: - case SyntaxKind.ConstKeyword: - return true; - } - - return false; - } - - function isModifier(token: ISyntaxToken, peekIndex: number): boolean { - if (isModifierKind(token.kind)) { - // Because modifiers are also identifiers, we only want to consider something to - // be truly a modifier if the thing following it is something that can be modified. - var nextToken = peekToken(peekIndex + 1); - - if (token.kind === SyntaxKind.AsyncKeyword) { - // In order for async to be modifier, the next token must be on the same line. - if (nextToken.hasLeadingNewLine()) { - return false; - } - } - - if (token.kind === SyntaxKind.ConstKeyword) { - // In order for 'const' to be a modifier, the next token must be 'enum'. - return nextToken.kind === SyntaxKind.EnumKeyword; - } - - var nextTokenKind = nextToken.kind; - switch (nextTokenKind) { - // public foo' - // 'public' is a modifier. - case SyntaxKind.IdentifierName: - - // public [a: number]: string - // 'public' is a modifier here. - case SyntaxKind.OpenBracketToken: - - // public 0 - // 'public' is def a modifier here. - case SyntaxKind.NumericLiteral: - - // public "0" - // 'public' is def a modifier here. - case SyntaxKind.StringLiteral: - - // public `0` - // 'public' is def a modifier here. - case SyntaxKind.NoSubstitutionTemplateToken: - - // public * foo - // 'public' is def a modifier here. - case SyntaxKind.AsteriskToken: - return true; - default: - // public static or public class - // 'public' is def a modifier here. - return SyntaxFacts.isAnyKeyword(nextTokenKind); - } - } - - return false; - } - - function isAtModifier(): boolean { - return isModifier(currentToken(), /*peekIndex:*/ 0); - } - - function modifierCount(): number { - var modifierCount = 0; - while (isModifier(peekToken(modifierCount), modifierCount)) { - modifierCount++; - } - - return modifierCount; - } - - function parseModifiers(): ISyntaxToken[] { - var tokens: ISyntaxToken[] = []; - - while (true) { - var token = currentToken(); - if (isModifier(token, /*index:*/ 0)) { - tokens.push(consumeToken(token)); - continue; - } - - break; - } - - return Syntax.list(tokens); - } - - function parseHeritageClauses(isClassHeritageClause: boolean): HeritageClauseSyntax[] { - // ClassTail[Yield,GeneratorParameter] : See 14.5 - // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } - // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } - - if (isHeritageClause()) { - return isClassHeritageClause && inGeneratorParameterContext() - ? doOutsideYieldContext(parseHeritageClausesWorker) - : parseHeritageClausesWorker(); - } - - return []; - } - - function parseHeritageClausesWorker() { - return parseSyntaxList(ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses) - } - - function tryParseHeritageClauseTypeName(): ITypeSyntax { - return isHeritageClauseTypeName() ? tryParseNameOrGenericType() : undefined; - } - - function parseClassDeclaration(): ClassDeclarationSyntax { - var openBraceToken: ISyntaxToken; - return new ClassDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.ClassKeyword), - eatIdentifierToken(), - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), - parseHeritageClauses(/*isClassHeritageClauses:*/ true), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ClassDeclaration_ClassElements) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function parseClassElement(openBraceToken: ISyntaxToken): IClassElementSyntax[] { - // ClassTail[Yield,GeneratorParameter] : See 14.5 - // [~GeneratorParameter]ClassHeritage[?Yield]opt { ClassBody[?Yield]opt } - // [+GeneratorParameter] ClassHeritageopt { ClassBodyopt } - - if (openBraceToken.fullWidth() > 0) { - return inGeneratorParameterContext() - ? doOutsideYieldContext(parseClassElements) - : parseClassElements(); - } - - return []; - } - - function parseClassElements() { - return parseSyntaxList(ListParsingState.ClassDeclaration_ClassElements) - } - - function isAccessor(inErrorRecovery: boolean): boolean { - var tokenKind = currentToken().kind; - if (tokenKind !== SyntaxKind.GetKeyword && - tokenKind !== SyntaxKind.SetKeyword) { - return false; - } - - return isPropertyName(/*peekIndex:*/ 1, inErrorRecovery); - } - - function parseAccessor(modifiers: ISyntaxToken[]): IAccessorSyntax { - var _currentToken = currentToken(); - var tokenKind = _currentToken.kind; - - if (tokenKind === SyntaxKind.GetKeyword) { - return parseGetAccessor(modifiers, _currentToken); - } - else if (tokenKind === SyntaxKind.SetKeyword) { - return parseSetAccessor(modifiers, _currentToken); - } - else { - throw Errors.invalidOperation(); - } - } - - function parseGetAccessor(modifiers: ISyntaxToken[], getKeyword: ISyntaxToken): GetAccessorSyntax { - return new GetAccessorSyntax(contextFlags, - modifiers, consumeToken(getKeyword), parsePropertyName(), - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), - parseFunctionBody(/*isGenerator:*/ false, /*asyncContext:*/ false)); - } - - function parseSetAccessor(modifiers: ISyntaxToken[], setKeyword: ISyntaxToken): SetAccessorSyntax { - return new SetAccessorSyntax(contextFlags, - modifiers, consumeToken(setKeyword), parsePropertyName(), - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), - parseFunctionBody(/*isGenerator:*/ false, /*asyncContext:*/ false)); - } - - function isClassElement(inErrorRecovery: boolean): boolean { - return isAtModifier() || - isConstructorDeclaration() || - isAccessor(inErrorRecovery) || - isIndexMemberDeclaration() || - isMemberVariableOrFunctionDeclaration(inErrorRecovery); - } - - function isMemberVariableOrFunctionDeclaration(inErrorRecovery: boolean) { - var token0 = currentToken(); - var token0Kind = token0.kind; - - // If we have a '*', then this is a generator function. - if (token0Kind === SyntaxKind.AsteriskToken) { - if (inErrorRecovery) { - // If we're in error recovery, we might see a random * that is part of some - // expression. Really, in order to view this as a generator function, we want - // to see at least '*id<' or '*id('. Otherwise, we won't think of this as the - // start of a member variable/function. - return peekToken(1).kind === SyntaxKind.IdentifierName && isCallSignature(/*peekIndex:*/ 2); - } - - return true; - } - - // Check if its the start of a property or method. Both must start with a property name. - if (!isPropertyName(0, inErrorRecovery)) { - return false; - } - - if (!SyntaxFacts.isAnyKeyword(token0Kind)) { - // It wasn't a keyword. So this is definitely a member variable or function. - return true; - } - - // Keywords *can* technically start properties and methods. However, they often - // are actually intended to start a real ts/js construct. Only accept a keyword - // if it is definitely a property or method. - // keywords are also property names. Only accept a keyword as a property - // name if is of the form: - // public; - // public= - // public: - // public } - // public( - // public< - // public - // public - var nextToken = peekToken(1); - switch (nextToken.kind) { - case SyntaxKind.SemicolonToken: - case SyntaxKind.EqualsToken: - case SyntaxKind.ColonToken: - case SyntaxKind.CloseBraceToken: - case SyntaxKind.OpenParenToken: - case SyntaxKind.LessThanToken: - case SyntaxKind.EndOfFileToken: - return true; - default: - return nextToken.hasLeadingNewLine(); - } - } - - function tryParseClassElement(inErrorRecovery: boolean): IClassElementSyntax { - // Have to check for indexers before anything else. That way if we see "[foo:" we - // parse it out as an indexer and not a member function or variable. - var modifiers = parseModifiers(); - if (isConstructorDeclaration()) { - return parseConstructorDeclaration(modifiers); - } - else if (isIndexSignature(/*peekIndex:*/ 0)) { - return parseIndexSignature(modifiers); - } - else if (isAccessor(inErrorRecovery)) { - return parseAccessor(modifiers); - } - else if (modifiers.length > 0 || isMemberVariableOrFunctionDeclaration(inErrorRecovery)) { - var asterixToken = tryEatToken(SyntaxKind.AsteriskToken); - var propertyName = parsePropertyName(); - - // If we got a '*', then this is definitely a method. If we didn't get a '*', then - // we must have gotten a property name. And if that's all we have, we have to check - // if we have a call signature. If so, then this is a member function, otherwise - // it's a member variable. - if (asterixToken || isCallSignature(/*peekIndex:*/ 0)) { - return parseMethodDeclaration(modifiers, asterixToken, propertyName); - } - else { - return parsePropertyDeclaration(modifiers, propertyName); - } - } - else { - return undefined; - } - } - - function isConstructorDeclaration(): boolean { - // Note: we deviate slightly from the spec here. If we see 'constructor' then we - // assume this is a constructor. That means, if a user writes "public constructor;" - // it won't be viewed as a member. As a workaround, they can simply write: - // public 'constructor'; - return currentToken().kind === SyntaxKind.ConstructorKeyword; - } - - function parseConstructorDeclaration(modifiers: ISyntaxToken[]): ConstructorDeclarationSyntax { - // Note: if we see an arrow after the close paren, then try to parse out a function - // block anyways. It's likely the user just though '=> expr' was legal anywhere a - // block was legal. - return new ConstructorDeclarationSyntax(contextFlags, - modifiers, - eatToken(SyntaxKind.ConstructorKeyword), - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), - parseFunctionBody(/*isGenerator:*/ false, /*asyncContext:*/ false)); - } - - function parseMethodDeclaration(modifiers: ISyntaxToken[], asteriskToken: ISyntaxToken, propertyName: IPropertyNameSyntax): MethodDeclarationSyntax { - // Note: if we see an arrow after the close paren, then try to parse out a function - // block anyways. It's likely the user just though '=> expr' was legal anywhere a - // block was legal. - var asyncContext = containsAsync(modifiers); - var isGenerator = asteriskToken !== undefined; - return new MethodDeclarationSyntax(contextFlags, - modifiers, - asteriskToken, - propertyName, - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ isGenerator, /*asyncContext:*/ asyncContext), - parseFunctionBody(isGenerator, asyncContext)); - } - - function containsAsync(modifiers: ISyntaxToken[]): boolean { - for (var i = 0, n = modifiers.length; i < n; i++) { - if (modifiers[i].kind === SyntaxKind.AsyncKeyword) { - return true; - } - } - - return false; - } - - function parsePropertyDeclaration(modifiers: ISyntaxToken[], propertyName: IPropertyNameSyntax): PropertyDeclarationSyntax { - return new PropertyDeclarationSyntax(contextFlags, - modifiers, - new VariableDeclaratorSyntax(contextFlags, propertyName, - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), - isEqualsValueClause(/*inParameter*/ false) ? allowInAnd(parseEqualsValueClause) : undefined), - eatExplicitOrAutomaticSemicolon()); - } - - function isIndexMemberDeclaration(): boolean { - return isIndexSignature(/*peekIndex:*/ 0); - } - - function isFunctionDeclaration(modifierCount: number): boolean { - return peekToken(modifierCount).kind === SyntaxKind.FunctionKeyword; - } - - function parseFunctionDeclaration(): FunctionDeclarationSyntax { - return parseFunctionDeclarationWorker( - parseModifiers(), eatToken(SyntaxKind.FunctionKeyword), tryEatToken(SyntaxKind.AsteriskToken)); - } - - function parseFunctionDeclarationWorker(modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, asteriskToken: ISyntaxToken): FunctionDeclarationSyntax { - // FunctionDeclaration[Yield, Default] : - // function BindingIdentifier[?Yield] ( FormalParameters ) { FunctionBody } - - // GeneratorDeclaration[Yield, Default] : - // function * BindingIdentifier[?Yield](FormalParameters[Yield, GeneratorParameter]) { GeneratorBody[Yield] } - var asyncContext = containsAsync(modifiers); - var isGenerator = asteriskToken !== undefined; - return new FunctionDeclarationSyntax(contextFlags, - modifiers, - functionKeyword, - asteriskToken, - eatIdentifierToken(), - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ isGenerator, /*asyncContext:*/ asyncContext), - parseFunctionBody(isGenerator, asyncContext)); - } - - function parseFunctionBody(isGenerator: boolean, asyncContext: boolean): BlockSyntax | ExpressionBody | ISyntaxToken { - return isBlockOrArrow() - ? parseFunctionBlockOrExpressionBody(/*yieldContext:*/ isGenerator, /*asyncContext:*/ asyncContext) - : eatExplicitOrAutomaticSemicolon(); - } - - function parseModuleName(): INameSyntax { - return currentToken().kind === SyntaxKind.StringLiteral - ? eatToken(SyntaxKind.StringLiteral) - : parseName(/*allowIdentifierNames*/ false); - } - - function parseModuleDeclaration(): ModuleDeclarationSyntax { - var openBraceToken: ISyntaxToken; - return new ModuleDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.ModuleKeyword), - parseModuleName(), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ModuleDeclaration_ModuleElements) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function parseInterfaceDeclaration(): InterfaceDeclarationSyntax { - return new InterfaceDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.InterfaceKeyword), - eatIdentifierToken(), - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), - parseHeritageClauses(/*isClassHeritageClauses:*/ false), - parseObjectType()); - } - - function parseTypeAlias(): TypeAliasSyntax { - return new TypeAliasSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.TypeKeyword), - eatIdentifierToken(), - eatToken(SyntaxKind.EqualsToken), - parseType(), - eatExplicitOrAutomaticSemicolon()); - } - - function parseObjectType(): ObjectTypeSyntax { - var openBraceToken: ISyntaxToken; - - return new ObjectTypeSyntax(contextFlags, - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ObjectType_TypeMembers) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function parseTupleType(currentToken: ISyntaxToken): TupleTypeSyntax { - return new TupleTypeSyntax(contextFlags, - consumeToken(currentToken), - parseSeparatedSyntaxList(ListParsingState.TupleType_Types), - eatToken(SyntaxKind.CloseBracketToken)); - } - - function isTypeMember(inErrorRecovery: boolean): boolean { - return isCallSignature(/*tokenIndex:*/ 0) || - isConstructSignature() || - isIndexSignature(/*tokenIndex:*/ 0) || - isMethodOrPropertySignature(inErrorRecovery); - } - - function isMethodOrPropertySignature(inErrorRecovery: boolean): boolean { - var _currentToken = currentToken(); - - // Keywords can start properties. However, they're often intended to start something - // else. If we see a modifier before something that can be a property, then don't - // try parse it out as a property. For example, if we have: - // - // public foo - // - // Then don't parse 'public' as a property name. Note: if you have: - // - // public - // foo - // - // Then we *should* parse it as a property name, as ASI takes effect here. - if (isModifier(_currentToken, /*index:*/ 0)) { - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && isPropertyNameToken(token1, inErrorRecovery)) { - - return false; - } - } - - // Note: property names also start function signatures. So it's important that we call this - // after we calll isFunctionSignature. - return isPropertyName(/*peekIndex:*/ 0, inErrorRecovery); - } - - function tryParseTypeMember(inErrorRecovery: boolean): ITypeMemberSyntax { - if (isCallSignature(/*tokenIndex:*/ 0)) { - // A call signature for a type member can both use 'yield' as a parameter name, and - // does not have parameter initializers. So we can pass 'false' for both [Yield] - // and [GeneratorParameter]. - // - // Also, when this is a call signature used as a type member, then a semicolon is - // required. - return parseCallSignatureWithSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false); - } - else if (isConstructSignature()) { - return parseConstructSignature(); - } - else if (isIndexSignature(/*tokenIndex:*/ 0)) { - return parseIndexSignature(/*modifiers:*/[]); - } - else if (isMethodOrPropertySignature(inErrorRecovery)) { - var propertyName = parsePropertyName(); - var questionToken = tryEatToken(SyntaxKind.QuestionToken); - - if (isCallSignature(/*peekIndex:*/ 0)) { - return parseMethodSignature(propertyName, questionToken); - } - else { - return parsePropertySignature(propertyName, questionToken); - } - } - else { - return undefined; - } - } - - function parseConstructSignature(): ConstructSignatureSyntax { - // Construct signatures have no [Yield] or [GeneratorParameter] restrictions. - return new ConstructSignatureSyntax(contextFlags, - eatToken(SyntaxKind.NewKeyword), - parseCallSignatureWithSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false)); - } - - function parseIndexSignature(modifiers: ISyntaxToken[]): IndexSignatureSyntax { - return new IndexSignatureSyntax(contextFlags, - modifiers, - eatToken(SyntaxKind.OpenBracketToken), - parseSeparatedSyntaxList(ListParsingState.IndexSignature_Parameters), - eatToken(SyntaxKind.CloseBracketToken), - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), - eatExplicitOrAutomaticSemicolonOrComma()); - } - - function parseMethodSignature(propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken): MethodSignatureSyntax { - // Method signatues don't exist in expression contexts. So they have neither - // [Yield] nor [GeneratorParameter] - return new MethodSignatureSyntax(contextFlags, - propertyName, - questionToken, - parseCallSignatureWithSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false)); - } - - function parsePropertySignature(propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken): PropertySignatureSyntax { - return new PropertySignatureSyntax(contextFlags, - propertyName, - questionToken, - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), - eatExplicitOrAutomaticSemicolonOrComma()); - } - - function isCallSignature(peekIndex: number): boolean { - var tokenKind = peekToken(peekIndex).kind; - return tokenKind === SyntaxKind.OpenParenToken || tokenKind === SyntaxKind.LessThanToken; - } - - function isConstructSignature(): boolean { - if (currentToken().kind !== SyntaxKind.NewKeyword) { - return false; - } - - return isCallSignature(/*peekIndex:*/1); - } - - function isIndexSignature(peekIndex: number): boolean { - // In order to be considered an index signature, we need to see at least: - // - // [a: - // [... - // [a, - // [public a - // [] - // - // Otherwise, we will think that this is the start of a computed property name - // for a function or variable. - if (peekToken(peekIndex).kind === SyntaxKind.OpenBracketToken) { - var token1 = peekToken(peekIndex + 1); - if (token1.kind === SyntaxKind.DotDotDotToken || token1.kind === SyntaxKind.CloseBracketToken) { - return true; - } - if (isIdentifier(token1)) { - var token2 = peekToken(peekIndex + 2); - if (token2.kind === SyntaxKind.ColonToken || token2.kind === SyntaxKind.CommaToken) { - return true; - } - } - if (token1.kind === SyntaxKind.PublicKeyword || token1.kind === SyntaxKind.PrivateKeyword) { - var token2 = peekToken(peekIndex + 2); - return isIdentifier(token2); - } - } - - return false; - } - - function isHeritageClause(): boolean { - var tokenKind = currentToken().kind; - return tokenKind === SyntaxKind.ExtendsKeyword || tokenKind === SyntaxKind.ImplementsKeyword; - } - - function isNotHeritageClauseTypeName(): boolean { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.ImplementsKeyword || - tokenKind === SyntaxKind.ExtendsKeyword) { - - return isIdentifier(peekToken(1)); - } - - return false; - } - - function isHeritageClauseTypeName(): boolean { - if (isIdentifier(currentToken())) { - // We want to make sure that the "extends" in "extends foo" or the "implements" in - // "implements foo" is not considered a type name. - return !isNotHeritageClauseTypeName(); - } - - return false; - } - - function tryParseHeritageClause(): HeritageClauseSyntax { - var extendsOrImplementsKeyword = currentToken(); - var tokenKind = extendsOrImplementsKeyword.kind; - if (tokenKind !== SyntaxKind.ExtendsKeyword && tokenKind !== SyntaxKind.ImplementsKeyword) { - return undefined; - } - - return new HeritageClauseSyntax(contextFlags, - consumeToken(extendsOrImplementsKeyword), - parseSeparatedSyntaxList(ListParsingState.HeritageClause_TypeNameList)); - } - - function isInterfaceEnumClassModuleImportExportOrTypeAlias(modifierCount: number, _currentToken?: ISyntaxToken): boolean { - if (modifierCount) { - // Any of these keywords following a modifier is definitely a TS construct. - switch (peekToken(modifierCount).kind) { - case SyntaxKind.ImportKeyword: - case SyntaxKind.ModuleKeyword: - case SyntaxKind.InterfaceKeyword: - case SyntaxKind.ClassKeyword: - case SyntaxKind.EnumKeyword: - case SyntaxKind.ExportKeyword: - case SyntaxKind.TypeKeyword: - return true; - } - } - - _currentToken = _currentToken || currentToken(); - - // no modifiers. While certain of these keywords are javascript keywords as well, it - // is possible to run into them in some circumstances in error recovery where we don't - // want to consider them the start of the module element construct. For example, they - // might be hte name in an object literal. Because of that, we check the next token to - // make sure it really is the start of a module element. - switch (_currentToken.kind) { - case SyntaxKind.ModuleKeyword: - var nextToken = peekToken(1); - return isIdentifier(nextToken) || nextToken.kind === SyntaxKind.StringLiteral; - - case SyntaxKind.ImportKeyword: - case SyntaxKind.ClassKeyword: - case SyntaxKind.EnumKeyword: - case SyntaxKind.InterfaceKeyword: - case SyntaxKind.TypeKeyword: - return isIdentifier(peekToken(1)); - - case SyntaxKind.ExportKeyword: - return peekToken(1).kind === SyntaxKind.EqualsToken; - } - - return false; - } - - function isDefinitelyNotStatement() { - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - - // 'async' is a modifier, but can start a statement. So we skip further checks if we - // see it. - if (currentTokenKind !== SyntaxKind.AsyncKeyword) { - switch (currentTokenKind) { - case SyntaxKind.PublicKeyword: - case SyntaxKind.PrivateKeyword: - case SyntaxKind.ProtectedKeyword: - case SyntaxKind.StaticKeyword: - - //if (isModifierKind(currentTokenKind)) { - // ERROR RECOVERY - // None of the modifiers are actually keywords. And they might show up in a real - // statement (i.e. "public();"). However, if we see 'public ' then - // that can't possibly be a statement (and instead will be a class element), - // and we should not parse it out here. Note: if there is a newline between the - // elements, then we should not do this. That's because asi might take effect. i.e.: - // - // public - // foo - // - // Are two legal statements in JS. - // - // Also: 'async a' can start an statement, so we want to check for that as well. - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && SyntaxFacts.isIdentifierNameOrAnyKeyword(token1)) { - return true; - } - } - - // Check for common things that might appear where we expect a statement, but which we - // do not want to consume. This can happen when the user does not terminate their - // existing block properly. We don't want to accidently consume these as expression - // below. - if (isInterfaceEnumClassModuleImportExportOrTypeAlias(modifierCount(), _currentToken)) { - return true; - } - } - - return false; - } - - function isStatement(modifierCount: number, inErrorRecovery: boolean): boolean { - if (isDefinitelyNotStatement()) { - return false; - } - - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - - switch (currentTokenKind) { - // Common cases that we can immediately assume are statements. - case SyntaxKind.IfKeyword: - case SyntaxKind.OpenBraceToken: - case SyntaxKind.ReturnKeyword: - case SyntaxKind.SwitchKeyword: - case SyntaxKind.ThrowKeyword: - case SyntaxKind.BreakKeyword: - case SyntaxKind.ContinueKeyword: - case SyntaxKind.ForKeyword: - case SyntaxKind.WhileKeyword: - case SyntaxKind.WithKeyword: - case SyntaxKind.DoKeyword: - case SyntaxKind.TryKeyword: - case SyntaxKind.DebuggerKeyword: - return true; - } - - // More complicated cases. - return isLabeledStatement(_currentToken) || - isVariableStatement(modifierCount) || - isFunctionDeclaration(modifierCount) || - isEmptyStatement(_currentToken, inErrorRecovery) || - isExpressionStatement(_currentToken); - } - - function parseStatement(inErrorRecovery: boolean): IStatementSyntax { - return tryParseStatement(inErrorRecovery) || parseExpressionStatement(); - } - - function tryParseStatement(inErrorRecovery: boolean): IStatementSyntax { - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - return tryParseStatementWorker(_currentToken, currentTokenKind, modifierCount(), inErrorRecovery); - } - - function tryParseStatementWorker(_currentToken: ISyntaxToken, currentTokenKind: SyntaxKind, modifierCount: number, inErrorRecovery: boolean): IStatementSyntax { - if (isDefinitelyNotStatement()) { - return undefined; - } - - switch (currentTokenKind) { - case SyntaxKind.IfKeyword: return parseIfStatement(_currentToken); - case SyntaxKind.OpenBraceToken: return parseStatementBlock(); - case SyntaxKind.ReturnKeyword: return parseReturnStatement(_currentToken); - case SyntaxKind.SwitchKeyword: return parseSwitchStatement(_currentToken); - case SyntaxKind.ThrowKeyword: return parseThrowStatement(_currentToken); - case SyntaxKind.BreakKeyword: return parseBreakStatement(_currentToken); - case SyntaxKind.ContinueKeyword: return parseContinueStatement(_currentToken); - case SyntaxKind.ForKeyword: return parseForOrForInStatement(_currentToken); - case SyntaxKind.WhileKeyword: return parseWhileStatement(_currentToken); - case SyntaxKind.WithKeyword: return parseWithStatement(_currentToken); - case SyntaxKind.DoKeyword: return parseDoStatement(_currentToken); - case SyntaxKind.TryKeyword: return parseTryStatement(_currentToken); - case SyntaxKind.DebuggerKeyword: return parseDebuggerStatement(_currentToken); - } - - if (isVariableStatement(modifierCount)) { - return parseVariableStatement(); - } - else if (isLabeledStatement(_currentToken)) { - return parseLabeledStatement(_currentToken); - } - else if (isFunctionDeclaration(modifierCount)) { - return parseFunctionDeclaration(); - } - else if (isEmptyStatement(_currentToken, inErrorRecovery)) { - return parseEmptyStatement(_currentToken); - } - else if (isExpressionStatement(_currentToken)) { - return parseExpressionStatement(); - } - else { - return undefined; - } - } - - function parseDebuggerStatement(debuggerKeyword: ISyntaxToken): DebuggerStatementSyntax { - return new DebuggerStatementSyntax(contextFlags, - consumeToken(debuggerKeyword), - eatExplicitOrAutomaticSemicolon()); - } - - function parseDoStatement(doKeyword: ISyntaxToken): DoStatementSyntax { - // IterationStatement[Yield, Return] : - // do Statement[?Yield, ?Return]while (Expression[In, ?Yield]); opt - - // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html - // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in - // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby - // do;while(0)x will have a semicolon inserted before x. - return new DoStatementSyntax(contextFlags, - consumeToken(doKeyword), - parseStatement(/*inErrorRecovery:*/ false), - eatToken(SyntaxKind.WhileKeyword), - eatToken(SyntaxKind.OpenParenToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseParenToken), - tryEatToken(SyntaxKind.SemicolonToken)); - } - - function isLabeledStatement(currentToken: ISyntaxToken): boolean { - return isIdentifier(currentToken) && peekToken(1).kind === SyntaxKind.ColonToken; - } - - function parseLabeledStatement(identifierToken: ISyntaxToken): LabeledStatementSyntax { - return new LabeledStatementSyntax(contextFlags, - consumeToken(identifierToken), eatToken(SyntaxKind.ColonToken), parseStatement(/*inErrorRecovery:*/ false)); - } - - function parseTryStatement(tryKeyword: ISyntaxToken): TryStatementSyntax { - var tryKeyword = consumeToken(tryKeyword); - - var savedListParsingState = listParsingState; - listParsingState |= (1 << ListParsingState.TryBlock_Statements); - var block = parseStatementBlock(); - listParsingState = savedListParsingState; - - var catchClause: CatchClauseSyntax = undefined; - if (currentToken().kind === SyntaxKind.CatchKeyword) { - catchClause = parseCatchClause(); - } - - // If we don't have a catch clause, then we must have a finally clause. Try to parse - // one out no matter what. - var finallyClause: FinallyClauseSyntax = undefined; - if (!catchClause || currentToken().kind === SyntaxKind.FinallyKeyword) { - finallyClause = parseFinallyClause(); - } - - return new TryStatementSyntax(contextFlags, tryKeyword, block, catchClause, finallyClause); - } - - function parseCatchClauseBlock(): BlockSyntax { - var savedListParsingState = listParsingState; - listParsingState |= (1 << ListParsingState.CatchBlock_Statements); - var block = parseStatementBlock(); - listParsingState = savedListParsingState; - - return block; - } - - function parseCatchClause(): CatchClauseSyntax { - return new CatchClauseSyntax(contextFlags, - eatToken(SyntaxKind.CatchKeyword), eatToken(SyntaxKind.OpenParenToken), eatIdentifierToken(), - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), eatToken(SyntaxKind.CloseParenToken), parseCatchClauseBlock()); - } - - function parseFinallyClause(): FinallyClauseSyntax { - return new FinallyClauseSyntax(contextFlags, - eatToken(SyntaxKind.FinallyKeyword), - parseStatementBlock()); - } - - function parseWithStatement(withKeyword: ISyntaxToken): WithStatementSyntax { - // WithStatement[Yield, Return] : - // with (Expression[In, ?Yield]) Statement[?Yield, ?Return] - - return new WithStatementSyntax(contextFlags, - consumeToken(withKeyword), - eatToken(SyntaxKind.OpenParenToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseParenToken), - parseStatement(/*inErrorRecovery:*/ false)); - } - - function parseWhileStatement(whileKeyword: ISyntaxToken): WhileStatementSyntax { - // IterationStatement[Yield, Return] : - // while (Expression[In, ?Yield]) Statement[?Yield, ?Return] - - return new WhileStatementSyntax(contextFlags, - consumeToken(whileKeyword), - eatToken(SyntaxKind.OpenParenToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseParenToken), - parseStatement(/*inErrorRecovery:*/ false)); - } - - function isEmptyStatement(currentToken: ISyntaxToken, inErrorRecovery: boolean): boolean { - // If we're in error recovery, then we don't want to treat ';' as an empty statement. - // The problem is that ';' can show up in far too many contexts, and if we see one - // and assume it's a statement, then we may bail out innapropriately from whatever - // we're parsing. For example, if we have a semicolon in the middle of a class, then - // we really don't want to assume the class is over and we're on a statement in the - // outer module. We just want to consume and move on. - if (inErrorRecovery) { - return false; - } - - return currentToken.kind === SyntaxKind.SemicolonToken; - } - - function parseEmptyStatement(semicolonToken: ISyntaxToken): EmptyStatementSyntax { - return new EmptyStatementSyntax(contextFlags, consumeToken(semicolonToken)); - } - - function parseForOrForInStatement(forKeyword: ISyntaxToken): IStatementSyntax { - // Debug.assert(isForOrForInStatement()); - - forKeyword = consumeToken(forKeyword); - var openParenToken = eatToken(SyntaxKind.OpenParenToken); - - var _currentToken = currentToken(); - var tokenKind = _currentToken.kind; - - // If we see 'for ( ;' then there is no initializer, and this must be a 'for' statement. - // If we don't see a semicolon, then parse our a variable declaration or an initializer - // expression. Both could be hte start of a 'for' or 'for-in' statement. So, after that - // check to see if we have an 'in' keyword to make the final determination as to what we - // have. - - // When trying to parse either a variable declaration or an expression do not allow 'in' - // to be parsed, as that will actually be consumed by the 'for in' statement production - // instead. Also, we allow any expression here (even though the grammar only allows for - // LeftHandSideExpression). We will make sure we actually have a LHS expression in the - // grammar walker. - var initializer = tokenKind === SyntaxKind.SemicolonToken - ? undefined - : isVariableDeclaration(tokenKind) - ? disallowInAnd(parseVariableDeclaration) - : disallowInAnd(parseExpression) - - // In order to be a 'for-in' statement, we had to have an initializer of some sort, and - // we had to actually get an 'in' keyword. - if (initializer !== undefined && currentToken().kind === SyntaxKind.InKeyword) { - // for ([lookahead not-in {let [ }] LeftHandSideExpression[?Yield] in Expression[In, ?Yield] ) Statement[?Yield, ?Return] - // for ( var ForBinding[?Yield] in Expression[In, ?Yield] ) Statement[?Yield, ?Return] - // for ( ForDeclaration[?Yield] in Expression[In, ?Yield] ) Statement[?Yield, ?Return] - - return new ForInStatementSyntax(contextFlags, - forKeyword, openParenToken, initializer, eatToken(SyntaxKind.InKeyword), - allowInAnd(parseExpression), eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false)); - } - else { - // NOTE: From the es5 section on Automatic Semicolon Insertion. - // a semicolon is never inserted automatically if the semicolon would then ... become - // one of the two semicolons in the header of a for statement - - // for (ExpressionNoInopt; Expressionopt ; Expressionopt ) Statement - // for (var VariableDeclarationListNoIn; Expressionopt; Expressionopt) Statement - return new ForStatementSyntax(contextFlags, - forKeyword, openParenToken, initializer, - eatToken(SyntaxKind.SemicolonToken), tryParseForStatementCondition(), - eatToken(SyntaxKind.SemicolonToken), tryParseForStatementIncrementor(), - eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false)); - } - } - - function tryParseForStatementCondition(): IExpressionSyntax { - // for ( Expression[?Yield]opt ; Expression[In, ?Yield]opt ; Expression[In, ?Yield]opt ) - - var tokenKind = currentToken().kind; - if (tokenKind !== SyntaxKind.SemicolonToken && - tokenKind !== SyntaxKind.CloseParenToken && - tokenKind !== SyntaxKind.EndOfFileToken) { - return allowInAnd(parseExpression); - } - - return undefined; - } - - function tryParseForStatementIncrementor(): IExpressionSyntax { - // for ( Expression[?Yield]opt ; Expression[In, ?Yield]opt ; Expression[In, ?Yield]opt ) - var tokenKind = currentToken().kind; - if (tokenKind !== SyntaxKind.CloseParenToken && - tokenKind !== SyntaxKind.EndOfFileToken) { - return allowInAnd(parseExpression); - } - - return undefined; - } - - function tryEatBreakOrContinueLabel(): ISyntaxToken { - // If there is no newline after the break keyword, then we can consume an optional - // identifier. - var identifier: ISyntaxToken = undefined; - if (!canEatExplicitOrAutomaticSemicolon()) { - if (isIdentifier(currentToken())) { - return eatIdentifierToken(); - } - } - - return undefined; - } - - function parseBreakStatement(breakKeyword: ISyntaxToken): BreakStatementSyntax { - return new BreakStatementSyntax(contextFlags, - consumeToken(breakKeyword), - tryEatBreakOrContinueLabel(), - eatExplicitOrAutomaticSemicolon()); - } - - function parseContinueStatement(continueKeyword: ISyntaxToken): ContinueStatementSyntax { - return new ContinueStatementSyntax(contextFlags, - consumeToken(continueKeyword), - tryEatBreakOrContinueLabel(), - eatExplicitOrAutomaticSemicolon()); - } - - function parseSwitchExpression(openParenToken: ISyntaxToken) { - // SwitchStatement[Yield, Return] : - // switch (Expression[In, ?Yield] ) CaseBlock[?Yield, ?Return] - - return openParenToken.fullWidth() === 0 && currentToken().kind === SyntaxKind.OpenBraceToken - ? eatIdentifierToken() - : allowInAnd(parseExpression); - } - - function parseSwitchStatement(switchKeyword: ISyntaxToken) { - // Debug.assert(isSwitchStatement()); - var openParenToken: ISyntaxToken; - var openBraceToken: ISyntaxToken; - - return new SwitchStatementSyntax(contextFlags, - consumeToken(switchKeyword), - openParenToken = eatToken(SyntaxKind.OpenParenToken), - parseSwitchExpression(openParenToken), - eatToken(SyntaxKind.CloseParenToken), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.SwitchStatement_SwitchClauses) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function isSwitchClause(): boolean { - var currentTokenKind = currentToken().kind; - return currentTokenKind === SyntaxKind.CaseKeyword || currentTokenKind === SyntaxKind.DefaultKeyword; - } - - function tryParseSwitchClause(): ISwitchClauseSyntax { - var _currentToken = currentToken(); - switch (_currentToken.kind) { - case SyntaxKind.CaseKeyword: - return parseCaseSwitchClause(_currentToken); - case SyntaxKind.DefaultKeyword: - return parseDefaultSwitchClause(_currentToken); - } - - return undefined; - } - - function parseCaseSwitchClause(caseKeyword: ISyntaxToken): CaseSwitchClauseSyntax { - // Debug.assert(isCaseSwitchClause()); - // CaseClause[Yield, Return] : - // case Expression[In, ?Yield] : StatementList[?Yield, ?Return]opt - - return new CaseSwitchClauseSyntax(contextFlags, - consumeToken(caseKeyword), - allowInAnd(parseExpression), - eatToken(SyntaxKind.ColonToken), - parseSyntaxList(ListParsingState.SwitchClause_Statements)); - } - - function parseDefaultSwitchClause(defaultKeyword: ISyntaxToken): DefaultSwitchClauseSyntax { - // Debug.assert(isDefaultSwitchClause()); - - return new DefaultSwitchClauseSyntax(contextFlags, - consumeToken(defaultKeyword), - eatToken(SyntaxKind.ColonToken), - parseSyntaxList(ListParsingState.SwitchClause_Statements)); - } - - function parseThrowStatement(throwKeyword: ISyntaxToken): ThrowStatementSyntax { - return new ThrowStatementSyntax(contextFlags, - consumeToken(throwKeyword), - tryParseThrowStatementExpression(), - eatExplicitOrAutomaticSemicolon()); - } - - function tryParseThrowStatementExpression(): IExpressionSyntax { - // ThrowStatement[Yield] : - // throw [no LineTerminator here]Expression[In, ?Yield]; - - // Because of automatic semicolon insertion, we need to report error if this - // throw could be terminated with a semicolon. Note: we can't call 'parseExpression' - // directly as that might consume an expression on the following line. - // We just return 'undefined' in that case. The actual error will be reported in the - // grammar walker. - return canEatExplicitOrAutomaticSemicolon() ? undefined : allowInAnd(parseExpression); - } - - function parseReturnStatement(returnKeyword: ISyntaxToken): ReturnStatementSyntax { - return new ReturnStatementSyntax(contextFlags, - consumeToken(returnKeyword), - tryParseReturnStatementExpression(), - eatExplicitOrAutomaticSemicolon()); - } - - function tryParseReturnStatementExpression(): IExpressionSyntax { - // ReturnStatement[Yield] : - // return [no LineTerminator here]Expression[In, ?Yield]; - - return canEatExplicitOrAutomaticSemicolon() ? undefined : allowInAnd(parseExpression); - } - - function isExpressionStatement(currentToken: ISyntaxToken): boolean { - // As per the gramar, neither { nor 'function' can start an expression statement. - var tokenKind = currentToken.kind; - return tokenKind !== SyntaxKind.OpenBraceToken && tokenKind !== SyntaxKind.FunctionKeyword && isExpression(currentToken); - } - - function isAssignmentOrOmittedExpression(): boolean { - var _currentToken = currentToken(); - return _currentToken.kind === SyntaxKind.CommaToken || isExpression(_currentToken); - } - - function tryParseAssignmentOrOmittedExpression(): IExpressionSyntax { - // Debug.assert(isAssignmentOrOmittedExpression()); - - // ElementList[Yield] : - // Elisionopt AssignmentExpression[In, ?Yield] - - if (currentToken().kind === SyntaxKind.CommaToken) { - return new OmittedExpressionSyntax(contextFlags); - } - - return isExpression(currentToken()) ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined; - } - - function isExpression(currentToken: ISyntaxToken): boolean { - switch (currentToken.kind) { - // Literals - case SyntaxKind.NumericLiteral: - case SyntaxKind.StringLiteral: - case SyntaxKind.RegularExpressionLiteral: - - // Templates - case SyntaxKind.NoSubstitutionTemplateToken: - case SyntaxKind.TemplateStartToken: - - // For array literals. - case SyntaxKind.OpenBracketToken: - - // For parenthesized expressions - case SyntaxKind.OpenParenToken: - - // For cast expressions. - case SyntaxKind.LessThanToken: - - // Prefix unary expressions. - case SyntaxKind.PlusPlusToken: - case SyntaxKind.MinusMinusToken: - case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: - case SyntaxKind.TildeToken: - case SyntaxKind.ExclamationToken: - - // For object type literal expressions. - case SyntaxKind.OpenBraceToken: - - // ERROR TOLERANCE: - // If we see a => then we know the user was probably trying to type in an arrow - // function. So allow this as the start of an expression, knowing that when we - // actually try to parse it we'll report the missing identifier. - case SyntaxKind.EqualsGreaterThanToken: - - case SyntaxKind.SlashToken: - case SyntaxKind.SlashEqualsToken: - // Note: if we see a / or /= token then we always consider this an expression. - // The / or /= will actually be the start of a regex that we will contextually - // rescan. - - // Simple epxressions. - case SyntaxKind.SuperKeyword: - case SyntaxKind.ThisKeyword: - case SyntaxKind.TrueKeyword: - case SyntaxKind.FalseKeyword: - case SyntaxKind.NullKeyword: - - // For object creation expressions. - case SyntaxKind.NewKeyword: - - // Prefix unary expressions - case SyntaxKind.DeleteKeyword: - case SyntaxKind.VoidKeyword: - case SyntaxKind.TypeOfKeyword: - - // For function expressions. - case SyntaxKind.FunctionKeyword: - return true; - - case SyntaxKind.YieldKeyword: - // 'yield' always starts an expression. Either it is an identifier (in which case - // it is definitely an expression). Or it's a keyword (either because we're in - // a generator, or in strict mode (or both)) and it started a yield expression. - return true; - - case SyntaxKind.AwaitKeyword: - // 'await' always starts an expression. Either it is an identifier (in which case - // it is definitely an expression). Or it's a keyword and it started an await - // expression. - return true; - - case SyntaxKind.AsyncKeyword: - // 'async' always starts an expression. Either it is an identifier (in which case - // it is definitely an expression). Or it's a keyword and it started an async - // function/arrow expression. - return true; - } - - return isIdentifier(currentToken); - } - - function parseExpressionStatement(): ExpressionStatementSyntax { - // ExpressionStatement[Yield] : - // [lookahead not-in {{, function, class, let [ }] Expression[In, ?Yield]; - - return new ExpressionStatementSyntax(contextFlags, - allowInAnd(parseExpression), - eatExplicitOrAutomaticSemicolon()); - } - - function parseIfStatement(ifKeyword: ISyntaxToken): IfStatementSyntax { - // IfStatement[Yield, Return] : - // if (Expression[In, ?Yield]) Statement[?Yield, ?Return] else Statement[?Yield, ?Return] - // if (Expression[In, ?Yield]) Statement[?Yield, ?Return] - - return new IfStatementSyntax(contextFlags, - consumeToken(ifKeyword), - eatToken(SyntaxKind.OpenParenToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseParenToken), - parseStatement(/*inErrorRecovery:*/ false), parseOptionalElseClause()); - } - - function parseOptionalElseClause(): ElseClauseSyntax { - return currentToken().kind === SyntaxKind.ElseKeyword ? parseElseClause() : undefined; - } - - function parseElseClause(): ElseClauseSyntax { - return new ElseClauseSyntax(contextFlags, eatToken(SyntaxKind.ElseKeyword), parseStatement(/*inErrorRecovery:*/ false)); - } - - function isVariableStatement(modifierCount: number): boolean { - return isVariableDeclaration(peekToken(modifierCount).kind); - } - - function isVariableDeclaration(tokenKind: SyntaxKind) { - // 'var' and 'const' are keywords. So we always know they start a variable declaration. - if (tokenKind === SyntaxKind.VarKeyword || tokenKind === SyntaxKind.ConstKeyword) { - return true; - } - - // 'let' is future reserved strict keyword. So it's only a keyword if we're in strict - // mode, or if we see an identifier following. - if (tokenKind === SyntaxKind.LetKeyword) { - if (inStrictModeContext()) { - return true; - } - - return isIdentifier(peekToken(1)); - } - - return false; - } - - function parseVariableStatement(): VariableStatementSyntax { - // VariableStatement[Yield] : - // var VariableDeclarationList[In, ?Yield]; - - return new VariableStatementSyntax(contextFlags, - parseModifiers(), - allowInAnd(parseVariableDeclaration), - eatExplicitOrAutomaticSemicolon()); - } - - function parseVariableDeclaration(): VariableDeclarationSyntax { - // Debug.assert(currentToken().kind === SyntaxKind.VarKeyword); - - return new VariableDeclarationSyntax(contextFlags, - consumeToken(currentToken()), - parseSeparatedSyntaxList(ListParsingState.VariableDeclaration_VariableDeclarators)); - } - - function isVariableDeclarator(): boolean { - return isIdentifier(currentToken()); - } - - function tryParseVariableDeclarator(): VariableDeclaratorSyntax { - if (!isIdentifier(currentToken())) { - return undefined; - } - - var propertyName = eatIdentifierToken(); - var equalsValueClause: EqualsValueClauseSyntax = undefined; - var typeAnnotation: TypeAnnotationSyntax = undefined; - - if (fullWidth(propertyName) > 0) { - typeAnnotation = parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false); - - if (isEqualsValueClause(/*inParameter*/ false)) { - equalsValueClause = parseEqualsValueClause(); - } - } - - return new VariableDeclaratorSyntax(contextFlags, propertyName, typeAnnotation, equalsValueClause); - } - - function isEqualsValueClause(inParameter: boolean): boolean { - var token0 = currentToken(); - if (token0.kind === SyntaxKind.EqualsToken) { - return true; - } - - // It's not uncommon during typing for the user to miss writing the '=' token. Check if - // there is no newline after the last token and if we're on an expression. If so, parse - // this as an equals-value clause with a missing equals. - if (!token0.hasLeadingNewLine()) { - var tokenKind = token0.kind; - - // The 'isExpression' call below returns true for "=>". That's because it smartly - // assumes that there is just a missing identifier and the user wanted a lambda. - // While this is sensible, we don't want to allow that here as that would mean we're - // glossing over multiple erorrs and we're probably making things worse. So don't - // treat this as an equals value clause and let higher up code handle things. - if (tokenKind === SyntaxKind.EqualsGreaterThanToken) { - return false; - } - - // There are two places where we allow equals-value clauses. The first is in a - // variable declarator. The second is with a parameter. For variable declarators - // it's more likely that a { would be a allowed (as an object literal). While this - // is also allowed for parameters, the risk is that we consume the { as an object - // literal when it really will be for the block following the parameter. - if (tokenKind === SyntaxKind.OpenBraceToken && - inParameter) { - return false; - } - - return isExpression(token0); - } - - return false; - } - - function parseEqualsValueClause(): EqualsValueClauseSyntax { - // Initializer[In, Yield] : - // = AssignmentExpression[?In, ?Yield] - - return new EqualsValueClauseSyntax(contextFlags, - eatToken(SyntaxKind.EqualsToken), - parseAssignmentExpressionOrHigher()); - } - - function parseExpression(): IExpressionSyntax { - // Expression[in]: - // AssignmentExpression[in] - // Expression[in] , AssignmentExpression[in] - - var leftOperand = parseAssignmentExpressionOrHigher(); - while (true) { - var _currentToken = currentToken(); - if (_currentToken.kind !== SyntaxKind.CommaToken) { - break; - } - - leftOperand = new BinaryExpressionSyntax(contextFlags, - leftOperand, - consumeToken(_currentToken), - parseAssignmentExpressionOrHigher()); - } - - return leftOperand; - } - - // Called when you need to parse an expression, but you do not want to allow 'CommaExpressions'. - // i.e. if you have "var a = 1, b = 2" then when we parse '1' we want to parse with higher - // precedence than 'comma'. Otherwise we'll get: "var a = (1, (b = 2))", instead of - // "var a = (1), b = (2)"); - function parseAssignmentExpressionOrHigher(): IExpressionSyntax { - // AssignmentExpression[in,yield]: - // 1) ConditionalExpression[?in,?yield] - // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield] - // 3) LeftHandSideExpression AssignmentOperator AssignmentExpression[?in,?yield] - // 4) ArrowFunctionExpression[?in,?yield] - // 5) [+Yield] YieldExpression[?In] - // - // Note: for ease of implementation we treat productions '2' and '3' as the same thing. - // (i.e. they're both BinaryExpressions with an assignment operator in it). - - // First, check if we have production '4' (an arrow function). Note that if we do, we - // must *not* recurse for productsion 1, 2 or 3. An ArrowFunction is not a - // LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done - // with AssignmentExpression if we see one. - var _currentToken = currentToken(); - if (isYieldExpression(_currentToken)) { - return parseYieldExpression(_currentToken); - } - - var arrowFunction = tryParseAnyArrowFunctionExpression(_currentToken); - if (arrowFunction) { - return arrowFunction; - } - - // Now try to see if we're in production '1', '2' or '3'. A conditional expression can - // start with a LogicalOrExpression, while the assignment productions can only start with - // LeftHandSideExpressions. - // - // So, first, we try to just parse out a BinaryExpression. If we get something that is a - // LeftHandSide or higher, then we can try to parse out the assignment expression part. - // Otherwise, we try to parse out the conditional expression bit. We want to allow any - // binary expression here, so we pass in the 'lowest' precedence here so that it matches - // and consumes anything. - var leftOperand = parseBinaryExpressionOrHigher(_currentToken, BinaryExpressionPrecedence.Lowest); - if (SyntaxUtilities.isLeftHandSizeExpression(leftOperand)) { - // Note: we call currentOperatorToken so that we get an appropriately merged token - // for cases like > > = becoming >>= - var operatorToken = currentOperatorToken(); - - // Check for recursive assignment expressions. - if (SyntaxFacts.isAssignmentOperatorToken(operatorToken.kind)) { - return new BinaryExpressionSyntax(contextFlags, - leftOperand, - consumeToken(operatorToken), - parseAssignmentExpressionOrHigher()); - } - } - - // It wasn't an assignment or a lambda. This is a conditional expression: - return parseConditionalExpressionRest(leftOperand); - } - - function parsePossibleAwaitExpression(awaitKeyword: ISyntaxToken): IUnaryExpressionSyntax { - if (inAsyncContext()) { - // If we're in an async context, then 'await' definitely starts an await expression. - return parseAwaitExpression(awaitKeyword); - } - - if (isUnambiguouslyYieldOrAwaitExpression()) { - return parseAwaitExpression(awaitKeyword); - } - - // Not an 'await' expression. Parse this with our normal postfix parsing rules. - return parsePostfixExpressionOrHigher(awaitKeyword); - } - - function parseAwaitExpression(awaitKeyword: ISyntaxToken): AwaitExpressionSyntax { - return new AwaitExpressionSyntax(contextFlags, - consumeToken(awaitKeyword), - parseUnaryExpressionOrHigher(currentToken())); - } - - function isYieldExpression(_currentToken: ISyntaxToken): boolean { - if (_currentToken.kind === SyntaxKind.YieldKeyword) { - // If we have a 'yield' keyword, and htis is a context where yield expressions are - // allowed, then definitely parse out a yield expression. - if (inYieldContext()) { - return true; - } - - if (inStrictModeContext()) { - // If we're in strict mode, then 'yield' is a keyword, could only ever start - // a yield expression. - return true; - } - - return isUnambiguouslyYieldOrAwaitExpression(); - } - - return false; - } - - function isUnambiguouslyYieldOrAwaitExpression() { - // We're in a context where 'yield expr' or 'await expr' is not allowed. However, if - // we can definitely tell that the user was trying to parse one of these then parse it - // out and report an error later in the grammar checker. - // - // for example, if we see 'yield(foo)', then we'll have to treat that as an - // invocation expression of something called 'yield'. However, if we have - // 'yield foo' then that is not legal as a normal expression, so we can - // definitely recognize this as a yield expression. - var token1 = peekToken(1); - - if (token1.hasLeadingNewLine()) { - // Next token is on the next line. Thanks to ASI, this might start some other - // construct. Can't assume this is a yield or await expr. - return false; - } - - // 'await a' or 'yield a'. Definitely a yield/await expression. C - if (isIdentifier(token1)) { - return true; - } - - var currentTokenKind = token1.kind; - switch (currentTokenKind) { - case SyntaxKind.ThisKeyword: - case SyntaxKind.TrueKeyword: - case SyntaxKind.FalseKeyword: - case SyntaxKind.NullKeyword: - case SyntaxKind.NumericLiteral: - case SyntaxKind.StringLiteral: - case SyntaxKind.FunctionKeyword: - case SyntaxKind.OpenBraceToken: - case SyntaxKind.NewKeyword: - return true - case SyntaxKind.NoSubstitutionTemplateToken: - case SyntaxKind.TemplateStartToken: - // yield `foo` - // This is a tagged template expressoin. - return false; - case SyntaxKind.SlashToken: - case SyntaxKind.SlashEqualsToken: - // yield / foo - // This is a divide expression. - return false; - case SyntaxKind.OpenBracketToken: - // yield[foo] - // This is a indexed access expression. - return false; - case SyntaxKind.OpenParenToken: - // yield(foo) - // This is an invocation expression. - return false; - default: - return false; - } - } - - function parseYieldExpression(yieldKeyword: ISyntaxToken): YieldExpressionSyntax { - // YieldExpression[In] : - // yield - // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] - // yield [no LineTerminator here] * [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] - - yieldKeyword = consumeToken(yieldKeyword); - var _currentToken = currentToken(); - - if (!_currentToken.hasLeadingNewLine() && - (_currentToken.kind === SyntaxKind.AsteriskToken || isExpression(_currentToken))) { - - return new YieldExpressionSyntax(contextFlags, yieldKeyword, tryEatToken(SyntaxKind.AsteriskToken), parseAssignmentExpressionOrHigher()); - } - else { - // if the next token is not on the same line as yield. or we don't have an '*' or - // the start of an expressin, then this is just a simple "yield" expression. - return new YieldExpressionSyntax(contextFlags, yieldKeyword, /*asterixToken:*/ undefined, /*expression;*/ undefined); - } - } - - function tryParseAnyArrowFunctionExpression(_currentToken: ISyntaxToken): IExpressionSyntax { - return isSimpleArrowFunctionExpression(_currentToken) - ? parseSimpleArrowFunctionExpression() - : tryParseParenthesizedArrowFunctionExpression(); - } - - function parseUnaryExpressionOrHigher(_currentToken: ISyntaxToken): IUnaryExpressionSyntax { - var currentTokenKind = _currentToken.kind; - - switch (currentTokenKind) { - case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: - case SyntaxKind.TildeToken: - case SyntaxKind.ExclamationToken: - case SyntaxKind.PlusPlusToken: - case SyntaxKind.MinusMinusToken: - return new PrefixUnaryExpressionSyntax(contextFlags, consumeToken(_currentToken), parseUnaryExpressionOrHigher(currentToken())); - case SyntaxKind.TypeOfKeyword: - return parseTypeOfExpression(_currentToken); - case SyntaxKind.VoidKeyword: - return parseVoidExpression(_currentToken); - case SyntaxKind.DeleteKeyword: - return parseDeleteExpression(_currentToken); - case SyntaxKind.LessThanToken: - return parseTypeAssertionExpression(_currentToken); - case SyntaxKind.AwaitKeyword: - return parsePossibleAwaitExpression(_currentToken); - default: - return parsePostfixExpressionOrHigher(_currentToken); - } - } - - function parseBinaryExpressionOrHigher(_currentToken: ISyntaxToken, precedence: BinaryExpressionPrecedence): IExpressionSyntax { - // The binary expressions are incredibly left recursive in their definitions. We - // clearly can't implement that through recursion. So, instead, we first bottom out - // of all the recursion by jumping to this production and consuming a UnaryExpression - // first. - // - // MultiplicativeExpression: See 11.5 - // UnaryExpression - var leftOperand = parseUnaryExpressionOrHigher(_currentToken); - - // We then pop up the stack consuming the other side of the binary exprssion if it exists. - return parseBinaryExpressionRest(precedence, leftOperand); - } - - function parseConditionalExpressionRest(leftOperand: IExpressionSyntax): IExpressionSyntax { - // Note: we are passed in an expression which was produced from parseBinaryExpressionOrHigher. - - var _currentToken = currentToken(); - - // Now check for conditional expression. - if (_currentToken.kind !== SyntaxKind.QuestionToken) { - return leftOperand; - } - - // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and - // we do not that for the 'whenFalse' part. - - return new ConditionalExpressionSyntax(contextFlags, - leftOperand, - consumeToken(_currentToken), - allowInAnd(parseAssignmentExpressionOrHigher), - eatToken(SyntaxKind.ColonToken), - parseAssignmentExpressionOrHigher()); - } - - function parseBinaryExpressionRest(precedence: BinaryExpressionPrecedence, leftOperand: IExpressionSyntax): IExpressionSyntax { - while (true) { - // We either have a binary operator here, or we're finished. We call - // currentOperatorToken versus currentToken here so that we merge token sequences - // like > and = into >= - var operatorToken = currentOperatorToken(); - var tokenKind = operatorToken.kind; - - // Only proceed if we see binary expression token. However we don't parse - // assignment expressions or comma expressions here. Those are taken care of - // respectively in parseAssignmentExpression and parseExpression. - if (!SyntaxFacts.isBinaryExpressionOperatorToken(tokenKind) || - tokenKind === SyntaxKind.CommaToken || - SyntaxFacts.isAssignmentOperatorToken(tokenKind)) { - - break; - } - - // also, if it's the 'in' operator, only allow if our caller allows it. - if (tokenKind === SyntaxKind.InKeyword && inDisallowInContext()) { - break; - } - - var newPrecedence = getBinaryExpressionPrecedence(tokenKind); - - // All binary operators must have precedence > 0 - // Debug.assert(newPrecedence > 0); - - // Check the precedence to see if we should "take" this operator - if (newPrecedence <= precedence) { - break; - } - - // Precedence is okay, so we'll "take" this operator. - // Now skip the operator token we're on. - - leftOperand = new BinaryExpressionSyntax(contextFlags, leftOperand, consumeToken(operatorToken), - parseBinaryExpressionOrHigher(currentToken(), newPrecedence)); - } - - return leftOperand; - } - - function currentOperatorToken(): ISyntaxToken { - var token0 = currentToken(); - - // If we see a > we need to see if we can actually merge this contextually into a - // >> >>> >= >>= >>>= token. - if (token0.kind === SyntaxKind.GreaterThanToken) { - return currentContextualToken(); - // var kind = token0.kind; - //Debug.assert(kind() === SyntaxKind.GreaterThanToken || kind() === SyntaxKind.GreaterThanGreaterThanToken || - // kind() === SyntaxKind.GreaterThanGreaterThanGreaterThanToken || kind() === SyntaxKind.GreaterThanEqualsToken || - // kind() === SyntaxKind.GreaterThanGreaterThanEqualsToken || kind() === SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken); - } - - return token0; - } - - function parseMemberExpressionOrHigher(_currentToken: ISyntaxToken): IMemberExpressionSyntax { - // Note: to make our lives simpler, we decompose the the NewExpression productions and - // place ObjectCreationExpression and FunctionExpression into PrimaryExpression. - // like so: - // - // PrimaryExpression : See 11.1 - // this - // Identifier - // Literal - // ArrayLiteral - // ObjectLiteral - // (Expression) - // FunctionExpression - // new MemberExpression Arguments? - // - // MemberExpression : See 11.2 - // PrimaryExpression - // MemberExpression[Expression] - // MemberExpression.IdentifierName - // - // CallExpression : See 11.2 - // MemberExpression - // CallExpression Arguments - // CallExpression[Expression] - // CallExpression.IdentifierName - // - // Technically this is ambiguous. i.e. CallExpression defines: - // - // CallExpression: - // CallExpression Arguments - // - // If you see: "new Foo()" - // - // Then that could be treated as a single ObjectCreationExpression, or it could be - // treated as the invocation of "new Foo". We disambiguate that in code (to match - // the original grammar) by making sure that if we see an ObjectCreationExpression - // we always consume arguments if they are there. So we treat "new Foo()" as an - // object creation only, and not at all as an invocation) Another way to think - // about this is that for every "new" that we see, we will consume an argument list if - // it is there as part of the *associated* object creation node. Any additional - // argument lists we see, will become invocation expressions. - // - // Because there are no other places in the grammar now that refer to FunctionExpression - // or ObjectCreationExpression, it is safe to push down into the PrimaryExpression - // production. - // - // Because CallExpression and MemberExpression are left recursive, we need to bottom out - // of the recursion immediately. So we parse out a primary expression to start with. - var expression = parsePrimaryExpression(_currentToken); - return parseMemberExpressionRest(expression); - } - - function parseMemberExpressionRest(expression: ILeftHandSideExpressionSyntax): ILeftHandSideExpressionSyntax { - while (true) { - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - - switch (currentTokenKind) { - case SyntaxKind.OpenBracketToken: - expression = parseElementAccessExpression(expression, _currentToken); - continue; - - case SyntaxKind.DotToken: - expression = new PropertyAccessExpressionSyntax(contextFlags, - expression, - consumeToken(_currentToken), - eatRightSideOfDot(/*allowIdentifierNames:*/ true)); - continue; - - case SyntaxKind.NoSubstitutionTemplateToken: - case SyntaxKind.TemplateStartToken: - expression = new TemplateAccessExpressionSyntax(contextFlags, expression, parseTemplateExpression(_currentToken)); - continue; - } - - return expression; - } - } - - function parseCallExpressionRest(expression: ILeftHandSideExpressionSyntax): ILeftHandSideExpressionSyntax { - while (true) { - expression = parseMemberExpressionRest(expression); - - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - - switch (currentTokenKind) { - case SyntaxKind.OpenParenToken: - expression = new InvocationExpressionSyntax(contextFlags, expression, parseArgumentList(/*typeArgumentList:*/ undefined, _currentToken)); - continue; - - case SyntaxKind.LessThanToken: - // See if this is the start of a generic invocation. If so, consume it and - // keep checking for postfix expressions. Otherwise, it's just a '<' that's - // part of an arithmetic expression. Break out so we consume it higher in the - // stack. - var argumentList = tryParseArgumentList(); - if (argumentList === undefined) { - break; - } - - expression = new InvocationExpressionSyntax(contextFlags, expression, argumentList); - continue; - } - - return expression; - } - } - - function parseLeftHandSideExpressionOrHigher(_currentToken: ISyntaxToken): ILeftHandSideExpressionSyntax { - // Original Ecma: - // LeftHandSideExpression: See 11.2 - // NewExpression - // CallExpression - // - // Our simplification: - // - // LeftHandSideExpression: See 11.2 - // MemberExpression - // CallExpression - // - // See comment in parseMemberExpressionOrHigher on how we replaced NewExpression with - // MemberExpression to make our lives easier. - // - // to best understand the below code, it's important to see how CallExpression expands - // out into its own productions: - // - // CallExpression: - // MemberExpression Arguments - // CallExpression Arguments - // CallExpression[Expression] - // CallExpression.IdentifierName - // super ( ArgumentListopt ) - // super.IdentifierName - // - // Because of the recursion in these calls, we need to bottom out first. There are two - // bottom out states we can run into. Either we see 'super' which must start either of - // the last two CallExpression productions. Or we have a MemberExpression which either - // completes the LeftHandSideExpression, or starts the beginning of the first four - // CallExpression productions. - - var expression: ILeftHandSideExpressionSyntax = _currentToken.kind === SyntaxKind.SuperKeyword - ? parseSuperExpression(_currentToken) - : parseMemberExpressionOrHigher(_currentToken); - - // Now, we *may* be complete. However, we might have consumed the start of a - // CallExpression. As such, we need to consume the rest of it here to be complete. - return parseCallExpressionRest(expression); - } - - function parseSuperExpression(superToken: ISyntaxToken): ILeftHandSideExpressionSyntax { - var expression = consumeToken(superToken); - - // If we have seen "super" it must be followed by '(' or '.'. - // If it wasn't then just try to parse out a '.' and report an error. - var currentTokenKind = currentToken().kind; - if (currentTokenKind === SyntaxKind.OpenParenToken || currentTokenKind === SyntaxKind.DotToken) { - return expression; - } - - return new PropertyAccessExpressionSyntax(contextFlags, - expression, - eatToken(SyntaxKind.DotToken), - eatRightSideOfDot(/*allowIdentifierNames:*/ true)); - } - - function parsePostfixExpressionOrHigher(_currentToken: ISyntaxToken): IPostfixExpressionSyntax { - var expression = parseLeftHandSideExpressionOrHigher(_currentToken); - - var _currentToken = currentToken(); - var currentTokenKind = _currentToken.kind; - - switch (currentTokenKind) { - case SyntaxKind.PlusPlusToken: - case SyntaxKind.MinusMinusToken: - // Because of automatic semicolon insertion, we should only consume the ++ or -- - // if it is on the same line as the previous token. - if (_currentToken.hasLeadingNewLine()) { - break; - } - - return new PostfixUnaryExpressionSyntax(contextFlags, expression, consumeToken(_currentToken)); - } - - return expression; - } - - function tryParseGenericArgumentList(): ArgumentListSyntax { - // Debug.assert(currentToken().kind === SyntaxKind.LessThanToken); - // If we have a '<', then only parse this as a arugment list if the type arguments - // are complete and we have an open paren. if we don't, rewind and return nothing. - var typeArgumentList = tryParse(speculativeParseTypeArgumentList); - if (!typeArgumentList) { - return undefined; - } - - var _currentToken = currentToken(); - if (_currentToken.kind === SyntaxKind.OpenParenToken) { - return parseArgumentList(typeArgumentList, _currentToken); - } - - // It's not uncommon for a user to type: "Foo." - // - // This is not legal in typescript (as an parameter list must follow the type - // arguments). We want to give a good error message for this as otherwise - // we'll bail out here and give a poor error message when we try to parse this - // as an arithmetic expression. - return new ArgumentListSyntax(contextFlags, typeArgumentList, - createMissingToken(SyntaxKind.OpenParenToken, undefined, DiagnosticCode.A_parameter_list_must_follow_a_generic_type_argument_list_expected), - [], - eatToken(SyntaxKind.CloseParenToken)); - } - - function speculativeParseTypeArgumentList(): TypeArgumentListSyntax { - // If we're in an expression, then we only want to consume this as a type argument list - // if we're sure that it's a type arg list and not an arithmetic expression. - - // We've seen a '<'. Try to parse it out as a type argument list. - var lessThanToken = consumeToken(currentToken()); - var typeArguments = parseSeparatedSyntaxList(ListParsingState.TypeArgumentList_Types); - var greaterThanToken = tryEatToken(SyntaxKind.GreaterThanToken); - - // We're in a context where '<' could be the start of a type argument list, or part - // of an arithmetic expression. We'll presume it's the latter unless we see the '>' - // and a following token that guarantees that it's supposed to be a type argument list. - if (greaterThanToken === undefined || !canFollowTypeArgumentListInExpression(currentToken().kind)) { - return undefined; - } - - return new TypeArgumentListSyntax(contextFlags, lessThanToken, typeArguments, greaterThanToken); - } - - function canFollowTypeArgumentListInExpression(kind: SyntaxKind): boolean { - switch (kind) { - case SyntaxKind.OpenParenToken: // foo( - case SyntaxKind.DotToken: // foo. - // These two cases are the only cases where this token can legally follow a - // type argument list. So we definitely want to treat this as a type arg list. - - case SyntaxKind.CloseParenToken: // foo) - case SyntaxKind.CloseBracketToken: // foo] - case SyntaxKind.ColonToken: // foo: - case SyntaxKind.SemicolonToken: // foo; - case SyntaxKind.CommaToken: // foo, - case SyntaxKind.QuestionToken: // foo? - case SyntaxKind.EqualsEqualsToken: // foo == - case SyntaxKind.EqualsEqualsEqualsToken: // foo === - case SyntaxKind.ExclamationEqualsToken: // foo != - case SyntaxKind.ExclamationEqualsEqualsToken: // foo !== - case SyntaxKind.AmpersandAmpersandToken: // foo && - case SyntaxKind.BarBarToken: // foo || - case SyntaxKind.CaretToken: // foo ^ - case SyntaxKind.AmpersandToken: // foo & - case SyntaxKind.BarToken: // foo | - case SyntaxKind.CloseBraceToken: // foo } - case SyntaxKind.EndOfFileToken: // foo - // these cases can't legally follow a type arg list. However, they're not legal - // expressions either. The user is probably in the middle of a generic type. So - // treat it as such. - return true; - - default: - // Anything else treat as an expression. - return false; - } - } - - function tryParseArgumentList(): ArgumentListSyntax { - var _currentToken = currentToken(); - var tokenKind = _currentToken.kind; - if (tokenKind === SyntaxKind.LessThanToken) { - return tryParseGenericArgumentList(); - } - - if (tokenKind === SyntaxKind.OpenParenToken) { - return parseArgumentList(/*typeArgumentList:*/ undefined, /*openParenToken:*/ _currentToken); - } - - return undefined; - } - - function parseArgumentList(typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken): ArgumentListSyntax { - Debug.assert(openParenToken.kind === SyntaxKind.OpenParenToken && openParenToken.fullWidth() > 0); - - return new ArgumentListSyntax(contextFlags, - typeArgumentList, - consumeToken(openParenToken), - parseSeparatedSyntaxList(ListParsingState.ArgumentList_AssignmentExpressions), - eatToken(SyntaxKind.CloseParenToken)); - } - - function tryParseArgumentListExpression(): IExpressionSyntax { - // ArgumentList[Yield] : - // AssignmentExpression[In, ?Yield] - - // Generally while parsing lists, we don't want to 'force' the parser to parse - // the item. That way, if the expected item isn't there, we can bail out and - // move to a higher stage of list parsing. However, it's extremely common to - // see something like "Foo(, a". in this case, even though there isn't an expression - // after the open paren, we still want to force parsing an expression (which will - // cause a missing identiifer to be created), so that we will then consume the - // comma and the following list items). - var force = currentToken().kind === SyntaxKind.CommaToken; - return (force || isExpression(currentToken())) ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined; - } - - function parseElementAccessArgumentExpression(openBracketToken: ISyntaxToken) { - // MemberExpression[?Yield] [ Expression[In, ?Yield] ] - - // For error recovery purposes. Allow a missing expression here. We'll report the - // appropriate message in the grammar checker. - return currentToken().kind === SyntaxKind.CloseBracketToken ? undefined : allowInAnd(parseExpression); - } - - function parseElementAccessExpression(expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken): ElementAccessExpressionSyntax { - // Debug.assert(currentToken().kind === SyntaxKind.OpenBracketToken); - return new ElementAccessExpressionSyntax(contextFlags, expression, consumeToken(openBracketToken), - parseElementAccessArgumentExpression(openBracketToken), eatToken(SyntaxKind.CloseBracketToken)); - } - - function parsePrimaryExpression(_currentToken: ISyntaxToken): IPrimaryExpressionSyntax { - var currentTokenKind = _currentToken.kind; - switch (currentTokenKind) { - case SyntaxKind.ThisKeyword: - case SyntaxKind.TrueKeyword: - case SyntaxKind.FalseKeyword: - case SyntaxKind.NullKeyword: - case SyntaxKind.NumericLiteral: - case SyntaxKind.RegularExpressionLiteral: - case SyntaxKind.StringLiteral: - return consumeToken(_currentToken); - case SyntaxKind.FunctionKeyword: - return parseFunctionExpression(); - case SyntaxKind.OpenBracketToken: - return parseArrayLiteralExpression(_currentToken); - case SyntaxKind.OpenBraceToken: - return parseObjectLiteralExpression(_currentToken); - case SyntaxKind.OpenParenToken: - return parseParenthesizedExpression(_currentToken); - case SyntaxKind.NewKeyword: - return parseObjectCreationExpression(_currentToken); - case SyntaxKind.NoSubstitutionTemplateToken: - case SyntaxKind.TemplateStartToken: - return parseTemplateExpression(_currentToken); - case SyntaxKind.SlashToken: - case SyntaxKind.SlashEqualsToken: - // If we see a standalone / or /= and we're expecting an expression, then reparse - // it as a regular expression. - return reparseDivideAsRegularExpression(); - case SyntaxKind.AsyncKeyword: - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && token1.kind === SyntaxKind.FunctionKeyword) { - return parseFunctionExpression(); - } - break; - } - - // Nothing else worked. try to eat an identifier. If we can't, we'll report an - // appropriate error. - return eatIdentifierToken(DiagnosticCode.Expression_expected); - } - - function reparseDivideAsRegularExpression(): IPrimaryExpressionSyntax { - // If we see a / or /= token, then that may actually be the start of a regex in certain - // contexts. - - // var currentToken = this.currentToken(); - // Debug.assert(SyntaxFacts.isAnyDivideToken(currentToken.kind)); - - // Ok, from our quick lexical check, this could be a place where a regular expression could - // go. Now we have to do a bunch of work. Ask the source to retrive the token at the - // current position again. But this time allow it to retrieve it as a regular expression. - var currentToken = currentContextualToken(); - - // Note: we *must* have gotten a /, /= or regular expression. Or else something went *very* - // wrong with our logic above. - // Debug.assert(SyntaxFacts.isAnyDivideOrRegularExpressionToken(currentToken.kind)); - - var tokenKind = currentToken.kind; - Debug.assert(tokenKind === SyntaxKind.RegularExpressionLiteral); - - return consumeToken(currentToken); - } - - function parseTypeOfExpression(typeOfKeyword: ISyntaxToken): TypeOfExpressionSyntax { - return new TypeOfExpressionSyntax(contextFlags, consumeToken(typeOfKeyword), parseUnaryExpressionOrHigher(currentToken())); - } - - function parseDeleteExpression(deleteKeyword: ISyntaxToken): DeleteExpressionSyntax { - return new DeleteExpressionSyntax(contextFlags, consumeToken(deleteKeyword), parseUnaryExpressionOrHigher(currentToken())); - } - - function parseVoidExpression(voidKeyword: ISyntaxToken): VoidExpressionSyntax { - return new VoidExpressionSyntax(contextFlags, consumeToken(voidKeyword), parseUnaryExpressionOrHigher(currentToken())); - } - - function parseFunctionExpression(): FunctionExpressionSyntax { - // GeneratorExpression : - // function * BindingIdentifier[Yield]opt (FormalParameters[Yield, GeneratorParameter]) { GeneratorBody[Yield] } - // FunctionExpression: - // function BindingIdentifieropt(FormalParameters) { FunctionBody } - - var asyncKeyword: ISyntaxToken; - var asteriskToken: ISyntaxToken; - return new FunctionExpressionSyntax(contextFlags, - asyncKeyword = tryEatToken(SyntaxKind.AsyncKeyword), - eatToken(SyntaxKind.FunctionKeyword), - asteriskToken = tryEatToken(SyntaxKind.AsteriskToken), - tryEatFunctionExpressionIdentifier(!!asteriskToken, !!asyncKeyword), - parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ !!asteriskToken, /*asyncContext:*/ !!asyncKeyword), - parseFunctionBody(!!asteriskToken, !!asyncKeyword)); - } - - function tryEatFunctionExpressionIdentifier(yieldContext: boolean, asyncContext: boolean) { - var savedYieldContext = inYieldContext(); - var savedAsyncContext = inAsyncContext(); - - setYieldContext(yieldContext); - setAsyncContext(asyncContext); - - var result = eatOptionalIdentifierToken(); - - setYieldContext(savedYieldContext); - setAsyncContext(savedAsyncContext); - - return result; - } - - function parseObjectCreationExpression(newKeyword: ISyntaxToken): ObjectCreationExpressionSyntax { - // ObjectCreationExpression - // new MemberExpression Arguments? - // - // Note: if we see arguments we absolutely take them and attach them tightly to this - // object creation expression. - // - // See comment in tryParseMemberExpressionOrHigher for a more complete explanation of - // this decision. - - return new ObjectCreationExpressionSyntax(contextFlags, - consumeToken(newKeyword), - parseMemberExpressionOrHigher(currentToken()), - tryParseArgumentList()); - } - - function parseTemplateExpression(startToken: ISyntaxToken): IPrimaryExpressionSyntax { - startToken = consumeToken(startToken); - - if (startToken.kind === SyntaxKind.NoSubstitutionTemplateToken) { - return startToken; - } - - var templateClauses: TemplateClauseSyntax[] = []; - - do { - // Keep consuming template spans as long as the last one we keep getting template - // middle pieces. - templateClauses.push(parseTemplateClause()); - } - while (templateClauses[templateClauses.length - 1].templateMiddleOrEndToken.kind === SyntaxKind.TemplateMiddleToken); - - return new TemplateExpressionSyntax(contextFlags, startToken, Syntax.list(templateClauses)); - } - - function parseTemplateClause(): TemplateClauseSyntax { - // TemplateLiteral[Yield] : See 12.2.8 - // NoSubstitutionTemplate - // TemplateHead Expression[In, ?Yield] - // [Lexical goal InputElementTemplateTail] TemplateSpans[?Yield] - - var expression = allowInAnd(parseExpression); - var token = currentToken(); - - if (token.kind === SyntaxKind.CloseBraceToken) { - token = currentContextualToken(); - Debug.assert(token.kind === SyntaxKind.TemplateMiddleToken || token.kind === SyntaxKind.TemplateEndToken); - token = consumeToken(token); - } - else { - token = createMissingToken(SyntaxKind.TemplateEndToken, undefined, DiagnosticCode._0_expected, ["{"]); - } - - return new TemplateClauseSyntax(contextFlags, expression, token); - } - - function parseTypeAssertionExpression(lessThanToken: ISyntaxToken): TypeAssertionExpressionSyntax { - return new TypeAssertionExpressionSyntax(contextFlags, - consumeToken(lessThanToken), - parseType(), - eatToken(SyntaxKind.GreaterThanToken), - parseUnaryExpressionOrHigher(currentToken())); - } - - function parseParenthesizedExpression(openParenToken: ISyntaxToken): ParenthesizedExpressionSyntax { - // ( Expression[In, ?Yield] ) - - return new ParenthesizedExpressionSyntax(contextFlags, - consumeToken(openParenToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseParenToken)); - } - - function tryParseParenthesizedArrowFunctionExpression(): ParenthesizedArrowFunctionExpressionSyntax { - var tokenKind = currentToken().kind; - if (tokenKind !== SyntaxKind.AsyncKeyword && tokenKind !== SyntaxKind.OpenParenToken && tokenKind !== SyntaxKind.LessThanToken) { - return undefined; - } - - // Because arrow functions and parenthesized expressions look similar, we have to check far - // enough ahead to be sure we've actually got an arrow function. For example, both nodes can - // start with: - // (a = b, c = d, ..., e = f). - //So we effectively need infinite lookahead to decide which node we're in. - // - // First, check for things that definitely have enough information to let us know it's an - // arrow function. - - if (isDefinitelyArrowFunctionExpression()) { - // We have something like "() =>" or "(a) =>". Definitely a lambda, so parse it - // unilaterally as such. - return parseParenthesizedArrowFunctionExpressionWorker(/*requireArrow:*/ false); - } - - // Now, look for cases where we're sure it's not an arrow function. This will help save us - // a costly parse. - - if (!isPossiblyArrowFunctionExpression()) { - return undefined; - } - - return tryParse(speculativeParseParenthesizedArrowFunctionExpression); - } - - function speculativeParseParenthesizedArrowFunctionExpression() { - return parseParenthesizedArrowFunctionExpressionWorker(/*requireArrow:*/ true); - } - - function parseParenthesizedArrowFunctionExpressionWorker(requireArrow: boolean): ParenthesizedArrowFunctionExpressionSyntax { - var asyncKeyword = tryEatToken(SyntaxKind.AsyncKeyword); - - // From the static semantic section: - // 1.If the [Yield] grammar parameter is present for CoverParenthesizedExpressionAndArrowParameterList[Yield] - // return the result of parsing the lexical token stream matched by CoverParenthesizedExpressionAndArrowParameterList[Yield] - // using ArrowFormalParameters[Yield, GeneratorParameter] as the goal symbol. - // 2.If the [Yield] grammar parameter is not present for CoverParenthesizedExpressionAndArrowParameterList[Yield] - // return the result of parsing the lexical token stream matched by CoverParenthesizedExpressionAndArrowParameterList - // using ArrowFormalParameters as the goal symbol. - var callSignature = parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ true, /*yieldAndGeneratorParameterContext:*/ inYieldContext(), /*asyncContext:*/ !!asyncKeyword); - if (requireArrow && currentToken().kind !== SyntaxKind.EqualsGreaterThanToken) { - return undefined; - } - - return new ParenthesizedArrowFunctionExpressionSyntax(contextFlags, - asyncKeyword, - callSignature, - eatToken(SyntaxKind.EqualsGreaterThanToken), - parseArrowFunctionBody(!!asyncKeyword)); - } - - function parseArrowFunctionBody(asyncContext: boolean): BlockSyntax | IExpressionSyntax { - // ConciseBody[In] : - // [lookahead not in {] AssignmentExpression[?In] - // { FunctionBody } - - if (currentToken().kind === SyntaxKind.OpenBraceToken) { - // arrow functions are never generators, so their bodies are never in the yield context. - return parseFunctionBlock(/*yieldContext:*/ false, /*asyncContext:*/ asyncContext, /*equalsGreaterThanToken:*/ undefined); - } - - // We didn't have a block. However, we may be in an error situation. For example, - // if the user wrote: - // - // a => - // var v = 0; - // } - // - // (i.e. they're missing the open brace). See if that's the case so we can try to - // recover better. If we don't do this, then the next close curly we see may end - // up preemptively closing the containing construct. - var _modifierCount = modifierCount(); - if (isStatement(_modifierCount, /*inErrorRecovery:*/ false) && - !isExpression(currentToken())) { - // We've seen a statement (and it isn't an expressionStatement like 'foo()'), so - // treat this like a block with a missing open brace. - - return new BlockSyntax(contextFlags, - /*equalsGreaterThanToken*/ undefined, - eatToken(SyntaxKind.OpenBraceToken), - parseFunctionBlockStatements(/*yieldContext:*/ false, asyncContext), - eatToken(SyntaxKind.CloseBraceToken)); - } - - return asyncContext ? doInsideAsyncContext(parseAssignmentExpressionOrHigher) : doOutsideAsyncContext(parseAssignmentExpressionOrHigher); - } - - function isSimpleArrowFunctionExpression(_currentToken: ISyntaxToken): boolean { - // ERROR RECOVERY TWEAK: - // If we see a standalone => try to parse it as an arrow function as that's likely what - // the user intended to write. - if (_currentToken.kind === SyntaxKind.EqualsGreaterThanToken) { - return true; - } - - // 'async a' is always the start of an async arrow function. - if (_currentToken.kind === SyntaxKind.AsyncKeyword) { - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && isIdentifier(peekToken(1))) { - return true; - } - } - - return isIdentifier(_currentToken) && - peekToken(1).kind === SyntaxKind.EqualsGreaterThanToken; - } - - function parseSimpleArrowFunctionExpression(): SimpleArrowFunctionExpressionSyntax { - var asyncKeyword: ISyntaxToken; - return new SimpleArrowFunctionExpressionSyntax(contextFlags, - asyncKeyword = tryEatToken(SyntaxKind.AsyncKeyword), - asyncKeyword ? doInsideAsyncContext(eatSimpleParameter) : doOutsideAsyncContext(eatSimpleParameter), - eatToken(SyntaxKind.EqualsGreaterThanToken), - parseArrowFunctionBody(/*asyncContext:*/ !!asyncKeyword)); - } - - function isStartOfFunctionBlock(): boolean { - var currentTokenKind = currentToken().kind; - return currentTokenKind === SyntaxKind.OpenBraceToken || currentTokenKind === SyntaxKind.EqualsGreaterThanToken; - } - - function isBlockOrArrow(): boolean { - var _currentToken = currentToken(); - return _currentToken.kind === SyntaxKind.OpenBraceToken || _currentToken.kind === SyntaxKind.EqualsGreaterThanToken; - } - - function isDefinitelyArrowFunctionExpression(): boolean { - var peekIndex = 0; - if (currentToken().kind === SyntaxKind.AsyncKeyword) { - if (peekToken(1).hasLeadingNewLine()) { - return false; - } - - // skip past any 'async' keyword we see. - peekIndex++; - } - - var token0 = peekToken(peekIndex); - if (token0.kind !== SyntaxKind.OpenParenToken) { - // If it didn't start with an (, then it could be generic. That's too complicated - // and we can't say it's 'definitely' an arrow function. - return false; - } - - var token1 = peekToken(peekIndex + 1); - var token1Kind = token1.kind; - - var token2: ISyntaxToken; - - if (token1Kind === SyntaxKind.CloseParenToken) { - // () - // Definitely an arrow function. Could never be a parenthesized expression. - // *However*, because of error situations, we could end up with things like "().foo". - // In this case, we don't want to think of this as the start of an arrow function. - // To prevent this, we are a little stricter, and we require that we at least see: - // "():" or "() =>" or "() {}". Note: the last one is illegal. However it - // most likely is a missing => and not a parenthesized expression. - token2 = peekToken(peekIndex + 2); - var token2Kind = token2.kind; - return token2Kind === SyntaxKind.ColonToken || - token2Kind === SyntaxKind.EqualsGreaterThanToken || - token2Kind === SyntaxKind.OpenBraceToken; - } - - if (token1Kind === SyntaxKind.DotDotDotToken) { - // (... - // Definitely an arrow function. Could never be a parenthesized expression. - return true; - } - - token2 = peekToken(peekIndex + 2); - token2Kind = token2.kind; - - if (SyntaxFacts.isAccessibilityModifier(token1Kind)) { - if (isIdentifier(token2)) { - // "(public id" or "(function id". Definitely an arrow function. Could never - // be a parenthesized expression. Note: this will be an *illegal* arrow - // function (as accessibility modifiers are not allowed in it). However, that - // will be reported by the grammar checker walker. - return true; - } - } - - if (!isIdentifier(token1)) { - // All other arrow functions must start with (id - // so this is definitely not an arrow function. - return false; - } - - // (id - // - // Lots of options here. Check for things that make us certain it's an - // arrow function. - if (token2Kind === SyntaxKind.ColonToken) { - // (id: - // Definitely an arrow function. Could never be a parenthesized expression. - return true; - } - - var token3 = peekToken(peekIndex + 3); - var token3Kind = token3.kind; - if (token2Kind === SyntaxKind.QuestionToken) { - // (id? - // Could be an arrow function, or a parenthesized conditional expression. - - // Check for the things that could only be arrow functions. - if (token3Kind === SyntaxKind.ColonToken || - token3Kind === SyntaxKind.CloseParenToken || - token3Kind === SyntaxKind.CommaToken) { - // (id?: - // (id?) - // (id?, - // These are the only cases where this could be an arrow function. - // And none of them can be parenthesized expression. - return true; - } - } - - if (token2Kind === SyntaxKind.CloseParenToken) { - // (id) - // Could be an arrow function, or a parenthesized conditional expression. - - if (token3Kind === SyntaxKind.EqualsGreaterThanToken) { - // (id) => - // Definitely an arrow function. Could not be a parenthesized expression. - return true; - } - - // Note: "(id):" *looks* like it could be an arrow function. However, it could - // show up in: "foo ? (id): - // So we can't return true here for that case. - } - - // TODO: Add more cases if you're sure that there is enough information to know to - // parse this as an arrow function. Note: be very careful here. - - // Anything else wasn't clear enough. Try to parse the expression as an arrow function and bail out - // if we fail. - return false; - } - - function isPossiblyArrowFunctionExpression(): boolean { - var peekIndex = 0; - if (currentToken().kind === SyntaxKind.AsyncKeyword) { - if (peekToken(1).hasLeadingNewLine()) { - return false; - } - - peekIndex++; - } - - var token0 = peekToken(peekIndex); - if (token0.kind !== SyntaxKind.OpenParenToken) { - // If it didn't start with an (, then it could be generic. That's too complicated - // and we have to say it's possibly an arrow function. - return true; - } - - var token1 = peekToken(peekIndex + 1); - - if (!isIdentifier(token1)) { - // All other arrow functions must start with (id - // so this is definitely not an arrow function. - return false; - } - - var token2 = peekToken(peekIndex + 2); - var token2Kind = token2.kind; - if (token2Kind === SyntaxKind.EqualsToken) { - // (id = - // - // This *could* be an arrow function. i.e. (id = 0) => { } - // Or it could be a parenthesized expression. So we'll have to actually - // try to parse it. - return true; - } - - if (token2Kind === SyntaxKind.CommaToken) { - // (id, - - // This *could* be an arrow function. i.e. (id, id2) => { } - // Or it could be a parenthesized expression (as javascript supports - // the comma operator). So we'll have to actually try to parse it. - return true; - } - - if (token2Kind === SyntaxKind.CloseParenToken) { - // (id) - - var token3 = peekToken(peekIndex + 3); - if (token3.kind === SyntaxKind.ColonToken) { - // (id): - // - // This could be an arrow function. i.e. (id): number => { } - // Or it could be parenthesized exprssion: foo ? (id) : - // So we'll have to actually try to parse it. - return true; - } - } - - // Nothing else could be an arrow function. - return false; - } - - function parseObjectLiteralExpression(openBraceToken: ISyntaxToken): ObjectLiteralExpressionSyntax { - // Debug.assert(currentToken().kind === SyntaxKind.OpenBraceToken); - return new ObjectLiteralExpressionSyntax(contextFlags, - consumeToken(openBraceToken), - parseSeparatedSyntaxList(ListParsingState.ObjectLiteralExpression_PropertyAssignments), - eatToken(SyntaxKind.CloseBraceToken)); - } - - function tryParsePropertyAssignment(inErrorRecovery: boolean): IPropertyAssignmentSyntax { - // Debug.assert(isPropertyAssignment(/*inErrorRecovery:*/ false)); - - var modifiers = parseModifiers(); - if (isAccessor(inErrorRecovery)) { - return parseAccessor(modifiers); - } - - // Note: we don't want to call parsePropertyName here yet as it will convert a keyword - // to an identifier name. We don't want to do that yet as a keyword is not legal as a - // shorthand property assignment. - - var _currentToken = currentToken(); - if (modifiers.length === 0) { - if (isIdentifier(_currentToken)) { - var token1 = peekToken(1); - if (token1.kind !== SyntaxKind.ColonToken && - token1.kind !== SyntaxKind.OpenParenToken && - token1.kind !== SyntaxKind.LessThanToken) { - - // If we don't have one of: - // - // id: - // id( - // id< - // - // then this is a shorthand property assignment. Just return the identifier - // token as is. - return eatIdentifierToken(); - } - } - } - - // All the rest of the property assignments start with property names, an asterix. - // They are: - // id: e - // [e1]: e2 - // id() { } - // [e]() { } - // *id() { } - // *[e]() { } - // async id() { } - // async [e]() { } - if (modifiers.length > 0 || _currentToken.kind === SyntaxKind.AsteriskToken || isPropertyName(/*peekIndex:*/ 0, inErrorRecovery)) { - var asterixToken = tryEatToken(SyntaxKind.AsteriskToken); - var propertyName = parsePropertyName(); - - if (modifiers.length > 0 || asterixToken !== undefined || isCallSignature(/*peekIndex:*/ 0)) { - return parseMethodDeclaration(modifiers, asterixToken, propertyName); - } - else { - // PropertyName[?Yield] : AssignmentExpression[In, ?Yield] - - // If we didn't have an identifier, then we must have gotten a keyword or a - // literal. Neither of these are allowed in a shorthand property, so this must - // be a simple property assignment. - // - // Also, if we have an identifier and it is followed by a colon then this is - // definitely a simple property assignment. - return new PropertyAssignmentSyntax(contextFlags, - propertyName, - eatToken(SyntaxKind.ColonToken), - allowInAnd(parseAssignmentExpressionOrHigher)); - } - } - - return undefined; - } - - function isPropertyAssignment(inErrorRecovery: boolean): boolean { - return isAtModifier() || - isAccessor(inErrorRecovery) || - currentToken().kind === SyntaxKind.AsteriskToken || - isPropertyName(/*peekIndex:*/ 0, inErrorRecovery); - } - - function isPropertyName(peekIndex: number, inErrorRecovery: boolean): boolean { - var token = peekToken(peekIndex); - if (token.kind === SyntaxKind.OpenBracketToken) { - // A '[' only starts a property name as long as we're sure it doesn't start an - // index signature. - return !isIndexSignature(peekIndex); - } - - return isPropertyNameToken(token, inErrorRecovery); - } - - function isPropertyNameToken(token: ISyntaxToken, inErrorRecovery: boolean): boolean { - // NOTE: we do *not* want to check "isIdentifier" here. Any IdentifierName is - // allowed here, even reserved words like keywords. - if (SyntaxFacts.isIdentifierNameOrAnyKeyword(token)) { - // Except: if we're in error recovery, then we don't want to consider keywords. - // After all, if we have: - // - // { a: 1 - // return - // - // we don't want consider 'return' to be the next property in the object literal. - if (inErrorRecovery) { - return isIdentifier(token); - } - else { - return true; - } - } - - return isLiteralPropertyName(token); - } - - function isLiteralPropertyName(token: ISyntaxToken): boolean { - // We allow a template literal while parser for error tolerance. We'll report errors - // on this later in the grammar checker walker. - var kind = token.kind; - return kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.NoSubstitutionTemplateToken; - } - - function parsePropertyName(): IPropertyNameSyntax { - // PropertyName[Yield,GeneratorParameter] : See 12.2.5 - // LiteralPropertyName - // [+GeneratorParameter]ComputedPropertyName - // [~GeneratorParameter]ComputedPropertyName[?Yield] - - var _currentToken = currentToken(); - if (_currentToken.kind === SyntaxKind.OpenBracketToken) { - return inGeneratorParameterContext() - ? doOutsideYieldContext(parseComputedPropertyName) - : parseComputedPropertyName(); - } - else if (SyntaxFacts.isIdentifierNameOrAnyKeyword(_currentToken)) { - // If it was a keyword, convert it to an identifier name. - return eatIdentifierNameToken(); - } - else if (isLiteralPropertyName(_currentToken)) { - // Must have been a literal. - return consumeToken(_currentToken); - } - else { - return eatIdentifierToken(); - } - } - - function parseComputedPropertyName(): ComputedPropertyNameSyntax { - // ComputedPropertyName[Yield] : - // [AssignmentExpression[In, ?Yield]] - - // Note: we allow any expression inside the computed property name. We'll report any - // issues later in the grammar checker if an invalid expression is provided. - return new ComputedPropertyNameSyntax(contextFlags, - eatToken(SyntaxKind.OpenBracketToken), - allowInAnd(parseExpression), - eatToken(SyntaxKind.CloseBracketToken)); - } - - function parseArrayLiteralExpression(openBracketToken: ISyntaxToken): ArrayLiteralExpressionSyntax { - // Debug.assert(currentToken().kind === SyntaxKind.OpenBracketToken); - return new ArrayLiteralExpressionSyntax(contextFlags, - consumeToken(openBracketToken), - parseSeparatedSyntaxList(ListParsingState.ArrayLiteralExpression_AssignmentExpressions), - eatToken(SyntaxKind.CloseBracketToken)); - } - - function parseStatementBlock(): BlockSyntax { - // Different from function blocks in that we don't check for strict mode, nor do accept - // a block without an open curly. - var openBraceToken: ISyntaxToken; - return new BlockSyntax(contextFlags, - tryEatToken(SyntaxKind.EqualsGreaterThanToken), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.Block_Statements) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function parseFunctionBlockOrExpressionBody(yieldContext: boolean, asyncContext: boolean): BlockSyntax | ExpressionBody { - // If we got an errant => then we want to parse what's coming up without requiring an - // open brace. We do this because it's not uncommon for people to get confused as to - // where/when they can use an => and we want to have good error recovery here. - var equalsGreaterThanToken = tryEatToken(SyntaxKind.EqualsGreaterThanToken); - if (equalsGreaterThanToken) { - // check if they wrote something like: => expr - // or if it was more like : => statement - if (isExpression(currentToken())) { - return new ExpressionBody(contextFlags, equalsGreaterThanToken, parseExpression()); - } - } - - return parseFunctionBlock(yieldContext, asyncContext, equalsGreaterThanToken); - } - - function parseFunctionBlock(yieldContext: boolean, asyncContext: boolean, equalsGreaterThanToken: ISyntaxToken): BlockSyntax { - var openBraceToken: ISyntaxToken; - return new BlockSyntax(contextFlags, - equalsGreaterThanToken, - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), - equalsGreaterThanToken || openBraceToken.fullWidth() > 0 ? parseFunctionBlockStatements(yieldContext, asyncContext) : [], - eatToken(SyntaxKind.CloseBraceToken)); - } - - function parseFunctionBlockStatements(yieldContext: boolean, asyncContext: boolean) { - var savedStrictModeContext = inStrictModeContext(); - var savedYieldContext = inYieldContext(); - var savedAsyncContext = inAsyncContext(); - - setYieldContext(yieldContext); - setAsyncContext(asyncContext); - - var statements = parseSyntaxList(ListParsingState.Block_Statements, updateStrictModeState); - - setStrictModeContext(savedStrictModeContext); - setYieldContext(savedYieldContext); - setAsyncContext(savedAsyncContext); - - return statements; - } - - function parseCallSignatureWithoutSemicolonOrComma(requireCompleteTypeParameterList: boolean, yieldAndGeneratorParameterContext: boolean, asyncContext: boolean): CallSignatureSyntax { - return parseCallSignatureWorker(requireCompleteTypeParameterList, yieldAndGeneratorParameterContext, asyncContext, /*withSemicolon:*/ false); - } - - function parseCallSignatureWithSemicolonOrComma(requireCompleteTypeParameterList: boolean, yieldAndGeneratorParameterContext: boolean, asyncContext: boolean): CallSignatureSyntax { - return parseCallSignatureWorker(requireCompleteTypeParameterList, yieldAndGeneratorParameterContext, asyncContext, /*withSemicolon:*/ true); - } - - function parseCallSignatureWorker(requireCompleteTypeParameterList: boolean, yieldAndGeneratorParameterContext: boolean, asyncContext: boolean, withSemicolonOrComma: boolean): CallSignatureSyntax { - return new CallSignatureSyntax(contextFlags, - tryParseTypeParameterList(requireCompleteTypeParameterList), - parseParameterList(yieldAndGeneratorParameterContext, asyncContext), - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), - withSemicolonOrComma ? eatExplicitOrAutomaticSemicolonOrComma() : undefined); - } - - function eatExplicitOrAutomaticSemicolonOrComma() { - var _currentToken = currentToken(); - if (_currentToken.kind === SyntaxKind.CommaToken) { - return consumeToken(_currentToken); - } - - return eatExplicitOrAutomaticSemicolon(); - } - - function tryParseTypeParameterList(requireCompleteTypeParameterList: boolean): TypeParameterListSyntax { - var _currentToken = currentToken(); - if (_currentToken.kind !== SyntaxKind.LessThanToken) { - return undefined; - } - - return requireCompleteTypeParameterList - ? tryParse(speculativeParseTypeParameterList) - : parseTypeArgumentListWorker(/*requireCompleteTypeParameterList:*/ false); - } - - function speculativeParseTypeParameterList() { - return parseTypeArgumentListWorker(/*requireCompleteTypeParameterList:*/ true); - } - - function parseTypeArgumentListWorker(requireCompleteTypeParameterList: boolean) { - var lessThanToken = consumeToken(currentToken()); - var typeParameters = parseSeparatedSyntaxList(ListParsingState.TypeParameterList_TypeParameters); - - // return undefined if we were required to have a '>' token and we did not have one. - if (requireCompleteTypeParameterList && currentToken().kind !== SyntaxKind.GreaterThanToken) { - return undefined; - } - - return new TypeParameterListSyntax(contextFlags, lessThanToken, typeParameters, eatToken(SyntaxKind.GreaterThanToken)); - } - - function isTypeParameter(): boolean { - return isIdentifier(currentToken()); - } - - function tryParseTypeParameter(): TypeParameterSyntax { - // Debug.assert(isTypeParameter()); - if (!isIdentifier(currentToken())) { - return undefined; - } - - return new TypeParameterSyntax(contextFlags, eatIdentifierToken(), tryParseConstraint()); - } - - function tryParseConstraint(): ConstraintSyntax { - if (currentToken().kind !== SyntaxKind.ExtendsKeyword) { - return undefined; - } - - return new ConstraintSyntax(contextFlags, eatToken(SyntaxKind.ExtendsKeyword), parseTypeOrExpression()); - } - - // Note: after careful analysis of the grammar, it does not appear to be possible to - // have 'Yield' And 'GeneratorParameter' not in sync. i.e. any production calling - // this FormalParameters production either always sets both to true, or always sets - // both to false. As such we only have a single parameter to represent both. - function parseParameterList(yieldAndGeneratorParameterContext: boolean, asyncContext: boolean): ParameterListSyntax { - // FormalParameters[Yield,GeneratorParameter] : - // ... - // - // FormalParameter[Yield,GeneratorParameter] : - // BindingElement[?Yield, ?GeneratorParameter] - // - // BindingElement[Yield, GeneratorParameter ] : See 13.2.3 - // SingleNameBinding[?Yield, ?GeneratorParameter] - // [+GeneratorParameter]BindingPattern[?Yield, GeneratorParameter]Initializer[In]opt - // [~GeneratorParameter]BindingPattern[?Yield]Initializer[In, ?Yield]opt - // - // SingleNameBinding[Yield, GeneratorParameter] : See 13.2.3 - // [+GeneratorParameter]BindingIdentifier[Yield]Initializer[In]opt - // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt - - - var savedYieldContext = inYieldContext(); - var savedGeneratorParameterContext = inGeneratorParameterContext(); - var savedAsyncContext = inAsyncContext(); - - setYieldContext(yieldAndGeneratorParameterContext); - setGeneratorParameterContext(yieldAndGeneratorParameterContext); - setAsyncContext(asyncContext); - - var openParenToken: ISyntaxToken; - var result = new ParameterListSyntax(contextFlags, - openParenToken = eatToken(SyntaxKind.OpenParenToken), - openParenToken.fullWidth() > 0 ? parseSeparatedSyntaxList(ListParsingState.ParameterList_Parameters) : [], - eatToken(SyntaxKind.CloseParenToken)); - - setYieldContext(savedYieldContext); - setGeneratorParameterContext(savedGeneratorParameterContext); - setAsyncContext(savedAsyncContext); - - return result; - } - - function parseOptionalTypeAnnotation(allowStringLiteral: boolean): TypeAnnotationSyntax { - return currentToken().kind === SyntaxKind.ColonToken ? parseTypeAnnotation(allowStringLiteral) : undefined; - } - - function parseTypeAnnotationType(allowStringLiteral: boolean): ITypeSyntax { - if (allowStringLiteral) { - var _currentToken = currentToken(); - if (_currentToken.kind === SyntaxKind.StringLiteral) { - return consumeToken(_currentToken); - } - } - - return parseType(); - } - - function parseTypeAnnotation(allowStringLiteral: boolean): TypeAnnotationSyntax { - return new TypeAnnotationSyntax(contextFlags, consumeToken(currentToken()), parseTypeAnnotationType(allowStringLiteral)); - } - - function isType(): boolean { - var _currentToken = currentToken(); - - switch (_currentToken.kind) { - case SyntaxKind.TypeOfKeyword: - case SyntaxKind.AnyKeyword: - case SyntaxKind.NumberKeyword: - case SyntaxKind.BooleanKeyword: - case SyntaxKind.StringKeyword: - case SyntaxKind.VoidKeyword: - case SyntaxKind.OpenBraceToken: - case SyntaxKind.OpenParenToken: - case SyntaxKind.LessThanToken: - case SyntaxKind.NewKeyword: - return true; - default: - return isIdentifier(_currentToken); - } - } - - function parseTypeOrExpression(): ISyntaxNodeOrToken { - var result: ISyntaxNodeOrToken = tryParseType(); - if (result) { - return result; - } - - var _currentToken = currentToken(); - if (isExpression(_currentToken)) { - // We parse out an expression here, but we very specifically ask for a unary - // expression, and not just any expression. That's because if we have: - // - // - // - // We do not want the > to be consumed as part of the "" expression. By starting - // at 'unary' expression and not 'binary' expression, we ensure that we don't accidently - // consume the >. - return parseUnaryExpressionOrHigher(_currentToken); - } - - return eatIdentifierToken(DiagnosticCode.Type_expected); - } - - function parseType(): ITypeSyntax { - return tryParseType() || eatIdentifierToken(DiagnosticCode.Type_expected); - } - - function tryParseType(): ITypeSyntax { - // The rules about 'yield' only apply to actual code/expression contexts. They don't - // apply to 'type' contexts. So we disable these parameters here before moving on. - var savedYieldContext = inYieldContext(); - var savedGeneratorParameterContext = inGeneratorParameterContext(); - - setYieldContext(false); - setGeneratorParameterContext(false); - - var result = tryParseTypeWorker(); - - setYieldContext(savedYieldContext); - setGeneratorParameterContext(savedGeneratorParameterContext); - - return result; - } - - function tryParseTypeWorker(): ITypeSyntax { - if (isFunctionType()) { - return parseFunctionType(); - } - - if (currentToken().kind === SyntaxKind.NewKeyword) { - return parseConstructorType(); - } - - return tryParseUnionTypeOrHigher(); - } - - function tryParseUnionTypeOrHigher(): ITypeSyntax { - var type = tryParsePrimaryType(); - - if (type) { - var barToken: ISyntaxToken; - while ((barToken = currentToken()).kind === SyntaxKind.BarToken) { - type = new UnionTypeSyntax(contextFlags, type, consumeToken(barToken), parsePrimaryType()); - } - } - - return type; - } - - function parsePrimaryType(): ITypeSyntax { - return tryParsePrimaryType() || eatIdentifierToken(DiagnosticCode.Type_expected); - } - - function tryParsePrimaryType(): ITypeSyntax { - // First consume any underlying element type. - var type = tryParseNonArrayType(); - - // ArrayType: - // ElementType [no LineTerminator here] [ ] - - // Now, we want to keep consuming pairs of brackets, as long as the opening bracket - // is on the same line as the last token. - while (type) { - var _currentToken = currentToken(); - - if (_currentToken.hasLeadingNewLine() || - _currentToken.kind !== SyntaxKind.OpenBracketToken) { - break; - } - - type = new ArrayTypeSyntax(contextFlags, type, consumeToken(_currentToken), eatToken(SyntaxKind.CloseBracketToken)); - } - - return type; - } - - function parseTypeQuery(typeOfKeyword: ISyntaxToken): TypeQuerySyntax { - return new TypeQuerySyntax(contextFlags, consumeToken(typeOfKeyword), parseName(/*allowIdentifierNames:*/ true)); - } - - function tryParseNonArrayType(): ITypeSyntax { - var _currentToken = currentToken(); - switch (_currentToken.kind) { - case SyntaxKind.AnyKeyword: - case SyntaxKind.NumberKeyword: - case SyntaxKind.BooleanKeyword: - case SyntaxKind.StringKeyword: - // if any of these are followed by '.', then this is actually a module name, - // and these keywords will be reinterpreted as an identifier. - if (peekToken(1).kind === SyntaxKind.DotToken) { - break; - } - - return consumeToken(_currentToken); - case SyntaxKind.VoidKeyword: return consumeToken(_currentToken); - case SyntaxKind.OpenParenToken: return parseParenthesizedType(_currentToken); - case SyntaxKind.OpenBraceToken: return parseObjectType(); - case SyntaxKind.TypeOfKeyword: return parseTypeQuery(_currentToken); - case SyntaxKind.OpenBracketToken: return parseTupleType(_currentToken); - } - - return tryParseNameOrGenericType(); - } - - function parseParenthesizedType(openParenToken: ISyntaxToken): ParenthesizedTypeSyntax { - return new ParenthesizedTypeSyntax(contextFlags, consumeToken(openParenToken), parseType(), eatToken(SyntaxKind.CloseParenToken)); - } - - function tryParseNameOrGenericType(): ITypeSyntax { - var name = tryParseName(/*allowIdentifierNames*/ false); - if (name === undefined) { - return undefined; - } - - // TypeReference: - // TypeName [no LineTerminator here] TypeArgumentsopt - // - // Only consume type arguments if they appear on the same line. - if (currentToken().hasLeadingNewLine()) { - return name; - } - - var _currentToken = currentToken(); - if (_currentToken.kind !== SyntaxKind.LessThanToken) { - return name; - } - - return new GenericTypeSyntax(contextFlags, - name, - new TypeArgumentListSyntax(contextFlags, - consumeToken(_currentToken), - parseSeparatedSyntaxList(ListParsingState.TypeArgumentList_Types), - eatToken(SyntaxKind.GreaterThanToken))); - } - - function isFunctionType(): boolean { - var token0 = currentToken(); - var token0Kind = token0.kind; - - // If we see a < then we consider ourselves to be definitely in a (generic) function type. - if (token0Kind === SyntaxKind.LessThanToken) { - return true; - } - - // If we don't see a < then we have to see an open paren for this to be a function - // type. However, an open paren may also start a parenthesized type. So we need to - // do some lookahead to see what we've actually got. If we don't see enough to be - // sure that it's a function type, then we go ahead with the assumption that it's a - // parenthesized type. - if (token0Kind === SyntaxKind.OpenParenToken) { - var token1 = peekToken(1); - var token1Kind = token1.kind; - - if (token1Kind === SyntaxKind.CloseParenToken || token1Kind === SyntaxKind.DotDotDotToken) { - // () - // (... - // - // Both are definitely function types, and could not be paren types. - return true; - } - - if (isModifierKind(token1Kind) || isIdentifier(token1)) { - // (id - // could be a function type or a parenthesized type. - - var token2 = peekToken(2); - var token2Kind = token2.kind; - - if (token2Kind === SyntaxKind.ColonToken || - token2Kind === SyntaxKind.CommaToken || - token2Kind === SyntaxKind.QuestionToken || - token2Kind === SyntaxKind.EqualsToken || - isIdentifier(token2) || - isModifierKind(token2Kind)) { - // ( id : - // ( id , - // ( id ? - // ( id = - // ( modifier id - // - // All of these are definitely a function type and not a parenthesized type. - return true; - } - - if (token2Kind === SyntaxKind.CloseParenToken) { - // ( id ) - // - // Only a function type if we see an arrow following it. - return peekToken(3).kind === SyntaxKind.EqualsGreaterThanToken; - } - } - } - - // Anything else is a parenthesized type. - return false; - } - - function parseFunctionType(): FunctionTypeSyntax { - // Function types only exist in the type space and not the expression space. So they - // aren't in the [Yield] or [GeneratorParameter] context. - return new FunctionTypeSyntax(contextFlags, - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), - parseParameterList(/*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), - eatToken(SyntaxKind.EqualsGreaterThanToken), parseType()); - } - - function parseConstructorType(): ConstructorTypeSyntax { - // Constructor types only exist in the type space and not the expression space. So they - // aren't in the [Yield] or [GeneratorParameter] context. - return new ConstructorTypeSyntax(contextFlags, - eatToken(SyntaxKind.NewKeyword), - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), - parseParameterList(/*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), - eatToken(SyntaxKind.EqualsGreaterThanToken), parseType()); - } - - function isParameter(): boolean { - return isParameterHelper(currentToken()); - } - - function isParameterHelper(token: ISyntaxToken): boolean { - var tokenKind = token.kind; - return tokenKind === SyntaxKind.DotDotDotToken || - isModifierKind(tokenKind) || - isIdentifier(token); - } - - function eatSimpleParameter() { - return new ParameterSyntax(contextFlags, - /*dotDotDotToken:*/ undefined, /*modifiers:*/[], eatIdentifierToken(), - /*questionToken:*/ undefined, /*typeAnnotation:*/ undefined, /*equalsValueClause:*/ undefined); - } - - function tryParseParameter(): ParameterSyntax { - var dotDotDotToken = tryEatToken(SyntaxKind.DotDotDotToken); - var modifiers = parseModifiers(); - - // If we're not forcing, and we don't see anything to indicate this is a parameter, then - // bail out. - var _currentToken = currentToken(); - if (!isIdentifier(_currentToken) && !dotDotDotToken && modifiers.length === 0) { - // ERROR RECOVERY: - // If we see a modifier alone in a parameter list, like: foo(static) - // - // then treat it like modifier, and continue parsing the parameter. - if (isModifierKind(_currentToken.kind)) { - modifiers = Syntax.list([consumeToken(_currentToken)]); - } - else { - return undefined; - } - } - - // SingleNameBinding[Yield,GeneratorParameter] : See 13.2.3 - // [+GeneratorParameter]BindingIdentifier[Yield]Initializer[In]opt - // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt - - var identifier = inGeneratorParameterContext() - ? doInsideYieldContext(eatIdentifierToken) - : eatIdentifierToken(); - - var questionToken = tryEatToken(SyntaxKind.QuestionToken); - var typeAnnotation = parseOptionalTypeAnnotation(/*allowStringLiteral:*/ true); - - var equalsValueClause: EqualsValueClauseSyntax = undefined; - if (isEqualsValueClause(/*inParameter*/ true)) { - equalsValueClause = inGeneratorParameterContext() - ? doOutsideYieldContext(parseEqualsValueClause) - : parseEqualsValueClause(); - } - - return new ParameterSyntax(contextFlags, dotDotDotToken, modifiers, identifier, questionToken, typeAnnotation, equalsValueClause); - } - - function parseSyntaxList(currentListType: ListParsingState, processItems?: (items: any[]) => void): T[] { - var savedListParsingState = listParsingState; - listParsingState |= (1 << currentListType); - - var result = parseSyntaxListWorker(currentListType, processItems); - - listParsingState = savedListParsingState; - - return result; - } - - function parseSeparatedSyntaxList(currentListType: ListParsingState): ISeparatedSyntaxList { - var savedListParsingState = listParsingState; - listParsingState |= (1 << currentListType); - - var result = parseSeparatedSyntaxListWorker(currentListType); - - listParsingState = savedListParsingState; - - return result; - } - - // Returns true if we should abort parsing. - function abortParsingListOrMoveToNextToken(currentListType: ListParsingState): boolean { - // Ok. We're at a token that is not a terminator for the list and wasn't the start of - // an item in the list. Definitely report an error for this token. - reportUnexpectedTokenDiagnostic(currentListType); - - // Now, check if the token is a terminator for one our parent lists, or the start of an - // item in one of our parent lists. If so, we won't want to consume the token. We've - // already reported the error, so just return to our caller so that a higher up - // production can consume it. - for (var state = ListParsingState.LastListParsingState; state >= ListParsingState.FirstListParsingState; state--) { - if ((listParsingState & (1 << state)) !== 0) { - if (isExpectedListTerminator(state) || isExpectedListItem(state, /*inErrorRecovery:*/ true)) { - // Abort parsing this list. - return true; - } - } - } - - // Otherwise, if none of the lists we're in can capture this token, then we need to - // unilaterally skip it. Note: we've already reported an error above. - skipToken(currentToken()); - - // Continue parsing this list. Attach this token to whatever we've seen already. - return false; - } - - function tryParseExpectedListItem( - currentListType: ListParsingState, - inErrorRecovery: boolean, - items: T[], - processItems: (items: ISyntaxNodeOrToken[]) => void): void { - var item = tryParseExpectedListItemWorker(currentListType, inErrorRecovery); - - if (item !== undefined) { - // Debug.assert(item !== undefined); - - items.push(item); - - if (processItems) { - processItems(items); - } - } - } - - function listIsTerminated(currentListType: ListParsingState): boolean { - return isExpectedListTerminator(currentListType) || - currentToken().kind === SyntaxKind.EndOfFileToken; - } - - function parseSyntaxListWorker(currentListType: ListParsingState, processItems: (items: ISyntaxNodeOrToken[]) => void): T[] { - var items: T[] = []; - - while (true) { - // Try to parse an item of the list. If we fail then decide if we need to abort or - // continue parsing. - var oldItemsLength = items.length; - tryParseExpectedListItem(currentListType, /*inErrorRecovery:*/ false, items, processItems); - - if (items.length === oldItemsLength) { - // We weren't able to parse out a list element. - - // That may have been because the list is complete. In that case, break out - // and return the items we were able parse. - if (listIsTerminated(currentListType)) { - break; - } - - // List wasn't complete and we didn't get an item. Figure out if we should bail out - // or skip a token and continue. - var abort = abortParsingListOrMoveToNextToken(currentListType); - if (abort) { - break; - } - } - - // We either parsed an element. Or we failed to, but weren't at the end of the list - // and didn't want to abort. Continue parsing elements. - } - - return Syntax.list(items); - } - - function parseSeparatedSyntaxListWorker(currentListType: ListParsingState): ISeparatedSyntaxList { - var nodesAndSeparators: ISyntaxNodeOrToken[] = []; - var inErrorRecovery = false; - while (true) { - // Try to parse an item of the list. If we fail then decide if we need to abort or - // continue parsing. - - // Debug.assert(oldItemsCount % 2 === 0); - var oldArrayLength = nodesAndSeparators.length; - tryParseExpectedListItem(currentListType, inErrorRecovery, nodesAndSeparators, /*processItems:*/ undefined); - - if (nodesAndSeparators.length === oldArrayLength) { - // We weren't able to parse out a list element. - // Debug.assert(items === undefined || items.length % 2 === 0); - - // That may have been because the list is complete. In that case, break out - // and return the items we were able parse. - if (listIsTerminated(currentListType)) { - break; - } - - // List wasn't complete and we didn't get an item. Figure out if we should bail out - // or skip a token and continue. - var abort = abortParsingListOrMoveToNextToken(currentListType); - if (abort) { - break; - } - else { - // We just skipped a token. We're now in error recovery mode. - inErrorRecovery = true; - continue; - } - } - - // Debug.assert(newItemsCount % 2 === 1); - - // We were able to successfully parse out a list item. So we're no longer in error - // recovery. - inErrorRecovery = false; - - // Now, we have to see if we have a separator or not. If we do have a separator - // we've got to consume it and continue trying to parse list items. Note: we always - // allow 'comma' as a separator (for error tolerance). We will later do a post pass - // to report when a comma was used improperly in a list that needed semicolons. - var _currentToken = currentToken(); - if (_currentToken.kind === SyntaxKind.CommaToken) { - // Consume the last separator and continue parsing list elements. - nodesAndSeparators.push(consumeToken(_currentToken)); - continue; - } - - // We didn't see the expected separator. There are two reasons this might happen. - // First, we may actually be at the end of the list. If we are, then we're done - // parsing list elements. - if (listIsTerminated(currentListType)) { - break; - } - - // We weren't at the end of the list. And thre was no separator we could parse out. - // Try parse the separator we expected, and continue parsing more list elements. - // This time mark that we're in error recovery mode though. - // - // Note: trying to eat this token will emit the appropriate diagnostic. - nodesAndSeparators.push(eatToken(SyntaxKind.CommaToken)); - - // Now that we're in 'error recovery' mode we cantweak some parsing rules as - // appropriate. For example, if we have: - // - // var v = { a - // return - // - // Then we'll be missing the comma. As such, we want to parse 'return' in a less - // tolerant manner. Normally 'return' could be a property in an object literal. - // However, in error recovery mode, we do *not* want it to be. - // - // Continue trying to parse out list elements. - inErrorRecovery = true; - } - - return Syntax.separatedList(nodesAndSeparators); - } - - function reportUnexpectedTokenDiagnostic(listType: ListParsingState): void { - var token = currentToken(); - - var diagnostic = new Diagnostic(source.fileName, source.text.lineMap(), - start(token, source.text), width(token), DiagnosticCode.Unexpected_token_0_expected, [getExpectedListElementType(listType)]); - addDiagnostic(diagnostic); - } - - function addDiagnostic(diagnostic: Diagnostic): void { - // Except: if we already have a diagnostic for this position, don't report another one. - if (diagnostics.length > 0 && - diagnostics[diagnostics.length - 1].start() === diagnostic.start()) { - return; - } - - diagnostics.push(diagnostic); - } - - function isExpectedListTerminator(currentListType: ListParsingState): boolean { - switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return isExpectedSourceUnit_ModuleElementsTerminator(); - case ListParsingState.ClassDeclaration_ClassElements: return isExpectedClassDeclaration_ClassElementsTerminator(); - case ListParsingState.ModuleDeclaration_ModuleElements: return isExpectedModuleDeclaration_ModuleElementsTerminator(); - case ListParsingState.SwitchStatement_SwitchClauses: return isExpectedSwitchStatement_SwitchClausesTerminator(); - case ListParsingState.SwitchClause_Statements: return isExpectedSwitchClause_StatementsTerminator(); - case ListParsingState.Block_Statements: return isExpectedBlock_StatementsTerminator(); - case ListParsingState.TryBlock_Statements: return isExpectedTryBlock_StatementsTerminator(); - case ListParsingState.CatchBlock_Statements: return isExpectedCatchBlock_StatementsTerminator(); - case ListParsingState.EnumDeclaration_EnumElements: return isExpectedEnumDeclaration_EnumElementsTerminator(); - case ListParsingState.ObjectType_TypeMembers: return isExpectedObjectType_TypeMembersTerminator(); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return isExpectedClassOrInterfaceDeclaration_HeritageClausesTerminator(); - case ListParsingState.HeritageClause_TypeNameList: return isExpectedHeritageClause_TypeNameListTerminator(); - case ListParsingState.VariableDeclaration_VariableDeclarators: return isExpectedVariableDeclaration_VariableDeclaratorsTerminator(); - case ListParsingState.ArgumentList_AssignmentExpressions: return isExpectedArgumentList_AssignmentExpressionsTerminator(); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return isExpectedObjectLiteralExpression_PropertyAssignmentsTerminator(); - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return isExpectedLiteralExpression_AssignmentExpressionsTerminator(); - case ListParsingState.ParameterList_Parameters: return isExpectedParameterList_ParametersTerminator(); - case ListParsingState.IndexSignature_Parameters: return isExpectedIndexSignature_ParametersTerminator(); - case ListParsingState.TypeArgumentList_Types: return isExpectedTypeArgumentList_TypesTerminator(); - case ListParsingState.TypeParameterList_TypeParameters: return isExpectedTypeParameterList_TypeParametersTerminator(); - case ListParsingState.TupleType_Types: return isExpectedTupleType_TypesTerminator(); - default: - throw Errors.invalidOperation(); - } - } - - function isExpectedSourceUnit_ModuleElementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.EndOfFileToken; - } - - function isExpectedEnumDeclaration_EnumElementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedModuleDeclaration_ModuleElementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedObjectType_TypeMembersTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedObjectLiteralExpression_PropertyAssignmentsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedLiteralExpression_AssignmentExpressionsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBracketToken; - } - - function isExpectedTypeArgumentList_TypesTerminator(): boolean { - var token = currentToken(); - var tokenKind = token.kind; - if (tokenKind === SyntaxKind.GreaterThanToken) { - return true; - } - - // If we're at a token that can follow the type argument list, then we'll also consider - // the list terminated. - if (canFollowTypeArgumentListInExpression(tokenKind)) { - return true; - } - - // TODO: add more cases as necessary for error tolerance. - return false; - } - - function isExpectedTupleType_TypesTerminator(): boolean { - var token = currentToken(); - var tokenKind = token.kind; - if (tokenKind === SyntaxKind.CloseBracketToken) { - return true; - } - - // TODO: add more cases as necessary for error tolerance. - return false; - } - - function isExpectedTypeParameterList_TypeParametersTerminator(): boolean { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.GreaterThanToken) { - return true; - } - - // These commonly follow type parameter lists. - if (tokenKind === SyntaxKind.OpenParenToken || - tokenKind === SyntaxKind.OpenBraceToken || - tokenKind === SyntaxKind.ExtendsKeyword || - tokenKind === SyntaxKind.ImplementsKeyword) { - return true; - } - - // TODO: add more cases as necessary for error tolerance. - return false; - } - - function isExpectedParameterList_ParametersTerminator(): boolean { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.CloseParenToken) { - return true; - } - - // We may also see a { in an error case. i.e.: - // function (a, b, c { - if (tokenKind === SyntaxKind.OpenBraceToken) { - return true; - } - - // We may also see a => in an error case. i.e.: - // (f: number => { ... } - if (tokenKind === SyntaxKind.EqualsGreaterThanToken) { - return true; - } - - return false; - } - - function isExpectedIndexSignature_ParametersTerminator() { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.CloseBracketToken) { - return true; - } - - // We may also see a { in an error case. i.e.: - // function (a, b, c { - if (tokenKind === SyntaxKind.OpenBraceToken) { - return true; - } - - return false; - } - - function isExpectedVariableDeclaration_VariableDeclaratorsTerminator(): boolean { - if (inDisallowInContext()) { - // This is the case when we're parsing variable declarations in a for/for-in statement. - var tokenKind = currentToken().kind; - - if (tokenKind === SyntaxKind.SemicolonToken || - tokenKind === SyntaxKind.CloseParenToken) { - return true; - } - - if (tokenKind === SyntaxKind.InKeyword) { - return true; - } - - return false; - } - else { - //// This is the case when we're parsing variable declarations in a variable statement. - - // ERROR RECOVERY TWEAK: - // For better error recovery, if we see a => then we just stop immediately. We've got an - // arrow function here and it's going to be very unlikely that we'll resynchronize and get - // another variable declaration. - if (currentToken().kind === SyntaxKind.EqualsGreaterThanToken) { - return true; - } - - // We're done when we can eat a semicolon. - return canEatExplicitOrAutomaticSemicolon(); - } - } - - function isExpectedClassOrInterfaceDeclaration_HeritageClausesTerminator(): boolean { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.OpenBraceToken || tokenKind === SyntaxKind.CloseBraceToken) { - return true; - } - - return false; - } - - function isExpectedHeritageClause_TypeNameListTerminator(): boolean { - var tokenKind = currentToken().kind; - if (tokenKind === SyntaxKind.ExtendsKeyword || tokenKind === SyntaxKind.ImplementsKeyword) { - return true; - } - - if (isExpectedClassOrInterfaceDeclaration_HeritageClausesTerminator()) { - return true; - } - - return false; - } - - function isExpectedArgumentList_AssignmentExpressionsTerminator(): boolean { - var token0 = currentToken(); - var tokenKind = token0.kind; - return tokenKind === SyntaxKind.CloseParenToken || - tokenKind === SyntaxKind.SemicolonToken; - } - - function isExpectedClassDeclaration_ClassElementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedSwitchStatement_SwitchClausesTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedSwitchClause_StatementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken || - isSwitchClause(); - } - - function isExpectedBlock_StatementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.CloseBraceToken; - } - - function isExpectedTryBlock_StatementsTerminator(): boolean { - var tokenKind = currentToken().kind; - return tokenKind === SyntaxKind.CatchKeyword || - tokenKind === SyntaxKind.FinallyKeyword; - } - - function isExpectedCatchBlock_StatementsTerminator(): boolean { - return currentToken().kind === SyntaxKind.FinallyKeyword; - } - - function isExpectedListItem(currentListType: ListParsingState, inErrorRecovery: boolean): boolean { - // If we're able to parse out a node for the current list type from the old parse tree, - // then definitely have an expected list item. - var node = currentNode(currentListType); - if (node) { - return true; - } - - switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return isModuleElement(inErrorRecovery); - case ListParsingState.ClassDeclaration_ClassElements: return isClassElement(inErrorRecovery); - case ListParsingState.ModuleDeclaration_ModuleElements: return isModuleElement(inErrorRecovery); - case ListParsingState.SwitchStatement_SwitchClauses: return isSwitchClause(); - case ListParsingState.SwitchClause_Statements: return isStatement(modifierCount(), inErrorRecovery); - case ListParsingState.Block_Statements: return isStatement(modifierCount(), inErrorRecovery); - // These two are special. They're just augmentations of "Block_Statements" - // used so we can abort out of the try block if we see a 'catch' or 'finally' - // keyword. There are no additional list items that they add, so we just - // return 'false' here. - case ListParsingState.TryBlock_Statements: return false; - case ListParsingState.CatchBlock_Statements: return false; - case ListParsingState.EnumDeclaration_EnumElements: return isEnumElement(inErrorRecovery); - case ListParsingState.ObjectType_TypeMembers: return isTypeMember(inErrorRecovery); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return isHeritageClause(); - case ListParsingState.HeritageClause_TypeNameList: return isHeritageClauseTypeName(); - case ListParsingState.VariableDeclaration_VariableDeclarators: return isVariableDeclarator(); - case ListParsingState.ArgumentList_AssignmentExpressions: return isExpectedArgumentList_AssignmentExpression(); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return isPropertyAssignment(inErrorRecovery); - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return isAssignmentOrOmittedExpression(); - case ListParsingState.ParameterList_Parameters: return isParameter(); - case ListParsingState.IndexSignature_Parameters: return isParameter(); - case ListParsingState.TypeArgumentList_Types: return isType(); - case ListParsingState.TypeParameterList_TypeParameters: return isTypeParameter(); - case ListParsingState.TupleType_Types: return isType(); - default: throw Errors.invalidOperation(); - } - } - - function isExpectedArgumentList_AssignmentExpression(): boolean { - var _currentToken = currentToken(); - if (isExpression(_currentToken)) { - return true; - } - - // If we're on a comma then the user has written something like "Foo(a,," or "Foo(,". - // Instead of skipping the comma, create an empty expression to go before the comma - // so that the tree is more well formed and doesn't have skipped tokens. - if (_currentToken.kind === SyntaxKind.CommaToken) { - return true; - } - - return false; - } - - function tryParseExpectedListItemWorker(currentListType: ListParsingState, inErrorRecovery: boolean): ISyntaxNodeOrToken { - var node = currentNode(currentListType); - if (node) { - return node; - } - - switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return tryParseModuleElement(inErrorRecovery); - case ListParsingState.ClassDeclaration_ClassElements: return tryParseClassElement(inErrorRecovery); - case ListParsingState.ModuleDeclaration_ModuleElements: return tryParseModuleElement(inErrorRecovery); - case ListParsingState.SwitchStatement_SwitchClauses: return tryParseSwitchClause(); - case ListParsingState.SwitchClause_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.Block_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.TryBlock_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.CatchBlock_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.EnumDeclaration_EnumElements: return tryParseEnumElement(inErrorRecovery); - case ListParsingState.ObjectType_TypeMembers: return tryParseTypeMember(inErrorRecovery); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return tryParseHeritageClause(); - case ListParsingState.HeritageClause_TypeNameList: return tryParseHeritageClauseTypeName(); - case ListParsingState.VariableDeclaration_VariableDeclarators: return tryParseVariableDeclarator(); - case ListParsingState.ArgumentList_AssignmentExpressions: return tryParseArgumentListExpression(); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return tryParsePropertyAssignment(inErrorRecovery); - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return tryParseAssignmentOrOmittedExpression(); - case ListParsingState.ParameterList_Parameters: return tryParseParameter(); - case ListParsingState.IndexSignature_Parameters: return tryParseParameter(); - case ListParsingState.TypeArgumentList_Types: return tryParseType(); - case ListParsingState.TypeParameterList_TypeParameters: return tryParseTypeParameter(); - case ListParsingState.TupleType_Types: return tryParseType(); - default: throw Errors.invalidOperation(); - } - } - - function currentNode(currentListType: ListParsingState): ISyntaxNode { - // If we have any outstanding tokens, then don't reuse a node. - // TODO(cyrusn): This may be too conservative. Perhaps we could reuse hte node and - // attach the skipped tokens in front? For now though, being conservative is nice and - // safe, and likely won't ever affect perf. - if (skippedTokens) { - return undefined; - } - - var node = source.currentNode(); - if (!node) { - return undefined; - } - - // We can only reuse a node if it was parsed under the same strict mode that we're - // currently in. i.e. if we originally parsed a node in non-strict mode, but then - // the user added 'using strict' at the top of the file, then we can't use that node - // again as the presense of strict mode may cause us to parse the tokens in the file - // differetly. - // - // Note: we *can* reuse tokens when the strict mode changes. That's because tokens - // are unaffected by strict mode. It's just the parser will decide what to do with it - // differently depending on what mode it is in. - // - // This also applies to all our other context flags as well. - if (parserContextFlags(node) !== contextFlags) { - return undefined; - } - - // Ok, we have a node that looks like it could be reused. Now verify that it is valid - // in the currest list parsing context that we're currently at. - if (!canReuseNode(node, currentListType)) { - return undefined; - } - - // It was valid. Let teh source know we're consuming this node, and pass to the list - // parser. - return consumeNode(node); - } - - function canReuseNode(node: ISyntaxNode, listParsingState: ListParsingState): boolean { - switch (listParsingState) { - case ListParsingState.SourceUnit_ModuleElements: - return SyntaxUtilities.isModuleElement(node); - - case ListParsingState.ClassDeclaration_ClassElements: - return SyntaxUtilities.isClassElement(node); - - case ListParsingState.ModuleDeclaration_ModuleElements: - return SyntaxUtilities.isModuleElement(node); - - case ListParsingState.SwitchStatement_SwitchClauses: - return SyntaxUtilities.isSwitchClause(node); - - case ListParsingState.SwitchClause_Statements: - case ListParsingState.Block_Statements: - case ListParsingState.TryBlock_Statements: - case ListParsingState.CatchBlock_Statements: - return SyntaxUtilities.isStatement(node); - - case ListParsingState.EnumDeclaration_EnumElements: - return node.kind === SyntaxKind.EnumElement; - - case ListParsingState.ObjectType_TypeMembers: - return SyntaxUtilities.isTypeMember(node); - - case ListParsingState.VariableDeclaration_VariableDeclarators: - return canReuseVariableDeclaratorNode(node); - - case ListParsingState.ParameterList_Parameters: - return node.kind === SyntaxKind.Parameter; - - case ListParsingState.IndexSignature_Parameters: - return node.kind === SyntaxKind.Parameter; - - // Any other lists we do not care about reusing nodes in. But feel free to add if - // you can do so safely. Danger areas involve nodes that may involve speculative - // parsing. If speculative parsing is involved with the node, then the range the - // parser reached while looking ahead might be in the edited range (see the example - // in canReuseVariableDeclaratorNode for a good case of this). - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: - // This would probably be safe to reuse. There is no speculative parsing with - // heritage clauses. - - case ListParsingState.HeritageClause_TypeNameList: - // This would probably be safe to reuse. There is no speculative parsing with - // type names in a heritage clause. There can be generic names in the type - // name list. But because it is a type context, we never use speculative - // parsing on the type argument list. - - case ListParsingState.TypeParameterList_TypeParameters: - // This would probably be safe to reuse. There is no speculative parsing with - // type parameters. Note that that's because type *parameters* only occur in - // unambiguous *type* contexts. While type *arguments* occur in very ambiguous - // *expression* contexts. - - case ListParsingState.TupleType_Types: - // This would probably be safe to reuse. There is no speculative parsing with - // tuple types. - - // Technically, type argument list types are probably safe to reuse. While - // speculative parsing is involved with them (since type argument lists are only - // produced from speculative parsing a < as a type argument list), we only have - // the types because speculative parsing succeeded. Thus, the lookahead never - // went past the end of the list and rewound. - case ListParsingState.TypeArgumentList_Types: - - // Note: these are almost certainly not safe to ever reuse. Expressions commonly - // need a large amount of lookahead, and we should not reuse them as they may - // have actually intersected the edit. - case ListParsingState.ArgumentList_AssignmentExpressions: - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: - - // This is not safe to reuse for the same reason as the 'AssignmentExpression' - // cases. i.e. a property assignment may end with an expression, and thus might - // have lookahead far beyond it's old node. - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: - } - - return false; - } - - function canReuseVariableDeclaratorNode(node: ISyntaxNode) { - if (!node || node.kind !== SyntaxKind.VariableDeclarator) { - return false; - } - - // Very subtle incremental parsing bug. Consider the following code: - // - // var v = new List < A, B - // - // This is actually legal code. It's a list of variable declarators "v = new List() - // - // then we have a problem. "v = new Listnode; - return variableDeclarator.equalsValueClause === undefined; - } - - function getExpectedListElementType(currentListType: ListParsingState): string { - switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return '{'; - case ListParsingState.ClassDeclaration_ClassElements: return getLocalizedText(DiagnosticCode.constructor_function_accessor_or_variable, undefined); - case ListParsingState.ModuleDeclaration_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); - case ListParsingState.SwitchStatement_SwitchClauses: return getLocalizedText(DiagnosticCode.case_or_default_clause, undefined); - case ListParsingState.SwitchClause_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); - case ListParsingState.Block_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); - case ListParsingState.VariableDeclaration_VariableDeclarators: return getLocalizedText(DiagnosticCode.identifier, undefined); - case ListParsingState.EnumDeclaration_EnumElements: return getLocalizedText(DiagnosticCode.identifier, undefined); - case ListParsingState.ObjectType_TypeMembers: return getLocalizedText(DiagnosticCode.call_construct_index_property_or_function_signature, undefined); - case ListParsingState.ArgumentList_AssignmentExpressions: return getLocalizedText(DiagnosticCode.expression, undefined); - case ListParsingState.HeritageClause_TypeNameList: return getLocalizedText(DiagnosticCode.type_name, undefined); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return getLocalizedText(DiagnosticCode.property_or_accessor, undefined); - case ListParsingState.ParameterList_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); - case ListParsingState.IndexSignature_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); - case ListParsingState.TypeArgumentList_Types: return getLocalizedText(DiagnosticCode.type, undefined); - case ListParsingState.TypeParameterList_TypeParameters: return getLocalizedText(DiagnosticCode.type_parameter, undefined); - case ListParsingState.TupleType_Types: return getLocalizedText(DiagnosticCode.type, undefined); - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return getLocalizedText(DiagnosticCode.expression, undefined); - default: throw Errors.invalidOperation(); - } - } - - return parseSyntaxTree; - } - - // The precedence of expressions in typescript. While we're parsing an expression, we will - // continue to consume and form new trees if the precedence is *strictly* greater than our current - // precedence. For example, if we have: a + b * c, we will first parse 'a' with precedence 1 (Lowest). - // We will then see the + with precedence 10. 10 is greater than 1 so we will decide to create - // a binary expression with the result of parsing the sub expression "b * c". We'll then parse - // the term 'b' (passing in precedence 10). We will then see the * with precedence 11. 11 is - // greater than 10, so we will create a binary expression from "b" and "c", return that, and - // join it with "a" producing: - // - // + - // / \ - // a * - // / \ - // b c - // - // If we instead had: "a * b + c", we would first parser 'a' with precedence 1 (lowest). We would then see - // the * with precedence 11. 11 is greater than 1 so we will decide to create a binary expression - // with the result of parsing the sub expression "b + c". We'll then parse the term 'b' (passing in - // precedence 11). We will then see the + with precedence 10. 10 is less than 11, so we won't - // continue parsing subexpressions and will just return the expression 'b'. The caller will join - // that into "a * b" (and will be back at precedence 1). It will then see the + with precedence 10. - // 10 is greater than 1 so it will parse the sub expression and make a binary expression out of it - // producing: - // - // + - // / \ - // * c - // / \ - // a b - // - // Note: because all these binary expressions have left-to-right precedence, if we see a * b * c - // then we parse it as: - // - // * - // / \ - // * c - // / \ - // a b - // - // The code to do this uses the above logic. It will see an operator with the same precedence, - // and so it won't consume it. - const enum BinaryExpressionPrecedence { - Lowest = 1, - - // Intuitively, logical || have the lowest precedence. "a || b && c" is "a || (b && c)", not - // "(a || b) && c" - LogicalOrExpressionPrecedence = 2, - LogicalAndExpressionPrecedence = 3, - BitwiseOrExpressionPrecedence = 4, - BitwiseExclusiveOrExpressionPrecedence = 5, - BitwiseAndExpressionPrecedence = 6, - EqualityExpressionPrecedence = 7, - RelationalExpressionPrecedence = 8, - ShiftExpressionPrecdence = 9, - AdditiveExpressionPrecedence = 10, - - // Intuitively, multiplicative expressions have the highest precedence. After all, if you have: - // a + b * c - // - // Then you have "a + (b * c)" not "(a + b) * c" - MultiplicativeExpressionPrecedence = 11, - } - - // The current state of the parser wrt to list parsing. The way to read these is as: - // CurrentProduction_SubList. i.e. "Block_Statements" means "we're parsing a Block, and we're - // currently parsing list of statements within it". This is used by the list parsing mechanism - // to parse the elements of the lists, and recover from errors we encounter when we run into - // unexpected code. - // - // For example, when we are in ArgumentList_Arguments, we will continue trying to consume code - // as long as "isArgument" is true. If we run into a token for which "isArgument" is not true - // we will do the following: - // - // If the token is a StopToken for ArgumentList_Arguments (like ")" ) then we will stop parsing - // the list of arguments with no error. - // - // Otherwise, we *do* report an error for this unexpected token, and then enter error recovery - // mode to decide how to try to recover from this unexpected token. - // - // Error recovery will walk up the list of states we're in seeing if the token is a stop token - // for that construct *or* could start another element within what construct. For example, if - // the unexpected token was '}' then that would be a stop token for Block_Statements. - // Alternatively, if the unexpected token was 'return', then that would be a start token for - // the next statment in Block_Statements. - // - // If either of those cases are true, We will then return *without* consuming that token. - // (Remember, we've already reported an error). Now we're just letting the higher up parse - // constructs eventually try to consume that token. - // - // If none of the higher up states consider this a stop or start token, then we will simply - // consume the token and add it to our list of 'skipped tokens'. We will then repeat the - // above algorithm until we resynchronize at some point. - enum ListParsingState { - SourceUnit_ModuleElements, - ClassDeclaration_ClassElements, - ModuleDeclaration_ModuleElements, - SwitchStatement_SwitchClauses, - SwitchClause_Statements, - Block_Statements, - TryBlock_Statements, - CatchBlock_Statements, - EnumDeclaration_EnumElements, - ObjectType_TypeMembers, - ClassOrInterfaceDeclaration_HeritageClauses, - HeritageClause_TypeNameList, - VariableDeclaration_VariableDeclarators, - ArgumentList_AssignmentExpressions, - ObjectLiteralExpression_PropertyAssignments, - ArrayLiteralExpression_AssignmentExpressions, - ParameterList_Parameters, - IndexSignature_Parameters, - TypeArgumentList_Types, - TypeParameterList_TypeParameters, - TupleType_Types, - - FirstListParsingState = SourceUnit_ModuleElements, - LastListParsingState = TupleType_Types, - } - - // We use this enum to set bits. So make sure we have enough bits available. - Debug.assert(ListParsingState.LastListParsingState <= 30); - - // We keep the parser around as a singleton. This is because calling createParser is actually - // expensive in V8 currently. We then clear it after a parse so that it doesn't keep state - // alive unintentionally. - var parseSyntaxTree = createParseSyntaxTree(); - - export function parse(fileName: string, text: ISimpleText, languageVersion: ts.ScriptTarget, isDeclaration: boolean): SyntaxTree { - return parseSource(Scanner.createParserSource(fileName, text, languageVersion), isDeclaration); - } - - export function parseSource(source: IParserSource, isDeclaration: boolean): SyntaxTree { - return parseSyntaxTree(source, isDeclaration); - } -} \ No newline at end of file diff --git a/src/services/syntax/prettyPrinter.ts b/src/services/syntax/prettyPrinter.ts deleted file mode 100644 index 559e0719db5..00000000000 --- a/src/services/syntax/prettyPrinter.ts +++ /dev/null @@ -1,1068 +0,0 @@ -/// - -module TypeScript.PrettyPrinter { - export function prettyPrint(node: ISyntaxNode, indentWhitespace: string = " "): string { - var impl = new PrettyPrinterImpl(indentWhitespace); - visitNodeOrToken(impl, node); - return impl.result.join(""); - } - - class PrettyPrinterImpl implements ISyntaxVisitor { - public result: string[] = []; - private indentations: string[] = []; - private indentation: number = 0; - - constructor(private indentWhitespace: string) { - } - - private newLineCountBetweenModuleElements(element1: IModuleElementSyntax, element2: IModuleElementSyntax): number { - if (!element1 || !element2) { - return 0; - } - - if (lastToken(element1).kind === SyntaxKind.CloseBraceToken) { - return 2; - } - - return 1; - } - - private newLineCountBetweenClassElements(element1: IClassElementSyntax, element2: IClassElementSyntax): number { - if (!element1 || !element2) { - return 0; - } - - return 1; - } - - private newLineCountBetweenStatements(element1: IStatementSyntax, element2: IStatementSyntax): number { - if (!element1 || !element2) { - return 0; - } - - if (lastToken(element1).kind === SyntaxKind.CloseBraceToken) { - return 2; - } - - return 1; - } - - private newLineCountBetweenSwitchClauses(element1: ISwitchClauseSyntax, element2: ISwitchClauseSyntax): number { - if (!element1 || !element2) { - return 0; - } - - if (childCount(element1.statements) === 0) { - return 1; - } - - return 2; - } - - private ensureSpace(): void { - if (this.result.length > 0) { - var last = ArrayUtilities.last(this.result); - if (last !== " " && last !== "\r\n") { - this.appendText(" "); - } - } - } - - private ensureNewLine(): void { - if (this.result.length > 0) { - var last = ArrayUtilities.last(this.result); - if (last !== "\r\n") { - this.appendText("\r\n"); - } - } - } - - private appendNewLines(count: number): void { - for (var i = 0; i < count; i++) { - this.appendText("\r\n"); - } - } - - private getIndentation(count: number): string { - for (var i = this.indentations.length; i <= count; i++) { - var text = i === 0 - ? "" - : this.indentations[i - 1] + this.indentWhitespace; - this.indentations[i] = text; - } - - return this.indentations[count]; - } - - private appendIndentationIfAfterNewLine(): void { - if (this.result.length > 0) { - if (ArrayUtilities.last(this.result) === "\r\n") { - this.result.push(this.getIndentation(this.indentation)); - } - } - } - - private appendText(text: string): void { - this.result.push(text); - } - - private appendElement(element: ISyntaxElement): void { - if (isToken(element)) { - this.appendToken(element); - } - else if (isNode(element)) { - this.appendNode(element); - } - } - - private appendNode(node: ISyntaxNode): void { - visitNodeOrToken(this, node); - } - - private appendToken(token: ISyntaxToken): void { - if (token && token.fullWidth() > 0) { - this.appendIndentationIfAfterNewLine(); - this.appendText(token.text()); - } - } - - public visitToken(token: ISyntaxToken): void { - this.appendToken(token); - } - - private appendSpaceList(list: ISyntaxNodeOrToken[]): void { - for (var i = 0, n = childCount(list); i < n; i++) { - if (isNode(childAt(list, i))) { - this.appendNode(childAt(list, i)); - } - else { - this.appendToken(childAt(list, i)); - } - - this.ensureSpace(); - } - } - - private appendSeparatorSpaceList(list: ISyntaxNodeOrToken[]): void { - for (var i = 0, n = childCount(list); i < n; i++) { - if (i % 2 === 0) { - if (i > 0) { - this.ensureSpace(); - } - - visitNodeOrToken(this, list[i]); - } - else { - this.appendToken(childAt(list, i)); - } - } - } - - private appendSeparatorNewLineList(list: ISyntaxNodeOrToken[]): void { - for (var i = 0, n = childCount(list); i < n; i++) { - if (i % 2 === 0) { - if (i > 0) { - this.ensureNewLine(); - } - - visitNodeOrToken(this, list[i]); - } - else { - this.appendToken(childAt(list, i)); - } - } - } - - private appendModuleElements(list: IModuleElementSyntax[]): void { - var lastModuleElement: IModuleElementSyntax = undefined; - for (var i = 0, n = list.length; i < n; i++) { - var moduleElement = list[i]; - var newLineCount = this.newLineCountBetweenModuleElements(lastModuleElement, moduleElement); - - this.appendNewLines(newLineCount); - visitNodeOrToken(this, moduleElement); - - lastModuleElement = moduleElement; - } - } - - public visitSourceUnit(node: SourceUnitSyntax): void { - this.appendModuleElements(node.moduleElements); - } - - public visitExternalModuleReference(node: ExternalModuleReferenceSyntax): void { - this.appendToken(node.requireKeyword); - this.appendToken(node.openParenToken); - this.appendToken(node.stringLiteral); - this.appendToken(node.closeParenToken); - } - - public visitModuleNameModuleReference(node: ModuleNameModuleReferenceSyntax): void { - visitNodeOrToken(this, node.moduleName); - } - - public visitImportDeclaration(node: ImportDeclarationSyntax): void { - this.appendToken(node.importKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.ensureSpace(); - this.appendToken(node.equalsToken); - this.ensureSpace(); - visitNodeOrToken(this, node.moduleReference); - this.appendToken(node.semicolonToken); - } - - public visitExportAssignment(node: ExportAssignmentSyntax): void { - this.appendToken(node.exportKeyword); - this.ensureSpace(); - this.appendToken(node.equalsToken); - this.ensureSpace(); - this.appendToken(node.identifier); - this.appendToken(node.semicolonToken); - } - - public visitClassDeclaration(node: ClassDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.classKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.appendNode(node.typeParameterList); - this.ensureSpace(); - this.appendSpaceList(node.heritageClauses); - this.ensureSpace(); - this.appendToken(node.openBraceToken); - this.ensureNewLine(); - - this.indentation++; - - var lastClassElement: IClassElementSyntax = undefined; - for (var i = 0, n = node.classElements.length; i < n; i++) { - var classElement = node.classElements[i]; - var newLineCount = this.newLineCountBetweenClassElements(lastClassElement, classElement); - - this.appendNewLines(newLineCount); - visitNodeOrToken(this, classElement); - - lastClassElement = classElement; - } - - this.indentation--; - - this.ensureNewLine(); - this.appendToken(node.closeBraceToken); - } - - public visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.interfaceKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.appendNode(node.typeParameterList); - this.ensureSpace(); - this.appendSpaceList(node.heritageClauses); - this.ensureSpace(); - this.appendObjectType(node.body, /*appendNewLines:*/ true); - } - - public visitTypeAlias(node: TypeAliasSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.typeKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.ensureSpace(); - this.appendToken(node.equalsToken); - this.ensureSpace(); - visitNodeOrToken(this, node.type); - this.appendToken(node.semicolonToken); - - } - - private appendObjectType(node: ObjectTypeSyntax, appendNewLines: boolean): void { - this.appendToken(node.openBraceToken); - - if (appendNewLines) { - this.ensureNewLine(); - this.indentation++; - } - else { - this.ensureSpace(); - } - - for (var i = 0, n = childCount(node.typeMembers); i < n; i++) { - visitNodeOrToken(this, node.typeMembers[i]); - - if (appendNewLines) { - this.ensureNewLine(); - } - else { - this.ensureSpace(); - } - } - - this.indentation--; - this.appendToken(node.closeBraceToken); - } - - public visitHeritageClause(node: HeritageClauseSyntax): void { - this.appendToken(node.extendsOrImplementsKeyword); - this.ensureSpace(); - this.appendSeparatorSpaceList(node.typeNames); - } - - public visitModuleDeclaration(node: ModuleDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.moduleKeyword); - this.ensureSpace(); - this.appendElement(node.name); - this.ensureSpace(); - this.appendToken(node.openBraceToken); - this.ensureNewLine(); - - this.indentation++; - - this.appendModuleElements(node.moduleElements); - - this.indentation--; - this.appendToken(node.closeBraceToken); - } - - private appendBody(body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (body.kind === SyntaxKind.Block || body.kind === SyntaxKind.ExpressionBody) { - this.ensureSpace(); - visitNodeOrToken(this, body); - } - else { - this.appendToken(body); - } - } - - public visitExpressionBody(node: ExpressionBody): void { - this.appendToken(node.equalsGreaterThanToken); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitFunctionDeclaration(node: FunctionDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.functionKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.appendNode(node.callSignature); - this.appendBody(node.body); - } - - public visitVariableStatement(node: VariableStatementSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - visitNodeOrToken(this, node.variableDeclaration); - this.appendToken(node.semicolonToken); - } - - public visitVariableDeclaration(node: VariableDeclarationSyntax): void { - this.appendToken(node.varConstOrLetKeyword); - this.ensureSpace(); - this.appendSeparatorSpaceList(node.variableDeclarators); - } - - public visitVariableDeclarator(node: VariableDeclaratorSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.appendNode(node.equalsValueClause); - } - - public visitEqualsValueClause(node: EqualsValueClauseSyntax): void { - this.ensureSpace(); - this.appendToken(node.equalsToken); - this.ensureSpace(); - visitNodeOrToken(this, node.value); - } - - public visitPrefixUnaryExpression(node: PrefixUnaryExpressionSyntax): void { - this.appendToken(node.operatorToken); - visitNodeOrToken(this, node.operand); - } - - public visitArrayLiteralExpression(node: ArrayLiteralExpressionSyntax): void { - this.appendToken(node.openBracketToken); - this.appendSeparatorSpaceList(node.expressions); - this.appendToken(node.closeBracketToken); - } - - public visitOmittedExpression(node: OmittedExpressionSyntax): void { - // Nothing to do. - } - - public visitParenthesizedExpression(node: ParenthesizedExpressionSyntax): void { - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.expression); - this.appendToken(node.closeParenToken); - } - - public visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): void { - this.appendNode(node.parameter); - this.ensureSpace(); - this.appendToken(node.equalsGreaterThanToken); - this.ensureSpace(); - visitNodeOrToken(this, node.body); - } - - public visitParenthesizedArrowFunctionExpression(node: ParenthesizedArrowFunctionExpressionSyntax): void { - visitNodeOrToken(this, node.callSignature); - this.ensureSpace(); - this.appendToken(node.equalsGreaterThanToken); - this.ensureSpace(); - visitNodeOrToken(this, node.body); - } - - public visitQualifiedName(node: QualifiedNameSyntax): void { - visitNodeOrToken(this, node.left); - this.appendToken(node.dotToken); - this.appendToken(node.right); - } - - public visitTypeQuery(node: TypeQuerySyntax): void { - this.appendToken(node.typeOfKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.name); - } - - public visitTypeArgumentList(node: TypeArgumentListSyntax): void { - this.appendToken(node.lessThanToken); - this.appendSeparatorSpaceList(node.typeArguments); - this.appendToken(node.greaterThanToken); - } - - public visitTupleType(node: TupleTypeSyntax): void { - this.appendToken(node.openBracketToken); - this.appendSeparatorSpaceList(node.types); - this.appendToken(node.closeBracketToken); - } - - public visitParenthesizedType(node: ParenthesizedTypeSyntax): void { - this.appendToken(node.openParenToken); - this.appendElement(node.type); - this.appendToken(node.closeParenToken); - } - - public visitUnionType(node: UnionTypeSyntax): void { - this.appendElement(node.left); - this.ensureSpace(); - this.appendToken(node.barToken); - this.ensureSpace(); - this.appendElement(node.right); - } - - public visitConstructorType(node: ConstructorTypeSyntax): void { - this.appendToken(node.newKeyword); - this.ensureSpace(); - this.appendNode(node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - this.ensureSpace(); - this.appendToken(node.equalsGreaterThanToken); - this.ensureSpace(); - visitNodeOrToken(this, node.type); - } - - public visitFunctionType(node: FunctionTypeSyntax): void { - this.appendNode(node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - this.ensureSpace(); - this.appendToken(node.equalsGreaterThanToken); - this.ensureSpace(); - visitNodeOrToken(this, node.type); - } - - public visitObjectType(node: ObjectTypeSyntax): void { - this.appendToken(node.openBraceToken); - this.ensureSpace(); - this.appendSeparatorSpaceList(node.typeMembers); - this.appendToken(node.closeBraceToken); - } - - public visitArrayType(node: ArrayTypeSyntax): void { - visitNodeOrToken(this, node.type); - this.appendToken(node.openBracketToken); - this.appendToken(node.closeBracketToken); - } - - public visitGenericType(node: GenericTypeSyntax): void { - visitNodeOrToken(this, node.name); - visitNodeOrToken(this, node.typeArgumentList); - } - - public visitTypeAnnotation(node: TypeAnnotationSyntax): void { - this.appendToken(node.colonToken); - this.ensureSpace(); - visitNodeOrToken(this, node.type); - } - - private appendStatements(statements: IStatementSyntax[]): void { - var lastStatement: IStatementSyntax = undefined; - for (var i = 0, n = statements.length; i < n; i++) { - var statement = statements[i]; - - var newLineCount = this.newLineCountBetweenStatements(lastStatement, statement); - - this.appendNewLines(newLineCount); - visitNodeOrToken(this, statement); - - lastStatement = statement; - } - } - - public visitBlock(node: BlockSyntax): void { - this.appendToken(node.openBraceToken); - this.ensureNewLine(); - this.indentation++; - - this.appendStatements(node.statements); - - this.indentation--; - this.ensureNewLine(); - this.appendToken(node.closeBraceToken); - } - - public visitParameter(node: ParameterSyntax): void { - this.appendToken(node.dotDotDotToken); - this.appendSpaceList(node.modifiers); - this.appendToken(node.identifier); - this.appendToken(node.questionToken); - this.appendNode(node.typeAnnotation); - this.appendNode(node.equalsValueClause); - } - - public visitPropertyAccessExpression(node: PropertyAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - this.appendToken(node.dotToken); - this.appendToken(node.name); - } - - public visitPostfixUnaryExpression(node: PostfixUnaryExpressionSyntax): void { - visitNodeOrToken(this, node.operand); - this.appendToken(node.operatorToken); - } - - public visitElementAccessExpression(node: ElementAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - this.appendToken(node.openBracketToken); - visitNodeOrToken(this, node.argumentExpression); - this.appendToken(node.closeBracketToken); - } - - public visitInvocationExpression(node: InvocationExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - visitNodeOrToken(this, node.argumentList); - } - - public visitArgumentList(node: ArgumentListSyntax): void { - this.appendToken(node.openParenToken); - this.appendSeparatorSpaceList(node.arguments); - this.appendToken(node.closeParenToken); - } - - public visitBinaryExpression(node: BinaryExpressionSyntax): void { - visitNodeOrToken(this, node.left); - - if (node.operatorToken.kind !== SyntaxKind.CommaToken) { - this.ensureSpace(); - } - - this.appendToken(node.operatorToken); - this.ensureSpace(); - visitNodeOrToken(this, node.right); - } - - public visitConditionalExpression(node: ConditionalExpressionSyntax): void { - visitNodeOrToken(this, node.condition); - this.ensureSpace(); - this.appendToken(node.questionToken); - this.ensureSpace(); - visitNodeOrToken(this, node.whenTrue); - this.ensureSpace(); - this.appendToken(node.colonToken); - this.ensureSpace(); - visitNodeOrToken(this, node.whenFalse); - } - - public visitConstructSignature(node: ConstructSignatureSyntax): void { - this.appendToken(node.newKeyword); - visitNodeOrToken(this, node.callSignature); - } - - public visitMethodSignature(node: MethodSignatureSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.appendToken(node.questionToken); - visitNodeOrToken(this, node.callSignature); - } - - public visitIndexSignature(node: IndexSignatureSyntax): void { - this.appendSpaceList(node.modifiers); - this.appendToken(node.openBracketToken); - this.appendSeparatorSpaceList(node.parameters) - this.appendToken(node.closeBracketToken); - this.appendNode(node.typeAnnotation); - this.appendToken(node.semicolonOrCommaToken); - } - - public visitPropertySignature(node: PropertySignatureSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.appendToken(node.questionToken); - this.appendNode(node.typeAnnotation); - this.appendToken(node.semicolonOrCommaToken); - } - - public visitParameterList(node: ParameterListSyntax): void { - this.appendToken(node.openParenToken); - this.appendSeparatorSpaceList(node.parameters); - this.appendToken(node.closeParenToken); - } - - public visitCallSignature(node: CallSignatureSyntax): void { - this.appendNode(node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - this.appendNode(node.typeAnnotation); - this.appendToken(node.semicolonOrCommaToken); - } - - public visitTypeParameterList(node: TypeParameterListSyntax): void { - this.appendToken(node.lessThanToken); - this.appendSeparatorSpaceList(node.typeParameters); - this.appendToken(node.greaterThanToken); - } - - public visitTypeParameter(node: TypeParameterSyntax): void { - this.appendToken(node.identifier); - this.appendNode(node.constraint); - } - - public visitConstraint(node: ConstraintSyntax): void { - this.ensureSpace(); - this.appendToken(node.extendsKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.typeOrExpression); - } - - private appendBlockOrStatement(node: IStatementSyntax): void { - if (node.kind === SyntaxKind.Block) { - this.ensureSpace(); - visitNodeOrToken(this, node); - } - else { - this.ensureNewLine(); - this.indentation++; - visitNodeOrToken(this, node); - this.indentation--; - } - } - - public visitIfStatement(node: IfStatementSyntax): void { - this.appendToken(node.ifKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.appendToken(node.closeParenToken); - this.appendBlockOrStatement(node.statement); - this.appendNode(node.elseClause); - } - - public visitElseClause(node: ElseClauseSyntax): void { - this.ensureNewLine(); - this.appendToken(node.elseKeyword); - - if (node.statement.kind === SyntaxKind.IfStatement) { - this.ensureSpace(); - visitNodeOrToken(this, node.statement); - } - else { - this.appendBlockOrStatement(node.statement); - } - } - - public visitExpressionStatement(node: ExpressionStatementSyntax): void { - visitNodeOrToken(this, node.expression); - this.appendToken(node.semicolonToken); - } - - public visitConstructorDeclaration(node: ConstructorDeclarationSyntax): void { - this.appendToken(node.constructorKeyword); - visitNodeOrToken(this, node.callSignature); - this.appendBody(node.body); - } - - public visitMethodDeclaration(node: MethodDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature); - this.appendBody(node.body); - } - - public visitGetAccessor(node: GetAccessorSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.getKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature); - this.ensureSpace(); - visitNodeOrToken(this, node.body); - } - - public visitSetAccessor(node: SetAccessorSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.setKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature) - this.ensureSpace(); - visitNodeOrToken(this, node.body); - } - - public visitPropertyDeclaration(node: PropertyDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - visitNodeOrToken(this, node.variableDeclarator); - this.appendToken(node.semicolonToken); - } - - public visitThrowStatement(node: ThrowStatementSyntax): void { - this.appendToken(node.throwKeyword); - - if (node.expression) { - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - this.appendToken(node.semicolonToken); - } - - public visitReturnStatement(node: ReturnStatementSyntax): void { - this.appendToken(node.returnKeyword); - - if (node.expression) { - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - this.appendToken(node.semicolonToken); - } - - public visitObjectCreationExpression(node: ObjectCreationExpressionSyntax): void { - this.appendToken(node.newKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - this.appendNode(node.argumentList); - } - - public visitSwitchStatement(node: SwitchStatementSyntax): void { - this.appendToken(node.switchKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.expression); - this.appendToken(node.closeParenToken); - this.ensureSpace(); - this.appendToken(node.openBraceToken); - this.ensureNewLine(); - - var lastSwitchClause: ISwitchClauseSyntax = undefined; - for (var i = 0, n = node.switchClauses.length; i < n; i++) { - var switchClause = node.switchClauses[i]; - - var newLineCount = this.newLineCountBetweenSwitchClauses(lastSwitchClause, switchClause); - - this.appendNewLines(newLineCount); - visitNodeOrToken(this, switchClause); - - lastSwitchClause = switchClause; - } - - this.ensureNewLine(); - this.appendToken(node.closeBraceToken); - } - - private appendSwitchClauseStatements(node: ISwitchClauseSyntax): void { - if (childCount(node.statements) === 1 && childAt(node.statements, 0).kind === SyntaxKind.Block) { - this.ensureSpace(); - visitNodeOrToken(this, node.statements[0]); - } - else if (childCount(node.statements) > 0) { - this.ensureNewLine(); - - this.indentation++; - this.appendStatements(node.statements); - this.indentation--; - } - } - - public visitCaseSwitchClause(node: CaseSwitchClauseSyntax): void { - this.appendToken(node.caseKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - this.appendToken(node.colonToken); - this.appendSwitchClauseStatements(node); - } - - public visitDefaultSwitchClause(node: DefaultSwitchClauseSyntax): void { - this.appendToken(node.defaultKeyword); - this.appendToken(node.colonToken); - this.appendSwitchClauseStatements(node); - } - - public visitBreakStatement(node: BreakStatementSyntax): void { - this.appendToken(node.breakKeyword); - if (node.identifier) { - this.ensureSpace(); - this.appendToken(node.identifier); - } - - this.appendToken(node.semicolonToken); - } - - public visitContinueStatement(node: ContinueStatementSyntax): void { - this.appendToken(node.continueKeyword); - if (node.identifier) { - this.ensureSpace(); - this.appendToken(node.identifier); - } - - this.appendToken(node.semicolonToken); - } - - public visitForStatement(node: ForStatementSyntax): void { - this.appendToken(node.forKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.initializer); - this.appendToken(node.firstSemicolonToken); - - if (node.condition) { - this.ensureSpace(); - visitNodeOrToken(this, node.condition); - } - - this.appendToken(node.secondSemicolonToken); - - if (node.incrementor) { - this.ensureSpace(); - visitNodeOrToken(this, node.incrementor); - } - - this.appendToken(node.closeParenToken); - this.appendBlockOrStatement(node.statement); - } - - public visitForInStatement(node: ForInStatementSyntax): void { - this.appendToken(node.forKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - this.appendElement(node.left); - this.ensureSpace(); - this.appendToken(node.inKeyword); - this.ensureSpace(); - this.appendElement(node.right); - this.appendToken(node.closeParenToken); - this.appendBlockOrStatement(node.statement); - } - - public visitWhileStatement(node: WhileStatementSyntax): void { - this.appendToken(node.whileKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.appendToken(node.closeParenToken); - this.appendBlockOrStatement(node.statement); - } - - public visitWithStatement(node: WithStatementSyntax): void { - this.appendToken(node.withKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.appendToken(node.closeParenToken); - this.appendBlockOrStatement(node.statement); - } - - public visitEnumDeclaration(node: EnumDeclarationSyntax): void { - this.appendSpaceList(node.modifiers); - this.ensureSpace(); - this.appendToken(node.enumKeyword); - this.ensureSpace(); - this.appendToken(node.identifier); - this.ensureSpace(); - this.appendToken(node.openBraceToken); - this.ensureNewLine(); - - this.indentation++; - this.appendSeparatorNewLineList(node.enumElements); - this.indentation--; - - this.appendToken(node.closeBraceToken); - } - - public visitEnumElement(node: EnumElementSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.ensureSpace(); - this.appendNode(node.equalsValueClause); - } - - public visitTypeAssertionExpression(node: TypeAssertionExpressionSyntax): void { - this.appendToken(node.lessThanToken); - visitNodeOrToken(this, node.type); - this.appendToken(node.greaterThanToken); - visitNodeOrToken(this, node.expression); - } - - public visitObjectLiteralExpression(node: ObjectLiteralExpressionSyntax): void { - this.appendToken(node.openBraceToken); - - if (childCount(node.propertyAssignments) === 1) { - this.ensureSpace(); - visitNodeOrToken(this, childAt(node.propertyAssignments, 0)); - this.ensureSpace(); - } - else if (childCount(node.propertyAssignments) > 0) { - this.indentation++; - this.ensureNewLine(); - this.appendSeparatorNewLineList(node.propertyAssignments); - this.ensureNewLine(); - this.indentation--; - } - - this.appendToken(node.closeBraceToken); - } - - public visitComputedPropertyName(node: ComputedPropertyNameSyntax): void { - this.appendToken(node.openBracketToken); - visitNodeOrToken(this, node.expression); - this.appendToken(node.closeBracketToken); - } - - public visitPropertyAssignment(node: PropertyAssignmentSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.appendToken(node.colonToken); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitFunctionExpression(node: FunctionExpressionSyntax): void { - this.appendToken(node.functionKeyword); - - if (node.identifier) { - this.ensureSpace(); - this.appendToken(node.identifier); - } - - visitNodeOrToken(this, node.callSignature); - this.ensureSpace(); - visitNodeOrToken(this, node.body); - } - - public visitEmptyStatement(node: EmptyStatementSyntax): void { - this.appendToken(node.semicolonToken); - } - - public visitTryStatement(node: TryStatementSyntax): void { - this.appendToken(node.tryKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.block); - this.appendNode(node.catchClause); - this.appendNode(node.finallyClause); - } - - public visitCatchClause(node: CatchClauseSyntax): void { - this.ensureNewLine(); - this.appendToken(node.catchKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - this.appendToken(node.identifier); - this.appendToken(node.closeParenToken); - this.ensureSpace(); - visitNodeOrToken(this, node.block); - } - - public visitFinallyClause(node: FinallyClauseSyntax): void { - this.ensureNewLine(); - this.appendToken(node.finallyKeyword); - this.ensureNewLine(); - visitNodeOrToken(this, node.block); - } - - public visitLabeledStatement(node: LabeledStatementSyntax): void { - this.appendToken(node.identifier); - this.appendToken(node.colonToken); - this.appendBlockOrStatement(node.statement); - } - - public visitDoStatement(node: DoStatementSyntax): void { - this.appendToken(node.doKeyword); - this.appendBlockOrStatement(node.statement); - this.ensureNewLine(); - this.appendToken(node.whileKeyword); - this.ensureSpace(); - this.appendToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.appendToken(node.closeParenToken); - this.appendToken(node.semicolonToken); - } - - public visitTypeOfExpression(node: TypeOfExpressionSyntax): void { - this.appendToken(node.typeOfKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitDeleteExpression(node: DeleteExpressionSyntax): void { - this.appendToken(node.deleteKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitVoidExpression(node: VoidExpressionSyntax): void { - this.appendToken(node.voidKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitYieldExpression(node: YieldExpressionSyntax): void { - this.appendToken(node.yieldKeyword); - this.ensureSpace(); - this.appendToken(node.asterixToken); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitAwaitExpression(node: AwaitExpressionSyntax): void { - this.appendToken(node.awaitKeyword); - this.ensureSpace(); - visitNodeOrToken(this, node.expression); - } - - public visitDebuggerStatement(node: DebuggerStatementSyntax): void { - this.appendToken(node.debuggerKeyword); - this.appendToken(node.semicolonToken); - } - - public visitTemplateExpression(node: TemplateExpressionSyntax): void { - this.appendToken(node.templateStartToken); - this.ensureSpace(); - this.appendSpaceList(node.templateClauses); - } - - public visitTemplateClause(node: TemplateClauseSyntax): void { - visitNodeOrToken(this, node.expression); - this.ensureSpace(); - this.appendToken(node.templateMiddleOrEndToken); - } - - public visitTemplateAccessExpression(node: TemplateAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - this.ensureSpace(); - visitNodeOrToken(this, node.templateExpression); - } - } -} \ No newline at end of file diff --git a/src/services/syntax/references.ts b/src/services/syntax/references.ts deleted file mode 100644 index 38b5fd9a160..00000000000 --- a/src/services/syntax/references.ts +++ /dev/null @@ -1,50 +0,0 @@ -/// - -/// -/// -/// -// /// -/// - -// Scanner depends on SyntaxKind and SyntaxFacts -/// -/// -/// -/// - -/// -/// -/// -/// -/// -/// - -// SyntaxDedenter depends on SyntaxRewriter -// /// -// SyntaxIndenter depends on SyntaxRewriter -// /// - -/// -/// -/// -/// -/// - -// SyntaxInformationMap depends on SyntaxWalker -// /// - -// SyntaxUtilities depends on SyntaxWalker -/// - -/// - -// Concrete nodes depend on the parser. -/// -/// - -// SyntaxTree depends on PositionTrackingWalker -/// - -/// -/// -/// diff --git a/src/services/syntax/scanner.ts b/src/services/syntax/scanner.ts deleted file mode 100644 index 6adcf16f75f..00000000000 --- a/src/services/syntax/scanner.ts +++ /dev/null @@ -1,1610 +0,0 @@ -/// - -module TypeScript.Scanner { - // Make sure we can encode a token's kind in 7 bits. - Debug.assert(SyntaxKind.LastToken <= 127); - - // Fixed width tokens (keywords and punctuation) that have no trivia generally make up 30% of - // all the tokens in a program. We heavily optimize for that case with a token instance that - // just needs a parent pointer and a single 30bit int like so: - // - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0xxx xxxx <-- kind - // 0000 0000 0000 0000 0000 0000 0000 0000 00xx xxxx xxxx xxxx xxxx xxxx x000 0000 <-- full start - // ^ ^ ^ - // | | | - // Bit 64 Bit 30 Bit 1 - // - // This gives us 23 bits for the start of the token. We don't need to store the width as it - // can be inferred from the 'kind' for a fixed width token. - // - // For small tokens, we encode the data in one 30bit int like so: - // - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0xxx xxxx <-- kind - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 xxxx x000 0000 <-- full width - // 0000 0000 0000 0000 0000 0000 0000 0000 00xx xxxx xxxx xxxx xxxx 0000 0000 0000 <-- full start - // ^ ^ ^ - // | | | - // Bit 64 Bit 30 Bit 1 - // - // This allows for 5bits for teh width. i.e. tokens up to 31 chars in width. And 18 bits for - // the full start. This allows for tokens starting up to and including position 262,143. - // - // In practice, for codebases we have measured, these values are sufficient to cover ~85% of - // all tokens. If a token won't fit within those limits, we make a large token for it. - // - // - // For large tokens, we encode data with two 30 bit ints like so: - // - // _packedFullStartAndInfo: - // - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000x <-- has leading trivia - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00x0 <-- has leading comment (implies has leading trivia) - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0x00 <-- has trailing trivia - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 x000 <-- has trailing comment (implies has trailing trivia) - // 0000 0000 0000 0000 0000 0000 0000 0000 00xx xxxx xxxx xxxx xxxx xxxx xxxx 0000 <-- full start - // ^ ^ ^ - // | | | - // Bit 64 Bit 30 Bit 1 - // - // This gives us 26 bits for the start of the token. At 64MB That's more than enough for - // any codebase. - // - // _packedFullWidthAndKind: - // - // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0xxx xxxx <-- kind - // 0000 0000 0000 0000 0000 0000 0000 0000 00xx xxxx xxxx xxxx xxxx xxxx x000 0000 <-- full width - // ^ ^ ^ - // | | | - // Bit 64 Bit 30 Bit 1 - // - // This gives us 23bit for width (or 8MB of width which should be enough for any codebase). - - enum ScannerConstants { - LargeTokenFullWidthShift = 3, - - WhitespaceTrivia = 0x01, // 00000001 - NewlineTrivia = 0x02, // 00000010 - CommentTrivia = 0x04, // 00000100 - TriviaMask = 0x07, // 00000111 - - KindMask = 0x7F, // 01111111 - IsVariableWidthMask = 0x80, // 10000000 - } - - function largeTokenPackData(fullWidth: number, leadingTriviaInfo: number) { - return (fullWidth << ScannerConstants.LargeTokenFullWidthShift) | leadingTriviaInfo; - } - - function largeTokenUnpackFullWidth(packedFullWidthAndInfo: number): number { - return packedFullWidthAndInfo >> ScannerConstants.LargeTokenFullWidthShift; - } - - function largeTokenUnpackLeadingTriviaInfo(packedFullWidthAndInfo: number): number { - return packedFullWidthAndInfo & ScannerConstants.TriviaMask; - } - - function largeTokenUnpackHasLeadingTrivia(packed: number): boolean { - return largeTokenUnpackLeadingTriviaInfo(packed) !== 0; - } - - function hasComment(info: number) { - return (info & ScannerConstants.CommentTrivia) !== 0; - } - - function hasNewLine(info: number) { - return (info & ScannerConstants.NewlineTrivia) !== 0; - } - - function largeTokenUnpackHasLeadingNewLine(packed: number): boolean { - return hasNewLine(largeTokenUnpackLeadingTriviaInfo(packed)); - } - - function largeTokenUnpackHasLeadingComment(packed: number): boolean { - return hasComment(largeTokenUnpackLeadingTriviaInfo(packed)); - } - - var isKeywordStartCharacter: number[] = ArrayUtilities.createArray(CharacterCodes.maxAsciiCharacter, 0); - var isIdentifierStartCharacter: boolean[] = ArrayUtilities.createArray(CharacterCodes.maxAsciiCharacter, false); - var isIdentifierPartCharacter: boolean[] = ArrayUtilities.createArray(CharacterCodes.maxAsciiCharacter, false); - - for (var character = 0; character < CharacterCodes.maxAsciiCharacter; character++) { - if ((character >= CharacterCodes.a && character <= CharacterCodes.z) || - (character >= CharacterCodes.A && character <= CharacterCodes.Z) || - character === CharacterCodes._ || character === CharacterCodes.$) { - - isIdentifierStartCharacter[character] = true; - isIdentifierPartCharacter[character] = true; - } - else if (character >= CharacterCodes._0 && character <= CharacterCodes._9) { - isIdentifierPartCharacter[character] = true; - } - } - - for (var keywordKind = SyntaxKind.FirstKeyword; keywordKind <= SyntaxKind.LastKeyword; keywordKind++) { - var keyword = SyntaxFacts.getText(keywordKind); - isKeywordStartCharacter[keyword.charCodeAt(0)] = 1; - } - - export function isContextualToken(token: ISyntaxToken): boolean { - // These tokens are contextually created based on parsing decisions. We can't reuse - // them in incremental scenarios as we may be in a context where the parser would not - // create them. - switch (token.kind) { - // Created by the parser when it sees / or /= in a location where it needs an expression. - case SyntaxKind.RegularExpressionLiteral: - - // Created by the parser when it sees > in a binary expression operator context. - case SyntaxKind.GreaterThanGreaterThanToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: - case SyntaxKind.GreaterThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: - return true; - - // Created by the parser when it sees } while parsing a template expression. - case SyntaxKind.TemplateMiddleToken: - case SyntaxKind.TemplateEndToken: - return true; - - default: - return token.isKeywordConvertedToIdentifier(); - } - } - - var lastTokenInfo = { leadingTriviaWidth: -1 }; - var lastTokenInfoTokenID: number = -1; - - var triviaScanner = createScannerInternal(ts.ScriptTarget.Latest, SimpleText.fromString(""),() => { }); - - interface IScannerToken extends ISyntaxToken { - } - - function fillSizeInfo(token: IScannerToken, text: ISimpleText): void { - if (lastTokenInfoTokenID !== syntaxID(token)) { - triviaScanner.fillTokenInfo(token, text, lastTokenInfo); - lastTokenInfoTokenID = syntaxID(token); - } - } - - function fullText(token: IScannerToken, text: ISimpleText): string { - return text.substr(token.fullStart(), token.fullWidth()); - } - - function leadingTrivia(token: IScannerToken, text: ISimpleText): ISyntaxTriviaList { - if (!token.hasLeadingTrivia()) { - return Syntax.emptyTriviaList; - } - - return triviaScanner.scanTrivia(token, text); - } - - function leadingTriviaWidth(token: IScannerToken, text: ISimpleText): number { - if (!token.hasLeadingTrivia()) { - return 0; - } - - fillSizeInfo(token, text); - return lastTokenInfo.leadingTriviaWidth; - } - - function tokenIsIncrementallyUnusable(token: IScannerToken): boolean { - // No scanner tokens make their *containing node* incrementally unusable. - // Note: several scanner tokens may themselves be unusable. i.e. if the parser asks - // for a full node, then that ndoe can be returned even if it contains parser generated - // tokens (like regexs and merged operator tokens). However, if the parser asks for a - // for a token, then those contextual tokens will not be reusable. - return false; - } - - class FixedWidthTokenWithNoTrivia implements ISyntaxToken { - public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; public _typeBrand: any; public _nameBrand: any; public _propertyAssignmentBrand: any; public _propertyNameBrand: any; - public parent: ISyntaxElement; - public childCount: number; - - constructor(private _fullStart: number, public kind: SyntaxKind) { - Debug.assert(!isNaN(_fullStart)); - } - - public setFullStart(fullStart: number): void { - this._fullStart = fullStart; - } - - public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } - - public isIncrementallyUnusable(): boolean { return false; } - public isKeywordConvertedToIdentifier(): boolean { return false; } - public fullText(): string { return SyntaxFacts.getText(this.kind); } - public text(): string { return this.fullText(); } - public leadingTrivia(): ISyntaxTriviaList { return Syntax.emptyTriviaList; } - public leadingTriviaWidth(): number { return 0; } - - public fullWidth(): number { return fixedWidthTokenLength(this.kind); } - public fullStart(): number { return this._fullStart; } - public hasLeadingTrivia(): boolean { return false; } - public hasLeadingNewLine(): boolean { return false; } - public hasLeadingSkippedToken(): boolean { return false; } - public hasLeadingComment(): boolean { return false; } - - public clone(): ISyntaxToken { return new FixedWidthTokenWithNoTrivia(this._fullStart, this.kind); } - } - FixedWidthTokenWithNoTrivia.prototype.childCount = 0; - - class LargeScannerToken implements ISyntaxToken { - public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; public _typeBrand: any; public _nameBrand: any; public _propertyAssignmentBrand: any; public _propertyNameBrand: any; - public parent: ISyntaxElement; - public childCount: number; - - private cachedText: string; - - constructor(private _fullStart: number, public kind: SyntaxKind, private _packedFullWidthAndInfo: number, cachedText: string) { - Debug.assert(!isNaN(_fullStart)); - if (cachedText !== undefined) { - this.cachedText = cachedText; - } - } - - public setFullStart(fullStart: number): void { - this._fullStart = fullStart; - } - - public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } - - private syntaxTreeText(text: ISimpleText) { - var result = text || syntaxTree(this).text; - Debug.assert(result); - return result; - } - - public isIncrementallyUnusable(): boolean { return tokenIsIncrementallyUnusable(this); } - public isKeywordConvertedToIdentifier(): boolean { return false; } - - public fullText(text?: ISimpleText): string { - return fullText(this, this.syntaxTreeText(text)); - } - - public text(): string { - var cachedText = this.cachedText; - return cachedText !== undefined ? cachedText : SyntaxFacts.getText(this.kind); - } - - public leadingTrivia(text?: ISimpleText): ISyntaxTriviaList { return leadingTrivia(this, this.syntaxTreeText(text)); } - public leadingTriviaWidth(text?: ISimpleText): number { return leadingTriviaWidth(this, this.syntaxTreeText(text)); } - - public fullWidth(): number { return largeTokenUnpackFullWidth(this._packedFullWidthAndInfo); } - public fullStart(): number { return this._fullStart; } - - public hasLeadingTrivia(): boolean { return largeTokenUnpackHasLeadingTrivia(this._packedFullWidthAndInfo); } - public hasLeadingNewLine(): boolean { return largeTokenUnpackHasLeadingNewLine(this._packedFullWidthAndInfo); } - public hasLeadingComment(): boolean { return largeTokenUnpackHasLeadingComment(this._packedFullWidthAndInfo); } - public hasLeadingSkippedToken(): boolean { return false; } - - public clone(): ISyntaxToken { return new LargeScannerToken(this._fullStart, this.kind, this._packedFullWidthAndInfo, this.cachedText); } - } - LargeScannerToken.prototype.childCount = 0; - - export interface DiagnosticCallback { - (position: number, width: number, key: string, arguments?: any[]): void; - } - - interface TokenInfo { - leadingTriviaWidth: number; - } - - interface IScannerInternal extends IScanner { - fillTokenInfo(token: IScannerToken, text: ISimpleText, tokenInfo: TokenInfo): void; - scanTrivia(token: IScannerToken, text: ISimpleText): ISyntaxTriviaList; - } - - export interface IScanner { - setIndex(index: number): void; - scan(allowContextualToken: boolean): ISyntaxToken; - } - - export function createScanner(languageVersion: ts.ScriptTarget, text: ISimpleText, reportDiagnostic: DiagnosticCallback): IScanner { - var scanner = createScannerInternal(languageVersion, text, reportDiagnostic); - return { - setIndex: scanner.setIndex, - scan: scanner.scan, - }; - } - - function createScannerInternal(languageVersion: ts.ScriptTarget, text: ISimpleText, reportDiagnostic: DiagnosticCallback): IScannerInternal { - var str: string; - var index: number; - var start: number; - var end: number; - - function setIndex(_index: number) { - index = _index; - } - - function reset(_text: ISimpleText, _start: number, _end: number) { - var textLength = _text.length(); - Debug.assert(_start <= textLength, "Token's start was not within the bounds of text."); - Debug.assert(_end <= textLength, "Token's end was not within the bounds of text:"); - - if (!str || text !== _text) { - text = _text; - str = _text.substr(0, textLength); - } - - start = _start; - end = _end; - index = _start; - } - - function scan(allowContextualToken: boolean): ISyntaxToken { - var fullStart = index; - var leadingTriviaInfo = scanTriviaInfo(); - - var start = index; - var kindAndIsVariableWidth = scanSyntaxKind(allowContextualToken); - - var fullEnd = index; - var fullWidth = fullEnd - fullStart; - - // If we have no trivia, and we are a fixed width token kind, and our size isn't too - // large, and we're a real fixed width token (and not something like "\u0076ar"). - var kind = kindAndIsVariableWidth & ScannerConstants.KindMask; - var isFixedWidth = kind >= SyntaxKind.FirstFixedWidth && kind <= SyntaxKind.LastFixedWidth && - ((kindAndIsVariableWidth & ScannerConstants.IsVariableWidthMask) === 0); - - if (isFixedWidth && leadingTriviaInfo === 0) { - return new FixedWidthTokenWithNoTrivia(fullStart, kind); - } - else { - var packedFullWidthAndInfo = largeTokenPackData(fullWidth, leadingTriviaInfo); - var cachedText = isFixedWidth ? undefined : text.substr(start, fullEnd - start); - return new LargeScannerToken(fullStart, kind, packedFullWidthAndInfo, cachedText); - } - } - - function scanTrivia(parent: IScannerToken, text: ISimpleText): ISyntaxTriviaList { - var tokenFullStart = parent.fullStart(); - var tokenStart = tokenFullStart + leadingTriviaWidth(parent, text) - - reset(text, tokenFullStart, tokenStart); - // Debug.assert(length > 0); - - // Keep this exactly in sync with scanTriviaInfo - var trivia: ISyntaxTrivia[] = []; - - while (true) { - if (index < end) { - var ch = str.charCodeAt(index); - switch (ch) { - // Unicode 3.0 space characters - case CharacterCodes.space: - case CharacterCodes.nonBreakingSpace: - case CharacterCodes.enQuad: - case CharacterCodes.emQuad: - case CharacterCodes.enSpace: - case CharacterCodes.emSpace: - case CharacterCodes.threePerEmSpace: - case CharacterCodes.fourPerEmSpace: - case CharacterCodes.sixPerEmSpace: - case CharacterCodes.figureSpace: - case CharacterCodes.punctuationSpace: - case CharacterCodes.thinSpace: - case CharacterCodes.hairSpace: - case CharacterCodes.zeroWidthSpace: - case CharacterCodes.narrowNoBreakSpace: - case CharacterCodes.ideographicSpace: - - case CharacterCodes.tab: - case CharacterCodes.verticalTab: - case CharacterCodes.formFeed: - case CharacterCodes.byteOrderMark: - // Normal whitespace. Consume and continue. - trivia.push(scanWhitespaceTrivia()); - continue; - - case CharacterCodes.slash: - // Potential comment. Consume if so. Otherwise, break out and return. - var ch2 = str.charCodeAt(index + 1); - if (ch2 === CharacterCodes.slash) { - trivia.push(scanSingleLineCommentTrivia()); - continue; - } - - if (ch2 === CharacterCodes.asterisk) { - trivia.push(scanMultiLineCommentTrivia()); - continue; - } - - // Not a comment. Don't consume. - throw Errors.invalidOperation(); - - case CharacterCodes.carriageReturn: - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - trivia.push(scanLineTerminatorSequenceTrivia(ch)); - continue; - - default: - throw Errors.invalidOperation(); - } - } - - // Debug.assert(trivia.length > 0); - var triviaList = Syntax.triviaList(trivia); - triviaList.parent = parent; - - return triviaList; - } - } - - // Returns 0 if there was no trivia, or 1 if there was trivia. Returned as an int instead - // of a boolean because we'll need a numerical value later on to store in our tokens. - function scanTriviaInfo(): number { - // Keep this exactly in sync with scanTrivia - var result = 0; - var _end = end; - - while (index < _end) { - var ch = str.charCodeAt(index); - - switch (ch) { - case CharacterCodes.tab: - case CharacterCodes.space: - case CharacterCodes.verticalTab: - case CharacterCodes.formFeed: - index++; - // we have trivia - result |= ScannerConstants.WhitespaceTrivia; - continue; - - case CharacterCodes.carriageReturn: - if ((index + 1) < end && str.charCodeAt(index + 1) === CharacterCodes.lineFeed) { - index++; - } - // fall through. - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - index++; - - // we have trivia - result |= ScannerConstants.NewlineTrivia; - continue; - - case CharacterCodes.slash: - if ((index + 1) < _end) { - var ch2 = str.charCodeAt(index + 1); - if (ch2 === CharacterCodes.slash) { - // we have a comment, and we have trivia - result |= ScannerConstants.CommentTrivia; - skipSingleLineCommentTrivia(); - continue; - } - - if (ch2 === CharacterCodes.asterisk) { - // we have a comment, and we have trivia - result |= ScannerConstants.CommentTrivia; - skipMultiLineCommentTrivia(); - continue; - } - } - - // Not a comment. Don't consume. - return result; - - default: - if (ch > CharacterCodes.maxAsciiCharacter && slowScanWhitespaceTriviaInfo(ch)) { - result |= ScannerConstants.WhitespaceTrivia; - continue; - } - - return result; - } - } - - return result; - } - - function slowScanWhitespaceTriviaInfo(ch: number): boolean { - switch (ch) { - case CharacterCodes.nonBreakingSpace: - case CharacterCodes.enQuad: - case CharacterCodes.emQuad: - case CharacterCodes.enSpace: - case CharacterCodes.emSpace: - case CharacterCodes.threePerEmSpace: - case CharacterCodes.fourPerEmSpace: - case CharacterCodes.sixPerEmSpace: - case CharacterCodes.figureSpace: - case CharacterCodes.punctuationSpace: - case CharacterCodes.thinSpace: - case CharacterCodes.hairSpace: - case CharacterCodes.zeroWidthSpace: - case CharacterCodes.narrowNoBreakSpace: - case CharacterCodes.ideographicSpace: - case CharacterCodes.byteOrderMark: - index++; - return true; - - default: - return false; - } - } - - function isNewLineCharacter(ch: number): boolean { - switch (ch) { - case CharacterCodes.carriageReturn: - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - return true; - default: - return false; - } - } - - function scanWhitespaceTrivia(): ISyntaxTrivia { - // We're going to be extracting text out of sliding window. Make sure it can't move past - // this point. - var absoluteStartIndex = index; - - while (true) { - var ch = str.charCodeAt(index); - - switch (ch) { - // Unicode 3.0 space characters - case CharacterCodes.space: - case CharacterCodes.nonBreakingSpace: - case CharacterCodes.enQuad: - case CharacterCodes.emQuad: - case CharacterCodes.enSpace: - case CharacterCodes.emSpace: - case CharacterCodes.threePerEmSpace: - case CharacterCodes.fourPerEmSpace: - case CharacterCodes.sixPerEmSpace: - case CharacterCodes.figureSpace: - case CharacterCodes.punctuationSpace: - case CharacterCodes.thinSpace: - case CharacterCodes.hairSpace: - case CharacterCodes.zeroWidthSpace: - case CharacterCodes.narrowNoBreakSpace: - case CharacterCodes.ideographicSpace: - - case CharacterCodes.tab: - case CharacterCodes.verticalTab: - case CharacterCodes.formFeed: - case CharacterCodes.byteOrderMark: - // Normal whitespace. Consume and continue. - index++; - continue; - } - - break; - } - - return createTrivia(SyntaxKind.WhitespaceTrivia, absoluteStartIndex); - } - - function createTrivia(kind: SyntaxKind, absoluteStartIndex: number): ISyntaxTrivia { - var fullWidth = index - absoluteStartIndex; - return Syntax.deferredTrivia(kind, text, absoluteStartIndex, fullWidth); - } - - function scanSingleLineCommentTrivia(): ISyntaxTrivia { - var absoluteStartIndex = index; - skipSingleLineCommentTrivia(); - - return createTrivia(SyntaxKind.SingleLineCommentTrivia, absoluteStartIndex); - } - - function skipSingleLineCommentTrivia(): void { - index += 2; - - // The '2' is for the "//" we consumed. - while (index < end) { - if (isNewLineCharacter(str.charCodeAt(index))) { - return; - } - - index++; - } - } - - function scanMultiLineCommentTrivia(): ISyntaxTrivia { - var absoluteStartIndex = index; - skipMultiLineCommentTrivia(); - - return createTrivia(SyntaxKind.MultiLineCommentTrivia, absoluteStartIndex); - } - - function skipMultiLineCommentTrivia(): void { - // The '2' is for the "/*" we consumed. - var _index = index + 2; - var _end = end; - - index += 2; - - while (true) { - if (_index === _end) { - reportDiagnostic(end, 0, DiagnosticCode._0_expected, ["*/"]); - break; - } - - if ((_index + 1) < _end && - str.charCodeAt(_index) === CharacterCodes.asterisk && - str.charCodeAt(_index + 1) === CharacterCodes.slash) { - - _index += 2; - break; - } - - _index++; - } - - index = _index; - } - - function scanLineTerminatorSequenceTrivia(ch: number): ISyntaxTrivia { - var absoluteStartIndex = index; - skipLineTerminatorSequence(ch); - - return createTrivia(SyntaxKind.NewLineTrivia, absoluteStartIndex); - } - - function skipLineTerminatorSequence(ch: number): void { - // Consume the first of the line terminator we saw. - index++; - - // If it happened to be a \r and there's a following \n, then consume both. - if (ch === CharacterCodes.carriageReturn && str.charCodeAt(index) === CharacterCodes.lineFeed) { - index++; - } - } - - function scanSyntaxKind(allowContextualToken: boolean): SyntaxKind { - if (index >= end) { - return SyntaxKind.EndOfFileToken; - } - - var character = str.charCodeAt(index); - index++; - - switch (character) { - case CharacterCodes.exclamation/*33*/: return scanExclamationToken(); - case CharacterCodes.doubleQuote/*34*/: return scanStringLiteral(character); - case CharacterCodes.percent/*37*/: return scanPercentToken(); - case CharacterCodes.ampersand/*38*/: return scanAmpersandToken(); - case CharacterCodes.singleQuote/*39*/: return scanStringLiteral(character); - case CharacterCodes.openParen/*40*/: return SyntaxKind.OpenParenToken; - case CharacterCodes.closeParen/*41*/: return SyntaxKind.CloseParenToken; - case CharacterCodes.asterisk/*42*/: return scanAsteriskToken(); - case CharacterCodes.plus/*43*/: return scanPlusToken(); - case CharacterCodes.comma/*44*/: return SyntaxKind.CommaToken; - case CharacterCodes.minus/*45*/: return scanMinusToken(); - case CharacterCodes.dot/*46*/: return scanDotToken(); - case CharacterCodes.slash/*47*/: return scanSlashToken(allowContextualToken); - - case CharacterCodes._0/*48*/: case CharacterCodes._1: case CharacterCodes._2: case CharacterCodes._3: - case CharacterCodes._4: case CharacterCodes._5: case CharacterCodes._6: case CharacterCodes._7: - case CharacterCodes._8: case CharacterCodes._9/*57*/: - return scanNumericLiteral(character); - - case CharacterCodes.colon/*58*/: return SyntaxKind.ColonToken; - case CharacterCodes.semicolon/*59*/: return SyntaxKind.SemicolonToken; - case CharacterCodes.lessThan/*60*/: return scanLessThanToken(); - case CharacterCodes.equals/*61*/: return scanEqualsToken(); - case CharacterCodes.greaterThan/*62*/: return scanGreaterThanToken(allowContextualToken); - case CharacterCodes.question/*63*/: return SyntaxKind.QuestionToken; - - case CharacterCodes.openBracket/*91*/: return SyntaxKind.OpenBracketToken; - case CharacterCodes.closeBracket/*93*/: return SyntaxKind.CloseBracketToken; - case CharacterCodes.caret/*94*/: return scanCaretToken(); - case CharacterCodes.backtick/*96*/: return scanTemplateToken(character); - - case CharacterCodes.openBrace/*123*/: return SyntaxKind.OpenBraceToken; - case CharacterCodes.bar/*124*/: return scanBarToken(); - case CharacterCodes.closeBrace/*125*/: return scanCloseBraceToken(allowContextualToken, character); - case CharacterCodes.tilde/*126*/: return SyntaxKind.TildeToken; - } - - // We run into so many identifiers (and keywords) when scanning, that we want the code to - // be as fast as possible. To that end, we have an extremely fast path for scanning that - // handles the 99.9% case of no-unicode characters and no unicode escapes. - if (isIdentifierStartCharacter[character]) { - var result = tryFastScanIdentifierOrKeyword(character); - if (result !== SyntaxKind.None) { - return result; - } - } - - // Move the index back one and try the slow path. - index--; - if (isIdentifierStart(peekCharOrUnicodeEscape())) { - return slowScanIdentifierOrKeyword(); - } - - // Was nothing that we could understand. Report the issue and keep moving on. - var text = String.fromCharCode(character); - var messageText = getErrorMessageText(text); - reportDiagnostic(index, 1, DiagnosticCode.Unexpected_character_0, [messageText]); - - index++; - - return SyntaxKind.ErrorToken; - } - - function isIdentifierStart(interpretedChar: number): boolean { - if (isIdentifierStartCharacter[interpretedChar]) { - return true; - } - - return interpretedChar > CharacterCodes.maxAsciiCharacter && Unicode.isIdentifierStart(interpretedChar, languageVersion); - } - - function isIdentifierPart(interpretedChar: number): boolean { - if (isIdentifierPartCharacter[interpretedChar]) { - return true; - } - - return interpretedChar > CharacterCodes.maxAsciiCharacter && Unicode.isIdentifierPart(interpretedChar, languageVersion); - } - - function tryFastScanIdentifierOrKeyword(firstCharacter: number): SyntaxKind { - var startIndex = index; - var character = firstCharacter; - - // Note that we go up to the windowCount-1 so that we can read the character at the end - // of the window and check if it's *not* an identifier part character. - while (index < end) { - character = str.charCodeAt(index); - if (!isIdentifierPartCharacter[character]) { - break; - } - - index++; - } - - if (index < end && (character === CharacterCodes.backslash || character > CharacterCodes.maxAsciiCharacter)) { - // We saw a \ (which could start a unicode escape), or we saw a unicode character. - // This can't be scanned quickly. Don't update the window position and just bail out - // to the slow path. - index = startIndex; - return SyntaxKind.None; - } - else { - // Saw an ascii character that wasn't a backslash and wasn't an identifier - // character. Or we hit the end of the file This identifier is done. - - // Also check if it a keyword if it started with a keyword start char. - if (isKeywordStartCharacter[firstCharacter]) { - return ScannerUtilities.identifierKind(str, startIndex - 1, index - startIndex + 1); - } - else { - return SyntaxKind.IdentifierName; - } - } - } - - // A slow path for scanning identifiers. Called when we run into a unicode character or - // escape sequence while processing the fast path. - function slowScanIdentifierOrKeyword(): SyntaxKind { - var startIndex = index; - - do { - scanCharOrUnicodeEscape(); - } - while (isIdentifierPart(peekCharOrUnicodeEscape())); - - // From ES6 specification. - // The ReservedWord definitions are specified as literal sequences of Unicode - // characters.However, any Unicode character in a ReservedWord can also be - // expressed by a \ UnicodeEscapeSequence that expresses that same Unicode - // character's code point.Use of such escape sequences does not change the meaning - // of the ReservedWord. - // - // i.e. "\u0076ar" is the keyword 'var'. Check for that here. - var length = index - startIndex; - var text = str.substr(startIndex, length); - var valueText = massageEscapes(text); - - var keywordKind = SyntaxFacts.getTokenKind(valueText); - if (keywordKind >= SyntaxKind.FirstKeyword && keywordKind <= SyntaxKind.LastKeyword) { - // We have a keyword, but it is also variable width. We can't put represent this - // width a fixed width token. - return keywordKind | ScannerConstants.IsVariableWidthMask; - } - - return SyntaxKind.IdentifierName; - } - - function scanNumericLiteral(ch: number): SyntaxKind { - if (isHexNumericLiteral(ch)) { - scanHexNumericLiteral(); - } - else if (isOctalNumericLiteral(ch)) { - scanOctalNumericLiteral(); - } - else { - scanDecimalNumericLiteral(); - } - - return SyntaxKind.NumericLiteral; - } - - function isOctalNumericLiteral(ch: number): boolean { - return ch === CharacterCodes._0 && - CharacterInfo.isOctalDigit(str.charCodeAt(index)); - } - - function scanOctalNumericLiteral(): void { - var start = index - 1; - - while (CharacterInfo.isOctalDigit(str.charCodeAt(index))) { - index++; - } - - if (languageVersion >= ts.ScriptTarget.ES5) { - reportDiagnostic( - start, index - start, DiagnosticCode.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher, undefined); - } - } - - function scanDecimalDigits(): void { - while (CharacterInfo.isDecimalDigit(str.charCodeAt(index))) { - index++; - } - } - - function scanDecimalNumericLiteral(): void { - scanDecimalDigits(); - - if (str.charCodeAt(index) === CharacterCodes.dot) { - index++; - } - - scanDecimalNumericLiteralAfterDot(); - } - - function scanDecimalNumericLiteralAfterDot() { - scanDecimalDigits(); - - // If we see an 'e' or 'E' we should only consume it if its of the form: - // e or E - // e+ E+ - // e- E- - var ch = str.charCodeAt(index); - if (ch === CharacterCodes.e || ch === CharacterCodes.E) { - // Ok, we've got 'e' or 'E'. Make sure it's followed correctly. - var nextChar1 = str.charCodeAt(index + 1); - - if (CharacterInfo.isDecimalDigit(nextChar1)) { - // e or E - // Consume 'e' or 'E' and the number portion. - index++; - scanDecimalDigits(); - } - else if (nextChar1 === CharacterCodes.minus || nextChar1 === CharacterCodes.plus) { - // e+ or E+ or e- or E- - var nextChar2 = str.charCodeAt(index + 2); - if (CharacterInfo.isDecimalDigit(nextChar2)) { - // e+ or E+ or e- or E- - // Consume first two characters and the number portion. - index += 2; - scanDecimalDigits(); - } - } - } - } - - function scanHexNumericLiteral(): void { - // Move past the x. - index++; - - while (CharacterInfo.isHexDigit(str.charCodeAt(index))) { - index++; - } - } - - function isHexNumericLiteral(ch: number): boolean { - if (ch === CharacterCodes._0) { - var ch = str.charCodeAt(index); - - if (ch === CharacterCodes.x || ch === CharacterCodes.X) { - return CharacterInfo.isHexDigit(str.charCodeAt(index + 1)); - } - } - - return false; - } - - function scanLessThanToken(): SyntaxKind { - var ch0 = str.charCodeAt(index); - if (ch0 === CharacterCodes.equals) { - index++; - return SyntaxKind.LessThanEqualsToken; - } - else if (ch0 === CharacterCodes.lessThan) { - index++; - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - return SyntaxKind.LessThanLessThanEqualsToken; - } - else { - return SyntaxKind.LessThanLessThanToken; - } - } - else { - return SyntaxKind.LessThanToken; - } - } - - function scanGreaterThanToken(allowContextualToken: boolean): SyntaxKind { - if (allowContextualToken) { - var ch0 = str.charCodeAt(index); - if (ch0 === CharacterCodes.greaterThan) { - // >> - index++; - var ch1 = str.charCodeAt(index); - if (ch1 === CharacterCodes.greaterThan) { - // >>> - index++; - var ch2 = str.charCodeAt(index); - if (ch2 === CharacterCodes.equals) { - // >>>= - index++; - return SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken; - } - else { - return SyntaxKind.GreaterThanGreaterThanGreaterThanToken; - } - } - else if (ch1 === CharacterCodes.equals) { - // >>= - index++; - return SyntaxKind.GreaterThanGreaterThanEqualsToken; - } - else { - return SyntaxKind.GreaterThanGreaterThanToken; - } - } - else if (ch0 === CharacterCodes.equals) { - // >= - index++; - return SyntaxKind.GreaterThanEqualsToken; - } - } - - return SyntaxKind.GreaterThanToken; - } - - function scanBarToken(): SyntaxKind { - var ch = str.charCodeAt(index); - if (ch === CharacterCodes.equals) { - index++; - return SyntaxKind.BarEqualsToken; - } - else if (ch === CharacterCodes.bar) { - index++; - return SyntaxKind.BarBarToken; - } - else { - return SyntaxKind.BarToken; - } - } - - function scanCaretToken(): SyntaxKind { - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - return SyntaxKind.CaretEqualsToken; - } - else { - return SyntaxKind.CaretToken; - } - } - - function scanCloseBraceToken(allowContextualToken: boolean, startChar: number): SyntaxKind { - return allowContextualToken ? scanTemplateToken(startChar) : SyntaxKind.CloseBraceToken; - } - - function scanTemplateToken(startChar: number): SyntaxKind { - var startedWithBacktick = startChar === CharacterCodes.backtick; - - while (true) { - if (index === end) { - // Hit the end of the file. - reportDiagnostic(end, 0, DiagnosticCode.Unterminated_template_literal); - break; - } - - var ch = str.charCodeAt(index); - index++; - - if (ch === CharacterCodes.backtick) { - break; - } - - if (ch === CharacterCodes.$ && - index < end && - str.charCodeAt(index) === CharacterCodes.openBrace) { - - index++; - return startedWithBacktick ? SyntaxKind.TemplateStartToken : SyntaxKind.TemplateMiddleToken; - } - } - - return startedWithBacktick ? SyntaxKind.NoSubstitutionTemplateToken : SyntaxKind.TemplateEndToken; - } - - function scanAmpersandToken(): SyntaxKind { - var character = str.charCodeAt(index); - if (character === CharacterCodes.equals) { - index++; - return SyntaxKind.AmpersandEqualsToken; - } - else if (character === CharacterCodes.ampersand) { - index++; - return SyntaxKind.AmpersandAmpersandToken; - } - else { - return SyntaxKind.AmpersandToken; - } - } - - function scanPercentToken(): SyntaxKind { - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - return SyntaxKind.PercentEqualsToken; - } - else { - return SyntaxKind.PercentToken; - } - } - - function scanMinusToken(): SyntaxKind { - var character = str.charCodeAt(index); - - if (character === CharacterCodes.equals) { - index++; - return SyntaxKind.MinusEqualsToken; - } - else if (character === CharacterCodes.minus) { - index++; - return SyntaxKind.MinusMinusToken; - } - else { - return SyntaxKind.MinusToken; - } - } - - function scanPlusToken(): SyntaxKind { - var character = str.charCodeAt(index); - if (character === CharacterCodes.equals) { - index++; - return SyntaxKind.PlusEqualsToken; - } - else if (character === CharacterCodes.plus) { - index++; - return SyntaxKind.PlusPlusToken; - } - else { - return SyntaxKind.PlusToken; - } - } - - function scanAsteriskToken(): SyntaxKind { - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - return SyntaxKind.AsteriskEqualsToken; - } - else { - return SyntaxKind.AsteriskToken; - } - } - - function scanEqualsToken(): SyntaxKind { - var character = str.charCodeAt(index); - if (character === CharacterCodes.equals) { - index++; - - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - - return SyntaxKind.EqualsEqualsEqualsToken; - } - else { - return SyntaxKind.EqualsEqualsToken; - } - } - else if (character === CharacterCodes.greaterThan) { - index++; - return SyntaxKind.EqualsGreaterThanToken; - } - else { - return SyntaxKind.EqualsToken; - } - } - - function scanDotToken(): SyntaxKind { - var nextChar = str.charCodeAt(index); - if (CharacterInfo.isDecimalDigit(nextChar)) { - scanDecimalNumericLiteralAfterDot(); - return SyntaxKind.NumericLiteral; - } - - if (nextChar === CharacterCodes.dot && - str.charCodeAt(index + 1) === CharacterCodes.dot) { - - index += 2; - return SyntaxKind.DotDotDotToken; - } - else { - return SyntaxKind.DotToken; - } - } - - function scanSlashToken(allowContextualToken: boolean): SyntaxKind { - // NOTE: By default, we do not try scanning a / as a regexp here. We instead consider it a - // div or div-assign. Later on, if the parser runs into a situation where it would like a - // term, and it sees one of these then it may restart us asking specifically if we could - // scan out a regex. - if (allowContextualToken) { - return scanRegularExpressionToken(); - } - - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - return SyntaxKind.SlashEqualsToken; - } - else { - return SyntaxKind.SlashToken; - } - } - - function scanRegularExpressionToken(): SyntaxKind { - var startIndex = index; - - var inEscape = false; - var inCharacterClass = false; - while (true) { - var ch = str.charCodeAt(index); - - if (isNaN(ch) || isNewLineCharacter(ch)) { - // Hit the end of line, or end of the file. This is not a legal regex. - reportDiagnostic(index, 0, DiagnosticCode.Unterminated_regular_expression_literal); - break; - } - - index++; - if (inEscape) { - inEscape = false; - continue; - } - - switch (ch) { - case CharacterCodes.backslash: - // We're now in an escape. Consume the next character we see (unless it's - // a newline or undefined. - inEscape = true; - continue; - - case CharacterCodes.openBracket: - // If we see a [ then we're starting an character class. Note: it's ok if - // we then hit another [ inside a character class. We'll just set the value - // to true again and that's ok. - inCharacterClass = true; - continue; - - case CharacterCodes.closeBracket: - // If we ever hit a close bracket then we're now no longer in a character - // class. If we weren't in a character class to begin with, then this has - // no effect. - inCharacterClass = false; - continue; - - case CharacterCodes.slash: - // If we see a slash, and we're in a character class, then ignore it. - if (inCharacterClass) { - continue; - } - - // We're done with the regex. Break out of the switch (which will break - // out of hte loop. - break; - - default: - // Just consume any other characters. - continue; - } - - break; - } - - // TODO: The grammar says any identifier part is allowed here. Do we need to support - // \u identifiers here? The existing typescript parser does not. - while (index < end && isIdentifierPartCharacter[str.charCodeAt(index)]) { - index++; - } - - return SyntaxKind.RegularExpressionLiteral; - } - - function scanExclamationToken(): SyntaxKind { - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - - if (str.charCodeAt(index) === CharacterCodes.equals) { - index++; - - return SyntaxKind.ExclamationEqualsEqualsToken; - } - else { - return SyntaxKind.ExclamationEqualsToken; - } - } - else { - return SyntaxKind.ExclamationToken; - } - } - - // Convert text into a printable form usable for an error message. This will both quote the - // string, and ensure all characters printable (i.e. by using unicode escapes when they're not). - function getErrorMessageText(text: string): string { - // For just a simple backslash, we return it as is. The default behavior of JSON.stringify - // is not what we want here. - if (text === "\\") { - return '"\\"'; - } - - return JSON.stringify(text); - } - - function skipEscapeSequence(): void { - var rewindPoint = index; - - // Consume the backslash. - index++; - - // Get the char after the backslash - var ch = str.charCodeAt(index); - if (isNaN(ch)) { - // if we're at teh end of the file, just return, the string scanning code will - // report an appropriate error. - return; - } - - index++; - switch (ch) { - case CharacterCodes.x: - case CharacterCodes.u: - index = rewindPoint; - var value = scanUnicodeOrHexEscape(/*report:*/ true); - break; - - case CharacterCodes.carriageReturn: - // If it's \r\n then consume both characters. - if (str.charCodeAt(index) === CharacterCodes.lineFeed) { - index++; - } - break; - - // We don't have to do anything special about these characters. I'm including them - // Just so it's clear that we intentially process them in the exact same way: - //case CharacterCodes.singleQuote: - //case CharacterCodes.doubleQuote: - //case CharacterCodes.backslash: - //case CharacterCodes._0: - //case CharacterCodes.b: - //case CharacterCodes.f: - //case CharacterCodes.n: - //case CharacterCodes.r: - //case CharacterCodes.t: - //case CharacterCodes.v: - //case CharacterCodes.lineFeed: - //case CharacterCodes.paragraphSeparator: - //case CharacterCodes.lineSeparator: - default: - // Any other character is ok as well. As per rule: - // EscapeSequence :: CharacterEscapeSequence - // CharacterEscapeSequence :: NonEscapeCharacter - // NonEscapeCharacter :: SourceCharacter but notEscapeCharacter or LineTerminator - break; - } - } - - function scanStringLiteral(quoteCharacter: number): SyntaxKind { - // Debug.assert(quoteCharacter === CharacterCodes.singleQuote || quoteCharacter === CharacterCodes.doubleQuote); - - while (true) { - var ch = str.charCodeAt(index); - if (ch === CharacterCodes.backslash) { - skipEscapeSequence(); - } - else if (ch === quoteCharacter) { - index++; - break; - } - else if (isNaN(ch) || isNewLineCharacter(ch)) { - reportDiagnostic(index, 0, DiagnosticCode.Unterminated_string_literal); - break; - } - else { - index++; - } - } - - return SyntaxKind.StringLiteral; - } - - function isUnicodeEscape(character: number): boolean { - return character === CharacterCodes.backslash && - str.charCodeAt(index + 1) === CharacterCodes.u; - } - - function peekCharOrUnicodeEscape(): number { - var character = str.charCodeAt(index); - if (isUnicodeEscape(character)) { - return peekUnicodeOrHexEscape(); - } - else { - return character; - } - } - - function peekUnicodeOrHexEscape(): number { - var startIndex = index; - - // if we're peeking, then we don't want to change the position - var ch = scanUnicodeOrHexEscape(/*report:*/ false); - - index = startIndex; - - return ch; - } - - // Returns true if this was a unicode escape. - function scanCharOrUnicodeEscape(): void { - if (str.charCodeAt(index) === CharacterCodes.backslash && - str.charCodeAt(index + 1) === CharacterCodes.u) { - - scanUnicodeOrHexEscape(/*report:*/ true); - } - else { - index++; - } - } - - function scanUnicodeOrHexEscape(report: boolean): number { - var start = index; - var character = str.charCodeAt(index); - // Debug.assert(character === CharacterCodes.backslash); - index++; - - character = str.charCodeAt(index); - // Debug.assert(character === CharacterCodes.u || character === CharacterCodes.x); - - var intChar = 0; - index++; - - var count = character === CharacterCodes.u ? 4 : 2; - - for (var i = 0; i < count; i++) { - var ch2 = str.charCodeAt(index); - if (!CharacterInfo.isHexDigit(ch2)) { - if (report) { - reportDiagnostic(start, index - start, DiagnosticCode.Unrecognized_escape_sequence, undefined) - } - - break; - } - - intChar = (intChar << 4) + CharacterInfo.hexValue(ch2); - index++; - } - - return intChar; - } - - function fillTokenInfo(token: IScannerToken, text: ISimpleText, tokenInfo: TokenInfo): void { - var fullStart = token.fullStart(); - var fullEnd = fullStart + token.fullWidth(); - reset(text, fullStart, fullEnd); - - scanTriviaInfo(); - - var start = index; - tokenInfo.leadingTriviaWidth = start - fullStart; - } - - reset(text, 0, text.length()); - - return { - setIndex: setIndex, - scan: scan, - fillTokenInfo: fillTokenInfo, - scanTrivia: scanTrivia, - }; - } - - export function isValidIdentifier(text: ISimpleText, languageVersion: ts.ScriptTarget): boolean { - var hadError = false; - var scanner = createScanner(languageVersion, text,() => hadError = true); - - var token = scanner.scan(/*allowContextualToken:*/ false); - - return !hadError && SyntaxFacts.isIdentifierNameOrAnyKeyword(token) && width(token) === text.length(); - } - - // Parser source used in batch scenarios. Directly calls into an underlying text scanner and - // supports none of the functionality to reuse nodes. Good for when you just want want to do - // a single parse of a file. - export function createParserSource(fileName: string, text: ISimpleText, languageVersion: ts.ScriptTarget): Parser.IParserSource { - // The absolute position we're at in the text we're reading from. - var _absolutePosition: number = 0; - - // The diagnostics we get while scanning. Note: this never gets rewound when we do a normal - // rewind. That's because rewinding doesn't affect the tokens created. It only affects where - // in the token stream we're pointing at. However, it will get modified if we we decide to - // reparse a / or /= as a regular expression. - var _tokenDiagnostics: Diagnostic[] = []; - - var lastDiagnostic: Diagnostic = undefined; - var reportDiagnostic = (position: number, fullWidth: number, diagnosticKey: string, args: any[]) => { - lastDiagnostic = new Diagnostic(fileName, text.lineMap(), position, fullWidth, diagnosticKey, args); - }; - - // The sliding window that we store tokens in. - var slidingWindow = new SlidingWindow(fetchNextItem, ArrayUtilities.createArray(/*defaultWindowSize:*/ 1024, undefined), undefined); - - // The scanner we're pulling tokens from. - var scanner = createScanner(languageVersion, text, reportDiagnostic); - - function currentNode(): ISyntaxNode { - // The normal parser source never returns nodes. They're only returned by the - // incremental parser source. - return undefined; - } - - function absolutePosition() { - Debug.assert(!isNaN(_absolutePosition)); - return _absolutePosition; - } - - function diagnostics(): Diagnostic[] { - return _tokenDiagnostics; - } - - function tryParse(callback: () => T): T { - var savedSlidingWindowIndex = slidingWindow.getAndPinAbsoluteIndex(); - var savedAbsolutePosition = _absolutePosition; - - var result = callback(); - if (!result) { - slidingWindow.rewindToPinnedIndex(savedSlidingWindowIndex); - _absolutePosition = savedAbsolutePosition; - } - - return result; - } - - function fetchNextItem(allowContextualToken: boolean): ISyntaxToken { - // Assert disabled because it is actually expensive enugh to affect perf. - // Debug.assert(spaceAvailable > 0); - var token = scanner.scan(allowContextualToken); - - if (lastDiagnostic === undefined) { - return token; - } - - // If we produced any diagnostics while creating this token, then realize the token so - // it won't be reused in incremental scenarios. - - _tokenDiagnostics.push(lastDiagnostic); - lastDiagnostic = undefined; - return Syntax.realizeToken(token, text); - } - - function peekToken(n: number): ISyntaxToken { - return slidingWindow.peekItemN(n); - } - - function consumeNodeOrToken(nodeOrToken: ISyntaxNodeOrToken): void { - if (nodeOrToken === slidingWindow.currentItemWithoutFetching()) { - // We're consuming the token that was just fetched from us by the parser. We just - // need to move ourselves forward and ditch this token from the sliding window. - _absolutePosition += (nodeOrToken).fullWidth(); - Debug.assert(!isNaN(_absolutePosition)); - slidingWindow.moveToNextItem(); - } - else { - // We're either consuming a node, or we're consuming a token that wasn't from our - // sliding window. Both cases happen in incremental scenarios when the incremental - // parser uses a node or token from an older tree. In that case, we simply want to - // point ourselves at the end of the element that the parser just consumed. - resetToPosition(fullEnd(nodeOrToken)); - } - } - - function currentToken(): ISyntaxToken { - return slidingWindow.currentItem(/*allowContextualToken:*/ false); - } - - function removeDiagnosticsOnOrAfterPosition(position: number): void { - // walk backwards, removing any diagnostics that came after the the current token's - // full start position. - var tokenDiagnosticsLength = _tokenDiagnostics.length; - while (tokenDiagnosticsLength > 0) { - var diagnostic = _tokenDiagnostics[tokenDiagnosticsLength - 1]; - if (diagnostic.start() >= position) { - tokenDiagnosticsLength--; - _tokenDiagnostics.pop(); - } - else { - break; - } - } - } - - function resetToPosition(absolutePosition: number): void { - Debug.assert(absolutePosition <= text.length(), "Trying to set the position outside the bounds of the text!"); - var resetBackward = absolutePosition <= _absolutePosition; - - _absolutePosition = absolutePosition; - - if (resetBackward) { - // First, remove any diagnostics that came after this position. - removeDiagnosticsOnOrAfterPosition(absolutePosition); - } - - // Now, tell our sliding window to throw away all tokens after this position as well. - slidingWindow.disgardAllItemsFromCurrentIndexOnwards(); - - // Now tell the scanner to reset its position to this position as well. That way - // when we try to scan the next item, we'll be at the right location. - scanner.setIndex(absolutePosition); - } - - function currentContextualToken(): ISyntaxToken { - // We better be on a / or > token right now. - // Debug.assert(SyntaxFacts.isAnyDivideToken(currentToken().kind)); - - // First, we're going to rewind all our data to the point where this / or /= token started. - // That's because if it does turn out to be a regular expression, then any tokens or token - // diagnostics we produced after the original / may no longer be valid. This would actually - // be a fairly expected case. For example, if you had: / ... gibberish ... /, we may have - // produced several diagnostics in the process of scanning the tokens after the first / as - // they may not have been legal javascript okens. - // - // We also need to remove all the tokens we've gotten from the slash and onwards. They may - // not have been what the scanner would have produced if it decides that this is actually - // a regular expresion. - resetToPosition(_absolutePosition); - - // Now actually fetch the token again from the scanner. This time let it know that it - // can scan it as a regex token if it wants to. - var token = slidingWindow.currentItem(/*allowContextualToken:*/ true); - - // We have better gotten some sort of regex token. Otherwise, something *very* wrong has - // occurred. - // Debug.assert(SyntaxFacts.isAnyDivideOrRegularExpressionToken(token.kind)); - - return token; - } - - return { - text: text, - fileName: fileName, - languageVersion: languageVersion, - currentNode: currentNode, - currentToken: currentToken, - currentContextualToken: currentContextualToken, - peekToken: peekToken, - consumeNodeOrToken: consumeNodeOrToken, - tryParse: tryParse, - diagnostics: diagnostics, - absolutePosition: absolutePosition - }; - } - - var fixedWidthArray = ScannerUtilities.fixedWidthArray; - function fixedWidthTokenLength(kind: SyntaxKind) { - return fixedWidthArray[kind]; - } -} \ No newline at end of file diff --git a/src/services/syntax/scannerUtilities.generated.ts b/src/services/syntax/scannerUtilities.generated.ts deleted file mode 100644 index 1458dc184a6..00000000000 --- a/src/services/syntax/scannerUtilities.generated.ts +++ /dev/null @@ -1,150 +0,0 @@ -/// - -module TypeScript { - export module ScannerUtilities { - export var fixedWidthArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 8, 8, 7, 6, 2, 4, 5, 7, 3, 8, 2, 2, 10, 3, 4, 6, 6, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 5, 4, 6, 7, 6, 5, 10, 9, 3, 7, 7, 9, 6, 6, 5, 3, 5, 5, 7, 11, 7, 3, 6, 7, 6, 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 2, 2, 2, 1, 2]; - export function identifierKind(str: string, start: number, length: number): SyntaxKind { - switch (length) { - case 2: // do, if, in - switch(str.charCodeAt(start)) { - case CharacterCodes.d: return (str.charCodeAt(start + 1) === CharacterCodes.o) ? SyntaxKind.DoKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.i: // if, in - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.f: return SyntaxKind.IfKeyword; - case CharacterCodes.n: return SyntaxKind.InKeyword; - default: return SyntaxKind.IdentifierName; - } - default: return SyntaxKind.IdentifierName; - } - case 3: // any, for, get, let, new, set, try, var - switch(str.charCodeAt(start)) { - case CharacterCodes.a: return (str.charCodeAt(start + 1) === CharacterCodes.n && str.charCodeAt(start + 2) === CharacterCodes.y) ? SyntaxKind.AnyKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.f: return (str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.r) ? SyntaxKind.ForKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.g: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.t) ? SyntaxKind.GetKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.l: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.t) ? SyntaxKind.LetKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.n: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.w) ? SyntaxKind.NewKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.s: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.t) ? SyntaxKind.SetKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.t: return (str.charCodeAt(start + 1) === CharacterCodes.r && str.charCodeAt(start + 2) === CharacterCodes.y) ? SyntaxKind.TryKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.v: return (str.charCodeAt(start + 1) === CharacterCodes.a && str.charCodeAt(start + 2) === CharacterCodes.r) ? SyntaxKind.VarKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 4: // case, else, enum, null, this, true, type, void, with - switch(str.charCodeAt(start)) { - case CharacterCodes.c: return (str.charCodeAt(start + 1) === CharacterCodes.a && str.charCodeAt(start + 2) === CharacterCodes.s && str.charCodeAt(start + 3) === CharacterCodes.e) ? SyntaxKind.CaseKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.e: // else, enum - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.l: return (str.charCodeAt(start + 2) === CharacterCodes.s && str.charCodeAt(start + 3) === CharacterCodes.e) ? SyntaxKind.ElseKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.n: return (str.charCodeAt(start + 2) === CharacterCodes.u && str.charCodeAt(start + 3) === CharacterCodes.m) ? SyntaxKind.EnumKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.n: return (str.charCodeAt(start + 1) === CharacterCodes.u && str.charCodeAt(start + 2) === CharacterCodes.l && str.charCodeAt(start + 3) === CharacterCodes.l) ? SyntaxKind.NullKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.t: // this, true, type - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.h: return (str.charCodeAt(start + 2) === CharacterCodes.i && str.charCodeAt(start + 3) === CharacterCodes.s) ? SyntaxKind.ThisKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.r: return (str.charCodeAt(start + 2) === CharacterCodes.u && str.charCodeAt(start + 3) === CharacterCodes.e) ? SyntaxKind.TrueKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.y: return (str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.e) ? SyntaxKind.TypeKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.v: return (str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.i && str.charCodeAt(start + 3) === CharacterCodes.d) ? SyntaxKind.VoidKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.w: return (str.charCodeAt(start + 1) === CharacterCodes.i && str.charCodeAt(start + 2) === CharacterCodes.t && str.charCodeAt(start + 3) === CharacterCodes.h) ? SyntaxKind.WithKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 5: // async, await, break, catch, class, const, false, super, throw, while, yield - switch(str.charCodeAt(start)) { - case CharacterCodes.a: // async, await - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.s: return (str.charCodeAt(start + 2) === CharacterCodes.y && str.charCodeAt(start + 3) === CharacterCodes.n && str.charCodeAt(start + 4) === CharacterCodes.c) ? SyntaxKind.AsyncKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.w: return (str.charCodeAt(start + 2) === CharacterCodes.a && str.charCodeAt(start + 3) === CharacterCodes.i && str.charCodeAt(start + 4) === CharacterCodes.t) ? SyntaxKind.AwaitKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.b: return (str.charCodeAt(start + 1) === CharacterCodes.r && str.charCodeAt(start + 2) === CharacterCodes.e && str.charCodeAt(start + 3) === CharacterCodes.a && str.charCodeAt(start + 4) === CharacterCodes.k) ? SyntaxKind.BreakKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.c: // catch, class, const - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.a: return (str.charCodeAt(start + 2) === CharacterCodes.t && str.charCodeAt(start + 3) === CharacterCodes.c && str.charCodeAt(start + 4) === CharacterCodes.h) ? SyntaxKind.CatchKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.l: return (str.charCodeAt(start + 2) === CharacterCodes.a && str.charCodeAt(start + 3) === CharacterCodes.s && str.charCodeAt(start + 4) === CharacterCodes.s) ? SyntaxKind.ClassKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.o: return (str.charCodeAt(start + 2) === CharacterCodes.n && str.charCodeAt(start + 3) === CharacterCodes.s && str.charCodeAt(start + 4) === CharacterCodes.t) ? SyntaxKind.ConstKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.f: return (str.charCodeAt(start + 1) === CharacterCodes.a && str.charCodeAt(start + 2) === CharacterCodes.l && str.charCodeAt(start + 3) === CharacterCodes.s && str.charCodeAt(start + 4) === CharacterCodes.e) ? SyntaxKind.FalseKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.s: return (str.charCodeAt(start + 1) === CharacterCodes.u && str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.e && str.charCodeAt(start + 4) === CharacterCodes.r) ? SyntaxKind.SuperKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.t: return (str.charCodeAt(start + 1) === CharacterCodes.h && str.charCodeAt(start + 2) === CharacterCodes.r && str.charCodeAt(start + 3) === CharacterCodes.o && str.charCodeAt(start + 4) === CharacterCodes.w) ? SyntaxKind.ThrowKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.w: return (str.charCodeAt(start + 1) === CharacterCodes.h && str.charCodeAt(start + 2) === CharacterCodes.i && str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.e) ? SyntaxKind.WhileKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.y: return (str.charCodeAt(start + 1) === CharacterCodes.i && str.charCodeAt(start + 2) === CharacterCodes.e && str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.d) ? SyntaxKind.YieldKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 6: // delete, export, import, module, number, public, return, static, string, switch, typeof - switch(str.charCodeAt(start)) { - case CharacterCodes.d: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.l && str.charCodeAt(start + 3) === CharacterCodes.e && str.charCodeAt(start + 4) === CharacterCodes.t && str.charCodeAt(start + 5) === CharacterCodes.e) ? SyntaxKind.DeleteKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.e: return (str.charCodeAt(start + 1) === CharacterCodes.x && str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.o && str.charCodeAt(start + 4) === CharacterCodes.r && str.charCodeAt(start + 5) === CharacterCodes.t) ? SyntaxKind.ExportKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.i: return (str.charCodeAt(start + 1) === CharacterCodes.m && str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.o && str.charCodeAt(start + 4) === CharacterCodes.r && str.charCodeAt(start + 5) === CharacterCodes.t) ? SyntaxKind.ImportKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.m: return (str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.d && str.charCodeAt(start + 3) === CharacterCodes.u && str.charCodeAt(start + 4) === CharacterCodes.l && str.charCodeAt(start + 5) === CharacterCodes.e) ? SyntaxKind.ModuleKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.n: return (str.charCodeAt(start + 1) === CharacterCodes.u && str.charCodeAt(start + 2) === CharacterCodes.m && str.charCodeAt(start + 3) === CharacterCodes.b && str.charCodeAt(start + 4) === CharacterCodes.e && str.charCodeAt(start + 5) === CharacterCodes.r) ? SyntaxKind.NumberKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.p: return (str.charCodeAt(start + 1) === CharacterCodes.u && str.charCodeAt(start + 2) === CharacterCodes.b && str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.i && str.charCodeAt(start + 5) === CharacterCodes.c) ? SyntaxKind.PublicKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.r: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.t && str.charCodeAt(start + 3) === CharacterCodes.u && str.charCodeAt(start + 4) === CharacterCodes.r && str.charCodeAt(start + 5) === CharacterCodes.n) ? SyntaxKind.ReturnKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.s: // static, string, switch - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.t: // static, string - switch(str.charCodeAt(start + 2)) { - case CharacterCodes.a: return (str.charCodeAt(start + 3) === CharacterCodes.t && str.charCodeAt(start + 4) === CharacterCodes.i && str.charCodeAt(start + 5) === CharacterCodes.c) ? SyntaxKind.StaticKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.r: return (str.charCodeAt(start + 3) === CharacterCodes.i && str.charCodeAt(start + 4) === CharacterCodes.n && str.charCodeAt(start + 5) === CharacterCodes.g) ? SyntaxKind.StringKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.w: return (str.charCodeAt(start + 2) === CharacterCodes.i && str.charCodeAt(start + 3) === CharacterCodes.t && str.charCodeAt(start + 4) === CharacterCodes.c && str.charCodeAt(start + 5) === CharacterCodes.h) ? SyntaxKind.SwitchKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.t: return (str.charCodeAt(start + 1) === CharacterCodes.y && str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.e && str.charCodeAt(start + 4) === CharacterCodes.o && str.charCodeAt(start + 5) === CharacterCodes.f) ? SyntaxKind.TypeOfKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 7: // boolean, declare, default, extends, finally, package, private, require - switch(str.charCodeAt(start)) { - case CharacterCodes.b: return (str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.o && str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.e && str.charCodeAt(start + 5) === CharacterCodes.a && str.charCodeAt(start + 6) === CharacterCodes.n) ? SyntaxKind.BooleanKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.d: // declare, default - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.e: // declare, default - switch(str.charCodeAt(start + 2)) { - case CharacterCodes.c: return (str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.a && str.charCodeAt(start + 5) === CharacterCodes.r && str.charCodeAt(start + 6) === CharacterCodes.e) ? SyntaxKind.DeclareKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.f: return (str.charCodeAt(start + 3) === CharacterCodes.a && str.charCodeAt(start + 4) === CharacterCodes.u && str.charCodeAt(start + 5) === CharacterCodes.l && str.charCodeAt(start + 6) === CharacterCodes.t) ? SyntaxKind.DefaultKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.e: return (str.charCodeAt(start + 1) === CharacterCodes.x && str.charCodeAt(start + 2) === CharacterCodes.t && str.charCodeAt(start + 3) === CharacterCodes.e && str.charCodeAt(start + 4) === CharacterCodes.n && str.charCodeAt(start + 5) === CharacterCodes.d && str.charCodeAt(start + 6) === CharacterCodes.s) ? SyntaxKind.ExtendsKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.f: return (str.charCodeAt(start + 1) === CharacterCodes.i && str.charCodeAt(start + 2) === CharacterCodes.n && str.charCodeAt(start + 3) === CharacterCodes.a && str.charCodeAt(start + 4) === CharacterCodes.l && str.charCodeAt(start + 5) === CharacterCodes.l && str.charCodeAt(start + 6) === CharacterCodes.y) ? SyntaxKind.FinallyKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.p: // package, private - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.a: return (str.charCodeAt(start + 2) === CharacterCodes.c && str.charCodeAt(start + 3) === CharacterCodes.k && str.charCodeAt(start + 4) === CharacterCodes.a && str.charCodeAt(start + 5) === CharacterCodes.g && str.charCodeAt(start + 6) === CharacterCodes.e) ? SyntaxKind.PackageKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.r: return (str.charCodeAt(start + 2) === CharacterCodes.i && str.charCodeAt(start + 3) === CharacterCodes.v && str.charCodeAt(start + 4) === CharacterCodes.a && str.charCodeAt(start + 5) === CharacterCodes.t && str.charCodeAt(start + 6) === CharacterCodes.e) ? SyntaxKind.PrivateKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case CharacterCodes.r: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.q && str.charCodeAt(start + 3) === CharacterCodes.u && str.charCodeAt(start + 4) === CharacterCodes.i && str.charCodeAt(start + 5) === CharacterCodes.r && str.charCodeAt(start + 6) === CharacterCodes.e) ? SyntaxKind.RequireKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 8: // continue, debugger, function - switch(str.charCodeAt(start)) { - case CharacterCodes.c: return (str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.n && str.charCodeAt(start + 3) === CharacterCodes.t && str.charCodeAt(start + 4) === CharacterCodes.i && str.charCodeAt(start + 5) === CharacterCodes.n && str.charCodeAt(start + 6) === CharacterCodes.u && str.charCodeAt(start + 7) === CharacterCodes.e) ? SyntaxKind.ContinueKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.d: return (str.charCodeAt(start + 1) === CharacterCodes.e && str.charCodeAt(start + 2) === CharacterCodes.b && str.charCodeAt(start + 3) === CharacterCodes.u && str.charCodeAt(start + 4) === CharacterCodes.g && str.charCodeAt(start + 5) === CharacterCodes.g && str.charCodeAt(start + 6) === CharacterCodes.e && str.charCodeAt(start + 7) === CharacterCodes.r) ? SyntaxKind.DebuggerKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.f: return (str.charCodeAt(start + 1) === CharacterCodes.u && str.charCodeAt(start + 2) === CharacterCodes.n && str.charCodeAt(start + 3) === CharacterCodes.c && str.charCodeAt(start + 4) === CharacterCodes.t && str.charCodeAt(start + 5) === CharacterCodes.i && str.charCodeAt(start + 6) === CharacterCodes.o && str.charCodeAt(start + 7) === CharacterCodes.n) ? SyntaxKind.FunctionKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 9: // interface, protected - switch(str.charCodeAt(start)) { - case CharacterCodes.i: return (str.charCodeAt(start + 1) === CharacterCodes.n && str.charCodeAt(start + 2) === CharacterCodes.t && str.charCodeAt(start + 3) === CharacterCodes.e && str.charCodeAt(start + 4) === CharacterCodes.r && str.charCodeAt(start + 5) === CharacterCodes.f && str.charCodeAt(start + 6) === CharacterCodes.a && str.charCodeAt(start + 7) === CharacterCodes.c && str.charCodeAt(start + 8) === CharacterCodes.e) ? SyntaxKind.InterfaceKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.p: return (str.charCodeAt(start + 1) === CharacterCodes.r && str.charCodeAt(start + 2) === CharacterCodes.o && str.charCodeAt(start + 3) === CharacterCodes.t && str.charCodeAt(start + 4) === CharacterCodes.e && str.charCodeAt(start + 5) === CharacterCodes.c && str.charCodeAt(start + 6) === CharacterCodes.t && str.charCodeAt(start + 7) === CharacterCodes.e && str.charCodeAt(start + 8) === CharacterCodes.d) ? SyntaxKind.ProtectedKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - case 10: // implements, instanceof - switch(str.charCodeAt(start)) { - case CharacterCodes.i: // implements, instanceof - switch(str.charCodeAt(start + 1)) { - case CharacterCodes.m: return (str.charCodeAt(start + 2) === CharacterCodes.p && str.charCodeAt(start + 3) === CharacterCodes.l && str.charCodeAt(start + 4) === CharacterCodes.e && str.charCodeAt(start + 5) === CharacterCodes.m && str.charCodeAt(start + 6) === CharacterCodes.e && str.charCodeAt(start + 7) === CharacterCodes.n && str.charCodeAt(start + 8) === CharacterCodes.t && str.charCodeAt(start + 9) === CharacterCodes.s) ? SyntaxKind.ImplementsKeyword : SyntaxKind.IdentifierName; - case CharacterCodes.n: return (str.charCodeAt(start + 2) === CharacterCodes.s && str.charCodeAt(start + 3) === CharacterCodes.t && str.charCodeAt(start + 4) === CharacterCodes.a && str.charCodeAt(start + 5) === CharacterCodes.n && str.charCodeAt(start + 6) === CharacterCodes.c && str.charCodeAt(start + 7) === CharacterCodes.e && str.charCodeAt(start + 8) === CharacterCodes.o && str.charCodeAt(start + 9) === CharacterCodes.f) ? SyntaxKind.InstanceOfKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - default: return SyntaxKind.IdentifierName; - } - case 11: return (str.charCodeAt(start) === CharacterCodes.c && str.charCodeAt(start + 1) === CharacterCodes.o && str.charCodeAt(start + 2) === CharacterCodes.n && str.charCodeAt(start + 3) === CharacterCodes.s && str.charCodeAt(start + 4) === CharacterCodes.t && str.charCodeAt(start + 5) === CharacterCodes.r && str.charCodeAt(start + 6) === CharacterCodes.u && str.charCodeAt(start + 7) === CharacterCodes.c && str.charCodeAt(start + 8) === CharacterCodes.t && str.charCodeAt(start + 9) === CharacterCodes.o && str.charCodeAt(start + 10) === CharacterCodes.r) ? SyntaxKind.ConstructorKeyword : SyntaxKind.IdentifierName; - default: return SyntaxKind.IdentifierName; - } - } - } -} \ No newline at end of file diff --git a/src/services/syntax/slidingWindow.ts b/src/services/syntax/slidingWindow.ts deleted file mode 100644 index 39502be24f3..00000000000 --- a/src/services/syntax/slidingWindow.ts +++ /dev/null @@ -1,197 +0,0 @@ -/// - -module TypeScript { - export interface ISlidingWindowSource { - // Asks the source to copy items starting at sourceIndex into the window at 'destinationIndex' - // with up to 'spaceAvailable' items. The actual number of items fetched should be given as - // the return value. - (argument: any): any; - } - - export class SlidingWindow { - - // The number of valid items in window. - public windowCount: number = 0; - - // The *absolute* index in the *full* array of items the *window* array starts at. i.e. - // if there were 100 items, and window contains tokens [70, 80), then this value would be - // 70. - public windowAbsoluteStartIndex: number = 0; - - // The index in the window array that we're at. i.e. if there 100 items and - // window contains tokens [70, 80), and we're on item 75, then this value would be '5'. - // Note: it is not absolute. It is relative to the start of the window. - public currentRelativeItemIndex: number = 0; - - // The number of pinned points there are. As long as there is at least one pinned point, we - // will not advance the start of the window array past the item marked by that pin point. - private _pinCount: number = 0; - - // If there are any outstanding rewind points, this is index in the full array of items - // that the first rewind point points to. If this is not -1, then we will not shift the - // start of the items array past this point. - private firstPinnedAbsoluteIndex: number = -1; - - constructor(// Underlying source that we retrieve items from. - private fetchNextItem: ISlidingWindowSource, - // A window of items that has been read in from the underlying source. - public window: any[], - // The default value to return when there are no more items left in the window. - private defaultValue: any, - // The length of the source we're reading from if we know it up front. -1 if we do not. - private sourceLength = -1) { - } - - private addMoreItemsToWindow(argument: any): boolean { - var sourceLength = this.sourceLength; - if (sourceLength >= 0 && this.absoluteIndex() >= sourceLength) { - return false; - } - - // First, make room for the new items if we're out of room. - if (this.windowCount >= this.window.length) { - this.tryShiftOrGrowWindow(); - } - - var item = this.fetchNextItem(argument); - - this.window[this.windowCount] = item; - - // Assert disabled because it is actually expensive enugh to affect perf. - - this.windowCount++; - return true; - } - - private tryShiftOrGrowWindow(): void { - // We want to shift if our current item is past the halfway point of the current item window. - var currentIndexIsPastWindowHalfwayPoint = this.currentRelativeItemIndex > (this.window.length >>> 1); - - // However, we can only shift if we have no outstanding rewind points. Or, if we have an - // outstanding rewind point, that it points to some point after the start of the window. - var isAllowedToShift = - this.firstPinnedAbsoluteIndex === -1 || - this.firstPinnedAbsoluteIndex > this.windowAbsoluteStartIndex; - - if (currentIndexIsPastWindowHalfwayPoint && isAllowedToShift) { - // Figure out where we're going to start shifting from. If we have no oustanding rewind - // points, then we'll start shifting over all the items starting from the current - // token we're point out. Otherwise, we'll shift starting from the first item that - // the rewind point is pointing at. - // - // We'll call that point 'N' from now on. - var shiftStartIndex = this.firstPinnedAbsoluteIndex === -1 - ? this.currentRelativeItemIndex - : this.firstPinnedAbsoluteIndex - this.windowAbsoluteStartIndex; - - // We have to shift the number of elements between the start index and the number of - // items in the window. - var shiftCount = this.windowCount - shiftStartIndex; - - // Debug.assert(shiftStartIndex > 0); - if (shiftCount > 0) { - ArrayUtilities.copy(this.window, shiftStartIndex, this.window, 0, shiftCount); - } - - // The window has now moved over to the right by N. - this.windowAbsoluteStartIndex += shiftStartIndex; - - // The number of valid items in the window has now decreased by N. - this.windowCount -= shiftStartIndex; - - // The current item now starts further to the left in the window. - this.currentRelativeItemIndex -= shiftStartIndex; - } - else { - // Grow the exisitng array. - // this.window[this.window.length * 2 - 1] = this.defaultValue; - ArrayUtilities.grow(this.window, this.window.length * 2, this.defaultValue); - } - } - - public absoluteIndex(): number { - return this.windowAbsoluteStartIndex + this.currentRelativeItemIndex; - } - - public isAtEndOfSource(): boolean { - return this.absoluteIndex() >= this.sourceLength; - } - - public getAndPinAbsoluteIndex(): number { - // Find the absolute index of this pin point. i.e. it's the index as if we had an - // array containing *all* tokens. - var absoluteIndex = this.absoluteIndex(); - var pinCount = this._pinCount++; - if (pinCount === 0) { - // If this is the first pinned point, then store off this index. We will ensure that - // we never shift the window past this point. - this.firstPinnedAbsoluteIndex = absoluteIndex; - } - - return absoluteIndex; - } - - public releaseAndUnpinAbsoluteIndex(absoluteIndex: number) { - this._pinCount--; - if (this._pinCount === 0) { - // If we just released the last outstanding pin, then we no longer need to 'fix' the - // token window so it can't move forward. Set the index to -1 so that we can shift - // things over the next time we read past the end of the array. - this.firstPinnedAbsoluteIndex = -1; - } - } - - public rewindToPinnedIndex(absoluteIndex: number): void { - // The rewind point shows which absolute item we want to rewind to. Get the relative - // index in the actual array that we want to point to. - var relativeIndex = absoluteIndex - this.windowAbsoluteStartIndex; - - // Make sure we haven't screwed anything up. - // Debug.assert(relativeIndex >= 0 && relativeIndex < this.windowCount); - - // Set ourselves back to that point. - this.currentRelativeItemIndex = relativeIndex; - } - - public currentItem(argument: any): any { - if (this.currentRelativeItemIndex >= this.windowCount) { - if (!this.addMoreItemsToWindow(argument)) { - return this.defaultValue; - } - } - - return this.window[this.currentRelativeItemIndex]; - } - - public currentItemWithoutFetching(): any { - if (this.currentRelativeItemIndex >= this.windowCount) { - return undefined; - } - - return this.window[this.currentRelativeItemIndex]; - } - - public peekItemN(n: number): any { - // Assert disabled because it is actually expensive enugh to affect perf. - // Debug.assert(n >= 0); - while (this.currentRelativeItemIndex + n >= this.windowCount) { - if (!this.addMoreItemsToWindow(/*argument:*/ undefined)) { - return this.defaultValue; - } - } - - return this.window[this.currentRelativeItemIndex + n]; - } - - public moveToNextItem(): void { - this.currentRelativeItemIndex++; - } - - public disgardAllItemsFromCurrentIndexOnwards(): void { - // By setting the window count to the current relative offset, we are effectively making - // any items we added to the window from the current offset onwards unusable. When we - // try to get the next item, we'll be forced to refetch them from the underlying source. - this.windowCount = this.currentRelativeItemIndex; - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntax.ts b/src/services/syntax/syntax.ts deleted file mode 100644 index e67865ae6aa..00000000000 --- a/src/services/syntax/syntax.ts +++ /dev/null @@ -1,140 +0,0 @@ -/// - -module TypeScript.Syntax { - export var _nextSyntaxID: number = 1; - - export function nodeHasSkippedOrMissingTokens(node: ISyntaxNode): boolean { - for (var i = 0; i < childCount(node); i++) { - var child = childAt(node, i); - if (isToken(child)) { - var token = child; - // If a token is skipped, return true. Or if it is a missing token. The only empty token that is not missing is EOF - if (token.hasLeadingSkippedToken() || (fullWidth(token) === 0 && token.kind !== SyntaxKind.EndOfFileToken)) { - return true; - } - } - } - - return false; - } - - export function isUnterminatedStringLiteral(token: ISyntaxToken): boolean { - if (token && token.kind === SyntaxKind.StringLiteral) { - var text = token.text(); - return text.length < 2 || text.charCodeAt(text.length - 1) !== text.charCodeAt(0); - } - - return false; - } - - export function isUnterminatedMultilineCommentTrivia(trivia: ISyntaxTrivia): boolean { - if (trivia && trivia.kind === SyntaxKind.MultiLineCommentTrivia) { - var text = trivia.fullText(); - return text.length < 4 || text.substring(text.length - 2) !== "*/"; - } - return false; - } - - export function isEntirelyInsideCommentTrivia(trivia: ISyntaxTrivia, fullStart: number, position: number): boolean { - if (trivia && trivia.isComment() && position > fullStart) { - var end = fullStart + trivia.fullWidth(); - if (position < end) { - return true; - } - else if (position === end) { - return trivia.kind === SyntaxKind.SingleLineCommentTrivia || isUnterminatedMultilineCommentTrivia(trivia); - } - } - - return false; - } - - export function getAncestorOfKind(positionedToken: ISyntaxElement, kind: SyntaxKind): ISyntaxElement { - while (positionedToken && positionedToken.parent) { - if (positionedToken.parent.kind === kind) { - return positionedToken.parent; - } - - positionedToken = positionedToken.parent; - } - - return undefined; - } - - export function hasAncestorOfKind(positionedToken: ISyntaxElement, kind: SyntaxKind): boolean { - return !!getAncestorOfKind(positionedToken, kind); - } - - export function isIntegerLiteral(expression: IExpressionSyntax): boolean { - if (expression) { - switch (expression.kind) { - case SyntaxKind.PrefixUnaryExpression: - var prefixExpr = expression; - if (prefixExpr.operatorToken.kind == SyntaxKind.PlusToken || prefixExpr.operatorToken.kind === SyntaxKind.MinusToken) { - // Note: if there is a + or - sign, we can only allow a normal integer following - // (and not a hex integer). i.e. -0xA is a legal expression, but it is not a - // *literal*. - expression = prefixExpr.operand; - return isToken(expression) && IntegerUtilities.isInteger((expression).text()); - } - - return false; - - case SyntaxKind.NumericLiteral: - // If it doesn't have a + or -, then either an integer literal or a hex literal - // is acceptable. - var text = ( expression).text(); - return IntegerUtilities.isInteger(text) || IntegerUtilities.isHexInteger(text); - } - } - - return false; - } - - export function containingNode(element: ISyntaxElement): ISyntaxNode { - var current = element.parent; - - while (current && !isNode(current)) { - current = current.parent; - } - - return current; - } - - export function findTokenOnLeft(sourceUnit: SourceUnitSyntax, position: number): ISyntaxToken { - var positionedToken = findToken(sourceUnit, position); - var _start = start(positionedToken); - - // Position better fall within this token. - // Debug.assert(position >= positionedToken.fullStart()); - // Debug.assert(position < positionedToken.fullEnd() || positionedToken.token().tokenKind === SyntaxKind.EndOfFileToken); - - // if position is after the start of the token, then this token is the token on the left. - if (position > _start) { - return positionedToken; - } - - // we're in the trivia before the start of the token. Need to return the previous token. - if (positionedToken.fullStart() === 0) { - // Already on the first token. Nothing before us. - return undefined; - } - - return previousToken(positionedToken); - } - - export function findCompleteTokenOnLeft(sourceUnit: SourceUnitSyntax, position: number): ISyntaxToken { - var positionedToken = findToken(sourceUnit, position); - - // Position better fall within this token. - // Debug.assert(position >= positionedToken.fullStart()); - // Debug.assert(position < positionedToken.fullEnd() || positionedToken.token().tokenKind === SyntaxKind.EndOfFileToken); - - // if position is after the end of the token, then this token is the token on the left. - if (width(positionedToken) > 0 && position >= fullEnd(positionedToken)) { - return positionedToken; - } - - return previousToken(positionedToken); - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxCursor.ts b/src/services/syntax/syntaxCursor.ts deleted file mode 100644 index 3c89782144d..00000000000 --- a/src/services/syntax/syntaxCursor.ts +++ /dev/null @@ -1,255 +0,0 @@ -/// - -module TypeScript.IncrementalParser { - interface SyntaxCursorPiece { - element: ISyntaxElement; - indexInParent: number - } - - function createSyntaxCursorPiece(element: ISyntaxElement, indexInParent: number) { - return { element: element, indexInParent: indexInParent }; - } - - // Pool syntax cursors so we don't churn too much memory when we need temporary cursors. - // i.e. when we're speculatively parsing, we can cheaply get a pooled cursor and then - // return it when we no longer need it. - var syntaxCursorPool: SyntaxCursor[] = []; - var syntaxCursorPoolCount: number = 0; - - export function returnSyntaxCursor(cursor: SyntaxCursor): void { - // Make sure the cursor isn't holding onto any syntax elements. We don't want to leak - // them when we return the cursor to the pool. - cursor.clean(); - - syntaxCursorPool[syntaxCursorPoolCount] = cursor; - syntaxCursorPoolCount++; - } - - export function getSyntaxCursor(): SyntaxCursor { - // Get an existing cursor from the pool if we have one. Or create a new one if we don't. - var cursor = syntaxCursorPoolCount > 0 - ? syntaxCursorPool[syntaxCursorPoolCount - 1] - : createSyntaxCursor(); - - if (syntaxCursorPoolCount > 0) { - // If we reused an existing cursor, take it out of the pool so no one else uses it. - syntaxCursorPoolCount--; - syntaxCursorPool[syntaxCursorPoolCount] = undefined; - } - - return cursor; - } - - export function cloneSyntaxCursor(cursor: SyntaxCursor): SyntaxCursor { - var newCursor = getSyntaxCursor(); - - // Make the new cursor a *deep* copy of the cursor passed in. This ensures each cursor can - // be moved without affecting the other. - newCursor.deepCopyFrom(cursor); - - return newCursor; - } - - interface SyntaxCursor { - pieces: SyntaxCursorPiece[]; - - clean(): void; - isFinished(): boolean; - moveToFirstChild(): void; - moveToFirstToken(): void; - moveToNextSibling(): void; - currentNodeOrToken(): ISyntaxNodeOrToken; - currentNode(): ISyntaxNode; - currentToken(): ISyntaxToken; - pushElement(element: ISyntaxElement, indexInParent: number): void; - deepCopyFrom(other: SyntaxCursor): void; - } - - function createSyntaxCursor(): SyntaxCursor { - // Our list of path pieces. The piece pointed to by 'currentPieceIndex' must be a node or - // token. However, pieces earlier than that may point to list nodes. - // - // For perf we reuse pieces as much as possible. i.e. instead of popping items off the - // list, we just will change currentPieceIndex so we can reuse that piece later. - var pieces: SyntaxCursorPiece[] = []; - var currentPieceIndex: number = -1; - - // Cleans up this cursor so that it doesn't have any references to actual syntax nodes. - // This sould be done before returning the cursor to the pool so that the Parser module - // doesn't unnecessarily keep old syntax trees alive. - function clean(): void { - for (var i = 0, n = pieces.length; i < n; i++) { - var piece = pieces[i]; - - if (piece.element === undefined) { - break; - } - - piece.element = undefined; - piece.indexInParent = -1; - } - - currentPieceIndex = -1; - } - - // Makes this cursor into a deep copy of the cursor passed in. - function deepCopyFrom(other: SyntaxCursor): void { - for (var i = 0, n = other.pieces.length; i < n; i++) { - var piece = other.pieces[i]; - - if (piece.element === undefined) { - break; - } - - pushElement(piece.element, piece.indexInParent); - } - } - - function isFinished(): boolean { - return currentPieceIndex < 0; - } - - function currentNodeOrToken(): ISyntaxNodeOrToken { - if (isFinished()) { - return undefined; - } - - var result = pieces[currentPieceIndex].element; - - // The current element must always be a node or a token. - return result; - } - - function currentNode(): ISyntaxNode { - var element = currentNodeOrToken(); - return isNode(element) ? element : undefined; - } - - function isEmptyList(element: ISyntaxElement) { - return isList(element) && (element).length === 0; - } - - function moveToFirstChild() { - var nodeOrToken = currentNodeOrToken(); - if (nodeOrToken === undefined) { - return; - } - - if (isToken(nodeOrToken)) { - // If we're already on a token, there's nothing to do. - return; - } - - // Either the node has some existent child, then move to it. if it doesn't, then it's - // an empty node. Conceptually the first child of an empty node is really just the - // next sibling of the empty node. - for (var i = 0, n = childCount(nodeOrToken); i < n; i++) { - var child = childAt(nodeOrToken, i); - if (child && !isEmptyList(child)) { - // Great, we found a real child. Push that. - pushElement(child, /*indexInParent:*/ i); - - // If it was a list, make sure we're pointing at its first element. We know we - // must have one because this is a non-shared list. - moveToFirstChildIfList(); - return; - } - } - - // This element must have been an empty node. Moving to its 'first child' is equivalent to just - // moving to the next sibling. - moveToNextSibling(); - } - - function moveToNextSibling(): void { - while (!isFinished()) { - // first look to our parent and see if it has a sibling of us that we can move to. - var currentPiece = pieces[currentPieceIndex]; - var parent = currentPiece.element.parent; - - // We start searching at the index one past our own index in the parent. - for (var i = currentPiece.indexInParent + 1, n = childCount(parent); i < n; i++) { - var sibling = childAt(parent, i); - - if (sibling && !isEmptyList(sibling)) { - // We found a good sibling that we can move to. Just reuse our existing piece - // so we don't have to push/pop. - currentPiece.element = sibling; - currentPiece.indexInParent = i; - - // The sibling might have been a list. Move to it's first child. - moveToFirstChildIfList(); - return; - } - } - - // Didn't have a sibling for this element. Go up to our parent and get its sibling. - - // Clear the data from the old piece. We don't want to keep any elements around - // unintentionally. - currentPiece.element = undefined; - currentPiece.indexInParent = -1; - - // Point at the parent. if we move past the top of the path, then we're finished. - currentPieceIndex--; - } - } - - function moveToFirstChildIfList(): void { - var element = pieces[currentPieceIndex].element; - - if (isList(element)) { - // We cannot ever get an empty list in our piece path. Empty lists are 'shared' and - // we make sure to filter that out before pushing any children. - pushElement(childAt(element, 0), /*indexInParent:*/ 0); - } - } - - function pushElement(element: ISyntaxElement, indexInParent: number): void { - currentPieceIndex++; - - // Reuse an existing piece if we have one. Otherwise, push a new piece to our list. - if (currentPieceIndex === pieces.length) { - pieces.push(createSyntaxCursorPiece(element, indexInParent)); - } - else { - var piece = pieces[currentPieceIndex]; - piece.element = element; - piece.indexInParent = indexInParent; - } - } - - function moveToFirstToken(): void { - while (!isFinished()) { - var element = pieces[currentPieceIndex].element; - if (isNode(element)) { - moveToFirstChild(); - continue; - } - - return; - } - } - - function currentToken(): ISyntaxToken { - moveToFirstToken(); - - var element = currentNodeOrToken(); - return element; - } - - return { - pieces: pieces, - clean: clean, - isFinished: isFinished, - moveToFirstChild: moveToFirstChild, - moveToFirstToken: moveToFirstToken, - moveToNextSibling: moveToNextSibling, - currentNodeOrToken: currentNodeOrToken, - currentNode: currentNode, - currentToken: currentToken, - pushElement: pushElement, - deepCopyFrom: deepCopyFrom - }; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxDedenter.ts b/src/services/syntax/syntaxDedenter.ts deleted file mode 100644 index 3c3cdb7b25f..00000000000 --- a/src/services/syntax/syntaxDedenter.ts +++ /dev/null @@ -1,193 +0,0 @@ -/// - -module TypeScript { - export class SyntaxDedenter extends SyntaxRewriter { - private lastTriviaWasNewLine: boolean; - - constructor(dedentFirstToken: boolean, - private dedentationAmount: number, - private minimumIndent: number, - private options: FormattingOptions) { - super(); - this.lastTriviaWasNewLine = dedentFirstToken; - } - - private abort(): void { - this.lastTriviaWasNewLine = false; - this.dedentationAmount = 0; - } - - private isAborted(): boolean { - return this.dedentationAmount === 0; - } - - public visitToken(token: ISyntaxToken): ISyntaxToken { - if (token.width() === 0) { - return token; - } - - var result = token; - if (this.lastTriviaWasNewLine) { - // have to add our indentation to every line that this token hits. - result = token.withLeadingTrivia(this.dedentTriviaList(token.leadingTrivia())); - } - - if (this.isAborted()) { - // If we've decided to stop dedenting. Then just return immediately. - return token; - } - - this.lastTriviaWasNewLine = token.hasTrailingNewLine(); - return result; - } - - private dedentTriviaList(triviaList: ISyntaxTriviaList): ISyntaxTriviaList { - var result: ISyntaxTrivia[] = []; - var dedentNextWhitespace = true; - - // Keep walking through all our trivia (as long as we haven't decided to stop dedenting). - // Adjust the indentation on any whitespace trivia at the start of a line, or any multi-line - // trivia that span multiple lines. - for (var i = 0, n = triviaList.count(); i < n && !this.isAborted(); i++) { - var trivia = triviaList.syntaxTriviaAt(i); - - var dedentThisTrivia = dedentNextWhitespace; - dedentNextWhitespace = false; - - if (dedentThisTrivia) { - if (trivia.kind() === SyntaxKind.WhitespaceTrivia) { - // We pass in if there was a following newline after this whitespace. If there - // is, then it's fine if we dedent this newline all the way to 0. Otherwise, - // if the whitespace is followed by something, then we need to determine how - // much of the whitespace we can remove. If we can't remove all that we want, - // we'll need to adjust the dedentAmount. And, if we can't remove at all, then - // we need to stop dedenting entirely. - var hasFollowingNewLine = (i < triviaList.count() - 1) && - triviaList.syntaxTriviaAt(i + 1).kind() === SyntaxKind.NewLineTrivia; - result.push(this.dedentWhitespace(trivia, hasFollowingNewLine)); - continue; - } - else if (trivia.kind() !== SyntaxKind.NewLineTrivia) { - // We wanted to dedent, but the trivia we're on isn't whitespace and wasn't a - // newline. That means that we have something like a comment at the beginning - // of the line that we can't dedent. And, if we can't dedent it, then we - // shouldn't dedent this token or any more tokens. - this.abort(); - break; - } - } - - if (trivia.kind() === SyntaxKind.MultiLineCommentTrivia) { - // This trivia may span multiple lines. If it does, we need to dedent each - // successive line of it until it terminates. - result.push(this.dedentMultiLineComment(trivia)); - continue; - } - - // All other trivia we just append to the list. - result.push(trivia); - if (trivia.kind() === SyntaxKind.NewLineTrivia) { - // We hit a newline processing the trivia. We need to add the indentation to the - // next line as well. - dedentNextWhitespace = true; - } - } - - if (dedentNextWhitespace) { - // We hit a new line as the last trivia (or there was no trivia). We want to dedent - // the next trivia, but we can't (because the token starts at the start of the line). - // If we can't dedent this, then we shouldn't dedent anymore. - this.abort(); - } - - if (this.isAborted()) { - return triviaList; - } - - return Syntax.triviaList(result); - } - - private dedentSegment(segment: string, hasFollowingNewLineTrivia: boolean): string { - // Find the position of the first non whitespace character in the segment. - var firstNonWhitespacePosition = Indentation.firstNonWhitespacePosition(segment); - - if (firstNonWhitespacePosition === segment.length) { - if (hasFollowingNewLineTrivia) { - // It was entirely whitespace trivia, with a newline after it. Just trim this down - // to an empty string. - return ""; - } - } - else if (CharacterInfo.isLineTerminator(segment.charCodeAt(firstNonWhitespacePosition))) { - // It was entirely whitespace, with a newline after it. Just trim this down to - // the newline - return segment.substring(firstNonWhitespacePosition); - } - - // It was whitespace without a newline following it. We need to try to dedent this a bit. - - // Convert that position to a column. - var firstNonWhitespaceColumn = Indentation.columnForPositionInString(segment, firstNonWhitespacePosition, this.options); - - // Find the new column we want the nonwhitespace text to start at. Ideally it would be - // whatever column it was minus the dedentation amount. However, we won't go below a - // specified minimum indent (hence, max(initial - dedentAmount, minIndent). *But* if - // the initial column was less than that minimum indent, then we'll keep it at that column. - // (hence min(initial, desired)). - var newFirstNonWhitespaceColumn = - MathPrototype.min(firstNonWhitespaceColumn, - MathPrototype.max(firstNonWhitespaceColumn - this.dedentationAmount, this.minimumIndent)); - - if (newFirstNonWhitespaceColumn === firstNonWhitespaceColumn) { - // We aren't able to detent this token. Abort what we're doing - this.abort(); - return segment; - } - - // Update the dedentation amount for all subsequent tokens we run into. - this.dedentationAmount = firstNonWhitespaceColumn - newFirstNonWhitespaceColumn; - Debug.assert(this.dedentationAmount >= 0); - - // Compute an indentation string for that. - var indentationString = Indentation.indentationString(newFirstNonWhitespaceColumn, this.options); - - // Join the new indentation and the original string without its indentation. - return indentationString + segment.substring(firstNonWhitespacePosition); - } - - private dedentWhitespace(trivia: ISyntaxTrivia, hasFollowingNewLineTrivia: boolean): ISyntaxTrivia { - var newIndentation = this.dedentSegment(trivia.fullText(), hasFollowingNewLineTrivia); - return Syntax.whitespace(newIndentation); - } - - private dedentMultiLineComment(trivia: ISyntaxTrivia): ISyntaxTrivia { - var segments = Syntax.splitMultiLineCommentTriviaIntoMultipleLines(trivia); - if (segments.length === 1) { - // If there was only one segment, then this wasn't multiline. - return trivia; - } - - for (var i = 1; i < segments.length; i++) { - var segment = segments[i]; - segments[i] = this.dedentSegment(segment, /*hasFollowingNewLineTrivia*/ false); - } - - var result = segments.join(""); - - // Create a new trivia token out of the indented lines. - return Syntax.multiLineComment(result); - } - - public static dedentNode(node: T, dedentFirstToken: boolean, dedentAmount: number, minimumIndent: number, options: FormattingOptions): T { - var dedenter = new SyntaxDedenter(dedentFirstToken, dedentAmount, minimumIndent, options); - var result = node.accept(dedenter); - - if (dedenter.isAborted()) { - // We failed to dedent a token in this node. Return the original node as is. - return node; - } - - return result; - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxElement.ts b/src/services/syntax/syntaxElement.ts deleted file mode 100644 index 946ac5dc480..00000000000 --- a/src/services/syntax/syntaxElement.ts +++ /dev/null @@ -1,465 +0,0 @@ -/// - -module TypeScript { - export function syntaxTree(element: ISyntaxElement): SyntaxTree { - if (element) { - // Debug.assert(!isShared(element)); - - while (element) { - if (element.kind === SyntaxKind.SourceUnit) { - return (element).syntaxTree; - } - - element = element.parent; - } - } - - return undefined; - } - - export function parserContextFlags(node: ISyntaxNode): ParserContextFlags { - var info = node.__data; - if (info === undefined) { - return 0; - } - - return info & ParserContextFlags.Mask; - } - - export function parsedInStrictModeContext(node: ISyntaxNode): boolean { - return (parserContextFlags(node) & ParserContextFlags.StrictMode) !== 0; - } - - export function parsedInDisallowInContext(node: ISyntaxNode): boolean { - return (parserContextFlags(node) & ParserContextFlags.DisallowIn) !== 0; - } - - export function parsedInYieldContext(node: ISyntaxNode): boolean { - return (parserContextFlags(node) & ParserContextFlags.Yield) !== 0; - } - - export function parsedInGeneratorParameterContext(node: ISyntaxNode): boolean { - return (parserContextFlags(node) & ParserContextFlags.GeneratorParameter) !== 0; - } - - export function parsedInAsyncContext(node: ISyntaxNode): boolean { - return (parserContextFlags(node) & ParserContextFlags.Async) !== 0; - } - - export function previousToken(token: ISyntaxToken): ISyntaxToken { - var start = token.fullStart(); - if (start === 0) { - return undefined; - } - - return findToken(syntaxTree(token).sourceUnit(), start - 1); - } - - /** - * Finds a token according to the following rules: - * 1) If position matches the End of the node/s FullSpan and the node is SourceUnitSyntax, - * then the EOF token is returned. - * - * 2) If node.FullSpan.Contains(position) then the token that contains given position is - * returned. - * - * 3) Otherwise an ArgumentOutOfRangeException is thrown - * - * Note: findToken will always return a non-missing token with width greater than or equal to - * 1 (except for EOF). Empty tokens synthesized by the parser are never returned. - */ - export function findToken(sourceUnit: SourceUnitSyntax, position: number): ISyntaxToken { - if (position < 0) { - throw Errors.argumentOutOfRange("position"); - } - - var token = findTokenInNodeOrToken(sourceUnit, 0, position); - if (token) { - Debug.assert(token.fullWidth() > 0); - return token; - } - - if (position === fullWidth(sourceUnit)) { - return sourceUnit.endOfFileToken; - } - - if (position > fullWidth(sourceUnit)) { - throw Errors.argumentOutOfRange("position"); - } - - throw Errors.invalidOperation(); - } - - function findTokenWorker(element: ISyntaxElement, elementPosition: number, position: number): ISyntaxToken { - if (isList(element)) { - return findTokenInList(element, elementPosition, position); - } - else { - return findTokenInNodeOrToken(element, elementPosition, position); - } - } - - function findTokenInList(list: ISyntaxNodeOrToken[], elementPosition: number, position: number): ISyntaxToken { - for (var i = 0, n = list.length; i < n; i++) { - var child = list[i]; - - var childFullWidth = fullWidth(child); - var elementEndPosition = elementPosition + childFullWidth; - - if (position < elementEndPosition) { - return findTokenWorker(child, elementPosition, position); - } - - elementPosition = elementEndPosition; - } - - return undefined; - } - - - function findTokenInNodeOrToken(nodeOrToken: ISyntaxNodeOrToken, elementPosition: number, position: number): ISyntaxToken { - if (isToken(nodeOrToken)) { - return nodeOrToken; - } - - for (var i = 0, n = childCount(nodeOrToken); i < n; i++) { - var child = nodeOrToken.childAt(i); - - if (child) { - var childFullWidth = fullWidth(child); - var elementEndPosition = elementPosition + childFullWidth; - - if (position < elementEndPosition) { - return findTokenWorker(child, elementPosition, position); - } - - elementPosition = elementEndPosition; - } - } - - return undefined; - } - - function tryGetEndOfFileAt(element: ISyntaxElement, position: number): ISyntaxToken { - if (element.kind === SyntaxKind.SourceUnit && position === fullWidth(element)) { - var sourceUnit = element; - return sourceUnit.endOfFileToken; - } - - return undefined; - } - - export function nextToken(token: ISyntaxToken, text?: ISimpleText): ISyntaxToken { - if (token.kind === SyntaxKind.EndOfFileToken) { - return undefined; - } - - return findToken(syntaxTree(token).sourceUnit(), fullEnd(token)); - } - - export function isNode(element: ISyntaxElement): boolean { - if (element) { - var kind = element.kind; - return kind >= SyntaxKind.FirstNode && kind <= SyntaxKind.LastNode; - } - - return false; - } - - function isTokenKind(kind: SyntaxKind) { - return kind >= SyntaxKind.FirstToken && kind <= SyntaxKind.LastToken - } - - export function isToken(element: ISyntaxElement): boolean { - if (element) { - return isTokenKind(element.kind); - } - - return false; - } - - export function isList(element: ISyntaxElement): boolean { - return element instanceof Array; - } - - export function syntaxID(element: ISyntaxElement): number { - //if (isShared(element)) { - // throw Errors.invalidOperation("Should not use shared syntax element as a key."); - //} - - var obj = element; - if (obj._syntaxID === undefined) { - obj._syntaxID = TypeScript.Syntax._nextSyntaxID++; - } - - return obj._syntaxID; - } - - function collectTextElements(element: ISyntaxElement, elements: string[], text: ISimpleText): void { - if (element) { - if (isToken(element)) { - elements.push((element).fullText(text)); - } - else { - for (var i = 0, n = childCount(element); i < n; i++) { - collectTextElements(childAt(element, i), elements, text); - } - } - } - } - - export function fullText(element: ISyntaxElement, text?: ISimpleText): string { - if (isToken(element)) { - return (element).fullText(text); - } - - var elements: string[] = []; - collectTextElements(element, elements, text); - - return elements.join(""); - } - - export function leadingTriviaWidth(element: ISyntaxElement, text?: ISimpleText): number { - var token = firstToken(element); - return token ? token.leadingTriviaWidth(text) : 0; - } - - export function firstToken(element: ISyntaxElement): ISyntaxToken { - if (element) { - var kind = element.kind; - - if (isTokenKind(kind)) { - return (element).fullWidth() > 0 || kind === SyntaxKind.EndOfFileToken ? element : undefined; - } - - for (var i = 0, n = childCount(element); i < n; i++) { - var token = firstToken(childAt(element, i)); - if (token) { - return token; - } - } - } - - return undefined; - } - - export function lastToken(element: ISyntaxElement): ISyntaxToken { - if (isToken(element)) { - return fullWidth(element) > 0 || element.kind === SyntaxKind.EndOfFileToken ? element : undefined; - } - - if (element.kind === SyntaxKind.SourceUnit) { - return (element).endOfFileToken; - } - - for (var i = childCount(element) - 1; i >= 0; i--) { - var child = childAt(element, i); - if (child) { - var token = lastToken(child); - if (token) { - return token; - } - } - } - - return undefined; - } - - export function fullStart(element: ISyntaxElement): number { - // Debug.assert(!isShared(element)); - var token = isToken(element) ? element : firstToken(element); - return token ? token.fullStart() : -1; - } - - export function fullWidth(element: ISyntaxElement): number { - if (isToken(element)) { - return (element).fullWidth(); - } - - var info = data(element); - return (info / SyntaxNodeConstants.FullWidthShift) | 0; - } - - export function isIncrementallyUnusable(element: ISyntaxElement): boolean { - if (isToken(element)) { - return (element).isIncrementallyUnusable(); - } - - return (data(element) & SyntaxNodeConstants.IncrementallyUnusableMask) !== 0; - } - - function data(element: ISyntaxElement): number { - // Debug.assert(isNode(element) || isList(element)); - - // Lists and nodes all have a 'data' element. - var dataElement = element; - - var info = dataElement.__data; - if (info === undefined) { - info = 0; - } - - if ((info & SyntaxNodeConstants.DataComputed) === 0) { - info += computeData(element); - dataElement.__data = info; - } - - return info; - } - - function combineData(fullWidth: number, isIncrementallyUnusable: boolean) { - return (fullWidth * SyntaxNodeConstants.FullWidthShift) + - (isIncrementallyUnusable ? SyntaxNodeConstants.IncrementallyUnusableMask : 0) + - SyntaxNodeConstants.DataComputed; - } - - function listComputeData(list: ISyntaxNodeOrToken[]): number { - var fullWidth = 0; - var isIncrementallyUnusable = false; - - for (var i = 0, n = list.length; i < n; i++) { - var child: ISyntaxElement = list[i]; - - fullWidth += TypeScript.fullWidth(child); - isIncrementallyUnusable = isIncrementallyUnusable || TypeScript.isIncrementallyUnusable(child); - } - - return combineData(fullWidth, isIncrementallyUnusable); - } - - function computeData(element: ISyntaxElement): number { - if (isList(element)) { - return listComputeData(element); - } - else { - return nodeOrTokenComputeData(element); - } - } - - function nodeOrTokenComputeData(nodeOrToken: ISyntaxNodeOrToken) { - var fullWidth = 0; - var slotCount = nodeOrToken.childCount; - - // If we have no children (like an OmmittedExpressionSyntax), we're automatically not reusable. - var isIncrementallyUnusable = slotCount === 0; - - for (var i = 0, n = slotCount; i < n; i++) { - var child = nodeOrToken.childAt(i); - - if (child) { - fullWidth += TypeScript.fullWidth(child); - isIncrementallyUnusable = isIncrementallyUnusable || TypeScript.isIncrementallyUnusable(child); - } - } - - return combineData(fullWidth, isIncrementallyUnusable); - } - - export function start(element: ISyntaxElement, text?: ISimpleText): number { - var token = isToken(element) ? element : firstToken(element); - return token ? token.fullStart() + token.leadingTriviaWidth(text) : -1; - } - - export function width(element: ISyntaxElement, text?: ISimpleText): number { - if (isToken(element)) { - return (element).text().length; - } - return fullWidth(element) - leadingTriviaWidth(element, text); - } - - export function fullEnd(element: ISyntaxElement): number { - return fullStart(element) + fullWidth(element); - } - - export interface ISyntaxElement { - kind: SyntaxKind; - parent: ISyntaxElement; - } - - export interface ISyntaxNode extends ISyntaxNodeOrToken { - __data: number; - } - - export interface IModuleReferenceSyntax extends ISyntaxNode { - _moduleReferenceBrand: any; - } - - export interface IModuleElementSyntax extends ISyntaxNode { - _moduleElementBrand: any; - } - - export interface IStatementSyntax extends IModuleElementSyntax { - _statementBrand: any; - } - - export interface ITypeMemberSyntax extends ISyntaxNode { - _typeMemberBrand: any; - } - - export interface IClassElementSyntax extends ISyntaxNode { - _classElementBrand: any; - } - - export interface IMemberDeclarationSyntax extends IClassElementSyntax { - _memberDeclarationBrand: any; - } - - export interface IPropertyAssignmentSyntax extends ISyntaxNodeOrToken { - _propertyAssignmentBrand: any; - } - - export interface IAccessorSyntax extends IPropertyAssignmentSyntax, IMemberDeclarationSyntax { - _accessorBrand: any; - - modifiers: ISyntaxToken[]; - propertyName: IPropertyNameSyntax; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - - export interface ISwitchClauseSyntax extends ISyntaxNode { - _switchClauseBrand: any; - statements: IStatementSyntax[]; - } - - export interface IExpressionSyntax extends ISyntaxNodeOrToken { - _expressionBrand: any; - } - - export interface IUnaryExpressionSyntax extends IExpressionSyntax { - _unaryExpressionBrand: any; - } - - export interface IPostfixExpressionSyntax extends IUnaryExpressionSyntax { - _postfixExpressionBrand: any; - } - - export interface ILeftHandSideExpressionSyntax extends IPostfixExpressionSyntax { - _leftHandSideExpressionBrand: any; - } - - export interface IMemberExpressionSyntax extends ILeftHandSideExpressionSyntax { - _memberExpressionBrand: any; - } - - export interface ICallExpressionSyntax extends ILeftHandSideExpressionSyntax { - _callExpressionBrand: any; - expression: IExpressionSyntax; - } - - export interface IPrimaryExpressionSyntax extends IMemberExpressionSyntax { - _primaryExpressionBrand: any; - } - - export interface ITypeSyntax extends ISyntaxNodeOrToken { - _typeBrand: any; - } - - export interface INameSyntax extends ITypeSyntax { - _nameBrand: any; - } - - export interface IPropertyNameSyntax extends ISyntaxNodeOrToken { - _propertyNameBrand: any; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxFacts.ts b/src/services/syntax/syntaxFacts.ts deleted file mode 100644 index 209e09e93af..00000000000 --- a/src/services/syntax/syntaxFacts.ts +++ /dev/null @@ -1,250 +0,0 @@ -/// - -module TypeScript.SyntaxFacts { - var textToKeywordKind: any = { - "any": SyntaxKind.AnyKeyword, - "async": SyntaxKind.AsyncKeyword, - "await": SyntaxKind.AwaitKeyword, - "boolean": SyntaxKind.BooleanKeyword, - "break": SyntaxKind.BreakKeyword, - "case": SyntaxKind.CaseKeyword, - "catch": SyntaxKind.CatchKeyword, - "class": SyntaxKind.ClassKeyword, - "continue": SyntaxKind.ContinueKeyword, - "const": SyntaxKind.ConstKeyword, - "constructor": SyntaxKind.ConstructorKeyword, - "debugger": SyntaxKind.DebuggerKeyword, - "declare": SyntaxKind.DeclareKeyword, - "default": SyntaxKind.DefaultKeyword, - "delete": SyntaxKind.DeleteKeyword, - "do": SyntaxKind.DoKeyword, - "else": SyntaxKind.ElseKeyword, - "enum": SyntaxKind.EnumKeyword, - "export": SyntaxKind.ExportKeyword, - "extends": SyntaxKind.ExtendsKeyword, - "false": SyntaxKind.FalseKeyword, - "finally": SyntaxKind.FinallyKeyword, - "for": SyntaxKind.ForKeyword, - "function": SyntaxKind.FunctionKeyword, - "get": SyntaxKind.GetKeyword, - "if": SyntaxKind.IfKeyword, - "implements": SyntaxKind.ImplementsKeyword, - "import": SyntaxKind.ImportKeyword, - "in": SyntaxKind.InKeyword, - "instanceof": SyntaxKind.InstanceOfKeyword, - "interface": SyntaxKind.InterfaceKeyword, - "let": SyntaxKind.LetKeyword, - "module": SyntaxKind.ModuleKeyword, - "new": SyntaxKind.NewKeyword, - "null": SyntaxKind.NullKeyword, - "number":SyntaxKind.NumberKeyword, - "package": SyntaxKind.PackageKeyword, - "private": SyntaxKind.PrivateKeyword, - "protected": SyntaxKind.ProtectedKeyword, - "public": SyntaxKind.PublicKeyword, - "require": SyntaxKind.RequireKeyword, - "return": SyntaxKind.ReturnKeyword, - "set": SyntaxKind.SetKeyword, - "static": SyntaxKind.StaticKeyword, - "string": SyntaxKind.StringKeyword, - "super": SyntaxKind.SuperKeyword, - "switch": SyntaxKind.SwitchKeyword, - "this": SyntaxKind.ThisKeyword, - "throw": SyntaxKind.ThrowKeyword, - "true": SyntaxKind.TrueKeyword, - "try": SyntaxKind.TryKeyword, - "type": SyntaxKind.TypeKeyword, - "typeof": SyntaxKind.TypeOfKeyword, - "var": SyntaxKind.VarKeyword, - "void": SyntaxKind.VoidKeyword, - "while": SyntaxKind.WhileKeyword, - "with": SyntaxKind.WithKeyword, - "yield": SyntaxKind.YieldKeyword, - - "{": SyntaxKind.OpenBraceToken, - "}": SyntaxKind.CloseBraceToken, - "(": SyntaxKind.OpenParenToken, - ")": SyntaxKind.CloseParenToken, - "[": SyntaxKind.OpenBracketToken, - "]": SyntaxKind.CloseBracketToken, - ".": SyntaxKind.DotToken, - "...": SyntaxKind.DotDotDotToken, - ";": SyntaxKind.SemicolonToken, - ",": SyntaxKind.CommaToken, - "<": SyntaxKind.LessThanToken, - ">": SyntaxKind.GreaterThanToken, - "<=": SyntaxKind.LessThanEqualsToken, - ">=": SyntaxKind.GreaterThanEqualsToken, - "==": SyntaxKind.EqualsEqualsToken, - "=>": SyntaxKind.EqualsGreaterThanToken, - "!=": SyntaxKind.ExclamationEqualsToken, - "===": SyntaxKind.EqualsEqualsEqualsToken, - "!==": SyntaxKind.ExclamationEqualsEqualsToken, - "+": SyntaxKind.PlusToken, - "-": SyntaxKind.MinusToken, - "*": SyntaxKind.AsteriskToken, - "%": SyntaxKind.PercentToken, - "++": SyntaxKind.PlusPlusToken, - "--": SyntaxKind.MinusMinusToken, - "<<": SyntaxKind.LessThanLessThanToken, - ">>": SyntaxKind.GreaterThanGreaterThanToken, - ">>>": SyntaxKind.GreaterThanGreaterThanGreaterThanToken, - "&": SyntaxKind.AmpersandToken, - "|": SyntaxKind.BarToken, - "^": SyntaxKind.CaretToken, - "!": SyntaxKind.ExclamationToken, - "~": SyntaxKind.TildeToken, - "&&": SyntaxKind.AmpersandAmpersandToken, - "||": SyntaxKind.BarBarToken, - "?": SyntaxKind.QuestionToken, - ":": SyntaxKind.ColonToken, - "=": SyntaxKind.EqualsToken, - "+=": SyntaxKind.PlusEqualsToken, - "-=": SyntaxKind.MinusEqualsToken, - "*=": SyntaxKind.AsteriskEqualsToken, - "%=": SyntaxKind.PercentEqualsToken, - "<<=": SyntaxKind.LessThanLessThanEqualsToken, - ">>=": SyntaxKind.GreaterThanGreaterThanEqualsToken, - ">>>=": SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken, - "&=": SyntaxKind.AmpersandEqualsToken, - "|=": SyntaxKind.BarEqualsToken, - "^=": SyntaxKind.CaretEqualsToken, - "/": SyntaxKind.SlashToken, - "/=": SyntaxKind.SlashEqualsToken, - }; - - var kindToText = new Array(); - - for (var name in textToKeywordKind) { - if (textToKeywordKind.hasOwnProperty(name)) { - // Debug.assert(kindToText[textToKeywordKind[name]] === undefined); - kindToText[textToKeywordKind[name]] = name; - } - } - - // Manually work around a bug in the CScript 5.8 runtime where 'constructor' is not - // listed when SyntaxFacts.textToKeywordKind is enumerated because it is the name of - // the constructor function. - kindToText[SyntaxKind.ConstructorKeyword] = "constructor"; - - export function getTokenKind(text: string): SyntaxKind { - if (textToKeywordKind.hasOwnProperty(text)) { - return textToKeywordKind[text]; - } - - return SyntaxKind.None; - } - - export function getText(kind: SyntaxKind): string { - var result = kindToText[kind]; - return result;// !== undefined ? result : undefined; - } - - export function isAnyKeyword(kind: SyntaxKind): boolean { - return kind >= SyntaxKind.FirstKeyword && kind <= SyntaxKind.LastKeyword; - } - - export function isAnyPunctuation(kind: SyntaxKind): boolean { - return kind >= SyntaxKind.FirstPunctuation && kind <= SyntaxKind.LastPunctuation; - } - - export function isPrefixUnaryExpressionOperatorToken(tokenKind: SyntaxKind): boolean { - switch (tokenKind) { - case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: - case SyntaxKind.TildeToken: - case SyntaxKind.ExclamationToken: - case SyntaxKind.PlusPlusToken: - case SyntaxKind.MinusMinusToken: - return true; - default: - return false; - } - } - - export function isBinaryExpressionOperatorToken(tokenKind: SyntaxKind): boolean { - switch (tokenKind) { - case SyntaxKind.AsteriskToken: - case SyntaxKind.SlashToken: - case SyntaxKind.PercentToken: - case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: - case SyntaxKind.LessThanLessThanToken: - case SyntaxKind.GreaterThanGreaterThanToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: - case SyntaxKind.LessThanToken: - case SyntaxKind.GreaterThanToken: - case SyntaxKind.LessThanEqualsToken: - case SyntaxKind.GreaterThanEqualsToken: - case SyntaxKind.InstanceOfKeyword: - case SyntaxKind.InKeyword: - case SyntaxKind.EqualsEqualsToken: - case SyntaxKind.ExclamationEqualsToken: - case SyntaxKind.EqualsEqualsEqualsToken: - case SyntaxKind.ExclamationEqualsEqualsToken: - case SyntaxKind.AmpersandToken: - case SyntaxKind.CaretToken: - case SyntaxKind.BarToken: - case SyntaxKind.AmpersandAmpersandToken: - case SyntaxKind.BarBarToken: - case SyntaxKind.BarEqualsToken: - case SyntaxKind.AmpersandEqualsToken: - case SyntaxKind.CaretEqualsToken: - case SyntaxKind.LessThanLessThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: - case SyntaxKind.PlusEqualsToken: - case SyntaxKind.MinusEqualsToken: - case SyntaxKind.AsteriskEqualsToken: - case SyntaxKind.SlashEqualsToken: - case SyntaxKind.PercentEqualsToken: - case SyntaxKind.EqualsToken: - case SyntaxKind.CommaToken: - return true; - default: - return false; - } - } - - export function isAssignmentOperatorToken(tokenKind: SyntaxKind): boolean { - switch (tokenKind) { - case SyntaxKind.BarEqualsToken: - case SyntaxKind.AmpersandEqualsToken: - case SyntaxKind.CaretEqualsToken: - case SyntaxKind.LessThanLessThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanEqualsToken: - case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: - case SyntaxKind.PlusEqualsToken: - case SyntaxKind.MinusEqualsToken: - case SyntaxKind.AsteriskEqualsToken: - case SyntaxKind.SlashEqualsToken: - case SyntaxKind.PercentEqualsToken: - case SyntaxKind.EqualsToken: - return true; - - default: - return false; - } - } - - export function isType(kind: SyntaxKind): boolean { - switch (kind) { - case SyntaxKind.ArrayType: - case SyntaxKind.AnyKeyword: - case SyntaxKind.NumberKeyword: - case SyntaxKind.BooleanKeyword: - case SyntaxKind.StringKeyword: - case SyntaxKind.VoidKeyword: - case SyntaxKind.FunctionType: - case SyntaxKind.ObjectType: - case SyntaxKind.ConstructorType: - case SyntaxKind.TypeQuery: - case SyntaxKind.GenericType: - case SyntaxKind.QualifiedName: - case SyntaxKind.IdentifierName: - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxFacts2.ts b/src/services/syntax/syntaxFacts2.ts deleted file mode 100644 index 7c73eb31513..00000000000 --- a/src/services/syntax/syntaxFacts2.ts +++ /dev/null @@ -1,32 +0,0 @@ -/// - -module TypeScript.SyntaxFacts { - export function isDirectivePrologueElement(node: ISyntaxNodeOrToken): boolean { - return node.kind === SyntaxKind.ExpressionStatement && - (node).expression.kind === SyntaxKind.StringLiteral; - } - - export function isUseStrictDirective(node: ISyntaxNodeOrToken): boolean { - var expressionStatement = node; - var stringLiteral = expressionStatement.expression; - - var text = stringLiteral.text(); - return text === '"use strict"' || text === "'use strict'"; - } - - export function isIdentifierNameOrAnyKeyword(token: ISyntaxToken): boolean { - var tokenKind = token.kind; - return tokenKind === SyntaxKind.IdentifierName || SyntaxFacts.isAnyKeyword(tokenKind); - } - - export function isAccessibilityModifier(kind: SyntaxKind): boolean { - switch (kind) { - case SyntaxKind.PublicKeyword: - case SyntaxKind.PrivateKeyword: - case SyntaxKind.ProtectedKeyword: - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxGenerator.ts b/src/services/syntax/syntaxGenerator.ts deleted file mode 100644 index fff5cbe109e..00000000000 --- a/src/services/syntax/syntaxGenerator.ts +++ /dev/null @@ -1,1517 +0,0 @@ -/// -/// -/// -/// -/// -// /// - -var forPrettyPrinter = false; - -interface ITypeDefinition { - name: string; - baseType: string; - interfaces?: string[]; - children: IMemberDefinition[]; - isTypeScriptSpecific: boolean; -} - -interface IMemberDefinition { - name: string; - type?: string; - isToken?: boolean; - isList?: boolean; - isSeparatedList?: boolean; - requiresAtLeastOneItem?: boolean; - isOptional?: boolean; - isTypeScriptSpecific: boolean; - elementType?: string; -} - -var interfaces: any = { - IMemberDeclarationSyntax: 'IClassElementSyntax', - IStatementSyntax: 'IModuleElementSyntax', - INameSyntax: 'ITypeSyntax', - IUnaryExpressionSyntax: 'IExpressionSyntax', - IPostfixExpressionSyntax: 'IUnaryExpressionSyntax', - ILeftHandSideExpressionSyntax: 'IPostfixExpressionSyntax', - // Note: for simplicity's sake, we merge CallExpression, NewExpression and MemberExpression - // into IMemberExpression. - IMemberExpressionSyntax: 'ILeftHandSideExpressionSyntax', - ICallExpressionSyntax: 'ILeftHandSideExpressionSyntax', - IPrimaryExpressionSyntax: 'IMemberExpressionSyntax', -}; - -var definitions: ITypeDefinition[] = [ - { - name: 'SourceUnitSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'moduleElements', isList: true, elementType: 'IModuleElementSyntax' }, - { name: 'endOfFileToken', isToken: true } - ] - }, - { - name: 'ExternalModuleReferenceSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleReferenceSyntax'], - children: [ - { name: 'requireKeyword', isToken: true }, - { name: 'openParenToken', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ModuleNameModuleReferenceSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleReferenceSyntax'], - children: [ - { name: 'moduleName', type: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ImportDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'importKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'moduleReference', type: 'IModuleReferenceSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ExportAssignmentSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'exportKeyword', isToken: true, excludeFromAST: true }, - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ClassDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'classKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'heritageClauses', isList: true, elementType: 'HeritageClauseSyntax' }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'classElements', isList: true, elementType: 'IClassElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'InterfaceDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'interfaceKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'heritageClauses', isList: true, elementType: 'HeritageClauseSyntax' }, - { name: 'body', type: 'ObjectTypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'HeritageClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'extendsOrImplementsKeyword', isToken: true }, - { name: 'typeNames', isSeparatedList: true, requiresAtLeastOneItem: true, elementType: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ModuleDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'moduleKeyword', isToken: true, excludeFromAST: true }, - { name: 'name', type: 'INameSyntax' }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'moduleElements', isList: true, elementType: 'IModuleElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeAliasSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'typeKeyword', isToken: true }, - { name: 'identifier', isToken: true }, - { name: 'equalsToken', isToken: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'FunctionDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'functionKeyword', isToken: true, excludeFromAST: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'identifier', isToken: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ] - }, - { - name: 'ExpressionBody', - baseType: 'ISyntaxNode', - children: [ - { name: 'equalsGreaterThanToken', isToken: true, }, - { name: 'expression', type: 'IExpressionSyntax' } - ] - }, - { - name: 'VariableStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'variableDeclaration', type: 'VariableDeclarationSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'VariableDeclarationSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'varConstOrLetKeyword', isToken: true }, - { name: 'variableDeclarators', isSeparatedList: true, requiresAtLeastOneItem: true, elementType: 'VariableDeclaratorSyntax' } - ] - }, - { - name: 'VariableDeclaratorSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true } - ] - }, - { - name: 'EqualsValueClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'equalsToken', isToken: true, excludeFromAST: true }, - { name: 'value', type: 'IExpressionSyntax' } - ] - }, - { - name: 'PrefixUnaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'operatorToken', isToken: true }, - { name: 'operand', type: 'IUnaryExpressionSyntax' } - ], - }, - { - name: 'ArrayLiteralExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'expressions', isSeparatedList: true, elementType: 'IExpressionSyntax' }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'OmittedExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [] - }, - { - name: 'ParenthesizedExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'SimpleArrowFunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'parameter', type: 'ParameterSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'body', type: 'BlockSyntax | IExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ParenthesizedArrowFunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, isOptional: true }, - { name: 'body', type: 'BlockSyntax | IExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'QualifiedNameSyntax', - baseType: 'ISyntaxNode', - interfaces: ['INameSyntax'], - children: [ - { name: 'left', type: 'INameSyntax' }, - { name: 'dotToken', isToken: true, excludeFromAST: true }, - { name: 'right', isToken: true } - ], - // Qualified names only show up in Types, which are TypeScript specific. Note that a dotted - // expression (like A.B.Foo()) is a MemberAccessExpression, not a QualifiedName. - isTypeScriptSpecific: true - }, - { - name: 'TypeArgumentListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'lessThanToken', isToken: true }, - { name: 'typeArguments', isSeparatedList: true, elementType: 'ITypeSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ConstructorTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'FunctionTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'equalsGreaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ObjectTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'typeMembers', isList: true, elementType: 'ITypeMemberSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ArrayTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'type', type: 'ITypeSyntax' }, - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'GenericTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'name', type: 'INameSyntax' }, - { name: 'typeArgumentList', type: 'TypeArgumentListSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeQuerySyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'typeOfKeyword', isToken: true, excludeFromAST: true }, - { name: 'name', type: 'INameSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'TupleTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'types', isSeparatedList: true, elementType: 'ITypeSyntax' }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'UnionTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'left', type: 'ITypeSyntax' }, - { name: 'barToken', isToken: true, excludeFromAST: true }, - { name: 'right', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ParenthesizedTypeSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeSyntax'], - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeAnnotationSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'BlockSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'equalsGreaterThanToken', isToken: true, isOptional: 'true' }, - { name: 'openBraceToken', isToken: true, }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'ParameterSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'dotDotDotToken', isToken: true, isOptional: true, isTypeScriptSpecific: true }, - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'identifier', isToken: true }, - { name: 'questionToken', isToken: true, isOptional: true, isTypeScriptSpecific: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true, isTypeScriptSpecific: true } - ] - }, - { - name: 'PropertyAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'dotToken', isToken: true, excludeFromAST: true }, - { name: 'name', isToken: true } - ] - }, - { - name: 'PostfixUnaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPostfixExpressionSyntax'], - children: [ - { name: 'operand', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'operatorToken', isToken: true } - ], - }, - { - name: 'ElementAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'openBracketToken', isToken: true, excludeFromAST: true }, - { name: 'argumentExpression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'closeBracketToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'TemplateAccessExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberExpressionSyntax', 'ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'templateExpression', type: 'IPrimaryExpressionSyntax' } - ] - }, - { - name: 'TemplateExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'templateStartToken', isToken: true, excludeFromAST: true }, - { name: 'templateClauses', isList: true, elementType: 'TemplateClauseSyntax' } - ] - }, - { - name: 'TemplateClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'templateMiddleOrEndToken', isToken: true, elementType: 'TemplateSpanSyntax' } - ] - }, - { - name: 'InvocationExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ICallExpressionSyntax'], - children: [ - { name: 'expression', type: 'ILeftHandSideExpressionSyntax' }, - { name: 'argumentList', type: 'ArgumentListSyntax' } - ] - }, - { - name: 'ArgumentListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'typeArgumentList', type: 'TypeArgumentListSyntax', isOptional: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'arguments', isSeparatedList: true, elementType: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'BinaryExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'left', type: 'IExpressionSyntax' }, - { name: 'operatorToken', isToken: true }, - { name: 'right', type: 'IExpressionSyntax' } - ], - }, - { - name: 'ConditionalExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'questionToken', isToken: true, excludeFromAST: true }, - { name: 'whenTrue', type: 'IExpressionSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'whenFalse', type: 'IExpressionSyntax' } - ] - }, - { - name: 'ConstructSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'MethodSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'questionToken', isToken: true, isOptional: true, itTypeScriptSpecific: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' } - ] - }, - { - name: 'IndexSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax', 'IClassElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'openBracketToken', isToken: true }, - { name: 'parameters', isSeparatedList: true, elementType: 'ParameterSyntax' }, - { name: 'closeBracketToken', isToken: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'PropertySignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'questionToken', isToken: true, isOptional: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'CallSignatureSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ITypeMemberSyntax'], - children: [ - { name: 'typeParameterList', type: 'TypeParameterListSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'parameterList', type: 'ParameterListSyntax' }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecific: true }, - { name: 'semicolonOrCommaToken', isToken: true, isOptional: true } - ] - }, - { - name: 'ParameterListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'parameters', isSeparatedList: true, elementType: 'ParameterSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'TypeParameterListSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'lessThanToken', isToken: true }, - { name: 'typeParameters', isSeparatedList: true, elementType: 'TypeParameterSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'TypeParameterSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'identifier', isToken: true }, - { name: 'constraint', type: 'ConstraintSyntax', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ConstraintSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'extendsKeyword', isToken: true, excludeFromAST: true }, - // Expression only in error cases. - { name: 'typeOrExpression', type: 'ISyntaxNodeOrToken' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ElseClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'elseKeyword', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'IfStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'ifKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' }, - { name: 'elseClause', type: 'ElseClauseSyntax', isOptional: true } - ] - }, - { - name: 'ExpressionStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ConstructorDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IClassElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'constructorKeyword', isToken: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'MethodDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'GetAccessorSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IAccessorSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'getKeyword', isToken: true, excludeFromAST: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ] - }, - { - name: 'SetAccessorSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IAccessorSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, - { name: 'setKeyword', isToken: true, excludeFromAST: true }, - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'PropertyDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IMemberDeclarationSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'variableDeclarator', type: 'VariableDeclaratorSyntax' }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'ThrowStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'throwKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ReturnStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'returnKeyword', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ObjectCreationExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'newKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IMemberExpressionSyntax' }, - { name: 'argumentList', type: 'ArgumentListSyntax', isOptional: true } - ] - }, - { - name: 'SwitchStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'switchKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'switchClauses', isList: true, elementType: 'ISwitchClauseSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'CaseSwitchClauseSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ISwitchClauseSyntax'], - children: [ - { name: 'caseKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' } - ] - }, - { - name: 'DefaultSwitchClauseSyntax', - baseType: 'ISyntaxNode', - interfaces: ['ISwitchClauseSyntax'], - children: [ - { name: 'defaultKeyword', isToken: true, excludeFromAST: true }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statements', isList: true, elementType: 'IStatementSyntax' } - ] - }, - { - name: 'BreakStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'breakKeyword', isToken: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ContinueStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'continueKeyword', isToken: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true } - ] - }, - { - name: 'ForStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'forKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'initializer', type: 'VariableDeclarationSyntax | IExpressionSyntax', isOptional: true }, - { name: 'firstSemicolonToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax', isOptional: true }, - { name: 'secondSemicolonToken', isToken: true, excludeFromAST: true }, - { name: 'incrementor', type: 'IExpressionSyntax', isOptional: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'ForInStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'forKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'left', type: 'VariableDeclarationSyntax | IExpressionSyntax' }, - { name: 'inKeyword', isToken: true, excludeFromAST: true }, - { name: 'right', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'WhileStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'whileKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'WithStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'withKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' } - ] - }, - { - name: 'EnumDeclarationSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IModuleElementSyntax'], - children: [ - { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, - { name: 'enumKeyword', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'enumElements', isSeparatedList: true, elementType: 'EnumElementSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ], - isTypeScriptSpecific: true - }, - { - name: 'EnumElementSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'equalsValueClause', type: 'EqualsValueClauseSyntax', isOptional: true } - ] - }, - { - name: 'TypeAssertionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'lessThanToken', isToken: true, excludeFromAST: true }, - { name: 'type', type: 'ITypeSyntax' }, - { name: 'greaterThanToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' } - ], - isTypeScriptSpecific: true - }, - { - name: 'ObjectLiteralExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'openBraceToken', isToken: true, excludeFromAST: true }, - { name: 'propertyAssignments', isSeparatedList: true, elementType: 'IPropertyAssignmentSyntax' }, - { name: 'closeBraceToken', isToken: true, excludeFromAST: true } - ] - }, - { - name: 'ComputedPropertyNameSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPropertyNameSyntax'], - children: [ - { name: 'openBracketToken', isToken: true }, - { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'closeBracketToken', isToken: true } - ] - }, - { - name: 'PropertyAssignmentSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPropertyAssignmentSyntax'], - children: [ - { name: 'propertyName', type: 'IPropertyNameSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IExpressionSyntax' } - ] - }, - { - name: 'FunctionExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IPrimaryExpressionSyntax'], - children: [ - { name: 'asyncKeyword', isToken: true, isOptional: true }, - { name: 'functionKeyword', isToken: true, excludeFromAST: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'identifier', isToken: true, isOptional: true }, - { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true }] - }, - { - name: 'EmptyStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'semicolonToken', isToken: true }] - }, - { - name: 'TryStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'tryKeyword', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' }, - { name: 'catchClause', type: 'CatchClauseSyntax', isOptional: true }, - { name: 'finallyClause', type: 'FinallyClauseSyntax', isOptional: true }] - }, - { - name: 'CatchClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'catchKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'identifier', isToken: true }, - { name: 'typeAnnotation', type: 'TypeAnnotationSyntax', isOptional: true, isTypeScriptSpecified: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' }] - }, - { - name: 'FinallyClauseSyntax', - baseType: 'ISyntaxNode', - children: [ - { name: 'finallyKeyword', isToken: true, excludeFromAST: true }, - { name: 'block', type: 'BlockSyntax' }] - }, - { - name: 'LabeledStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'identifier', isToken: true }, - { name: 'colonToken', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' }] - }, - { - name: 'DoStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'doKeyword', isToken: true, excludeFromAST: true }, - { name: 'statement', type: 'IStatementSyntax' }, - { name: 'whileKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'condition', type: 'IExpressionSyntax' }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true }] - }, - { - name: 'TypeOfExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'typeOfKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' }] - }, - { - name: 'DeleteExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'deleteKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' }] - }, - { - name: 'VoidExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'voidKeyword', isToken: true, excludeFromAST: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax' }] - }, - { - name: 'YieldExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IExpressionSyntax'], - children: [ - { name: 'yieldKeyword', isToken: true }, - { name: 'asterixToken', isToken: true, isOptional: true }, - { name: 'expression', type: 'IExpressionSyntax', isOptional: true }] - }, - { - name: 'AwaitExpressionSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IUnaryExpressionSyntax'], - children: [ - { name: 'awaitKeyword', isToken: true }, - { name: 'expression', type: 'IUnaryExpressionSyntax', isOptional: true }] - }, - { - name: 'DebuggerStatementSyntax', - baseType: 'ISyntaxNode', - interfaces: ['IStatementSyntax'], - children: [ - { name: 'debuggerKeyword', isToken: true }, - { name: 'semicolonToken', isToken: true, isOptional: true, excludeFromAST: true }] - }]; - -function getSyntaxKindEnum() { - var name = "SyntaxKind"; - return (TypeScript)[name]; -} - -function firstKind(definition: ITypeDefinition): TypeScript.SyntaxKind { - var kindName = getNameWithoutSuffix(definition); - return getSyntaxKindEnum()[kindName]; -} - -definitions.sort((d1, d2) => firstKind(d1) - firstKind(d2)); - -function getStringWithoutSuffix(definition: string) { - if (TypeScript.StringUtilities.endsWith(definition, "Syntax")) { - return definition.substring(0, definition.length - "Syntax".length); - } - - return definition; -} - -function getNameWithoutSuffix(definition: ITypeDefinition) { - return getStringWithoutSuffix(definition.name); -} - -function getType(child: IMemberDefinition): string { - if (child.isToken) { - return "ISyntaxToken"; - } - else if (child.isSeparatedList) { - return "ISeparatedSyntaxList<" + child.elementType + ">"; - } - else if (child.isList) { - return child.elementType + "[]"; - } - else { - return child.type; - } -} - -function camelCase(value: string): string { - return value.substr(0, 1).toLowerCase() + value.substr(1); -} - -function getSafeName(child: IMemberDefinition) { - if (child.name === "arguments") { - return "_" + child.name; - } - - return child.name; -} - -function generateConstructorFunction(definition: ITypeDefinition) { - var result = " export var " + definition.name + ": " + getNameWithoutSuffix(definition) + "Constructor = function(data: number"; - - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += ", "; - result += getSafeName(child); - result += ": " + getType(child); - } - - result += ") {\r\n"; - - result += " if (data) { this.__data = data; }\r\n"; - result += " this.parent = undefined"; - if (definition.children.length) { - for (var i = 0; i < definition.children.length; i++) { - //if (i) { - result += ",\r\n"; - //} - - var child = definition.children[i]; - result += " this." + child.name + " = " + getSafeName(child); - } - } - - result += ";\r\n"; - - result += " };\r\n"; - result += " " + definition.name + ".prototype.kind = SyntaxKind." + getNameWithoutSuffix(definition) + ";\r\n"; - result += " " + definition.name + ".prototype.childCount = " + definition.children.length + ";\r\n"; - result += " " + definition.name + ".prototype.childAt = function(index: number): ISyntaxElement {\r\n"; - if (definition.children.length) { - result += " switch (index) {\r\n"; - - for (var j = 0; j < definition.children.length; j++) { - result += " case " + j + ": return this." + definition.children[j].name + ";\r\n"; - } - - result += " }\r\n"; - } - else { - result += " throw Errors.invalidOperation();\r\n"; - } - result += " }\r\n"; - - return result; -} - -function generateSyntaxInterfaces(): string { - var result = "///\r\n\r\n"; - - result += "module TypeScript {\r\n"; - - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - - if (i > 0) { - result += "\r\n"; - } - - result += generateSyntaxInterface(definition); - } - - result += "}"; - return result; -} - -function generateSyntaxInterface(definition: ITypeDefinition): string { - var result = " export interface " + definition.name + " extends ISyntaxNode" - - if (definition.interfaces) { - result += ", "; - result += definition.interfaces.join(", "); - } - - result += " {\r\n"; - - if (definition.name === "SourceUnitSyntax") { - result += " syntaxTree: SyntaxTree;\r\n"; - } - - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += " " + child.name + ": " + getType(child) + ";\r\n"; - } - - result += " }\r\n"; - result += " export interface " + getNameWithoutSuffix(definition) + "Constructor {"; - result += " new (data: number"; - - for (var i = 0; i < definition.children.length; i++) { - var child = definition.children[i]; - result += ", "; - result += getSafeName(child); - result += ": " + getType(child); - } - - result += "): " + definition.name; - result += " }\r\n"; - - return result; -} - -function generateNodes(): string { - var result = "///\r\n\r\n"; - - result += "module TypeScript"; - - result += " {\r\n"; - - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - - if (i) { - result += "\r\n"; - } - - result += generateConstructorFunction(definition); - } - - result += "}"; - return result; -} - -function isInterface(name: string) { - return name.substr(0, 1) === "I" && name.substr(1, 1).toUpperCase() === name.substr(1, 1) -} - -function generateWalker(): string { - var result = ""; - - result += - "///\r\n" + - "\r\n" + - "module TypeScript {\r\n" + - " export class SyntaxWalker implements ISyntaxVisitor {\r\n" + - " public visitToken(token: ISyntaxToken): void {\r\n" + - " }\r\n" + - "\r\n" + - " private visitOptionalToken(token: ISyntaxToken): void {\r\n" + - " if (token === undefined) {\r\n" + - " return;\r\n" + - " }\r\n" + - "\r\n" + - " this.visitToken(token);\r\n" + - " }\r\n" + - "\r\n" + - " public visitList(list: ISyntaxNodeOrToken[]): void {\r\n" + - " for (var i = 0, n = list.length; i < n; i++) {\r\n" + - " visitNodeOrToken(this, list[i]);\r\n" + - " }\r\n" + - " }\r\n"; - - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - - result += "\r\n"; - result += " public visit" + getNameWithoutSuffix(definition) + "(node: " + definition.name + "): void {\r\n"; - - for (var j = 0; j < definition.children.length; j++) { - var child = definition.children[j]; - - if (child.isToken) { - if (child.isOptional) { - result += " this.visitOptionalToken(node." + child.name + ");\r\n"; - } - else { - result += " this.visitToken(node." + child.name + ");\r\n"; - } - } - else if (child.isList || child.isSeparatedList) { - result += " this.visitList(node." + child.name + ");\r\n"; - } - else if (child.isToken) { - if (child.isOptional) { - result += " this.visitOptionalToken(node." + child.name + ");\r\n"; - } - else { - result += " this.visitToken(node." + child.name + ");\r\n"; - } - } - else { - result += " visitNodeOrToken(this, node." + child.name + ");\r\n"; - } - } - - result += " }\r\n"; - } - - result += " }"; - result += "\r\n}"; - return result; -} - -function firstEnumName(e: any, value: number) { - for (var name in e) { - if (e[name] === value) { - return name; - } - } -} - -function groupBy(array: T[], func: (v: T) => string): any { - var result: any = {}; - - for (var i = 0, n = array.length; i < n; i++) { - var v: any = array[i]; - var k = func(v); - - var list: T[] = result[k] || []; - list.push(v); - result[k] = list; - } - - return result; -} - -function generateKeywordCondition(keywords: { text: string; kind: TypeScript.SyntaxKind; }[], currentCharacter: number, indent: string): string { - var length = keywords[0].text.length; - - var result = ""; - var index: string; - - if (keywords.length === 1) { - var keyword = keywords[0]; - - if (currentCharacter === length) { - return " return SyntaxKind." + firstEnumName(getSyntaxKindEnum(), keyword.kind) + ";\r\n"; - } - - var keywordText = keywords[0].text; - result = " return (" - - for (var i = currentCharacter; i < length; i++) { - if (i > currentCharacter) { - result += " && "; - } - - index = i === 0 ? "start" : ("start + " + i); - result += "str.charCodeAt(" + index + ") === CharacterCodes." + keywordText.substr(i, 1); - } - - result += ") ? SyntaxKind." + firstEnumName(getSyntaxKindEnum(), keyword.kind) + " : SyntaxKind.IdentifierName;\r\n"; - } - else { - result += " // " + TypeScript.ArrayUtilities.select(keywords, k => k.text).join(", ") + "\r\n" - index = currentCharacter === 0 ? "start" : ("start + " + currentCharacter); - result += indent + "switch(str.charCodeAt(" + index + ")) {\r\n" - - var groupedKeywords = groupBy(keywords, k => k.text.substr(currentCharacter, 1)); - - for (var c in groupedKeywords) { - if (groupedKeywords.hasOwnProperty(c)) { - result += indent + " case CharacterCodes." + c + ":"; - result += generateKeywordCondition(groupedKeywords[c], currentCharacter + 1, indent + " "); - } - } - - result += indent + " default: return SyntaxKind.IdentifierName;\r\n"; - result += indent + "}\r\n"; - } - - return result; -} - -function min(array: T[], func: (v: T) => number): number { - var min = func(array[0]); - - for (var i = 1; i < array.length; i++) { - var next = func(array[i]); - if (next < min) { - min = next; - } - } - - return min; -} - -function max(array: T[], func: (v: T) => number): number { - var max = func(array[0]); - - for (var i = 1; i < array.length; i++) { - var next = func(array[i]); - if (next > max) { - max = next; - } - } - - return max; -} - -function generateUtilities(): string { - var result = ""; //"module TypeScript.Scanner {"; - //result += " function fixedWidthTokenLength(kind: SyntaxKind) {\r\n"; - //result += " return fixedWidthArray[kind];\r\n"; - - //result += " switch (kind) {\r\n"; - - //for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) { - // result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n"; - //} - //result += " default: throw new Error();\r\n"; - //result += " }\r\n"; - // result += " }\r\n"; - - return result; -} - -function generateScannerUtilities(): string { - var result = "///\r\n" + - "\r\n" + - "module TypeScript {\r\n" + - " export module ScannerUtilities {\r\n"; - - result += " export var fixedWidthArray = ["; - for (var i = 0; i <= TypeScript.SyntaxKind.LastFixedWidth; i++) { - if (i) { - result += ", "; - } - - if (i < TypeScript.SyntaxKind.FirstFixedWidth) { - result += "0"; - } - else { - result += TypeScript.SyntaxFacts.getText(i).length; - } - } - result += "];\r\n"; - - - var i: number; - var keywords: { text: string; kind: TypeScript.SyntaxKind; }[] = []; - - for (i = TypeScript.SyntaxKind.FirstKeyword; i <= TypeScript.SyntaxKind.LastKeyword; i++) { - keywords.push({ kind: i, text: TypeScript.SyntaxFacts.getText(i) }); - } - - keywords.sort((a, b) => a.text.localeCompare(b.text)); - - result += " export function identifierKind(str: string, start: number, length: number): SyntaxKind {\r\n"; - - var minTokenLength = min(keywords, k => k.text.length); - var maxTokenLength = max(keywords, k => k.text.length); - result += " switch (length) {\r\n"; - - - for (i = minTokenLength; i <= maxTokenLength; i++) { - var keywordsOfLengthI = TypeScript.ArrayUtilities.where(keywords, k => k.text.length === i); - if (keywordsOfLengthI.length > 0) { - result += " case " + i + ":"; - result += generateKeywordCondition(keywordsOfLengthI, 0, " "); - } - } - - result += " default: return SyntaxKind.IdentifierName;\r\n"; - result += " }\r\n"; - result += " }\r\n"; - - result += " }\r\n"; - result += "}"; - - return result; -} - -function syntaxKindName(kind: TypeScript.SyntaxKind): string { - for (var name in getSyntaxKindEnum()) { - if (getSyntaxKindEnum()[name] === kind) { - return name; - } - } - - throw new Error(); -} - -function generateVisitor(): string { - var result = ""; - - result += "///\r\n\r\n"; - - result += "module TypeScript {\r\n"; - result += " export function visitNodeOrToken(visitor: ISyntaxVisitor, element: ISyntaxNodeOrToken): any {\r\n"; - result += " if (element === undefined) { return undefined; }\r\n"; - - result += " switch (element.kind) {\r\n"; - - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - - result += " case SyntaxKind." + getNameWithoutSuffix(definition) + ": "; - result += "return visitor.visit" + getNameWithoutSuffix(definition) + "(<" + definition.name + ">element);\r\n"; - } - - result += " default: return visitor.visitToken(element);\r\n"; - result += " }\r\n"; - result += " }\r\n\r\n"; - - result += " export interface ISyntaxVisitor {\r\n"; - result += " visitToken(token: ISyntaxToken): any;\r\n"; - - for (var i = 0; i < definitions.length; i++) { - var definition = definitions[i]; - result += " visit" + getNameWithoutSuffix(definition) + "(node: " + definition.name + "): any;\r\n"; - } - - result += " }"; - - result += "\r\n}"; - - return result; -} - -var syntaxNodesConcrete = generateNodes(); -var syntaxInterfaces = generateSyntaxInterfaces(); -var walker = generateWalker(); -var scannerUtilities = generateScannerUtilities(); -var visitor = generateVisitor(); -var utilities = generateUtilities(); - -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false); -sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false); diff --git a/src/services/syntax/syntaxIndenter.ts b/src/services/syntax/syntaxIndenter.ts deleted file mode 100644 index 17b79356854..00000000000 --- a/src/services/syntax/syntaxIndenter.ts +++ /dev/null @@ -1,164 +0,0 @@ -/// - -module TypeScript { - export class SyntaxIndenter extends SyntaxRewriter { - private lastTriviaWasNewLine: boolean; - private indentationTrivia: ISyntaxTrivia; - - constructor(indentFirstToken: boolean, - private indentationAmount: number, - private options: FormattingOptions) { - super(); - this.lastTriviaWasNewLine = indentFirstToken; - this.indentationTrivia = Indentation.indentationTrivia(this.indentationAmount, this.options); - } - - public visitToken(token: ISyntaxToken): ISyntaxToken { - if (token.width() === 0) { - return token; - } - - var result = token; - if (this.lastTriviaWasNewLine) { - // have to add our indentation to every line that this token hits. - result = token.withLeadingTrivia(this.indentTriviaList(token.leadingTrivia())); - } - - this.lastTriviaWasNewLine = token.hasTrailingNewLine(); - return result; - } - - public indentTriviaList(triviaList: ISyntaxTriviaList): ISyntaxTriviaList { - var result: ISyntaxTrivia[] = []; - - // First, update any existing trivia with the indent amount. For example, combine the - // indent with any whitespace trivia, or prepend any comments with the trivia. - var indentNextTrivia = true; - for (var i = 0, n = triviaList.count(); i < n; i++) { - var trivia = triviaList.syntaxTriviaAt(i); - - var indentThisTrivia = indentNextTrivia; - indentNextTrivia = false; - - switch (trivia.kind()) { - case SyntaxKind.MultiLineCommentTrivia: - this.indentMultiLineComment(trivia, indentThisTrivia, result); - continue; - - case SyntaxKind.SingleLineCommentTrivia: - case SyntaxKind.SkippedTokenTrivia: - this.indentSingleLineOrSkippedText(trivia, indentThisTrivia, result); - continue; - - case SyntaxKind.WhitespaceTrivia: - this.indentWhitespace(trivia, indentThisTrivia, result); - continue; - - case SyntaxKind.NewLineTrivia: - // We hit a newline processing the trivia. We need to add the indentation to the - // next line as well. Note: don't bother indenting the newline itself. This will - // just insert ugly whitespace that most users probably will not want. - result.push(trivia); - indentNextTrivia = true; - continue; - - default: - throw Errors.invalidOperation(); - } - } - - // Then, if the last trivia was a newline (or there was no trivia at all), then just add the - // indentation in right before the token. - if (indentNextTrivia) { - result.push(this.indentationTrivia); - } - - return Syntax.triviaList(result); - } - - private indentSegment(segment: string): string { - // Find the position of the first non whitespace character in the segment. - var firstNonWhitespacePosition = Indentation.firstNonWhitespacePosition(segment); - - if (firstNonWhitespacePosition < segment.length && - CharacterInfo.isLineTerminator(segment.charCodeAt(firstNonWhitespacePosition))) { - - // If this segment was just a newline, then don't bother indenting it. That will just - // leave the user with an ugly indent in their output that they probably do not want. - return segment; - } - - // Convert that position to a column. - var firstNonWhitespaceColumn = Indentation.columnForPositionInString(segment, firstNonWhitespacePosition, this.options); - - // Find the new column we want the nonwhitespace text to start at. - var newFirstNonWhitespaceColumn = firstNonWhitespaceColumn + this.indentationAmount; - - // Compute an indentation string for that. - var indentationString = Indentation.indentationString(newFirstNonWhitespaceColumn, this.options); - - // Join the new indentation and the original string without its indentation. - return indentationString + segment.substring(firstNonWhitespacePosition); - } - - private indentWhitespace(trivia: ISyntaxTrivia, indentThisTrivia: boolean, result: ISyntaxTrivia[]): void { - if (!indentThisTrivia) { - // Line didn't start with this trivia. So no need to touch it. Just add to the result - // and continue on. - result.push(trivia); - return; - } - - // Line started with this trivia. We want to figure out what the final column this - // whitespace goes to will be. To do that we add the column it is at now to the column we - // want to indent to. We then compute the final tabs+whitespace string for that. - var newIndentation = this.indentSegment(trivia.fullText()); - result.push(Syntax.whitespace(newIndentation)); - } - - private indentSingleLineOrSkippedText(trivia: ISyntaxTrivia, indentThisTrivia: boolean, result: ISyntaxTrivia[]): void { - if (indentThisTrivia) { - // The line started with a comment or skipped text. Add an indentation based - // on the desired settings, and then add the trivia itself. - result.push(this.indentationTrivia); - } - - result.push(trivia); - } - - private indentMultiLineComment(trivia: ISyntaxTrivia, indentThisTrivia: boolean, result: ISyntaxTrivia[]): void { - if (indentThisTrivia) { - // The line started with a multiline comment. Add an indentation based - // on the desired settings, and then add the trivia itself. - result.push(this.indentationTrivia); - } - - // If the multiline comment spans multiple lines, we need to add the right indent amount to - // each successive line segment as well. - var segments = Syntax.splitMultiLineCommentTriviaIntoMultipleLines(trivia); - - for (var i = 1; i < segments.length; i++) { - segments[i] = this.indentSegment(segments[i]); - } - - var newText = segments.join(""); - result.push(Syntax.multiLineComment(newText)); - } - - public static indentNode(node: ISyntaxNode, indentFirstToken: boolean, indentAmount: number, options: FormattingOptions): SyntaxNode { - var indenter = new SyntaxIndenter(indentFirstToken, indentAmount, options); - return node.accept(indenter); - } - - public static indentNodes(nodes: SyntaxNode[], indentFirstToken: boolean, indentAmount: number, options: FormattingOptions): SyntaxNode[] { - // Note: it is necessary for correctness that we reuse the same SyntaxIndenter here. - // That's because when working on nodes 1-N, we need to know if the previous node ended - // with a newline. The indenter will track that for us. - - var indenter = new SyntaxIndenter(indentFirstToken, indentAmount, options); - var result: SyntaxNode[] = ArrayUtilities.select(nodes, n => n.accept(indenter)); - - return result; - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxInterfaces.generated.ts b/src/services/syntax/syntaxInterfaces.generated.ts deleted file mode 100644 index 637cec2ad6a..00000000000 --- a/src/services/syntax/syntaxInterfaces.generated.ts +++ /dev/null @@ -1,714 +0,0 @@ -/// - -module TypeScript { - export interface SourceUnitSyntax extends ISyntaxNode { - syntaxTree: SyntaxTree; - moduleElements: IModuleElementSyntax[]; - endOfFileToken: ISyntaxToken; - } - export interface SourceUnitConstructor { new (data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken): SourceUnitSyntax } - - export interface QualifiedNameSyntax extends ISyntaxNode, INameSyntax { - left: INameSyntax; - dotToken: ISyntaxToken; - right: ISyntaxToken; - } - export interface QualifiedNameConstructor { new (data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken): QualifiedNameSyntax } - - export interface ObjectTypeSyntax extends ISyntaxNode, ITypeSyntax { - openBraceToken: ISyntaxToken; - typeMembers: ITypeMemberSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface ObjectTypeConstructor { new (data: number, openBraceToken: ISyntaxToken, typeMembers: ITypeMemberSyntax[], closeBraceToken: ISyntaxToken): ObjectTypeSyntax } - - export interface FunctionTypeSyntax extends ISyntaxNode, ITypeSyntax { - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - equalsGreaterThanToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface FunctionTypeConstructor { new (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax): FunctionTypeSyntax } - - export interface ArrayTypeSyntax extends ISyntaxNode, ITypeSyntax { - type: ITypeSyntax; - openBracketToken: ISyntaxToken; - closeBracketToken: ISyntaxToken; - } - export interface ArrayTypeConstructor { new (data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken): ArrayTypeSyntax } - - export interface ConstructorTypeSyntax extends ISyntaxNode, ITypeSyntax { - newKeyword: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - equalsGreaterThanToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface ConstructorTypeConstructor { new (data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax): ConstructorTypeSyntax } - - export interface GenericTypeSyntax extends ISyntaxNode, ITypeSyntax { - name: INameSyntax; - typeArgumentList: TypeArgumentListSyntax; - } - export interface GenericTypeConstructor { new (data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax): GenericTypeSyntax } - - export interface TypeQuerySyntax extends ISyntaxNode, ITypeSyntax { - typeOfKeyword: ISyntaxToken; - name: INameSyntax; - } - export interface TypeQueryConstructor { new (data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax): TypeQuerySyntax } - - export interface TupleTypeSyntax extends ISyntaxNode, ITypeSyntax { - openBracketToken: ISyntaxToken; - types: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - } - export interface TupleTypeConstructor { new (data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken): TupleTypeSyntax } - - export interface UnionTypeSyntax extends ISyntaxNode, ITypeSyntax { - left: ITypeSyntax; - barToken: ISyntaxToken; - right: ITypeSyntax; - } - export interface UnionTypeConstructor { new (data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax): UnionTypeSyntax } - - export interface ParenthesizedTypeSyntax extends ISyntaxNode, ITypeSyntax { - openParenToken: ISyntaxToken; - type: ITypeSyntax; - closeParenToken: ISyntaxToken; - } - export interface ParenthesizedTypeConstructor { new (data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken): ParenthesizedTypeSyntax } - - export interface InterfaceDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - interfaceKeyword: ISyntaxToken; - identifier: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - heritageClauses: HeritageClauseSyntax[]; - body: ObjectTypeSyntax; - } - export interface InterfaceDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax): InterfaceDeclarationSyntax } - - export interface FunctionDeclarationSyntax extends ISyntaxNode, IStatementSyntax { - modifiers: ISyntaxToken[]; - functionKeyword: ISyntaxToken; - asterixToken: ISyntaxToken; - identifier: ISyntaxToken; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface FunctionDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): FunctionDeclarationSyntax } - - export interface ModuleDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - moduleKeyword: ISyntaxToken; - name: INameSyntax; - openBraceToken: ISyntaxToken; - moduleElements: IModuleElementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface ModuleDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken): ModuleDeclarationSyntax } - - export interface ClassDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - classKeyword: ISyntaxToken; - identifier: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - heritageClauses: HeritageClauseSyntax[]; - openBraceToken: ISyntaxToken; - classElements: IClassElementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface ClassDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken): ClassDeclarationSyntax } - - export interface EnumDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - enumKeyword: ISyntaxToken; - identifier: ISyntaxToken; - openBraceToken: ISyntaxToken; - enumElements: ISeparatedSyntaxList; - closeBraceToken: ISyntaxToken; - } - export interface EnumDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken): EnumDeclarationSyntax } - - export interface ImportDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - importKeyword: ISyntaxToken; - identifier: ISyntaxToken; - equalsToken: ISyntaxToken; - moduleReference: IModuleReferenceSyntax; - semicolonToken: ISyntaxToken; - } - export interface ImportDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken): ImportDeclarationSyntax } - - export interface ExportAssignmentSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - exportKeyword: ISyntaxToken; - equalsToken: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface ExportAssignmentConstructor { new (data: number, modifiers: ISyntaxToken[], exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): ExportAssignmentSyntax } - - export interface MethodDeclarationSyntax extends ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax { - modifiers: ISyntaxToken[]; - asterixToken: ISyntaxToken; - propertyName: IPropertyNameSyntax; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface MethodDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], asterixToken: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): MethodDeclarationSyntax } - - export interface PropertyDeclarationSyntax extends ISyntaxNode, IMemberDeclarationSyntax { - modifiers: ISyntaxToken[]; - variableDeclarator: VariableDeclaratorSyntax; - semicolonToken: ISyntaxToken; - } - export interface PropertyDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken): PropertyDeclarationSyntax } - - export interface ConstructorDeclarationSyntax extends ISyntaxNode, IClassElementSyntax { - modifiers: ISyntaxToken[]; - constructorKeyword: ISyntaxToken; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface ConstructorDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): ConstructorDeclarationSyntax } - - export interface GetAccessorSyntax extends ISyntaxNode, IAccessorSyntax { - modifiers: ISyntaxToken[]; - getKeyword: ISyntaxToken; - propertyName: IPropertyNameSyntax; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface GetAccessorConstructor { new (data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): GetAccessorSyntax } - - export interface SetAccessorSyntax extends ISyntaxNode, IAccessorSyntax { - modifiers: ISyntaxToken[]; - setKeyword: ISyntaxToken; - propertyName: IPropertyNameSyntax; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface SetAccessorConstructor { new (data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): SetAccessorSyntax } - - export interface PropertySignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - propertyName: IPropertyNameSyntax; - questionToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - semicolonOrCommaToken: ISyntaxToken; - } - export interface PropertySignatureConstructor { new (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken): PropertySignatureSyntax } - - export interface CallSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - typeAnnotation: TypeAnnotationSyntax; - semicolonOrCommaToken: ISyntaxToken; - } - export interface CallSignatureConstructor { new (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken): CallSignatureSyntax } - - export interface ConstructSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - newKeyword: ISyntaxToken; - callSignature: CallSignatureSyntax; - } - export interface ConstructSignatureConstructor { new (data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax): ConstructSignatureSyntax } - - export interface IndexSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax, IClassElementSyntax { - modifiers: ISyntaxToken[]; - openBracketToken: ISyntaxToken; - parameters: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - semicolonOrCommaToken: ISyntaxToken; - } - export interface IndexSignatureConstructor { new (data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken): IndexSignatureSyntax } - - export interface MethodSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - propertyName: IPropertyNameSyntax; - questionToken: ISyntaxToken; - callSignature: CallSignatureSyntax; - } - export interface MethodSignatureConstructor { new (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax): MethodSignatureSyntax } - - export interface BlockSyntax extends ISyntaxNode, IStatementSyntax { - equalsGreaterThanToken: ISyntaxToken; - openBraceToken: ISyntaxToken; - statements: IStatementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface BlockConstructor { new (data: number, equalsGreaterThanToken: ISyntaxToken, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken): BlockSyntax } - - export interface IfStatementSyntax extends ISyntaxNode, IStatementSyntax { - ifKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - elseClause: ElseClauseSyntax; - } - export interface IfStatementConstructor { new (data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax): IfStatementSyntax } - - export interface VariableStatementSyntax extends ISyntaxNode, IStatementSyntax { - modifiers: ISyntaxToken[]; - variableDeclaration: VariableDeclarationSyntax; - semicolonToken: ISyntaxToken; - } - export interface VariableStatementConstructor { new (data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken): VariableStatementSyntax } - - export interface ExpressionStatementSyntax extends ISyntaxNode, IStatementSyntax { - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface ExpressionStatementConstructor { new (data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ExpressionStatementSyntax } - - export interface ReturnStatementSyntax extends ISyntaxNode, IStatementSyntax { - returnKeyword: ISyntaxToken; - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface ReturnStatementConstructor { new (data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ReturnStatementSyntax } - - export interface SwitchStatementSyntax extends ISyntaxNode, IStatementSyntax { - switchKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - openBraceToken: ISyntaxToken; - switchClauses: ISwitchClauseSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface SwitchStatementConstructor { new (data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken): SwitchStatementSyntax } - - export interface BreakStatementSyntax extends ISyntaxNode, IStatementSyntax { - breakKeyword: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface BreakStatementConstructor { new (data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): BreakStatementSyntax } - - export interface ContinueStatementSyntax extends ISyntaxNode, IStatementSyntax { - continueKeyword: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface ContinueStatementConstructor { new (data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): ContinueStatementSyntax } - - export interface ForStatementSyntax extends ISyntaxNode, IStatementSyntax { - forKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - initializer: VariableDeclarationSyntax | IExpressionSyntax; - firstSemicolonToken: ISyntaxToken; - condition: IExpressionSyntax; - secondSemicolonToken: ISyntaxToken; - incrementor: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface ForStatementConstructor { new (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, initializer: VariableDeclarationSyntax | IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): ForStatementSyntax } - - export interface ForInStatementSyntax extends ISyntaxNode, IStatementSyntax { - forKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - left: VariableDeclarationSyntax | IExpressionSyntax; - inKeyword: ISyntaxToken; - right: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface ForInStatementConstructor { new (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, left: VariableDeclarationSyntax | IExpressionSyntax, inKeyword: ISyntaxToken, right: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): ForInStatementSyntax } - - export interface EmptyStatementSyntax extends ISyntaxNode, IStatementSyntax { - semicolonToken: ISyntaxToken; - } - export interface EmptyStatementConstructor { new (data: number, semicolonToken: ISyntaxToken): EmptyStatementSyntax } - - export interface ThrowStatementSyntax extends ISyntaxNode, IStatementSyntax { - throwKeyword: ISyntaxToken; - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface ThrowStatementConstructor { new (data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ThrowStatementSyntax } - - export interface WhileStatementSyntax extends ISyntaxNode, IStatementSyntax { - whileKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface WhileStatementConstructor { new (data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): WhileStatementSyntax } - - export interface TryStatementSyntax extends ISyntaxNode, IStatementSyntax { - tryKeyword: ISyntaxToken; - block: BlockSyntax; - catchClause: CatchClauseSyntax; - finallyClause: FinallyClauseSyntax; - } - export interface TryStatementConstructor { new (data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax): TryStatementSyntax } - - export interface LabeledStatementSyntax extends ISyntaxNode, IStatementSyntax { - identifier: ISyntaxToken; - colonToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface LabeledStatementConstructor { new (data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax): LabeledStatementSyntax } - - export interface DoStatementSyntax extends ISyntaxNode, IStatementSyntax { - doKeyword: ISyntaxToken; - statement: IStatementSyntax; - whileKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface DoStatementConstructor { new (data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken): DoStatementSyntax } - - export interface DebuggerStatementSyntax extends ISyntaxNode, IStatementSyntax { - debuggerKeyword: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface DebuggerStatementConstructor { new (data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken): DebuggerStatementSyntax } - - export interface WithStatementSyntax extends ISyntaxNode, IStatementSyntax { - withKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface WithStatementConstructor { new (data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): WithStatementSyntax } - - export interface PrefixUnaryExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - operatorToken: ISyntaxToken; - operand: IUnaryExpressionSyntax; - } - export interface PrefixUnaryExpressionConstructor { new (data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax): PrefixUnaryExpressionSyntax } - - export interface DeleteExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - deleteKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface DeleteExpressionConstructor { new (data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): DeleteExpressionSyntax } - - export interface TypeOfExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - typeOfKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface TypeOfExpressionConstructor { new (data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): TypeOfExpressionSyntax } - - export interface VoidExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - voidKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface VoidExpressionConstructor { new (data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): VoidExpressionSyntax } - - export interface ConditionalExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - condition: IExpressionSyntax; - questionToken: ISyntaxToken; - whenTrue: IExpressionSyntax; - colonToken: ISyntaxToken; - whenFalse: IExpressionSyntax; - } - export interface ConditionalExpressionConstructor { new (data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax): ConditionalExpressionSyntax } - - export interface BinaryExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - left: IExpressionSyntax; - operatorToken: ISyntaxToken; - right: IExpressionSyntax; - } - export interface BinaryExpressionConstructor { new (data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax): BinaryExpressionSyntax } - - export interface PostfixUnaryExpressionSyntax extends ISyntaxNode, IPostfixExpressionSyntax { - operand: ILeftHandSideExpressionSyntax; - operatorToken: ISyntaxToken; - } - export interface PostfixUnaryExpressionConstructor { new (data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken): PostfixUnaryExpressionSyntax } - - export interface PropertyAccessExpressionSyntax extends ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - dotToken: ISyntaxToken; - name: ISyntaxToken; - } - export interface PropertyAccessExpressionConstructor { new (data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken): PropertyAccessExpressionSyntax } - - export interface InvocationExpressionSyntax extends ISyntaxNode, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - argumentList: ArgumentListSyntax; - } - export interface InvocationExpressionConstructor { new (data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax): InvocationExpressionSyntax } - - export interface ArrayLiteralExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openBracketToken: ISyntaxToken; - expressions: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - } - export interface ArrayLiteralExpressionConstructor { new (data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken): ArrayLiteralExpressionSyntax } - - export interface ObjectLiteralExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openBraceToken: ISyntaxToken; - propertyAssignments: ISeparatedSyntaxList; - closeBraceToken: ISyntaxToken; - } - export interface ObjectLiteralExpressionConstructor { new (data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken): ObjectLiteralExpressionSyntax } - - export interface ObjectCreationExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - newKeyword: ISyntaxToken; - expression: IMemberExpressionSyntax; - argumentList: ArgumentListSyntax; - } - export interface ObjectCreationExpressionConstructor { new (data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax): ObjectCreationExpressionSyntax } - - export interface ParenthesizedExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openParenToken: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - } - export interface ParenthesizedExpressionConstructor { new (data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken): ParenthesizedExpressionSyntax } - - export interface ParenthesizedArrowFunctionExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - asyncKeyword: ISyntaxToken; - callSignature: CallSignatureSyntax; - equalsGreaterThanToken: ISyntaxToken; - body: BlockSyntax | IExpressionSyntax; - } - export interface ParenthesizedArrowFunctionExpressionConstructor { new (data: number, asyncKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax): ParenthesizedArrowFunctionExpressionSyntax } - - export interface SimpleArrowFunctionExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - asyncKeyword: ISyntaxToken; - parameter: ParameterSyntax; - equalsGreaterThanToken: ISyntaxToken; - body: BlockSyntax | IExpressionSyntax; - } - export interface SimpleArrowFunctionExpressionConstructor { new (data: number, asyncKeyword: ISyntaxToken, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax): SimpleArrowFunctionExpressionSyntax } - - export interface TypeAssertionExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - lessThanToken: ISyntaxToken; - type: ITypeSyntax; - greaterThanToken: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface TypeAssertionExpressionConstructor { new (data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax): TypeAssertionExpressionSyntax } - - export interface ElementAccessExpressionSyntax extends ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - openBracketToken: ISyntaxToken; - argumentExpression: IExpressionSyntax; - closeBracketToken: ISyntaxToken; - } - export interface ElementAccessExpressionConstructor { new (data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken): ElementAccessExpressionSyntax } - - export interface FunctionExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - asyncKeyword: ISyntaxToken; - functionKeyword: ISyntaxToken; - asterixToken: ISyntaxToken; - identifier: ISyntaxToken; - callSignature: CallSignatureSyntax; - body: BlockSyntax | ExpressionBody | ISyntaxToken; - } - export interface FunctionExpressionConstructor { new (data: number, asyncKeyword: ISyntaxToken, functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken): FunctionExpressionSyntax } - - export interface OmittedExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - } - export interface OmittedExpressionConstructor { new (data: number): OmittedExpressionSyntax } - - export interface TemplateExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - templateStartToken: ISyntaxToken; - templateClauses: TemplateClauseSyntax[]; - } - export interface TemplateExpressionConstructor { new (data: number, templateStartToken: ISyntaxToken, templateClauses: TemplateClauseSyntax[]): TemplateExpressionSyntax } - - export interface TemplateAccessExpressionSyntax extends ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - templateExpression: IPrimaryExpressionSyntax; - } - export interface TemplateAccessExpressionConstructor { new (data: number, expression: ILeftHandSideExpressionSyntax, templateExpression: IPrimaryExpressionSyntax): TemplateAccessExpressionSyntax } - - export interface YieldExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - yieldKeyword: ISyntaxToken; - asterixToken: ISyntaxToken; - expression: IExpressionSyntax; - } - export interface YieldExpressionConstructor { new (data: number, yieldKeyword: ISyntaxToken, asterixToken: ISyntaxToken, expression: IExpressionSyntax): YieldExpressionSyntax } - - export interface AwaitExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - awaitKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface AwaitExpressionConstructor { new (data: number, awaitKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): AwaitExpressionSyntax } - - export interface VariableDeclarationSyntax extends ISyntaxNode { - varConstOrLetKeyword: ISyntaxToken; - variableDeclarators: ISeparatedSyntaxList; - } - export interface VariableDeclarationConstructor { new (data: number, varConstOrLetKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList): VariableDeclarationSyntax } - - export interface VariableDeclaratorSyntax extends ISyntaxNode { - propertyName: IPropertyNameSyntax; - typeAnnotation: TypeAnnotationSyntax; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface VariableDeclaratorConstructor { new (data: number, propertyName: IPropertyNameSyntax, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax): VariableDeclaratorSyntax } - - export interface ArgumentListSyntax extends ISyntaxNode { - typeArgumentList: TypeArgumentListSyntax; - openParenToken: ISyntaxToken; - arguments: ISeparatedSyntaxList; - closeParenToken: ISyntaxToken; - } - export interface ArgumentListConstructor { new (data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, _arguments: ISeparatedSyntaxList, closeParenToken: ISyntaxToken): ArgumentListSyntax } - - export interface ParameterListSyntax extends ISyntaxNode { - openParenToken: ISyntaxToken; - parameters: ISeparatedSyntaxList; - closeParenToken: ISyntaxToken; - } - export interface ParameterListConstructor { new (data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeParenToken: ISyntaxToken): ParameterListSyntax } - - export interface TypeArgumentListSyntax extends ISyntaxNode { - lessThanToken: ISyntaxToken; - typeArguments: ISeparatedSyntaxList; - greaterThanToken: ISyntaxToken; - } - export interface TypeArgumentListConstructor { new (data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken): TypeArgumentListSyntax } - - export interface TypeParameterListSyntax extends ISyntaxNode { - lessThanToken: ISyntaxToken; - typeParameters: ISeparatedSyntaxList; - greaterThanToken: ISyntaxToken; - } - export interface TypeParameterListConstructor { new (data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken): TypeParameterListSyntax } - - export interface HeritageClauseSyntax extends ISyntaxNode { - extendsOrImplementsKeyword: ISyntaxToken; - typeNames: ISeparatedSyntaxList; - } - export interface HeritageClauseConstructor { new (data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList): HeritageClauseSyntax } - - export interface EqualsValueClauseSyntax extends ISyntaxNode { - equalsToken: ISyntaxToken; - value: IExpressionSyntax; - } - export interface EqualsValueClauseConstructor { new (data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax): EqualsValueClauseSyntax } - - export interface CaseSwitchClauseSyntax extends ISyntaxNode, ISwitchClauseSyntax { - caseKeyword: ISyntaxToken; - expression: IExpressionSyntax; - colonToken: ISyntaxToken; - statements: IStatementSyntax[]; - } - export interface CaseSwitchClauseConstructor { new (data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]): CaseSwitchClauseSyntax } - - export interface DefaultSwitchClauseSyntax extends ISyntaxNode, ISwitchClauseSyntax { - defaultKeyword: ISyntaxToken; - colonToken: ISyntaxToken; - statements: IStatementSyntax[]; - } - export interface DefaultSwitchClauseConstructor { new (data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]): DefaultSwitchClauseSyntax } - - export interface ElseClauseSyntax extends ISyntaxNode { - elseKeyword: ISyntaxToken; - statement: IStatementSyntax; - } - export interface ElseClauseConstructor { new (data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax): ElseClauseSyntax } - - export interface CatchClauseSyntax extends ISyntaxNode { - catchKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - identifier: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - closeParenToken: ISyntaxToken; - block: BlockSyntax; - } - export interface CatchClauseConstructor { new (data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax): CatchClauseSyntax } - - export interface FinallyClauseSyntax extends ISyntaxNode { - finallyKeyword: ISyntaxToken; - block: BlockSyntax; - } - export interface FinallyClauseConstructor { new (data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax): FinallyClauseSyntax } - - export interface TemplateClauseSyntax extends ISyntaxNode { - expression: IExpressionSyntax; - templateMiddleOrEndToken: ISyntaxToken; - } - export interface TemplateClauseConstructor { new (data: number, expression: IExpressionSyntax, templateMiddleOrEndToken: ISyntaxToken): TemplateClauseSyntax } - - export interface TypeParameterSyntax extends ISyntaxNode { - identifier: ISyntaxToken; - constraint: ConstraintSyntax; - } - export interface TypeParameterConstructor { new (data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax): TypeParameterSyntax } - - export interface ConstraintSyntax extends ISyntaxNode { - extendsKeyword: ISyntaxToken; - typeOrExpression: ISyntaxNodeOrToken; - } - export interface ConstraintConstructor { new (data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken): ConstraintSyntax } - - export interface ParameterSyntax extends ISyntaxNode { - dotDotDotToken: ISyntaxToken; - modifiers: ISyntaxToken[]; - identifier: ISyntaxToken; - questionToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface ParameterConstructor { new (data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax): ParameterSyntax } - - export interface EnumElementSyntax extends ISyntaxNode { - propertyName: IPropertyNameSyntax; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface EnumElementConstructor { new (data: number, propertyName: IPropertyNameSyntax, equalsValueClause: EqualsValueClauseSyntax): EnumElementSyntax } - - export interface TypeAnnotationSyntax extends ISyntaxNode { - colonToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface TypeAnnotationConstructor { new (data: number, colonToken: ISyntaxToken, type: ITypeSyntax): TypeAnnotationSyntax } - - export interface ExpressionBody extends ISyntaxNode { - equalsGreaterThanToken: ISyntaxToken; - expression: IExpressionSyntax; - } - export interface ExpressionBodyConstructor { new (data: number, equalsGreaterThanToken: ISyntaxToken, expression: IExpressionSyntax): ExpressionBody } - - export interface ComputedPropertyNameSyntax extends ISyntaxNode, IPropertyNameSyntax { - openBracketToken: ISyntaxToken; - expression: IExpressionSyntax; - closeBracketToken: ISyntaxToken; - } - export interface ComputedPropertyNameConstructor { new (data: number, openBracketToken: ISyntaxToken, expression: IExpressionSyntax, closeBracketToken: ISyntaxToken): ComputedPropertyNameSyntax } - - export interface PropertyAssignmentSyntax extends ISyntaxNode, IPropertyAssignmentSyntax { - propertyName: IPropertyNameSyntax; - colonToken: ISyntaxToken; - expression: IExpressionSyntax; - } - export interface PropertyAssignmentConstructor { new (data: number, propertyName: IPropertyNameSyntax, colonToken: ISyntaxToken, expression: IExpressionSyntax): PropertyAssignmentSyntax } - - export interface TypeAliasSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - typeKeyword: ISyntaxToken; - identifier: ISyntaxToken; - equalsToken: ISyntaxToken; - type: ITypeSyntax; - semicolonToken: ISyntaxToken; - } - export interface TypeAliasConstructor { new (data: number, modifiers: ISyntaxToken[], typeKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, type: ITypeSyntax, semicolonToken: ISyntaxToken): TypeAliasSyntax } - - export interface ExternalModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { - requireKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - } - export interface ExternalModuleReferenceConstructor { new (data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken): ExternalModuleReferenceSyntax } - - export interface ModuleNameModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { - moduleName: INameSyntax; - } - export interface ModuleNameModuleReferenceConstructor { new (data: number, moduleName: INameSyntax): ModuleNameModuleReferenceSyntax } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxKind.ts b/src/services/syntax/syntaxKind.ts deleted file mode 100644 index 22a43649215..00000000000 --- a/src/services/syntax/syntaxKind.ts +++ /dev/null @@ -1,307 +0,0 @@ -// If you change anything in this enum, make sure you run SyntaxGenerator again! - -module TypeScript { - export const enum SyntaxKind { - // Variable width tokens, trivia and lists. - None, - List, - - // Trivia - WhitespaceTrivia, - NewLineTrivia, - MultiLineCommentTrivia, - SingleLineCommentTrivia, - SkippedTokenTrivia, - - // Note: all variable width tokens must come before all fixed width tokens. - - ErrorToken, - EndOfFileToken, - - // Tokens - IdentifierName, - - // LiteralTokens - RegularExpressionLiteral, - NumericLiteral, - StringLiteral, - - // Template tokens - NoSubstitutionTemplateToken, - TemplateStartToken, - TemplateMiddleToken, - TemplateEndToken, - - // All fixed width tokens follow. - - // Keywords - BreakKeyword, - CaseKeyword, - CatchKeyword, - ContinueKeyword, - DebuggerKeyword, - DefaultKeyword, - DeleteKeyword, - DoKeyword, - ElseKeyword, - FalseKeyword, - FinallyKeyword, - ForKeyword, - FunctionKeyword, - IfKeyword, - InKeyword, - InstanceOfKeyword, - NewKeyword, - NullKeyword, - ReturnKeyword, - SwitchKeyword, - ThisKeyword, - ThrowKeyword, - TrueKeyword, - TryKeyword, - TypeOfKeyword, - VarKeyword, - VoidKeyword, - WhileKeyword, - WithKeyword, - - // FutureReservedWords. - ClassKeyword, - ConstKeyword, - EnumKeyword, - ExportKeyword, - ExtendsKeyword, - ImportKeyword, - SuperKeyword, - - // FutureReservedStrictWords. - ImplementsKeyword, - InterfaceKeyword, - LetKeyword, - PackageKeyword, - PrivateKeyword, - ProtectedKeyword, - PublicKeyword, - StaticKeyword, - YieldKeyword, - - // TypeScript keywords. - AnyKeyword, - AsyncKeyword, - AwaitKeyword, - BooleanKeyword, - ConstructorKeyword, - DeclareKeyword, - GetKeyword, - ModuleKeyword, - RequireKeyword, - NumberKeyword, - SetKeyword, - TypeKeyword, - StringKeyword, - - // Punctuators - OpenBraceToken, - CloseBraceToken, - OpenParenToken, - CloseParenToken, - OpenBracketToken, - CloseBracketToken, - DotToken, - DotDotDotToken, - SemicolonToken, - CommaToken, - LessThanToken, - GreaterThanToken, - LessThanEqualsToken, - GreaterThanEqualsToken, - EqualsEqualsToken, - EqualsGreaterThanToken, - ExclamationEqualsToken, - EqualsEqualsEqualsToken, - ExclamationEqualsEqualsToken, - PlusToken, - MinusToken, - AsteriskToken, - PercentToken, - PlusPlusToken, - MinusMinusToken, - LessThanLessThanToken, - GreaterThanGreaterThanToken, - GreaterThanGreaterThanGreaterThanToken, - AmpersandToken, - BarToken, - CaretToken, - ExclamationToken, - TildeToken, - AmpersandAmpersandToken, - BarBarToken, - QuestionToken, - ColonToken, - EqualsToken, - PlusEqualsToken, - MinusEqualsToken, - AsteriskEqualsToken, - PercentEqualsToken, - LessThanLessThanEqualsToken, - GreaterThanGreaterThanEqualsToken, - GreaterThanGreaterThanGreaterThanEqualsToken, - AmpersandEqualsToken, - BarEqualsToken, - CaretEqualsToken, - SlashToken, - SlashEqualsToken, - - // SyntaxNodes - SourceUnit, - - // Names - QualifiedName, - - // Types - ObjectType, - FunctionType, - ArrayType, - ConstructorType, - GenericType, - TypeQuery, - TupleType, - UnionType, - ParenthesizedType, - - // Module elements. - InterfaceDeclaration, - FunctionDeclaration, - ModuleDeclaration, - ClassDeclaration, - EnumDeclaration, - ImportDeclaration, - ExportAssignment, - - // ClassElements - MethodDeclaration, - PropertyDeclaration, - ConstructorDeclaration, - - // ClassElement and PropertyAssignment - GetAccessor, - SetAccessor, - - // Type members. - PropertySignature, - CallSignature, - ConstructSignature, - IndexSignature, - MethodSignature, - - // Statements - Block, - IfStatement, - VariableStatement, - ExpressionStatement, - ReturnStatement, - SwitchStatement, - BreakStatement, - ContinueStatement, - ForStatement, - ForInStatement, - EmptyStatement, - ThrowStatement, - WhileStatement, - TryStatement, - LabeledStatement, - DoStatement, - DebuggerStatement, - WithStatement, - - // Expressions - PrefixUnaryExpression, - DeleteExpression, - TypeOfExpression, - VoidExpression, - ConditionalExpression, - BinaryExpression, - PostfixUnaryExpression, - PropertyAccessExpression, - InvocationExpression, - ArrayLiteralExpression, - ObjectLiteralExpression, - ObjectCreationExpression, - ParenthesizedExpression, - ParenthesizedArrowFunctionExpression, - SimpleArrowFunctionExpression, - TypeAssertionExpression, - ElementAccessExpression, - FunctionExpression, - OmittedExpression, - TemplateExpression, - TemplateAccessExpression, - YieldExpression, - AwaitExpression, - - // Variable declarations - VariableDeclaration, - VariableDeclarator, - - // Lists - ArgumentList, - ParameterList, - TypeArgumentList, - TypeParameterList, - - // Clauses - HeritageClause, - EqualsValueClause, - CaseSwitchClause, - DefaultSwitchClause, - ElseClause, - CatchClause, - FinallyClause, - TemplateClause, - - // Generics - TypeParameter, - Constraint, - - // Misc. - Parameter, - EnumElement, - TypeAnnotation, - ExpressionBody, - ComputedPropertyName, - PropertyAssignment, - TypeAlias, - ExternalModuleReference, - ModuleNameModuleReference, - - FirstStandardKeyword = BreakKeyword, - LastStandardKeyword = WithKeyword, - - FirstFutureReservedKeyword = ClassKeyword, - LastFutureReservedKeyword = SuperKeyword, - - FirstFutureReservedStrictKeyword = ImplementsKeyword, - LastFutureReservedStrictKeyword = YieldKeyword, - - FirstTypeScriptKeyword = AnyKeyword, - LastTypeScriptKeyword = StringKeyword, - - FirstKeyword = FirstStandardKeyword, - LastKeyword = LastTypeScriptKeyword, - - FirstToken = ErrorToken, - LastToken = SlashEqualsToken, - - FirstPunctuation = OpenBraceToken, - LastPunctuation = SlashEqualsToken, - - FirstFixedWidth = FirstKeyword, - LastFixedWidth = LastPunctuation, - - FirstTrivia = WhitespaceTrivia, - LastTrivia = SkippedTokenTrivia, - - FirstNode = SourceUnit, - LastNode = ModuleNameModuleReference, - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxList.ts b/src/services/syntax/syntaxList.ts deleted file mode 100644 index 79d3260e082..00000000000 --- a/src/services/syntax/syntaxList.ts +++ /dev/null @@ -1,57 +0,0 @@ -/// - -interface Array { - __data: number; - - kind: TypeScript.SyntaxKind; - parent: TypeScript.ISyntaxElement; -} - -module TypeScript { - export interface ISeparatedSyntaxList extends Array { - //separatorCount(): number; - //separatorAt(index: number): TypeScript.ISyntaxToken; - - //nonSeparatorCount(): number; - //nonSeparatorAt(index: number): T; - } -} - -module TypeScript { - export function separatorCount(list: ISeparatedSyntaxList) { - return list === undefined ? 0 : list.length >> 1; - } - - export function nonSeparatorCount(list: ISeparatedSyntaxList) { - return list === undefined ? 0 : (list.length + 1) >> 1; - } - - export function separatorAt(list: ISeparatedSyntaxList, index: number): ISyntaxToken { - return list[(index << 1) + 1]; - } - - export function nonSeparatorAt(list: ISeparatedSyntaxList, index: number): T { - return list[index << 1]; - } -} - -module TypeScript.Syntax { - function addArrayPrototypeValue(name: string, val: any) { - if (Object.defineProperty && (Array.prototype)[name] === undefined) { - Object.defineProperty(Array.prototype, name, { value: val, writable: false, enumerable: false }); - } - else { - (Array.prototype)[name] = val; - } - } - - addArrayPrototypeValue("kind", SyntaxKind.List); - - export function list(nodes: T[]): T[] { - return nodes; - } - - export function separatedList(nodesAndTokens: ISyntaxNodeOrToken[]): ISeparatedSyntaxList { - return >nodesAndTokens; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxNodeInvariantsChecker.ts b/src/services/syntax/syntaxNodeInvariantsChecker.ts deleted file mode 100644 index 259bd213fda..00000000000 --- a/src/services/syntax/syntaxNodeInvariantsChecker.ts +++ /dev/null @@ -1,39 +0,0 @@ -/// - -// A debug class that we use to make sure a syntax node is valid. Currently, this simply verifies -// that the same token does not appear in the tree multiple times. This is important for -// subsystems that want to map between tokens and positions. If a token shows up multiple times in -// the node, then it will not have a unique position, previous token, etc. etc. and that can screw -// many algorithms. For this reason, when generating trees, it is important that nodes that are -// reused are cloned before insertion. -module TypeScript { - export class SyntaxNodeInvariantsChecker extends SyntaxWalker { - private tokenTable = Collections.createHashTable(Collections.DefaultHashTableCapacity, Collections.identityHashCode); - - public static checkInvariants(node: ISyntaxNode): void { - visitNodeOrToken(new SyntaxNodeInvariantsChecker(), node); - } - - public visitNode(node: ISyntaxNode): void { - Debug.assert(node.kind === SyntaxKind.SourceUnit || node.parent); - super.visitNode(node); - } - - public visitList(list: ISyntaxNodeOrToken[]): void { - Debug.assert(isShared(list) || list.parent); - super.visitList(list); - } - - public visitSeparatedList(list: ISyntaxNodeOrToken[]): void { - Debug.assert(isShared(list) || list.parent); - super.visitSeparatedList(list); - } - - public visitToken(token: ISyntaxToken): void { - // We're calling 'add', so the table will throw if we try to put the same token in multiple - // times. - Debug.assert(token.parent); - this.tokenTable.add(token, token); - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxNodeOrToken.ts b/src/services/syntax/syntaxNodeOrToken.ts deleted file mode 100644 index 932970169f6..00000000000 --- a/src/services/syntax/syntaxNodeOrToken.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// - -module TypeScript { - export interface ISyntaxNodeOrToken extends ISyntaxElement { - childCount: number; - childAt(index: number): ISyntaxElement; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxNodes.concrete.generated.ts b/src/services/syntax/syntaxNodes.concrete.generated.ts deleted file mode 100644 index 5cb5bdb2f51..00000000000 --- a/src/services/syntax/syntaxNodes.concrete.generated.ts +++ /dev/null @@ -1,1610 +0,0 @@ -/// - -module TypeScript { - export var SourceUnitSyntax: SourceUnitConstructor = function (data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.moduleElements = moduleElements, - this.endOfFileToken = endOfFileToken; - }; - SourceUnitSyntax.prototype.kind = SyntaxKind.SourceUnit; - SourceUnitSyntax.prototype.childCount = 2; - SourceUnitSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.moduleElements; - case 1: return this.endOfFileToken; - } - } - - export var QualifiedNameSyntax: QualifiedNameConstructor = function (data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken) { - if (data) { this.__data = data; } - this.left = left, - this.dotToken = dotToken, - this.right = right; - }; - QualifiedNameSyntax.prototype.kind = SyntaxKind.QualifiedName; - QualifiedNameSyntax.prototype.childCount = 3; - QualifiedNameSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.left; - case 1: return this.dotToken; - case 2: return this.right; - } - } - - export var ObjectTypeSyntax: ObjectTypeConstructor = function (data: number, openBraceToken: ISyntaxToken, typeMembers: ITypeMemberSyntax[], closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openBraceToken = openBraceToken, - this.typeMembers = typeMembers, - this.closeBraceToken = closeBraceToken; - }; - ObjectTypeSyntax.prototype.kind = SyntaxKind.ObjectType; - ObjectTypeSyntax.prototype.childCount = 3; - ObjectTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openBraceToken; - case 1: return this.typeMembers; - case 2: return this.closeBraceToken; - } - } - - export var FunctionTypeSyntax: FunctionTypeConstructor = function (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { - if (data) { this.__data = data; } - this.typeParameterList = typeParameterList, - this.parameterList = parameterList, - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.type = type; - }; - FunctionTypeSyntax.prototype.kind = SyntaxKind.FunctionType; - FunctionTypeSyntax.prototype.childCount = 4; - FunctionTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.typeParameterList; - case 1: return this.parameterList; - case 2: return this.equalsGreaterThanToken; - case 3: return this.type; - } - } - - export var ArrayTypeSyntax: ArrayTypeConstructor = function (data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.type = type, - this.openBracketToken = openBracketToken, - this.closeBracketToken = closeBracketToken; - }; - ArrayTypeSyntax.prototype.kind = SyntaxKind.ArrayType; - ArrayTypeSyntax.prototype.childCount = 3; - ArrayTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.type; - case 1: return this.openBracketToken; - case 2: return this.closeBracketToken; - } - } - - export var ConstructorTypeSyntax: ConstructorTypeConstructor = function (data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { - if (data) { this.__data = data; } - this.newKeyword = newKeyword, - this.typeParameterList = typeParameterList, - this.parameterList = parameterList, - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.type = type; - }; - ConstructorTypeSyntax.prototype.kind = SyntaxKind.ConstructorType; - ConstructorTypeSyntax.prototype.childCount = 5; - ConstructorTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.newKeyword; - case 1: return this.typeParameterList; - case 2: return this.parameterList; - case 3: return this.equalsGreaterThanToken; - case 4: return this.type; - } - } - - export var GenericTypeSyntax: GenericTypeConstructor = function (data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax) { - if (data) { this.__data = data; } - this.name = name, - this.typeArgumentList = typeArgumentList; - }; - GenericTypeSyntax.prototype.kind = SyntaxKind.GenericType; - GenericTypeSyntax.prototype.childCount = 2; - GenericTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.name; - case 1: return this.typeArgumentList; - } - } - - export var TypeQuerySyntax: TypeQueryConstructor = function (data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax) { - if (data) { this.__data = data; } - this.typeOfKeyword = typeOfKeyword, - this.name = name; - }; - TypeQuerySyntax.prototype.kind = SyntaxKind.TypeQuery; - TypeQuerySyntax.prototype.childCount = 2; - TypeQuerySyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.typeOfKeyword; - case 1: return this.name; - } - } - - export var TupleTypeSyntax: TupleTypeConstructor = function (data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openBracketToken = openBracketToken, - this.types = types, - this.closeBracketToken = closeBracketToken; - }; - TupleTypeSyntax.prototype.kind = SyntaxKind.TupleType; - TupleTypeSyntax.prototype.childCount = 3; - TupleTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openBracketToken; - case 1: return this.types; - case 2: return this.closeBracketToken; - } - } - - export var UnionTypeSyntax: UnionTypeConstructor = function (data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax) { - if (data) { this.__data = data; } - this.left = left, - this.barToken = barToken, - this.right = right; - }; - UnionTypeSyntax.prototype.kind = SyntaxKind.UnionType; - UnionTypeSyntax.prototype.childCount = 3; - UnionTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.left; - case 1: return this.barToken; - case 2: return this.right; - } - } - - export var ParenthesizedTypeSyntax: ParenthesizedTypeConstructor = function (data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openParenToken = openParenToken, - this.type = type, - this.closeParenToken = closeParenToken; - }; - ParenthesizedTypeSyntax.prototype.kind = SyntaxKind.ParenthesizedType; - ParenthesizedTypeSyntax.prototype.childCount = 3; - ParenthesizedTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openParenToken; - case 1: return this.type; - case 2: return this.closeParenToken; - } - } - - export var InterfaceDeclarationSyntax: InterfaceDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.interfaceKeyword = interfaceKeyword, - this.identifier = identifier, - this.typeParameterList = typeParameterList, - this.heritageClauses = heritageClauses, - this.body = body; - }; - InterfaceDeclarationSyntax.prototype.kind = SyntaxKind.InterfaceDeclaration; - InterfaceDeclarationSyntax.prototype.childCount = 6; - InterfaceDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.interfaceKeyword; - case 2: return this.identifier; - case 3: return this.typeParameterList; - case 4: return this.heritageClauses; - case 5: return this.body; - } - } - - export var FunctionDeclarationSyntax: FunctionDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.functionKeyword = functionKeyword, - this.asterixToken = asterixToken, - this.identifier = identifier, - this.callSignature = callSignature, - this.body = body; - }; - FunctionDeclarationSyntax.prototype.kind = SyntaxKind.FunctionDeclaration; - FunctionDeclarationSyntax.prototype.childCount = 6; - FunctionDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.functionKeyword; - case 2: return this.asterixToken; - case 3: return this.identifier; - case 4: return this.callSignature; - case 5: return this.body; - } - } - - export var ModuleDeclarationSyntax: ModuleDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.moduleKeyword = moduleKeyword, - this.name = name, - this.openBraceToken = openBraceToken, - this.moduleElements = moduleElements, - this.closeBraceToken = closeBraceToken; - }; - ModuleDeclarationSyntax.prototype.kind = SyntaxKind.ModuleDeclaration; - ModuleDeclarationSyntax.prototype.childCount = 6; - ModuleDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.moduleKeyword; - case 2: return this.name; - case 3: return this.openBraceToken; - case 4: return this.moduleElements; - case 5: return this.closeBraceToken; - } - } - - export var ClassDeclarationSyntax: ClassDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.classKeyword = classKeyword, - this.identifier = identifier, - this.typeParameterList = typeParameterList, - this.heritageClauses = heritageClauses, - this.openBraceToken = openBraceToken, - this.classElements = classElements, - this.closeBraceToken = closeBraceToken; - }; - ClassDeclarationSyntax.prototype.kind = SyntaxKind.ClassDeclaration; - ClassDeclarationSyntax.prototype.childCount = 8; - ClassDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.classKeyword; - case 2: return this.identifier; - case 3: return this.typeParameterList; - case 4: return this.heritageClauses; - case 5: return this.openBraceToken; - case 6: return this.classElements; - case 7: return this.closeBraceToken; - } - } - - export var EnumDeclarationSyntax: EnumDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.enumKeyword = enumKeyword, - this.identifier = identifier, - this.openBraceToken = openBraceToken, - this.enumElements = enumElements, - this.closeBraceToken = closeBraceToken; - }; - EnumDeclarationSyntax.prototype.kind = SyntaxKind.EnumDeclaration; - EnumDeclarationSyntax.prototype.childCount = 6; - EnumDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.enumKeyword; - case 2: return this.identifier; - case 3: return this.openBraceToken; - case 4: return this.enumElements; - case 5: return this.closeBraceToken; - } - } - - export var ImportDeclarationSyntax: ImportDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.importKeyword = importKeyword, - this.identifier = identifier, - this.equalsToken = equalsToken, - this.moduleReference = moduleReference, - this.semicolonToken = semicolonToken; - }; - ImportDeclarationSyntax.prototype.kind = SyntaxKind.ImportDeclaration; - ImportDeclarationSyntax.prototype.childCount = 6; - ImportDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.importKeyword; - case 2: return this.identifier; - case 3: return this.equalsToken; - case 4: return this.moduleReference; - case 5: return this.semicolonToken; - } - } - - export var ExportAssignmentSyntax: ExportAssignmentConstructor = function (data: number, modifiers: ISyntaxToken[], exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.exportKeyword = exportKeyword, - this.equalsToken = equalsToken, - this.identifier = identifier, - this.semicolonToken = semicolonToken; - }; - ExportAssignmentSyntax.prototype.kind = SyntaxKind.ExportAssignment; - ExportAssignmentSyntax.prototype.childCount = 5; - ExportAssignmentSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.exportKeyword; - case 2: return this.equalsToken; - case 3: return this.identifier; - case 4: return this.semicolonToken; - } - } - - export var MethodDeclarationSyntax: MethodDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], asterixToken: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.asterixToken = asterixToken, - this.propertyName = propertyName, - this.callSignature = callSignature, - this.body = body; - }; - MethodDeclarationSyntax.prototype.kind = SyntaxKind.MethodDeclaration; - MethodDeclarationSyntax.prototype.childCount = 5; - MethodDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.asterixToken; - case 2: return this.propertyName; - case 3: return this.callSignature; - case 4: return this.body; - } - } - - export var PropertyDeclarationSyntax: PropertyDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.variableDeclarator = variableDeclarator, - this.semicolonToken = semicolonToken; - }; - PropertyDeclarationSyntax.prototype.kind = SyntaxKind.PropertyDeclaration; - PropertyDeclarationSyntax.prototype.childCount = 3; - PropertyDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.variableDeclarator; - case 2: return this.semicolonToken; - } - } - - export var ConstructorDeclarationSyntax: ConstructorDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.constructorKeyword = constructorKeyword, - this.callSignature = callSignature, - this.body = body; - }; - ConstructorDeclarationSyntax.prototype.kind = SyntaxKind.ConstructorDeclaration; - ConstructorDeclarationSyntax.prototype.childCount = 4; - ConstructorDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.constructorKeyword; - case 2: return this.callSignature; - case 3: return this.body; - } - } - - export var GetAccessorSyntax: GetAccessorConstructor = function (data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.getKeyword = getKeyword, - this.propertyName = propertyName, - this.callSignature = callSignature, - this.body = body; - }; - GetAccessorSyntax.prototype.kind = SyntaxKind.GetAccessor; - GetAccessorSyntax.prototype.childCount = 5; - GetAccessorSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.getKeyword; - case 2: return this.propertyName; - case 3: return this.callSignature; - case 4: return this.body; - } - } - - export var SetAccessorSyntax: SetAccessorConstructor = function (data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.setKeyword = setKeyword, - this.propertyName = propertyName, - this.callSignature = callSignature, - this.body = body; - }; - SetAccessorSyntax.prototype.kind = SyntaxKind.SetAccessor; - SetAccessorSyntax.prototype.childCount = 5; - SetAccessorSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.setKeyword; - case 2: return this.propertyName; - case 3: return this.callSignature; - case 4: return this.body; - } - } - - export var PropertySignatureSyntax: PropertySignatureConstructor = function (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.propertyName = propertyName, - this.questionToken = questionToken, - this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken; - }; - PropertySignatureSyntax.prototype.kind = SyntaxKind.PropertySignature; - PropertySignatureSyntax.prototype.childCount = 4; - PropertySignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.propertyName; - case 1: return this.questionToken; - case 2: return this.typeAnnotation; - case 3: return this.semicolonOrCommaToken; - } - } - - export var CallSignatureSyntax: CallSignatureConstructor = function (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.typeParameterList = typeParameterList, - this.parameterList = parameterList, - this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken; - }; - CallSignatureSyntax.prototype.kind = SyntaxKind.CallSignature; - CallSignatureSyntax.prototype.childCount = 4; - CallSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.typeParameterList; - case 1: return this.parameterList; - case 2: return this.typeAnnotation; - case 3: return this.semicolonOrCommaToken; - } - } - - export var ConstructSignatureSyntax: ConstructSignatureConstructor = function (data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax) { - if (data) { this.__data = data; } - this.newKeyword = newKeyword, - this.callSignature = callSignature; - }; - ConstructSignatureSyntax.prototype.kind = SyntaxKind.ConstructSignature; - ConstructSignatureSyntax.prototype.childCount = 2; - ConstructSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.newKeyword; - case 1: return this.callSignature; - } - } - - export var IndexSignatureSyntax: IndexSignatureConstructor = function (data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.openBracketToken = openBracketToken, - this.parameters = parameters, - this.closeBracketToken = closeBracketToken, - this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken; - }; - IndexSignatureSyntax.prototype.kind = SyntaxKind.IndexSignature; - IndexSignatureSyntax.prototype.childCount = 6; - IndexSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.openBracketToken; - case 2: return this.parameters; - case 3: return this.closeBracketToken; - case 4: return this.typeAnnotation; - case 5: return this.semicolonOrCommaToken; - } - } - - export var MethodSignatureSyntax: MethodSignatureConstructor = function (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax) { - if (data) { this.__data = data; } - this.propertyName = propertyName, - this.questionToken = questionToken, - this.callSignature = callSignature; - }; - MethodSignatureSyntax.prototype.kind = SyntaxKind.MethodSignature; - MethodSignatureSyntax.prototype.childCount = 3; - MethodSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.propertyName; - case 1: return this.questionToken; - case 2: return this.callSignature; - } - } - - export var BlockSyntax: BlockConstructor = function (data: number, equalsGreaterThanToken: ISyntaxToken, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.openBraceToken = openBraceToken, - this.statements = statements, - this.closeBraceToken = closeBraceToken; - }; - BlockSyntax.prototype.kind = SyntaxKind.Block; - BlockSyntax.prototype.childCount = 4; - BlockSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.equalsGreaterThanToken; - case 1: return this.openBraceToken; - case 2: return this.statements; - case 3: return this.closeBraceToken; - } - } - - export var IfStatementSyntax: IfStatementConstructor = function (data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax) { - if (data) { this.__data = data; } - this.ifKeyword = ifKeyword, - this.openParenToken = openParenToken, - this.condition = condition, - this.closeParenToken = closeParenToken, - this.statement = statement, - this.elseClause = elseClause; - }; - IfStatementSyntax.prototype.kind = SyntaxKind.IfStatement; - IfStatementSyntax.prototype.childCount = 6; - IfStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.ifKeyword; - case 1: return this.openParenToken; - case 2: return this.condition; - case 3: return this.closeParenToken; - case 4: return this.statement; - case 5: return this.elseClause; - } - } - - export var VariableStatementSyntax: VariableStatementConstructor = function (data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.variableDeclaration = variableDeclaration, - this.semicolonToken = semicolonToken; - }; - VariableStatementSyntax.prototype.kind = SyntaxKind.VariableStatement; - VariableStatementSyntax.prototype.childCount = 3; - VariableStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.variableDeclaration; - case 2: return this.semicolonToken; - } - } - - export var ExpressionStatementSyntax: ExpressionStatementConstructor = function (data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.expression = expression, - this.semicolonToken = semicolonToken; - }; - ExpressionStatementSyntax.prototype.kind = SyntaxKind.ExpressionStatement; - ExpressionStatementSyntax.prototype.childCount = 2; - ExpressionStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.semicolonToken; - } - } - - export var ReturnStatementSyntax: ReturnStatementConstructor = function (data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.returnKeyword = returnKeyword, - this.expression = expression, - this.semicolonToken = semicolonToken; - }; - ReturnStatementSyntax.prototype.kind = SyntaxKind.ReturnStatement; - ReturnStatementSyntax.prototype.childCount = 3; - ReturnStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.returnKeyword; - case 1: return this.expression; - case 2: return this.semicolonToken; - } - } - - export var SwitchStatementSyntax: SwitchStatementConstructor = function (data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.switchKeyword = switchKeyword, - this.openParenToken = openParenToken, - this.expression = expression, - this.closeParenToken = closeParenToken, - this.openBraceToken = openBraceToken, - this.switchClauses = switchClauses, - this.closeBraceToken = closeBraceToken; - }; - SwitchStatementSyntax.prototype.kind = SyntaxKind.SwitchStatement; - SwitchStatementSyntax.prototype.childCount = 7; - SwitchStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.switchKeyword; - case 1: return this.openParenToken; - case 2: return this.expression; - case 3: return this.closeParenToken; - case 4: return this.openBraceToken; - case 5: return this.switchClauses; - case 6: return this.closeBraceToken; - } - } - - export var BreakStatementSyntax: BreakStatementConstructor = function (data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.breakKeyword = breakKeyword, - this.identifier = identifier, - this.semicolonToken = semicolonToken; - }; - BreakStatementSyntax.prototype.kind = SyntaxKind.BreakStatement; - BreakStatementSyntax.prototype.childCount = 3; - BreakStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.breakKeyword; - case 1: return this.identifier; - case 2: return this.semicolonToken; - } - } - - export var ContinueStatementSyntax: ContinueStatementConstructor = function (data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.continueKeyword = continueKeyword, - this.identifier = identifier, - this.semicolonToken = semicolonToken; - }; - ContinueStatementSyntax.prototype.kind = SyntaxKind.ContinueStatement; - ContinueStatementSyntax.prototype.childCount = 3; - ContinueStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.continueKeyword; - case 1: return this.identifier; - case 2: return this.semicolonToken; - } - } - - export var ForStatementSyntax: ForStatementConstructor = function (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, initializer: VariableDeclarationSyntax | IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.forKeyword = forKeyword, - this.openParenToken = openParenToken, - this.initializer = initializer, - this.firstSemicolonToken = firstSemicolonToken, - this.condition = condition, - this.secondSemicolonToken = secondSemicolonToken, - this.incrementor = incrementor, - this.closeParenToken = closeParenToken, - this.statement = statement; - }; - ForStatementSyntax.prototype.kind = SyntaxKind.ForStatement; - ForStatementSyntax.prototype.childCount = 9; - ForStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.forKeyword; - case 1: return this.openParenToken; - case 2: return this.initializer; - case 3: return this.firstSemicolonToken; - case 4: return this.condition; - case 5: return this.secondSemicolonToken; - case 6: return this.incrementor; - case 7: return this.closeParenToken; - case 8: return this.statement; - } - } - - export var ForInStatementSyntax: ForInStatementConstructor = function (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, left: VariableDeclarationSyntax | IExpressionSyntax, inKeyword: ISyntaxToken, right: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.forKeyword = forKeyword, - this.openParenToken = openParenToken, - this.left = left, - this.inKeyword = inKeyword, - this.right = right, - this.closeParenToken = closeParenToken, - this.statement = statement; - }; - ForInStatementSyntax.prototype.kind = SyntaxKind.ForInStatement; - ForInStatementSyntax.prototype.childCount = 7; - ForInStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.forKeyword; - case 1: return this.openParenToken; - case 2: return this.left; - case 3: return this.inKeyword; - case 4: return this.right; - case 5: return this.closeParenToken; - case 6: return this.statement; - } - } - - export var EmptyStatementSyntax: EmptyStatementConstructor = function (data: number, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.semicolonToken = semicolonToken; - }; - EmptyStatementSyntax.prototype.kind = SyntaxKind.EmptyStatement; - EmptyStatementSyntax.prototype.childCount = 1; - EmptyStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.semicolonToken; - } - } - - export var ThrowStatementSyntax: ThrowStatementConstructor = function (data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.throwKeyword = throwKeyword, - this.expression = expression, - this.semicolonToken = semicolonToken; - }; - ThrowStatementSyntax.prototype.kind = SyntaxKind.ThrowStatement; - ThrowStatementSyntax.prototype.childCount = 3; - ThrowStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.throwKeyword; - case 1: return this.expression; - case 2: return this.semicolonToken; - } - } - - export var WhileStatementSyntax: WhileStatementConstructor = function (data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.whileKeyword = whileKeyword, - this.openParenToken = openParenToken, - this.condition = condition, - this.closeParenToken = closeParenToken, - this.statement = statement; - }; - WhileStatementSyntax.prototype.kind = SyntaxKind.WhileStatement; - WhileStatementSyntax.prototype.childCount = 5; - WhileStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.whileKeyword; - case 1: return this.openParenToken; - case 2: return this.condition; - case 3: return this.closeParenToken; - case 4: return this.statement; - } - } - - export var TryStatementSyntax: TryStatementConstructor = function (data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax) { - if (data) { this.__data = data; } - this.tryKeyword = tryKeyword, - this.block = block, - this.catchClause = catchClause, - this.finallyClause = finallyClause; - }; - TryStatementSyntax.prototype.kind = SyntaxKind.TryStatement; - TryStatementSyntax.prototype.childCount = 4; - TryStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.tryKeyword; - case 1: return this.block; - case 2: return this.catchClause; - case 3: return this.finallyClause; - } - } - - export var LabeledStatementSyntax: LabeledStatementConstructor = function (data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.identifier = identifier, - this.colonToken = colonToken, - this.statement = statement; - }; - LabeledStatementSyntax.prototype.kind = SyntaxKind.LabeledStatement; - LabeledStatementSyntax.prototype.childCount = 3; - LabeledStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.identifier; - case 1: return this.colonToken; - case 2: return this.statement; - } - } - - export var DoStatementSyntax: DoStatementConstructor = function (data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.doKeyword = doKeyword, - this.statement = statement, - this.whileKeyword = whileKeyword, - this.openParenToken = openParenToken, - this.condition = condition, - this.closeParenToken = closeParenToken, - this.semicolonToken = semicolonToken; - }; - DoStatementSyntax.prototype.kind = SyntaxKind.DoStatement; - DoStatementSyntax.prototype.childCount = 7; - DoStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.doKeyword; - case 1: return this.statement; - case 2: return this.whileKeyword; - case 3: return this.openParenToken; - case 4: return this.condition; - case 5: return this.closeParenToken; - case 6: return this.semicolonToken; - } - } - - export var DebuggerStatementSyntax: DebuggerStatementConstructor = function (data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.debuggerKeyword = debuggerKeyword, - this.semicolonToken = semicolonToken; - }; - DebuggerStatementSyntax.prototype.kind = SyntaxKind.DebuggerStatement; - DebuggerStatementSyntax.prototype.childCount = 2; - DebuggerStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.debuggerKeyword; - case 1: return this.semicolonToken; - } - } - - export var WithStatementSyntax: WithStatementConstructor = function (data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.withKeyword = withKeyword, - this.openParenToken = openParenToken, - this.condition = condition, - this.closeParenToken = closeParenToken, - this.statement = statement; - }; - WithStatementSyntax.prototype.kind = SyntaxKind.WithStatement; - WithStatementSyntax.prototype.childCount = 5; - WithStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.withKeyword; - case 1: return this.openParenToken; - case 2: return this.condition; - case 3: return this.closeParenToken; - case 4: return this.statement; - } - } - - export var PrefixUnaryExpressionSyntax: PrefixUnaryExpressionConstructor = function (data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.operatorToken = operatorToken, - this.operand = operand; - }; - PrefixUnaryExpressionSyntax.prototype.kind = SyntaxKind.PrefixUnaryExpression; - PrefixUnaryExpressionSyntax.prototype.childCount = 2; - PrefixUnaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.operatorToken; - case 1: return this.operand; - } - } - - export var DeleteExpressionSyntax: DeleteExpressionConstructor = function (data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.deleteKeyword = deleteKeyword, - this.expression = expression; - }; - DeleteExpressionSyntax.prototype.kind = SyntaxKind.DeleteExpression; - DeleteExpressionSyntax.prototype.childCount = 2; - DeleteExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.deleteKeyword; - case 1: return this.expression; - } - } - - export var TypeOfExpressionSyntax: TypeOfExpressionConstructor = function (data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.typeOfKeyword = typeOfKeyword, - this.expression = expression; - }; - TypeOfExpressionSyntax.prototype.kind = SyntaxKind.TypeOfExpression; - TypeOfExpressionSyntax.prototype.childCount = 2; - TypeOfExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.typeOfKeyword; - case 1: return this.expression; - } - } - - export var VoidExpressionSyntax: VoidExpressionConstructor = function (data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.voidKeyword = voidKeyword, - this.expression = expression; - }; - VoidExpressionSyntax.prototype.kind = SyntaxKind.VoidExpression; - VoidExpressionSyntax.prototype.childCount = 2; - VoidExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.voidKeyword; - case 1: return this.expression; - } - } - - export var ConditionalExpressionSyntax: ConditionalExpressionConstructor = function (data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax) { - if (data) { this.__data = data; } - this.condition = condition, - this.questionToken = questionToken, - this.whenTrue = whenTrue, - this.colonToken = colonToken, - this.whenFalse = whenFalse; - }; - ConditionalExpressionSyntax.prototype.kind = SyntaxKind.ConditionalExpression; - ConditionalExpressionSyntax.prototype.childCount = 5; - ConditionalExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.condition; - case 1: return this.questionToken; - case 2: return this.whenTrue; - case 3: return this.colonToken; - case 4: return this.whenFalse; - } - } - - export var BinaryExpressionSyntax: BinaryExpressionConstructor = function (data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax) { - if (data) { this.__data = data; } - this.left = left, - this.operatorToken = operatorToken, - this.right = right; - }; - BinaryExpressionSyntax.prototype.kind = SyntaxKind.BinaryExpression; - BinaryExpressionSyntax.prototype.childCount = 3; - BinaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.left; - case 1: return this.operatorToken; - case 2: return this.right; - } - } - - export var PostfixUnaryExpressionSyntax: PostfixUnaryExpressionConstructor = function (data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.operand = operand, - this.operatorToken = operatorToken; - }; - PostfixUnaryExpressionSyntax.prototype.kind = SyntaxKind.PostfixUnaryExpression; - PostfixUnaryExpressionSyntax.prototype.childCount = 2; - PostfixUnaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.operand; - case 1: return this.operatorToken; - } - } - - export var PropertyAccessExpressionSyntax: PropertyAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken) { - if (data) { this.__data = data; } - this.expression = expression, - this.dotToken = dotToken, - this.name = name; - }; - PropertyAccessExpressionSyntax.prototype.kind = SyntaxKind.PropertyAccessExpression; - PropertyAccessExpressionSyntax.prototype.childCount = 3; - PropertyAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.dotToken; - case 2: return this.name; - } - } - - export var InvocationExpressionSyntax: InvocationExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax) { - if (data) { this.__data = data; } - this.expression = expression, - this.argumentList = argumentList; - }; - InvocationExpressionSyntax.prototype.kind = SyntaxKind.InvocationExpression; - InvocationExpressionSyntax.prototype.childCount = 2; - InvocationExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.argumentList; - } - } - - export var ArrayLiteralExpressionSyntax: ArrayLiteralExpressionConstructor = function (data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openBracketToken = openBracketToken, - this.expressions = expressions, - this.closeBracketToken = closeBracketToken; - }; - ArrayLiteralExpressionSyntax.prototype.kind = SyntaxKind.ArrayLiteralExpression; - ArrayLiteralExpressionSyntax.prototype.childCount = 3; - ArrayLiteralExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openBracketToken; - case 1: return this.expressions; - case 2: return this.closeBracketToken; - } - } - - export var ObjectLiteralExpressionSyntax: ObjectLiteralExpressionConstructor = function (data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openBraceToken = openBraceToken, - this.propertyAssignments = propertyAssignments, - this.closeBraceToken = closeBraceToken; - }; - ObjectLiteralExpressionSyntax.prototype.kind = SyntaxKind.ObjectLiteralExpression; - ObjectLiteralExpressionSyntax.prototype.childCount = 3; - ObjectLiteralExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openBraceToken; - case 1: return this.propertyAssignments; - case 2: return this.closeBraceToken; - } - } - - export var ObjectCreationExpressionSyntax: ObjectCreationExpressionConstructor = function (data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax) { - if (data) { this.__data = data; } - this.newKeyword = newKeyword, - this.expression = expression, - this.argumentList = argumentList; - }; - ObjectCreationExpressionSyntax.prototype.kind = SyntaxKind.ObjectCreationExpression; - ObjectCreationExpressionSyntax.prototype.childCount = 3; - ObjectCreationExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.newKeyword; - case 1: return this.expression; - case 2: return this.argumentList; - } - } - - export var ParenthesizedExpressionSyntax: ParenthesizedExpressionConstructor = function (data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openParenToken = openParenToken, - this.expression = expression, - this.closeParenToken = closeParenToken; - }; - ParenthesizedExpressionSyntax.prototype.kind = SyntaxKind.ParenthesizedExpression; - ParenthesizedExpressionSyntax.prototype.childCount = 3; - ParenthesizedExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openParenToken; - case 1: return this.expression; - case 2: return this.closeParenToken; - } - } - - export var ParenthesizedArrowFunctionExpressionSyntax: ParenthesizedArrowFunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { - if (data) { this.__data = data; } - this.asyncKeyword = asyncKeyword, - this.callSignature = callSignature, - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.body = body; - }; - ParenthesizedArrowFunctionExpressionSyntax.prototype.kind = SyntaxKind.ParenthesizedArrowFunctionExpression; - ParenthesizedArrowFunctionExpressionSyntax.prototype.childCount = 4; - ParenthesizedArrowFunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.asyncKeyword; - case 1: return this.callSignature; - case 2: return this.equalsGreaterThanToken; - case 3: return this.body; - } - } - - export var SimpleArrowFunctionExpressionSyntax: SimpleArrowFunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { - if (data) { this.__data = data; } - this.asyncKeyword = asyncKeyword, - this.parameter = parameter, - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.body = body; - }; - SimpleArrowFunctionExpressionSyntax.prototype.kind = SyntaxKind.SimpleArrowFunctionExpression; - SimpleArrowFunctionExpressionSyntax.prototype.childCount = 4; - SimpleArrowFunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.asyncKeyword; - case 1: return this.parameter; - case 2: return this.equalsGreaterThanToken; - case 3: return this.body; - } - } - - export var TypeAssertionExpressionSyntax: TypeAssertionExpressionConstructor = function (data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.lessThanToken = lessThanToken, - this.type = type, - this.greaterThanToken = greaterThanToken, - this.expression = expression; - }; - TypeAssertionExpressionSyntax.prototype.kind = SyntaxKind.TypeAssertionExpression; - TypeAssertionExpressionSyntax.prototype.childCount = 4; - TypeAssertionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.lessThanToken; - case 1: return this.type; - case 2: return this.greaterThanToken; - case 3: return this.expression; - } - } - - export var ElementAccessExpressionSyntax: ElementAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.expression = expression, - this.openBracketToken = openBracketToken, - this.argumentExpression = argumentExpression, - this.closeBracketToken = closeBracketToken; - }; - ElementAccessExpressionSyntax.prototype.kind = SyntaxKind.ElementAccessExpression; - ElementAccessExpressionSyntax.prototype.childCount = 4; - ElementAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.openBracketToken; - case 2: return this.argumentExpression; - case 3: return this.closeBracketToken; - } - } - - export var FunctionExpressionSyntax: FunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { - if (data) { this.__data = data; } - this.asyncKeyword = asyncKeyword, - this.functionKeyword = functionKeyword, - this.asterixToken = asterixToken, - this.identifier = identifier, - this.callSignature = callSignature, - this.body = body; - }; - FunctionExpressionSyntax.prototype.kind = SyntaxKind.FunctionExpression; - FunctionExpressionSyntax.prototype.childCount = 6; - FunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.asyncKeyword; - case 1: return this.functionKeyword; - case 2: return this.asterixToken; - case 3: return this.identifier; - case 4: return this.callSignature; - case 5: return this.body; - } - } - - export var OmittedExpressionSyntax: OmittedExpressionConstructor = function (data: number) { - if (data) { this.__data = data; } - }; - OmittedExpressionSyntax.prototype.kind = SyntaxKind.OmittedExpression; - OmittedExpressionSyntax.prototype.childCount = 0; - OmittedExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - throw Errors.invalidOperation(); - } - - export var TemplateExpressionSyntax: TemplateExpressionConstructor = function (data: number, templateStartToken: ISyntaxToken, templateClauses: TemplateClauseSyntax[]) { - if (data) { this.__data = data; } - this.templateStartToken = templateStartToken, - this.templateClauses = templateClauses; - }; - TemplateExpressionSyntax.prototype.kind = SyntaxKind.TemplateExpression; - TemplateExpressionSyntax.prototype.childCount = 2; - TemplateExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.templateStartToken; - case 1: return this.templateClauses; - } - } - - export var TemplateAccessExpressionSyntax: TemplateAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, templateExpression: IPrimaryExpressionSyntax) { - if (data) { this.__data = data; } - this.expression = expression, - this.templateExpression = templateExpression; - }; - TemplateAccessExpressionSyntax.prototype.kind = SyntaxKind.TemplateAccessExpression; - TemplateAccessExpressionSyntax.prototype.childCount = 2; - TemplateAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.templateExpression; - } - } - - export var YieldExpressionSyntax: YieldExpressionConstructor = function (data: number, yieldKeyword: ISyntaxToken, asterixToken: ISyntaxToken, expression: IExpressionSyntax) { - if (data) { this.__data = data; } - this.yieldKeyword = yieldKeyword, - this.asterixToken = asterixToken, - this.expression = expression; - }; - YieldExpressionSyntax.prototype.kind = SyntaxKind.YieldExpression; - YieldExpressionSyntax.prototype.childCount = 3; - YieldExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.yieldKeyword; - case 1: return this.asterixToken; - case 2: return this.expression; - } - } - - export var AwaitExpressionSyntax: AwaitExpressionConstructor = function (data: number, awaitKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - if (data) { this.__data = data; } - this.awaitKeyword = awaitKeyword, - this.expression = expression; - }; - AwaitExpressionSyntax.prototype.kind = SyntaxKind.AwaitExpression; - AwaitExpressionSyntax.prototype.childCount = 2; - AwaitExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.awaitKeyword; - case 1: return this.expression; - } - } - - export var VariableDeclarationSyntax: VariableDeclarationConstructor = function (data: number, varConstOrLetKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList) { - if (data) { this.__data = data; } - this.varConstOrLetKeyword = varConstOrLetKeyword, - this.variableDeclarators = variableDeclarators; - }; - VariableDeclarationSyntax.prototype.kind = SyntaxKind.VariableDeclaration; - VariableDeclarationSyntax.prototype.childCount = 2; - VariableDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.varConstOrLetKeyword; - case 1: return this.variableDeclarators; - } - } - - export var VariableDeclaratorSyntax: VariableDeclaratorConstructor = function (data: number, propertyName: IPropertyNameSyntax, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { - if (data) { this.__data = data; } - this.propertyName = propertyName, - this.typeAnnotation = typeAnnotation, - this.equalsValueClause = equalsValueClause; - }; - VariableDeclaratorSyntax.prototype.kind = SyntaxKind.VariableDeclarator; - VariableDeclaratorSyntax.prototype.childCount = 3; - VariableDeclaratorSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.propertyName; - case 1: return this.typeAnnotation; - case 2: return this.equalsValueClause; - } - } - - export var ArgumentListSyntax: ArgumentListConstructor = function (data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, _arguments: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.typeArgumentList = typeArgumentList, - this.openParenToken = openParenToken, - this.arguments = _arguments, - this.closeParenToken = closeParenToken; - }; - ArgumentListSyntax.prototype.kind = SyntaxKind.ArgumentList; - ArgumentListSyntax.prototype.childCount = 4; - ArgumentListSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.typeArgumentList; - case 1: return this.openParenToken; - case 2: return this.arguments; - case 3: return this.closeParenToken; - } - } - - export var ParameterListSyntax: ParameterListConstructor = function (data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openParenToken = openParenToken, - this.parameters = parameters, - this.closeParenToken = closeParenToken; - }; - ParameterListSyntax.prototype.kind = SyntaxKind.ParameterList; - ParameterListSyntax.prototype.childCount = 3; - ParameterListSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openParenToken; - case 1: return this.parameters; - case 2: return this.closeParenToken; - } - } - - export var TypeArgumentListSyntax: TypeArgumentListConstructor = function (data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.lessThanToken = lessThanToken, - this.typeArguments = typeArguments, - this.greaterThanToken = greaterThanToken; - }; - TypeArgumentListSyntax.prototype.kind = SyntaxKind.TypeArgumentList; - TypeArgumentListSyntax.prototype.childCount = 3; - TypeArgumentListSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.lessThanToken; - case 1: return this.typeArguments; - case 2: return this.greaterThanToken; - } - } - - export var TypeParameterListSyntax: TypeParameterListConstructor = function (data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.lessThanToken = lessThanToken, - this.typeParameters = typeParameters, - this.greaterThanToken = greaterThanToken; - }; - TypeParameterListSyntax.prototype.kind = SyntaxKind.TypeParameterList; - TypeParameterListSyntax.prototype.childCount = 3; - TypeParameterListSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.lessThanToken; - case 1: return this.typeParameters; - case 2: return this.greaterThanToken; - } - } - - export var HeritageClauseSyntax: HeritageClauseConstructor = function (data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList) { - if (data) { this.__data = data; } - this.extendsOrImplementsKeyword = extendsOrImplementsKeyword, - this.typeNames = typeNames; - }; - HeritageClauseSyntax.prototype.kind = SyntaxKind.HeritageClause; - HeritageClauseSyntax.prototype.childCount = 2; - HeritageClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.extendsOrImplementsKeyword; - case 1: return this.typeNames; - } - } - - export var EqualsValueClauseSyntax: EqualsValueClauseConstructor = function (data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax) { - if (data) { this.__data = data; } - this.equalsToken = equalsToken, - this.value = value; - }; - EqualsValueClauseSyntax.prototype.kind = SyntaxKind.EqualsValueClause; - EqualsValueClauseSyntax.prototype.childCount = 2; - EqualsValueClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.equalsToken; - case 1: return this.value; - } - } - - export var CaseSwitchClauseSyntax: CaseSwitchClauseConstructor = function (data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { - if (data) { this.__data = data; } - this.caseKeyword = caseKeyword, - this.expression = expression, - this.colonToken = colonToken, - this.statements = statements; - }; - CaseSwitchClauseSyntax.prototype.kind = SyntaxKind.CaseSwitchClause; - CaseSwitchClauseSyntax.prototype.childCount = 4; - CaseSwitchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.caseKeyword; - case 1: return this.expression; - case 2: return this.colonToken; - case 3: return this.statements; - } - } - - export var DefaultSwitchClauseSyntax: DefaultSwitchClauseConstructor = function (data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { - if (data) { this.__data = data; } - this.defaultKeyword = defaultKeyword, - this.colonToken = colonToken, - this.statements = statements; - }; - DefaultSwitchClauseSyntax.prototype.kind = SyntaxKind.DefaultSwitchClause; - DefaultSwitchClauseSyntax.prototype.childCount = 3; - DefaultSwitchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.defaultKeyword; - case 1: return this.colonToken; - case 2: return this.statements; - } - } - - export var ElseClauseSyntax: ElseClauseConstructor = function (data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax) { - if (data) { this.__data = data; } - this.elseKeyword = elseKeyword, - this.statement = statement; - }; - ElseClauseSyntax.prototype.kind = SyntaxKind.ElseClause; - ElseClauseSyntax.prototype.childCount = 2; - ElseClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.elseKeyword; - case 1: return this.statement; - } - } - - export var CatchClauseSyntax: CatchClauseConstructor = function (data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax) { - if (data) { this.__data = data; } - this.catchKeyword = catchKeyword, - this.openParenToken = openParenToken, - this.identifier = identifier, - this.typeAnnotation = typeAnnotation, - this.closeParenToken = closeParenToken, - this.block = block; - }; - CatchClauseSyntax.prototype.kind = SyntaxKind.CatchClause; - CatchClauseSyntax.prototype.childCount = 6; - CatchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.catchKeyword; - case 1: return this.openParenToken; - case 2: return this.identifier; - case 3: return this.typeAnnotation; - case 4: return this.closeParenToken; - case 5: return this.block; - } - } - - export var FinallyClauseSyntax: FinallyClauseConstructor = function (data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax) { - if (data) { this.__data = data; } - this.finallyKeyword = finallyKeyword, - this.block = block; - }; - FinallyClauseSyntax.prototype.kind = SyntaxKind.FinallyClause; - FinallyClauseSyntax.prototype.childCount = 2; - FinallyClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.finallyKeyword; - case 1: return this.block; - } - } - - export var TemplateClauseSyntax: TemplateClauseConstructor = function (data: number, expression: IExpressionSyntax, templateMiddleOrEndToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.expression = expression, - this.templateMiddleOrEndToken = templateMiddleOrEndToken; - }; - TemplateClauseSyntax.prototype.kind = SyntaxKind.TemplateClause; - TemplateClauseSyntax.prototype.childCount = 2; - TemplateClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.expression; - case 1: return this.templateMiddleOrEndToken; - } - } - - export var TypeParameterSyntax: TypeParameterConstructor = function (data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax) { - if (data) { this.__data = data; } - this.identifier = identifier, - this.constraint = constraint; - }; - TypeParameterSyntax.prototype.kind = SyntaxKind.TypeParameter; - TypeParameterSyntax.prototype.childCount = 2; - TypeParameterSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.identifier; - case 1: return this.constraint; - } - } - - export var ConstraintSyntax: ConstraintConstructor = function (data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken) { - if (data) { this.__data = data; } - this.extendsKeyword = extendsKeyword, - this.typeOrExpression = typeOrExpression; - }; - ConstraintSyntax.prototype.kind = SyntaxKind.Constraint; - ConstraintSyntax.prototype.childCount = 2; - ConstraintSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.extendsKeyword; - case 1: return this.typeOrExpression; - } - } - - export var ParameterSyntax: ParameterConstructor = function (data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { - if (data) { this.__data = data; } - this.dotDotDotToken = dotDotDotToken, - this.modifiers = modifiers, - this.identifier = identifier, - this.questionToken = questionToken, - this.typeAnnotation = typeAnnotation, - this.equalsValueClause = equalsValueClause; - }; - ParameterSyntax.prototype.kind = SyntaxKind.Parameter; - ParameterSyntax.prototype.childCount = 6; - ParameterSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.dotDotDotToken; - case 1: return this.modifiers; - case 2: return this.identifier; - case 3: return this.questionToken; - case 4: return this.typeAnnotation; - case 5: return this.equalsValueClause; - } - } - - export var EnumElementSyntax: EnumElementConstructor = function (data: number, propertyName: IPropertyNameSyntax, equalsValueClause: EqualsValueClauseSyntax) { - if (data) { this.__data = data; } - this.propertyName = propertyName, - this.equalsValueClause = equalsValueClause; - }; - EnumElementSyntax.prototype.kind = SyntaxKind.EnumElement; - EnumElementSyntax.prototype.childCount = 2; - EnumElementSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.propertyName; - case 1: return this.equalsValueClause; - } - } - - export var TypeAnnotationSyntax: TypeAnnotationConstructor = function (data: number, colonToken: ISyntaxToken, type: ITypeSyntax) { - if (data) { this.__data = data; } - this.colonToken = colonToken, - this.type = type; - }; - TypeAnnotationSyntax.prototype.kind = SyntaxKind.TypeAnnotation; - TypeAnnotationSyntax.prototype.childCount = 2; - TypeAnnotationSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.colonToken; - case 1: return this.type; - } - } - - export var ExpressionBody: ExpressionBodyConstructor = function (data: number, equalsGreaterThanToken: ISyntaxToken, expression: IExpressionSyntax) { - if (data) { this.__data = data; } - this.equalsGreaterThanToken = equalsGreaterThanToken, - this.expression = expression; - }; - ExpressionBody.prototype.kind = SyntaxKind.ExpressionBody; - ExpressionBody.prototype.childCount = 2; - ExpressionBody.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.equalsGreaterThanToken; - case 1: return this.expression; - } - } - - export var ComputedPropertyNameSyntax: ComputedPropertyNameConstructor = function (data: number, openBracketToken: ISyntaxToken, expression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.openBracketToken = openBracketToken, - this.expression = expression, - this.closeBracketToken = closeBracketToken; - }; - ComputedPropertyNameSyntax.prototype.kind = SyntaxKind.ComputedPropertyName; - ComputedPropertyNameSyntax.prototype.childCount = 3; - ComputedPropertyNameSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.openBracketToken; - case 1: return this.expression; - case 2: return this.closeBracketToken; - } - } - - export var PropertyAssignmentSyntax: PropertyAssignmentConstructor = function (data: number, propertyName: IPropertyNameSyntax, colonToken: ISyntaxToken, expression: IExpressionSyntax) { - if (data) { this.__data = data; } - this.propertyName = propertyName, - this.colonToken = colonToken, - this.expression = expression; - }; - PropertyAssignmentSyntax.prototype.kind = SyntaxKind.PropertyAssignment; - PropertyAssignmentSyntax.prototype.childCount = 3; - PropertyAssignmentSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.propertyName; - case 1: return this.colonToken; - case 2: return this.expression; - } - } - - export var TypeAliasSyntax: TypeAliasConstructor = function (data: number, modifiers: ISyntaxToken[], typeKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, type: ITypeSyntax, semicolonToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.modifiers = modifiers, - this.typeKeyword = typeKeyword, - this.identifier = identifier, - this.equalsToken = equalsToken, - this.type = type, - this.semicolonToken = semicolonToken; - }; - TypeAliasSyntax.prototype.kind = SyntaxKind.TypeAlias; - TypeAliasSyntax.prototype.childCount = 6; - TypeAliasSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.modifiers; - case 1: return this.typeKeyword; - case 2: return this.identifier; - case 3: return this.equalsToken; - case 4: return this.type; - case 5: return this.semicolonToken; - } - } - - export var ExternalModuleReferenceSyntax: ExternalModuleReferenceConstructor = function (data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { - if (data) { this.__data = data; } - this.requireKeyword = requireKeyword, - this.openParenToken = openParenToken, - this.expression = expression, - this.closeParenToken = closeParenToken; - }; - ExternalModuleReferenceSyntax.prototype.kind = SyntaxKind.ExternalModuleReference; - ExternalModuleReferenceSyntax.prototype.childCount = 4; - ExternalModuleReferenceSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.requireKeyword; - case 1: return this.openParenToken; - case 2: return this.expression; - case 3: return this.closeParenToken; - } - } - - export var ModuleNameModuleReferenceSyntax: ModuleNameModuleReferenceConstructor = function (data: number, moduleName: INameSyntax) { - if (data) { this.__data = data; } - this.moduleName = moduleName; - }; - ModuleNameModuleReferenceSyntax.prototype.kind = SyntaxKind.ModuleNameModuleReference; - ModuleNameModuleReferenceSyntax.prototype.childCount = 1; - ModuleNameModuleReferenceSyntax.prototype.childAt = function (index: number): ISyntaxElement { - switch (index) { - case 0: return this.moduleName; - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxNodes.interfaces.generated.ts b/src/services/syntax/syntaxNodes.interfaces.generated.ts deleted file mode 100644 index 23fe6c40f56..00000000000 --- a/src/services/syntax/syntaxNodes.interfaces.generated.ts +++ /dev/null @@ -1,495 +0,0 @@ -/// - -module TypeScript { - export interface SourceUnitSyntax extends ISyntaxNode { - syntaxTree: SyntaxTree; - moduleElements: IModuleElementSyntax[]; - endOfFileToken: ISyntaxToken; - } - export interface QualifiedNameSyntax extends ISyntaxNode, INameSyntax { - left: INameSyntax; - dotToken: ISyntaxToken; - right: ISyntaxToken; - } - export interface ObjectTypeSyntax extends ISyntaxNode, ITypeSyntax { - openBraceToken: ISyntaxToken; - typeMembers: ISeparatedSyntaxList; - closeBraceToken: ISyntaxToken; - } - export interface FunctionTypeSyntax extends ISyntaxNode, ITypeSyntax { - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - equalsGreaterThanToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface ArrayTypeSyntax extends ISyntaxNode, ITypeSyntax { - type: ITypeSyntax; - openBracketToken: ISyntaxToken; - closeBracketToken: ISyntaxToken; - } - export interface ConstructorTypeSyntax extends ISyntaxNode, ITypeSyntax { - newKeyword: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - equalsGreaterThanToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface GenericTypeSyntax extends ISyntaxNode, ITypeSyntax { - name: INameSyntax; - typeArgumentList: TypeArgumentListSyntax; - } - export interface TypeQuerySyntax extends ISyntaxNode, ITypeSyntax { - typeOfKeyword: ISyntaxToken; - name: INameSyntax; - } - export interface TupleTypeSyntax extends ISyntaxNode, ITypeSyntax { - openBracketToken: ISyntaxToken; - types: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - } - export interface UnionTypeSyntax extends ISyntaxNode, ITypeSyntax { - left: ITypeSyntax; - barToken: ISyntaxToken; - right: ITypeSyntax; - } - export interface ParenthesizedTypeSyntax extends ISyntaxNode, ITypeSyntax { - openParenToken: ISyntaxToken; - type: ITypeSyntax; - closeParenToken: ISyntaxToken; - } - export interface InterfaceDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - interfaceKeyword: ISyntaxToken; - identifier: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - heritageClauses: HeritageClauseSyntax[]; - body: ObjectTypeSyntax; - } - export interface FunctionDeclarationSyntax extends ISyntaxNode, IStatementSyntax { - modifiers: ISyntaxToken[]; - functionKeyword: ISyntaxToken; - identifier: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - semicolonToken: ISyntaxToken; - } - export interface ModuleDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - moduleKeyword: ISyntaxToken; - name: INameSyntax; - stringLiteral: ISyntaxToken; - openBraceToken: ISyntaxToken; - moduleElements: IModuleElementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface ClassDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - classKeyword: ISyntaxToken; - identifier: ISyntaxToken; - typeParameterList: TypeParameterListSyntax; - heritageClauses: HeritageClauseSyntax[]; - openBraceToken: ISyntaxToken; - classElements: IClassElementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface EnumDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - enumKeyword: ISyntaxToken; - identifier: ISyntaxToken; - openBraceToken: ISyntaxToken; - enumElements: ISeparatedSyntaxList; - closeBraceToken: ISyntaxToken; - } - export interface ImportDeclarationSyntax extends ISyntaxNode, IModuleElementSyntax { - modifiers: ISyntaxToken[]; - importKeyword: ISyntaxToken; - identifier: ISyntaxToken; - equalsToken: ISyntaxToken; - moduleReference: IModuleReferenceSyntax; - semicolonToken: ISyntaxToken; - } - export interface ExportAssignmentSyntax extends ISyntaxNode, IModuleElementSyntax { - exportKeyword: ISyntaxToken; - equalsToken: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface MemberFunctionDeclarationSyntax extends ISyntaxNode, IMemberDeclarationSyntax { - modifiers: ISyntaxToken[]; - propertyName: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - semicolonToken: ISyntaxToken; - } - export interface MemberVariableDeclarationSyntax extends ISyntaxNode, IMemberDeclarationSyntax { - modifiers: ISyntaxToken[]; - variableDeclarator: VariableDeclaratorSyntax; - semicolonToken: ISyntaxToken; - } - export interface ConstructorDeclarationSyntax extends ISyntaxNode, IClassElementSyntax { - modifiers: ISyntaxToken[]; - constructorKeyword: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - semicolonToken: ISyntaxToken; - } - export interface IndexMemberDeclarationSyntax extends ISyntaxNode, IClassElementSyntax { - modifiers: ISyntaxToken[]; - indexSignature: IndexSignatureSyntax; - semicolonToken: ISyntaxToken; - } - export interface GetAccessorSyntax extends ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax { - modifiers: ISyntaxToken[]; - getKeyword: ISyntaxToken; - propertyName: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - } - export interface SetAccessorSyntax extends ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax { - modifiers: ISyntaxToken[]; - setKeyword: ISyntaxToken; - propertyName: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - } - export interface PropertySignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - propertyName: ISyntaxToken; - questionToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - } - export interface CallSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - typeParameterList: TypeParameterListSyntax; - parameterList: ParameterListSyntax; - typeAnnotation: TypeAnnotationSyntax; - } - export interface ConstructSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - newKeyword: ISyntaxToken; - callSignature: CallSignatureSyntax; - } - export interface IndexSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - openBracketToken: ISyntaxToken; - parameters: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - } - export interface MethodSignatureSyntax extends ISyntaxNode, ITypeMemberSyntax { - propertyName: ISyntaxToken; - questionToken: ISyntaxToken; - callSignature: CallSignatureSyntax; - } - export interface BlockSyntax extends ISyntaxNode, IStatementSyntax { - openBraceToken: ISyntaxToken; - statements: IStatementSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface IfStatementSyntax extends ISyntaxNode, IStatementSyntax { - ifKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - elseClause: ElseClauseSyntax; - } - export interface VariableStatementSyntax extends ISyntaxNode, IStatementSyntax { - modifiers: ISyntaxToken[]; - variableDeclaration: VariableDeclarationSyntax; - semicolonToken: ISyntaxToken; - } - export interface ExpressionStatementSyntax extends ISyntaxNode, IStatementSyntax { - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface ReturnStatementSyntax extends ISyntaxNode, IStatementSyntax { - returnKeyword: ISyntaxToken; - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface SwitchStatementSyntax extends ISyntaxNode, IStatementSyntax { - switchKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - openBraceToken: ISyntaxToken; - switchClauses: ISwitchClauseSyntax[]; - closeBraceToken: ISyntaxToken; - } - export interface BreakStatementSyntax extends ISyntaxNode, IStatementSyntax { - breakKeyword: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface ContinueStatementSyntax extends ISyntaxNode, IStatementSyntax { - continueKeyword: ISyntaxToken; - identifier: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface ForStatementSyntax extends ISyntaxNode, IStatementSyntax { - forKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - variableDeclaration: VariableDeclarationSyntax; - initializer: IExpressionSyntax; - firstSemicolonToken: ISyntaxToken; - condition: IExpressionSyntax; - secondSemicolonToken: ISyntaxToken; - incrementor: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface ForInStatementSyntax extends ISyntaxNode, IStatementSyntax { - forKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - variableDeclaration: VariableDeclarationSyntax; - left: IExpressionSyntax; - inKeyword: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface EmptyStatementSyntax extends ISyntaxNode, IStatementSyntax { - semicolonToken: ISyntaxToken; - } - export interface ThrowStatementSyntax extends ISyntaxNode, IStatementSyntax { - throwKeyword: ISyntaxToken; - expression: IExpressionSyntax; - semicolonToken: ISyntaxToken; - } - export interface WhileStatementSyntax extends ISyntaxNode, IStatementSyntax { - whileKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface TryStatementSyntax extends ISyntaxNode, IStatementSyntax { - tryKeyword: ISyntaxToken; - block: BlockSyntax; - catchClause: CatchClauseSyntax; - finallyClause: FinallyClauseSyntax; - } - export interface LabeledStatementSyntax extends ISyntaxNode, IStatementSyntax { - identifier: ISyntaxToken; - colonToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface DoStatementSyntax extends ISyntaxNode, IStatementSyntax { - doKeyword: ISyntaxToken; - statement: IStatementSyntax; - whileKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface DebuggerStatementSyntax extends ISyntaxNode, IStatementSyntax { - debuggerKeyword: ISyntaxToken; - semicolonToken: ISyntaxToken; - } - export interface WithStatementSyntax extends ISyntaxNode, IStatementSyntax { - withKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - condition: IExpressionSyntax; - closeParenToken: ISyntaxToken; - statement: IStatementSyntax; - } - export interface PrefixUnaryExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - operatorToken: ISyntaxToken; - operand: IUnaryExpressionSyntax; - } - export interface DeleteExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - deleteKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface TypeOfExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - typeOfKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface VoidExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - voidKeyword: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface ConditionalExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - condition: IExpressionSyntax; - questionToken: ISyntaxToken; - whenTrue: IExpressionSyntax; - colonToken: ISyntaxToken; - whenFalse: IExpressionSyntax; - } - export interface BinaryExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - left: IExpressionSyntax; - operatorToken: ISyntaxToken; - right: IExpressionSyntax; - } - export interface PostfixUnaryExpressionSyntax extends ISyntaxNode, IPostfixExpressionSyntax { - operand: ILeftHandSideExpressionSyntax; - operatorToken: ISyntaxToken; - } - export interface MemberAccessExpressionSyntax extends ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - dotToken: ISyntaxToken; - name: ISyntaxToken; - } - export interface InvocationExpressionSyntax extends ISyntaxNode, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - argumentList: ArgumentListSyntax; - } - export interface ArrayLiteralExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openBracketToken: ISyntaxToken; - expressions: ISeparatedSyntaxList; - closeBracketToken: ISyntaxToken; - } - export interface ObjectLiteralExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openBraceToken: ISyntaxToken; - propertyAssignments: ISeparatedSyntaxList; - closeBraceToken: ISyntaxToken; - } - export interface ObjectCreationExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - newKeyword: ISyntaxToken; - expression: IMemberExpressionSyntax; - argumentList: ArgumentListSyntax; - } - export interface ParenthesizedExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - openParenToken: ISyntaxToken; - expression: IExpressionSyntax; - closeParenToken: ISyntaxToken; - } - export interface ParenthesizedArrowFunctionExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - callSignature: CallSignatureSyntax; - equalsGreaterThanToken: ISyntaxToken; - block: BlockSyntax; - expression: IExpressionSyntax; - } - export interface SimpleArrowFunctionExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - parameter: ParameterSyntax; - equalsGreaterThanToken: ISyntaxToken; - block: BlockSyntax; - expression: IExpressionSyntax; - } - export interface CastExpressionSyntax extends ISyntaxNode, IUnaryExpressionSyntax { - lessThanToken: ISyntaxToken; - type: ITypeSyntax; - greaterThanToken: ISyntaxToken; - expression: IUnaryExpressionSyntax; - } - export interface ElementAccessExpressionSyntax extends ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { - expression: ILeftHandSideExpressionSyntax; - openBracketToken: ISyntaxToken; - argumentExpression: IExpressionSyntax; - closeBracketToken: ISyntaxToken; - } - export interface FunctionExpressionSyntax extends ISyntaxNode, IPrimaryExpressionSyntax { - functionKeyword: ISyntaxToken; - identifier: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - } - export interface OmittedExpressionSyntax extends ISyntaxNode, IExpressionSyntax { - } - export interface VariableDeclarationSyntax extends ISyntaxNode { - varKeyword: ISyntaxToken; - variableDeclarators: ISeparatedSyntaxList; - } - export interface VariableDeclaratorSyntax extends ISyntaxNode { - propertyName: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface ArgumentListSyntax extends ISyntaxNode { - typeArgumentList: TypeArgumentListSyntax; - openParenToken: ISyntaxToken; - arguments: ISeparatedSyntaxList; - closeParenToken: ISyntaxToken; - } - export interface ParameterListSyntax extends ISyntaxNode { - openParenToken: ISyntaxToken; - parameters: ISeparatedSyntaxList; - closeParenToken: ISyntaxToken; - } - export interface TypeArgumentListSyntax extends ISyntaxNode { - lessThanToken: ISyntaxToken; - typeArguments: ISeparatedSyntaxList; - greaterThanToken: ISyntaxToken; - } - export interface TypeParameterListSyntax extends ISyntaxNode { - lessThanToken: ISyntaxToken; - typeParameters: ISeparatedSyntaxList; - greaterThanToken: ISyntaxToken; - } - export interface HeritageClauseSyntax extends ISyntaxNode { - extendsOrImplementsKeyword: ISyntaxToken; - typeNames: ISeparatedSyntaxList; - } - export interface EqualsValueClauseSyntax extends ISyntaxNode { - equalsToken: ISyntaxToken; - value: IExpressionSyntax; - } - export interface CaseSwitchClauseSyntax extends ISyntaxNode, ISwitchClauseSyntax { - caseKeyword: ISyntaxToken; - expression: IExpressionSyntax; - colonToken: ISyntaxToken; - statements: IStatementSyntax[]; - } - export interface DefaultSwitchClauseSyntax extends ISyntaxNode, ISwitchClauseSyntax { - defaultKeyword: ISyntaxToken; - colonToken: ISyntaxToken; - statements: IStatementSyntax[]; - } - export interface ElseClauseSyntax extends ISyntaxNode { - elseKeyword: ISyntaxToken; - statement: IStatementSyntax; - } - export interface CatchClauseSyntax extends ISyntaxNode { - catchKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - identifier: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - closeParenToken: ISyntaxToken; - block: BlockSyntax; - } - export interface FinallyClauseSyntax extends ISyntaxNode { - finallyKeyword: ISyntaxToken; - block: BlockSyntax; - } - export interface TypeParameterSyntax extends ISyntaxNode { - identifier: ISyntaxToken; - constraint: ConstraintSyntax; - } - export interface ConstraintSyntax extends ISyntaxNode { - extendsKeyword: ISyntaxToken; - typeOrExpression: ISyntaxNodeOrToken; - } - export interface SimplePropertyAssignmentSyntax extends ISyntaxNode, IPropertyAssignmentSyntax { - propertyName: ISyntaxToken; - colonToken: ISyntaxToken; - expression: IExpressionSyntax; - } - export interface FunctionPropertyAssignmentSyntax extends ISyntaxNode, IPropertyAssignmentSyntax { - propertyName: ISyntaxToken; - callSignature: CallSignatureSyntax; - block: BlockSyntax; - } - export interface ParameterSyntax extends ISyntaxNode { - dotDotDotToken: ISyntaxToken; - modifiers: ISyntaxToken[]; - identifier: ISyntaxToken; - questionToken: ISyntaxToken; - typeAnnotation: TypeAnnotationSyntax; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface EnumElementSyntax extends ISyntaxNode { - propertyName: ISyntaxToken; - equalsValueClause: EqualsValueClauseSyntax; - } - export interface TypeAnnotationSyntax extends ISyntaxNode { - colonToken: ISyntaxToken; - type: ITypeSyntax; - } - export interface ExternalModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { - requireKeyword: ISyntaxToken; - openParenToken: ISyntaxToken; - stringLiteral: ISyntaxToken; - closeParenToken: ISyntaxToken; - } - export interface ModuleNameModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { - moduleName: INameSyntax; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxToken.ts b/src/services/syntax/syntaxToken.ts deleted file mode 100644 index 11fe28f45eb..00000000000 --- a/src/services/syntax/syntaxToken.ts +++ /dev/null @@ -1,470 +0,0 @@ -/// - -module TypeScript { - export interface ISyntaxToken extends ISyntaxNodeOrToken, INameSyntax, IPrimaryExpressionSyntax, IPropertyAssignmentSyntax, IPropertyNameSyntax { - // Adjusts the full start of this token. Should only be called by the parser. - setFullStart(fullStart: number): void; - - // The absolute start of this element, including the leading trivia. - fullStart(): number; - - // With of this element, including leading and trailing trivia. - fullWidth(): number; - - // Text for this token, not including leading or trailing trivia. - text(): string; - fullText(text?: ISimpleText): string; - - hasLeadingTrivia(): boolean; - hasLeadingNewLine(): boolean; - hasLeadingComment(): boolean; - hasLeadingSkippedToken(): boolean; - - leadingTrivia(text?: ISimpleText): ISyntaxTriviaList; - leadingTriviaWidth(text?: ISimpleText): number; - - // True if this was a keyword that the parser converted to an identifier. i.e. if you have - // x.public - // - // then 'public' will be converted to an identifier. These tokens should are parser - // generated and, as such, should not be returned when the incremental parser source - // hands out tokens. Note: If it is included in a node then *that* node may still - // be reusuable. i.e. if i have: private Foo() { x.public = 1; } - // - // Then that entire method node is reusable even if the 'public' identifier is not. - isKeywordConvertedToIdentifier(): boolean; - - // True if this element cannot be reused in incremental parsing. There are several situations - // in which an element can not be reused. They are: - // - // 1) The element contained skipped text. - // 2) The element contained zero width tokens. - // 3) The element contains tokens generated by the parser (like >> or a keyword -> identifier - // conversion). - // 4) The element contains a regex token somewhere under it. A regex token is either a - // regex itself (i.e. /foo/), or is a token which could start a regex (i.e. "/" or "/="). This - // data is used by the incremental parser to decide if a node can be reused. Due to the - // lookahead nature of regex tokens, a node containing a regex token cannot be reused. Normally, - // changes to text only affect the tokens directly intersected. However, because regex tokens - // have such unbounded lookahead (technically bounded at the end of a line, but htat's minor), - // we need to recheck them to see if they've changed due to the edit. For example, if you had: - // - // while (true) /3; return; - // - // And you changed it to: - // - // while (true) /3; return/; - // - // Then even though only the 'return' and ';' colons were touched, we'd want to rescan the '/' - // token which we would then realize was a regex. - isIncrementallyUnusable(): boolean; - - clone(): ISyntaxToken; - } -} - -module TypeScript { - export function tokenValue(token: ISyntaxToken): any { - if (token.fullWidth() === 0) { - return undefined; - } - - var kind = token.kind; - var text = token.text(); - - if (kind === SyntaxKind.IdentifierName) { - return massageEscapes(text); - } - - switch (kind) { - case SyntaxKind.TrueKeyword: - return true; - case SyntaxKind.FalseKeyword: - return false; - case SyntaxKind.NullKeyword: - return undefined; - } - - if (SyntaxFacts.isAnyKeyword(kind) || SyntaxFacts.isAnyPunctuation(kind)) { - return SyntaxFacts.getText(kind); - } - - if (kind === SyntaxKind.NumericLiteral) { - return IntegerUtilities.isHexInteger(text) ? parseInt(text, /*radix:*/ 16) : parseFloat(text); - } - else if (kind === SyntaxKind.StringLiteral) { - return (text.length > 1 && text.charCodeAt(text.length - 1) === text.charCodeAt(0)) - ? massageEscapes(text.substr(1, text.length - "''".length)) - : massageEscapes(text.substr(1)); - } - else if (kind === SyntaxKind.NoSubstitutionTemplateToken || kind === SyntaxKind.TemplateEndToken) { - // Both of these template types may be missing their closing backtick (if they were at - // the end of the file). Check to make sure it is there before grabbing the portion - // we're examining. - return (text.length > 1 && text.charCodeAt(text.length - 1) === CharacterCodes.backtick) - ? massageTemplate(text.substr(1, text.length - "``".length)) - : massageTemplate(text.substr(1)); - } - else if (kind === SyntaxKind.TemplateStartToken || kind === SyntaxKind.TemplateMiddleToken) { - // Both these tokens must have been properly ended. i.e. if it didn't end with a ${ - // then we would not have parsed a start or middle token out at all. So we don't - // need to check for an incomplete token. - return massageTemplate(text.substr(1, text.length - "`${".length)); - } - else if (kind === SyntaxKind.RegularExpressionLiteral) { - return regularExpressionValue(text); - } - else if (kind === SyntaxKind.EndOfFileToken || kind === SyntaxKind.ErrorToken) { - return undefined; - } - else { - throw Errors.invalidOperation(); - } - } - - export function tokenValueText(token: ISyntaxToken): string { - var value = tokenValue(token); - return value === undefined ? "" : massageDisallowedIdentifiers(value.toString()); - } - - function massageTemplate(text: string): string { - // First, convert all carriage-return newlines into line-feed newlines. This is due to: - // - // The TRV of LineTerminatorSequence :: is the code unit value 0x000A. - // ... - // The TRV of LineTerminatorSequence :: is the sequence consisting of the code unit value 0x000A. - text = text.replace("\r\n", "\n").replace("\r", "\n"); - - // Now remove any escape characters that may be in the string. - return massageEscapes(text); - } - - export function massageEscapes(text: string): string { - return text.indexOf("\\") >= 0 ? convertEscapes(text) : text; - } - - function regularExpressionValue(text: string): RegExp { - try { - var lastSlash = text.lastIndexOf("/"); - var body = text.substring(1, lastSlash); - var flags = text.substring(lastSlash + 1); - return new RegExp(body, flags); - } - catch (e) { - return undefined; - } - } - - function massageDisallowedIdentifiers(text: string): string { - // We routinely store the 'valueText' for a token as keys in dictionaries. However, as those - // dictionaries are usually just a javascript object, we run into issues when teh keys collide - // with certain predefined keys they depend on (like __proto__). To workaround this - // we ensure that the valueText of any token is not __proto__ but is instead ___proto__. - // - // We also prepend a _ to any identifier starting with two __ . That allows us to carve - // out the entire namespace of identifiers starting with __ for ourselves. - if (text.charCodeAt(0) === CharacterCodes._ && text.charCodeAt(1) === CharacterCodes._) { - return "_" + text; - } - - return text; - } - - var characterArray: number[] = []; - - function convertEscapes(text: string): string { - characterArray.length = 0; - var result = ""; - - for (var i = 0, n = text.length; i < n; i++) { - var ch = text.charCodeAt(i); - - if (ch === CharacterCodes.backslash) { - i++; - if (i < n) { - ch = text.charCodeAt(i); - switch (ch) { - case CharacterCodes._0: - characterArray.push(CharacterCodes.nullCharacter); - continue; - - case CharacterCodes.b: - characterArray.push(CharacterCodes.backspace); - continue; - - case CharacterCodes.f: - characterArray.push(CharacterCodes.formFeed); - continue; - - case CharacterCodes.n: - characterArray.push(CharacterCodes.lineFeed); - continue; - - case CharacterCodes.r: - characterArray.push(CharacterCodes.carriageReturn); - continue; - - case CharacterCodes.t: - characterArray.push(CharacterCodes.tab); - continue; - - case CharacterCodes.v: - characterArray.push(CharacterCodes.verticalTab); - continue; - - case CharacterCodes.x: - characterArray.push(hexValue(text, /*start:*/ i + 1, /*length:*/ 2)); - i += 2; - continue; - - case CharacterCodes.u: - characterArray.push(hexValue(text, /*start:*/ i + 1, /*length:*/ 4)); - i += 4; - continue; - - case CharacterCodes.carriageReturn: - var nextIndex = i + 1; - if (nextIndex < text.length && text.charCodeAt(nextIndex) === CharacterCodes.lineFeed) { - // Skip the entire \r\n sequence. - i++; - } - continue; - - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - // From ES5: LineContinuation is the empty character sequence. - continue; - - default: - // Any other character is ok as well. As per rule: - // EscapeSequence :: CharacterEscapeSequence - // CharacterEscapeSequence :: NonEscapeCharacter - // NonEscapeCharacter :: SourceCharacter but notEscapeCharacter or LineTerminator - // - // Intentional fall through - } - } - } - - characterArray.push(ch); - - if (i && !(i % 1024)) { - result = result.concat(String.fromCharCode.apply(undefined, characterArray)); - characterArray.length = 0; - } - } - - if (characterArray.length) { - result = result.concat(String.fromCharCode.apply(undefined, characterArray)); - } - - return result; - } - - function hexValue(text: string, start: number, length: number): number { - var intChar = 0; - for (var i = 0; i < length; i++) { - var ch2 = text.charCodeAt(start + i); - if (!CharacterInfo.isHexDigit(ch2)) { - break; - } - - intChar = (intChar << 4) + CharacterInfo.hexValue(ch2); - } - - return intChar; - } -} - -module TypeScript.Syntax { - export function realizeToken(token: ISyntaxToken, text: ISimpleText): ISyntaxToken { - return new RealizedToken(token.fullStart(), token.kind, token.isKeywordConvertedToIdentifier(), token.leadingTrivia(text), token.text()); - } - - export function convertKeywordToIdentifier(token: ISyntaxToken): ISyntaxToken { - return new ConvertedKeywordToken(token); - } - - export function withLeadingTrivia(token: ISyntaxToken, leadingTrivia: ISyntaxTriviaList, text: ISimpleText): ISyntaxToken { - return new RealizedToken(token.fullStart(), token.kind, token.isKeywordConvertedToIdentifier(), leadingTrivia, token.text()); - } - - export function emptyToken(kind: SyntaxKind, fullStart: number): ISyntaxToken { - return new EmptyToken(kind, fullStart); - } - - class EmptyToken implements ISyntaxToken { - public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; public _typeBrand: any; public _nameBrand: any; public _propertyAssignmentBrand: any; public _propertyNameBrand: any; - - public parent: ISyntaxElement; - public childCount: number; - - constructor(public kind: SyntaxKind, private _fullStart: number) { - Debug.assert(!isNaN(_fullStart)); - } - - public setFullStart(fullStart: number): void { - this._fullStart = fullStart; - } - - public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } - - public clone(): ISyntaxToken { - return new EmptyToken(this.kind, this._fullStart); - } - - // Empty tokens are never incrementally reusable. - public isIncrementallyUnusable() { return true; } - - public isKeywordConvertedToIdentifier() { - return false; - } - - public fullWidth() { return 0; } - public fullStart(): number { return this._fullStart; } - - public text() { return ""; } - public fullText(): string { return ""; } - - public hasLeadingTrivia() { return false; } - public hasLeadingNewLine() { return false; } - public hasLeadingComment() { return false; } - public hasLeadingSkippedToken() { return false; } - - public leadingTriviaWidth() { return 0; } - public leadingTrivia(): ISyntaxTriviaList { return Syntax.emptyTriviaList; } - } - EmptyToken.prototype.childCount = 0; - - class RealizedToken implements ISyntaxToken { - public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; public _typeBrand: any; public _nameBrand: any; public _propertyAssignmentBrand: any; public _propertyNameBrand: any; - - private _isKeywordConvertedToIdentifier: boolean; - private _leadingTrivia: ISyntaxTriviaList; - private _text: string; - - public parent: ISyntaxElement; - public childCount: number; - - constructor(private _fullStart: number, - public kind: SyntaxKind, - isKeywordConvertedToIdentifier: boolean, - leadingTrivia: ISyntaxTriviaList, - text: string) { - Debug.assert(!isNaN(_fullStart)); - this._isKeywordConvertedToIdentifier = isKeywordConvertedToIdentifier; - this._text = text; - - this._leadingTrivia = leadingTrivia.clone(); - - if (!this._leadingTrivia.isShared()) { - this._leadingTrivia.parent = this; - } - } - - public setFullStart(fullStart: number): void { - this._fullStart = fullStart; - } - - public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } - - public clone(): ISyntaxToken { - return new RealizedToken(this._fullStart, this.kind, this._isKeywordConvertedToIdentifier, this._leadingTrivia, this._text); - } - - // Realized tokens are created from the parser. They are *never* incrementally reusable. - public isIncrementallyUnusable() { return true; } - - public isKeywordConvertedToIdentifier() { - return this._isKeywordConvertedToIdentifier; - } - - public fullStart(): number { return this._fullStart; } - public fullWidth(): number { return this._leadingTrivia.fullWidth() + this._text.length; } - - public text(): string { return this._text; } - public fullText(): string { return this._leadingTrivia.fullText() + this.text(); } - - public hasLeadingTrivia(): boolean { return this._leadingTrivia.count() > 0; } - public hasLeadingNewLine(): boolean { return this._leadingTrivia.hasNewLine(); } - public hasLeadingComment(): boolean { return this._leadingTrivia.hasComment(); } - public hasLeadingSkippedToken(): boolean { return this._leadingTrivia.hasSkippedToken(); } - - public leadingTrivia(): ISyntaxTriviaList { return this._leadingTrivia; } - public leadingTriviaWidth(): number { return this._leadingTrivia.fullWidth(); } - } - RealizedToken.prototype.childCount = 0; - - class ConvertedKeywordToken implements ISyntaxToken { - public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; public _typeBrand: any; public _nameBrand: any; public _propertyAssignmentBrand: any; public _propertyNameBrand: any; - - public parent: ISyntaxElement; - public kind: SyntaxKind; - public childCount: number; - - constructor(private underlyingToken: ISyntaxToken) { - } - - public setFullStart(fullStart: number): void { - this.underlyingToken.setFullStart(fullStart); - } - - public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } - - public fullStart(): number { - return this.underlyingToken.fullStart(); - } - - public fullWidth(): number { - return this.underlyingToken.fullWidth(); - } - - public text(): string { - return this.underlyingToken.text(); - } - - private syntaxTreeText(text: ISimpleText) { - var result = text || syntaxTree(this).text; - Debug.assert(result); - return result; - } - - public fullText(text?: ISimpleText): string { - return this.underlyingToken.fullText(this.syntaxTreeText(text)); - } - - public hasLeadingTrivia(): boolean { return this.underlyingToken.hasLeadingTrivia(); } - public hasLeadingNewLine(): boolean { return this.underlyingToken.hasLeadingNewLine(); } - public hasLeadingComment(): boolean { return this.underlyingToken.hasLeadingComment(); } - public hasLeadingSkippedToken(): boolean { return this.underlyingToken.hasLeadingSkippedToken(); } - - public leadingTrivia(text?: ISimpleText): ISyntaxTriviaList { - var result = this.underlyingToken.leadingTrivia(this.syntaxTreeText(text)); - result.parent = this; - return result; - } - - public leadingTriviaWidth(text?: ISimpleText): number { - return this.underlyingToken.leadingTriviaWidth(this.syntaxTreeText(text)); - } - - public isKeywordConvertedToIdentifier(): boolean { - return true; - } - - public isIncrementallyUnusable(): boolean { - // We're incrementally unusable if our underlying token is unusable. - // For example, we may have: this.public \ - // In this case we will keyword converted to an identifier that is still unusable because - // it has a trailing skipped token. - return this.underlyingToken.isIncrementallyUnusable(); - } - - public clone(): ISyntaxToken { - return new ConvertedKeywordToken(this.underlyingToken); - } - } - ConvertedKeywordToken.prototype.kind = SyntaxKind.IdentifierName; - ConvertedKeywordToken.prototype.childCount = 0; -} \ No newline at end of file diff --git a/src/services/syntax/syntaxTree.ts b/src/services/syntax/syntaxTree.ts deleted file mode 100644 index 59462f5f670..00000000000 --- a/src/services/syntax/syntaxTree.ts +++ /dev/null @@ -1,1734 +0,0 @@ -/// - -module TypeScript { - export var syntaxDiagnosticsTime: number = 0; - - export class SyntaxTree { - private _sourceUnit: SourceUnitSyntax; - private _isDeclaration: boolean; - private _parserDiagnostics: Diagnostic[]; - private _allDiagnostics: Diagnostic[] = undefined; - private _fileName: string; - private _lineMap: LineMap; - private _languageVersion: ts.ScriptTarget; - - // Computed on demand. - private _amdDependencies: string[]; - private _isExternalModule: boolean; - - constructor(sourceUnit: SourceUnitSyntax, - isDeclaration: boolean, - diagnostics: Diagnostic[], - fileName: string, - public text: ISimpleText, - languageVersion: ts.ScriptTarget) { - this._sourceUnit = sourceUnit; - this._isDeclaration = isDeclaration; - this._parserDiagnostics = diagnostics; - this._fileName = fileName; - this._lineMap = text.lineMap(); - this._languageVersion = languageVersion; - - sourceUnit.syntaxTree = this; - } - - public sourceUnit(): SourceUnitSyntax { - return this._sourceUnit; - } - - public isDeclaration(): boolean { - return this._isDeclaration; - } - - private computeDiagnostics(): Diagnostic[] { - if (this._parserDiagnostics.length > 0) { - return this._parserDiagnostics; - } - - // No parser reported diagnostics. Check for any additional grammar diagnostics. - var diagnostics: Diagnostic[] = []; - visitNodeOrToken(new GrammarCheckerWalker(this, diagnostics), this.sourceUnit()); - - return diagnostics; - } - - public diagnostics(): Diagnostic[] { - if (!this._allDiagnostics) { - var start = new Date().getTime(); - this._allDiagnostics = this.computeDiagnostics(); - syntaxDiagnosticsTime += new Date().getTime() - start; - } - - return this._allDiagnostics; - } - - public fileName(): string { - return this._fileName; - } - - public lineMap(): LineMap { - return this._lineMap; - } - - public languageVersion(): ts.ScriptTarget { - return this._languageVersion; - } - - private getAmdDependency(comment: string): string { - var amdDependencyRegEx = /^\/\/\/\s* 0) { - var modifiers = parameter.modifiers; - - for (var i = 0, n = modifiers.length; i < n; i++) { - var modifier = modifiers[i]; - - if (this.checkParameterAccessibilityModifier(modifier, i)) { - return true; - } - } - } - - return false; - } - - private checkParameterAccessibilityModifier(modifier: ISyntaxToken, modifierIndex: number): boolean { - if (!SyntaxFacts.isAccessibilityModifier(modifier.kind)) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_cannot_appear_on_a_parameter, [modifier.text()]); - } - else { - if (modifierIndex > 0) { - return this.pushDiagnostic(modifier, DiagnosticCode.Accessibility_modifier_already_seen); - } - } - - return false; - } - - private checkForTrailingComma(list: ISyntaxNodeOrToken[]): boolean { - // If we have at least one child, and we have an even number of children, then that - // means we have an illegal trailing separator. - if (list.length === 0 || list.length % 2 === 1) { - return false; - } - - var child = list[list.length - 1]; - return this.pushDiagnostic(child, DiagnosticCode.Trailing_comma_not_allowed); - } - - private checkForAtLeastOneElement(list: ISyntaxNodeOrToken[], reportToken: ISyntaxToken, listKind: string): boolean { - if (childCount(list) > 0) { - return false; - } - - return this.pushDiagnostic(reportToken, DiagnosticCode._0_list_cannot_be_empty, [listKind]); - } - - public visitParameterList(node: ParameterListSyntax): void { - if (this.checkParameterListOrder(node) || - this.checkForTrailingComma(node.parameters)) { - - return; - } - - super.visitParameterList(node); - } - - public visitHeritageClause(node: HeritageClauseSyntax): void { - if (this.checkForTrailingComma(node.typeNames) || - this.checkForAtLeastOneElement(node.typeNames, node.extendsOrImplementsKeyword, SyntaxFacts.getText(node.extendsOrImplementsKeyword.kind))) { - return; - } - - super.visitHeritageClause(node); - } - - public visitArgumentList(node: ArgumentListSyntax): void { - if (this.checkForTrailingComma(node.arguments)) { - return; - } - - super.visitArgumentList(node); - } - - public visitVariableDeclaration(node: VariableDeclarationSyntax): void { - if (this.checkForAtLeastOneElement(node.variableDeclarators, node.varConstOrLetKeyword, getLocalizedText(DiagnosticCode.variable_declaration, undefined)) || - this.checkForTrailingComma(node.variableDeclarators)) { - return; - } - - super.visitVariableDeclaration(node); - } - - public visitTypeAlias(node: TypeAliasSyntax): void { - if (node.modifiers.length > 0) { - this.pushDiagnostic(node.modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here); - return; - } - - super.visitTypeAlias(node); - } - - public visitTypeArgumentList(node: TypeArgumentListSyntax): void { - if (this.checkForTrailingComma(node.typeArguments) || - this.checkForAtLeastOneElement(node.typeArguments, node.lessThanToken, getLocalizedText(DiagnosticCode.type_argument, undefined))) { - return; - } - - super.visitTypeArgumentList(node); - } - - public visitTupleType(node: TupleTypeSyntax): void { - if (this.checkForTrailingComma(node.types) || - this.checkForAtLeastOneElement(node.types, node.openBracketToken, getLocalizedText(DiagnosticCode.type, undefined))) { - return - } - - super.visitTupleType(node); - } - - public visitTypeParameterList(node: TypeParameterListSyntax): void { - if (this.checkForTrailingComma(node.typeParameters) || - this.checkForAtLeastOneElement(node.typeParameters, node.lessThanToken, getLocalizedText(DiagnosticCode.type_parameter, undefined))) { - return; - } - - super.visitTypeParameterList(node); - } - - private checkIndexSignatureParameter(node: IndexSignatureSyntax): boolean { - if (node.parameters.length !== 1) { - return this.pushDiagnostic(node.openBracketToken, DiagnosticCode.Index_signature_must_have_exactly_one_parameter); - } - - var parameter = nonSeparatorAt(node.parameters, 0); - - if (parameter.dotDotDotToken) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signatures_cannot_have_rest_parameters); - } - else if (parameter.modifiers.length > 0) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signature_parameter_cannot_have_modifiers); - } - else if (parameter.questionToken) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signature_parameter_cannot_have_a_question_mark); - } - else if (parameter.equalsValueClause) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signature_parameter_cannot_have_an_initializer); - } - else if (!parameter.typeAnnotation) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signature_parameter_must_have_a_type_annotation); - } - else if (parameter.typeAnnotation.type.kind !== SyntaxKind.StringKeyword && - parameter.typeAnnotation.type.kind !== SyntaxKind.NumberKeyword) { - return this.pushDiagnostic(parameter, DiagnosticCode.Index_signature_parameter_type_must_be_string_or_number); - } - - return false; - } - - private checkForCommaInsteadOfSemicolon(commaOrSemicolon: ISyntaxToken) { - if (commaOrSemicolon && commaOrSemicolon.kind === SyntaxKind.CommaToken) { - return this.pushDiagnostic(commaOrSemicolon, DiagnosticCode._0_expected, [SyntaxFacts.getText(SyntaxKind.SemicolonToken)]); - } - - return false; - } - - public visitIndexSignature(node: IndexSignatureSyntax): void { - if (this.checkIndexSignatureParameter(node) || - this.checkForCommaInsteadOfSemicolon(node.semicolonOrCommaToken) || - this.checkIndexSignatureModifiers(node)) { - return; - } - - if (!node.typeAnnotation) { - this.pushDiagnostic(node, DiagnosticCode.Index_signature_must_have_a_type_annotation); - return; - } - - super.visitIndexSignature(node); - } - - private checkClassDeclarationHeritageClauses(node: ClassDeclarationSyntax): boolean { - var seenExtendsClause = false; - var seenImplementsClause = false; - - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - Debug.assert(i <= 2); - var heritageClause = node.heritageClauses[i]; - - if (heritageClause.extendsOrImplementsKeyword.kind === SyntaxKind.ExtendsKeyword) { - if (seenExtendsClause) { - return this.pushDiagnostic(heritageClause, DiagnosticCode.extends_clause_already_seen); - } - - if (seenImplementsClause) { - return this.pushDiagnostic(heritageClause, DiagnosticCode.extends_clause_must_precede_implements_clause); - } - - if (nonSeparatorCount(heritageClause.typeNames) > 1) { - return this.pushDiagnostic(heritageClause, DiagnosticCode.Classes_can_only_extend_a_single_class); - } - - seenExtendsClause = true; - } - else { - Debug.assert(heritageClause.extendsOrImplementsKeyword.kind === SyntaxKind.ImplementsKeyword); - if (seenImplementsClause) { - return this.pushDiagnostic(heritageClause, DiagnosticCode.implements_clause_already_seen); - } - - seenImplementsClause = true; - } - } - - return false; - } - - private checkForDisallowedDeclareModifier(modifiers: ISyntaxToken[]): boolean { - if (this.inAmbientDeclaration) { - // If we're already in an ambient declaration, then 'declare' is not allowed. - var declareToken = SyntaxUtilities.getToken(modifiers, SyntaxKind.DeclareKeyword); - - if (declareToken) { - return this.pushDiagnostic(declareToken, DiagnosticCode.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); - } - } - - return false; - } - - private checkForRequiredDeclareModifier(moduleElement: IModuleElementSyntax, reportToken: ISyntaxToken, modifiers: ISyntaxToken[]): boolean { - if (!this.inAmbientDeclaration && this.syntaxTree.isDeclaration()) { - // We're at the top level in a declaration file, a 'declare' modifiers is required - // on most module elements. - if (!SyntaxUtilities.containsToken(modifiers, SyntaxKind.DeclareKeyword)) { - return this.pushDiagnostic(reportToken, DiagnosticCode.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file); - } - } - } - - public visitClassDeclaration(node: ClassDeclarationSyntax): void { - if (this.checkForDisallowedDeclareModifier(node.modifiers) || - this.checkForRequiredDeclareModifier(node, node.identifier, node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkClassDeclarationHeritageClauses(node) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = this.inAmbientDeclaration || this.syntaxTree.isDeclaration() || SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword); - super.visitClassDeclaration(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - private checkInterfaceDeclarationHeritageClauses(node: InterfaceDeclarationSyntax): boolean { - var seenExtendsClause = false; - - for (var i = 0, n = node.heritageClauses.length; i < n; i++) { - Debug.assert(i <= 1); - var heritageClause = node.heritageClauses[i]; - - if (heritageClause.extendsOrImplementsKeyword.kind === SyntaxKind.ExtendsKeyword) { - if (seenExtendsClause) { - return this.pushDiagnostic(heritageClause, DiagnosticCode.extends_clause_already_seen); - } - - seenExtendsClause = true; - } - else { - Debug.assert(heritageClause.extendsOrImplementsKeyword.kind === SyntaxKind.ImplementsKeyword); - return this.pushDiagnostic(heritageClause, DiagnosticCode.Interface_declaration_cannot_have_implements_clause); - } - } - - return false; - } - - private checkInterfaceModifiers(modifiers: ISyntaxToken[]): boolean { - for (var i = 0, n = modifiers.length; i < n; i++) { - var modifier = modifiers[i]; - if (modifier.kind === SyntaxKind.DeclareKeyword) { - return this.pushDiagnostic(modifier, DiagnosticCode.A_declare_modifier_cannot_be_used_with_an_interface_declaration); - } - } - - return false; - } - - public visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): void { - if (this.checkInterfaceModifiers(node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkInterfaceDeclarationHeritageClauses(node) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - super.visitInterfaceDeclaration(node); - } - - private checkClassElementModifiers(list: ISyntaxToken[]): boolean { - var seenAccessibilityModifier = false; - var seenStaticModifier = false; - var seenAsyncModifier = false; - - for (var i = 0, n = list.length; i < n; i++) { - var modifier = list[i]; - if (SyntaxFacts.isAccessibilityModifier(modifier.kind)) { - if (seenAccessibilityModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode.Accessibility_modifier_already_seen); - } - - if (seenStaticModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, [modifier.text(), list[i - 1].text()]); - } - - if (seenAsyncModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, [modifier.text(), SyntaxFacts.getText(SyntaxKind.AsyncKeyword)]); - } - - seenAccessibilityModifier = true; - } - else if (modifier.kind === SyntaxKind.StaticKeyword) { - if (seenStaticModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_already_seen, [modifier.text()]); - } - - if (seenAsyncModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, [modifier.text(), SyntaxFacts.getText(SyntaxKind.AsyncKeyword)]); - } - - seenStaticModifier = true; - } - else if (modifier.kind === SyntaxKind.AsyncKeyword) { - if (seenAsyncModifier) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_already_seen, [modifier.text()]); - } - - seenAsyncModifier = true; - } - else { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_cannot_appear_on_a_class_element, [modifier.text()]); - } - } - - return false; - } - - public visitPropertyDeclaration(node: PropertyDeclarationSyntax): void { - if (this.checkClassElementModifiers(node.modifiers) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - return; - } - - super.visitPropertyDeclaration(node); - } - - public visitMethodSignature(node: MethodSignatureSyntax): void { - if (this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForDisallowedComputedPropertyName(node.propertyName)) { - return; - } - - super.visitMethodSignature(node); - } - - public visitPropertySignature(node: PropertySignatureSyntax): void { - if (this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForDisallowedComputedPropertyName(node.propertyName) || - this.checkForCommaInsteadOfSemicolon(node.semicolonOrCommaToken)) { - return; - } - - super.visitPropertySignature(node); - } - - public visitMethodDeclaration(node: MethodDeclarationSyntax): void { - if (node.parent && node.parent.parent && - node.parent.kind === SyntaxKind.List && node.parent.parent.kind === SyntaxKind.ObjectLiteralExpression) { - - // Method in an object literal. - if (this.checkForSemicolonInsteadOfBlock(node, node.body) || - this.checkForDisallowedObjectLiteralMethod(node.modifiers)) { - return; - } - } - else { - // Method in a class literal. - if (this.checkClassElementModifiers(node.modifiers)) { - return; - } - } - - // Object literal or class method. - if (this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForAsyncGenerator(this.getAsyncModifier(node.modifiers), node.asterixToken)) { - - return; - } - - super.visitMethodDeclaration(node); - } - - private checkForDisallowedObjectLiteralMethod(modifiers: ISyntaxToken[]): boolean { - for (var i = 0, n = modifiers.length; i < n; i++) { - var modifier = modifiers[i]; - if (modifier.kind !== SyntaxKind.AsyncKeyword) { - return this.pushDiagnostic(modifier, DiagnosticCode.Modifiers_cannot_appear_here); - } - } - - return false; - } - - private checkGetAccessorParameter(node: GetAccessorSyntax): boolean { - if (node.callSignature.parameterList.parameters.length !== 0) { - return this.pushDiagnostic(node.propertyName, DiagnosticCode.get_accessor_cannot_have_parameters); - } - - return false; - } - - private checkIndexSignatureModifiers(node: IndexSignatureSyntax): boolean { - if (node.modifiers.length > 0) { - return this.pushDiagnostic(node.modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here); - } - - return false; - } - - private checkEcmaScriptVersionIsAtLeast(reportToken: ISyntaxToken, languageVersion: ts.ScriptTarget, diagnosticKey: string): boolean { - if (this.syntaxTree.languageVersion() < languageVersion) { - return this.pushDiagnostic(reportToken, diagnosticKey); - } - - return false; - } - - public visitObjectLiteralExpression(node: ObjectLiteralExpressionSyntax): void { - var savedInObjectLiteralExpression = this.inObjectLiteralExpression; - this.inObjectLiteralExpression = true; - super.visitObjectLiteralExpression(node); - this.inObjectLiteralExpression = savedInObjectLiteralExpression; - } - - public visitGetAccessor(node: GetAccessorSyntax): void { - if (this.checkForAccessorDeclarationInAmbientContext(node) || - this.checkEcmaScriptVersionIsAtLeast(node.getKeyword, ts.ScriptTarget.ES5, DiagnosticCode.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher) || - this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) || - this.checkClassElementModifiers(node.modifiers) || - this.checkForDisallowedAccessorTypeParameters(node.callSignature) || - this.checkGetAccessorParameter(node) || - this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForSemicolonInsteadOfBlock(node, node.body) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - return; - } - - super.visitGetAccessor(node); - } - - private checkForSemicolonInsteadOfBlock(parent: ISyntaxNode, node: BlockSyntax | ExpressionBody | ISyntaxToken): boolean { - if (node === undefined) { - return this.pushDiagnosticAt(fullEnd(parent), 0, DiagnosticCode._0_expected, ["{"]); - } - else if (node.kind === SyntaxKind.SemicolonToken) { - return this.pushDiagnostic(node, DiagnosticCode._0_expected, ["{"]); - } - - return false; - } - - private checkForDisallowedSetAccessorTypeAnnotation(accessor: SetAccessorSyntax): boolean { - if (accessor.callSignature.typeAnnotation) { - return this.pushDiagnostic(accessor.callSignature.typeAnnotation, DiagnosticCode.Type_annotation_cannot_appear_on_a_set_accessor); - } - - return false; - } - - private checkForDisallowedAccessorTypeParameters(callSignature: CallSignatureSyntax): boolean { - if (callSignature.typeParameterList) { - return this.pushDiagnostic(callSignature.typeParameterList, DiagnosticCode.Type_parameters_cannot_appear_on_an_accessor); - } - - return false; - } - - private checkForAccessorDeclarationInAmbientContext(accessor: ISyntaxNode): boolean { - if (this.inAmbientDeclaration) { - return this.pushDiagnostic(accessor, DiagnosticCode.Accessors_are_not_allowed_in_ambient_contexts); - } - - return false; - } - - private checkSetAccessorParameter(node: SetAccessorSyntax): boolean { - var parameters = node.callSignature.parameterList.parameters; - if (nonSeparatorCount(parameters) !== 1) { - return this.pushDiagnostic(node.propertyName, DiagnosticCode.set_accessor_must_have_exactly_one_parameter); - } - - var parameter = nonSeparatorAt(parameters, 0); - - if (parameter.questionToken) { - return this.pushDiagnostic(parameter, DiagnosticCode.set_accessor_parameter_cannot_be_optional); - } - - if (parameter.equalsValueClause) { - return this.pushDiagnostic(parameter, DiagnosticCode.set_accessor_parameter_cannot_have_an_initializer); - } - - if (parameter.dotDotDotToken) { - return this.pushDiagnostic(parameter, DiagnosticCode.set_accessor_cannot_have_rest_parameter); - } - - return false; - } - - public visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): void { - if (node.asyncKeyword) { - this.pushDiagnostic(node.asyncKeyword, DiagnosticCode.async_arrow_function_parameters_must_be_parenthesized); - return; - } - - super.visitSimpleArrowFunctionExpression(node); - } - - public visitPropertyAssignment(node: PropertyAssignmentSyntax): void { - if (this.checkForDisallowedTemplatePropertyName(node.propertyName)) { - return; - } - - super.visitPropertyAssignment(node); - } - - public visitSetAccessor(node: SetAccessorSyntax): void { - if (this.checkForAccessorDeclarationInAmbientContext(node) || - this.checkEcmaScriptVersionIsAtLeast(node.setKeyword, ts.ScriptTarget.ES5, DiagnosticCode.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher) || - this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) || - this.checkClassElementModifiers(node.modifiers) || - this.checkForDisallowedAccessorTypeParameters(node.callSignature) || - this.checkForDisallowedSetAccessorTypeAnnotation(node) || - this.checkSetAccessorParameter(node) || - this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForSemicolonInsteadOfBlock(node, node.body) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - return; - } - - super.visitSetAccessor(node); - } - - private checkForDisallowedAsyncModifier(modifiers: ISyntaxToken[]) { - var asyncKeyword = this.getAsyncModifier(modifiers); - if (asyncKeyword) { - return this.pushDiagnostic(asyncKeyword, DiagnosticCode.async_modifier_cannot_appear_here); - } - - return false; - } - - public visitElementAccessExpression(node: ElementAccessExpressionSyntax): void { - if (this.checkForMissingArgumentExpression(node)) { - return; - } - - super.visitElementAccessExpression(node); - } - - public checkForMissingArgumentExpression(node: ElementAccessExpressionSyntax): boolean { - if (node.argumentExpression === undefined) { - if (node.parent.kind === SyntaxKind.ObjectCreationExpression && (node.parent).expression === node) { - // Provide a specialized message for the very common case where someone writes: - // new Foo[] - var start = TypeScript.start(node.openBracketToken); - var end = TypeScript.fullEnd(node.closeBracketToken); - return this.pushDiagnosticAt(start, end - start, DiagnosticCode.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); - } - else { - return this.pushDiagnostic(node.closeBracketToken, DiagnosticCode.Expression_expected); - } - } - - return false; - } - - public visitEnumDeclaration(node: EnumDeclarationSyntax): void { - if (this.checkForDisallowedDeclareModifier(node.modifiers) || - this.checkForRequiredDeclareModifier(node, node.identifier, node.modifiers) || - this.checkModuleElementModifiers(node.modifiers), - this.checkEnumElements(node) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = this.inAmbientDeclaration || this.syntaxTree.isDeclaration() || SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword); - super.visitEnumDeclaration(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - private checkEnumElements(node: EnumDeclarationSyntax): boolean { - var previousValueWasComputed = false; - for (var i = 0, n = nonSeparatorCount(node.enumElements); i < n; i++) { - var enumElement = nonSeparatorAt(node.enumElements, i); - - if (!enumElement.equalsValueClause && previousValueWasComputed) { - return this.pushDiagnostic(enumElement, DiagnosticCode.Enum_member_must_have_initializer); - } - - if (enumElement.equalsValueClause) { - var value = enumElement.equalsValueClause.value; - previousValueWasComputed = !Syntax.isIntegerLiteral(value); - } - } - return false; - } - - public visitEnumElement(node: EnumElementSyntax): void { - if (this.checkForDisallowedTemplatePropertyName(node.propertyName) || - this.checkForDisallowedComputedPropertyName(node.propertyName)) { - return; - } - - if (this.inAmbientDeclaration && node.equalsValueClause) { - var expression = node.equalsValueClause.value; - if (!Syntax.isIntegerLiteral(expression)) { - this.pushDiagnostic(node.equalsValueClause.value, DiagnosticCode.Ambient_enum_elements_can_only_have_integer_literal_initializers); - return; - } - } - - super.visitEnumElement(node); - } - - public visitInvocationExpression(node: InvocationExpressionSyntax): void { - if (node.expression.kind === SyntaxKind.SuperKeyword && - node.argumentList.typeArgumentList) { - this.pushDiagnostic(node, DiagnosticCode.super_invocation_cannot_have_type_arguments); - } - - super.visitInvocationExpression(node); - } - - private checkModuleElementModifiers(modifiers: ISyntaxToken[]): boolean { - var seenExportModifier = false; - var seenDeclareModifier = false; - var seenAsyncModifier = false; - - for (var i = 0, n = modifiers.length; i < n; i++) { - var modifier = modifiers[i]; - if (SyntaxFacts.isAccessibilityModifier(modifier.kind) || - modifier.kind === SyntaxKind.StaticKeyword) { - return this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_cannot_appear_on_a_module_element, [modifier.text()]); - } - - if (modifier.kind === SyntaxKind.DeclareKeyword) { - if (seenDeclareModifier) { - this.pushDiagnostic(modifier, DiagnosticCode.Accessibility_modifier_already_seen); - return; - } - - if (seenAsyncModifier) { - this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, - [SyntaxFacts.getText(SyntaxKind.DeclareKeyword), SyntaxFacts.getText(SyntaxKind.AsyncKeyword)]); - return; - } - - seenDeclareModifier = true; - } - else if (modifier.kind === SyntaxKind.ExportKeyword) { - if (seenExportModifier) { - this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_already_seen, [modifier.text()]); - return; - } - - if (seenDeclareModifier) { - this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, - [SyntaxFacts.getText(SyntaxKind.ExportKeyword), SyntaxFacts.getText(SyntaxKind.DeclareKeyword)]); - return; - } - - if (seenAsyncModifier) { - this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_must_precede_1_modifier, - [SyntaxFacts.getText(SyntaxKind.ExportKeyword), SyntaxFacts.getText(SyntaxKind.AsyncKeyword)]); - return; - } - - seenExportModifier = true; - } - else if (modifier.kind === SyntaxKind.AsyncKeyword) { - if (seenAsyncModifier) { - this.pushDiagnostic(modifier, DiagnosticCode._0_modifier_already_seen, [modifier.text()]); - return; - } - - seenAsyncModifier = true; - } - } - - return false; - } - - private checkForDisallowedImportDeclaration(node: ModuleDeclarationSyntax): boolean { - if (node.name.kind !== SyntaxKind.StringLiteral) { - for (var i = 0, n = node.moduleElements.length; i < n; i++) { - var child = node.moduleElements[i]; - if (child.kind === SyntaxKind.ImportDeclaration) { - var importDeclaration = child; - if (importDeclaration.moduleReference.kind === SyntaxKind.ExternalModuleReference) { - this.pushDiagnostic(importDeclaration, DiagnosticCode.Import_declarations_in_an_internal_module_cannot_reference_an_external_module); - } - } - } - } - - return false; - } - - private checkForDisallowedDeclareModifierOnImportDeclaration(modifiers: ISyntaxToken[]): boolean { - var declareToken = SyntaxUtilities.getToken(modifiers, SyntaxKind.DeclareKeyword); - - if (declareToken) { - return this.pushDiagnostic(declareToken, DiagnosticCode.A_declare_modifier_cannot_be_used_with_an_import_declaration); - } - } - - public visitImportDeclaration(node: ImportDeclarationSyntax): any { - if (this.checkForDisallowedDeclareModifierOnImportDeclaration(node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - return; - } - - super.visitImportDeclaration(node); - } - - public visitModuleDeclaration(node: ModuleDeclarationSyntax): void { - if (this.checkForDisallowedDeclareModifier(node.modifiers) || - this.checkForRequiredDeclareModifier(node, firstToken(node.name), node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkForDisallowedImportDeclaration(node) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - if (node.name.kind === SyntaxKind.StringLiteral) { - if (!this.inAmbientDeclaration && !SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword)) { - this.pushDiagnostic(node.name, DiagnosticCode.Only_ambient_modules_can_use_quoted_names); - return; - } - } - - if (node.name.kind !== SyntaxKind.StringLiteral && this.checkForDisallowedExportAssignment(node)) { - return; - } - - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = this.inAmbientDeclaration || this.syntaxTree.isDeclaration() || SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword); - super.visitModuleDeclaration(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - private checkForDisallowedExportAssignment(node: ModuleDeclarationSyntax): boolean { - for (var i = 0, n = node.moduleElements.length; i < n; i++) { - var child = node.moduleElements[i]; - - if (child.kind === SyntaxKind.ExportAssignment) { - return this.pushDiagnostic(child, DiagnosticCode.Export_assignment_cannot_be_used_in_internal_modules); - } - } - - return false; - } - - public visitBlock(node: BlockSyntax): void { - if (this.checkForBlockInAmbientContext(node) || - this.checkForMalformedBlock(node)) { - return; - } - - var savedInBlock = this.inBlock; - this.inBlock = true; - super.visitBlock(node); - this.inBlock = savedInBlock; - } - - public checkForMalformedBlock(node: BlockSyntax): boolean { - if (node.equalsGreaterThanToken || node.openBraceToken === undefined) { - return this.pushDiagnostic(firstToken(node), DiagnosticCode._0_expected, ["{"]); - } - - return false; - } - - private checkForBlockInAmbientContext(node: BlockSyntax): boolean { - if (this.inAmbientDeclaration || this.syntaxTree.isDeclaration()) { - // Provide a specialized message for a block as a statement versus the block as a - // function body. - if (node.parent.kind === SyntaxKind.List) { - return this.pushDiagnostic(firstToken(node), DiagnosticCode.Statements_are_not_allowed_in_ambient_contexts); - } - else { - return this.pushDiagnostic(firstToken(node), DiagnosticCode.A_function_implementation_cannot_be_declared_in_an_ambient_context); - } - } - - return false; - } - - private checkForStatementInAmbientContxt(node: IStatementSyntax): boolean { - if (this.inAmbientDeclaration || this.syntaxTree.isDeclaration()) { - return this.pushDiagnostic(firstToken(node), DiagnosticCode.Statements_are_not_allowed_in_ambient_contexts); - } - - return false; - } - - public visitExportAssignment(node: ExportAssignmentSyntax): void { - if (node.modifiers.length > 0) { - this.pushDiagnostic(node.modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here); - return; - } - - super.visitExportAssignment(node); - } - - public visitExternalModuleReference(node: ExternalModuleReferenceSyntax): void { - if (node.expression.kind !== SyntaxKind.StringLiteral) { - this.pushDiagnostic(node.expression, DiagnosticCode.String_literal_expected); - return; - } - - super.visitExternalModuleReference(node); - } - - public visitExpressionBody(node: ExpressionBody): void { - // These are always errors. So no need to ever recurse on them. - this.pushDiagnostic(node.equalsGreaterThanToken, DiagnosticCode._0_expected, ["{"]); - } - - public visitBreakStatement(node: BreakStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkBreakStatementTarget(node)) { - return; - } - - super.visitBreakStatement(node); - } - - public visitComputedPropertyName(node: ComputedPropertyNameSyntax): void { - if (node.expression.kind === SyntaxKind.BinaryExpression && (node.expression).operatorToken.kind === SyntaxKind.CommaToken) { - this.pushDiagnostic((node.expression).operatorToken, DiagnosticCode.comma_expression_cannot_appear_in_a_computed_property_name); - return; - } - - super.visitComputedPropertyName(node); - } - - public visitContinueStatement(node: ContinueStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkContinueStatementTarget(node)) { - return; - } - - super.visitContinueStatement(node); - } - - private checkBreakStatementTarget(node: BreakStatementSyntax): boolean { - // Invalid break statements are considered syntax errors in ES5. - - // Note: the order here is important. If the 'break' has a target, then it can jump to - // any enclosing laballed statment. If it has no target, it must be in an iteration or - // swtich statement. - if (node.identifier) { - var breakableLabels = this.getEnclosingLabels(node, /*breakable:*/ true, /*crossFunctions:*/ false); - - if (!ArrayUtilities.any(breakableLabels, s => tokenValueText(s.identifier) === tokenValueText(node.identifier))) { - // The target of the continue statement wasn't to a reachable label. - // - // Let hte user know, with a specialized message if the target was to an - // unreachable label (as opposed to a non-existed label) - var breakableLabels = this.getEnclosingLabels(node, /*breakable:*/ true, /*crossFunctions:*/ true); - if (ArrayUtilities.any(breakableLabels, s => tokenValueText(s.identifier) === tokenValueText(node.identifier))) { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_cannot_cross_function_boundary); - } - else { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_not_found); - } - } - } - else if (!this.inIterationStatement(node, /*crossFunctions:*/ false) && !this.inSwitchStatement(node)) { - if (this.inIterationStatement(node, /*crossFunctions:*/ true)) { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_cannot_cross_function_boundary); - } - else { - return this.pushDiagnostic(node, DiagnosticCode.break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement); - } - } - - return false; - } - - private inSwitchStatement(ast: ISyntaxElement): boolean { - while (ast) { - if (ast.kind === SyntaxKind.SwitchStatement) { - return true; - } - - if (SyntaxUtilities.isAnyFunctionExpressionOrDeclaration(ast)) { - return false; - } - - ast = ast.parent; - } - - return false; - } - - private isIterationStatement(ast: ISyntaxElement): boolean { - switch (ast.kind) { - case SyntaxKind.ForStatement: - case SyntaxKind.ForInStatement: - case SyntaxKind.WhileStatement: - case SyntaxKind.DoStatement: - return true; - } - - return false; - } - - private inIterationStatement(element: ISyntaxElement, crossFunctions: boolean): boolean { - while (element) { - if (this.isIterationStatement(element)) { - return true; - } - - if (!crossFunctions && SyntaxUtilities.isAnyFunctionExpressionOrDeclaration(element)) { - return false; - } - - element = element.parent; - } - - return false; - } - - private getEnclosingLabels(element: ISyntaxElement, breakable: boolean, crossFunctions: boolean): LabeledStatementSyntax[] { - var result: LabeledStatementSyntax[] = []; - - element = element.parent; - while (element) { - if (element.kind === SyntaxKind.LabeledStatement) { - var labeledStatement = element; - if (breakable) { - // Breakable labels can be placed on any construct - result.push(labeledStatement); - } - else { - // They're asking for continuable labels. Continuable labels must be on - // a loop construct. - if (this.labelIsOnContinuableConstruct(labeledStatement.statement)) { - result.push(labeledStatement); - } - } - } - - if (!crossFunctions && SyntaxUtilities.isAnyFunctionExpressionOrDeclaration(element)) { - break; - } - - element = element.parent; - } - - return result; - } - - private labelIsOnContinuableConstruct(statement: ISyntaxElement): boolean { - switch (statement.kind) { - case SyntaxKind.LabeledStatement: - // Labels work transitively. i.e. if you have: - // foo: - // bar: - // while(...) - // - // Then both 'foo' and 'bar' are in the label set for 'while' and are thus - // continuable. - return this.labelIsOnContinuableConstruct((statement).statement); - - case SyntaxKind.WhileStatement: - case SyntaxKind.ForStatement: - case SyntaxKind.ForInStatement: - case SyntaxKind.DoStatement: - return true; - - default: - return false; - } - } - - private checkContinueStatementTarget(node: ContinueStatementSyntax): boolean { - // Invalid continue statements are considered syntax errors in ES5. - - if (!this.inIterationStatement(node, /*crossFunctions:*/ false)) { - if (this.inIterationStatement(node, /*crossFunctions:*/ true)) { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_cannot_cross_function_boundary); - } - else { - return this.pushDiagnostic(node, DiagnosticCode.continue_statement_can_only_be_used_within_an_enclosing_iteration_statement); - } - } - else if (node.identifier) { - var continuableLabels = this.getEnclosingLabels(node, /*breakable:*/ false, /*crossFunctions:*/ false); - - if (!ArrayUtilities.any(continuableLabels, s => tokenValueText(s.identifier) === tokenValueText(node.identifier))) { - // The target of the continue statement wasn't to a reachable label. - // - // Let hte user know, with a specialized message if the target was to an - // unreachable label (as opposed to a non-existed label) - var continuableLabels = this.getEnclosingLabels(node, /*breakable:*/ false, /*crossFunctions:*/ true); - - if (ArrayUtilities.any(continuableLabels, s => tokenValueText(s.identifier) === tokenValueText(node.identifier))) { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_cannot_cross_function_boundary); - } - else { - return this.pushDiagnostic(node, DiagnosticCode.Jump_target_not_found); - } - } - } - - return false; - } - - public visitDebuggerStatement(node: DebuggerStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitDebuggerStatement(node); - } - - public visitDoStatement(node: DoStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitDoStatement(node); - } - - public visitEmptyStatement(node: EmptyStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitEmptyStatement(node); - } - - public visitExpressionStatement(node: ExpressionStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitExpressionStatement(node); - } - - public visitForInStatement(node: ForInStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkForInStatementVariableDeclaration(node) || - this.checkForInLeftHandSideExpression(node)) { - - return; - } - - super.visitForInStatement(node); - } - - private checkForInLeftHandSideExpression(node: ForInStatementSyntax): boolean { - if (node.left.kind !== SyntaxKind.VariableDeclaration && !SyntaxUtilities.isLeftHandSizeExpression(node.left)) { - return this.pushDiagnostic(node.left, DiagnosticCode.Invalid_left_hand_side_in_for_in_statement); - } - - return false; - } - - private checkForInStatementVariableDeclaration(node: ForInStatementSyntax): boolean { - // The parser accepts a Variable Declaration in a ForInStatement, but the grammar only - // allows a very restricted form. Specifically, there must be only a single Variable - // Declarator in the Declaration. - if (node.left.kind === SyntaxKind.VariableDeclaration && (node.left).variableDeclarators.length > 1) { - return this.pushDiagnostic(node.left, DiagnosticCode.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement); - } - - return false; - } - - public visitForStatement(node: ForStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitForStatement(node); - } - - public visitIfStatement(node: IfStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitIfStatement(node); - } - - public visitLabeledStatement(node: LabeledStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkForInvalidLabelIdentifier(node)) { - return; - } - - super.visitLabeledStatement(node); - } - - private checkForInvalidLabelIdentifier(node: LabeledStatementSyntax): boolean { - // Invalid break statements are considered syntax errors in ES5. - - // Note that break/continue are treated differently. ES5 says this about a break statement: - // A program is considered syntactically incorrect if ...: - // - // The program contains a break statement with the optional Identifier, where Identifier - // does not appear in the label set of an enclosing (but not crossing function boundaries) - // **Statement.** - // - // However, it says this about continue statements: - // - // The program contains a continue statement with the optional Identifier, where Identifier - // does not appear in the label set of an enclosing (but not crossing function boundaries) - // **IterationStatement.** - - // In other words, you can 'break' to any enclosing statement. But you can only 'continue' - // to an enclosing *iteration* statement. - var labelIdentifier = tokenValueText(node.identifier); - - var breakableLabels = this.getEnclosingLabels(node, /*breakable:*/ true, /*crossFunctions:*/ false); - - // It is invalid to have a label enclosed in a label of the same name. - var matchingLabel = ArrayUtilities.firstOrDefault(breakableLabels, s => tokenValueText(s.identifier) === labelIdentifier); - if (matchingLabel) { - return this.pushDiagnostic(node.identifier, DiagnosticCode.Duplicate_identifier_0, [labelIdentifier]); - } - - return false; - } - - public visitReturnStatement(node: ReturnStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkForReturnStatementNotInFunctionBody(node)) { - return; - } - - super.visitReturnStatement(node); - } - - public checkForReturnStatementNotInFunctionBody(node: ReturnStatementSyntax): boolean { - for (var element: ISyntaxElement = node; element; element = element.parent) { - if (SyntaxUtilities.isAnyFunctionExpressionOrDeclaration(element)) { - return false; - } - } - - return this.pushDiagnostic(firstToken(node), DiagnosticCode.return_statement_must_be_contained_within_a_function_body); - } - - public visitSwitchStatement(node: SwitchStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitSwitchStatement(node); - } - - public visitThrowStatement(node: ThrowStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkForMissingThrowStatementExpression(node)) { - return; - } - - super.visitThrowStatement(node); - } - - public checkForMissingThrowStatementExpression(node: ThrowStatementSyntax): boolean { - if (node.expression === undefined) { - return this.pushDiagnosticAt(fullEnd(node.throwKeyword), 0, DiagnosticCode.Expression_expected); - } - - return false; - } - - public visitTryStatement(node: TryStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitTryStatement(node); - } - - public visitWhileStatement(node: WhileStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node)) { - return; - } - - super.visitWhileStatement(node); - } - - public visitWithStatement(node: WithStatementSyntax): void { - if (this.checkForStatementInAmbientContxt(node) || - this.checkForWithInStrictMode(node)) { - return; - } - - super.visitWithStatement(node); - } - - private checkForWithInStrictMode(node: WithStatementSyntax): boolean { - if (parsedInStrictModeContext(node)) { - return this.pushDiagnostic(firstToken(node), DiagnosticCode.with_statements_are_not_allowed_in_strict_mode); - } - - return false; - } - - private checkForDisallowedModifiersInBlockOrObjectLitera(modifiers: ISyntaxToken[]): boolean { - if (this.inBlock || this.inObjectLiteralExpression) { - if (modifiers.length > 0) { - return this.pushDiagnostic(modifiers[0], DiagnosticCode.Modifiers_cannot_appear_here); - } - } - - return false; - } - - public visitFunctionDeclaration(node: FunctionDeclarationSyntax): void { - if (this.checkForDisallowedDeclareModifier(node.modifiers) || - this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) || - this.checkForRequiredDeclareModifier(node, node.identifier, node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkForDisallowedEvalOrArguments(node, node.identifier) || - this.checkForAsyncGenerator(this.getAsyncModifier(node.modifiers), node.asterixToken)) { - - return; - } - - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = this.inAmbientDeclaration || this.syntaxTree.isDeclaration() || SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword); - super.visitFunctionDeclaration(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - private getAsyncModifier(modifiers: ISyntaxToken[]): ISyntaxToken { - for (var i = 0, n = modifiers.length; i < n; i++) { - var modifier = modifiers[i]; - if (modifier.kind === SyntaxKind.AsyncKeyword) { - return modifier; - } - } - - return undefined; - } - - private checkForAsyncGenerator(asyncKeyword: ISyntaxToken, asterixToken: ISyntaxToken) { - if (asyncKeyword && asterixToken) { - return this.pushDiagnostic(asyncKeyword, DiagnosticCode.A_generator_declaration_cannot_have_the_async_modifier); - } - - return false; - } - - public visitFunctionExpression(node: FunctionExpressionSyntax): void { - if (this.checkForDisallowedEvalOrArguments(node, node.identifier) || - this.checkForSemicolonInsteadOfBlock(node, node.body) || - this.checkForAsyncGenerator(node.asyncKeyword, node.asterixToken)) { - return; - } - - super.visitFunctionExpression(node); - } - - public visitVariableStatement(node: VariableStatementSyntax): void { - if (this.checkForDisallowedDeclareModifier(node.modifiers) || - this.checkForDisallowedModifiersInBlockOrObjectLitera(node.modifiers) || - this.checkForRequiredDeclareModifier(node, node.variableDeclaration.varConstOrLetKeyword, node.modifiers) || - this.checkModuleElementModifiers(node.modifiers) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = this.inAmbientDeclaration || this.syntaxTree.isDeclaration() || SyntaxUtilities.containsToken(node.modifiers, SyntaxKind.DeclareKeyword); - super.visitVariableStatement(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - public visitObjectType(node: ObjectTypeSyntax): void { - // All code in an object type is implicitly ambient. (i.e. parameters can't have initializer, etc.) - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = true; - super.visitObjectType(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - public visitArrayType(node: ArrayTypeSyntax): void { - // All code in an object type is implicitly ambient. (i.e. parameters can't have initializer, etc.) - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = true; - super.visitArrayType(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - public visitFunctionType(node: FunctionTypeSyntax): void { - // All code in an object type is implicitly ambient. (i.e. parameters can't have initializer, etc.) - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = true; - super.visitFunctionType(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - public visitConstructorType(node: ConstructorTypeSyntax): void { - // All code in an object type is implicitly ambient. (i.e. parameters can't have initializer, etc.) - var savedInAmbientDeclaration = this.inAmbientDeclaration; - this.inAmbientDeclaration = true; - super.visitConstructorType(node); - this.inAmbientDeclaration = savedInAmbientDeclaration; - } - - public visitVariableDeclarator(node: VariableDeclaratorSyntax): void { - if (this.checkVariableDeclaratorInitializer(node) || - this.checkVariableDeclaratorIdentifier(node) || - this.checkForDisallowedTemplatePropertyName(node.propertyName)) { - return; - } - - super.visitVariableDeclarator(node); - } - - private checkForDisallowedTemplatePropertyName(propertyName: IPropertyNameSyntax): boolean { - if (propertyName.kind === SyntaxKind.NoSubstitutionTemplateToken) { - return this.pushDiagnostic(propertyName, DiagnosticCode.Template_literal_cannot_be_used_as_an_element_name); - } - - return false; - } - - private checkForDisallowedComputedPropertyName(propertyName: IPropertyNameSyntax): boolean { - if (propertyName.kind === SyntaxKind.ComputedPropertyName) { - return this.pushDiagnostic(propertyName, DiagnosticCode.Computed_property_names_cannot_be_used_here); - } - - return false; - } - - private checkVariableDeclaratorIdentifier(node: VariableDeclaratorSyntax): boolean { - if (node.parent.kind !== SyntaxKind.PropertyDeclaration) { - Debug.assert(isToken(node.propertyName), "A normal variable declarator must always have a token for a name."); - if (this.checkForDisallowedEvalOrArguments(node, node.propertyName)) { - return true; - } - } - - return false; - } - - private checkVariableDeclaratorInitializer(node: VariableDeclaratorSyntax): boolean { - if (this.inAmbientDeclaration && node.equalsValueClause) { - return this.pushDiagnostic(firstToken(node.equalsValueClause.value), DiagnosticCode.Initializers_are_not_allowed_in_ambient_contexts); - } - - return false; - } - - public visitConstructorDeclaration(node: ConstructorDeclarationSyntax): void { - if (this.checkClassElementModifiers(node.modifiers) || - this.checkConstructorModifiers(node.modifiers) || - this.checkConstructorTypeParameterList(node) || - this.checkConstructorTypeAnnotation(node) || - this.checkForDisallowedAsyncModifier(node.modifiers)) { - - return; - } - - super.visitConstructorDeclaration(node); - } - - private checkConstructorModifiers(modifiers: ISyntaxToken[]): boolean { - for (var i = 0, n = modifiers.length; i < n; i++) { - var child = modifiers[i]; - if (child.kind !== SyntaxKind.PublicKeyword) { - return this.pushDiagnostic(child, DiagnosticCode._0_modifier_cannot_appear_on_a_constructor_declaration, [SyntaxFacts.getText(child.kind)]); - } - } - - return false; - } - - private checkConstructorTypeParameterList(node: ConstructorDeclarationSyntax): boolean { - if (node.callSignature.typeParameterList) { - return this.pushDiagnostic(node.callSignature.typeParameterList, DiagnosticCode.Type_parameters_cannot_appear_on_a_constructor_declaration); - } - - return false; - } - - private checkConstructorTypeAnnotation(node: ConstructorDeclarationSyntax): boolean { - if (node.callSignature.typeAnnotation) { - return this.pushDiagnostic(node.callSignature.typeAnnotation, DiagnosticCode.Type_annotation_cannot_appear_on_a_constructor_declaration); - } - - return false; - } - - public visitBinaryExpression(node: BinaryExpressionSyntax): void { - if (this.checkIllegalAssignment(node)) { - return; - } - - super.visitBinaryExpression(node); - } - - public visitPrefixUnaryExpression(node: PrefixUnaryExpressionSyntax): void { - if (parsedInStrictModeContext(node) && this.isPreIncrementOrDecrementExpression(node) && this.isEvalOrArguments(node.operand)) { - this.pushDiagnostic(node.operatorToken, DiagnosticCode.Invalid_use_of_0_in_strict_mode, [this.getEvalOrArguments(node.operand)]); - } - - super.visitPrefixUnaryExpression(node); - } - - public visitPostfixUnaryExpression(node: PostfixUnaryExpressionSyntax): void { - if (parsedInStrictModeContext(node) && this.isEvalOrArguments(node.operand)) { - this.pushDiagnostic(node.operatorToken, DiagnosticCode.Invalid_use_of_0_in_strict_mode, [this.getEvalOrArguments(node.operand)]); - } - - super.visitPostfixUnaryExpression(node); - } - - public visitParameter(node: ParameterSyntax): void { - if (this.checkParameterAccessibilityModifiers(node) || - this.checkForDisallowedEvalOrArguments(node, node.identifier)) { - return; - } - - super.visitParameter(node); - } - - private checkForDisallowedEvalOrArguments(node: ISyntaxNode, token: ISyntaxToken): boolean { - if (token) { - if (parsedInStrictModeContext(node) && this.isEvalOrArguments(token)) { - return this.pushDiagnostic(token, DiagnosticCode.Invalid_use_of_0_in_strict_mode, [this.getEvalOrArguments(token)]); - } - } - - return false; - } - - private isPreIncrementOrDecrementExpression(node: PrefixUnaryExpressionSyntax) { - switch (node.operatorToken.kind) { - case SyntaxKind.MinusMinusToken: - case SyntaxKind.PlusPlusToken: - return true; - } - - return false; - } - - public visitDeleteExpression(node: DeleteExpressionSyntax): void { - if (parsedInStrictModeContext(node) && node.expression.kind === SyntaxKind.IdentifierName) { - this.pushDiagnostic(node.deleteKeyword, DiagnosticCode.delete_cannot_be_called_on_an_identifier_in_strict_mode); - return; - } - - super.visitDeleteExpression(node); - } - - public visitYieldExpression(node: YieldExpressionSyntax): void { - if (!parsedInYieldContext(node)) { - this.pushDiagnostic(node.yieldKeyword, DiagnosticCode.yield_expression_must_be_contained_within_a_generator_declaration); - return; - } - - super.visitYieldExpression(node); - } - - public visitAwaitExpression(node: AwaitExpressionSyntax): void { - if (!parsedInAsyncContext(node)) { - this.pushDiagnostic(node.awaitKeyword, DiagnosticCode.await_expression_must_be_contained_within_an_async_declaration); - return; - } - - super.visitAwaitExpression(node); - } - - private checkIllegalAssignment(node: BinaryExpressionSyntax): boolean { - if (parsedInStrictModeContext(node) && SyntaxFacts.isAssignmentOperatorToken(node.operatorToken.kind) && this.isEvalOrArguments(node.left)) { - return this.pushDiagnostic(node.operatorToken, DiagnosticCode.Invalid_use_of_0_in_strict_mode, [this.getEvalOrArguments(node.left)]); - } - - return false; - } - - private getEvalOrArguments(expr: IExpressionSyntax): string { - if (expr.kind === SyntaxKind.IdentifierName) { - var text = tokenValueText(expr); - if (text === "eval" || text === "arguments") { - return text; - } - } - - return undefined; - } - - private isEvalOrArguments(expr: IExpressionSyntax): boolean { - return !!this.getEvalOrArguments(expr); - } - - public visitConstraint(node: ConstraintSyntax): void { - if (this.checkConstraintType(node)) { - return; - } - - super.visitConstraint(node); - } - - private checkConstraintType(node: ConstraintSyntax): boolean { - if (!SyntaxFacts.isType(node.typeOrExpression.kind)) { - return this.pushDiagnostic(node.typeOrExpression, DiagnosticCode.Type_expected); - } - - return false; - } - } - - function firstSyntaxTreeToken(syntaxTree: SyntaxTree) { - // We don't just access the firstToken of the tree here as the tree may be abstract and may - // not have a firstToken in it. - var scanner = Scanner.createScanner(syntaxTree.languageVersion(), syntaxTree.text, () => { }); - return scanner.scan(/*allowContextualToken:*/ false); - } - - function implicitImportSpan(sourceUnitLeadingTrivia: ISyntaxTriviaList): TextSpan { - for (var i = 0, n = sourceUnitLeadingTrivia.count(); i < n; i++) { - var trivia = sourceUnitLeadingTrivia.syntaxTriviaAt(i); - - if (trivia.isComment()) { - var span = implicitImportSpanWorker(trivia); - if (span) { - return span; - } - } - } - - return undefined; - } - - function implicitImportSpanWorker(trivia: ISyntaxTrivia): TextSpan { - var implicitImportRegEx = /^(\/\/\/\s*/gim; - var match = implicitImportRegEx.exec(trivia.fullText()); - - if (match) { - return new TextSpan(trivia.fullStart(), trivia.fullWidth()); - } - - return undefined; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxTrivia.ts b/src/services/syntax/syntaxTrivia.ts deleted file mode 100644 index 02162e19fa6..00000000000 --- a/src/services/syntax/syntaxTrivia.ts +++ /dev/null @@ -1,174 +0,0 @@ -/// - -module TypeScript { - export interface ISyntaxTrivia { - parent: ISyntaxTriviaList; - kind: SyntaxKind; - - isWhitespace(): boolean; - isComment(): boolean; - isNewLine(): boolean; - isSkippedToken(): boolean; - - fullStart(): number; - fullWidth(): number; - - // Text for this trivia. - fullText(): string; - - // If this is a skipped token trivia, then this was the token that was skipped. - skippedToken(): ISyntaxToken; - - clone(): ISyntaxTrivia; - } -} - -module TypeScript.Syntax { - class AbstractTrivia implements ISyntaxTrivia { - public parent: ISyntaxTriviaList; - - constructor(public kind: SyntaxKind) { - } - - public clone(): ISyntaxTrivia { - throw Errors.abstract(); - } - - public fullStart(): number { - throw Errors.abstract(); - } - - public fullWidth(): number { - throw Errors.abstract(); - } - - public fullText(): string { - throw Errors.abstract(); - } - - public skippedToken(): ISyntaxToken { - throw Errors.abstract(); - } - - public isWhitespace(): boolean { - return this.kind === SyntaxKind.WhitespaceTrivia; - } - - public isComment(): boolean { - return this.kind === SyntaxKind.SingleLineCommentTrivia || this.kind === SyntaxKind.MultiLineCommentTrivia; - } - - public isNewLine(): boolean { - return this.kind === SyntaxKind.NewLineTrivia; - } - - public isSkippedToken(): boolean { - return this.kind === SyntaxKind.SkippedTokenTrivia; - } - } - - class SkippedTokenTrivia extends AbstractTrivia { - constructor(private _skippedToken: ISyntaxToken, private _fullText: string) { - super(SyntaxKind.SkippedTokenTrivia); - - _skippedToken.parent = this; - } - - public clone(): ISyntaxTrivia { - return new SkippedTokenTrivia(this._skippedToken.clone(), this._fullText); - } - - public fullStart(): number { - return this._skippedToken.fullStart(); - } - - public fullWidth(): number { - return this.fullText().length; - } - - public fullText(): string { - return this._fullText; - } - - public skippedToken(): ISyntaxToken { - return this._skippedToken; - } - } - - class DeferredTrivia extends AbstractTrivia { - constructor(kind: SyntaxKind, private _text: ISimpleText, private _fullStart: number, private _fullWidth: number) { - super(kind); - } - - public clone(): ISyntaxTrivia { - return new DeferredTrivia(this.kind, this._text, this._fullStart, this._fullWidth); - } - - public fullStart(): number { - return this._fullStart; - } - - public fullWidth(): number { - return this._fullWidth; - } - - public fullText(): string { - return this._text.substr(this._fullStart, this._fullWidth); - } - - public skippedToken(): ISyntaxToken { - throw Errors.invalidOperation(); - } - } - - export function deferredTrivia(kind: SyntaxKind, text: ISimpleText, fullStart: number, fullWidth: number): ISyntaxTrivia { - return new DeferredTrivia(kind, text, fullStart, fullWidth); - } - - export function skippedTokenTrivia(token: ISyntaxToken, text: ISimpleText): ISyntaxTrivia { - Debug.assert(!token.hasLeadingTrivia()); - Debug.assert(token.fullWidth() > 0); - return new SkippedTokenTrivia(token, token.fullText(text)); - } - - // Breaks a multiline trivia up into individual line components. If the trivia doesn't span - // any lines, then the result will be a single string with the entire text of the trivia. - // Otherwise, there will be one entry in the array for each line spanned by the trivia. Each - // entry will contain the line separator at the end of the string. - export function splitMultiLineCommentTriviaIntoMultipleLines(trivia: ISyntaxTrivia): string[] { - // Debug.assert(trivia.kind === SyntaxKind.MultiLineCommentTrivia); - var result: string[] = []; - - var triviaText = trivia.fullText(); - var currentIndex = 0; - - for (var i = 0; i < triviaText.length; i++) { - var ch = triviaText.charCodeAt(i); - - // When we run into a newline for the first time, create the string builder and copy - // all the values up to this newline into it. - switch (ch) { - case CharacterCodes.carriageReturn: - if (i < triviaText.length - 1 && triviaText.charCodeAt(i + 1) === CharacterCodes.lineFeed) { - // Consume the \r - i++; - } - - // Fall through. - - case CharacterCodes.lineFeed: - case CharacterCodes.paragraphSeparator: - case CharacterCodes.lineSeparator: - // Eat from the last starting position through to the end of the newline. - result.push(triviaText.substring(currentIndex, i + 1)); - - // Set the current index to *after* the newline. - currentIndex = i + 1; - continue; - } - } - - result.push(triviaText.substring(currentIndex)); - return result; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxTriviaList.ts b/src/services/syntax/syntaxTriviaList.ts deleted file mode 100644 index 6794a823340..00000000000 --- a/src/services/syntax/syntaxTriviaList.ts +++ /dev/null @@ -1,234 +0,0 @@ -/// - -module TypeScript { - export interface ISyntaxTriviaList { - parent?: ISyntaxToken; - - isShared(): boolean; - - count(): number; - syntaxTriviaAt(index: number): ISyntaxTrivia; - - // With of this trivia list. - fullWidth(): number; - - // Text for this trivia list. - fullText(): string; - - hasComment(): boolean; - hasNewLine(): boolean; - hasSkippedToken(): boolean; - - last(): ISyntaxTrivia; - toArray(): ISyntaxTrivia[]; - - clone(): ISyntaxTriviaList; - } -} - -module TypeScript.Syntax { - class EmptyTriviaList implements ISyntaxTriviaList { - public isShared(): boolean { - return true; - } - - public count(): number { - return 0; - } - - public syntaxTriviaAt(index: number): ISyntaxTrivia { - throw Errors.argumentOutOfRange("index"); - } - - public last(): ISyntaxTrivia { - throw Errors.argumentOutOfRange("index"); - } - - public fullWidth(): number { - return 0; - } - - public fullText(): string { - return ""; - } - - public hasComment(): boolean { - return false; - } - - public hasNewLine(): boolean { - return false; - } - - public hasSkippedToken(): boolean { - return false; - } - - public toArray(): ISyntaxTrivia[] { - return []; - } - - public clone() { - return this; - } - }; - - export var emptyTriviaList: ISyntaxTriviaList = new EmptyTriviaList(); - - function isComment(trivia: ISyntaxTrivia): boolean { - return trivia.kind === SyntaxKind.MultiLineCommentTrivia || trivia.kind === SyntaxKind.SingleLineCommentTrivia; - } - - class SingletonSyntaxTriviaList implements ISyntaxTriviaList { - private item: ISyntaxTrivia; - - constructor(item: ISyntaxTrivia) { - this.item = item.clone(); - this.item.parent = this; - } - - public isShared(): boolean { - return false; - } - - public count(): number { - return 1; - } - - public syntaxTriviaAt(index: number): ISyntaxTrivia { - if (index !== 0) { - throw Errors.argumentOutOfRange("index"); - } - - return this.item; - } - - public last(): ISyntaxTrivia { - return this.item; - } - - public fullWidth(): number { - return this.item.fullWidth(); - } - - public fullText(): string { - return this.item.fullText(); - } - - public hasComment(): boolean { - return isComment(this.item); - } - - public hasNewLine(): boolean { - return this.item.kind === SyntaxKind.NewLineTrivia; - } - - public hasSkippedToken(): boolean { - return this.item.kind === SyntaxKind.SkippedTokenTrivia; - } - - public toArray(): ISyntaxTrivia[] { - return [this.item]; - } - - public clone(): ISyntaxTriviaList { - return new SingletonSyntaxTriviaList(this.item.clone()); - } - } - - class NormalSyntaxTriviaList implements ISyntaxTriviaList { - private trivia: ISyntaxTrivia[]; - - constructor(trivia: ISyntaxTrivia[]) { - this.trivia = trivia.map(t => { - var cloned = t.clone(); - cloned.parent = this; - return cloned; - }); - } - - public isShared(): boolean { - return false; - } - - public count() { - return this.trivia.length; - } - - public syntaxTriviaAt(index: number): ISyntaxTrivia { - if (index < 0 || index >= this.trivia.length) { - throw Errors.argumentOutOfRange("index"); - } - - return this.trivia[index]; - } - - public last(): ISyntaxTrivia { - return this.trivia[this.trivia.length - 1]; - } - - public fullWidth(): number { - return ArrayUtilities.sum(this.trivia, t => t.fullWidth()); - } - - public fullText(): string { - var result: string[] = []; - - for (var i = 0, n = this.trivia.length; i < n; i++) { - result.push(this.trivia[i].fullText()); - } - - return result.join(""); - } - - public hasComment(): boolean { - for (var i = 0; i < this.trivia.length; i++) { - if (isComment(this.trivia[i])) { - return true; - } - } - - return false; - } - - public hasNewLine(): boolean { - for (var i = 0; i < this.trivia.length; i++) { - if (this.trivia[i].kind === SyntaxKind.NewLineTrivia) { - return true; - } - } - - return false; - } - - public hasSkippedToken(): boolean { - for (var i = 0; i < this.trivia.length; i++) { - if (this.trivia[i].kind === SyntaxKind.SkippedTokenTrivia) { - return true; - } - } - - return false; - } - - public toArray(): ISyntaxTrivia[] { - return this.trivia.slice(0); - } - - public clone(): ISyntaxTriviaList { - return new NormalSyntaxTriviaList(this.trivia.map(t => t.clone())); - } - } - - export function triviaList(trivia: ISyntaxTrivia[]): ISyntaxTriviaList { - if (!trivia || trivia.length === 0) { - return Syntax.emptyTriviaList; - } - - if (trivia.length === 1) { - return new SingletonSyntaxTriviaList(trivia[0]); - } - - return new NormalSyntaxTriviaList(trivia); - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxUtilities.ts b/src/services/syntax/syntaxUtilities.ts deleted file mode 100644 index 4b08d3a14b6..00000000000 --- a/src/services/syntax/syntaxUtilities.ts +++ /dev/null @@ -1,212 +0,0 @@ -/// - -module TypeScript { - export function childCount(element: ISyntaxElement): number { - if (isList(element)) { return (element).length; } - return (element).childCount; - } - - export function childAt(element: ISyntaxElement, index: number): ISyntaxElement { - if (isList(element)) { return (element)[index]; } - return (element).childAt(index); - } - - interface ISyntaxNodeInternal extends ISyntaxNode { - __cachedTokens: ISyntaxToken[]; - } - - class TokenCollectorWalker extends SyntaxWalker { - public tokens: ISyntaxToken[] = []; - - public visitToken(token: ISyntaxToken): void { - this.tokens.push(token); - } - } - - var tokenCollectorWalker = new TokenCollectorWalker(); - - export function getTokens(node: ISyntaxNode): ISyntaxToken[] { - var tokens = (node).__cachedTokens; - if (!tokens) { - tokens = []; - tokenCollectorWalker.tokens = tokens; - - visitNodeOrToken(tokenCollectorWalker, node); - - (node).__cachedTokens = tokens; - tokenCollectorWalker.tokens = undefined; - } - - return tokens; - } - - export module SyntaxUtilities { - export function isAnyFunctionExpressionOrDeclaration(ast: ISyntaxElement): boolean { - switch (ast.kind) { - case SyntaxKind.SimpleArrowFunctionExpression: - case SyntaxKind.ParenthesizedArrowFunctionExpression: - case SyntaxKind.FunctionExpression: - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.MethodDeclaration: - case SyntaxKind.ConstructorDeclaration: - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - return true; - } - - return false; - } - - export function isLeftHandSizeExpression(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.PropertyAccessExpression: - case SyntaxKind.ElementAccessExpression: - case SyntaxKind.TemplateAccessExpression: - case SyntaxKind.ObjectCreationExpression: - case SyntaxKind.InvocationExpression: - case SyntaxKind.ArrayLiteralExpression: - case SyntaxKind.ParenthesizedExpression: - case SyntaxKind.ObjectLiteralExpression: - case SyntaxKind.FunctionExpression: - case SyntaxKind.IdentifierName: - case SyntaxKind.RegularExpressionLiteral: - case SyntaxKind.NumericLiteral: - case SyntaxKind.StringLiteral: - case SyntaxKind.FalseKeyword: - case SyntaxKind.NullKeyword: - case SyntaxKind.ThisKeyword: - case SyntaxKind.TrueKeyword: - case SyntaxKind.SuperKeyword: - return true; - } - } - - return false; - } - - export function isSwitchClause(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.CaseSwitchClause: - case SyntaxKind.DefaultSwitchClause: - return true; - } - } - - return false; - } - - export function isTypeMember(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.ConstructSignature: - case SyntaxKind.MethodSignature: - case SyntaxKind.IndexSignature: - case SyntaxKind.PropertySignature: - case SyntaxKind.CallSignature: - return true; - } - } - - return false; - } - - export function isClassElement(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.ConstructorDeclaration: - case SyntaxKind.IndexSignature: - case SyntaxKind.MethodDeclaration: - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - case SyntaxKind.PropertyDeclaration: - return true; - } - } - - return false; - } - - export function isModuleElement(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.ImportDeclaration: - case SyntaxKind.ExportAssignment: - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.ModuleDeclaration: - case SyntaxKind.EnumDeclaration: - - // Keep in sync with isStatement: - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.VariableStatement: - case SyntaxKind.Block: - case SyntaxKind.IfStatement: - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ThrowStatement: - case SyntaxKind.ReturnStatement: - case SyntaxKind.SwitchStatement: - case SyntaxKind.BreakStatement: - case SyntaxKind.ContinueStatement: - case SyntaxKind.ForInStatement: - case SyntaxKind.ForStatement: - case SyntaxKind.WhileStatement: - case SyntaxKind.WithStatement: - case SyntaxKind.EmptyStatement: - case SyntaxKind.TryStatement: - case SyntaxKind.LabeledStatement: - case SyntaxKind.DoStatement: - case SyntaxKind.DebuggerStatement: - return true; - } - } - - return false; - } - - export function isStatement(element: ISyntaxElement) { - if (element) { - switch (element.kind) { - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.VariableStatement: - case SyntaxKind.Block: - case SyntaxKind.IfStatement: - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ThrowStatement: - case SyntaxKind.ReturnStatement: - case SyntaxKind.SwitchStatement: - case SyntaxKind.BreakStatement: - case SyntaxKind.ContinueStatement: - case SyntaxKind.ForInStatement: - case SyntaxKind.ForStatement: - case SyntaxKind.WhileStatement: - case SyntaxKind.WithStatement: - case SyntaxKind.EmptyStatement: - case SyntaxKind.TryStatement: - case SyntaxKind.LabeledStatement: - case SyntaxKind.DoStatement: - case SyntaxKind.DebuggerStatement: - return true; - } - } - - return false; - } - - export function getToken(list: ISyntaxToken[], kind: SyntaxKind): ISyntaxToken { - for (var i = 0, n = list.length; i < n; i++) { - var token = list[i]; - if (token.kind === kind) { - return token; - } - } - - return undefined; - } - - export function containsToken(list: ISyntaxToken[], kind: SyntaxKind): boolean { - return !!SyntaxUtilities.getToken(list, kind); - } - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxVisitor.generated.ts b/src/services/syntax/syntaxVisitor.generated.ts deleted file mode 100644 index 30b82c67da2..00000000000 --- a/src/services/syntax/syntaxVisitor.generated.ts +++ /dev/null @@ -1,202 +0,0 @@ -/// - -module TypeScript { - export function visitNodeOrToken(visitor: ISyntaxVisitor, element: ISyntaxNodeOrToken): any { - if (element === undefined) { return undefined; } - switch (element.kind) { - case SyntaxKind.SourceUnit: return visitor.visitSourceUnit(element); - case SyntaxKind.QualifiedName: return visitor.visitQualifiedName(element); - case SyntaxKind.ObjectType: return visitor.visitObjectType(element); - case SyntaxKind.FunctionType: return visitor.visitFunctionType(element); - case SyntaxKind.ArrayType: return visitor.visitArrayType(element); - case SyntaxKind.ConstructorType: return visitor.visitConstructorType(element); - case SyntaxKind.GenericType: return visitor.visitGenericType(element); - case SyntaxKind.TypeQuery: return visitor.visitTypeQuery(element); - case SyntaxKind.TupleType: return visitor.visitTupleType(element); - case SyntaxKind.UnionType: return visitor.visitUnionType(element); - case SyntaxKind.ParenthesizedType: return visitor.visitParenthesizedType(element); - case SyntaxKind.InterfaceDeclaration: return visitor.visitInterfaceDeclaration(element); - case SyntaxKind.FunctionDeclaration: return visitor.visitFunctionDeclaration(element); - case SyntaxKind.ModuleDeclaration: return visitor.visitModuleDeclaration(element); - case SyntaxKind.ClassDeclaration: return visitor.visitClassDeclaration(element); - case SyntaxKind.EnumDeclaration: return visitor.visitEnumDeclaration(element); - case SyntaxKind.ImportDeclaration: return visitor.visitImportDeclaration(element); - case SyntaxKind.ExportAssignment: return visitor.visitExportAssignment(element); - case SyntaxKind.MethodDeclaration: return visitor.visitMethodDeclaration(element); - case SyntaxKind.PropertyDeclaration: return visitor.visitPropertyDeclaration(element); - case SyntaxKind.ConstructorDeclaration: return visitor.visitConstructorDeclaration(element); - case SyntaxKind.GetAccessor: return visitor.visitGetAccessor(element); - case SyntaxKind.SetAccessor: return visitor.visitSetAccessor(element); - case SyntaxKind.PropertySignature: return visitor.visitPropertySignature(element); - case SyntaxKind.CallSignature: return visitor.visitCallSignature(element); - case SyntaxKind.ConstructSignature: return visitor.visitConstructSignature(element); - case SyntaxKind.IndexSignature: return visitor.visitIndexSignature(element); - case SyntaxKind.MethodSignature: return visitor.visitMethodSignature(element); - case SyntaxKind.Block: return visitor.visitBlock(element); - case SyntaxKind.IfStatement: return visitor.visitIfStatement(element); - case SyntaxKind.VariableStatement: return visitor.visitVariableStatement(element); - case SyntaxKind.ExpressionStatement: return visitor.visitExpressionStatement(element); - case SyntaxKind.ReturnStatement: return visitor.visitReturnStatement(element); - case SyntaxKind.SwitchStatement: return visitor.visitSwitchStatement(element); - case SyntaxKind.BreakStatement: return visitor.visitBreakStatement(element); - case SyntaxKind.ContinueStatement: return visitor.visitContinueStatement(element); - case SyntaxKind.ForStatement: return visitor.visitForStatement(element); - case SyntaxKind.ForInStatement: return visitor.visitForInStatement(element); - case SyntaxKind.EmptyStatement: return visitor.visitEmptyStatement(element); - case SyntaxKind.ThrowStatement: return visitor.visitThrowStatement(element); - case SyntaxKind.WhileStatement: return visitor.visitWhileStatement(element); - case SyntaxKind.TryStatement: return visitor.visitTryStatement(element); - case SyntaxKind.LabeledStatement: return visitor.visitLabeledStatement(element); - case SyntaxKind.DoStatement: return visitor.visitDoStatement(element); - case SyntaxKind.DebuggerStatement: return visitor.visitDebuggerStatement(element); - case SyntaxKind.WithStatement: return visitor.visitWithStatement(element); - case SyntaxKind.PrefixUnaryExpression: return visitor.visitPrefixUnaryExpression(element); - case SyntaxKind.DeleteExpression: return visitor.visitDeleteExpression(element); - case SyntaxKind.TypeOfExpression: return visitor.visitTypeOfExpression(element); - case SyntaxKind.VoidExpression: return visitor.visitVoidExpression(element); - case SyntaxKind.ConditionalExpression: return visitor.visitConditionalExpression(element); - case SyntaxKind.BinaryExpression: return visitor.visitBinaryExpression(element); - case SyntaxKind.PostfixUnaryExpression: return visitor.visitPostfixUnaryExpression(element); - case SyntaxKind.PropertyAccessExpression: return visitor.visitPropertyAccessExpression(element); - case SyntaxKind.InvocationExpression: return visitor.visitInvocationExpression(element); - case SyntaxKind.ArrayLiteralExpression: return visitor.visitArrayLiteralExpression(element); - case SyntaxKind.ObjectLiteralExpression: return visitor.visitObjectLiteralExpression(element); - case SyntaxKind.ObjectCreationExpression: return visitor.visitObjectCreationExpression(element); - case SyntaxKind.ParenthesizedExpression: return visitor.visitParenthesizedExpression(element); - case SyntaxKind.ParenthesizedArrowFunctionExpression: return visitor.visitParenthesizedArrowFunctionExpression(element); - case SyntaxKind.SimpleArrowFunctionExpression: return visitor.visitSimpleArrowFunctionExpression(element); - case SyntaxKind.TypeAssertionExpression: return visitor.visitTypeAssertionExpression(element); - case SyntaxKind.ElementAccessExpression: return visitor.visitElementAccessExpression(element); - case SyntaxKind.FunctionExpression: return visitor.visitFunctionExpression(element); - case SyntaxKind.OmittedExpression: return visitor.visitOmittedExpression(element); - case SyntaxKind.TemplateExpression: return visitor.visitTemplateExpression(element); - case SyntaxKind.TemplateAccessExpression: return visitor.visitTemplateAccessExpression(element); - case SyntaxKind.YieldExpression: return visitor.visitYieldExpression(element); - case SyntaxKind.AwaitExpression: return visitor.visitAwaitExpression(element); - case SyntaxKind.VariableDeclaration: return visitor.visitVariableDeclaration(element); - case SyntaxKind.VariableDeclarator: return visitor.visitVariableDeclarator(element); - case SyntaxKind.ArgumentList: return visitor.visitArgumentList(element); - case SyntaxKind.ParameterList: return visitor.visitParameterList(element); - case SyntaxKind.TypeArgumentList: return visitor.visitTypeArgumentList(element); - case SyntaxKind.TypeParameterList: return visitor.visitTypeParameterList(element); - case SyntaxKind.HeritageClause: return visitor.visitHeritageClause(element); - case SyntaxKind.EqualsValueClause: return visitor.visitEqualsValueClause(element); - case SyntaxKind.CaseSwitchClause: return visitor.visitCaseSwitchClause(element); - case SyntaxKind.DefaultSwitchClause: return visitor.visitDefaultSwitchClause(element); - case SyntaxKind.ElseClause: return visitor.visitElseClause(element); - case SyntaxKind.CatchClause: return visitor.visitCatchClause(element); - case SyntaxKind.FinallyClause: return visitor.visitFinallyClause(element); - case SyntaxKind.TemplateClause: return visitor.visitTemplateClause(element); - case SyntaxKind.TypeParameter: return visitor.visitTypeParameter(element); - case SyntaxKind.Constraint: return visitor.visitConstraint(element); - case SyntaxKind.Parameter: return visitor.visitParameter(element); - case SyntaxKind.EnumElement: return visitor.visitEnumElement(element); - case SyntaxKind.TypeAnnotation: return visitor.visitTypeAnnotation(element); - case SyntaxKind.ExpressionBody: return visitor.visitExpressionBody(element); - case SyntaxKind.ComputedPropertyName: return visitor.visitComputedPropertyName(element); - case SyntaxKind.PropertyAssignment: return visitor.visitPropertyAssignment(element); - case SyntaxKind.TypeAlias: return visitor.visitTypeAlias(element); - case SyntaxKind.ExternalModuleReference: return visitor.visitExternalModuleReference(element); - case SyntaxKind.ModuleNameModuleReference: return visitor.visitModuleNameModuleReference(element); - default: return visitor.visitToken(element); - } - } - - export interface ISyntaxVisitor { - visitToken(token: ISyntaxToken): any; - visitSourceUnit(node: SourceUnitSyntax): any; - visitQualifiedName(node: QualifiedNameSyntax): any; - visitObjectType(node: ObjectTypeSyntax): any; - visitFunctionType(node: FunctionTypeSyntax): any; - visitArrayType(node: ArrayTypeSyntax): any; - visitConstructorType(node: ConstructorTypeSyntax): any; - visitGenericType(node: GenericTypeSyntax): any; - visitTypeQuery(node: TypeQuerySyntax): any; - visitTupleType(node: TupleTypeSyntax): any; - visitUnionType(node: UnionTypeSyntax): any; - visitParenthesizedType(node: ParenthesizedTypeSyntax): any; - visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): any; - visitFunctionDeclaration(node: FunctionDeclarationSyntax): any; - visitModuleDeclaration(node: ModuleDeclarationSyntax): any; - visitClassDeclaration(node: ClassDeclarationSyntax): any; - visitEnumDeclaration(node: EnumDeclarationSyntax): any; - visitImportDeclaration(node: ImportDeclarationSyntax): any; - visitExportAssignment(node: ExportAssignmentSyntax): any; - visitMethodDeclaration(node: MethodDeclarationSyntax): any; - visitPropertyDeclaration(node: PropertyDeclarationSyntax): any; - visitConstructorDeclaration(node: ConstructorDeclarationSyntax): any; - visitGetAccessor(node: GetAccessorSyntax): any; - visitSetAccessor(node: SetAccessorSyntax): any; - visitPropertySignature(node: PropertySignatureSyntax): any; - visitCallSignature(node: CallSignatureSyntax): any; - visitConstructSignature(node: ConstructSignatureSyntax): any; - visitIndexSignature(node: IndexSignatureSyntax): any; - visitMethodSignature(node: MethodSignatureSyntax): any; - visitBlock(node: BlockSyntax): any; - visitIfStatement(node: IfStatementSyntax): any; - visitVariableStatement(node: VariableStatementSyntax): any; - visitExpressionStatement(node: ExpressionStatementSyntax): any; - visitReturnStatement(node: ReturnStatementSyntax): any; - visitSwitchStatement(node: SwitchStatementSyntax): any; - visitBreakStatement(node: BreakStatementSyntax): any; - visitContinueStatement(node: ContinueStatementSyntax): any; - visitForStatement(node: ForStatementSyntax): any; - visitForInStatement(node: ForInStatementSyntax): any; - visitEmptyStatement(node: EmptyStatementSyntax): any; - visitThrowStatement(node: ThrowStatementSyntax): any; - visitWhileStatement(node: WhileStatementSyntax): any; - visitTryStatement(node: TryStatementSyntax): any; - visitLabeledStatement(node: LabeledStatementSyntax): any; - visitDoStatement(node: DoStatementSyntax): any; - visitDebuggerStatement(node: DebuggerStatementSyntax): any; - visitWithStatement(node: WithStatementSyntax): any; - visitPrefixUnaryExpression(node: PrefixUnaryExpressionSyntax): any; - visitDeleteExpression(node: DeleteExpressionSyntax): any; - visitTypeOfExpression(node: TypeOfExpressionSyntax): any; - visitVoidExpression(node: VoidExpressionSyntax): any; - visitConditionalExpression(node: ConditionalExpressionSyntax): any; - visitBinaryExpression(node: BinaryExpressionSyntax): any; - visitPostfixUnaryExpression(node: PostfixUnaryExpressionSyntax): any; - visitPropertyAccessExpression(node: PropertyAccessExpressionSyntax): any; - visitInvocationExpression(node: InvocationExpressionSyntax): any; - visitArrayLiteralExpression(node: ArrayLiteralExpressionSyntax): any; - visitObjectLiteralExpression(node: ObjectLiteralExpressionSyntax): any; - visitObjectCreationExpression(node: ObjectCreationExpressionSyntax): any; - visitParenthesizedExpression(node: ParenthesizedExpressionSyntax): any; - visitParenthesizedArrowFunctionExpression(node: ParenthesizedArrowFunctionExpressionSyntax): any; - visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): any; - visitTypeAssertionExpression(node: TypeAssertionExpressionSyntax): any; - visitElementAccessExpression(node: ElementAccessExpressionSyntax): any; - visitFunctionExpression(node: FunctionExpressionSyntax): any; - visitOmittedExpression(node: OmittedExpressionSyntax): any; - visitTemplateExpression(node: TemplateExpressionSyntax): any; - visitTemplateAccessExpression(node: TemplateAccessExpressionSyntax): any; - visitYieldExpression(node: YieldExpressionSyntax): any; - visitAwaitExpression(node: AwaitExpressionSyntax): any; - visitVariableDeclaration(node: VariableDeclarationSyntax): any; - visitVariableDeclarator(node: VariableDeclaratorSyntax): any; - visitArgumentList(node: ArgumentListSyntax): any; - visitParameterList(node: ParameterListSyntax): any; - visitTypeArgumentList(node: TypeArgumentListSyntax): any; - visitTypeParameterList(node: TypeParameterListSyntax): any; - visitHeritageClause(node: HeritageClauseSyntax): any; - visitEqualsValueClause(node: EqualsValueClauseSyntax): any; - visitCaseSwitchClause(node: CaseSwitchClauseSyntax): any; - visitDefaultSwitchClause(node: DefaultSwitchClauseSyntax): any; - visitElseClause(node: ElseClauseSyntax): any; - visitCatchClause(node: CatchClauseSyntax): any; - visitFinallyClause(node: FinallyClauseSyntax): any; - visitTemplateClause(node: TemplateClauseSyntax): any; - visitTypeParameter(node: TypeParameterSyntax): any; - visitConstraint(node: ConstraintSyntax): any; - visitParameter(node: ParameterSyntax): any; - visitEnumElement(node: EnumElementSyntax): any; - visitTypeAnnotation(node: TypeAnnotationSyntax): any; - visitExpressionBody(node: ExpressionBody): any; - visitComputedPropertyName(node: ComputedPropertyNameSyntax): any; - visitPropertyAssignment(node: PropertyAssignmentSyntax): any; - visitTypeAlias(node: TypeAliasSyntax): any; - visitExternalModuleReference(node: ExternalModuleReferenceSyntax): any; - visitModuleNameModuleReference(node: ModuleNameModuleReferenceSyntax): any; - } -} \ No newline at end of file diff --git a/src/services/syntax/syntaxWalker.generated.ts b/src/services/syntax/syntaxWalker.generated.ts deleted file mode 100644 index bd6f20299ea..00000000000 --- a/src/services/syntax/syntaxWalker.generated.ts +++ /dev/null @@ -1,638 +0,0 @@ -/// - -module TypeScript { - export class SyntaxWalker implements ISyntaxVisitor { - public visitToken(token: ISyntaxToken): void { - } - - private visitOptionalToken(token: ISyntaxToken): void { - if (token === undefined) { - return; - } - - this.visitToken(token); - } - - public visitList(list: ISyntaxNodeOrToken[]): void { - for (var i = 0, n = list.length; i < n; i++) { - visitNodeOrToken(this, list[i]); - } - } - - public visitSourceUnit(node: SourceUnitSyntax): void { - this.visitList(node.moduleElements); - this.visitToken(node.endOfFileToken); - } - - public visitQualifiedName(node: QualifiedNameSyntax): void { - visitNodeOrToken(this, node.left); - this.visitToken(node.dotToken); - this.visitToken(node.right); - } - - public visitObjectType(node: ObjectTypeSyntax): void { - this.visitToken(node.openBraceToken); - this.visitList(node.typeMembers); - this.visitToken(node.closeBraceToken); - } - - public visitFunctionType(node: FunctionTypeSyntax): void { - visitNodeOrToken(this, node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - this.visitToken(node.equalsGreaterThanToken); - visitNodeOrToken(this, node.type); - } - - public visitArrayType(node: ArrayTypeSyntax): void { - visitNodeOrToken(this, node.type); - this.visitToken(node.openBracketToken); - this.visitToken(node.closeBracketToken); - } - - public visitConstructorType(node: ConstructorTypeSyntax): void { - this.visitToken(node.newKeyword); - visitNodeOrToken(this, node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - this.visitToken(node.equalsGreaterThanToken); - visitNodeOrToken(this, node.type); - } - - public visitGenericType(node: GenericTypeSyntax): void { - visitNodeOrToken(this, node.name); - visitNodeOrToken(this, node.typeArgumentList); - } - - public visitTypeQuery(node: TypeQuerySyntax): void { - this.visitToken(node.typeOfKeyword); - visitNodeOrToken(this, node.name); - } - - public visitTupleType(node: TupleTypeSyntax): void { - this.visitToken(node.openBracketToken); - this.visitList(node.types); - this.visitToken(node.closeBracketToken); - } - - public visitUnionType(node: UnionTypeSyntax): void { - visitNodeOrToken(this, node.left); - this.visitToken(node.barToken); - visitNodeOrToken(this, node.right); - } - - public visitParenthesizedType(node: ParenthesizedTypeSyntax): void { - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.type); - this.visitToken(node.closeParenToken); - } - - public visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.interfaceKeyword); - this.visitToken(node.identifier); - visitNodeOrToken(this, node.typeParameterList); - this.visitList(node.heritageClauses); - visitNodeOrToken(this, node.body); - } - - public visitFunctionDeclaration(node: FunctionDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.functionKeyword); - this.visitOptionalToken(node.asterixToken); - this.visitToken(node.identifier); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitModuleDeclaration(node: ModuleDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.moduleKeyword); - visitNodeOrToken(this, node.name); - this.visitToken(node.openBraceToken); - this.visitList(node.moduleElements); - this.visitToken(node.closeBraceToken); - } - - public visitClassDeclaration(node: ClassDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.classKeyword); - this.visitToken(node.identifier); - visitNodeOrToken(this, node.typeParameterList); - this.visitList(node.heritageClauses); - this.visitToken(node.openBraceToken); - this.visitList(node.classElements); - this.visitToken(node.closeBraceToken); - } - - public visitEnumDeclaration(node: EnumDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.enumKeyword); - this.visitToken(node.identifier); - this.visitToken(node.openBraceToken); - this.visitList(node.enumElements); - this.visitToken(node.closeBraceToken); - } - - public visitImportDeclaration(node: ImportDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.importKeyword); - this.visitToken(node.identifier); - this.visitToken(node.equalsToken); - visitNodeOrToken(this, node.moduleReference); - this.visitOptionalToken(node.semicolonToken); - } - - public visitExportAssignment(node: ExportAssignmentSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.exportKeyword); - this.visitToken(node.equalsToken); - this.visitToken(node.identifier); - this.visitOptionalToken(node.semicolonToken); - } - - public visitMethodDeclaration(node: MethodDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitOptionalToken(node.asterixToken); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitPropertyDeclaration(node: PropertyDeclarationSyntax): void { - this.visitList(node.modifiers); - visitNodeOrToken(this, node.variableDeclarator); - this.visitOptionalToken(node.semicolonToken); - } - - public visitConstructorDeclaration(node: ConstructorDeclarationSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.constructorKeyword); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitGetAccessor(node: GetAccessorSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.getKeyword); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitSetAccessor(node: SetAccessorSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.setKeyword); - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitPropertySignature(node: PropertySignatureSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.visitOptionalToken(node.questionToken); - visitNodeOrToken(this, node.typeAnnotation); - this.visitOptionalToken(node.semicolonOrCommaToken); - } - - public visitCallSignature(node: CallSignatureSyntax): void { - visitNodeOrToken(this, node.typeParameterList); - visitNodeOrToken(this, node.parameterList); - visitNodeOrToken(this, node.typeAnnotation); - this.visitOptionalToken(node.semicolonOrCommaToken); - } - - public visitConstructSignature(node: ConstructSignatureSyntax): void { - this.visitToken(node.newKeyword); - visitNodeOrToken(this, node.callSignature); - } - - public visitIndexSignature(node: IndexSignatureSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.openBracketToken); - this.visitList(node.parameters); - this.visitToken(node.closeBracketToken); - visitNodeOrToken(this, node.typeAnnotation); - this.visitOptionalToken(node.semicolonOrCommaToken); - } - - public visitMethodSignature(node: MethodSignatureSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.visitOptionalToken(node.questionToken); - visitNodeOrToken(this, node.callSignature); - } - - public visitBlock(node: BlockSyntax): void { - this.visitOptionalToken(node.equalsGreaterThanToken); - this.visitToken(node.openBraceToken); - this.visitList(node.statements); - this.visitToken(node.closeBraceToken); - } - - public visitIfStatement(node: IfStatementSyntax): void { - this.visitToken(node.ifKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.statement); - visitNodeOrToken(this, node.elseClause); - } - - public visitVariableStatement(node: VariableStatementSyntax): void { - this.visitList(node.modifiers); - visitNodeOrToken(this, node.variableDeclaration); - this.visitOptionalToken(node.semicolonToken); - } - - public visitExpressionStatement(node: ExpressionStatementSyntax): void { - visitNodeOrToken(this, node.expression); - this.visitOptionalToken(node.semicolonToken); - } - - public visitReturnStatement(node: ReturnStatementSyntax): void { - this.visitToken(node.returnKeyword); - visitNodeOrToken(this, node.expression); - this.visitOptionalToken(node.semicolonToken); - } - - public visitSwitchStatement(node: SwitchStatementSyntax): void { - this.visitToken(node.switchKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.expression); - this.visitToken(node.closeParenToken); - this.visitToken(node.openBraceToken); - this.visitList(node.switchClauses); - this.visitToken(node.closeBraceToken); - } - - public visitBreakStatement(node: BreakStatementSyntax): void { - this.visitToken(node.breakKeyword); - this.visitOptionalToken(node.identifier); - this.visitOptionalToken(node.semicolonToken); - } - - public visitContinueStatement(node: ContinueStatementSyntax): void { - this.visitToken(node.continueKeyword); - this.visitOptionalToken(node.identifier); - this.visitOptionalToken(node.semicolonToken); - } - - public visitForStatement(node: ForStatementSyntax): void { - this.visitToken(node.forKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.initializer); - this.visitToken(node.firstSemicolonToken); - visitNodeOrToken(this, node.condition); - this.visitToken(node.secondSemicolonToken); - visitNodeOrToken(this, node.incrementor); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.statement); - } - - public visitForInStatement(node: ForInStatementSyntax): void { - this.visitToken(node.forKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.left); - this.visitToken(node.inKeyword); - visitNodeOrToken(this, node.right); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.statement); - } - - public visitEmptyStatement(node: EmptyStatementSyntax): void { - this.visitToken(node.semicolonToken); - } - - public visitThrowStatement(node: ThrowStatementSyntax): void { - this.visitToken(node.throwKeyword); - visitNodeOrToken(this, node.expression); - this.visitOptionalToken(node.semicolonToken); - } - - public visitWhileStatement(node: WhileStatementSyntax): void { - this.visitToken(node.whileKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.statement); - } - - public visitTryStatement(node: TryStatementSyntax): void { - this.visitToken(node.tryKeyword); - visitNodeOrToken(this, node.block); - visitNodeOrToken(this, node.catchClause); - visitNodeOrToken(this, node.finallyClause); - } - - public visitLabeledStatement(node: LabeledStatementSyntax): void { - this.visitToken(node.identifier); - this.visitToken(node.colonToken); - visitNodeOrToken(this, node.statement); - } - - public visitDoStatement(node: DoStatementSyntax): void { - this.visitToken(node.doKeyword); - visitNodeOrToken(this, node.statement); - this.visitToken(node.whileKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.visitToken(node.closeParenToken); - this.visitOptionalToken(node.semicolonToken); - } - - public visitDebuggerStatement(node: DebuggerStatementSyntax): void { - this.visitToken(node.debuggerKeyword); - this.visitOptionalToken(node.semicolonToken); - } - - public visitWithStatement(node: WithStatementSyntax): void { - this.visitToken(node.withKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.condition); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.statement); - } - - public visitPrefixUnaryExpression(node: PrefixUnaryExpressionSyntax): void { - this.visitToken(node.operatorToken); - visitNodeOrToken(this, node.operand); - } - - public visitDeleteExpression(node: DeleteExpressionSyntax): void { - this.visitToken(node.deleteKeyword); - visitNodeOrToken(this, node.expression); - } - - public visitTypeOfExpression(node: TypeOfExpressionSyntax): void { - this.visitToken(node.typeOfKeyword); - visitNodeOrToken(this, node.expression); - } - - public visitVoidExpression(node: VoidExpressionSyntax): void { - this.visitToken(node.voidKeyword); - visitNodeOrToken(this, node.expression); - } - - public visitConditionalExpression(node: ConditionalExpressionSyntax): void { - visitNodeOrToken(this, node.condition); - this.visitToken(node.questionToken); - visitNodeOrToken(this, node.whenTrue); - this.visitToken(node.colonToken); - visitNodeOrToken(this, node.whenFalse); - } - - public visitBinaryExpression(node: BinaryExpressionSyntax): void { - visitNodeOrToken(this, node.left); - this.visitToken(node.operatorToken); - visitNodeOrToken(this, node.right); - } - - public visitPostfixUnaryExpression(node: PostfixUnaryExpressionSyntax): void { - visitNodeOrToken(this, node.operand); - this.visitToken(node.operatorToken); - } - - public visitPropertyAccessExpression(node: PropertyAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - this.visitToken(node.dotToken); - this.visitToken(node.name); - } - - public visitInvocationExpression(node: InvocationExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - visitNodeOrToken(this, node.argumentList); - } - - public visitArrayLiteralExpression(node: ArrayLiteralExpressionSyntax): void { - this.visitToken(node.openBracketToken); - this.visitList(node.expressions); - this.visitToken(node.closeBracketToken); - } - - public visitObjectLiteralExpression(node: ObjectLiteralExpressionSyntax): void { - this.visitToken(node.openBraceToken); - this.visitList(node.propertyAssignments); - this.visitToken(node.closeBraceToken); - } - - public visitObjectCreationExpression(node: ObjectCreationExpressionSyntax): void { - this.visitToken(node.newKeyword); - visitNodeOrToken(this, node.expression); - visitNodeOrToken(this, node.argumentList); - } - - public visitParenthesizedExpression(node: ParenthesizedExpressionSyntax): void { - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.expression); - this.visitToken(node.closeParenToken); - } - - public visitParenthesizedArrowFunctionExpression(node: ParenthesizedArrowFunctionExpressionSyntax): void { - this.visitOptionalToken(node.asyncKeyword); - visitNodeOrToken(this, node.callSignature); - this.visitOptionalToken(node.equalsGreaterThanToken); - visitNodeOrToken(this, node.body); - } - - public visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): void { - this.visitOptionalToken(node.asyncKeyword); - visitNodeOrToken(this, node.parameter); - this.visitToken(node.equalsGreaterThanToken); - visitNodeOrToken(this, node.body); - } - - public visitTypeAssertionExpression(node: TypeAssertionExpressionSyntax): void { - this.visitToken(node.lessThanToken); - visitNodeOrToken(this, node.type); - this.visitToken(node.greaterThanToken); - visitNodeOrToken(this, node.expression); - } - - public visitElementAccessExpression(node: ElementAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - this.visitToken(node.openBracketToken); - visitNodeOrToken(this, node.argumentExpression); - this.visitToken(node.closeBracketToken); - } - - public visitFunctionExpression(node: FunctionExpressionSyntax): void { - this.visitOptionalToken(node.asyncKeyword); - this.visitToken(node.functionKeyword); - this.visitOptionalToken(node.asterixToken); - this.visitOptionalToken(node.identifier); - visitNodeOrToken(this, node.callSignature); - visitNodeOrToken(this, node.body); - } - - public visitOmittedExpression(node: OmittedExpressionSyntax): void { - } - - public visitTemplateExpression(node: TemplateExpressionSyntax): void { - this.visitToken(node.templateStartToken); - this.visitList(node.templateClauses); - } - - public visitTemplateAccessExpression(node: TemplateAccessExpressionSyntax): void { - visitNodeOrToken(this, node.expression); - visitNodeOrToken(this, node.templateExpression); - } - - public visitYieldExpression(node: YieldExpressionSyntax): void { - this.visitToken(node.yieldKeyword); - this.visitOptionalToken(node.asterixToken); - visitNodeOrToken(this, node.expression); - } - - public visitAwaitExpression(node: AwaitExpressionSyntax): void { - this.visitToken(node.awaitKeyword); - visitNodeOrToken(this, node.expression); - } - - public visitVariableDeclaration(node: VariableDeclarationSyntax): void { - this.visitToken(node.varConstOrLetKeyword); - this.visitList(node.variableDeclarators); - } - - public visitVariableDeclarator(node: VariableDeclaratorSyntax): void { - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.typeAnnotation); - visitNodeOrToken(this, node.equalsValueClause); - } - - public visitArgumentList(node: ArgumentListSyntax): void { - visitNodeOrToken(this, node.typeArgumentList); - this.visitToken(node.openParenToken); - this.visitList(node.arguments); - this.visitToken(node.closeParenToken); - } - - public visitParameterList(node: ParameterListSyntax): void { - this.visitToken(node.openParenToken); - this.visitList(node.parameters); - this.visitToken(node.closeParenToken); - } - - public visitTypeArgumentList(node: TypeArgumentListSyntax): void { - this.visitToken(node.lessThanToken); - this.visitList(node.typeArguments); - this.visitToken(node.greaterThanToken); - } - - public visitTypeParameterList(node: TypeParameterListSyntax): void { - this.visitToken(node.lessThanToken); - this.visitList(node.typeParameters); - this.visitToken(node.greaterThanToken); - } - - public visitHeritageClause(node: HeritageClauseSyntax): void { - this.visitToken(node.extendsOrImplementsKeyword); - this.visitList(node.typeNames); - } - - public visitEqualsValueClause(node: EqualsValueClauseSyntax): void { - this.visitToken(node.equalsToken); - visitNodeOrToken(this, node.value); - } - - public visitCaseSwitchClause(node: CaseSwitchClauseSyntax): void { - this.visitToken(node.caseKeyword); - visitNodeOrToken(this, node.expression); - this.visitToken(node.colonToken); - this.visitList(node.statements); - } - - public visitDefaultSwitchClause(node: DefaultSwitchClauseSyntax): void { - this.visitToken(node.defaultKeyword); - this.visitToken(node.colonToken); - this.visitList(node.statements); - } - - public visitElseClause(node: ElseClauseSyntax): void { - this.visitToken(node.elseKeyword); - visitNodeOrToken(this, node.statement); - } - - public visitCatchClause(node: CatchClauseSyntax): void { - this.visitToken(node.catchKeyword); - this.visitToken(node.openParenToken); - this.visitToken(node.identifier); - visitNodeOrToken(this, node.typeAnnotation); - this.visitToken(node.closeParenToken); - visitNodeOrToken(this, node.block); - } - - public visitFinallyClause(node: FinallyClauseSyntax): void { - this.visitToken(node.finallyKeyword); - visitNodeOrToken(this, node.block); - } - - public visitTemplateClause(node: TemplateClauseSyntax): void { - visitNodeOrToken(this, node.expression); - this.visitToken(node.templateMiddleOrEndToken); - } - - public visitTypeParameter(node: TypeParameterSyntax): void { - this.visitToken(node.identifier); - visitNodeOrToken(this, node.constraint); - } - - public visitConstraint(node: ConstraintSyntax): void { - this.visitToken(node.extendsKeyword); - visitNodeOrToken(this, node.typeOrExpression); - } - - public visitParameter(node: ParameterSyntax): void { - this.visitOptionalToken(node.dotDotDotToken); - this.visitList(node.modifiers); - this.visitToken(node.identifier); - this.visitOptionalToken(node.questionToken); - visitNodeOrToken(this, node.typeAnnotation); - visitNodeOrToken(this, node.equalsValueClause); - } - - public visitEnumElement(node: EnumElementSyntax): void { - visitNodeOrToken(this, node.propertyName); - visitNodeOrToken(this, node.equalsValueClause); - } - - public visitTypeAnnotation(node: TypeAnnotationSyntax): void { - this.visitToken(node.colonToken); - visitNodeOrToken(this, node.type); - } - - public visitExpressionBody(node: ExpressionBody): void { - this.visitToken(node.equalsGreaterThanToken); - visitNodeOrToken(this, node.expression); - } - - public visitComputedPropertyName(node: ComputedPropertyNameSyntax): void { - this.visitToken(node.openBracketToken); - visitNodeOrToken(this, node.expression); - this.visitToken(node.closeBracketToken); - } - - public visitPropertyAssignment(node: PropertyAssignmentSyntax): void { - visitNodeOrToken(this, node.propertyName); - this.visitToken(node.colonToken); - visitNodeOrToken(this, node.expression); - } - - public visitTypeAlias(node: TypeAliasSyntax): void { - this.visitList(node.modifiers); - this.visitToken(node.typeKeyword); - this.visitToken(node.identifier); - this.visitToken(node.equalsToken); - visitNodeOrToken(this, node.type); - this.visitOptionalToken(node.semicolonToken); - } - - public visitExternalModuleReference(node: ExternalModuleReferenceSyntax): void { - this.visitToken(node.requireKeyword); - this.visitToken(node.openParenToken); - visitNodeOrToken(this, node.expression); - this.visitToken(node.closeParenToken); - } - - public visitModuleNameModuleReference(node: ModuleNameModuleReferenceSyntax): void { - visitNodeOrToken(this, node.moduleName); - } - } -} \ No newline at end of file diff --git a/src/services/syntax/testUtilities.ts b/src/services/syntax/testUtilities.ts deleted file mode 100644 index 8da87eb1358..00000000000 --- a/src/services/syntax/testUtilities.ts +++ /dev/null @@ -1,175 +0,0 @@ -module TypeScript { - function assertParent(parent: ISyntaxElement, child: ISyntaxElement) { - if (child) { - return Debug.assert(parent === child.parent); - } - } - - export function nodeStructuralEquals(node1: TypeScript.ISyntaxNode, node2: TypeScript.ISyntaxNode, checkParents: boolean, text1: ISimpleText, text2: ISimpleText): boolean { - if (node1 === node2) { return true; } - if (!node1 || !node2) { return false; } - - Debug.assert(node1.kind === TypeScript.SyntaxKind.SourceUnit || node1.parent); - Debug.assert(node2.kind === TypeScript.SyntaxKind.SourceUnit || node2.parent); - - if (node1.kind !== node2.kind) { return false; } - if (childCount(node1) !== childCount(node2)) { return false; } - - for (var i = 0, n = childCount(node1); i < n; i++) { - var element1 = childAt(node1, i); - var element2 = childAt(node2, i); - - if (checkParents) { - assertParent(node1, element1); - assertParent(node2, element2); - } - - if (!elementStructuralEquals(element1, element2, checkParents, text1, text2)) { - return false; - } - } - - return true; - } - - export function nodeOrTokenStructuralEquals(node1: TypeScript.ISyntaxNodeOrToken, node2: TypeScript.ISyntaxNodeOrToken, checkParents: boolean, text1: ISimpleText, text2: ISimpleText): boolean { - if (node1 === node2) { - return true; - } - - if (!node1 || !node2) { - return false; - } - - Debug.assert(node1.kind === TypeScript.SyntaxKind.SourceUnit || node1.parent); - Debug.assert(node2.kind === TypeScript.SyntaxKind.SourceUnit || node2.parent); - - if (TypeScript.isToken(node1)) { - return TypeScript.isToken(node2) ? tokenStructuralEquals(node1, node2, text1, text2) : false; - } - - return TypeScript.isNode(node2) ? nodeStructuralEquals(node1, node2, checkParents, text1, text2) : false; - } - - export function tokenStructuralEquals(token1: TypeScript.ISyntaxToken, token2: TypeScript.ISyntaxToken, text1: ISimpleText, text2: ISimpleText): boolean { - if (token1 === token2) { - return true; - } - - if (!token1 || !token2) { - return false; - } - - Debug.assert(token1.parent); - Debug.assert(token2.parent); - - return token1.kind === token2.kind && - TypeScript.width(token1) === TypeScript.width(token2) && - token1.fullWidth() === token2.fullWidth() && - token1.fullStart() === token2.fullStart() && - TypeScript.fullEnd(token1) === TypeScript.fullEnd(token2) && - TypeScript.start(token1, text1) === TypeScript.start(token2, text2) && - token1.text() === token2.text() && - triviaListStructuralEquals(token1.leadingTrivia(text1), token2.leadingTrivia(text2)); - } - - export function triviaListStructuralEquals(triviaList1: TypeScript.ISyntaxTriviaList, triviaList2: TypeScript.ISyntaxTriviaList): boolean { - Debug.assert(triviaList1.isShared() || triviaList1.parent); - Debug.assert(triviaList1.isShared() || triviaList2.parent); - - if (triviaList1.count() !== triviaList2.count()) { - return false; - } - - for (var i = 0, n = triviaList1.count(); i < n; i++) { - if (!triviaStructuralEquals(triviaList1.syntaxTriviaAt(i), triviaList2.syntaxTriviaAt(i))) { - return false; - } - } - - return true; - } - - export function triviaStructuralEquals(trivia1: TypeScript.ISyntaxTrivia, trivia2: TypeScript.ISyntaxTrivia): boolean { - Debug.assert(trivia1.parent); - Debug.assert(trivia2.parent); - - return trivia1.kind === trivia2.kind && - trivia1.fullWidth() === trivia2.fullWidth() && - trivia1.fullText() === trivia2.fullText(); - } - - function listStructuralEquals(list1: T[], list2: T[], checkParents: boolean, text1: ISimpleText, text2: ISimpleText): boolean { - Debug.assert(list1.parent); - Debug.assert(list2.parent); - - if (childCount(list1) !== childCount(list2)) { - return false; - } - - for (var i = 0, n = childCount(list1); i < n; i++) { - var child1 = childAt(list1, i); - var child2 = childAt(list2, i); - - if (checkParents) { - assertParent(list1, child1); - assertParent(list2, child2); - } - - if (!elementStructuralEquals(child1, child2, checkParents, text1, text2)) { - return false; - } - } - - return true; - } - - export function elementStructuralEquals(element1: TypeScript.ISyntaxElement, element2: TypeScript.ISyntaxElement, checkParents: boolean, text1: ISimpleText, text2: ISimpleText) { - if (element1 === element2) { - return true; - } - - if (!element1 || !element2) { - return false; - } - - Debug.assert(element1.kind === SyntaxKind.SourceUnit || element1.parent); - Debug.assert(element2.kind === SyntaxKind.SourceUnit || element2.parent); - - if (element2.kind !== element2.kind) { - return false; - } - - if (TypeScript.fullStart(element1) !== TypeScript.fullStart(element2)) { - return false; - } - - if (TypeScript.start(element1) !== TypeScript.start(element2)) { - return false; - } - - if (TypeScript.fullEnd(element1) !== TypeScript.fullEnd(element2)) { - return false; - } - - if (TypeScript.isToken(element1)) { - return tokenStructuralEquals(element1, element2, text1, text2); - } - else if (TypeScript.isNode(element1)) { - return nodeStructuralEquals(element1, element2, checkParents, text1, text2); - } - else if (TypeScript.isList(element1)) { - return listStructuralEquals(element1, element2, checkParents, text1, text2); - } - - throw TypeScript.Errors.invalidOperation(); - } - - export function treeStructuralEquals(tree1: TypeScript.SyntaxTree, tree2: TypeScript.SyntaxTree, checkParents: boolean): boolean { - if (!TypeScript.ArrayUtilities.sequenceEquals(tree1.diagnostics(), tree2.diagnostics(), TypeScript.Diagnostic.equals)) { - return false; - } - - return nodeStructuralEquals(tree1.sourceUnit(), tree2.sourceUnit(), checkParents, tree1.text, tree2.text); - } -} \ No newline at end of file diff --git a/src/services/syntax/unicode.ts b/src/services/syntax/unicode.ts deleted file mode 100644 index b1e94090de7..00000000000 --- a/src/services/syntax/unicode.ts +++ /dev/null @@ -1,107 +0,0 @@ -/// - -module TypeScript { - export class Unicode { - /* - As per ECMAScript Language Specification 3th Edition, Section 7.6: Identifiers - IdentifierStart :: - Can contain Unicode 3.0.0 categories: - “Uppercase letter (Lu)”, - “Lowercase letter (Ll)”, - “Titlecase letter (Lt)”, - “Modifier letter (Lm)”, - “Other letter (Lo)”, or - “Letter number (Nl)”. - IdentifierPart :: = - Can contain IdentifierStart + Unicode 3.0.0 categories: - “Non-spacing mark (Mn)”, - “Combining spacing mark (Mc)”, - “Decimal number (Nd)”, or - “Connector punctuation (Pc)”. - - Codepoint ranges for ES3 Identifiers are extracted from the Unicode 3.0.0 specification at: - http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt - */ - static unicodeES3IdentifierStart = [170,170, 181,181, 186,186, 192,214, 216,246, 248,543, 546,563, 592,685, 688,696, 699,705, 720,721, 736,740, 750,750, 890,890, 902,902, 904,906, 908,908, 910,929, 931,974, 976,983, 986,1011, 1024,1153, 1164,1220, 1223,1224, 1227,1228, 1232,1269, 1272,1273, 1329,1366, 1369,1369, 1377,1415, 1488,1514, 1520,1522, 1569,1594, 1600,1610, 1649,1747, 1749,1749, 1765,1766, 1786,1788, 1808,1808, 1810,1836, 1920,1957, 2309,2361, 2365,2365, 2384,2384, 2392,2401, 2437,2444, 2447,2448, 2451,2472, 2474,2480, 2482,2482, 2486,2489, 2524,2525, 2527,2529, 2544,2545, 2565,2570, 2575,2576, 2579,2600, 2602,2608, 2610,2611, 2613,2614, 2616,2617, 2649,2652, 2654,2654, 2674,2676, 2693,2699, 2701,2701, 2703,2705, 2707,2728, 2730,2736, 2738,2739, 2741,2745, 2749,2749, 2768,2768, 2784,2784, 2821,2828, 2831,2832, 2835,2856, 2858,2864, 2866,2867, 2870,2873, 2877,2877, 2908,2909, 2911,2913, 2949,2954, 2958,2960, 2962,2965, 2969,2970, 2972,2972, 2974,2975, 2979,2980, 2984,2986, 2990,2997, 2999,3001, 3077,3084, 3086,3088, 3090,3112, 3114,3123, 3125,3129, 3168,3169, 3205,3212, 3214,3216, 3218,3240, 3242,3251, 3253,3257, 3294,3294, 3296,3297, 3333,3340, 3342,3344, 3346,3368, 3370,3385, 3424,3425, 3461,3478, 3482,3505, 3507,3515, 3517,3517, 3520,3526, 3585,3632, 3634,3635, 3648,3654, 3713,3714, 3716,3716, 3719,3720, 3722,3722, 3725,3725, 3732,3735, 3737,3743, 3745,3747, 3749,3749, 3751,3751, 3754,3755, 3757,3760, 3762,3763, 3773,3773, 3776,3780, 3782,3782, 3804,3805, 3840,3840, 3904,3911, 3913,3946, 3976,3979, 4096,4129, 4131,4135, 4137,4138, 4176,4181, 4256,4293, 4304,4342, 4352,4441, 4447,4514, 4520,4601, 4608,4614, 4616,4678, 4680,4680, 4682,4685, 4688,4694, 4696,4696, 4698,4701, 4704,4742, 4744,4744, 4746,4749, 4752,4782, 4784,4784, 4786,4789, 4792,4798, 4800,4800, 4802,4805, 4808,4814, 4816,4822, 4824,4846, 4848,4878, 4880,4880, 4882,4885, 4888,4894, 4896,4934, 4936,4954, 5024,5108, 5121,5740, 5743,5750, 5761,5786, 5792,5866, 6016,6067, 6176,6263, 6272,6312, 7680,7835, 7840,7929, 7936,7957, 7960,7965, 7968,8005, 8008,8013, 8016,8023, 8025,8025, 8027,8027, 8029,8029, 8031,8061, 8064,8116, 8118,8124, 8126,8126, 8130,8132, 8134,8140, 8144,8147, 8150,8155, 8160,8172, 8178,8180, 8182,8188, 8319,8319, 8450,8450, 8455,8455, 8458,8467, 8469,8469, 8473,8477, 8484,8484, 8486,8486, 8488,8488, 8490,8493, 8495,8497, 8499,8505, 8544,8579, 12293,12295, 12321,12329, 12337,12341, 12344,12346, 12353,12436, 12445,12446, 12449,12538, 12540,12542, 12549,12588, 12593,12686, 12704,12727, 13312,19893, 19968,40869, 40960,42124, 44032,55203, 63744,64045, 64256,64262, 64275,64279, 64285,64285, 64287,64296, 64298,64310, 64312,64316, 64318,64318, 64320,64321, 64323,64324, 64326,64433, 64467,64829, 64848,64911, 64914,64967, 65008,65019, 65136,65138, 65140,65140, 65142,65276, 65313,65338, 65345,65370, 65382,65470, 65474,65479, 65482,65487, 65490,65495, 65498,65500, ]; - static unicodeES3IdentifierPart = [170,170, 181,181, 186,186, 192,214, 216,246, 248,543, 546,563, 592,685, 688,696, 699,705, 720,721, 736,740, 750,750, 768,846, 864,866, 890,890, 902,902, 904,906, 908,908, 910,929, 931,974, 976,983, 986,1011, 1024,1153, 1155,1158, 1164,1220, 1223,1224, 1227,1228, 1232,1269, 1272,1273, 1329,1366, 1369,1369, 1377,1415, 1425,1441, 1443,1465, 1467,1469, 1471,1471, 1473,1474, 1476,1476, 1488,1514, 1520,1522, 1569,1594, 1600,1621, 1632,1641, 1648,1747, 1749,1756, 1759,1768, 1770,1773, 1776,1788, 1808,1836, 1840,1866, 1920,1968, 2305,2307, 2309,2361, 2364,2381, 2384,2388, 2392,2403, 2406,2415, 2433,2435, 2437,2444, 2447,2448, 2451,2472, 2474,2480, 2482,2482, 2486,2489, 2492,2492, 2494,2500, 2503,2504, 2507,2509, 2519,2519, 2524,2525, 2527,2531, 2534,2545, 2562,2562, 2565,2570, 2575,2576, 2579,2600, 2602,2608, 2610,2611, 2613,2614, 2616,2617, 2620,2620, 2622,2626, 2631,2632, 2635,2637, 2649,2652, 2654,2654, 2662,2676, 2689,2691, 2693,2699, 2701,2701, 2703,2705, 2707,2728, 2730,2736, 2738,2739, 2741,2745, 2748,2757, 2759,2761, 2763,2765, 2768,2768, 2784,2784, 2790,2799, 2817,2819, 2821,2828, 2831,2832, 2835,2856, 2858,2864, 2866,2867, 2870,2873, 2876,2883, 2887,2888, 2891,2893, 2902,2903, 2908,2909, 2911,2913, 2918,2927, 2946,2947, 2949,2954, 2958,2960, 2962,2965, 2969,2970, 2972,2972, 2974,2975, 2979,2980, 2984,2986, 2990,2997, 2999,3001, 3006,3010, 3014,3016, 3018,3021, 3031,3031, 3047,3055, 3073,3075, 3077,3084, 3086,3088, 3090,3112, 3114,3123, 3125,3129, 3134,3140, 3142,3144, 3146,3149, 3157,3158, 3168,3169, 3174,3183, 3202,3203, 3205,3212, 3214,3216, 3218,3240, 3242,3251, 3253,3257, 3262,3268, 3270,3272, 3274,3277, 3285,3286, 3294,3294, 3296,3297, 3302,3311, 3330,3331, 3333,3340, 3342,3344, 3346,3368, 3370,3385, 3390,3395, 3398,3400, 3402,3405, 3415,3415, 3424,3425, 3430,3439, 3458,3459, 3461,3478, 3482,3505, 3507,3515, 3517,3517, 3520,3526, 3530,3530, 3535,3540, 3542,3542, 3544,3551, 3570,3571, 3585,3642, 3648,3662, 3664,3673, 3713,3714, 3716,3716, 3719,3720, 3722,3722, 3725,3725, 3732,3735, 3737,3743, 3745,3747, 3749,3749, 3751,3751, 3754,3755, 3757,3769, 3771,3773, 3776,3780, 3782,3782, 3784,3789, 3792,3801, 3804,3805, 3840,3840, 3864,3865, 3872,3881, 3893,3893, 3895,3895, 3897,3897, 3902,3911, 3913,3946, 3953,3972, 3974,3979, 3984,3991, 3993,4028, 4038,4038, 4096,4129, 4131,4135, 4137,4138, 4140,4146, 4150,4153, 4160,4169, 4176,4185, 4256,4293, 4304,4342, 4352,4441, 4447,4514, 4520,4601, 4608,4614, 4616,4678, 4680,4680, 4682,4685, 4688,4694, 4696,4696, 4698,4701, 4704,4742, 4744,4744, 4746,4749, 4752,4782, 4784,4784, 4786,4789, 4792,4798, 4800,4800, 4802,4805, 4808,4814, 4816,4822, 4824,4846, 4848,4878, 4880,4880, 4882,4885, 4888,4894, 4896,4934, 4936,4954, 4969,4977, 5024,5108, 5121,5740, 5743,5750, 5761,5786, 5792,5866, 6016,6099, 6112,6121, 6160,6169, 6176,6263, 6272,6313, 7680,7835, 7840,7929, 7936,7957, 7960,7965, 7968,8005, 8008,8013, 8016,8023, 8025,8025, 8027,8027, 8029,8029, 8031,8061, 8064,8116, 8118,8124, 8126,8126, 8130,8132, 8134,8140, 8144,8147, 8150,8155, 8160,8172, 8178,8180, 8182,8188, 8255,8256, 8319,8319, 8400,8412, 8417,8417, 8450,8450, 8455,8455, 8458,8467, 8469,8469, 8473,8477, 8484,8484, 8486,8486, 8488,8488, 8490,8493, 8495,8497, 8499,8505, 8544,8579, 12293,12295, 12321,12335, 12337,12341, 12344,12346, 12353,12436, 12441,12442, 12445,12446, 12449,12542, 12549,12588, 12593,12686, 12704,12727, 13312,19893, 19968,40869, 40960,42124, 44032,55203, 63744,64045, 64256,64262, 64275,64279, 64285,64296, 64298,64310, 64312,64316, 64318,64318, 64320,64321, 64323,64324, 64326,64433, 64467,64829, 64848,64911, 64914,64967, 65008,65019, 65056,65059, 65075,65076, 65101,65103, 65136,65138, 65140,65140, 65142,65276, 65296,65305, 65313,65338, 65343,65343, 65345,65370, 65381,65470, 65474,65479, 65482,65487, 65490,65495, 65498,65500, ]; - - /* - As per ECMAScript Language Specification 5th Edition, Section 7.6: ISyntaxToken Names and Identifiers - IdentifierStart :: - Can contain Unicode 6.2 categories: - “Uppercase letter (Lu)”, - “Lowercase letter (Ll)”, - “Titlecase letter (Lt)”, - “Modifier letter (Lm)”, - “Other letter (Lo)”, or - “Letter number (Nl)”. - IdentifierPart :: - Can contain IdentifierStart + Unicode 6.2 categories: - “Non-spacing mark (Mn)”, - “Combining spacing mark (Mc)”, - “Decimal number (Nd)”, - “Connector punctuation (Pc)”, - , or - . - - Codepoint ranges for ES5 Identifiers are extracted from the Unicode 6.2 specification at: - http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt - */ - static unicodeES5IdentifierStart = [170,170, 181,181, 186,186, 192,214, 216,246, 248,705, 710,721, 736,740, 748,748, 750,750, 880,884, 886,887, 890,893, 902,902, 904,906, 908,908, 910,929, 931,1013, 1015,1153, 1162,1319, 1329,1366, 1369,1369, 1377,1415, 1488,1514, 1520,1522, 1568,1610, 1646,1647, 1649,1747, 1749,1749, 1765,1766, 1774,1775, 1786,1788, 1791,1791, 1808,1808, 1810,1839, 1869,1957, 1969,1969, 1994,2026, 2036,2037, 2042,2042, 2048,2069, 2074,2074, 2084,2084, 2088,2088, 2112,2136, 2208,2208, 2210,2220, 2308,2361, 2365,2365, 2384,2384, 2392,2401, 2417,2423, 2425,2431, 2437,2444, 2447,2448, 2451,2472, 2474,2480, 2482,2482, 2486,2489, 2493,2493, 2510,2510, 2524,2525, 2527,2529, 2544,2545, 2565,2570, 2575,2576, 2579,2600, 2602,2608, 2610,2611, 2613,2614, 2616,2617, 2649,2652, 2654,2654, 2674,2676, 2693,2701, 2703,2705, 2707,2728, 2730,2736, 2738,2739, 2741,2745, 2749,2749, 2768,2768, 2784,2785, 2821,2828, 2831,2832, 2835,2856, 2858,2864, 2866,2867, 2869,2873, 2877,2877, 2908,2909, 2911,2913, 2929,2929, 2947,2947, 2949,2954, 2958,2960, 2962,2965, 2969,2970, 2972,2972, 2974,2975, 2979,2980, 2984,2986, 2990,3001, 3024,3024, 3077,3084, 3086,3088, 3090,3112, 3114,3123, 3125,3129, 3133,3133, 3160,3161, 3168,3169, 3205,3212, 3214,3216, 3218,3240, 3242,3251, 3253,3257, 3261,3261, 3294,3294, 3296,3297, 3313,3314, 3333,3340, 3342,3344, 3346,3386, 3389,3389, 3406,3406, 3424,3425, 3450,3455, 3461,3478, 3482,3505, 3507,3515, 3517,3517, 3520,3526, 3585,3632, 3634,3635, 3648,3654, 3713,3714, 3716,3716, 3719,3720, 3722,3722, 3725,3725, 3732,3735, 3737,3743, 3745,3747, 3749,3749, 3751,3751, 3754,3755, 3757,3760, 3762,3763, 3773,3773, 3776,3780, 3782,3782, 3804,3807, 3840,3840, 3904,3911, 3913,3948, 3976,3980, 4096,4138, 4159,4159, 4176,4181, 4186,4189, 4193,4193, 4197,4198, 4206,4208, 4213,4225, 4238,4238, 4256,4293, 4295,4295, 4301,4301, 4304,4346, 4348,4680, 4682,4685, 4688,4694, 4696,4696, 4698,4701, 4704,4744, 4746,4749, 4752,4784, 4786,4789, 4792,4798, 4800,4800, 4802,4805, 4808,4822, 4824,4880, 4882,4885, 4888,4954, 4992,5007, 5024,5108, 5121,5740, 5743,5759, 5761,5786, 5792,5866, 5870,5872, 5888,5900, 5902,5905, 5920,5937, 5952,5969, 5984,5996, 5998,6000, 6016,6067, 6103,6103, 6108,6108, 6176,6263, 6272,6312, 6314,6314, 6320,6389, 6400,6428, 6480,6509, 6512,6516, 6528,6571, 6593,6599, 6656,6678, 6688,6740, 6823,6823, 6917,6963, 6981,6987, 7043,7072, 7086,7087, 7098,7141, 7168,7203, 7245,7247, 7258,7293, 7401,7404, 7406,7409, 7413,7414, 7424,7615, 7680,7957, 7960,7965, 7968,8005, 8008,8013, 8016,8023, 8025,8025, 8027,8027, 8029,8029, 8031,8061, 8064,8116, 8118,8124, 8126,8126, 8130,8132, 8134,8140, 8144,8147, 8150,8155, 8160,8172, 8178,8180, 8182,8188, 8305,8305, 8319,8319, 8336,8348, 8450,8450, 8455,8455, 8458,8467, 8469,8469, 8473,8477, 8484,8484, 8486,8486, 8488,8488, 8490,8493, 8495,8505, 8508,8511, 8517,8521, 8526,8526, 8544,8584, 11264,11310, 11312,11358, 11360,11492, 11499,11502, 11506,11507, 11520,11557, 11559,11559, 11565,11565, 11568,11623, 11631,11631, 11648,11670, 11680,11686, 11688,11694, 11696,11702, 11704,11710, 11712,11718, 11720,11726, 11728,11734, 11736,11742, 11823,11823, 12293,12295, 12321,12329, 12337,12341, 12344,12348, 12353,12438, 12445,12447, 12449,12538, 12540,12543, 12549,12589, 12593,12686, 12704,12730, 12784,12799, 13312,19893, 19968,40908, 40960,42124, 42192,42237, 42240,42508, 42512,42527, 42538,42539, 42560,42606, 42623,42647, 42656,42735, 42775,42783, 42786,42888, 42891,42894, 42896,42899, 42912,42922, 43000,43009, 43011,43013, 43015,43018, 43020,43042, 43072,43123, 43138,43187, 43250,43255, 43259,43259, 43274,43301, 43312,43334, 43360,43388, 43396,43442, 43471,43471, 43520,43560, 43584,43586, 43588,43595, 43616,43638, 43642,43642, 43648,43695, 43697,43697, 43701,43702, 43705,43709, 43712,43712, 43714,43714, 43739,43741, 43744,43754, 43762,43764, 43777,43782, 43785,43790, 43793,43798, 43808,43814, 43816,43822, 43968,44002, 44032,55203, 55216,55238, 55243,55291, 63744,64109, 64112,64217, 64256,64262, 64275,64279, 64285,64285, 64287,64296, 64298,64310, 64312,64316, 64318,64318, 64320,64321, 64323,64324, 64326,64433, 64467,64829, 64848,64911, 64914,64967, 65008,65019, 65136,65140, 65142,65276, 65313,65338, 65345,65370, 65382,65470, 65474,65479, 65482,65487, 65490,65495, 65498,65500, ]; - static unicodeES5IdentifierPart = [170,170, 181,181, 186,186, 192,214, 216,246, 248,705, 710,721, 736,740, 748,748, 750,750, 768,884, 886,887, 890,893, 902,902, 904,906, 908,908, 910,929, 931,1013, 1015,1153, 1155,1159, 1162,1319, 1329,1366, 1369,1369, 1377,1415, 1425,1469, 1471,1471, 1473,1474, 1476,1477, 1479,1479, 1488,1514, 1520,1522, 1552,1562, 1568,1641, 1646,1747, 1749,1756, 1759,1768, 1770,1788, 1791,1791, 1808,1866, 1869,1969, 1984,2037, 2042,2042, 2048,2093, 2112,2139, 2208,2208, 2210,2220, 2276,2302, 2304,2403, 2406,2415, 2417,2423, 2425,2431, 2433,2435, 2437,2444, 2447,2448, 2451,2472, 2474,2480, 2482,2482, 2486,2489, 2492,2500, 2503,2504, 2507,2510, 2519,2519, 2524,2525, 2527,2531, 2534,2545, 2561,2563, 2565,2570, 2575,2576, 2579,2600, 2602,2608, 2610,2611, 2613,2614, 2616,2617, 2620,2620, 2622,2626, 2631,2632, 2635,2637, 2641,2641, 2649,2652, 2654,2654, 2662,2677, 2689,2691, 2693,2701, 2703,2705, 2707,2728, 2730,2736, 2738,2739, 2741,2745, 2748,2757, 2759,2761, 2763,2765, 2768,2768, 2784,2787, 2790,2799, 2817,2819, 2821,2828, 2831,2832, 2835,2856, 2858,2864, 2866,2867, 2869,2873, 2876,2884, 2887,2888, 2891,2893, 2902,2903, 2908,2909, 2911,2915, 2918,2927, 2929,2929, 2946,2947, 2949,2954, 2958,2960, 2962,2965, 2969,2970, 2972,2972, 2974,2975, 2979,2980, 2984,2986, 2990,3001, 3006,3010, 3014,3016, 3018,3021, 3024,3024, 3031,3031, 3046,3055, 3073,3075, 3077,3084, 3086,3088, 3090,3112, 3114,3123, 3125,3129, 3133,3140, 3142,3144, 3146,3149, 3157,3158, 3160,3161, 3168,3171, 3174,3183, 3202,3203, 3205,3212, 3214,3216, 3218,3240, 3242,3251, 3253,3257, 3260,3268, 3270,3272, 3274,3277, 3285,3286, 3294,3294, 3296,3299, 3302,3311, 3313,3314, 3330,3331, 3333,3340, 3342,3344, 3346,3386, 3389,3396, 3398,3400, 3402,3406, 3415,3415, 3424,3427, 3430,3439, 3450,3455, 3458,3459, 3461,3478, 3482,3505, 3507,3515, 3517,3517, 3520,3526, 3530,3530, 3535,3540, 3542,3542, 3544,3551, 3570,3571, 3585,3642, 3648,3662, 3664,3673, 3713,3714, 3716,3716, 3719,3720, 3722,3722, 3725,3725, 3732,3735, 3737,3743, 3745,3747, 3749,3749, 3751,3751, 3754,3755, 3757,3769, 3771,3773, 3776,3780, 3782,3782, 3784,3789, 3792,3801, 3804,3807, 3840,3840, 3864,3865, 3872,3881, 3893,3893, 3895,3895, 3897,3897, 3902,3911, 3913,3948, 3953,3972, 3974,3991, 3993,4028, 4038,4038, 4096,4169, 4176,4253, 4256,4293, 4295,4295, 4301,4301, 4304,4346, 4348,4680, 4682,4685, 4688,4694, 4696,4696, 4698,4701, 4704,4744, 4746,4749, 4752,4784, 4786,4789, 4792,4798, 4800,4800, 4802,4805, 4808,4822, 4824,4880, 4882,4885, 4888,4954, 4957,4959, 4992,5007, 5024,5108, 5121,5740, 5743,5759, 5761,5786, 5792,5866, 5870,5872, 5888,5900, 5902,5908, 5920,5940, 5952,5971, 5984,5996, 5998,6000, 6002,6003, 6016,6099, 6103,6103, 6108,6109, 6112,6121, 6155,6157, 6160,6169, 6176,6263, 6272,6314, 6320,6389, 6400,6428, 6432,6443, 6448,6459, 6470,6509, 6512,6516, 6528,6571, 6576,6601, 6608,6617, 6656,6683, 6688,6750, 6752,6780, 6783,6793, 6800,6809, 6823,6823, 6912,6987, 6992,7001, 7019,7027, 7040,7155, 7168,7223, 7232,7241, 7245,7293, 7376,7378, 7380,7414, 7424,7654, 7676,7957, 7960,7965, 7968,8005, 8008,8013, 8016,8023, 8025,8025, 8027,8027, 8029,8029, 8031,8061, 8064,8116, 8118,8124, 8126,8126, 8130,8132, 8134,8140, 8144,8147, 8150,8155, 8160,8172, 8178,8180, 8182,8188, 8204,8205, 8255,8256, 8276,8276, 8305,8305, 8319,8319, 8336,8348, 8400,8412, 8417,8417, 8421,8432, 8450,8450, 8455,8455, 8458,8467, 8469,8469, 8473,8477, 8484,8484, 8486,8486, 8488,8488, 8490,8493, 8495,8505, 8508,8511, 8517,8521, 8526,8526, 8544,8584, 11264,11310, 11312,11358, 11360,11492, 11499,11507, 11520,11557, 11559,11559, 11565,11565, 11568,11623, 11631,11631, 11647,11670, 11680,11686, 11688,11694, 11696,11702, 11704,11710, 11712,11718, 11720,11726, 11728,11734, 11736,11742, 11744,11775, 11823,11823, 12293,12295, 12321,12335, 12337,12341, 12344,12348, 12353,12438, 12441,12442, 12445,12447, 12449,12538, 12540,12543, 12549,12589, 12593,12686, 12704,12730, 12784,12799, 13312,19893, 19968,40908, 40960,42124, 42192,42237, 42240,42508, 42512,42539, 42560,42607, 42612,42621, 42623,42647, 42655,42737, 42775,42783, 42786,42888, 42891,42894, 42896,42899, 42912,42922, 43000,43047, 43072,43123, 43136,43204, 43216,43225, 43232,43255, 43259,43259, 43264,43309, 43312,43347, 43360,43388, 43392,43456, 43471,43481, 43520,43574, 43584,43597, 43600,43609, 43616,43638, 43642,43643, 43648,43714, 43739,43741, 43744,43759, 43762,43766, 43777,43782, 43785,43790, 43793,43798, 43808,43814, 43816,43822, 43968,44010, 44012,44013, 44016,44025, 44032,55203, 55216,55238, 55243,55291, 63744,64109, 64112,64217, 64256,64262, 64275,64279, 64285,64296, 64298,64310, 64312,64316, 64318,64318, 64320,64321, 64323,64324, 64326,64433, 64467,64829, 64848,64911, 64914,64967, 65008,65019, 65024,65039, 65056,65062, 65075,65076, 65101,65103, 65136,65140, 65142,65276, 65296,65305, 65313,65338, 65343,65343, 65345,65370, 65382,65470, 65474,65479, 65482,65487, 65490,65495, 65498,65500, ]; - - static lookupInUnicodeMap(code: number, map: number[]): boolean { - // Bail out quickly if it couldn't possibly be in the map. - if (code < map[0]) { - return false; - } - - // Perform binary search in one of the unicode range maps - var lo: number = 0; - var hi: number = map.length; - var mid: number; - - while (lo + 1 < hi) { - mid = lo + (hi - lo) / 2; - // mid has to be even to catch a range's beginning - mid -= mid % 2; - if (map[mid] <= code && code <= map[mid + 1]) { - return true; - } - - if (code < map[mid]) { - hi = mid; - } - else { - lo = mid + 2; - } - } - - return false; - } - - public static isIdentifierStart(code: number, languageVersion: ts.ScriptTarget) { - if (languageVersion === ts.ScriptTarget.ES3) { - return Unicode.lookupInUnicodeMap(code, Unicode.unicodeES3IdentifierStart); - } - else if (languageVersion >= ts.ScriptTarget.ES5) { - return Unicode.lookupInUnicodeMap(code, Unicode.unicodeES5IdentifierStart); - } - else { - throw Errors.argumentOutOfRange("languageVersion"); - } - } - - public static isIdentifierPart(code: number, languageVersion: ts.ScriptTarget) { - if (languageVersion === ts.ScriptTarget.ES3) { - return Unicode.lookupInUnicodeMap(code, Unicode.unicodeES3IdentifierPart); - } - else if (languageVersion >= ts.ScriptTarget.ES5) { - return Unicode.lookupInUnicodeMap(code, Unicode.unicodeES5IdentifierPart); - } - else { - throw Errors.argumentOutOfRange("languageVersion"); - } - } - } -} \ No newline at end of file diff --git a/src/services/syntax/utilities.generated.ts b/src/services/syntax/utilities.generated.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/services/text/characterCodes.ts b/src/services/text/characterCodes.ts deleted file mode 100644 index 91d500f1749..00000000000 --- a/src/services/text/characterCodes.ts +++ /dev/null @@ -1,139 +0,0 @@ -/// - -module TypeScript { - export enum CharacterCodes { - nullCharacter = 0, - maxAsciiCharacter = 127, - - lineFeed = 10, // \n - carriageReturn = 13, // \r - lineSeparator = 0x2028, - paragraphSeparator = 0x2029, - - // REVIEW: do we need to support this? The scanner doesn't, but our IText does. This seems - // like an odd disparity? (Or maybe it's completely fine for them to be different). - nextLine = 0x0085, - - // Unicode 3.0 space characters - space = 0x0020, // " " - nonBreakingSpace = 0x00A0, // - enQuad = 0x2000, - emQuad = 0x2001, - enSpace = 0x2002, - emSpace = 0x2003, - threePerEmSpace = 0x2004, - fourPerEmSpace = 0x2005, - sixPerEmSpace = 0x2006, - figureSpace = 0x2007, - punctuationSpace = 0x2008, - thinSpace = 0x2009, - hairSpace = 0x200A, - zeroWidthSpace = 0x200B, - narrowNoBreakSpace = 0x202F, - ideographicSpace = 0x3000, - - _ = 95, - $ = 36, - - _0 = 48, - _1 = 49, - _2 = 50, - _3 = 51, - _4 = 52, - _5 = 53, - _6 = 54, - _7 = 55, - _8 = 56, - _9 = 57, - - a = 97, - b = 98, - c = 99, - d = 100, - e = 101, - f = 102, - g = 103, - h = 104, - i = 105, - j = 106, - k = 107, - l = 108, - m = 109, - n = 110, - o = 111, - p = 112, - q = 113, - r = 114, - s = 115, - t = 116, - u = 117, - v = 118, - w = 119, - x = 120, - y = 121, - z = 122, - - A = 65, - B = 66, - C = 67, - D = 68, - E = 69, - F = 70, - G = 71, - H = 72, - I = 73, - J = 74, - K = 75, - L = 76, - M = 77, - N = 78, - O = 79, - P = 80, - Q = 81, - R = 82, - S = 83, - T = 84, - U = 85, - V = 86, - W = 87, - X = 88, - Y = 89, - Z = 90, - - ampersand = 38, // & - asterisk = 42, // * - at = 64, // @ - backslash = 92, // \ - backtick = 96, // ` - bar = 124, // | - caret = 94, // ^ - closeBrace = 125, // } - closeBracket = 93, // ] - closeParen = 41, // ) - colon = 58, // : - comma = 44, // , - dot = 46, // . - doubleQuote = 34, // " - equals = 61, // = - exclamation = 33, // ! - greaterThan = 62, // > - lessThan = 60, // < - minus = 45, // - - openBrace = 123, // { - openBracket = 91, // [ - openParen = 40, // ( - percent = 37, // % - plus = 43, // + - question = 63, // ? - semicolon = 59, // ; - singleQuote = 39, // ' - slash = 47, // / - tilde = 126, // ~ - - backspace = 8, // \b - formFeed = 12, // \f - byteOrderMark = 0xFEFF, - tab = 9, // \t - verticalTab = 11, // \v - } -} \ No newline at end of file diff --git a/src/services/text/lineMap.ts b/src/services/text/lineMap.ts deleted file mode 100644 index 15fbbe47e84..00000000000 --- a/src/services/text/lineMap.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// - -module TypeScript { - export module LineMap1 { - export function fromSimpleText(text: ISimpleText): LineMap { - return new LineMap(() => TextUtilities.parseLineStarts({ charCodeAt: index => text.charCodeAt(index), length: text.length() }), text.length()); - } - - export function fromScriptSnapshot(scriptSnapshot: IScriptSnapshot): LineMap { - return new LineMap(() => scriptSnapshot.getLineStartPositions(), scriptSnapshot.getLength()); - } - - export function fromString(text: string): LineMap { - return new LineMap(() => TextUtilities.parseLineStarts(text), text.length); - } - } -} \ No newline at end of file diff --git a/src/services/text/references.ts b/src/services/text/references.ts deleted file mode 100644 index e50975146b4..00000000000 --- a/src/services/text/references.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// - -/// -/// -/// -/// -/// -/// -/// - -// TextChangeRange depends on TextSpan. -/// \ No newline at end of file diff --git a/src/services/text/scriptSnapshot.ts b/src/services/text/scriptSnapshot.ts deleted file mode 100644 index 4e61d131cec..00000000000 --- a/src/services/text/scriptSnapshot.ts +++ /dev/null @@ -1,65 +0,0 @@ -/// - -module TypeScript { - /** - * Represents an immutable snapshot of a script at a specified time.Once acquired, the - * snapshot is observably immutable. i.e. the same calls with the same parameters will return - * the same values. - */ - export interface IScriptSnapshot { - /** Gets a portion of the script snapshot specified by [start, end). */ - getText(start: number, end: number): string; - - /** Gets the length of this script snapshot. */ - getLength(): number; - - /** - * This call returns the array containing the start position of every line. - * i.e."[0, 10, 55]". TODO: consider making this optional. The language service could - * always determine this (albeit in a more expensive manner). - */ - getLineStartPositions(): number[]; - - /** - * Gets the TextChangeRange that describe how the text changed between this text and - * an older version. This information is used by the incremental parser to determine - * what sections of the script need to be re-parsed. 'undefined' can be returned if the - * change range cannot be determined. However, in that case, incremental parsing will - * not happen and the entire document will be re - parsed. - */ - getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange; - } - - export module ScriptSnapshot { - class StringScriptSnapshot implements IScriptSnapshot { - private _lineStartPositions: number[] = undefined; - - constructor(private text: string) { - } - - public getText(start: number, end: number): string { - return this.text.substring(start, end); - } - - public getLength(): number { - return this.text.length; - } - - public getLineStartPositions(): number[]{ - if (!this._lineStartPositions) { - this._lineStartPositions = TextUtilities.parseLineStarts(this.text); - } - - return this._lineStartPositions; - } - - public getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange { - throw Errors.notYetImplemented(); - } - } - - export function fromString(text: string): IScriptSnapshot { - return new StringScriptSnapshot(text); - } - } -} \ No newline at end of file diff --git a/src/services/text/text.ts b/src/services/text/text.ts deleted file mode 100644 index 80756c301fd..00000000000 --- a/src/services/text/text.ts +++ /dev/null @@ -1,21 +0,0 @@ -/// - -/** - * Represents an immutable snapshot of text. - */ -module TypeScript { - /** - * Represents an immutable snapshot of text. - */ - export interface ISimpleText { - /** - * Total number of characters in the text source. - */ - length(): number; - - substr(start: number, length: number): string; - - charCodeAt(index: number): number; - lineMap(): LineMap; - } -} \ No newline at end of file diff --git a/src/services/text/textChangeRange.ts b/src/services/text/textChangeRange.ts deleted file mode 100644 index b45dc8a0318..00000000000 --- a/src/services/text/textChangeRange.ts +++ /dev/null @@ -1,168 +0,0 @@ -/// - -module TypeScript { - export class TextChangeRange { - public static unchanged = new TextChangeRange(new TextSpan(0, 0), 0); - - private _span: TextSpan; - private _newLength: number; - - /** - * Initializes a new instance of TextChangeRange. - */ - constructor(span: TextSpan, newLength: number) { - if (newLength < 0) { - throw Errors.argumentOutOfRange("newLength"); - } - - this._span = span; - this._newLength = newLength; - } - - /** - * The span of text before the edit which is being changed - */ - public span(): TextSpan { - return this._span; - } - - /** - * Width of the span after the edit. A 0 here would represent a delete - */ - public newLength(): number { - return this._newLength; - } - - public newSpan(): TextSpan { - return new TextSpan(this.span().start(), this.newLength()); - } - - public isUnchanged(): boolean { - return this.span().isEmpty() && this.newLength() === 0; - } - - /** - * Called to merge all the changes that occurred across several versions of a script snapshot - * into a single change. i.e. if a user keeps making successive edits to a script we will - * have a text change from V1 to V2, V2 to V3, ..., Vn. - * - * This function will then merge those changes into a single change range valid between V1 and - * Vn. - */ - public static collapseChangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange { - if (changes.length === 0) { - return TextChangeRange.unchanged; - } - - if (changes.length === 1) { - return changes[0]; - } - - // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } - // as it makes things much easier to reason about. - var change0 = changes[0]; - - var oldStartN = change0.span().start(); - var oldEndN = change0.span().end(); - var newEndN = oldStartN + change0.newLength(); - - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; - - // Consider the following case: - // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting - // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. - // i.e. the span starting at 30 with length 30 is increased to length 40. - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------------------------------------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------------------------------------------------- - // | \ - // | \ - // T2 | \ - // | \ - // | \ - // ------------------------------------------------------------------------------------------------------- - // - // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial - // it's just the min of the old and new starts. i.e.: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------*------------------------------------------ - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ----------------------------------------$-------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // (Note the dots represent the newly inferrred start. - // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the - // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see - // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that - // means: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // --------------------------------------------------------------------------------*---------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // In other words (in this case), we're recognizing that the second edit happened after where the first edit - // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started - // that's the same as if we started at char 80 instead of 60. - // - // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter - // than pusing the first edit forward to match the second, we'll push the second edit forward to match the - // first. - // - // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange - // semantics: { { start: 10, length: 70 }, newLength: 60 } - // - // The math then works out as follows. - // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the - // final result like so: - // - // { - // oldStart3: Min(oldStart1, oldStart2), - // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), - // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) - // } - - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; - - var oldStart2 = nextChange.span().start(); - var oldEnd2 = nextChange.span().end(); - var newEnd2 = oldStart2 + nextChange.newLength(); - - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - - return new TextChangeRange(TextSpan.fromBounds(oldStartN, oldEndN), /*newLength: */newEndN - oldStartN); - } - } -} \ No newline at end of file diff --git a/src/services/text/textFactory.ts b/src/services/text/textFactory.ts deleted file mode 100644 index c32aa3adfaf..00000000000 --- a/src/services/text/textFactory.ts +++ /dev/null @@ -1,69 +0,0 @@ -/// - -module TypeScript.SimpleText { - class SimpleStringText implements ISimpleText { - private _lineMap: LineMap = undefined; - - constructor(private value: string) { - } - - public length(): number { - return this.value.length; - } - - public substr(start: number, length: number): string { - var val = this.value; - return start === 0 && length == val.length - ? val - : val.substr(start, length); - } - - public charCodeAt(index: number): number { - return this.value.charCodeAt(index); - } - - public lineMap(): LineMap { - if (!this._lineMap) { - this._lineMap = LineMap1.fromString(this.value); - } - - return this._lineMap; - } - } - - // Class which wraps a host IScriptSnapshot and exposes an ISimpleText for newer compiler code. - class SimpleScriptSnapshotText implements ISimpleText { - private _lineMap: LineMap = undefined; - - constructor(public scriptSnapshot: IScriptSnapshot) { - } - - public charCodeAt(index: number): number { - return this.scriptSnapshot.getText(index, index + 1).charCodeAt(0); - } - - public length(): number { - return this.scriptSnapshot.getLength(); - } - - public substr(start: number, length: number): string { - return this.scriptSnapshot.getText(start, start + length); - } - - public lineMap(): LineMap { - if (!this._lineMap) { - this._lineMap = new LineMap(() => this.scriptSnapshot.getLineStartPositions(), this.length()); - } - - return this._lineMap; - } - } - - export function fromString(value: string): ISimpleText { - return new SimpleStringText(value); - } - - export function fromScriptSnapshot(scriptSnapshot: IScriptSnapshot): ISimpleText { - return new SimpleScriptSnapshotText(scriptSnapshot); - } -} \ No newline at end of file diff --git a/src/services/text/textSpan.ts b/src/services/text/textSpan.ts deleted file mode 100644 index 9ecef2b95fa..00000000000 --- a/src/services/text/textSpan.ts +++ /dev/null @@ -1,146 +0,0 @@ -/// - -module TypeScript { - - export interface ISpan { - start(): number; - end(): number; - } - - export class TextSpan implements ISpan { - private _start: number; - private _length: number; - - /** - * Creates a TextSpan instance beginning with the position Start and having the Length - * specified with length. - */ - constructor(start: number, length: number) { - if (start < 0) { - Errors.argument("start"); - } - - if (length < 0) { - Errors.argument("length"); - } - - this._start = start; - this._length = length; - } - - public toJSON(key: any): any { - return { start: this._start, length: this._length }; - } - - public start(): number { - return this._start; - } - - public length(): number { - return this._length; - } - - public end(): number { - return this._start + this._length; - } - - public isEmpty(): boolean { - return this._length === 0; - } - - /** - * Determines whether the position lies within the span. Returns true if the position is greater than or equal to Start and strictly less - * than End, otherwise false. - * @param position The position to check. - */ - public containsPosition(position: number): boolean { - return position >= this._start && position < this.end(); - } - - /** - * Determines whether span falls completely within this span. Returns true if the specified span falls completely within this span, otherwise false. - * @param span The span to check. - */ - public containsTextSpan(span: TextSpan): boolean { - return span._start >= this._start && span.end() <= this.end(); - } - - /** - * Determines whether the given span overlaps this span. Two spans are considered to overlap - * if they have positions in common and neither is empty. Empty spans do not overlap with any - * other span. Returns true if the spans overlap, false otherwise. - * @param span The span to check. - */ - public overlapsWith(span: TextSpan): boolean { - var overlapStart = Math.max(this._start, span._start); - var overlapEnd = Math.min(this.end(), span.end()); - - return overlapStart < overlapEnd; - } - - /** - * Returns the overlap with the given span, or undefined if there is no overlap. - * @param span The span to check. - */ - public overlap(span: TextSpan): TextSpan { - var overlapStart = Math.max(this._start, span._start); - var overlapEnd = Math.min(this.end(), span.end()); - - if (overlapStart < overlapEnd) { - return TextSpan.fromBounds(overlapStart, overlapEnd); - } - - return undefined; - } - - /** - * Determines whether span intersects this span. Two spans are considered to - * intersect if they have positions in common or the end of one span - * coincides with the start of the other span. Returns true if the spans intersect, false otherwise. - * @param The span to check. - */ - public intersectsWithTextSpan(span: TextSpan): boolean { - return span._start <= this.end() && span.end() >= this._start; - } - - public intersectsWith(start: number, length: number): boolean { - var end = start + length; - return start <= this.end() && end >= this._start; - } - - /** - * Determines whether the given position intersects this span. - * A position is considered to intersect if it is between the start and - * end positions (inclusive) of this span. Returns true if the position intersects, false otherwise. - * @param position The position to check. - */ - public intersectsWithPosition(position: number): boolean { - return position <= this.end() && position >= this._start; - } - - /** - * Returns the intersection with the given span, or undefined if there is no intersection. - * @param span The span to check. - */ - public intersection(span: TextSpan): TextSpan { - var intersectStart = Math.max(this._start, span._start); - var intersectEnd = Math.min(this.end(), span.end()); - - if (intersectStart <= intersectEnd) { - return TextSpan.fromBounds(intersectStart, intersectEnd); - } - - return undefined; - } - - /** - * Creates a new TextSpan from the given start and end positions - * as opposed to a position and length. - */ - public static fromBounds(start: number, end: number): TextSpan { - Debug.assert(start >= 0); - Debug.assert(end - start >= 0); - return new TextSpan(start, end - start); - } - } -} \ No newline at end of file diff --git a/src/services/text/textUtilities.ts b/src/services/text/textUtilities.ts deleted file mode 100644 index a495f97e941..00000000000 --- a/src/services/text/textUtilities.ts +++ /dev/null @@ -1,94 +0,0 @@ -/// - -module TypeScript.TextUtilities { - export interface ICharacterSequence { - charCodeAt(index: number): number; - length: number; - } - - export function parseLineStarts(text: ICharacterSequence): number[]{ - var length = text.length; - - // Corner case check - if (0 === length) { - var result = new Array(); - result.push(0); - return result; - } - - var position = 0; - var index = 0; - var arrayBuilder = new Array(); - var lineNumber = 0; - - // The following loop goes through every character in the text. It is highly - // performance critical, and thus inlines knowledge about common line breaks - // and non-line breaks. - while (index < length) { - var c = text.charCodeAt(index); - var lineBreakLength: number; - - // common case - ASCII & not a line break - if (c > CharacterCodes.carriageReturn && c <= 127) { - index++; - continue; - } - else if (c === CharacterCodes.carriageReturn && index + 1 < length && text.charCodeAt(index + 1) === CharacterCodes.lineFeed) { - lineBreakLength = 2; - } - else if (c === CharacterCodes.lineFeed) { - lineBreakLength = 1; - } - else { - lineBreakLength = TextUtilities.getLengthOfLineBreak(text, index); - } - - if (0 === lineBreakLength) { - index++; - } - else { - arrayBuilder.push(position); - index += lineBreakLength; - position = index; - lineNumber++; - } - } - - // Create a start for the final line. - arrayBuilder.push(position); - - return arrayBuilder; - } - - export function getLengthOfLineBreakSlow(text: ICharacterSequence, index: number, c: number): number { - if (c === CharacterCodes.carriageReturn) { - var next = index + 1; - return (next < text.length) && CharacterCodes.lineFeed === text.charCodeAt(next) ? 2 : 1; - } - else if (isAnyLineBreakCharacter(c)) { - return 1; - } - else { - return 0; - } - } - - export function getLengthOfLineBreak(text: ICharacterSequence, index: number): number { - var c = text.charCodeAt(index); - - // common case - ASCII & not a line break - if (c > CharacterCodes.carriageReturn && c <= 127) { - return 0; - } - - return getLengthOfLineBreakSlow(text, index, c); - } - - export function isAnyLineBreakCharacter(c: number): boolean { - return c === CharacterCodes.lineFeed || - c === CharacterCodes.carriageReturn || - c === CharacterCodes.nextLine || - c === CharacterCodes.lineSeparator || - c === CharacterCodes.paragraphSeparator; - } -} \ No newline at end of file diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 13156523045..719aa658724 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -7,18 +7,18 @@ module ts { export function getEndLinePosition(line: number, sourceFile: SourceFile): number { Debug.assert(line >= 0); - var lineStarts = sourceFile.getLineStarts(); + let lineStarts = sourceFile.getLineStarts(); - var lineIndex = line; + let lineIndex = line; if (lineIndex + 1 === lineStarts.length) { // last line - return EOF return sourceFile.text.length - 1; } else { // current line start - var start = lineStarts[lineIndex]; + let start = lineStarts[lineIndex]; // take the start position of the next line -1 = it should be some line break - var pos = lineStarts[lineIndex + 1] - 1; + let pos = lineStarts[lineIndex + 1] - 1; Debug.assert(isLineBreak(sourceFile.text.charCodeAt(pos))); // walk backwards skipping line breaks, stop the the beginning of current line. // i.e: @@ -32,8 +32,8 @@ module ts { } export function getLineStartPositionForPosition(position: number, sourceFile: SourceFile): number { - var lineStarts = sourceFile.getLineStarts(); - var line = sourceFile.getLineAndCharacterOfPosition(position).line; + let lineStarts = sourceFile.getLineStarts(); + let line = sourceFile.getLineAndCharacterOfPosition(position).line; return lineStarts[line]; } @@ -54,13 +54,164 @@ module ts { } export function startEndOverlapsWithStartEnd(start1: number, end1: number, start2: number, end2: number) { - var start = Math.max(start1, start2); - var end = Math.min(end1, end2); + let start = Math.max(start1, start2); + let end = Math.min(end1, end2); return start < end; } + export function positionBelongsToNode(candidate: Node, position: number, sourceFile: SourceFile): boolean { + return candidate.end > position || !isCompletedNode(candidate, sourceFile); + } + + export function isCompletedNode(n: Node, sourceFile: SourceFile): boolean { + if (nodeIsMissing(n)) { + return false; + } + + switch (n.kind) { + case SyntaxKind.ClassDeclaration: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.EnumDeclaration: + case SyntaxKind.ObjectLiteralExpression: + case SyntaxKind.ObjectBindingPattern: + case SyntaxKind.TypeLiteral: + case SyntaxKind.Block: + case SyntaxKind.ModuleBlock: + case SyntaxKind.CaseBlock: + return nodeEndsWith(n, SyntaxKind.CloseBraceToken, sourceFile); + case SyntaxKind.CatchClause: + return isCompletedNode((n).block, sourceFile); + case SyntaxKind.NewExpression: + if (!(n).arguments) { + return true; + } + // fall through + case SyntaxKind.CallExpression: + case SyntaxKind.ParenthesizedExpression: + case SyntaxKind.ParenthesizedType: + return nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile); + + case SyntaxKind.FunctionType: + case SyntaxKind.ConstructorType: + return isCompletedNode((n).type, sourceFile); + + case SyntaxKind.Constructor: + case SyntaxKind.GetAccessor: + case SyntaxKind.SetAccessor: + case SyntaxKind.FunctionDeclaration: + case SyntaxKind.FunctionExpression: + case SyntaxKind.MethodDeclaration: + case SyntaxKind.MethodSignature: + case SyntaxKind.ConstructSignature: + case SyntaxKind.CallSignature: + case SyntaxKind.ArrowFunction: + if ((n).body) { + return isCompletedNode((n).body, sourceFile); + } + + if ((n).type) { + return isCompletedNode((n).type, sourceFile); + } + + // Even though type parameters can be unclosed, we can get away with + // having at least a closing paren. + return hasChildOfKind(n, SyntaxKind.CloseParenToken, sourceFile); + + case SyntaxKind.ModuleDeclaration: + return (n).body && isCompletedNode((n).body, sourceFile); + + case SyntaxKind.IfStatement: + if ((n).elseStatement) { + return isCompletedNode((n).elseStatement, sourceFile); + } + return isCompletedNode((n).thenStatement, sourceFile); + + case SyntaxKind.ExpressionStatement: + return isCompletedNode((n).expression, sourceFile); + + case SyntaxKind.ArrayLiteralExpression: + case SyntaxKind.ArrayBindingPattern: + case SyntaxKind.ElementAccessExpression: + case SyntaxKind.ComputedPropertyName: + case SyntaxKind.TupleType: + return nodeEndsWith(n, SyntaxKind.CloseBracketToken, sourceFile); + + case SyntaxKind.IndexSignature: + if ((n).type) { + return isCompletedNode((n).type, sourceFile); + } + + return hasChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); + + case SyntaxKind.CaseClause: + case SyntaxKind.DefaultClause: + // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicitly always consider them non-completed + return false; + + case SyntaxKind.ForStatement: + case SyntaxKind.ForInStatement: + case SyntaxKind.ForOfStatement: + case SyntaxKind.WhileStatement: + return isCompletedNode((n).statement, sourceFile); + case SyntaxKind.DoStatement: + // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; + let hasWhileKeyword = findChildOfKind(n, SyntaxKind.WhileKeyword, sourceFile); + if (hasWhileKeyword) { + return nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile); + } + return isCompletedNode((n).statement, sourceFile); + + case SyntaxKind.TypeQuery: + return isCompletedNode((n).exprName, sourceFile); + + case SyntaxKind.TypeOfExpression: + case SyntaxKind.DeleteExpression: + case SyntaxKind.VoidExpression: + case SyntaxKind.YieldExpression: + case SyntaxKind.SpreadElementExpression: + let unaryWordExpression = (n); + return isCompletedNode(unaryWordExpression.expression, sourceFile); + + case SyntaxKind.TaggedTemplateExpression: + return isCompletedNode((n).template, sourceFile); + case SyntaxKind.TemplateExpression: + let lastSpan = lastOrUndefined((n).templateSpans); + return isCompletedNode(lastSpan, sourceFile); + case SyntaxKind.TemplateSpan: + return nodeIsPresent((n).literal); + + case SyntaxKind.PrefixUnaryExpression: + return isCompletedNode((n).operand, sourceFile); + case SyntaxKind.BinaryExpression: + return isCompletedNode((n).right, sourceFile); + case SyntaxKind.ConditionalExpression: + return isCompletedNode((n).whenFalse, sourceFile); + + default: + return true; + } + } + + /* + * Checks if node ends with 'expectedLastToken'. + * If child at position 'length - 1' is 'SemicolonToken' it is skipped and 'expectedLastToken' is compared with child at position 'length - 2'. + */ + function nodeEndsWith(n: Node, expectedLastToken: SyntaxKind, sourceFile: SourceFile): boolean { + let children = n.getChildren(sourceFile); + if (children.length) { + let last = children[children.length - 1]; + if (last.kind === expectedLastToken) { + return true; + } + else if (last.kind === SyntaxKind.SemicolonToken && children.length !== 1) { + return children[children.length - 2].kind === expectedLastToken; + } + } + return false; + } + export function findListItemInfo(node: Node): ListItemInfo { - var list = findContainingList(node); + let list = findContainingList(node); // It is possible at this point for syntaxList to be undefined, either if // node.parent had no list child, or if none of its list children contained @@ -70,8 +221,8 @@ module ts { return undefined; } - var children = list.getChildren(); - var listItemIndex = indexOf(children, node); + let children = list.getChildren(); + let listItemIndex = indexOf(children, node); return { listItemIndex, @@ -79,6 +230,10 @@ module ts { }; } + export function hasChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): boolean { + return !!findChildOfKind(n, kind, sourceFile); + } + export function findChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): Node { return forEach(n.getChildren(sourceFile), c => c.kind === kind && c); } @@ -88,13 +243,15 @@ module ts { // be parented by the container of the SyntaxList, not the SyntaxList itself. // In order to find the list item index, we first need to locate SyntaxList itself and then search // for the position of the relevant node (or comma). - var syntaxList = forEach(node.parent.getChildren(), c => { + let syntaxList = forEach(node.parent.getChildren(), c => { // find syntax list that covers the span of the node if (c.kind === SyntaxKind.SyntaxList && c.pos <= node.pos && c.end >= node.end) { return c; } }); + // Either we didn't find an appropriate list, or the list must contain us. + Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); return syntaxList; } @@ -124,7 +281,7 @@ module ts { /** Get the token whose text contains the position */ function getTokenAtPositionWorker(sourceFile: SourceFile, position: number, allowPositionInLeadingTrivia: boolean, includeItemAtEndPosition: (n: Node) => boolean): Node { - var current: Node = sourceFile; + let current: Node = sourceFile; outer: while (true) { if (isToken(current)) { // exit early @@ -132,17 +289,17 @@ module ts { } // find the child that contains 'position' - for (var i = 0, n = current.getChildCount(sourceFile); i < n; i++) { - var child = current.getChildAt(i); - var start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile); + for (let i = 0, n = current.getChildCount(sourceFile); i < n; i++) { + let child = current.getChildAt(i); + let start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile); if (start <= position) { - var end = child.getEnd(); + let end = child.getEnd(); if (position < end || (position === end && child.kind === SyntaxKind.EndOfFileToken)) { current = child; continue outer; } else if (includeItemAtEndPosition && end === position) { - var previousToken = findPrecedingToken(position, sourceFile, child); + let previousToken = findPrecedingToken(position, sourceFile, child); if (previousToken && includeItemAtEndPosition(previousToken)) { return previousToken; } @@ -164,7 +321,7 @@ module ts { export function findTokenOnLeftOfPosition(file: SourceFile, position: number): Node { // Ideally, getTokenAtPosition should return a token. However, it is currently // broken, so we do a check to make sure the result was indeed a token. - var tokenAtPosition = getTokenAtPosition(file, position); + let tokenAtPosition = getTokenAtPosition(file, position); if (isToken(tokenAtPosition) && position > tokenAtPosition.getStart(file) && position < tokenAtPosition.getEnd()) { return tokenAtPosition; } @@ -181,10 +338,9 @@ module ts { return n; } - var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { - var child = children[i]; - var shouldDiveInChildNode = + let children = n.getChildren(); + for (let child of children) { + let shouldDiveInChildNode = // previous token is enclosed somewhere in the child (child.pos <= previousToken.pos && child.end > previousToken.end) || // previous token ends exactly at the beginning of child @@ -207,8 +363,8 @@ module ts { return n; } - var children = n.getChildren(); - var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ children.length); + let children = n.getChildren(); + let candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ children.length); return candidate && findRightmostToken(candidate); } @@ -218,14 +374,14 @@ module ts { return n; } - var children = n.getChildren(); - for (var i = 0, len = children.length; i < len; ++i) { - var child = children[i]; + let children = n.getChildren(); + for (let i = 0, len = children.length; i < len; i++) { + let child = children[i]; if (nodeHasTokens(child)) { if (position <= child.end) { if (child.getStart(sourceFile) >= position) { // actual start of the node is past the position - previous token should be at the end of previous child - var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); + let candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); return candidate && findRightmostToken(candidate) } else { @@ -243,14 +399,14 @@ module ts { // Try to find the rightmost token in the file without filtering. // Namely we are skipping the check: 'position < node.end' if (children.length) { - var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ children.length); + let candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ children.length); return candidate && findRightmostToken(candidate); } } /// finds last node that is considered as candidate for search (isCandidate(node) === true) starting from 'exclusiveStartPosition' function findRightmostChildNodeWithTokens(children: Node[], exclusiveStartPosition: number): Node { - for (var i = exclusiveStartPosition - 1; i >= 0; --i) { + for (let i = exclusiveStartPosition - 1; i >= 0; --i) { if (nodeHasTokens(children[i])) { return children[i]; } @@ -265,8 +421,8 @@ module ts { } export function getNodeModifiers(node: Node): string { - var flags = getCombinedNodeFlags(node); - var result: string[] = []; + let flags = getCombinedNodeFlags(node); + let result: string[] = []; if (flags & NodeFlags.Private) result.push(ScriptElementKindModifier.privateMemberModifier); if (flags & NodeFlags.Protected) result.push(ScriptElementKindModifier.protectedMemberModifier); @@ -283,7 +439,7 @@ module ts { return (node).typeArguments; } - if (isAnyFunction(node) || node.kind === SyntaxKind.ClassDeclaration || node.kind === SyntaxKind.InterfaceDeclaration) { + if (isFunctionLike(node) || node.kind === SyntaxKind.ClassDeclaration || node.kind === SyntaxKind.InterfaceDeclaration) { return (node).typeParameters; } @@ -294,7 +450,7 @@ module ts { return n.kind >= SyntaxKind.FirstToken && n.kind <= SyntaxKind.LastToken; } - function isWord(kind: SyntaxKind): boolean { + export function isWord(kind: SyntaxKind): boolean { return kind === SyntaxKind.Identifier || isKeyword(kind); } @@ -315,8 +471,19 @@ module ts { && (node.getStart() < position && position < node.getEnd()) || (!!node.isUnterminated && position === node.getEnd()); } + export function isAccessibilityModifier(kind: SyntaxKind) { + switch (kind) { + case SyntaxKind.PublicKeyword: + case SyntaxKind.PrivateKeyword: + case SyntaxKind.ProtectedKeyword: + return true; + } + + return false; + } + export function compareDataObjects(dst: any, src: any): boolean { - for (var e in dst) { + for (let e in dst) { if (typeof dst[e] === "object") { if (!compareDataObjects(dst[e], src[e])) { return false; @@ -338,11 +505,11 @@ module ts { return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === SyntaxKind.Parameter; } - var displayPartWriter = getDisplayPartWriter(); + let displayPartWriter = getDisplayPartWriter(); function getDisplayPartWriter(): DisplayPartsSymbolWriter { - var displayParts: SymbolDisplayPart[]; - var lineStart: boolean; - var indent: number; + let displayParts: SymbolDisplayPart[]; + let lineStart: boolean; + let indent: number; resetWriter(); return { @@ -363,7 +530,7 @@ module ts { function writeIndent() { if (lineStart) { - var indentString = getIndentString(indent); + let indentString = getIndentString(indent); if (indentString) { displayParts.push(displayPart(indentString, SymbolDisplayPartKind.space)); } @@ -397,7 +564,7 @@ module ts { return displayPart(text, displayPartKind(symbol), symbol); function displayPartKind(symbol: Symbol): SymbolDisplayPartKind { - var flags = symbol.flags; + let flags = symbol.flags; if (flags & SymbolFlags.Variable) { return isFirstDeclarationOfSymbolParameter(symbol) ? SymbolDisplayPartKind.parameterName : SymbolDisplayPartKind.localName; @@ -414,7 +581,7 @@ module ts { else if (flags & SymbolFlags.Method) { return SymbolDisplayPartKind.methodName; } else if (flags & SymbolFlags.TypeParameter) { return SymbolDisplayPartKind.typeParameterName; } else if (flags & SymbolFlags.TypeAlias) { return SymbolDisplayPartKind.aliasName; } - else if (flags & SymbolFlags.Import) { return SymbolDisplayPartKind.aliasName; } + else if (flags & SymbolFlags.Alias) { return SymbolDisplayPartKind.aliasName; } return SymbolDisplayPartKind.text; @@ -444,6 +611,13 @@ module ts { return displayPart(tokenToString(kind), SymbolDisplayPartKind.operator); } + export function textOrKeywordPart(text: string) { + var kind = stringToToken(text); + return kind === undefined + ? textPart(text) + : keywordPart(kind); + } + export function textPart(text: string) { return displayPart(text, SymbolDisplayPartKind.text); } @@ -454,7 +628,7 @@ module ts { export function mapToDisplayParts(writeDisplayParts: (writer: DisplayPartsSymbolWriter) => void): SymbolDisplayPart[] { writeDisplayParts(displayPartWriter); - var result = displayPartWriter.displayParts(); + let result = displayPartWriter.displayParts(); displayPartWriter.clear(); return result; } diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index f906533da0a..6c28c96a6d8 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -111,57 +111,57 @@ declare module "typescript" { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - AsKeyword = 101, - FromKeyword = 102, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, ImplementsKeyword = 103, InterfaceKeyword = 104, LetKeyword = 105, @@ -183,119 +183,126 @@ declare module "typescript" { StringKeyword = 121, SymbolKeyword = 122, TypeKeyword = 123, - OfKeyword = 124, - QualifiedName = 125, - ComputedPropertyName = 126, - TypeParameter = 127, - Parameter = 128, - PropertySignature = 129, - PropertyDeclaration = 130, - MethodSignature = 131, - MethodDeclaration = 132, - Constructor = 133, - GetAccessor = 134, - SetAccessor = 135, - CallSignature = 136, - ConstructSignature = 137, - IndexSignature = 138, - TypeReference = 139, - FunctionType = 140, - ConstructorType = 141, - TypeQuery = 142, - TypeLiteral = 143, - ArrayType = 144, - TupleType = 145, - UnionType = 146, - ParenthesizedType = 147, - ObjectBindingPattern = 148, - ArrayBindingPattern = 149, - BindingElement = 150, - ArrayLiteralExpression = 151, - ObjectLiteralExpression = 152, - PropertyAccessExpression = 153, - ElementAccessExpression = 154, - CallExpression = 155, - NewExpression = 156, - TaggedTemplateExpression = 157, - TypeAssertionExpression = 158, - ParenthesizedExpression = 159, - FunctionExpression = 160, - ArrowFunction = 161, - DeleteExpression = 162, - TypeOfExpression = 163, - VoidExpression = 164, - PrefixUnaryExpression = 165, - PostfixUnaryExpression = 166, - BinaryExpression = 167, - ConditionalExpression = 168, - TemplateExpression = 169, - YieldExpression = 170, - SpreadElementExpression = 171, - OmittedExpression = 172, - TemplateSpan = 173, - Block = 174, - VariableStatement = 175, - EmptyStatement = 176, - ExpressionStatement = 177, - IfStatement = 178, - DoStatement = 179, - WhileStatement = 180, - ForStatement = 181, - ForInStatement = 182, - ForOfStatement = 183, - ContinueStatement = 184, - BreakStatement = 185, - ReturnStatement = 186, - WithStatement = 187, - SwitchStatement = 188, - LabeledStatement = 189, - ThrowStatement = 190, - TryStatement = 191, - DebuggerStatement = 192, - VariableDeclaration = 193, - VariableDeclarationList = 194, - FunctionDeclaration = 195, - ClassDeclaration = 196, - InterfaceDeclaration = 197, - TypeAliasDeclaration = 198, - EnumDeclaration = 199, - ModuleDeclaration = 200, - ModuleBlock = 201, - ImportEqualsDeclaration = 202, - ImportDeclaration = 203, - ImportClause = 204, - NamespaceImport = 205, - NamedImports = 206, - ImportSpecifier = 207, - ExportAssignment = 208, - ExportDeclaration = 209, - NamedExports = 210, - ExportSpecifier = 211, - ExternalModuleReference = 212, - CaseClause = 213, - DefaultClause = 214, - HeritageClause = 215, - CatchClause = 216, - PropertyAssignment = 217, - ShorthandPropertyAssignment = 218, - EnumMember = 219, - SourceFile = 220, - SyntaxList = 221, - Count = 222, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 124, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, FirstFutureReservedWord = 103, LastFutureReservedWord = 111, - FirstTypeNode = 139, - LastTypeNode = 147, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 124, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -303,8 +310,8 @@ declare module "typescript" { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 125, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -313,25 +320,28 @@ declare module "typescript" { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -342,6 +352,7 @@ declare module "typescript" { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; modifiers?: ModifiersArray; id?: number; parent?: Node; @@ -372,6 +383,9 @@ declare module "typescript" { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -449,7 +463,7 @@ declare module "typescript" { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -458,6 +472,9 @@ declare module "typescript" { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -542,16 +559,22 @@ declare module "typescript" { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -578,6 +601,7 @@ declare module "typescript" { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -589,6 +613,10 @@ declare module "typescript" { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -651,6 +679,9 @@ declare module "typescript" { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -673,20 +704,23 @@ declare module "typescript" { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -698,7 +732,7 @@ declare module "typescript" { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -712,10 +746,7 @@ declare module "typescript" { name: Identifier; members: NodeArray; } - interface ExportContainer { - exportStars?: ExportDeclaration[]; - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } @@ -729,7 +760,7 @@ declare module "typescript" { interface ExternalModuleReference extends Node { expression?: Expression; } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { importClause?: ImportClause; moduleSpecifier: Expression; } @@ -740,7 +771,7 @@ declare module "typescript" { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { exportClause?: NamedExports; moduleSpecifier?: Expression; } @@ -755,8 +786,10 @@ declare module "typescript" { } type ImportSpecifier = ImportOrExportSpecifier; type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -764,7 +797,7 @@ declare module "typescript" { interface CommentRange extends TextRange { hasTrailingNewLine?: boolean; } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; @@ -791,14 +824,14 @@ declare module "typescript" { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -869,6 +902,7 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -916,9 +950,10 @@ declare module "typescript" { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportEqualsDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -926,20 +961,23 @@ declare module "typescript" { errorModuleName?: string; } interface EmitResolver { - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; - getExpressionNameSubstitution(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: Node): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -965,13 +1003,14 @@ declare module "typescript" { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -996,7 +1035,7 @@ declare module "typescript" { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -1025,10 +1064,9 @@ declare module "typescript" { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignmentChecked?: boolean; - exportAssignmentSymbol?: Symbol; unionType?: UnionType; resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -1044,6 +1082,8 @@ declare module "typescript" { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -1163,17 +1203,6 @@ declare module "typescript" { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1201,7 +1230,6 @@ declare module "typescript" { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1215,7 +1243,6 @@ declare module "typescript" { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1228,7 +1255,7 @@ declare module "typescript" { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1420,6 +1447,7 @@ declare module "typescript" { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1468,13 +1496,31 @@ declare module "typescript" { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1516,9 +1562,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1584,6 +1627,7 @@ declare module "typescript" { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1670,6 +1714,10 @@ declare module "typescript" { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1754,6 +1802,7 @@ declare module "typescript" { name: string; kind: string; kindModifiers: string; + sortText: string; } interface CompletionEntryDetails { name: string; @@ -1872,25 +1921,17 @@ declare module "typescript" { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1904,6 +1945,7 @@ declare module "typescript" { } class ScriptElementKind { static unknown: string; + static warning: string; static keyword: string; static scriptElement: string; static moduleElement: string; @@ -1971,8 +2013,9 @@ declare module "typescript" { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index 970562a7b65..635aff75628 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -351,159 +351,159 @@ declare module "typescript" { ColonToken = 51, >ColonToken : SyntaxKind - EqualsToken = 52, + AtToken = 52, +>AtToken : SyntaxKind + + EqualsToken = 53, >EqualsToken : SyntaxKind - PlusEqualsToken = 53, + PlusEqualsToken = 54, >PlusEqualsToken : SyntaxKind - MinusEqualsToken = 54, + MinusEqualsToken = 55, >MinusEqualsToken : SyntaxKind - AsteriskEqualsToken = 55, + AsteriskEqualsToken = 56, >AsteriskEqualsToken : SyntaxKind - SlashEqualsToken = 56, + SlashEqualsToken = 57, >SlashEqualsToken : SyntaxKind - PercentEqualsToken = 57, + PercentEqualsToken = 58, >PercentEqualsToken : SyntaxKind - LessThanLessThanEqualsToken = 58, + LessThanLessThanEqualsToken = 59, >LessThanLessThanEqualsToken : SyntaxKind - GreaterThanGreaterThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, >GreaterThanGreaterThanEqualsToken : SyntaxKind - GreaterThanGreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, >GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind - AmpersandEqualsToken = 61, + AmpersandEqualsToken = 62, >AmpersandEqualsToken : SyntaxKind - BarEqualsToken = 62, + BarEqualsToken = 63, >BarEqualsToken : SyntaxKind - CaretEqualsToken = 63, + CaretEqualsToken = 64, >CaretEqualsToken : SyntaxKind - Identifier = 64, + Identifier = 65, >Identifier : SyntaxKind - BreakKeyword = 65, + BreakKeyword = 66, >BreakKeyword : SyntaxKind - CaseKeyword = 66, + CaseKeyword = 67, >CaseKeyword : SyntaxKind - CatchKeyword = 67, + CatchKeyword = 68, >CatchKeyword : SyntaxKind - ClassKeyword = 68, + ClassKeyword = 69, >ClassKeyword : SyntaxKind - ConstKeyword = 69, + ConstKeyword = 70, >ConstKeyword : SyntaxKind - ContinueKeyword = 70, + ContinueKeyword = 71, >ContinueKeyword : SyntaxKind - DebuggerKeyword = 71, + DebuggerKeyword = 72, >DebuggerKeyword : SyntaxKind - DefaultKeyword = 72, + DefaultKeyword = 73, >DefaultKeyword : SyntaxKind - DeleteKeyword = 73, + DeleteKeyword = 74, >DeleteKeyword : SyntaxKind - DoKeyword = 74, + DoKeyword = 75, >DoKeyword : SyntaxKind - ElseKeyword = 75, + ElseKeyword = 76, >ElseKeyword : SyntaxKind - EnumKeyword = 76, + EnumKeyword = 77, >EnumKeyword : SyntaxKind - ExportKeyword = 77, + ExportKeyword = 78, >ExportKeyword : SyntaxKind - ExtendsKeyword = 78, + ExtendsKeyword = 79, >ExtendsKeyword : SyntaxKind - FalseKeyword = 79, + FalseKeyword = 80, >FalseKeyword : SyntaxKind - FinallyKeyword = 80, + FinallyKeyword = 81, >FinallyKeyword : SyntaxKind - ForKeyword = 81, + ForKeyword = 82, >ForKeyword : SyntaxKind - FunctionKeyword = 82, + FunctionKeyword = 83, >FunctionKeyword : SyntaxKind - IfKeyword = 83, + IfKeyword = 84, >IfKeyword : SyntaxKind - ImportKeyword = 84, + ImportKeyword = 85, >ImportKeyword : SyntaxKind - InKeyword = 85, + InKeyword = 86, >InKeyword : SyntaxKind - InstanceOfKeyword = 86, + InstanceOfKeyword = 87, >InstanceOfKeyword : SyntaxKind - NewKeyword = 87, + NewKeyword = 88, >NewKeyword : SyntaxKind - NullKeyword = 88, + NullKeyword = 89, >NullKeyword : SyntaxKind - ReturnKeyword = 89, + ReturnKeyword = 90, >ReturnKeyword : SyntaxKind - SuperKeyword = 90, + SuperKeyword = 91, >SuperKeyword : SyntaxKind - SwitchKeyword = 91, + SwitchKeyword = 92, >SwitchKeyword : SyntaxKind - ThisKeyword = 92, + ThisKeyword = 93, >ThisKeyword : SyntaxKind - ThrowKeyword = 93, + ThrowKeyword = 94, >ThrowKeyword : SyntaxKind - TrueKeyword = 94, + TrueKeyword = 95, >TrueKeyword : SyntaxKind - TryKeyword = 95, + TryKeyword = 96, >TryKeyword : SyntaxKind - TypeOfKeyword = 96, + TypeOfKeyword = 97, >TypeOfKeyword : SyntaxKind - VarKeyword = 97, + VarKeyword = 98, >VarKeyword : SyntaxKind - VoidKeyword = 98, + VoidKeyword = 99, >VoidKeyword : SyntaxKind - WhileKeyword = 99, + WhileKeyword = 100, >WhileKeyword : SyntaxKind - WithKeyword = 100, + WithKeyword = 101, >WithKeyword : SyntaxKind - AsKeyword = 101, + AsKeyword = 102, >AsKeyword : SyntaxKind - FromKeyword = 102, ->FromKeyword : SyntaxKind - ImplementsKeyword = 103, >ImplementsKeyword : SyntaxKind @@ -567,319 +567,340 @@ declare module "typescript" { TypeKeyword = 123, >TypeKeyword : SyntaxKind - OfKeyword = 124, + FromKeyword = 124, +>FromKeyword : SyntaxKind + + OfKeyword = 125, >OfKeyword : SyntaxKind - QualifiedName = 125, + QualifiedName = 126, >QualifiedName : SyntaxKind - ComputedPropertyName = 126, + ComputedPropertyName = 127, >ComputedPropertyName : SyntaxKind - TypeParameter = 127, + TypeParameter = 128, >TypeParameter : SyntaxKind - Parameter = 128, + Parameter = 129, >Parameter : SyntaxKind - PropertySignature = 129, + Decorator = 130, +>Decorator : SyntaxKind + + PropertySignature = 131, >PropertySignature : SyntaxKind - PropertyDeclaration = 130, + PropertyDeclaration = 132, >PropertyDeclaration : SyntaxKind - MethodSignature = 131, + MethodSignature = 133, >MethodSignature : SyntaxKind - MethodDeclaration = 132, + MethodDeclaration = 134, >MethodDeclaration : SyntaxKind - Constructor = 133, + Constructor = 135, >Constructor : SyntaxKind - GetAccessor = 134, + GetAccessor = 136, >GetAccessor : SyntaxKind - SetAccessor = 135, + SetAccessor = 137, >SetAccessor : SyntaxKind - CallSignature = 136, + CallSignature = 138, >CallSignature : SyntaxKind - ConstructSignature = 137, + ConstructSignature = 139, >ConstructSignature : SyntaxKind - IndexSignature = 138, + IndexSignature = 140, >IndexSignature : SyntaxKind - TypeReference = 139, + TypeReference = 141, >TypeReference : SyntaxKind - FunctionType = 140, + FunctionType = 142, >FunctionType : SyntaxKind - ConstructorType = 141, + ConstructorType = 143, >ConstructorType : SyntaxKind - TypeQuery = 142, + TypeQuery = 144, >TypeQuery : SyntaxKind - TypeLiteral = 143, + TypeLiteral = 145, >TypeLiteral : SyntaxKind - ArrayType = 144, + ArrayType = 146, >ArrayType : SyntaxKind - TupleType = 145, + TupleType = 147, >TupleType : SyntaxKind - UnionType = 146, + UnionType = 148, >UnionType : SyntaxKind - ParenthesizedType = 147, + ParenthesizedType = 149, >ParenthesizedType : SyntaxKind - ObjectBindingPattern = 148, + ObjectBindingPattern = 150, >ObjectBindingPattern : SyntaxKind - ArrayBindingPattern = 149, + ArrayBindingPattern = 151, >ArrayBindingPattern : SyntaxKind - BindingElement = 150, + BindingElement = 152, >BindingElement : SyntaxKind - ArrayLiteralExpression = 151, + ArrayLiteralExpression = 153, >ArrayLiteralExpression : SyntaxKind - ObjectLiteralExpression = 152, + ObjectLiteralExpression = 154, >ObjectLiteralExpression : SyntaxKind - PropertyAccessExpression = 153, + PropertyAccessExpression = 155, >PropertyAccessExpression : SyntaxKind - ElementAccessExpression = 154, + ElementAccessExpression = 156, >ElementAccessExpression : SyntaxKind - CallExpression = 155, + CallExpression = 157, >CallExpression : SyntaxKind - NewExpression = 156, + NewExpression = 158, >NewExpression : SyntaxKind - TaggedTemplateExpression = 157, + TaggedTemplateExpression = 159, >TaggedTemplateExpression : SyntaxKind - TypeAssertionExpression = 158, + TypeAssertionExpression = 160, >TypeAssertionExpression : SyntaxKind - ParenthesizedExpression = 159, + ParenthesizedExpression = 161, >ParenthesizedExpression : SyntaxKind - FunctionExpression = 160, + FunctionExpression = 162, >FunctionExpression : SyntaxKind - ArrowFunction = 161, + ArrowFunction = 163, >ArrowFunction : SyntaxKind - DeleteExpression = 162, + DeleteExpression = 164, >DeleteExpression : SyntaxKind - TypeOfExpression = 163, + TypeOfExpression = 165, >TypeOfExpression : SyntaxKind - VoidExpression = 164, + VoidExpression = 166, >VoidExpression : SyntaxKind - PrefixUnaryExpression = 165, + PrefixUnaryExpression = 167, >PrefixUnaryExpression : SyntaxKind - PostfixUnaryExpression = 166, + PostfixUnaryExpression = 168, >PostfixUnaryExpression : SyntaxKind - BinaryExpression = 167, + BinaryExpression = 169, >BinaryExpression : SyntaxKind - ConditionalExpression = 168, + ConditionalExpression = 170, >ConditionalExpression : SyntaxKind - TemplateExpression = 169, + TemplateExpression = 171, >TemplateExpression : SyntaxKind - YieldExpression = 170, + YieldExpression = 172, >YieldExpression : SyntaxKind - SpreadElementExpression = 171, + SpreadElementExpression = 173, >SpreadElementExpression : SyntaxKind - OmittedExpression = 172, + ClassExpression = 174, +>ClassExpression : SyntaxKind + + OmittedExpression = 175, >OmittedExpression : SyntaxKind - TemplateSpan = 173, + TemplateSpan = 176, >TemplateSpan : SyntaxKind - Block = 174, + HeritageClauseElement = 177, +>HeritageClauseElement : SyntaxKind + + SemicolonClassElement = 178, +>SemicolonClassElement : SyntaxKind + + Block = 179, >Block : SyntaxKind - VariableStatement = 175, + VariableStatement = 180, >VariableStatement : SyntaxKind - EmptyStatement = 176, + EmptyStatement = 181, >EmptyStatement : SyntaxKind - ExpressionStatement = 177, + ExpressionStatement = 182, >ExpressionStatement : SyntaxKind - IfStatement = 178, + IfStatement = 183, >IfStatement : SyntaxKind - DoStatement = 179, + DoStatement = 184, >DoStatement : SyntaxKind - WhileStatement = 180, + WhileStatement = 185, >WhileStatement : SyntaxKind - ForStatement = 181, + ForStatement = 186, >ForStatement : SyntaxKind - ForInStatement = 182, + ForInStatement = 187, >ForInStatement : SyntaxKind - ForOfStatement = 183, + ForOfStatement = 188, >ForOfStatement : SyntaxKind - ContinueStatement = 184, + ContinueStatement = 189, >ContinueStatement : SyntaxKind - BreakStatement = 185, + BreakStatement = 190, >BreakStatement : SyntaxKind - ReturnStatement = 186, + ReturnStatement = 191, >ReturnStatement : SyntaxKind - WithStatement = 187, + WithStatement = 192, >WithStatement : SyntaxKind - SwitchStatement = 188, + SwitchStatement = 193, >SwitchStatement : SyntaxKind - LabeledStatement = 189, + LabeledStatement = 194, >LabeledStatement : SyntaxKind - ThrowStatement = 190, + ThrowStatement = 195, >ThrowStatement : SyntaxKind - TryStatement = 191, + TryStatement = 196, >TryStatement : SyntaxKind - DebuggerStatement = 192, + DebuggerStatement = 197, >DebuggerStatement : SyntaxKind - VariableDeclaration = 193, + VariableDeclaration = 198, >VariableDeclaration : SyntaxKind - VariableDeclarationList = 194, + VariableDeclarationList = 199, >VariableDeclarationList : SyntaxKind - FunctionDeclaration = 195, + FunctionDeclaration = 200, >FunctionDeclaration : SyntaxKind - ClassDeclaration = 196, + ClassDeclaration = 201, >ClassDeclaration : SyntaxKind - InterfaceDeclaration = 197, + InterfaceDeclaration = 202, >InterfaceDeclaration : SyntaxKind - TypeAliasDeclaration = 198, + TypeAliasDeclaration = 203, >TypeAliasDeclaration : SyntaxKind - EnumDeclaration = 199, + EnumDeclaration = 204, >EnumDeclaration : SyntaxKind - ModuleDeclaration = 200, + ModuleDeclaration = 205, >ModuleDeclaration : SyntaxKind - ModuleBlock = 201, + ModuleBlock = 206, >ModuleBlock : SyntaxKind - ImportEqualsDeclaration = 202, + CaseBlock = 207, +>CaseBlock : SyntaxKind + + ImportEqualsDeclaration = 208, >ImportEqualsDeclaration : SyntaxKind - ImportDeclaration = 203, + ImportDeclaration = 209, >ImportDeclaration : SyntaxKind - ImportClause = 204, + ImportClause = 210, >ImportClause : SyntaxKind - NamespaceImport = 205, + NamespaceImport = 211, >NamespaceImport : SyntaxKind - NamedImports = 206, + NamedImports = 212, >NamedImports : SyntaxKind - ImportSpecifier = 207, + ImportSpecifier = 213, >ImportSpecifier : SyntaxKind - ExportAssignment = 208, + ExportAssignment = 214, >ExportAssignment : SyntaxKind - ExportDeclaration = 209, + ExportDeclaration = 215, >ExportDeclaration : SyntaxKind - NamedExports = 210, + NamedExports = 216, >NamedExports : SyntaxKind - ExportSpecifier = 211, + ExportSpecifier = 217, >ExportSpecifier : SyntaxKind - ExternalModuleReference = 212, + MissingDeclaration = 218, +>MissingDeclaration : SyntaxKind + + ExternalModuleReference = 219, >ExternalModuleReference : SyntaxKind - CaseClause = 213, + CaseClause = 220, >CaseClause : SyntaxKind - DefaultClause = 214, + DefaultClause = 221, >DefaultClause : SyntaxKind - HeritageClause = 215, + HeritageClause = 222, >HeritageClause : SyntaxKind - CatchClause = 216, + CatchClause = 223, >CatchClause : SyntaxKind - PropertyAssignment = 217, + PropertyAssignment = 224, >PropertyAssignment : SyntaxKind - ShorthandPropertyAssignment = 218, + ShorthandPropertyAssignment = 225, >ShorthandPropertyAssignment : SyntaxKind - EnumMember = 219, + EnumMember = 226, >EnumMember : SyntaxKind - SourceFile = 220, + SourceFile = 227, >SourceFile : SyntaxKind - SyntaxList = 221, + SyntaxList = 228, >SyntaxList : SyntaxKind - Count = 222, + Count = 229, >Count : SyntaxKind - FirstAssignment = 52, + FirstAssignment = 53, >FirstAssignment : SyntaxKind - LastAssignment = 63, + LastAssignment = 64, >LastAssignment : SyntaxKind - FirstReservedWord = 65, + FirstReservedWord = 66, >FirstReservedWord : SyntaxKind - LastReservedWord = 100, + LastReservedWord = 101, >LastReservedWord : SyntaxKind - FirstKeyword = 65, + FirstKeyword = 66, >FirstKeyword : SyntaxKind - LastKeyword = 124, + LastKeyword = 125, >LastKeyword : SyntaxKind FirstFutureReservedWord = 103, @@ -888,22 +909,22 @@ declare module "typescript" { LastFutureReservedWord = 111, >LastFutureReservedWord : SyntaxKind - FirstTypeNode = 139, + FirstTypeNode = 141, >FirstTypeNode : SyntaxKind - LastTypeNode = 147, + LastTypeNode = 149, >LastTypeNode : SyntaxKind FirstPunctuation = 14, >FirstPunctuation : SyntaxKind - LastPunctuation = 63, + LastPunctuation = 64, >LastPunctuation : SyntaxKind FirstToken = 0, >FirstToken : SyntaxKind - LastToken = 124, + LastToken = 125, >LastToken : SyntaxKind FirstTriviaToken = 2, @@ -927,10 +948,10 @@ declare module "typescript" { FirstBinaryOperator = 24, >FirstBinaryOperator : SyntaxKind - LastBinaryOperator = 63, + LastBinaryOperator = 64, >LastBinaryOperator : SyntaxKind - FirstNode = 125, + FirstNode = 126, >FirstNode : SyntaxKind } const enum NodeFlags { @@ -954,31 +975,37 @@ declare module "typescript" { Static = 128, >Static : NodeFlags - MultiLine = 256, + Default = 256, +>Default : NodeFlags + + MultiLine = 512, >MultiLine : NodeFlags - Synthetic = 512, + Synthetic = 1024, >Synthetic : NodeFlags - DeclarationFile = 1024, + DeclarationFile = 2048, >DeclarationFile : NodeFlags - Let = 2048, + Let = 4096, >Let : NodeFlags - Const = 4096, + Const = 8192, >Const : NodeFlags - OctalLiteral = 8192, + OctalLiteral = 16384, >OctalLiteral : NodeFlags - Modifier = 243, + ExportContext = 32768, +>ExportContext : NodeFlags + + Modifier = 499, >Modifier : NodeFlags AccessibilityModifier = 112, >AccessibilityModifier : NodeFlags - BlockScoped = 6144, + BlockScoped = 12288, >BlockScoped : NodeFlags } const enum ParserContextFlags { @@ -996,16 +1023,19 @@ declare module "typescript" { GeneratorParameter = 8, >GeneratorParameter : ParserContextFlags - ThisNodeHasError = 16, + Decorator = 16, +>Decorator : ParserContextFlags + + ThisNodeHasError = 32, >ThisNodeHasError : ParserContextFlags - ParserGeneratedFlags = 31, + ParserGeneratedFlags = 63, >ParserGeneratedFlags : ParserContextFlags - ThisNodeOrAnySubNodesHasError = 32, + ThisNodeOrAnySubNodesHasError = 64, >ThisNodeOrAnySubNodesHasError : ParserContextFlags - HasAggregatedChildData = 64, + HasAggregatedChildData = 128, >HasAggregatedChildData : ParserContextFlags } const enum RelationComparisonResult { @@ -1036,6 +1066,11 @@ declare module "typescript" { >parserContextFlags : ParserContextFlags >ParserContextFlags : ParserContextFlags + decorators?: NodeArray; +>decorators : NodeArray +>NodeArray : NodeArray +>Decorator : Decorator + modifiers?: ModifiersArray; >modifiers : ModifiersArray >ModifiersArray : ModifiersArray @@ -1130,6 +1165,14 @@ declare module "typescript" { expression: Expression; >expression : Expression >Expression : Expression + } + interface Decorator extends Node { +>Decorator : Decorator +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression } interface TypeParameterDeclaration extends Declaration { >TypeParameterDeclaration : TypeParameterDeclaration @@ -1370,7 +1413,7 @@ declare module "typescript" { >FunctionLikeDeclaration : FunctionLikeDeclaration >Statement : Statement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -1396,6 +1439,13 @@ declare module "typescript" { body?: Block; >body : Block >Block : Block + } + interface SemicolonClassElement extends ClassElement { +>SemicolonClassElement : SemicolonClassElement +>ClassElement : ClassElement + + _semicolonClassElementBrand: any; +>_semicolonClassElementBrand : any } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { >AccessorDeclaration : AccessorDeclaration @@ -1633,10 +1683,18 @@ declare module "typescript" { >condition : Expression >Expression : Expression + questionToken: Node; +>questionToken : Node +>Node : Node + whenTrue: Expression; >whenTrue : Expression >Expression : Expression + colonToken: Node; +>colonToken : Node +>Node : Node + whenFalse: Expression; >whenFalse : Expression >Expression : Expression @@ -1654,6 +1712,15 @@ declare module "typescript" { >body : Expression | Block >Block : Block >Expression : Expression + } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { +>ArrowFunction : ArrowFunction +>Expression : Expression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node +>Node : Node } interface LiteralExpression extends PrimaryExpression { >LiteralExpression : LiteralExpression @@ -1664,6 +1731,9 @@ declare module "typescript" { isUnterminated?: boolean; >isUnterminated : boolean + + hasExtendedUnicodeEscape?: boolean; +>hasExtendedUnicodeEscape : boolean } interface StringLiteralExpression extends LiteralExpression { >StringLiteralExpression : StringLiteralExpression @@ -1740,6 +1810,10 @@ declare module "typescript" { >expression : LeftHandSideExpression >LeftHandSideExpression : LeftHandSideExpression + dotToken: Node; +>dotToken : Node +>Node : Node + name: Identifier; >name : Identifier >Identifier : Identifier @@ -1773,6 +1847,19 @@ declare module "typescript" { >arguments : NodeArray >NodeArray : NodeArray >Expression : Expression + } + interface HeritageClauseElement extends Node { +>HeritageClauseElement : HeritageClauseElement +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode } interface NewExpression extends CallExpression, PrimaryExpression { >NewExpression : NewExpression @@ -1962,6 +2049,14 @@ declare module "typescript" { >expression : Expression >Expression : Expression + caseBlock: CaseBlock; +>caseBlock : CaseBlock +>CaseBlock : CaseBlock + } + interface CaseBlock extends Node { +>CaseBlock : CaseBlock +>Node : Node + clauses: NodeArray; >clauses : NodeArray >NodeArray : NodeArray @@ -2030,17 +2125,13 @@ declare module "typescript" { >finallyBlock : Block >Block : Block } - interface CatchClause extends Declaration { + interface CatchClause extends Node { >CatchClause : CatchClause ->Declaration : Declaration +>Node : Node - name: Identifier; ->name : Identifier ->Identifier : Identifier - - type?: TypeNode; ->type : TypeNode ->TypeNode : TypeNode + variableDeclaration: VariableDeclaration; +>variableDeclaration : VariableDeclaration +>VariableDeclaration : VariableDeclaration block: Block; >block : Block @@ -2053,12 +2144,11 @@ declare module "typescript" { _moduleElementBrand: any; >_moduleElementBrand : any } - interface ClassDeclaration extends Declaration, ModuleElement { ->ClassDeclaration : ClassDeclaration + interface ClassLikeDeclaration extends Declaration { +>ClassLikeDeclaration : ClassLikeDeclaration >Declaration : Declaration ->ModuleElement : ModuleElement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -2076,6 +2166,16 @@ declare module "typescript" { >members : NodeArray >NodeArray : NodeArray >ClassElement : ClassElement + } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { +>ClassDeclaration : ClassDeclaration +>ClassLikeDeclaration : ClassLikeDeclaration +>Statement : Statement + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { +>ClassExpression : ClassExpression +>ClassLikeDeclaration : ClassLikeDeclaration +>PrimaryExpression : PrimaryExpression } interface ClassElement extends Declaration { >ClassElement : ClassElement @@ -2116,10 +2216,10 @@ declare module "typescript" { >token : SyntaxKind >SyntaxKind : SyntaxKind - types?: NodeArray; ->types : NodeArray + types?: NodeArray; +>types : NodeArray >NodeArray : NodeArray ->TypeReferenceNode : TypeReferenceNode +>HeritageClauseElement : HeritageClauseElement } interface TypeAliasDeclaration extends Declaration, ModuleElement { >TypeAliasDeclaration : TypeAliasDeclaration @@ -2160,18 +2260,10 @@ declare module "typescript" { >NodeArray : NodeArray >EnumMember : EnumMember } - interface ExportContainer { ->ExportContainer : ExportContainer - - exportStars?: ExportDeclaration[]; ->exportStars : ExportDeclaration[] ->ExportDeclaration : ExportDeclaration - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { >ModuleDeclaration : ModuleDeclaration >Declaration : Declaration >ModuleElement : ModuleElement ->ExportContainer : ExportContainer name: Identifier | LiteralExpression; >name : Identifier | LiteralExpression @@ -2215,9 +2307,8 @@ declare module "typescript" { >expression : Expression >Expression : Expression } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { >ImportDeclaration : ImportDeclaration ->Statement : Statement >ModuleElement : ModuleElement importClause?: ImportClause; @@ -2249,9 +2340,9 @@ declare module "typescript" { >name : Identifier >Identifier : Identifier } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { >ExportDeclaration : ExportDeclaration ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement exportClause?: NamedExports; @@ -2299,14 +2390,21 @@ declare module "typescript" { >ExportSpecifier : ImportOrExportSpecifier >ImportOrExportSpecifier : ImportOrExportSpecifier - interface ExportAssignment extends Statement, ModuleElement { + interface ExportAssignment extends Declaration, ModuleElement { >ExportAssignment : ExportAssignment ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement - exportName: Identifier; ->exportName : Identifier ->Identifier : Identifier + isExportEquals?: boolean; +>isExportEquals : boolean + + expression?: Expression; +>expression : Expression +>Expression : Expression + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode } interface FileReference extends TextRange { >FileReference : FileReference @@ -2322,10 +2420,9 @@ declare module "typescript" { hasTrailingNewLine?: boolean; >hasTrailingNewLine : boolean } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { >SourceFile : SourceFile >Declaration : Declaration ->ExportContainer : ExportContainer statements: NodeArray; >statements : NodeArray @@ -2408,14 +2505,14 @@ declare module "typescript" { >SourceFile : SourceFile /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; >emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult @@ -2718,6 +2815,12 @@ declare module "typescript" { >getAliasedSymbol : (symbol: Symbol) => Symbol >symbol : Symbol >Symbol : Symbol +>Symbol : Symbol + + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; +>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[] +>moduleSymbol : Symbol +>Symbol : Symbol >Symbol : Symbol } interface SymbolDisplayBuilder { @@ -2932,6 +3035,11 @@ declare module "typescript" { CannotBeNamed = 2, >CannotBeNamed : SymbolAccessibility } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration +>ImportDeclaration : ImportDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + interface SymbolVisibilityResult { >SymbolVisibilityResult : SymbolVisibilityResult @@ -2939,9 +3047,9 @@ declare module "typescript" { >accessibility : SymbolAccessibility >SymbolAccessibility : SymbolAccessibility - aliasesToMakeVisible?: ImportEqualsDeclaration[]; ->aliasesToMakeVisible : ImportEqualsDeclaration[] ->ImportEqualsDeclaration : ImportEqualsDeclaration + aliasesToMakeVisible?: AnyImportSyntax[]; +>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[] +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration errorSymbolName?: string; >errorSymbolName : string @@ -2960,29 +3068,29 @@ declare module "typescript" { interface EmitResolver { >EmitResolver : EmitResolver - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; ->getGeneratedNameForNode : (node: EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration) => string ->node : EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration ->ModuleDeclaration : ModuleDeclaration ->EnumDeclaration : EnumDeclaration ->ImportDeclaration : ImportDeclaration ->ExportDeclaration : ExportDeclaration + hasGlobalName(name: string): boolean; +>hasGlobalName : (name: string) => boolean +>name : string - getExpressionNameSubstitution(node: Identifier): string; ->getExpressionNameSubstitution : (node: Identifier) => string + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; +>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string >node : Identifier >Identifier : Identifier - - getExportAssignmentName(node: SourceFile): string; ->getExportAssignmentName : (node: SourceFile) => string ->node : SourceFile ->SourceFile : SourceFile - - isReferencedImportDeclaration(node: Node): boolean; ->isReferencedImportDeclaration : (node: Node) => boolean +>getGeneratedNameForNode : (node: Node) => string >node : Node >Node : Node + isValueAliasDeclaration(node: Node): boolean; +>isValueAliasDeclaration : (node: Node) => boolean +>node : Node +>Node : Node + + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; +>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean +>node : Node +>Node : Node +>checkChildren : boolean + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; >isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean >node : ImportEqualsDeclaration @@ -2999,6 +3107,12 @@ declare module "typescript" { >node : Declaration >Declaration : Declaration + collectLinkedAliases(node: Identifier): Node[]; +>collectLinkedAliases : (node: Identifier) => Node[] +>node : Identifier +>Identifier : Identifier +>Node : Node + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; >isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean >node : FunctionLikeDeclaration @@ -3025,6 +3139,17 @@ declare module "typescript" { >flags : TypeFormatFlags >TypeFormatFlags : TypeFormatFlags >writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>expr : Expression +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter >SymbolWriter : SymbolWriter isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; @@ -3037,10 +3162,11 @@ declare module "typescript" { >SymbolFlags : SymbolFlags >SymbolAccessiblityResult : SymbolAccessiblityResult - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; ->isEntityNameVisible : (entityName: Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult ->entityName : Identifier | QualifiedName + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; +>isEntityNameVisible : (entityName: Identifier | Expression | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult +>entityName : Identifier | Expression | QualifiedName >EntityName : Identifier | QualifiedName +>Expression : Expression >enclosingDeclaration : Node >Node : Node >SymbolVisibilityResult : SymbolVisibilityResult @@ -3052,11 +3178,16 @@ declare module "typescript" { >PropertyAccessExpression : PropertyAccessExpression >ElementAccessExpression : ElementAccessExpression - isUnknownIdentifier(location: Node, name: string): boolean; ->isUnknownIdentifier : (location: Node, name: string) => boolean + resolvesToSomeValue(location: Node, name: string): boolean; +>resolvesToSomeValue : (location: Node, name: string) => boolean >location : Node >Node : Node >name : string + + getBlockScopedVariableId(node: Identifier): number; +>getBlockScopedVariableId : (node: Identifier) => number +>node : Identifier +>Identifier : Identifier } const enum SymbolFlags { >SymbolFlags : SymbolFlags @@ -3130,8 +3261,8 @@ declare module "typescript" { ExportNamespace = 4194304, >ExportNamespace : SymbolFlags - Import = 8388608, ->Import : SymbolFlags + Alias = 8388608, +>Alias : SymbolFlags Instantiated = 16777216, >Instantiated : SymbolFlags @@ -3151,6 +3282,9 @@ declare module "typescript" { Optional = 536870912, >Optional : SymbolFlags + ExportStar = 1073741824, +>ExportStar : SymbolFlags + Enum = 384, >Enum : SymbolFlags @@ -3223,8 +3357,8 @@ declare module "typescript" { TypeAliasExcludes = 793056, >TypeAliasExcludes : SymbolFlags - ImportExcludes = 8388608, ->ImportExcludes : SymbolFlags + AliasExcludes = 8388608, +>AliasExcludes : SymbolFlags ModuleMember = 8914931, >ModuleMember : SymbolFlags @@ -3315,13 +3449,6 @@ declare module "typescript" { referenced?: boolean; >referenced : boolean - exportAssignmentChecked?: boolean; ->exportAssignmentChecked : boolean - - exportAssignmentSymbol?: Symbol; ->exportAssignmentSymbol : Symbol ->Symbol : Symbol - unionType?: UnionType; >unionType : UnionType >UnionType : UnionType @@ -3329,6 +3456,9 @@ declare module "typescript" { resolvedExports?: SymbolTable; >resolvedExports : SymbolTable >SymbolTable : SymbolTable + + exportsChecked?: boolean; +>exportsChecked : boolean } interface TransientSymbol extends Symbol, SymbolLinks { >TransientSymbol : TransientSymbol @@ -3368,6 +3498,12 @@ declare module "typescript" { EnumValuesComputed = 128, >EnumValuesComputed : NodeCheckFlags + + BlockScopedBindingInLoop = 256, +>BlockScopedBindingInLoop : NodeCheckFlags + + EmitDecorate = 512, +>EmitDecorate : NodeCheckFlags } interface NodeLinks { >NodeLinks : NodeLinks @@ -3727,38 +3863,6 @@ declare module "typescript" { >t : Type >Type : Type >Type : Type - } - interface TypeInferences { ->TypeInferences : TypeInferences - - primary: Type[]; ->primary : Type[] ->Type : Type - - secondary: Type[]; ->secondary : Type[] ->Type : Type - } - interface InferenceContext { ->InferenceContext : InferenceContext - - typeParameters: TypeParameter[]; ->typeParameters : TypeParameter[] ->TypeParameter : TypeParameter - - inferUnionTypes: boolean; ->inferUnionTypes : boolean - - inferences: TypeInferences[]; ->inferences : TypeInferences[] ->TypeInferences : TypeInferences - - inferredTypes: Type[]; ->inferredTypes : Type[] ->Type : Type - - failedTypeParameterIndex?: number; ->failedTypeParameterIndex : number } interface DiagnosticMessage { >DiagnosticMessage : DiagnosticMessage @@ -3835,9 +3939,6 @@ declare module "typescript" { charset?: string; >charset : string - codepage?: number; ->codepage : number - declaration?: boolean; >declaration : boolean @@ -3878,9 +3979,6 @@ declare module "typescript" { noLib?: boolean; >noLib : boolean - noLibCheck?: boolean; ->noLibCheck : boolean - noResolve?: boolean; >noResolve : boolean @@ -3918,8 +4016,8 @@ declare module "typescript" { watch?: boolean; >watch : boolean - stripInternal?: boolean; ->stripInternal : boolean + separateCompilation?: boolean; +>separateCompilation : boolean [option: string]: string | number | boolean; >option : string @@ -4475,6 +4573,9 @@ declare module "typescript" { getTokenValue(): string; >getTokenValue : () => string + hasExtendedUnicodeEscape(): boolean; +>hasExtendedUnicodeEscape : () => boolean + hasPrecedingLineBreak(): boolean; >hasPrecedingLineBreak : () => boolean @@ -4700,10 +4801,19 @@ declare module "typescript" { >TypeChecker : TypeChecker } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; ->createCompilerHost : (options: CompilerOptions) => CompilerHost + /** The version of the TypeScript compiler release */ + let version: string; +>version : string + + function findConfigFile(searchPath: string): string; +>findConfigFile : (searchPath: string) => string +>searchPath : string + + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; +>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost >options : CompilerOptions >CompilerOptions : CompilerOptions +>setParentNodes : boolean >CompilerHost : CompilerHost function getPreEmitDiagnostics(program: Program): Diagnostic[]; @@ -4728,7 +4838,29 @@ declare module "typescript" { >Program : Program } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; +>readConfigFile : (fileName: string) => any +>fileName : string + + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine +>json : any +>basePath : string +>ParsedCommandLine : ParsedCommandLine +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; >servicesVersion : string interface Node { @@ -4886,17 +5018,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - version: string; ->version : string - - scriptSnapshot: IScriptSnapshot; ->scriptSnapshot : IScriptSnapshot ->IScriptSnapshot : IScriptSnapshot - - nameTable: Map; ->nameTable : Map ->Map : Map - getNamedDeclarations(): Declaration[]; >getNamedDeclarations : () => Declaration[] >Declaration : Declaration @@ -5127,6 +5248,12 @@ declare module "typescript" { >position : number >ReferenceEntry : ReferenceEntry + findReferences(fileName: string, position: number): ReferencedSymbol[]; +>findReferences : (fileName: string, position: number) => ReferencedSymbol[] +>fileName : string +>position : number +>ReferencedSymbol : ReferencedSymbol + getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; >getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[] >searchValue : string @@ -5397,6 +5524,17 @@ declare module "typescript" { containerName: string; >containerName : string + } + interface ReferencedSymbol { +>ReferencedSymbol : ReferencedSymbol + + definition: DefinitionInfo; +>definition : DefinitionInfo +>DefinitionInfo : DefinitionInfo + + references: ReferenceEntry[]; +>references : ReferenceEntry[] +>ReferenceEntry : ReferenceEntry } enum SymbolDisplayPartKind { >SymbolDisplayPartKind : SymbolDisplayPartKind @@ -5619,6 +5757,9 @@ declare module "typescript" { kindModifiers: string; >kindModifiers : string + + sortText: string; +>sortText : string } interface CompletionEntryDetails { >CompletionEntryDetails : CompletionEntryDetails @@ -5847,36 +5988,24 @@ declare module "typescript" { /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; ->updateDocument : (sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange) => SourceFile ->sourceFile : SourceFile ->SourceFile : SourceFile + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile >fileName : string >compilationSettings : CompilerOptions >CompilerOptions : CompilerOptions >scriptSnapshot : IScriptSnapshot >IScriptSnapshot : IScriptSnapshot >version : string ->textChangeRange : TextChangeRange ->TextChangeRange : TextChangeRange >SourceFile : SourceFile /** @@ -5900,6 +6029,9 @@ declare module "typescript" { static unknown: string; >unknown : string + static warning: string; +>warning : string + static keyword: string; >keyword : string @@ -6090,6 +6222,15 @@ declare module "typescript" { throwIfCancellationRequested(): void; >throwIfCancellationRequested : () => void } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; +>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string +>input : string +>compilerOptions : CompilerOptions +>CompilerOptions : CompilerOptions +>fileName : string +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; >createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile >fileName : string @@ -6101,7 +6242,7 @@ declare module "typescript" { >setNodeParents : boolean >SourceFile : SourceFile - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; >disableIncrementalParsing : boolean function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index d4708039de0..f59fa91da14 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -142,57 +142,57 @@ declare module "typescript" { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - AsKeyword = 101, - FromKeyword = 102, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, ImplementsKeyword = 103, InterfaceKeyword = 104, LetKeyword = 105, @@ -214,119 +214,126 @@ declare module "typescript" { StringKeyword = 121, SymbolKeyword = 122, TypeKeyword = 123, - OfKeyword = 124, - QualifiedName = 125, - ComputedPropertyName = 126, - TypeParameter = 127, - Parameter = 128, - PropertySignature = 129, - PropertyDeclaration = 130, - MethodSignature = 131, - MethodDeclaration = 132, - Constructor = 133, - GetAccessor = 134, - SetAccessor = 135, - CallSignature = 136, - ConstructSignature = 137, - IndexSignature = 138, - TypeReference = 139, - FunctionType = 140, - ConstructorType = 141, - TypeQuery = 142, - TypeLiteral = 143, - ArrayType = 144, - TupleType = 145, - UnionType = 146, - ParenthesizedType = 147, - ObjectBindingPattern = 148, - ArrayBindingPattern = 149, - BindingElement = 150, - ArrayLiteralExpression = 151, - ObjectLiteralExpression = 152, - PropertyAccessExpression = 153, - ElementAccessExpression = 154, - CallExpression = 155, - NewExpression = 156, - TaggedTemplateExpression = 157, - TypeAssertionExpression = 158, - ParenthesizedExpression = 159, - FunctionExpression = 160, - ArrowFunction = 161, - DeleteExpression = 162, - TypeOfExpression = 163, - VoidExpression = 164, - PrefixUnaryExpression = 165, - PostfixUnaryExpression = 166, - BinaryExpression = 167, - ConditionalExpression = 168, - TemplateExpression = 169, - YieldExpression = 170, - SpreadElementExpression = 171, - OmittedExpression = 172, - TemplateSpan = 173, - Block = 174, - VariableStatement = 175, - EmptyStatement = 176, - ExpressionStatement = 177, - IfStatement = 178, - DoStatement = 179, - WhileStatement = 180, - ForStatement = 181, - ForInStatement = 182, - ForOfStatement = 183, - ContinueStatement = 184, - BreakStatement = 185, - ReturnStatement = 186, - WithStatement = 187, - SwitchStatement = 188, - LabeledStatement = 189, - ThrowStatement = 190, - TryStatement = 191, - DebuggerStatement = 192, - VariableDeclaration = 193, - VariableDeclarationList = 194, - FunctionDeclaration = 195, - ClassDeclaration = 196, - InterfaceDeclaration = 197, - TypeAliasDeclaration = 198, - EnumDeclaration = 199, - ModuleDeclaration = 200, - ModuleBlock = 201, - ImportEqualsDeclaration = 202, - ImportDeclaration = 203, - ImportClause = 204, - NamespaceImport = 205, - NamedImports = 206, - ImportSpecifier = 207, - ExportAssignment = 208, - ExportDeclaration = 209, - NamedExports = 210, - ExportSpecifier = 211, - ExternalModuleReference = 212, - CaseClause = 213, - DefaultClause = 214, - HeritageClause = 215, - CatchClause = 216, - PropertyAssignment = 217, - ShorthandPropertyAssignment = 218, - EnumMember = 219, - SourceFile = 220, - SyntaxList = 221, - Count = 222, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 124, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, FirstFutureReservedWord = 103, LastFutureReservedWord = 111, - FirstTypeNode = 139, - LastTypeNode = 147, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 124, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -334,8 +341,8 @@ declare module "typescript" { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 125, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -344,25 +351,28 @@ declare module "typescript" { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -373,6 +383,7 @@ declare module "typescript" { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; modifiers?: ModifiersArray; id?: number; parent?: Node; @@ -403,6 +414,9 @@ declare module "typescript" { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -480,7 +494,7 @@ declare module "typescript" { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -489,6 +503,9 @@ declare module "typescript" { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -573,16 +590,22 @@ declare module "typescript" { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -609,6 +632,7 @@ declare module "typescript" { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -620,6 +644,10 @@ declare module "typescript" { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -682,6 +710,9 @@ declare module "typescript" { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -704,20 +735,23 @@ declare module "typescript" { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -729,7 +763,7 @@ declare module "typescript" { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -743,10 +777,7 @@ declare module "typescript" { name: Identifier; members: NodeArray; } - interface ExportContainer { - exportStars?: ExportDeclaration[]; - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } @@ -760,7 +791,7 @@ declare module "typescript" { interface ExternalModuleReference extends Node { expression?: Expression; } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { importClause?: ImportClause; moduleSpecifier: Expression; } @@ -771,7 +802,7 @@ declare module "typescript" { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { exportClause?: NamedExports; moduleSpecifier?: Expression; } @@ -786,8 +817,10 @@ declare module "typescript" { } type ImportSpecifier = ImportOrExportSpecifier; type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -795,7 +828,7 @@ declare module "typescript" { interface CommentRange extends TextRange { hasTrailingNewLine?: boolean; } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; @@ -822,14 +855,14 @@ declare module "typescript" { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -900,6 +933,7 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -947,9 +981,10 @@ declare module "typescript" { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportEqualsDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -957,20 +992,23 @@ declare module "typescript" { errorModuleName?: string; } interface EmitResolver { - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; - getExpressionNameSubstitution(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: Node): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -996,13 +1034,14 @@ declare module "typescript" { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -1027,7 +1066,7 @@ declare module "typescript" { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -1056,10 +1095,9 @@ declare module "typescript" { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignmentChecked?: boolean; - exportAssignmentSymbol?: Symbol; unionType?: UnionType; resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -1075,6 +1113,8 @@ declare module "typescript" { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -1194,17 +1234,6 @@ declare module "typescript" { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1232,7 +1261,6 @@ declare module "typescript" { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1246,7 +1274,6 @@ declare module "typescript" { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1259,7 +1286,7 @@ declare module "typescript" { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1451,6 +1478,7 @@ declare module "typescript" { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1499,13 +1527,31 @@ declare module "typescript" { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1547,9 +1593,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1615,6 +1658,7 @@ declare module "typescript" { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1701,6 +1745,10 @@ declare module "typescript" { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1785,6 +1833,7 @@ declare module "typescript" { name: string; kind: string; kindModifiers: string; + sortText: string; } interface CompletionEntryDetails { name: string; @@ -1903,25 +1952,17 @@ declare module "typescript" { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1935,6 +1976,7 @@ declare module "typescript" { } class ScriptElementKind { static unknown: string; + static warning: string; static keyword: string; static scriptElement: string; static moduleElement: string; @@ -2002,8 +2044,9 @@ declare module "typescript" { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; @@ -2029,25 +2072,25 @@ function delint(sourceFile) { delintNode(sourceFile); function delintNode(node) { switch (node.kind) { - case 181 /* ForStatement */: - case 182 /* ForInStatement */: - case 180 /* WhileStatement */: - case 179 /* DoStatement */: - if (node.statement.kind !== 174 /* Block */) { + case 186 /* ForStatement */: + case 187 /* ForInStatement */: + case 185 /* WhileStatement */: + case 184 /* DoStatement */: + if (node.statement.kind !== 179 /* Block */) { report(node, "A looping statement's contents should be wrapped in a block body."); } break; - case 178 /* IfStatement */: + case 183 /* IfStatement */: var ifStatement = node; - if (ifStatement.thenStatement.kind !== 174 /* Block */) { + if (ifStatement.thenStatement.kind !== 179 /* Block */) { report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body."); } if (ifStatement.elseStatement && - ifStatement.elseStatement.kind !== 174 /* Block */ && ifStatement.elseStatement.kind !== 178 /* IfStatement */) { + ifStatement.elseStatement.kind !== 179 /* Block */ && ifStatement.elseStatement.kind !== 183 /* IfStatement */) { report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body."); } break; - case 167 /* BinaryExpression */: + case 169 /* BinaryExpression */: var op = node.operatorToken.kind; if (op === 28 /* EqualsEqualsToken */ || op === 29 /* ExclamationEqualsToken */) { report(node, "Use '===' and '!=='."); diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index 6f5c1f3e91b..12f4ac12fdc 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -497,159 +497,159 @@ declare module "typescript" { ColonToken = 51, >ColonToken : SyntaxKind - EqualsToken = 52, + AtToken = 52, +>AtToken : SyntaxKind + + EqualsToken = 53, >EqualsToken : SyntaxKind - PlusEqualsToken = 53, + PlusEqualsToken = 54, >PlusEqualsToken : SyntaxKind - MinusEqualsToken = 54, + MinusEqualsToken = 55, >MinusEqualsToken : SyntaxKind - AsteriskEqualsToken = 55, + AsteriskEqualsToken = 56, >AsteriskEqualsToken : SyntaxKind - SlashEqualsToken = 56, + SlashEqualsToken = 57, >SlashEqualsToken : SyntaxKind - PercentEqualsToken = 57, + PercentEqualsToken = 58, >PercentEqualsToken : SyntaxKind - LessThanLessThanEqualsToken = 58, + LessThanLessThanEqualsToken = 59, >LessThanLessThanEqualsToken : SyntaxKind - GreaterThanGreaterThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, >GreaterThanGreaterThanEqualsToken : SyntaxKind - GreaterThanGreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, >GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind - AmpersandEqualsToken = 61, + AmpersandEqualsToken = 62, >AmpersandEqualsToken : SyntaxKind - BarEqualsToken = 62, + BarEqualsToken = 63, >BarEqualsToken : SyntaxKind - CaretEqualsToken = 63, + CaretEqualsToken = 64, >CaretEqualsToken : SyntaxKind - Identifier = 64, + Identifier = 65, >Identifier : SyntaxKind - BreakKeyword = 65, + BreakKeyword = 66, >BreakKeyword : SyntaxKind - CaseKeyword = 66, + CaseKeyword = 67, >CaseKeyword : SyntaxKind - CatchKeyword = 67, + CatchKeyword = 68, >CatchKeyword : SyntaxKind - ClassKeyword = 68, + ClassKeyword = 69, >ClassKeyword : SyntaxKind - ConstKeyword = 69, + ConstKeyword = 70, >ConstKeyword : SyntaxKind - ContinueKeyword = 70, + ContinueKeyword = 71, >ContinueKeyword : SyntaxKind - DebuggerKeyword = 71, + DebuggerKeyword = 72, >DebuggerKeyword : SyntaxKind - DefaultKeyword = 72, + DefaultKeyword = 73, >DefaultKeyword : SyntaxKind - DeleteKeyword = 73, + DeleteKeyword = 74, >DeleteKeyword : SyntaxKind - DoKeyword = 74, + DoKeyword = 75, >DoKeyword : SyntaxKind - ElseKeyword = 75, + ElseKeyword = 76, >ElseKeyword : SyntaxKind - EnumKeyword = 76, + EnumKeyword = 77, >EnumKeyword : SyntaxKind - ExportKeyword = 77, + ExportKeyword = 78, >ExportKeyword : SyntaxKind - ExtendsKeyword = 78, + ExtendsKeyword = 79, >ExtendsKeyword : SyntaxKind - FalseKeyword = 79, + FalseKeyword = 80, >FalseKeyword : SyntaxKind - FinallyKeyword = 80, + FinallyKeyword = 81, >FinallyKeyword : SyntaxKind - ForKeyword = 81, + ForKeyword = 82, >ForKeyword : SyntaxKind - FunctionKeyword = 82, + FunctionKeyword = 83, >FunctionKeyword : SyntaxKind - IfKeyword = 83, + IfKeyword = 84, >IfKeyword : SyntaxKind - ImportKeyword = 84, + ImportKeyword = 85, >ImportKeyword : SyntaxKind - InKeyword = 85, + InKeyword = 86, >InKeyword : SyntaxKind - InstanceOfKeyword = 86, + InstanceOfKeyword = 87, >InstanceOfKeyword : SyntaxKind - NewKeyword = 87, + NewKeyword = 88, >NewKeyword : SyntaxKind - NullKeyword = 88, + NullKeyword = 89, >NullKeyword : SyntaxKind - ReturnKeyword = 89, + ReturnKeyword = 90, >ReturnKeyword : SyntaxKind - SuperKeyword = 90, + SuperKeyword = 91, >SuperKeyword : SyntaxKind - SwitchKeyword = 91, + SwitchKeyword = 92, >SwitchKeyword : SyntaxKind - ThisKeyword = 92, + ThisKeyword = 93, >ThisKeyword : SyntaxKind - ThrowKeyword = 93, + ThrowKeyword = 94, >ThrowKeyword : SyntaxKind - TrueKeyword = 94, + TrueKeyword = 95, >TrueKeyword : SyntaxKind - TryKeyword = 95, + TryKeyword = 96, >TryKeyword : SyntaxKind - TypeOfKeyword = 96, + TypeOfKeyword = 97, >TypeOfKeyword : SyntaxKind - VarKeyword = 97, + VarKeyword = 98, >VarKeyword : SyntaxKind - VoidKeyword = 98, + VoidKeyword = 99, >VoidKeyword : SyntaxKind - WhileKeyword = 99, + WhileKeyword = 100, >WhileKeyword : SyntaxKind - WithKeyword = 100, + WithKeyword = 101, >WithKeyword : SyntaxKind - AsKeyword = 101, + AsKeyword = 102, >AsKeyword : SyntaxKind - FromKeyword = 102, ->FromKeyword : SyntaxKind - ImplementsKeyword = 103, >ImplementsKeyword : SyntaxKind @@ -713,319 +713,340 @@ declare module "typescript" { TypeKeyword = 123, >TypeKeyword : SyntaxKind - OfKeyword = 124, + FromKeyword = 124, +>FromKeyword : SyntaxKind + + OfKeyword = 125, >OfKeyword : SyntaxKind - QualifiedName = 125, + QualifiedName = 126, >QualifiedName : SyntaxKind - ComputedPropertyName = 126, + ComputedPropertyName = 127, >ComputedPropertyName : SyntaxKind - TypeParameter = 127, + TypeParameter = 128, >TypeParameter : SyntaxKind - Parameter = 128, + Parameter = 129, >Parameter : SyntaxKind - PropertySignature = 129, + Decorator = 130, +>Decorator : SyntaxKind + + PropertySignature = 131, >PropertySignature : SyntaxKind - PropertyDeclaration = 130, + PropertyDeclaration = 132, >PropertyDeclaration : SyntaxKind - MethodSignature = 131, + MethodSignature = 133, >MethodSignature : SyntaxKind - MethodDeclaration = 132, + MethodDeclaration = 134, >MethodDeclaration : SyntaxKind - Constructor = 133, + Constructor = 135, >Constructor : SyntaxKind - GetAccessor = 134, + GetAccessor = 136, >GetAccessor : SyntaxKind - SetAccessor = 135, + SetAccessor = 137, >SetAccessor : SyntaxKind - CallSignature = 136, + CallSignature = 138, >CallSignature : SyntaxKind - ConstructSignature = 137, + ConstructSignature = 139, >ConstructSignature : SyntaxKind - IndexSignature = 138, + IndexSignature = 140, >IndexSignature : SyntaxKind - TypeReference = 139, + TypeReference = 141, >TypeReference : SyntaxKind - FunctionType = 140, + FunctionType = 142, >FunctionType : SyntaxKind - ConstructorType = 141, + ConstructorType = 143, >ConstructorType : SyntaxKind - TypeQuery = 142, + TypeQuery = 144, >TypeQuery : SyntaxKind - TypeLiteral = 143, + TypeLiteral = 145, >TypeLiteral : SyntaxKind - ArrayType = 144, + ArrayType = 146, >ArrayType : SyntaxKind - TupleType = 145, + TupleType = 147, >TupleType : SyntaxKind - UnionType = 146, + UnionType = 148, >UnionType : SyntaxKind - ParenthesizedType = 147, + ParenthesizedType = 149, >ParenthesizedType : SyntaxKind - ObjectBindingPattern = 148, + ObjectBindingPattern = 150, >ObjectBindingPattern : SyntaxKind - ArrayBindingPattern = 149, + ArrayBindingPattern = 151, >ArrayBindingPattern : SyntaxKind - BindingElement = 150, + BindingElement = 152, >BindingElement : SyntaxKind - ArrayLiteralExpression = 151, + ArrayLiteralExpression = 153, >ArrayLiteralExpression : SyntaxKind - ObjectLiteralExpression = 152, + ObjectLiteralExpression = 154, >ObjectLiteralExpression : SyntaxKind - PropertyAccessExpression = 153, + PropertyAccessExpression = 155, >PropertyAccessExpression : SyntaxKind - ElementAccessExpression = 154, + ElementAccessExpression = 156, >ElementAccessExpression : SyntaxKind - CallExpression = 155, + CallExpression = 157, >CallExpression : SyntaxKind - NewExpression = 156, + NewExpression = 158, >NewExpression : SyntaxKind - TaggedTemplateExpression = 157, + TaggedTemplateExpression = 159, >TaggedTemplateExpression : SyntaxKind - TypeAssertionExpression = 158, + TypeAssertionExpression = 160, >TypeAssertionExpression : SyntaxKind - ParenthesizedExpression = 159, + ParenthesizedExpression = 161, >ParenthesizedExpression : SyntaxKind - FunctionExpression = 160, + FunctionExpression = 162, >FunctionExpression : SyntaxKind - ArrowFunction = 161, + ArrowFunction = 163, >ArrowFunction : SyntaxKind - DeleteExpression = 162, + DeleteExpression = 164, >DeleteExpression : SyntaxKind - TypeOfExpression = 163, + TypeOfExpression = 165, >TypeOfExpression : SyntaxKind - VoidExpression = 164, + VoidExpression = 166, >VoidExpression : SyntaxKind - PrefixUnaryExpression = 165, + PrefixUnaryExpression = 167, >PrefixUnaryExpression : SyntaxKind - PostfixUnaryExpression = 166, + PostfixUnaryExpression = 168, >PostfixUnaryExpression : SyntaxKind - BinaryExpression = 167, + BinaryExpression = 169, >BinaryExpression : SyntaxKind - ConditionalExpression = 168, + ConditionalExpression = 170, >ConditionalExpression : SyntaxKind - TemplateExpression = 169, + TemplateExpression = 171, >TemplateExpression : SyntaxKind - YieldExpression = 170, + YieldExpression = 172, >YieldExpression : SyntaxKind - SpreadElementExpression = 171, + SpreadElementExpression = 173, >SpreadElementExpression : SyntaxKind - OmittedExpression = 172, + ClassExpression = 174, +>ClassExpression : SyntaxKind + + OmittedExpression = 175, >OmittedExpression : SyntaxKind - TemplateSpan = 173, + TemplateSpan = 176, >TemplateSpan : SyntaxKind - Block = 174, + HeritageClauseElement = 177, +>HeritageClauseElement : SyntaxKind + + SemicolonClassElement = 178, +>SemicolonClassElement : SyntaxKind + + Block = 179, >Block : SyntaxKind - VariableStatement = 175, + VariableStatement = 180, >VariableStatement : SyntaxKind - EmptyStatement = 176, + EmptyStatement = 181, >EmptyStatement : SyntaxKind - ExpressionStatement = 177, + ExpressionStatement = 182, >ExpressionStatement : SyntaxKind - IfStatement = 178, + IfStatement = 183, >IfStatement : SyntaxKind - DoStatement = 179, + DoStatement = 184, >DoStatement : SyntaxKind - WhileStatement = 180, + WhileStatement = 185, >WhileStatement : SyntaxKind - ForStatement = 181, + ForStatement = 186, >ForStatement : SyntaxKind - ForInStatement = 182, + ForInStatement = 187, >ForInStatement : SyntaxKind - ForOfStatement = 183, + ForOfStatement = 188, >ForOfStatement : SyntaxKind - ContinueStatement = 184, + ContinueStatement = 189, >ContinueStatement : SyntaxKind - BreakStatement = 185, + BreakStatement = 190, >BreakStatement : SyntaxKind - ReturnStatement = 186, + ReturnStatement = 191, >ReturnStatement : SyntaxKind - WithStatement = 187, + WithStatement = 192, >WithStatement : SyntaxKind - SwitchStatement = 188, + SwitchStatement = 193, >SwitchStatement : SyntaxKind - LabeledStatement = 189, + LabeledStatement = 194, >LabeledStatement : SyntaxKind - ThrowStatement = 190, + ThrowStatement = 195, >ThrowStatement : SyntaxKind - TryStatement = 191, + TryStatement = 196, >TryStatement : SyntaxKind - DebuggerStatement = 192, + DebuggerStatement = 197, >DebuggerStatement : SyntaxKind - VariableDeclaration = 193, + VariableDeclaration = 198, >VariableDeclaration : SyntaxKind - VariableDeclarationList = 194, + VariableDeclarationList = 199, >VariableDeclarationList : SyntaxKind - FunctionDeclaration = 195, + FunctionDeclaration = 200, >FunctionDeclaration : SyntaxKind - ClassDeclaration = 196, + ClassDeclaration = 201, >ClassDeclaration : SyntaxKind - InterfaceDeclaration = 197, + InterfaceDeclaration = 202, >InterfaceDeclaration : SyntaxKind - TypeAliasDeclaration = 198, + TypeAliasDeclaration = 203, >TypeAliasDeclaration : SyntaxKind - EnumDeclaration = 199, + EnumDeclaration = 204, >EnumDeclaration : SyntaxKind - ModuleDeclaration = 200, + ModuleDeclaration = 205, >ModuleDeclaration : SyntaxKind - ModuleBlock = 201, + ModuleBlock = 206, >ModuleBlock : SyntaxKind - ImportEqualsDeclaration = 202, + CaseBlock = 207, +>CaseBlock : SyntaxKind + + ImportEqualsDeclaration = 208, >ImportEqualsDeclaration : SyntaxKind - ImportDeclaration = 203, + ImportDeclaration = 209, >ImportDeclaration : SyntaxKind - ImportClause = 204, + ImportClause = 210, >ImportClause : SyntaxKind - NamespaceImport = 205, + NamespaceImport = 211, >NamespaceImport : SyntaxKind - NamedImports = 206, + NamedImports = 212, >NamedImports : SyntaxKind - ImportSpecifier = 207, + ImportSpecifier = 213, >ImportSpecifier : SyntaxKind - ExportAssignment = 208, + ExportAssignment = 214, >ExportAssignment : SyntaxKind - ExportDeclaration = 209, + ExportDeclaration = 215, >ExportDeclaration : SyntaxKind - NamedExports = 210, + NamedExports = 216, >NamedExports : SyntaxKind - ExportSpecifier = 211, + ExportSpecifier = 217, >ExportSpecifier : SyntaxKind - ExternalModuleReference = 212, + MissingDeclaration = 218, +>MissingDeclaration : SyntaxKind + + ExternalModuleReference = 219, >ExternalModuleReference : SyntaxKind - CaseClause = 213, + CaseClause = 220, >CaseClause : SyntaxKind - DefaultClause = 214, + DefaultClause = 221, >DefaultClause : SyntaxKind - HeritageClause = 215, + HeritageClause = 222, >HeritageClause : SyntaxKind - CatchClause = 216, + CatchClause = 223, >CatchClause : SyntaxKind - PropertyAssignment = 217, + PropertyAssignment = 224, >PropertyAssignment : SyntaxKind - ShorthandPropertyAssignment = 218, + ShorthandPropertyAssignment = 225, >ShorthandPropertyAssignment : SyntaxKind - EnumMember = 219, + EnumMember = 226, >EnumMember : SyntaxKind - SourceFile = 220, + SourceFile = 227, >SourceFile : SyntaxKind - SyntaxList = 221, + SyntaxList = 228, >SyntaxList : SyntaxKind - Count = 222, + Count = 229, >Count : SyntaxKind - FirstAssignment = 52, + FirstAssignment = 53, >FirstAssignment : SyntaxKind - LastAssignment = 63, + LastAssignment = 64, >LastAssignment : SyntaxKind - FirstReservedWord = 65, + FirstReservedWord = 66, >FirstReservedWord : SyntaxKind - LastReservedWord = 100, + LastReservedWord = 101, >LastReservedWord : SyntaxKind - FirstKeyword = 65, + FirstKeyword = 66, >FirstKeyword : SyntaxKind - LastKeyword = 124, + LastKeyword = 125, >LastKeyword : SyntaxKind FirstFutureReservedWord = 103, @@ -1034,22 +1055,22 @@ declare module "typescript" { LastFutureReservedWord = 111, >LastFutureReservedWord : SyntaxKind - FirstTypeNode = 139, + FirstTypeNode = 141, >FirstTypeNode : SyntaxKind - LastTypeNode = 147, + LastTypeNode = 149, >LastTypeNode : SyntaxKind FirstPunctuation = 14, >FirstPunctuation : SyntaxKind - LastPunctuation = 63, + LastPunctuation = 64, >LastPunctuation : SyntaxKind FirstToken = 0, >FirstToken : SyntaxKind - LastToken = 124, + LastToken = 125, >LastToken : SyntaxKind FirstTriviaToken = 2, @@ -1073,10 +1094,10 @@ declare module "typescript" { FirstBinaryOperator = 24, >FirstBinaryOperator : SyntaxKind - LastBinaryOperator = 63, + LastBinaryOperator = 64, >LastBinaryOperator : SyntaxKind - FirstNode = 125, + FirstNode = 126, >FirstNode : SyntaxKind } const enum NodeFlags { @@ -1100,31 +1121,37 @@ declare module "typescript" { Static = 128, >Static : NodeFlags - MultiLine = 256, + Default = 256, +>Default : NodeFlags + + MultiLine = 512, >MultiLine : NodeFlags - Synthetic = 512, + Synthetic = 1024, >Synthetic : NodeFlags - DeclarationFile = 1024, + DeclarationFile = 2048, >DeclarationFile : NodeFlags - Let = 2048, + Let = 4096, >Let : NodeFlags - Const = 4096, + Const = 8192, >Const : NodeFlags - OctalLiteral = 8192, + OctalLiteral = 16384, >OctalLiteral : NodeFlags - Modifier = 243, + ExportContext = 32768, +>ExportContext : NodeFlags + + Modifier = 499, >Modifier : NodeFlags AccessibilityModifier = 112, >AccessibilityModifier : NodeFlags - BlockScoped = 6144, + BlockScoped = 12288, >BlockScoped : NodeFlags } const enum ParserContextFlags { @@ -1142,16 +1169,19 @@ declare module "typescript" { GeneratorParameter = 8, >GeneratorParameter : ParserContextFlags - ThisNodeHasError = 16, + Decorator = 16, +>Decorator : ParserContextFlags + + ThisNodeHasError = 32, >ThisNodeHasError : ParserContextFlags - ParserGeneratedFlags = 31, + ParserGeneratedFlags = 63, >ParserGeneratedFlags : ParserContextFlags - ThisNodeOrAnySubNodesHasError = 32, + ThisNodeOrAnySubNodesHasError = 64, >ThisNodeOrAnySubNodesHasError : ParserContextFlags - HasAggregatedChildData = 64, + HasAggregatedChildData = 128, >HasAggregatedChildData : ParserContextFlags } const enum RelationComparisonResult { @@ -1182,6 +1212,11 @@ declare module "typescript" { >parserContextFlags : ParserContextFlags >ParserContextFlags : ParserContextFlags + decorators?: NodeArray; +>decorators : NodeArray +>NodeArray : NodeArray +>Decorator : Decorator + modifiers?: ModifiersArray; >modifiers : ModifiersArray >ModifiersArray : ModifiersArray @@ -1276,6 +1311,14 @@ declare module "typescript" { expression: Expression; >expression : Expression >Expression : Expression + } + interface Decorator extends Node { +>Decorator : Decorator +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression } interface TypeParameterDeclaration extends Declaration { >TypeParameterDeclaration : TypeParameterDeclaration @@ -1516,7 +1559,7 @@ declare module "typescript" { >FunctionLikeDeclaration : FunctionLikeDeclaration >Statement : Statement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -1542,6 +1585,13 @@ declare module "typescript" { body?: Block; >body : Block >Block : Block + } + interface SemicolonClassElement extends ClassElement { +>SemicolonClassElement : SemicolonClassElement +>ClassElement : ClassElement + + _semicolonClassElementBrand: any; +>_semicolonClassElementBrand : any } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { >AccessorDeclaration : AccessorDeclaration @@ -1779,10 +1829,18 @@ declare module "typescript" { >condition : Expression >Expression : Expression + questionToken: Node; +>questionToken : Node +>Node : Node + whenTrue: Expression; >whenTrue : Expression >Expression : Expression + colonToken: Node; +>colonToken : Node +>Node : Node + whenFalse: Expression; >whenFalse : Expression >Expression : Expression @@ -1800,6 +1858,15 @@ declare module "typescript" { >body : Expression | Block >Block : Block >Expression : Expression + } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { +>ArrowFunction : ArrowFunction +>Expression : Expression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node +>Node : Node } interface LiteralExpression extends PrimaryExpression { >LiteralExpression : LiteralExpression @@ -1810,6 +1877,9 @@ declare module "typescript" { isUnterminated?: boolean; >isUnterminated : boolean + + hasExtendedUnicodeEscape?: boolean; +>hasExtendedUnicodeEscape : boolean } interface StringLiteralExpression extends LiteralExpression { >StringLiteralExpression : StringLiteralExpression @@ -1886,6 +1956,10 @@ declare module "typescript" { >expression : LeftHandSideExpression >LeftHandSideExpression : LeftHandSideExpression + dotToken: Node; +>dotToken : Node +>Node : Node + name: Identifier; >name : Identifier >Identifier : Identifier @@ -1919,6 +1993,19 @@ declare module "typescript" { >arguments : NodeArray >NodeArray : NodeArray >Expression : Expression + } + interface HeritageClauseElement extends Node { +>HeritageClauseElement : HeritageClauseElement +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode } interface NewExpression extends CallExpression, PrimaryExpression { >NewExpression : NewExpression @@ -2108,6 +2195,14 @@ declare module "typescript" { >expression : Expression >Expression : Expression + caseBlock: CaseBlock; +>caseBlock : CaseBlock +>CaseBlock : CaseBlock + } + interface CaseBlock extends Node { +>CaseBlock : CaseBlock +>Node : Node + clauses: NodeArray; >clauses : NodeArray >NodeArray : NodeArray @@ -2176,17 +2271,13 @@ declare module "typescript" { >finallyBlock : Block >Block : Block } - interface CatchClause extends Declaration { + interface CatchClause extends Node { >CatchClause : CatchClause ->Declaration : Declaration +>Node : Node - name: Identifier; ->name : Identifier ->Identifier : Identifier - - type?: TypeNode; ->type : TypeNode ->TypeNode : TypeNode + variableDeclaration: VariableDeclaration; +>variableDeclaration : VariableDeclaration +>VariableDeclaration : VariableDeclaration block: Block; >block : Block @@ -2199,12 +2290,11 @@ declare module "typescript" { _moduleElementBrand: any; >_moduleElementBrand : any } - interface ClassDeclaration extends Declaration, ModuleElement { ->ClassDeclaration : ClassDeclaration + interface ClassLikeDeclaration extends Declaration { +>ClassLikeDeclaration : ClassLikeDeclaration >Declaration : Declaration ->ModuleElement : ModuleElement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -2222,6 +2312,16 @@ declare module "typescript" { >members : NodeArray >NodeArray : NodeArray >ClassElement : ClassElement + } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { +>ClassDeclaration : ClassDeclaration +>ClassLikeDeclaration : ClassLikeDeclaration +>Statement : Statement + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { +>ClassExpression : ClassExpression +>ClassLikeDeclaration : ClassLikeDeclaration +>PrimaryExpression : PrimaryExpression } interface ClassElement extends Declaration { >ClassElement : ClassElement @@ -2262,10 +2362,10 @@ declare module "typescript" { >token : SyntaxKind >SyntaxKind : SyntaxKind - types?: NodeArray; ->types : NodeArray + types?: NodeArray; +>types : NodeArray >NodeArray : NodeArray ->TypeReferenceNode : TypeReferenceNode +>HeritageClauseElement : HeritageClauseElement } interface TypeAliasDeclaration extends Declaration, ModuleElement { >TypeAliasDeclaration : TypeAliasDeclaration @@ -2306,18 +2406,10 @@ declare module "typescript" { >NodeArray : NodeArray >EnumMember : EnumMember } - interface ExportContainer { ->ExportContainer : ExportContainer - - exportStars?: ExportDeclaration[]; ->exportStars : ExportDeclaration[] ->ExportDeclaration : ExportDeclaration - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { >ModuleDeclaration : ModuleDeclaration >Declaration : Declaration >ModuleElement : ModuleElement ->ExportContainer : ExportContainer name: Identifier | LiteralExpression; >name : Identifier | LiteralExpression @@ -2361,9 +2453,8 @@ declare module "typescript" { >expression : Expression >Expression : Expression } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { >ImportDeclaration : ImportDeclaration ->Statement : Statement >ModuleElement : ModuleElement importClause?: ImportClause; @@ -2395,9 +2486,9 @@ declare module "typescript" { >name : Identifier >Identifier : Identifier } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { >ExportDeclaration : ExportDeclaration ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement exportClause?: NamedExports; @@ -2445,14 +2536,21 @@ declare module "typescript" { >ExportSpecifier : ImportOrExportSpecifier >ImportOrExportSpecifier : ImportOrExportSpecifier - interface ExportAssignment extends Statement, ModuleElement { + interface ExportAssignment extends Declaration, ModuleElement { >ExportAssignment : ExportAssignment ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement - exportName: Identifier; ->exportName : Identifier ->Identifier : Identifier + isExportEquals?: boolean; +>isExportEquals : boolean + + expression?: Expression; +>expression : Expression +>Expression : Expression + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode } interface FileReference extends TextRange { >FileReference : FileReference @@ -2468,10 +2566,9 @@ declare module "typescript" { hasTrailingNewLine?: boolean; >hasTrailingNewLine : boolean } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { >SourceFile : SourceFile >Declaration : Declaration ->ExportContainer : ExportContainer statements: NodeArray; >statements : NodeArray @@ -2554,14 +2651,14 @@ declare module "typescript" { >SourceFile : SourceFile /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; >emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult @@ -2864,6 +2961,12 @@ declare module "typescript" { >getAliasedSymbol : (symbol: Symbol) => Symbol >symbol : Symbol >Symbol : Symbol +>Symbol : Symbol + + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; +>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[] +>moduleSymbol : Symbol +>Symbol : Symbol >Symbol : Symbol } interface SymbolDisplayBuilder { @@ -3078,6 +3181,11 @@ declare module "typescript" { CannotBeNamed = 2, >CannotBeNamed : SymbolAccessibility } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration +>ImportDeclaration : ImportDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + interface SymbolVisibilityResult { >SymbolVisibilityResult : SymbolVisibilityResult @@ -3085,9 +3193,9 @@ declare module "typescript" { >accessibility : SymbolAccessibility >SymbolAccessibility : SymbolAccessibility - aliasesToMakeVisible?: ImportEqualsDeclaration[]; ->aliasesToMakeVisible : ImportEqualsDeclaration[] ->ImportEqualsDeclaration : ImportEqualsDeclaration + aliasesToMakeVisible?: AnyImportSyntax[]; +>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[] +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration errorSymbolName?: string; >errorSymbolName : string @@ -3106,29 +3214,29 @@ declare module "typescript" { interface EmitResolver { >EmitResolver : EmitResolver - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; ->getGeneratedNameForNode : (node: EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration) => string ->node : EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration ->ModuleDeclaration : ModuleDeclaration ->EnumDeclaration : EnumDeclaration ->ImportDeclaration : ImportDeclaration ->ExportDeclaration : ExportDeclaration + hasGlobalName(name: string): boolean; +>hasGlobalName : (name: string) => boolean +>name : string - getExpressionNameSubstitution(node: Identifier): string; ->getExpressionNameSubstitution : (node: Identifier) => string + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; +>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string >node : Identifier >Identifier : Identifier - - getExportAssignmentName(node: SourceFile): string; ->getExportAssignmentName : (node: SourceFile) => string ->node : SourceFile ->SourceFile : SourceFile - - isReferencedImportDeclaration(node: Node): boolean; ->isReferencedImportDeclaration : (node: Node) => boolean +>getGeneratedNameForNode : (node: Node) => string >node : Node >Node : Node + isValueAliasDeclaration(node: Node): boolean; +>isValueAliasDeclaration : (node: Node) => boolean +>node : Node +>Node : Node + + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; +>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean +>node : Node +>Node : Node +>checkChildren : boolean + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; >isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean >node : ImportEqualsDeclaration @@ -3145,6 +3253,12 @@ declare module "typescript" { >node : Declaration >Declaration : Declaration + collectLinkedAliases(node: Identifier): Node[]; +>collectLinkedAliases : (node: Identifier) => Node[] +>node : Identifier +>Identifier : Identifier +>Node : Node + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; >isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean >node : FunctionLikeDeclaration @@ -3171,6 +3285,17 @@ declare module "typescript" { >flags : TypeFormatFlags >TypeFormatFlags : TypeFormatFlags >writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>expr : Expression +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter >SymbolWriter : SymbolWriter isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; @@ -3183,10 +3308,11 @@ declare module "typescript" { >SymbolFlags : SymbolFlags >SymbolAccessiblityResult : SymbolAccessiblityResult - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; ->isEntityNameVisible : (entityName: Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult ->entityName : Identifier | QualifiedName + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; +>isEntityNameVisible : (entityName: Identifier | Expression | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult +>entityName : Identifier | Expression | QualifiedName >EntityName : Identifier | QualifiedName +>Expression : Expression >enclosingDeclaration : Node >Node : Node >SymbolVisibilityResult : SymbolVisibilityResult @@ -3198,11 +3324,16 @@ declare module "typescript" { >PropertyAccessExpression : PropertyAccessExpression >ElementAccessExpression : ElementAccessExpression - isUnknownIdentifier(location: Node, name: string): boolean; ->isUnknownIdentifier : (location: Node, name: string) => boolean + resolvesToSomeValue(location: Node, name: string): boolean; +>resolvesToSomeValue : (location: Node, name: string) => boolean >location : Node >Node : Node >name : string + + getBlockScopedVariableId(node: Identifier): number; +>getBlockScopedVariableId : (node: Identifier) => number +>node : Identifier +>Identifier : Identifier } const enum SymbolFlags { >SymbolFlags : SymbolFlags @@ -3276,8 +3407,8 @@ declare module "typescript" { ExportNamespace = 4194304, >ExportNamespace : SymbolFlags - Import = 8388608, ->Import : SymbolFlags + Alias = 8388608, +>Alias : SymbolFlags Instantiated = 16777216, >Instantiated : SymbolFlags @@ -3297,6 +3428,9 @@ declare module "typescript" { Optional = 536870912, >Optional : SymbolFlags + ExportStar = 1073741824, +>ExportStar : SymbolFlags + Enum = 384, >Enum : SymbolFlags @@ -3369,8 +3503,8 @@ declare module "typescript" { TypeAliasExcludes = 793056, >TypeAliasExcludes : SymbolFlags - ImportExcludes = 8388608, ->ImportExcludes : SymbolFlags + AliasExcludes = 8388608, +>AliasExcludes : SymbolFlags ModuleMember = 8914931, >ModuleMember : SymbolFlags @@ -3461,13 +3595,6 @@ declare module "typescript" { referenced?: boolean; >referenced : boolean - exportAssignmentChecked?: boolean; ->exportAssignmentChecked : boolean - - exportAssignmentSymbol?: Symbol; ->exportAssignmentSymbol : Symbol ->Symbol : Symbol - unionType?: UnionType; >unionType : UnionType >UnionType : UnionType @@ -3475,6 +3602,9 @@ declare module "typescript" { resolvedExports?: SymbolTable; >resolvedExports : SymbolTable >SymbolTable : SymbolTable + + exportsChecked?: boolean; +>exportsChecked : boolean } interface TransientSymbol extends Symbol, SymbolLinks { >TransientSymbol : TransientSymbol @@ -3514,6 +3644,12 @@ declare module "typescript" { EnumValuesComputed = 128, >EnumValuesComputed : NodeCheckFlags + + BlockScopedBindingInLoop = 256, +>BlockScopedBindingInLoop : NodeCheckFlags + + EmitDecorate = 512, +>EmitDecorate : NodeCheckFlags } interface NodeLinks { >NodeLinks : NodeLinks @@ -3873,38 +4009,6 @@ declare module "typescript" { >t : Type >Type : Type >Type : Type - } - interface TypeInferences { ->TypeInferences : TypeInferences - - primary: Type[]; ->primary : Type[] ->Type : Type - - secondary: Type[]; ->secondary : Type[] ->Type : Type - } - interface InferenceContext { ->InferenceContext : InferenceContext - - typeParameters: TypeParameter[]; ->typeParameters : TypeParameter[] ->TypeParameter : TypeParameter - - inferUnionTypes: boolean; ->inferUnionTypes : boolean - - inferences: TypeInferences[]; ->inferences : TypeInferences[] ->TypeInferences : TypeInferences - - inferredTypes: Type[]; ->inferredTypes : Type[] ->Type : Type - - failedTypeParameterIndex?: number; ->failedTypeParameterIndex : number } interface DiagnosticMessage { >DiagnosticMessage : DiagnosticMessage @@ -3981,9 +4085,6 @@ declare module "typescript" { charset?: string; >charset : string - codepage?: number; ->codepage : number - declaration?: boolean; >declaration : boolean @@ -4024,9 +4125,6 @@ declare module "typescript" { noLib?: boolean; >noLib : boolean - noLibCheck?: boolean; ->noLibCheck : boolean - noResolve?: boolean; >noResolve : boolean @@ -4064,8 +4162,8 @@ declare module "typescript" { watch?: boolean; >watch : boolean - stripInternal?: boolean; ->stripInternal : boolean + separateCompilation?: boolean; +>separateCompilation : boolean [option: string]: string | number | boolean; >option : string @@ -4621,6 +4719,9 @@ declare module "typescript" { getTokenValue(): string; >getTokenValue : () => string + hasExtendedUnicodeEscape(): boolean; +>hasExtendedUnicodeEscape : () => boolean + hasPrecedingLineBreak(): boolean; >hasPrecedingLineBreak : () => boolean @@ -4846,10 +4947,19 @@ declare module "typescript" { >TypeChecker : TypeChecker } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; ->createCompilerHost : (options: CompilerOptions) => CompilerHost + /** The version of the TypeScript compiler release */ + let version: string; +>version : string + + function findConfigFile(searchPath: string): string; +>findConfigFile : (searchPath: string) => string +>searchPath : string + + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; +>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost >options : CompilerOptions >CompilerOptions : CompilerOptions +>setParentNodes : boolean >CompilerHost : CompilerHost function getPreEmitDiagnostics(program: Program): Diagnostic[]; @@ -4874,7 +4984,29 @@ declare module "typescript" { >Program : Program } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; +>readConfigFile : (fileName: string) => any +>fileName : string + + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine +>json : any +>basePath : string +>ParsedCommandLine : ParsedCommandLine +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; >servicesVersion : string interface Node { @@ -5032,17 +5164,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - version: string; ->version : string - - scriptSnapshot: IScriptSnapshot; ->scriptSnapshot : IScriptSnapshot ->IScriptSnapshot : IScriptSnapshot - - nameTable: Map; ->nameTable : Map ->Map : Map - getNamedDeclarations(): Declaration[]; >getNamedDeclarations : () => Declaration[] >Declaration : Declaration @@ -5273,6 +5394,12 @@ declare module "typescript" { >position : number >ReferenceEntry : ReferenceEntry + findReferences(fileName: string, position: number): ReferencedSymbol[]; +>findReferences : (fileName: string, position: number) => ReferencedSymbol[] +>fileName : string +>position : number +>ReferencedSymbol : ReferencedSymbol + getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; >getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[] >searchValue : string @@ -5543,6 +5670,17 @@ declare module "typescript" { containerName: string; >containerName : string + } + interface ReferencedSymbol { +>ReferencedSymbol : ReferencedSymbol + + definition: DefinitionInfo; +>definition : DefinitionInfo +>DefinitionInfo : DefinitionInfo + + references: ReferenceEntry[]; +>references : ReferenceEntry[] +>ReferenceEntry : ReferenceEntry } enum SymbolDisplayPartKind { >SymbolDisplayPartKind : SymbolDisplayPartKind @@ -5765,6 +5903,9 @@ declare module "typescript" { kindModifiers: string; >kindModifiers : string + + sortText: string; +>sortText : string } interface CompletionEntryDetails { >CompletionEntryDetails : CompletionEntryDetails @@ -5993,36 +6134,24 @@ declare module "typescript" { /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; ->updateDocument : (sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange) => SourceFile ->sourceFile : SourceFile ->SourceFile : SourceFile + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile >fileName : string >compilationSettings : CompilerOptions >CompilerOptions : CompilerOptions >scriptSnapshot : IScriptSnapshot >IScriptSnapshot : IScriptSnapshot >version : string ->textChangeRange : TextChangeRange ->TextChangeRange : TextChangeRange >SourceFile : SourceFile /** @@ -6046,6 +6175,9 @@ declare module "typescript" { static unknown: string; >unknown : string + static warning: string; +>warning : string + static keyword: string; >keyword : string @@ -6236,6 +6368,15 @@ declare module "typescript" { throwIfCancellationRequested(): void; >throwIfCancellationRequested : () => void } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; +>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string +>input : string +>compilerOptions : CompilerOptions +>CompilerOptions : CompilerOptions +>fileName : string +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; >createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile >fileName : string @@ -6247,7 +6388,7 @@ declare module "typescript" { >setNodeParents : boolean >SourceFile : SourceFile - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; >disableIncrementalParsing : boolean function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; diff --git a/tests/baselines/reference/APISample_linter.types.pull b/tests/baselines/reference/APISample_linter.types.pull new file mode 100644 index 00000000000..0a2a7ea948a --- /dev/null +++ b/tests/baselines/reference/APISample_linter.types.pull @@ -0,0 +1,6438 @@ +=== tests/cases/compiler/APISample_linter.ts === + +/* + * Note: This test is a public API sample. The sample sources can be found + at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter + * Please log a "breaking change" issue for any API breaking change affecting this issue + */ + +declare var process: any; +>process : any + +declare var console: any; +>console : any + +declare var fs: any; +>fs : any + +import ts = require("typescript"); +>ts : typeof ts + +export function delint(sourceFile: ts.SourceFile) { +>delint : (sourceFile: ts.SourceFile) => void +>sourceFile : ts.SourceFile +>ts : unknown +>SourceFile : ts.SourceFile + + delintNode(sourceFile); +>delintNode(sourceFile) : void +>delintNode : (node: ts.Node) => void +>sourceFile : ts.SourceFile + + function delintNode(node: ts.Node) { +>delintNode : (node: ts.Node) => void +>node : ts.Node +>ts : unknown +>Node : ts.Node + + switch (node.kind) { +>node.kind : ts.SyntaxKind +>node : ts.Node +>kind : ts.SyntaxKind + + case ts.SyntaxKind.ForStatement: +>ts.SyntaxKind.ForStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>ForStatement : ts.SyntaxKind + + case ts.SyntaxKind.ForInStatement: +>ts.SyntaxKind.ForInStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>ForInStatement : ts.SyntaxKind + + case ts.SyntaxKind.WhileStatement: +>ts.SyntaxKind.WhileStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>WhileStatement : ts.SyntaxKind + + case ts.SyntaxKind.DoStatement: +>ts.SyntaxKind.DoStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>DoStatement : ts.SyntaxKind + + if ((node).statement.kind !== ts.SyntaxKind.Block) { +>(node).statement.kind !== ts.SyntaxKind.Block : boolean +>(node).statement.kind : ts.SyntaxKind +>(node).statement : ts.Statement +>(node) : ts.IterationStatement +>node : ts.IterationStatement +>ts : unknown +>IterationStatement : ts.IterationStatement +>node : ts.Node +>statement : ts.Statement +>kind : ts.SyntaxKind +>ts.SyntaxKind.Block : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>Block : ts.SyntaxKind + + report(node, "A looping statement's contents should be wrapped in a block body."); +>report(node, "A looping statement's contents should be wrapped in a block body.") : void +>report : (node: ts.Node, message: string) => void +>node : ts.Node + } + break; + case ts.SyntaxKind.IfStatement: +>ts.SyntaxKind.IfStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>IfStatement : ts.SyntaxKind + + var ifStatement = (node); +>ifStatement : ts.IfStatement +>(node) : ts.IfStatement +>node : ts.IfStatement +>ts : unknown +>IfStatement : ts.IfStatement +>node : ts.Node + + if (ifStatement.thenStatement.kind !== ts.SyntaxKind.Block) { +>ifStatement.thenStatement.kind !== ts.SyntaxKind.Block : boolean +>ifStatement.thenStatement.kind : ts.SyntaxKind +>ifStatement.thenStatement : ts.Statement +>ifStatement : ts.IfStatement +>thenStatement : ts.Statement +>kind : ts.SyntaxKind +>ts.SyntaxKind.Block : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>Block : ts.SyntaxKind + + report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body."); +>report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body.") : void +>report : (node: ts.Node, message: string) => void +>ifStatement.thenStatement : ts.Statement +>ifStatement : ts.IfStatement +>thenStatement : ts.Statement + } + if (ifStatement.elseStatement && +>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean +>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean +>ifStatement.elseStatement : ts.Statement +>ifStatement : ts.IfStatement +>elseStatement : ts.Statement + + ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement) { +>ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean +>ifStatement.elseStatement.kind : ts.SyntaxKind +>ifStatement.elseStatement : ts.Statement +>ifStatement : ts.IfStatement +>elseStatement : ts.Statement +>kind : ts.SyntaxKind +>ts.SyntaxKind.Block : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>Block : ts.SyntaxKind +>ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean +>ifStatement.elseStatement.kind : ts.SyntaxKind +>ifStatement.elseStatement : ts.Statement +>ifStatement : ts.IfStatement +>elseStatement : ts.Statement +>kind : ts.SyntaxKind +>ts.SyntaxKind.IfStatement : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>IfStatement : ts.SyntaxKind + + report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body."); +>report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body.") : void +>report : (node: ts.Node, message: string) => void +>ifStatement.elseStatement : ts.Statement +>ifStatement : ts.IfStatement +>elseStatement : ts.Statement + } + break; + + case ts.SyntaxKind.BinaryExpression: +>ts.SyntaxKind.BinaryExpression : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>BinaryExpression : ts.SyntaxKind + + var op = (node).operatorToken.kind; +>op : ts.SyntaxKind +>(node).operatorToken.kind : ts.SyntaxKind +>(node).operatorToken : ts.Node +>(node) : ts.BinaryExpression +>node : ts.BinaryExpression +>ts : unknown +>BinaryExpression : ts.BinaryExpression +>node : ts.Node +>operatorToken : ts.Node +>kind : ts.SyntaxKind + + if (op === ts.SyntaxKind.EqualsEqualsToken || op === ts.SyntaxKind.ExclamationEqualsToken) { +>op === ts.SyntaxKind.EqualsEqualsToken || op === ts.SyntaxKind.ExclamationEqualsToken : boolean +>op === ts.SyntaxKind.EqualsEqualsToken : boolean +>op : ts.SyntaxKind +>ts.SyntaxKind.EqualsEqualsToken : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>EqualsEqualsToken : ts.SyntaxKind +>op === ts.SyntaxKind.ExclamationEqualsToken : boolean +>op : ts.SyntaxKind +>ts.SyntaxKind.ExclamationEqualsToken : ts.SyntaxKind +>ts.SyntaxKind : typeof ts.SyntaxKind +>ts : typeof ts +>SyntaxKind : typeof ts.SyntaxKind +>ExclamationEqualsToken : ts.SyntaxKind + + report(node, "Use '===' and '!=='.") +>report(node, "Use '===' and '!=='.") : void +>report : (node: ts.Node, message: string) => void +>node : ts.Node + } + break; + } + + ts.forEachChild(node, delintNode); +>ts.forEachChild(node, delintNode) : void +>ts.forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T +>ts : typeof ts +>forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T +>node : ts.Node +>delintNode : (node: ts.Node) => void + } + + function report(node: ts.Node, message: string) { +>report : (node: ts.Node, message: string) => void +>node : ts.Node +>ts : unknown +>Node : ts.Node +>message : string + + var lineChar = sourceFile.getLineAndCharacterOfPosition(node.getStart()); +>lineChar : ts.LineAndCharacter +>sourceFile.getLineAndCharacterOfPosition(node.getStart()) : ts.LineAndCharacter +>sourceFile.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter +>sourceFile : ts.SourceFile +>getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter +>node.getStart() : number +>node.getStart : (sourceFile?: ts.SourceFile) => number +>node : ts.Node +>getStart : (sourceFile?: ts.SourceFile) => number + + console.log(`${sourceFile.fileName} (${lineChar.line + 1},${lineChar.character + 1}): ${message}`) +>console.log(`${sourceFile.fileName} (${lineChar.line + 1},${lineChar.character + 1}): ${message}`) : any +>console.log : any +>console : any +>log : any +>sourceFile.fileName : string +>sourceFile : ts.SourceFile +>fileName : string +>lineChar.line + 1 : number +>lineChar.line : number +>lineChar : ts.LineAndCharacter +>line : number +>lineChar.character + 1 : number +>lineChar.character : number +>lineChar : ts.LineAndCharacter +>character : number +>message : string + } +} + +var fileNames = process.argv.slice(2); +>fileNames : any +>process.argv.slice(2) : any +>process.argv.slice : any +>process.argv : any +>process : any +>argv : any +>slice : any + +fileNames.forEach(fileName => { +>fileNames.forEach(fileName => { // Parse a file var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);}) : any +>fileNames.forEach : any +>fileNames : any +>forEach : any +>fileName => { // Parse a file var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);} : (fileName: any) => void +>fileName : any + + // Parse a file + var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); +>sourceFile : ts.SourceFile +>ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true) : ts.SourceFile +>ts.createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile +>ts : typeof ts +>createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile +>fileName : any +>fs.readFileSync(fileName).toString() : any +>fs.readFileSync(fileName).toString : any +>fs.readFileSync(fileName) : any +>fs.readFileSync : any +>fs : any +>readFileSync : any +>fileName : any +>toString : any +>ts.ScriptTarget.ES6 : ts.ScriptTarget +>ts.ScriptTarget : typeof ts.ScriptTarget +>ts : typeof ts +>ScriptTarget : typeof ts.ScriptTarget +>ES6 : ts.ScriptTarget + + // delint it + delint(sourceFile); +>delint(sourceFile) : void +>delint : (sourceFile: ts.SourceFile) => void +>sourceFile : ts.SourceFile + +}); + +=== typescript.d.ts === +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +declare module "typescript" { + interface Map { +>Map : Map +>T : T + + [index: string]: T; +>index : string +>T : T + } + interface TextRange { +>TextRange : TextRange + + pos: number; +>pos : number + + end: number; +>end : number + } + const enum SyntaxKind { +>SyntaxKind : SyntaxKind + + Unknown = 0, +>Unknown : SyntaxKind + + EndOfFileToken = 1, +>EndOfFileToken : SyntaxKind + + SingleLineCommentTrivia = 2, +>SingleLineCommentTrivia : SyntaxKind + + MultiLineCommentTrivia = 3, +>MultiLineCommentTrivia : SyntaxKind + + NewLineTrivia = 4, +>NewLineTrivia : SyntaxKind + + WhitespaceTrivia = 5, +>WhitespaceTrivia : SyntaxKind + + ConflictMarkerTrivia = 6, +>ConflictMarkerTrivia : SyntaxKind + + NumericLiteral = 7, +>NumericLiteral : SyntaxKind + + StringLiteral = 8, +>StringLiteral : SyntaxKind + + RegularExpressionLiteral = 9, +>RegularExpressionLiteral : SyntaxKind + + NoSubstitutionTemplateLiteral = 10, +>NoSubstitutionTemplateLiteral : SyntaxKind + + TemplateHead = 11, +>TemplateHead : SyntaxKind + + TemplateMiddle = 12, +>TemplateMiddle : SyntaxKind + + TemplateTail = 13, +>TemplateTail : SyntaxKind + + OpenBraceToken = 14, +>OpenBraceToken : SyntaxKind + + CloseBraceToken = 15, +>CloseBraceToken : SyntaxKind + + OpenParenToken = 16, +>OpenParenToken : SyntaxKind + + CloseParenToken = 17, +>CloseParenToken : SyntaxKind + + OpenBracketToken = 18, +>OpenBracketToken : SyntaxKind + + CloseBracketToken = 19, +>CloseBracketToken : SyntaxKind + + DotToken = 20, +>DotToken : SyntaxKind + + DotDotDotToken = 21, +>DotDotDotToken : SyntaxKind + + SemicolonToken = 22, +>SemicolonToken : SyntaxKind + + CommaToken = 23, +>CommaToken : SyntaxKind + + LessThanToken = 24, +>LessThanToken : SyntaxKind + + GreaterThanToken = 25, +>GreaterThanToken : SyntaxKind + + LessThanEqualsToken = 26, +>LessThanEqualsToken : SyntaxKind + + GreaterThanEqualsToken = 27, +>GreaterThanEqualsToken : SyntaxKind + + EqualsEqualsToken = 28, +>EqualsEqualsToken : SyntaxKind + + ExclamationEqualsToken = 29, +>ExclamationEqualsToken : SyntaxKind + + EqualsEqualsEqualsToken = 30, +>EqualsEqualsEqualsToken : SyntaxKind + + ExclamationEqualsEqualsToken = 31, +>ExclamationEqualsEqualsToken : SyntaxKind + + EqualsGreaterThanToken = 32, +>EqualsGreaterThanToken : SyntaxKind + + PlusToken = 33, +>PlusToken : SyntaxKind + + MinusToken = 34, +>MinusToken : SyntaxKind + + AsteriskToken = 35, +>AsteriskToken : SyntaxKind + + SlashToken = 36, +>SlashToken : SyntaxKind + + PercentToken = 37, +>PercentToken : SyntaxKind + + PlusPlusToken = 38, +>PlusPlusToken : SyntaxKind + + MinusMinusToken = 39, +>MinusMinusToken : SyntaxKind + + LessThanLessThanToken = 40, +>LessThanLessThanToken : SyntaxKind + + GreaterThanGreaterThanToken = 41, +>GreaterThanGreaterThanToken : SyntaxKind + + GreaterThanGreaterThanGreaterThanToken = 42, +>GreaterThanGreaterThanGreaterThanToken : SyntaxKind + + AmpersandToken = 43, +>AmpersandToken : SyntaxKind + + BarToken = 44, +>BarToken : SyntaxKind + + CaretToken = 45, +>CaretToken : SyntaxKind + + ExclamationToken = 46, +>ExclamationToken : SyntaxKind + + TildeToken = 47, +>TildeToken : SyntaxKind + + AmpersandAmpersandToken = 48, +>AmpersandAmpersandToken : SyntaxKind + + BarBarToken = 49, +>BarBarToken : SyntaxKind + + QuestionToken = 50, +>QuestionToken : SyntaxKind + + ColonToken = 51, +>ColonToken : SyntaxKind + + AtToken = 52, +>AtToken : SyntaxKind + + EqualsToken = 53, +>EqualsToken : SyntaxKind + + PlusEqualsToken = 54, +>PlusEqualsToken : SyntaxKind + + MinusEqualsToken = 55, +>MinusEqualsToken : SyntaxKind + + AsteriskEqualsToken = 56, +>AsteriskEqualsToken : SyntaxKind + + SlashEqualsToken = 57, +>SlashEqualsToken : SyntaxKind + + PercentEqualsToken = 58, +>PercentEqualsToken : SyntaxKind + + LessThanLessThanEqualsToken = 59, +>LessThanLessThanEqualsToken : SyntaxKind + + GreaterThanGreaterThanEqualsToken = 60, +>GreaterThanGreaterThanEqualsToken : SyntaxKind + + GreaterThanGreaterThanGreaterThanEqualsToken = 61, +>GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind + + AmpersandEqualsToken = 62, +>AmpersandEqualsToken : SyntaxKind + + BarEqualsToken = 63, +>BarEqualsToken : SyntaxKind + + CaretEqualsToken = 64, +>CaretEqualsToken : SyntaxKind + + Identifier = 65, +>Identifier : SyntaxKind + + BreakKeyword = 66, +>BreakKeyword : SyntaxKind + + CaseKeyword = 67, +>CaseKeyword : SyntaxKind + + CatchKeyword = 68, +>CatchKeyword : SyntaxKind + + ClassKeyword = 69, +>ClassKeyword : SyntaxKind + + ConstKeyword = 70, +>ConstKeyword : SyntaxKind + + ContinueKeyword = 71, +>ContinueKeyword : SyntaxKind + + DebuggerKeyword = 72, +>DebuggerKeyword : SyntaxKind + + DefaultKeyword = 73, +>DefaultKeyword : SyntaxKind + + DeleteKeyword = 74, +>DeleteKeyword : SyntaxKind + + DoKeyword = 75, +>DoKeyword : SyntaxKind + + ElseKeyword = 76, +>ElseKeyword : SyntaxKind + + EnumKeyword = 77, +>EnumKeyword : SyntaxKind + + ExportKeyword = 78, +>ExportKeyword : SyntaxKind + + ExtendsKeyword = 79, +>ExtendsKeyword : SyntaxKind + + FalseKeyword = 80, +>FalseKeyword : SyntaxKind + + FinallyKeyword = 81, +>FinallyKeyword : SyntaxKind + + ForKeyword = 82, +>ForKeyword : SyntaxKind + + FunctionKeyword = 83, +>FunctionKeyword : SyntaxKind + + IfKeyword = 84, +>IfKeyword : SyntaxKind + + ImportKeyword = 85, +>ImportKeyword : SyntaxKind + + InKeyword = 86, +>InKeyword : SyntaxKind + + InstanceOfKeyword = 87, +>InstanceOfKeyword : SyntaxKind + + NewKeyword = 88, +>NewKeyword : SyntaxKind + + NullKeyword = 89, +>NullKeyword : SyntaxKind + + ReturnKeyword = 90, +>ReturnKeyword : SyntaxKind + + SuperKeyword = 91, +>SuperKeyword : SyntaxKind + + SwitchKeyword = 92, +>SwitchKeyword : SyntaxKind + + ThisKeyword = 93, +>ThisKeyword : SyntaxKind + + ThrowKeyword = 94, +>ThrowKeyword : SyntaxKind + + TrueKeyword = 95, +>TrueKeyword : SyntaxKind + + TryKeyword = 96, +>TryKeyword : SyntaxKind + + TypeOfKeyword = 97, +>TypeOfKeyword : SyntaxKind + + VarKeyword = 98, +>VarKeyword : SyntaxKind + + VoidKeyword = 99, +>VoidKeyword : SyntaxKind + + WhileKeyword = 100, +>WhileKeyword : SyntaxKind + + WithKeyword = 101, +>WithKeyword : SyntaxKind + + AsKeyword = 102, +>AsKeyword : SyntaxKind + + ImplementsKeyword = 103, +>ImplementsKeyword : SyntaxKind + + InterfaceKeyword = 104, +>InterfaceKeyword : SyntaxKind + + LetKeyword = 105, +>LetKeyword : SyntaxKind + + PackageKeyword = 106, +>PackageKeyword : SyntaxKind + + PrivateKeyword = 107, +>PrivateKeyword : SyntaxKind + + ProtectedKeyword = 108, +>ProtectedKeyword : SyntaxKind + + PublicKeyword = 109, +>PublicKeyword : SyntaxKind + + StaticKeyword = 110, +>StaticKeyword : SyntaxKind + + YieldKeyword = 111, +>YieldKeyword : SyntaxKind + + AnyKeyword = 112, +>AnyKeyword : SyntaxKind + + BooleanKeyword = 113, +>BooleanKeyword : SyntaxKind + + ConstructorKeyword = 114, +>ConstructorKeyword : SyntaxKind + + DeclareKeyword = 115, +>DeclareKeyword : SyntaxKind + + GetKeyword = 116, +>GetKeyword : SyntaxKind + + ModuleKeyword = 117, +>ModuleKeyword : SyntaxKind + + RequireKeyword = 118, +>RequireKeyword : SyntaxKind + + NumberKeyword = 119, +>NumberKeyword : SyntaxKind + + SetKeyword = 120, +>SetKeyword : SyntaxKind + + StringKeyword = 121, +>StringKeyword : SyntaxKind + + SymbolKeyword = 122, +>SymbolKeyword : SyntaxKind + + TypeKeyword = 123, +>TypeKeyword : SyntaxKind + + FromKeyword = 124, +>FromKeyword : SyntaxKind + + OfKeyword = 125, +>OfKeyword : SyntaxKind + + QualifiedName = 126, +>QualifiedName : SyntaxKind + + ComputedPropertyName = 127, +>ComputedPropertyName : SyntaxKind + + TypeParameter = 128, +>TypeParameter : SyntaxKind + + Parameter = 129, +>Parameter : SyntaxKind + + Decorator = 130, +>Decorator : SyntaxKind + + PropertySignature = 131, +>PropertySignature : SyntaxKind + + PropertyDeclaration = 132, +>PropertyDeclaration : SyntaxKind + + MethodSignature = 133, +>MethodSignature : SyntaxKind + + MethodDeclaration = 134, +>MethodDeclaration : SyntaxKind + + Constructor = 135, +>Constructor : SyntaxKind + + GetAccessor = 136, +>GetAccessor : SyntaxKind + + SetAccessor = 137, +>SetAccessor : SyntaxKind + + CallSignature = 138, +>CallSignature : SyntaxKind + + ConstructSignature = 139, +>ConstructSignature : SyntaxKind + + IndexSignature = 140, +>IndexSignature : SyntaxKind + + TypeReference = 141, +>TypeReference : SyntaxKind + + FunctionType = 142, +>FunctionType : SyntaxKind + + ConstructorType = 143, +>ConstructorType : SyntaxKind + + TypeQuery = 144, +>TypeQuery : SyntaxKind + + TypeLiteral = 145, +>TypeLiteral : SyntaxKind + + ArrayType = 146, +>ArrayType : SyntaxKind + + TupleType = 147, +>TupleType : SyntaxKind + + UnionType = 148, +>UnionType : SyntaxKind + + ParenthesizedType = 149, +>ParenthesizedType : SyntaxKind + + ObjectBindingPattern = 150, +>ObjectBindingPattern : SyntaxKind + + ArrayBindingPattern = 151, +>ArrayBindingPattern : SyntaxKind + + BindingElement = 152, +>BindingElement : SyntaxKind + + ArrayLiteralExpression = 153, +>ArrayLiteralExpression : SyntaxKind + + ObjectLiteralExpression = 154, +>ObjectLiteralExpression : SyntaxKind + + PropertyAccessExpression = 155, +>PropertyAccessExpression : SyntaxKind + + ElementAccessExpression = 156, +>ElementAccessExpression : SyntaxKind + + CallExpression = 157, +>CallExpression : SyntaxKind + + NewExpression = 158, +>NewExpression : SyntaxKind + + TaggedTemplateExpression = 159, +>TaggedTemplateExpression : SyntaxKind + + TypeAssertionExpression = 160, +>TypeAssertionExpression : SyntaxKind + + ParenthesizedExpression = 161, +>ParenthesizedExpression : SyntaxKind + + FunctionExpression = 162, +>FunctionExpression : SyntaxKind + + ArrowFunction = 163, +>ArrowFunction : SyntaxKind + + DeleteExpression = 164, +>DeleteExpression : SyntaxKind + + TypeOfExpression = 165, +>TypeOfExpression : SyntaxKind + + VoidExpression = 166, +>VoidExpression : SyntaxKind + + PrefixUnaryExpression = 167, +>PrefixUnaryExpression : SyntaxKind + + PostfixUnaryExpression = 168, +>PostfixUnaryExpression : SyntaxKind + + BinaryExpression = 169, +>BinaryExpression : SyntaxKind + + ConditionalExpression = 170, +>ConditionalExpression : SyntaxKind + + TemplateExpression = 171, +>TemplateExpression : SyntaxKind + + YieldExpression = 172, +>YieldExpression : SyntaxKind + + SpreadElementExpression = 173, +>SpreadElementExpression : SyntaxKind + + ClassExpression = 174, +>ClassExpression : SyntaxKind + + OmittedExpression = 175, +>OmittedExpression : SyntaxKind + + TemplateSpan = 176, +>TemplateSpan : SyntaxKind + + HeritageClauseElement = 177, +>HeritageClauseElement : SyntaxKind + + SemicolonClassElement = 178, +>SemicolonClassElement : SyntaxKind + + Block = 179, +>Block : SyntaxKind + + VariableStatement = 180, +>VariableStatement : SyntaxKind + + EmptyStatement = 181, +>EmptyStatement : SyntaxKind + + ExpressionStatement = 182, +>ExpressionStatement : SyntaxKind + + IfStatement = 183, +>IfStatement : SyntaxKind + + DoStatement = 184, +>DoStatement : SyntaxKind + + WhileStatement = 185, +>WhileStatement : SyntaxKind + + ForStatement = 186, +>ForStatement : SyntaxKind + + ForInStatement = 187, +>ForInStatement : SyntaxKind + + ForOfStatement = 188, +>ForOfStatement : SyntaxKind + + ContinueStatement = 189, +>ContinueStatement : SyntaxKind + + BreakStatement = 190, +>BreakStatement : SyntaxKind + + ReturnStatement = 191, +>ReturnStatement : SyntaxKind + + WithStatement = 192, +>WithStatement : SyntaxKind + + SwitchStatement = 193, +>SwitchStatement : SyntaxKind + + LabeledStatement = 194, +>LabeledStatement : SyntaxKind + + ThrowStatement = 195, +>ThrowStatement : SyntaxKind + + TryStatement = 196, +>TryStatement : SyntaxKind + + DebuggerStatement = 197, +>DebuggerStatement : SyntaxKind + + VariableDeclaration = 198, +>VariableDeclaration : SyntaxKind + + VariableDeclarationList = 199, +>VariableDeclarationList : SyntaxKind + + FunctionDeclaration = 200, +>FunctionDeclaration : SyntaxKind + + ClassDeclaration = 201, +>ClassDeclaration : SyntaxKind + + InterfaceDeclaration = 202, +>InterfaceDeclaration : SyntaxKind + + TypeAliasDeclaration = 203, +>TypeAliasDeclaration : SyntaxKind + + EnumDeclaration = 204, +>EnumDeclaration : SyntaxKind + + ModuleDeclaration = 205, +>ModuleDeclaration : SyntaxKind + + ModuleBlock = 206, +>ModuleBlock : SyntaxKind + + CaseBlock = 207, +>CaseBlock : SyntaxKind + + ImportEqualsDeclaration = 208, +>ImportEqualsDeclaration : SyntaxKind + + ImportDeclaration = 209, +>ImportDeclaration : SyntaxKind + + ImportClause = 210, +>ImportClause : SyntaxKind + + NamespaceImport = 211, +>NamespaceImport : SyntaxKind + + NamedImports = 212, +>NamedImports : SyntaxKind + + ImportSpecifier = 213, +>ImportSpecifier : SyntaxKind + + ExportAssignment = 214, +>ExportAssignment : SyntaxKind + + ExportDeclaration = 215, +>ExportDeclaration : SyntaxKind + + NamedExports = 216, +>NamedExports : SyntaxKind + + ExportSpecifier = 217, +>ExportSpecifier : SyntaxKind + + MissingDeclaration = 218, +>MissingDeclaration : SyntaxKind + + ExternalModuleReference = 219, +>ExternalModuleReference : SyntaxKind + + CaseClause = 220, +>CaseClause : SyntaxKind + + DefaultClause = 221, +>DefaultClause : SyntaxKind + + HeritageClause = 222, +>HeritageClause : SyntaxKind + + CatchClause = 223, +>CatchClause : SyntaxKind + + PropertyAssignment = 224, +>PropertyAssignment : SyntaxKind + + ShorthandPropertyAssignment = 225, +>ShorthandPropertyAssignment : SyntaxKind + + EnumMember = 226, +>EnumMember : SyntaxKind + + SourceFile = 227, +>SourceFile : SyntaxKind + + SyntaxList = 228, +>SyntaxList : SyntaxKind + + Count = 229, +>Count : SyntaxKind + + FirstAssignment = 53, +>FirstAssignment : SyntaxKind + + LastAssignment = 64, +>LastAssignment : SyntaxKind + + FirstReservedWord = 66, +>FirstReservedWord : SyntaxKind + + LastReservedWord = 101, +>LastReservedWord : SyntaxKind + + FirstKeyword = 66, +>FirstKeyword : SyntaxKind + + LastKeyword = 125, +>LastKeyword : SyntaxKind + + FirstFutureReservedWord = 103, +>FirstFutureReservedWord : SyntaxKind + + LastFutureReservedWord = 111, +>LastFutureReservedWord : SyntaxKind + + FirstTypeNode = 141, +>FirstTypeNode : SyntaxKind + + LastTypeNode = 149, +>LastTypeNode : SyntaxKind + + FirstPunctuation = 14, +>FirstPunctuation : SyntaxKind + + LastPunctuation = 64, +>LastPunctuation : SyntaxKind + + FirstToken = 0, +>FirstToken : SyntaxKind + + LastToken = 125, +>LastToken : SyntaxKind + + FirstTriviaToken = 2, +>FirstTriviaToken : SyntaxKind + + LastTriviaToken = 6, +>LastTriviaToken : SyntaxKind + + FirstLiteralToken = 7, +>FirstLiteralToken : SyntaxKind + + LastLiteralToken = 10, +>LastLiteralToken : SyntaxKind + + FirstTemplateToken = 10, +>FirstTemplateToken : SyntaxKind + + LastTemplateToken = 13, +>LastTemplateToken : SyntaxKind + + FirstBinaryOperator = 24, +>FirstBinaryOperator : SyntaxKind + + LastBinaryOperator = 64, +>LastBinaryOperator : SyntaxKind + + FirstNode = 126, +>FirstNode : SyntaxKind + } + const enum NodeFlags { +>NodeFlags : NodeFlags + + Export = 1, +>Export : NodeFlags + + Ambient = 2, +>Ambient : NodeFlags + + Public = 16, +>Public : NodeFlags + + Private = 32, +>Private : NodeFlags + + Protected = 64, +>Protected : NodeFlags + + Static = 128, +>Static : NodeFlags + + Default = 256, +>Default : NodeFlags + + MultiLine = 512, +>MultiLine : NodeFlags + + Synthetic = 1024, +>Synthetic : NodeFlags + + DeclarationFile = 2048, +>DeclarationFile : NodeFlags + + Let = 4096, +>Let : NodeFlags + + Const = 8192, +>Const : NodeFlags + + OctalLiteral = 16384, +>OctalLiteral : NodeFlags + + ExportContext = 32768, +>ExportContext : NodeFlags + + Modifier = 499, +>Modifier : NodeFlags + + AccessibilityModifier = 112, +>AccessibilityModifier : NodeFlags + + BlockScoped = 12288, +>BlockScoped : NodeFlags + } + const enum ParserContextFlags { +>ParserContextFlags : ParserContextFlags + + StrictMode = 1, +>StrictMode : ParserContextFlags + + DisallowIn = 2, +>DisallowIn : ParserContextFlags + + Yield = 4, +>Yield : ParserContextFlags + + GeneratorParameter = 8, +>GeneratorParameter : ParserContextFlags + + Decorator = 16, +>Decorator : ParserContextFlags + + ThisNodeHasError = 32, +>ThisNodeHasError : ParserContextFlags + + ParserGeneratedFlags = 63, +>ParserGeneratedFlags : ParserContextFlags + + ThisNodeOrAnySubNodesHasError = 64, +>ThisNodeOrAnySubNodesHasError : ParserContextFlags + + HasAggregatedChildData = 128, +>HasAggregatedChildData : ParserContextFlags + } + const enum RelationComparisonResult { +>RelationComparisonResult : RelationComparisonResult + + Succeeded = 1, +>Succeeded : RelationComparisonResult + + Failed = 2, +>Failed : RelationComparisonResult + + FailedAndReported = 3, +>FailedAndReported : RelationComparisonResult + } + interface Node extends TextRange { +>Node : Node +>TextRange : TextRange + + kind: SyntaxKind; +>kind : SyntaxKind +>SyntaxKind : SyntaxKind + + flags: NodeFlags; +>flags : NodeFlags +>NodeFlags : NodeFlags + + parserContextFlags?: ParserContextFlags; +>parserContextFlags : ParserContextFlags +>ParserContextFlags : ParserContextFlags + + decorators?: NodeArray; +>decorators : NodeArray +>NodeArray : NodeArray +>Decorator : Decorator + + modifiers?: ModifiersArray; +>modifiers : ModifiersArray +>ModifiersArray : ModifiersArray + + id?: number; +>id : number + + parent?: Node; +>parent : Node +>Node : Node + + symbol?: Symbol; +>symbol : Symbol +>Symbol : Symbol + + locals?: SymbolTable; +>locals : SymbolTable +>SymbolTable : SymbolTable + + nextContainer?: Node; +>nextContainer : Node +>Node : Node + + localSymbol?: Symbol; +>localSymbol : Symbol +>Symbol : Symbol + } + interface NodeArray extends Array, TextRange { +>NodeArray : NodeArray +>T : T +>Array : T[] +>T : T +>TextRange : TextRange + + hasTrailingComma?: boolean; +>hasTrailingComma : boolean + } + interface ModifiersArray extends NodeArray { +>ModifiersArray : ModifiersArray +>NodeArray : NodeArray +>Node : Node + + flags: number; +>flags : number + } + interface Identifier extends PrimaryExpression { +>Identifier : Identifier +>PrimaryExpression : PrimaryExpression + + text: string; +>text : string + } + interface QualifiedName extends Node { +>QualifiedName : QualifiedName +>Node : Node + + left: EntityName; +>left : Identifier | QualifiedName +>EntityName : Identifier | QualifiedName + + right: Identifier; +>right : Identifier +>Identifier : Identifier + } + type EntityName = Identifier | QualifiedName; +>EntityName : Identifier | QualifiedName +>Identifier : Identifier +>QualifiedName : QualifiedName + + type DeclarationName = Identifier | LiteralExpression | ComputedPropertyName | BindingPattern; +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>Identifier : Identifier +>LiteralExpression : LiteralExpression +>ComputedPropertyName : ComputedPropertyName +>BindingPattern : BindingPattern + + interface Declaration extends Node { +>Declaration : Declaration +>Node : Node + + _declarationBrand: any; +>_declarationBrand : any + + name?: DeclarationName; +>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern + } + interface ComputedPropertyName extends Node { +>ComputedPropertyName : ComputedPropertyName +>Node : Node + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface Decorator extends Node { +>Decorator : Decorator +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + } + interface TypeParameterDeclaration extends Declaration { +>TypeParameterDeclaration : TypeParameterDeclaration +>Declaration : Declaration + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + constraint?: TypeNode; +>constraint : TypeNode +>TypeNode : TypeNode + + expression?: Expression; +>expression : Expression +>Expression : Expression + } + interface SignatureDeclaration extends Declaration { +>SignatureDeclaration : SignatureDeclaration +>Declaration : Declaration + + typeParameters?: NodeArray; +>typeParameters : NodeArray +>NodeArray : NodeArray +>TypeParameterDeclaration : TypeParameterDeclaration + + parameters: NodeArray; +>parameters : NodeArray +>NodeArray : NodeArray +>ParameterDeclaration : ParameterDeclaration + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + } + interface VariableDeclaration extends Declaration { +>VariableDeclaration : VariableDeclaration +>Declaration : Declaration + + parent?: VariableDeclarationList; +>parent : VariableDeclarationList +>VariableDeclarationList : VariableDeclarationList + + name: Identifier | BindingPattern; +>name : Identifier | BindingPattern +>Identifier : Identifier +>BindingPattern : BindingPattern + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface VariableDeclarationList extends Node { +>VariableDeclarationList : VariableDeclarationList +>Node : Node + + declarations: NodeArray; +>declarations : NodeArray +>NodeArray : NodeArray +>VariableDeclaration : VariableDeclaration + } + interface ParameterDeclaration extends Declaration { +>ParameterDeclaration : ParameterDeclaration +>Declaration : Declaration + + dotDotDotToken?: Node; +>dotDotDotToken : Node +>Node : Node + + name: Identifier | BindingPattern; +>name : Identifier | BindingPattern +>Identifier : Identifier +>BindingPattern : BindingPattern + + questionToken?: Node; +>questionToken : Node +>Node : Node + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface BindingElement extends Declaration { +>BindingElement : BindingElement +>Declaration : Declaration + + propertyName?: Identifier; +>propertyName : Identifier +>Identifier : Identifier + + dotDotDotToken?: Node; +>dotDotDotToken : Node +>Node : Node + + name: Identifier | BindingPattern; +>name : Identifier | BindingPattern +>Identifier : Identifier +>BindingPattern : BindingPattern + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface PropertyDeclaration extends Declaration, ClassElement { +>PropertyDeclaration : PropertyDeclaration +>Declaration : Declaration +>ClassElement : ClassElement + + name: DeclarationName; +>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern + + questionToken?: Node; +>questionToken : Node +>Node : Node + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface ObjectLiteralElement extends Declaration { +>ObjectLiteralElement : ObjectLiteralElement +>Declaration : Declaration + + _objectLiteralBrandBrand: any; +>_objectLiteralBrandBrand : any + } + interface PropertyAssignment extends ObjectLiteralElement { +>PropertyAssignment : PropertyAssignment +>ObjectLiteralElement : ObjectLiteralElement + + _propertyAssignmentBrand: any; +>_propertyAssignmentBrand : any + + name: DeclarationName; +>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern + + questionToken?: Node; +>questionToken : Node +>Node : Node + + initializer: Expression; +>initializer : Expression +>Expression : Expression + } + interface ShorthandPropertyAssignment extends ObjectLiteralElement { +>ShorthandPropertyAssignment : ShorthandPropertyAssignment +>ObjectLiteralElement : ObjectLiteralElement + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + questionToken?: Node; +>questionToken : Node +>Node : Node + } + interface VariableLikeDeclaration extends Declaration { +>VariableLikeDeclaration : VariableLikeDeclaration +>Declaration : Declaration + + propertyName?: Identifier; +>propertyName : Identifier +>Identifier : Identifier + + dotDotDotToken?: Node; +>dotDotDotToken : Node +>Node : Node + + name: DeclarationName; +>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern + + questionToken?: Node; +>questionToken : Node +>Node : Node + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface BindingPattern extends Node { +>BindingPattern : BindingPattern +>Node : Node + + elements: NodeArray; +>elements : NodeArray +>NodeArray : NodeArray +>BindingElement : BindingElement + } + /** + * Several node kinds share function-like features such as a signature, + * a name, and a body. These nodes should extend FunctionLikeDeclaration. + * Examples: + * FunctionDeclaration + * MethodDeclaration + * AccessorDeclaration + */ + interface FunctionLikeDeclaration extends SignatureDeclaration { +>FunctionLikeDeclaration : FunctionLikeDeclaration +>SignatureDeclaration : SignatureDeclaration + + _functionLikeDeclarationBrand: any; +>_functionLikeDeclarationBrand : any + + asteriskToken?: Node; +>asteriskToken : Node +>Node : Node + + questionToken?: Node; +>questionToken : Node +>Node : Node + + body?: Block | Expression; +>body : Expression | Block +>Block : Block +>Expression : Expression + } + interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { +>FunctionDeclaration : FunctionDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration +>Statement : Statement + + name?: Identifier; +>name : Identifier +>Identifier : Identifier + + body?: Block; +>body : Block +>Block : Block + } + interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { +>MethodDeclaration : MethodDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration +>ClassElement : ClassElement +>ObjectLiteralElement : ObjectLiteralElement + + body?: Block; +>body : Block +>Block : Block + } + interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { +>ConstructorDeclaration : ConstructorDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration +>ClassElement : ClassElement + + body?: Block; +>body : Block +>Block : Block + } + interface SemicolonClassElement extends ClassElement { +>SemicolonClassElement : SemicolonClassElement +>ClassElement : ClassElement + + _semicolonClassElementBrand: any; +>_semicolonClassElementBrand : any + } + interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { +>AccessorDeclaration : AccessorDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration +>ClassElement : ClassElement +>ObjectLiteralElement : ObjectLiteralElement + + _accessorDeclarationBrand: any; +>_accessorDeclarationBrand : any + + body: Block; +>body : Block +>Block : Block + } + interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement { +>IndexSignatureDeclaration : IndexSignatureDeclaration +>SignatureDeclaration : SignatureDeclaration +>ClassElement : ClassElement + + _indexSignatureDeclarationBrand: any; +>_indexSignatureDeclarationBrand : any + } + interface TypeNode extends Node { +>TypeNode : TypeNode +>Node : Node + + _typeNodeBrand: any; +>_typeNodeBrand : any + } + interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration { +>FunctionOrConstructorTypeNode : FunctionOrConstructorTypeNode +>TypeNode : TypeNode +>SignatureDeclaration : SignatureDeclaration + + _functionOrConstructorTypeNodeBrand: any; +>_functionOrConstructorTypeNodeBrand : any + } + interface TypeReferenceNode extends TypeNode { +>TypeReferenceNode : TypeReferenceNode +>TypeNode : TypeNode + + typeName: EntityName; +>typeName : Identifier | QualifiedName +>EntityName : Identifier | QualifiedName + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode + } + interface TypeQueryNode extends TypeNode { +>TypeQueryNode : TypeQueryNode +>TypeNode : TypeNode + + exprName: EntityName; +>exprName : Identifier | QualifiedName +>EntityName : Identifier | QualifiedName + } + interface TypeLiteralNode extends TypeNode, Declaration { +>TypeLiteralNode : TypeLiteralNode +>TypeNode : TypeNode +>Declaration : Declaration + + members: NodeArray; +>members : NodeArray +>NodeArray : NodeArray +>Node : Node + } + interface ArrayTypeNode extends TypeNode { +>ArrayTypeNode : ArrayTypeNode +>TypeNode : TypeNode + + elementType: TypeNode; +>elementType : TypeNode +>TypeNode : TypeNode + } + interface TupleTypeNode extends TypeNode { +>TupleTypeNode : TupleTypeNode +>TypeNode : TypeNode + + elementTypes: NodeArray; +>elementTypes : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode + } + interface UnionTypeNode extends TypeNode { +>UnionTypeNode : UnionTypeNode +>TypeNode : TypeNode + + types: NodeArray; +>types : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode + } + interface ParenthesizedTypeNode extends TypeNode { +>ParenthesizedTypeNode : ParenthesizedTypeNode +>TypeNode : TypeNode + + type: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + } + interface StringLiteralTypeNode extends LiteralExpression, TypeNode { +>StringLiteralTypeNode : StringLiteralTypeNode +>LiteralExpression : LiteralExpression +>TypeNode : TypeNode + } + interface Expression extends Node { +>Expression : Expression +>Node : Node + + _expressionBrand: any; +>_expressionBrand : any + + contextualType?: Type; +>contextualType : Type +>Type : Type + } + interface UnaryExpression extends Expression { +>UnaryExpression : UnaryExpression +>Expression : Expression + + _unaryExpressionBrand: any; +>_unaryExpressionBrand : any + } + interface PrefixUnaryExpression extends UnaryExpression { +>PrefixUnaryExpression : PrefixUnaryExpression +>UnaryExpression : UnaryExpression + + operator: SyntaxKind; +>operator : SyntaxKind +>SyntaxKind : SyntaxKind + + operand: UnaryExpression; +>operand : UnaryExpression +>UnaryExpression : UnaryExpression + } + interface PostfixUnaryExpression extends PostfixExpression { +>PostfixUnaryExpression : PostfixUnaryExpression +>PostfixExpression : PostfixExpression + + operand: LeftHandSideExpression; +>operand : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + operator: SyntaxKind; +>operator : SyntaxKind +>SyntaxKind : SyntaxKind + } + interface PostfixExpression extends UnaryExpression { +>PostfixExpression : PostfixExpression +>UnaryExpression : UnaryExpression + + _postfixExpressionBrand: any; +>_postfixExpressionBrand : any + } + interface LeftHandSideExpression extends PostfixExpression { +>LeftHandSideExpression : LeftHandSideExpression +>PostfixExpression : PostfixExpression + + _leftHandSideExpressionBrand: any; +>_leftHandSideExpressionBrand : any + } + interface MemberExpression extends LeftHandSideExpression { +>MemberExpression : MemberExpression +>LeftHandSideExpression : LeftHandSideExpression + + _memberExpressionBrand: any; +>_memberExpressionBrand : any + } + interface PrimaryExpression extends MemberExpression { +>PrimaryExpression : PrimaryExpression +>MemberExpression : MemberExpression + + _primaryExpressionBrand: any; +>_primaryExpressionBrand : any + } + interface DeleteExpression extends UnaryExpression { +>DeleteExpression : DeleteExpression +>UnaryExpression : UnaryExpression + + expression: UnaryExpression; +>expression : UnaryExpression +>UnaryExpression : UnaryExpression + } + interface TypeOfExpression extends UnaryExpression { +>TypeOfExpression : TypeOfExpression +>UnaryExpression : UnaryExpression + + expression: UnaryExpression; +>expression : UnaryExpression +>UnaryExpression : UnaryExpression + } + interface VoidExpression extends UnaryExpression { +>VoidExpression : VoidExpression +>UnaryExpression : UnaryExpression + + expression: UnaryExpression; +>expression : UnaryExpression +>UnaryExpression : UnaryExpression + } + interface YieldExpression extends Expression { +>YieldExpression : YieldExpression +>Expression : Expression + + asteriskToken?: Node; +>asteriskToken : Node +>Node : Node + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface BinaryExpression extends Expression { +>BinaryExpression : BinaryExpression +>Expression : Expression + + left: Expression; +>left : Expression +>Expression : Expression + + operatorToken: Node; +>operatorToken : Node +>Node : Node + + right: Expression; +>right : Expression +>Expression : Expression + } + interface ConditionalExpression extends Expression { +>ConditionalExpression : ConditionalExpression +>Expression : Expression + + condition: Expression; +>condition : Expression +>Expression : Expression + + questionToken: Node; +>questionToken : Node +>Node : Node + + whenTrue: Expression; +>whenTrue : Expression +>Expression : Expression + + colonToken: Node; +>colonToken : Node +>Node : Node + + whenFalse: Expression; +>whenFalse : Expression +>Expression : Expression + } + interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { +>FunctionExpression : FunctionExpression +>PrimaryExpression : PrimaryExpression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + name?: Identifier; +>name : Identifier +>Identifier : Identifier + + body: Block | Expression; +>body : Expression | Block +>Block : Block +>Expression : Expression + } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { +>ArrowFunction : ArrowFunction +>Expression : Expression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node +>Node : Node + } + interface LiteralExpression extends PrimaryExpression { +>LiteralExpression : LiteralExpression +>PrimaryExpression : PrimaryExpression + + text: string; +>text : string + + isUnterminated?: boolean; +>isUnterminated : boolean + + hasExtendedUnicodeEscape?: boolean; +>hasExtendedUnicodeEscape : boolean + } + interface StringLiteralExpression extends LiteralExpression { +>StringLiteralExpression : StringLiteralExpression +>LiteralExpression : LiteralExpression + + _stringLiteralExpressionBrand: any; +>_stringLiteralExpressionBrand : any + } + interface TemplateExpression extends PrimaryExpression { +>TemplateExpression : TemplateExpression +>PrimaryExpression : PrimaryExpression + + head: LiteralExpression; +>head : LiteralExpression +>LiteralExpression : LiteralExpression + + templateSpans: NodeArray; +>templateSpans : NodeArray +>NodeArray : NodeArray +>TemplateSpan : TemplateSpan + } + interface TemplateSpan extends Node { +>TemplateSpan : TemplateSpan +>Node : Node + + expression: Expression; +>expression : Expression +>Expression : Expression + + literal: LiteralExpression; +>literal : LiteralExpression +>LiteralExpression : LiteralExpression + } + interface ParenthesizedExpression extends PrimaryExpression { +>ParenthesizedExpression : ParenthesizedExpression +>PrimaryExpression : PrimaryExpression + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface ArrayLiteralExpression extends PrimaryExpression { +>ArrayLiteralExpression : ArrayLiteralExpression +>PrimaryExpression : PrimaryExpression + + elements: NodeArray; +>elements : NodeArray +>NodeArray : NodeArray +>Expression : Expression + } + interface SpreadElementExpression extends Expression { +>SpreadElementExpression : SpreadElementExpression +>Expression : Expression + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface ObjectLiteralExpression extends PrimaryExpression, Declaration { +>ObjectLiteralExpression : ObjectLiteralExpression +>PrimaryExpression : PrimaryExpression +>Declaration : Declaration + + properties: NodeArray; +>properties : NodeArray +>NodeArray : NodeArray +>ObjectLiteralElement : ObjectLiteralElement + } + interface PropertyAccessExpression extends MemberExpression { +>PropertyAccessExpression : PropertyAccessExpression +>MemberExpression : MemberExpression + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + dotToken: Node; +>dotToken : Node +>Node : Node + + name: Identifier; +>name : Identifier +>Identifier : Identifier + } + interface ElementAccessExpression extends MemberExpression { +>ElementAccessExpression : ElementAccessExpression +>MemberExpression : MemberExpression + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + argumentExpression?: Expression; +>argumentExpression : Expression +>Expression : Expression + } + interface CallExpression extends LeftHandSideExpression { +>CallExpression : CallExpression +>LeftHandSideExpression : LeftHandSideExpression + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode + + arguments: NodeArray; +>arguments : NodeArray +>NodeArray : NodeArray +>Expression : Expression + } + interface HeritageClauseElement extends Node { +>HeritageClauseElement : HeritageClauseElement +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode + } + interface NewExpression extends CallExpression, PrimaryExpression { +>NewExpression : NewExpression +>CallExpression : CallExpression +>PrimaryExpression : PrimaryExpression + } + interface TaggedTemplateExpression extends MemberExpression { +>TaggedTemplateExpression : TaggedTemplateExpression +>MemberExpression : MemberExpression + + tag: LeftHandSideExpression; +>tag : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + template: LiteralExpression | TemplateExpression; +>template : LiteralExpression | TemplateExpression +>LiteralExpression : LiteralExpression +>TemplateExpression : TemplateExpression + } + type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression; +>CallLikeExpression : CallExpression | NewExpression | TaggedTemplateExpression +>CallExpression : CallExpression +>NewExpression : NewExpression +>TaggedTemplateExpression : TaggedTemplateExpression + + interface TypeAssertion extends UnaryExpression { +>TypeAssertion : TypeAssertion +>UnaryExpression : UnaryExpression + + type: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + + expression: UnaryExpression; +>expression : UnaryExpression +>UnaryExpression : UnaryExpression + } + interface Statement extends Node, ModuleElement { +>Statement : Statement +>Node : Node +>ModuleElement : ModuleElement + + _statementBrand: any; +>_statementBrand : any + } + interface Block extends Statement { +>Block : Block +>Statement : Statement + + statements: NodeArray; +>statements : NodeArray +>NodeArray : NodeArray +>Statement : Statement + } + interface VariableStatement extends Statement { +>VariableStatement : VariableStatement +>Statement : Statement + + declarationList: VariableDeclarationList; +>declarationList : VariableDeclarationList +>VariableDeclarationList : VariableDeclarationList + } + interface ExpressionStatement extends Statement { +>ExpressionStatement : ExpressionStatement +>Statement : Statement + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface IfStatement extends Statement { +>IfStatement : IfStatement +>Statement : Statement + + expression: Expression; +>expression : Expression +>Expression : Expression + + thenStatement: Statement; +>thenStatement : Statement +>Statement : Statement + + elseStatement?: Statement; +>elseStatement : Statement +>Statement : Statement + } + interface IterationStatement extends Statement { +>IterationStatement : IterationStatement +>Statement : Statement + + statement: Statement; +>statement : Statement +>Statement : Statement + } + interface DoStatement extends IterationStatement { +>DoStatement : DoStatement +>IterationStatement : IterationStatement + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface WhileStatement extends IterationStatement { +>WhileStatement : WhileStatement +>IterationStatement : IterationStatement + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface ForStatement extends IterationStatement { +>ForStatement : ForStatement +>IterationStatement : IterationStatement + + initializer?: VariableDeclarationList | Expression; +>initializer : Expression | VariableDeclarationList +>VariableDeclarationList : VariableDeclarationList +>Expression : Expression + + condition?: Expression; +>condition : Expression +>Expression : Expression + + iterator?: Expression; +>iterator : Expression +>Expression : Expression + } + interface ForInStatement extends IterationStatement { +>ForInStatement : ForInStatement +>IterationStatement : IterationStatement + + initializer: VariableDeclarationList | Expression; +>initializer : Expression | VariableDeclarationList +>VariableDeclarationList : VariableDeclarationList +>Expression : Expression + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface ForOfStatement extends IterationStatement { +>ForOfStatement : ForOfStatement +>IterationStatement : IterationStatement + + initializer: VariableDeclarationList | Expression; +>initializer : Expression | VariableDeclarationList +>VariableDeclarationList : VariableDeclarationList +>Expression : Expression + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface BreakOrContinueStatement extends Statement { +>BreakOrContinueStatement : BreakOrContinueStatement +>Statement : Statement + + label?: Identifier; +>label : Identifier +>Identifier : Identifier + } + interface ReturnStatement extends Statement { +>ReturnStatement : ReturnStatement +>Statement : Statement + + expression?: Expression; +>expression : Expression +>Expression : Expression + } + interface WithStatement extends Statement { +>WithStatement : WithStatement +>Statement : Statement + + expression: Expression; +>expression : Expression +>Expression : Expression + + statement: Statement; +>statement : Statement +>Statement : Statement + } + interface SwitchStatement extends Statement { +>SwitchStatement : SwitchStatement +>Statement : Statement + + expression: Expression; +>expression : Expression +>Expression : Expression + + caseBlock: CaseBlock; +>caseBlock : CaseBlock +>CaseBlock : CaseBlock + } + interface CaseBlock extends Node { +>CaseBlock : CaseBlock +>Node : Node + + clauses: NodeArray; +>clauses : NodeArray +>NodeArray : NodeArray +>CaseOrDefaultClause : CaseClause | DefaultClause + } + interface CaseClause extends Node { +>CaseClause : CaseClause +>Node : Node + + expression?: Expression; +>expression : Expression +>Expression : Expression + + statements: NodeArray; +>statements : NodeArray +>NodeArray : NodeArray +>Statement : Statement + } + interface DefaultClause extends Node { +>DefaultClause : DefaultClause +>Node : Node + + statements: NodeArray; +>statements : NodeArray +>NodeArray : NodeArray +>Statement : Statement + } + type CaseOrDefaultClause = CaseClause | DefaultClause; +>CaseOrDefaultClause : CaseClause | DefaultClause +>CaseClause : CaseClause +>DefaultClause : DefaultClause + + interface LabeledStatement extends Statement { +>LabeledStatement : LabeledStatement +>Statement : Statement + + label: Identifier; +>label : Identifier +>Identifier : Identifier + + statement: Statement; +>statement : Statement +>Statement : Statement + } + interface ThrowStatement extends Statement { +>ThrowStatement : ThrowStatement +>Statement : Statement + + expression: Expression; +>expression : Expression +>Expression : Expression + } + interface TryStatement extends Statement { +>TryStatement : TryStatement +>Statement : Statement + + tryBlock: Block; +>tryBlock : Block +>Block : Block + + catchClause?: CatchClause; +>catchClause : CatchClause +>CatchClause : CatchClause + + finallyBlock?: Block; +>finallyBlock : Block +>Block : Block + } + interface CatchClause extends Node { +>CatchClause : CatchClause +>Node : Node + + variableDeclaration: VariableDeclaration; +>variableDeclaration : VariableDeclaration +>VariableDeclaration : VariableDeclaration + + block: Block; +>block : Block +>Block : Block + } + interface ModuleElement extends Node { +>ModuleElement : ModuleElement +>Node : Node + + _moduleElementBrand: any; +>_moduleElementBrand : any + } + interface ClassLikeDeclaration extends Declaration { +>ClassLikeDeclaration : ClassLikeDeclaration +>Declaration : Declaration + + name?: Identifier; +>name : Identifier +>Identifier : Identifier + + typeParameters?: NodeArray; +>typeParameters : NodeArray +>NodeArray : NodeArray +>TypeParameterDeclaration : TypeParameterDeclaration + + heritageClauses?: NodeArray; +>heritageClauses : NodeArray +>NodeArray : NodeArray +>HeritageClause : HeritageClause + + members: NodeArray; +>members : NodeArray +>NodeArray : NodeArray +>ClassElement : ClassElement + } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { +>ClassDeclaration : ClassDeclaration +>ClassLikeDeclaration : ClassLikeDeclaration +>Statement : Statement + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { +>ClassExpression : ClassExpression +>ClassLikeDeclaration : ClassLikeDeclaration +>PrimaryExpression : PrimaryExpression + } + interface ClassElement extends Declaration { +>ClassElement : ClassElement +>Declaration : Declaration + + _classElementBrand: any; +>_classElementBrand : any + } + interface InterfaceDeclaration extends Declaration, ModuleElement { +>InterfaceDeclaration : InterfaceDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + typeParameters?: NodeArray; +>typeParameters : NodeArray +>NodeArray : NodeArray +>TypeParameterDeclaration : TypeParameterDeclaration + + heritageClauses?: NodeArray; +>heritageClauses : NodeArray +>NodeArray : NodeArray +>HeritageClause : HeritageClause + + members: NodeArray; +>members : NodeArray +>NodeArray : NodeArray +>Declaration : Declaration + } + interface HeritageClause extends Node { +>HeritageClause : HeritageClause +>Node : Node + + token: SyntaxKind; +>token : SyntaxKind +>SyntaxKind : SyntaxKind + + types?: NodeArray; +>types : NodeArray +>NodeArray : NodeArray +>HeritageClauseElement : HeritageClauseElement + } + interface TypeAliasDeclaration extends Declaration, ModuleElement { +>TypeAliasDeclaration : TypeAliasDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + type: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + } + interface EnumMember extends Declaration { +>EnumMember : EnumMember +>Declaration : Declaration + + name: DeclarationName; +>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern +>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern + + initializer?: Expression; +>initializer : Expression +>Expression : Expression + } + interface EnumDeclaration extends Declaration, ModuleElement { +>EnumDeclaration : EnumDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + members: NodeArray; +>members : NodeArray +>NodeArray : NodeArray +>EnumMember : EnumMember + } + interface ModuleDeclaration extends Declaration, ModuleElement { +>ModuleDeclaration : ModuleDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + name: Identifier | LiteralExpression; +>name : Identifier | LiteralExpression +>Identifier : Identifier +>LiteralExpression : LiteralExpression + + body: ModuleBlock | ModuleDeclaration; +>body : ModuleDeclaration | ModuleBlock +>ModuleBlock : ModuleBlock +>ModuleDeclaration : ModuleDeclaration + } + interface ModuleBlock extends Node, ModuleElement { +>ModuleBlock : ModuleBlock +>Node : Node +>ModuleElement : ModuleElement + + statements: NodeArray; +>statements : NodeArray +>NodeArray : NodeArray +>ModuleElement : ModuleElement + } + interface ImportEqualsDeclaration extends Declaration, ModuleElement { +>ImportEqualsDeclaration : ImportEqualsDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + name: Identifier; +>name : Identifier +>Identifier : Identifier + + moduleReference: EntityName | ExternalModuleReference; +>moduleReference : Identifier | QualifiedName | ExternalModuleReference +>EntityName : Identifier | QualifiedName +>ExternalModuleReference : ExternalModuleReference + } + interface ExternalModuleReference extends Node { +>ExternalModuleReference : ExternalModuleReference +>Node : Node + + expression?: Expression; +>expression : Expression +>Expression : Expression + } + interface ImportDeclaration extends ModuleElement { +>ImportDeclaration : ImportDeclaration +>ModuleElement : ModuleElement + + importClause?: ImportClause; +>importClause : ImportClause +>ImportClause : ImportClause + + moduleSpecifier: Expression; +>moduleSpecifier : Expression +>Expression : Expression + } + interface ImportClause extends Declaration { +>ImportClause : ImportClause +>Declaration : Declaration + + name?: Identifier; +>name : Identifier +>Identifier : Identifier + + namedBindings?: NamespaceImport | NamedImports; +>namedBindings : NamespaceImport | NamedImportsOrExports +>NamespaceImport : NamespaceImport +>NamedImports : NamedImportsOrExports + } + interface NamespaceImport extends Declaration { +>NamespaceImport : NamespaceImport +>Declaration : Declaration + + name: Identifier; +>name : Identifier +>Identifier : Identifier + } + interface ExportDeclaration extends Declaration, ModuleElement { +>ExportDeclaration : ExportDeclaration +>Declaration : Declaration +>ModuleElement : ModuleElement + + exportClause?: NamedExports; +>exportClause : NamedImportsOrExports +>NamedExports : NamedImportsOrExports + + moduleSpecifier?: Expression; +>moduleSpecifier : Expression +>Expression : Expression + } + interface NamedImportsOrExports extends Node { +>NamedImportsOrExports : NamedImportsOrExports +>Node : Node + + elements: NodeArray; +>elements : NodeArray +>NodeArray : NodeArray +>ImportOrExportSpecifier : ImportOrExportSpecifier + } + type NamedImports = NamedImportsOrExports; +>NamedImports : NamedImportsOrExports +>NamedImportsOrExports : NamedImportsOrExports + + type NamedExports = NamedImportsOrExports; +>NamedExports : NamedImportsOrExports +>NamedImportsOrExports : NamedImportsOrExports + + interface ImportOrExportSpecifier extends Declaration { +>ImportOrExportSpecifier : ImportOrExportSpecifier +>Declaration : Declaration + + propertyName?: Identifier; +>propertyName : Identifier +>Identifier : Identifier + + name: Identifier; +>name : Identifier +>Identifier : Identifier + } + type ImportSpecifier = ImportOrExportSpecifier; +>ImportSpecifier : ImportOrExportSpecifier +>ImportOrExportSpecifier : ImportOrExportSpecifier + + type ExportSpecifier = ImportOrExportSpecifier; +>ExportSpecifier : ImportOrExportSpecifier +>ImportOrExportSpecifier : ImportOrExportSpecifier + + interface ExportAssignment extends Declaration, ModuleElement { +>ExportAssignment : ExportAssignment +>Declaration : Declaration +>ModuleElement : ModuleElement + + isExportEquals?: boolean; +>isExportEquals : boolean + + expression?: Expression; +>expression : Expression +>Expression : Expression + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode + } + interface FileReference extends TextRange { +>FileReference : FileReference +>TextRange : TextRange + + fileName: string; +>fileName : string + } + interface CommentRange extends TextRange { +>CommentRange : CommentRange +>TextRange : TextRange + + hasTrailingNewLine?: boolean; +>hasTrailingNewLine : boolean + } + interface SourceFile extends Declaration { +>SourceFile : SourceFile +>Declaration : Declaration + + statements: NodeArray; +>statements : NodeArray +>NodeArray : NodeArray +>ModuleElement : ModuleElement + + endOfFileToken: Node; +>endOfFileToken : Node +>Node : Node + + fileName: string; +>fileName : string + + text: string; +>text : string + + amdDependencies: { +>amdDependencies : { path: string; name: string; }[] + + path: string; +>path : string + + name: string; +>name : string + + }[]; + amdModuleName: string; +>amdModuleName : string + + referencedFiles: FileReference[]; +>referencedFiles : FileReference[] +>FileReference : FileReference + + hasNoDefaultLib: boolean; +>hasNoDefaultLib : boolean + + externalModuleIndicator: Node; +>externalModuleIndicator : Node +>Node : Node + + languageVersion: ScriptTarget; +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget + + identifiers: Map; +>identifiers : Map +>Map : Map + } + interface ScriptReferenceHost { +>ScriptReferenceHost : ScriptReferenceHost + + getCompilerOptions(): CompilerOptions; +>getCompilerOptions : () => CompilerOptions +>CompilerOptions : CompilerOptions + + getSourceFile(fileName: string): SourceFile; +>getSourceFile : (fileName: string) => SourceFile +>fileName : string +>SourceFile : SourceFile + + getCurrentDirectory(): string; +>getCurrentDirectory : () => string + } + interface WriteFileCallback { +>WriteFileCallback : WriteFileCallback + + (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void): void; +>fileName : string +>data : string +>writeByteOrderMark : boolean +>onError : (message: string) => void +>message : string + } + interface Program extends ScriptReferenceHost { +>Program : Program +>ScriptReferenceHost : ScriptReferenceHost + + getSourceFiles(): SourceFile[]; +>getSourceFiles : () => SourceFile[] +>SourceFile : SourceFile + + /** + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that + * specific file will be generated. + * + * If writeFile is not specified then the writeFile callback from the compiler host will be + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. + */ + emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; +>emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult +>targetSourceFile : SourceFile +>SourceFile : SourceFile +>writeFile : WriteFileCallback +>WriteFileCallback : WriteFileCallback +>EmitResult : EmitResult + + getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; +>getSyntacticDiagnostics : (sourceFile?: SourceFile) => Diagnostic[] +>sourceFile : SourceFile +>SourceFile : SourceFile +>Diagnostic : Diagnostic + + getGlobalDiagnostics(): Diagnostic[]; +>getGlobalDiagnostics : () => Diagnostic[] +>Diagnostic : Diagnostic + + getSemanticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; +>getSemanticDiagnostics : (sourceFile?: SourceFile) => Diagnostic[] +>sourceFile : SourceFile +>SourceFile : SourceFile +>Diagnostic : Diagnostic + + getDeclarationDiagnostics(sourceFile?: SourceFile): Diagnostic[]; +>getDeclarationDiagnostics : (sourceFile?: SourceFile) => Diagnostic[] +>sourceFile : SourceFile +>SourceFile : SourceFile +>Diagnostic : Diagnostic + + getTypeChecker(): TypeChecker; +>getTypeChecker : () => TypeChecker +>TypeChecker : TypeChecker + + getCommonSourceDirectory(): string; +>getCommonSourceDirectory : () => string + } + interface SourceMapSpan { +>SourceMapSpan : SourceMapSpan + + emittedLine: number; +>emittedLine : number + + emittedColumn: number; +>emittedColumn : number + + sourceLine: number; +>sourceLine : number + + sourceColumn: number; +>sourceColumn : number + + nameIndex?: number; +>nameIndex : number + + sourceIndex: number; +>sourceIndex : number + } + interface SourceMapData { +>SourceMapData : SourceMapData + + sourceMapFilePath: string; +>sourceMapFilePath : string + + jsSourceMappingURL: string; +>jsSourceMappingURL : string + + sourceMapFile: string; +>sourceMapFile : string + + sourceMapSourceRoot: string; +>sourceMapSourceRoot : string + + sourceMapSources: string[]; +>sourceMapSources : string[] + + inputSourceFileNames: string[]; +>inputSourceFileNames : string[] + + sourceMapNames?: string[]; +>sourceMapNames : string[] + + sourceMapMappings: string; +>sourceMapMappings : string + + sourceMapDecodedMappings: SourceMapSpan[]; +>sourceMapDecodedMappings : SourceMapSpan[] +>SourceMapSpan : SourceMapSpan + } + enum ExitStatus { +>ExitStatus : ExitStatus + + Success = 0, +>Success : ExitStatus + + DiagnosticsPresent_OutputsSkipped = 1, +>DiagnosticsPresent_OutputsSkipped : ExitStatus + + DiagnosticsPresent_OutputsGenerated = 2, +>DiagnosticsPresent_OutputsGenerated : ExitStatus + } + interface EmitResult { +>EmitResult : EmitResult + + emitSkipped: boolean; +>emitSkipped : boolean + + diagnostics: Diagnostic[]; +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + + sourceMaps: SourceMapData[]; +>sourceMaps : SourceMapData[] +>SourceMapData : SourceMapData + } + interface TypeCheckerHost { +>TypeCheckerHost : TypeCheckerHost + + getCompilerOptions(): CompilerOptions; +>getCompilerOptions : () => CompilerOptions +>CompilerOptions : CompilerOptions + + getSourceFiles(): SourceFile[]; +>getSourceFiles : () => SourceFile[] +>SourceFile : SourceFile + + getSourceFile(fileName: string): SourceFile; +>getSourceFile : (fileName: string) => SourceFile +>fileName : string +>SourceFile : SourceFile + } + interface TypeChecker { +>TypeChecker : TypeChecker + + getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type; +>getTypeOfSymbolAtLocation : (symbol: Symbol, node: Node) => Type +>symbol : Symbol +>Symbol : Symbol +>node : Node +>Node : Node +>Type : Type + + getDeclaredTypeOfSymbol(symbol: Symbol): Type; +>getDeclaredTypeOfSymbol : (symbol: Symbol) => Type +>symbol : Symbol +>Symbol : Symbol +>Type : Type + + getPropertiesOfType(type: Type): Symbol[]; +>getPropertiesOfType : (type: Type) => Symbol[] +>type : Type +>Type : Type +>Symbol : Symbol + + getPropertyOfType(type: Type, propertyName: string): Symbol; +>getPropertyOfType : (type: Type, propertyName: string) => Symbol +>type : Type +>Type : Type +>propertyName : string +>Symbol : Symbol + + getSignaturesOfType(type: Type, kind: SignatureKind): Signature[]; +>getSignaturesOfType : (type: Type, kind: SignatureKind) => Signature[] +>type : Type +>Type : Type +>kind : SignatureKind +>SignatureKind : SignatureKind +>Signature : Signature + + getIndexTypeOfType(type: Type, kind: IndexKind): Type; +>getIndexTypeOfType : (type: Type, kind: IndexKind) => Type +>type : Type +>Type : Type +>kind : IndexKind +>IndexKind : IndexKind +>Type : Type + + getReturnTypeOfSignature(signature: Signature): Type; +>getReturnTypeOfSignature : (signature: Signature) => Type +>signature : Signature +>Signature : Signature +>Type : Type + + getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; +>getSymbolsInScope : (location: Node, meaning: SymbolFlags) => Symbol[] +>location : Node +>Node : Node +>meaning : SymbolFlags +>SymbolFlags : SymbolFlags +>Symbol : Symbol + + getSymbolAtLocation(node: Node): Symbol; +>getSymbolAtLocation : (node: Node) => Symbol +>node : Node +>Node : Node +>Symbol : Symbol + + getShorthandAssignmentValueSymbol(location: Node): Symbol; +>getShorthandAssignmentValueSymbol : (location: Node) => Symbol +>location : Node +>Node : Node +>Symbol : Symbol + + getTypeAtLocation(node: Node): Type; +>getTypeAtLocation : (node: Node) => Type +>node : Node +>Node : Node +>Type : Type + + typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; +>typeToString : (type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => string +>type : Type +>Type : Type +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string; +>symbolToString : (symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) => string +>symbol : Symbol +>Symbol : Symbol +>enclosingDeclaration : Node +>Node : Node +>meaning : SymbolFlags +>SymbolFlags : SymbolFlags + + getSymbolDisplayBuilder(): SymbolDisplayBuilder; +>getSymbolDisplayBuilder : () => SymbolDisplayBuilder +>SymbolDisplayBuilder : SymbolDisplayBuilder + + getFullyQualifiedName(symbol: Symbol): string; +>getFullyQualifiedName : (symbol: Symbol) => string +>symbol : Symbol +>Symbol : Symbol + + getAugmentedPropertiesOfType(type: Type): Symbol[]; +>getAugmentedPropertiesOfType : (type: Type) => Symbol[] +>type : Type +>Type : Type +>Symbol : Symbol + + getRootSymbols(symbol: Symbol): Symbol[]; +>getRootSymbols : (symbol: Symbol) => Symbol[] +>symbol : Symbol +>Symbol : Symbol +>Symbol : Symbol + + getContextualType(node: Expression): Type; +>getContextualType : (node: Expression) => Type +>node : Expression +>Expression : Expression +>Type : Type + + getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[]): Signature; +>getResolvedSignature : (node: CallExpression | NewExpression | TaggedTemplateExpression, candidatesOutArray?: Signature[]) => Signature +>node : CallExpression | NewExpression | TaggedTemplateExpression +>CallLikeExpression : CallExpression | NewExpression | TaggedTemplateExpression +>candidatesOutArray : Signature[] +>Signature : Signature +>Signature : Signature + + getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature; +>getSignatureFromDeclaration : (declaration: SignatureDeclaration) => Signature +>declaration : SignatureDeclaration +>SignatureDeclaration : SignatureDeclaration +>Signature : Signature + + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; +>isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean +>node : FunctionLikeDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration + + isUndefinedSymbol(symbol: Symbol): boolean; +>isUndefinedSymbol : (symbol: Symbol) => boolean +>symbol : Symbol +>Symbol : Symbol + + isArgumentsSymbol(symbol: Symbol): boolean; +>isArgumentsSymbol : (symbol: Symbol) => boolean +>symbol : Symbol +>Symbol : Symbol + + getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; +>getConstantValue : (node: PropertyAccessExpression | ElementAccessExpression | EnumMember) => number +>node : PropertyAccessExpression | ElementAccessExpression | EnumMember +>EnumMember : EnumMember +>PropertyAccessExpression : PropertyAccessExpression +>ElementAccessExpression : ElementAccessExpression + + isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; +>isValidPropertyAccess : (node: QualifiedName | PropertyAccessExpression, propertyName: string) => boolean +>node : QualifiedName | PropertyAccessExpression +>PropertyAccessExpression : PropertyAccessExpression +>QualifiedName : QualifiedName +>propertyName : string + + getAliasedSymbol(symbol: Symbol): Symbol; +>getAliasedSymbol : (symbol: Symbol) => Symbol +>symbol : Symbol +>Symbol : Symbol +>Symbol : Symbol + + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; +>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[] +>moduleSymbol : Symbol +>Symbol : Symbol +>Symbol : Symbol + } + interface SymbolDisplayBuilder { +>SymbolDisplayBuilder : SymbolDisplayBuilder + + buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildTypeDisplay : (type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>type : Type +>Type : Type +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildSymbolDisplay(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): void; +>buildSymbolDisplay : (symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags) => void +>symbol : Symbol +>Symbol : Symbol +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>meaning : SymbolFlags +>SymbolFlags : SymbolFlags +>flags : SymbolFormatFlags +>SymbolFormatFlags : SymbolFormatFlags + + buildSignatureDisplay(signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildSignatureDisplay : (signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>signatures : Signature +>Signature : Signature +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildParameterDisplay(parameter: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildParameterDisplay : (parameter: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>parameter : Symbol +>Symbol : Symbol +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildTypeParameterDisplay : (tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>tp : TypeParameter +>TypeParameter : TypeParameter +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags): void; +>buildTypeParameterDisplayFromSymbol : (symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags) => void +>symbol : Symbol +>Symbol : Symbol +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaraiton : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildDisplayForParametersAndDelimiters : (parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>parameters : Symbol[] +>Symbol : Symbol +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildDisplayForTypeParametersAndDelimiters : (typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>typeParameters : TypeParameter[] +>TypeParameter : TypeParameter +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + + buildReturnTypeDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; +>buildReturnTypeDisplay : (signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void +>signature : Signature +>Signature : Signature +>writer : SymbolWriter +>SymbolWriter : SymbolWriter +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags + } + interface SymbolWriter { +>SymbolWriter : SymbolWriter + + writeKeyword(text: string): void; +>writeKeyword : (text: string) => void +>text : string + + writeOperator(text: string): void; +>writeOperator : (text: string) => void +>text : string + + writePunctuation(text: string): void; +>writePunctuation : (text: string) => void +>text : string + + writeSpace(text: string): void; +>writeSpace : (text: string) => void +>text : string + + writeStringLiteral(text: string): void; +>writeStringLiteral : (text: string) => void +>text : string + + writeParameter(text: string): void; +>writeParameter : (text: string) => void +>text : string + + writeSymbol(text: string, symbol: Symbol): void; +>writeSymbol : (text: string, symbol: Symbol) => void +>text : string +>symbol : Symbol +>Symbol : Symbol + + writeLine(): void; +>writeLine : () => void + + increaseIndent(): void; +>increaseIndent : () => void + + decreaseIndent(): void; +>decreaseIndent : () => void + + clear(): void; +>clear : () => void + + trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): void; +>trackSymbol : (symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) => void +>symbol : Symbol +>Symbol : Symbol +>enclosingDeclaration : Node +>Node : Node +>meaning : SymbolFlags +>SymbolFlags : SymbolFlags + } + const enum TypeFormatFlags { +>TypeFormatFlags : TypeFormatFlags + + None = 0, +>None : TypeFormatFlags + + WriteArrayAsGenericType = 1, +>WriteArrayAsGenericType : TypeFormatFlags + + UseTypeOfFunction = 2, +>UseTypeOfFunction : TypeFormatFlags + + NoTruncation = 4, +>NoTruncation : TypeFormatFlags + + WriteArrowStyleSignature = 8, +>WriteArrowStyleSignature : TypeFormatFlags + + WriteOwnNameForAnyLike = 16, +>WriteOwnNameForAnyLike : TypeFormatFlags + + WriteTypeArgumentsOfSignature = 32, +>WriteTypeArgumentsOfSignature : TypeFormatFlags + + InElementType = 64, +>InElementType : TypeFormatFlags + + UseFullyQualifiedType = 128, +>UseFullyQualifiedType : TypeFormatFlags + } + const enum SymbolFormatFlags { +>SymbolFormatFlags : SymbolFormatFlags + + None = 0, +>None : SymbolFormatFlags + + WriteTypeParametersOrArguments = 1, +>WriteTypeParametersOrArguments : SymbolFormatFlags + + UseOnlyExternalAliasing = 2, +>UseOnlyExternalAliasing : SymbolFormatFlags + } + const enum SymbolAccessibility { +>SymbolAccessibility : SymbolAccessibility + + Accessible = 0, +>Accessible : SymbolAccessibility + + NotAccessible = 1, +>NotAccessible : SymbolAccessibility + + CannotBeNamed = 2, +>CannotBeNamed : SymbolAccessibility + } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration +>ImportDeclaration : ImportDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + + interface SymbolVisibilityResult { +>SymbolVisibilityResult : SymbolVisibilityResult + + accessibility: SymbolAccessibility; +>accessibility : SymbolAccessibility +>SymbolAccessibility : SymbolAccessibility + + aliasesToMakeVisible?: AnyImportSyntax[]; +>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[] +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration + + errorSymbolName?: string; +>errorSymbolName : string + + errorNode?: Node; +>errorNode : Node +>Node : Node + } + interface SymbolAccessiblityResult extends SymbolVisibilityResult { +>SymbolAccessiblityResult : SymbolAccessiblityResult +>SymbolVisibilityResult : SymbolVisibilityResult + + errorModuleName?: string; +>errorModuleName : string + } + interface EmitResolver { +>EmitResolver : EmitResolver + + hasGlobalName(name: string): boolean; +>hasGlobalName : (name: string) => boolean +>name : string + + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; +>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string +>node : Identifier +>Identifier : Identifier +>getGeneratedNameForNode : (node: Node) => string +>node : Node +>Node : Node + + isValueAliasDeclaration(node: Node): boolean; +>isValueAliasDeclaration : (node: Node) => boolean +>node : Node +>Node : Node + + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; +>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean +>node : Node +>Node : Node +>checkChildren : boolean + + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; +>isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean +>node : ImportEqualsDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + + getNodeCheckFlags(node: Node): NodeCheckFlags; +>getNodeCheckFlags : (node: Node) => NodeCheckFlags +>node : Node +>Node : Node +>NodeCheckFlags : NodeCheckFlags + + isDeclarationVisible(node: Declaration): boolean; +>isDeclarationVisible : (node: Declaration) => boolean +>node : Declaration +>Declaration : Declaration + + collectLinkedAliases(node: Identifier): Node[]; +>collectLinkedAliases : (node: Identifier) => Node[] +>node : Identifier +>Identifier : Identifier +>Node : Node + + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; +>isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean +>node : FunctionLikeDeclaration +>FunctionLikeDeclaration : FunctionLikeDeclaration + + writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfDeclaration : (declaration: VariableLikeDeclaration | AccessorDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>declaration : VariableLikeDeclaration | AccessorDeclaration +>AccessorDeclaration : AccessorDeclaration +>VariableLikeDeclaration : VariableLikeDeclaration +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeReturnTypeOfSignatureDeclaration : (signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>signatureDeclaration : SignatureDeclaration +>SignatureDeclaration : SignatureDeclaration +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>expr : Expression +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter +>SymbolWriter : SymbolWriter + + isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; +>isSymbolAccessible : (symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags) => SymbolAccessiblityResult +>symbol : Symbol +>Symbol : Symbol +>enclosingDeclaration : Node +>Node : Node +>meaning : SymbolFlags +>SymbolFlags : SymbolFlags +>SymbolAccessiblityResult : SymbolAccessiblityResult + + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; +>isEntityNameVisible : (entityName: Expression | Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult +>entityName : Expression | Identifier | QualifiedName +>EntityName : Identifier | QualifiedName +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>SymbolVisibilityResult : SymbolVisibilityResult + + getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; +>getConstantValue : (node: PropertyAccessExpression | ElementAccessExpression | EnumMember) => number +>node : PropertyAccessExpression | ElementAccessExpression | EnumMember +>EnumMember : EnumMember +>PropertyAccessExpression : PropertyAccessExpression +>ElementAccessExpression : ElementAccessExpression + + resolvesToSomeValue(location: Node, name: string): boolean; +>resolvesToSomeValue : (location: Node, name: string) => boolean +>location : Node +>Node : Node +>name : string + + getBlockScopedVariableId(node: Identifier): number; +>getBlockScopedVariableId : (node: Identifier) => number +>node : Identifier +>Identifier : Identifier + } + const enum SymbolFlags { +>SymbolFlags : SymbolFlags + + FunctionScopedVariable = 1, +>FunctionScopedVariable : SymbolFlags + + BlockScopedVariable = 2, +>BlockScopedVariable : SymbolFlags + + Property = 4, +>Property : SymbolFlags + + EnumMember = 8, +>EnumMember : SymbolFlags + + Function = 16, +>Function : SymbolFlags + + Class = 32, +>Class : SymbolFlags + + Interface = 64, +>Interface : SymbolFlags + + ConstEnum = 128, +>ConstEnum : SymbolFlags + + RegularEnum = 256, +>RegularEnum : SymbolFlags + + ValueModule = 512, +>ValueModule : SymbolFlags + + NamespaceModule = 1024, +>NamespaceModule : SymbolFlags + + TypeLiteral = 2048, +>TypeLiteral : SymbolFlags + + ObjectLiteral = 4096, +>ObjectLiteral : SymbolFlags + + Method = 8192, +>Method : SymbolFlags + + Constructor = 16384, +>Constructor : SymbolFlags + + GetAccessor = 32768, +>GetAccessor : SymbolFlags + + SetAccessor = 65536, +>SetAccessor : SymbolFlags + + Signature = 131072, +>Signature : SymbolFlags + + TypeParameter = 262144, +>TypeParameter : SymbolFlags + + TypeAlias = 524288, +>TypeAlias : SymbolFlags + + ExportValue = 1048576, +>ExportValue : SymbolFlags + + ExportType = 2097152, +>ExportType : SymbolFlags + + ExportNamespace = 4194304, +>ExportNamespace : SymbolFlags + + Alias = 8388608, +>Alias : SymbolFlags + + Instantiated = 16777216, +>Instantiated : SymbolFlags + + Merged = 33554432, +>Merged : SymbolFlags + + Transient = 67108864, +>Transient : SymbolFlags + + Prototype = 134217728, +>Prototype : SymbolFlags + + UnionProperty = 268435456, +>UnionProperty : SymbolFlags + + Optional = 536870912, +>Optional : SymbolFlags + + ExportStar = 1073741824, +>ExportStar : SymbolFlags + + Enum = 384, +>Enum : SymbolFlags + + Variable = 3, +>Variable : SymbolFlags + + Value = 107455, +>Value : SymbolFlags + + Type = 793056, +>Type : SymbolFlags + + Namespace = 1536, +>Namespace : SymbolFlags + + Module = 1536, +>Module : SymbolFlags + + Accessor = 98304, +>Accessor : SymbolFlags + + FunctionScopedVariableExcludes = 107454, +>FunctionScopedVariableExcludes : SymbolFlags + + BlockScopedVariableExcludes = 107455, +>BlockScopedVariableExcludes : SymbolFlags + + ParameterExcludes = 107455, +>ParameterExcludes : SymbolFlags + + PropertyExcludes = 107455, +>PropertyExcludes : SymbolFlags + + EnumMemberExcludes = 107455, +>EnumMemberExcludes : SymbolFlags + + FunctionExcludes = 106927, +>FunctionExcludes : SymbolFlags + + ClassExcludes = 899583, +>ClassExcludes : SymbolFlags + + InterfaceExcludes = 792992, +>InterfaceExcludes : SymbolFlags + + RegularEnumExcludes = 899327, +>RegularEnumExcludes : SymbolFlags + + ConstEnumExcludes = 899967, +>ConstEnumExcludes : SymbolFlags + + ValueModuleExcludes = 106639, +>ValueModuleExcludes : SymbolFlags + + NamespaceModuleExcludes = 0, +>NamespaceModuleExcludes : SymbolFlags + + MethodExcludes = 99263, +>MethodExcludes : SymbolFlags + + GetAccessorExcludes = 41919, +>GetAccessorExcludes : SymbolFlags + + SetAccessorExcludes = 74687, +>SetAccessorExcludes : SymbolFlags + + TypeParameterExcludes = 530912, +>TypeParameterExcludes : SymbolFlags + + TypeAliasExcludes = 793056, +>TypeAliasExcludes : SymbolFlags + + AliasExcludes = 8388608, +>AliasExcludes : SymbolFlags + + ModuleMember = 8914931, +>ModuleMember : SymbolFlags + + ExportHasLocal = 944, +>ExportHasLocal : SymbolFlags + + HasLocals = 255504, +>HasLocals : SymbolFlags + + HasExports = 1952, +>HasExports : SymbolFlags + + HasMembers = 6240, +>HasMembers : SymbolFlags + + IsContainer = 262128, +>IsContainer : SymbolFlags + + PropertyOrAccessor = 98308, +>PropertyOrAccessor : SymbolFlags + + Export = 7340032, +>Export : SymbolFlags + } + interface Symbol { +>Symbol : Symbol + + flags: SymbolFlags; +>flags : SymbolFlags +>SymbolFlags : SymbolFlags + + name: string; +>name : string + + id?: number; +>id : number + + mergeId?: number; +>mergeId : number + + declarations?: Declaration[]; +>declarations : Declaration[] +>Declaration : Declaration + + parent?: Symbol; +>parent : Symbol +>Symbol : Symbol + + members?: SymbolTable; +>members : SymbolTable +>SymbolTable : SymbolTable + + exports?: SymbolTable; +>exports : SymbolTable +>SymbolTable : SymbolTable + + exportSymbol?: Symbol; +>exportSymbol : Symbol +>Symbol : Symbol + + valueDeclaration?: Declaration; +>valueDeclaration : Declaration +>Declaration : Declaration + + constEnumOnlyModule?: boolean; +>constEnumOnlyModule : boolean + } + interface SymbolLinks { +>SymbolLinks : SymbolLinks + + target?: Symbol; +>target : Symbol +>Symbol : Symbol + + type?: Type; +>type : Type +>Type : Type + + declaredType?: Type; +>declaredType : Type +>Type : Type + + mapper?: TypeMapper; +>mapper : TypeMapper +>TypeMapper : TypeMapper + + referenced?: boolean; +>referenced : boolean + + unionType?: UnionType; +>unionType : UnionType +>UnionType : UnionType + + resolvedExports?: SymbolTable; +>resolvedExports : SymbolTable +>SymbolTable : SymbolTable + + exportsChecked?: boolean; +>exportsChecked : boolean + } + interface TransientSymbol extends Symbol, SymbolLinks { +>TransientSymbol : TransientSymbol +>Symbol : Symbol +>SymbolLinks : SymbolLinks + } + interface SymbolTable { +>SymbolTable : SymbolTable + + [index: string]: Symbol; +>index : string +>Symbol : Symbol + } + const enum NodeCheckFlags { +>NodeCheckFlags : NodeCheckFlags + + TypeChecked = 1, +>TypeChecked : NodeCheckFlags + + LexicalThis = 2, +>LexicalThis : NodeCheckFlags + + CaptureThis = 4, +>CaptureThis : NodeCheckFlags + + EmitExtends = 8, +>EmitExtends : NodeCheckFlags + + SuperInstance = 16, +>SuperInstance : NodeCheckFlags + + SuperStatic = 32, +>SuperStatic : NodeCheckFlags + + ContextChecked = 64, +>ContextChecked : NodeCheckFlags + + EnumValuesComputed = 128, +>EnumValuesComputed : NodeCheckFlags + + BlockScopedBindingInLoop = 256, +>BlockScopedBindingInLoop : NodeCheckFlags + + EmitDecorate = 512, +>EmitDecorate : NodeCheckFlags + } + interface NodeLinks { +>NodeLinks : NodeLinks + + resolvedType?: Type; +>resolvedType : Type +>Type : Type + + resolvedSignature?: Signature; +>resolvedSignature : Signature +>Signature : Signature + + resolvedSymbol?: Symbol; +>resolvedSymbol : Symbol +>Symbol : Symbol + + flags?: NodeCheckFlags; +>flags : NodeCheckFlags +>NodeCheckFlags : NodeCheckFlags + + enumMemberValue?: number; +>enumMemberValue : number + + isIllegalTypeReferenceInConstraint?: boolean; +>isIllegalTypeReferenceInConstraint : boolean + + isVisible?: boolean; +>isVisible : boolean + + generatedName?: string; +>generatedName : string + + generatedNames?: Map; +>generatedNames : Map +>Map : Map + + assignmentChecks?: Map; +>assignmentChecks : Map +>Map : Map + + hasReportedStatementInAmbientContext?: boolean; +>hasReportedStatementInAmbientContext : boolean + + importOnRightSide?: Symbol; +>importOnRightSide : Symbol +>Symbol : Symbol + } + const enum TypeFlags { +>TypeFlags : TypeFlags + + Any = 1, +>Any : TypeFlags + + String = 2, +>String : TypeFlags + + Number = 4, +>Number : TypeFlags + + Boolean = 8, +>Boolean : TypeFlags + + Void = 16, +>Void : TypeFlags + + Undefined = 32, +>Undefined : TypeFlags + + Null = 64, +>Null : TypeFlags + + Enum = 128, +>Enum : TypeFlags + + StringLiteral = 256, +>StringLiteral : TypeFlags + + TypeParameter = 512, +>TypeParameter : TypeFlags + + Class = 1024, +>Class : TypeFlags + + Interface = 2048, +>Interface : TypeFlags + + Reference = 4096, +>Reference : TypeFlags + + Tuple = 8192, +>Tuple : TypeFlags + + Union = 16384, +>Union : TypeFlags + + Anonymous = 32768, +>Anonymous : TypeFlags + + FromSignature = 65536, +>FromSignature : TypeFlags + + ObjectLiteral = 131072, +>ObjectLiteral : TypeFlags + + ContainsUndefinedOrNull = 262144, +>ContainsUndefinedOrNull : TypeFlags + + ContainsObjectLiteral = 524288, +>ContainsObjectLiteral : TypeFlags + + ESSymbol = 1048576, +>ESSymbol : TypeFlags + + Intrinsic = 1048703, +>Intrinsic : TypeFlags + + Primitive = 1049086, +>Primitive : TypeFlags + + StringLike = 258, +>StringLike : TypeFlags + + NumberLike = 132, +>NumberLike : TypeFlags + + ObjectType = 48128, +>ObjectType : TypeFlags + + RequiresWidening = 786432, +>RequiresWidening : TypeFlags + } + interface Type { +>Type : Type + + flags: TypeFlags; +>flags : TypeFlags +>TypeFlags : TypeFlags + + id: number; +>id : number + + symbol?: Symbol; +>symbol : Symbol +>Symbol : Symbol + } + interface IntrinsicType extends Type { +>IntrinsicType : IntrinsicType +>Type : Type + + intrinsicName: string; +>intrinsicName : string + } + interface StringLiteralType extends Type { +>StringLiteralType : StringLiteralType +>Type : Type + + text: string; +>text : string + } + interface ObjectType extends Type { +>ObjectType : ObjectType +>Type : Type + } + interface InterfaceType extends ObjectType { +>InterfaceType : InterfaceType +>ObjectType : ObjectType + + typeParameters: TypeParameter[]; +>typeParameters : TypeParameter[] +>TypeParameter : TypeParameter + + baseTypes: ObjectType[]; +>baseTypes : ObjectType[] +>ObjectType : ObjectType + + declaredProperties: Symbol[]; +>declaredProperties : Symbol[] +>Symbol : Symbol + + declaredCallSignatures: Signature[]; +>declaredCallSignatures : Signature[] +>Signature : Signature + + declaredConstructSignatures: Signature[]; +>declaredConstructSignatures : Signature[] +>Signature : Signature + + declaredStringIndexType: Type; +>declaredStringIndexType : Type +>Type : Type + + declaredNumberIndexType: Type; +>declaredNumberIndexType : Type +>Type : Type + } + interface TypeReference extends ObjectType { +>TypeReference : TypeReference +>ObjectType : ObjectType + + target: GenericType; +>target : GenericType +>GenericType : GenericType + + typeArguments: Type[]; +>typeArguments : Type[] +>Type : Type + } + interface GenericType extends InterfaceType, TypeReference { +>GenericType : GenericType +>InterfaceType : InterfaceType +>TypeReference : TypeReference + + instantiations: Map; +>instantiations : Map +>Map : Map +>TypeReference : TypeReference + } + interface TupleType extends ObjectType { +>TupleType : TupleType +>ObjectType : ObjectType + + elementTypes: Type[]; +>elementTypes : Type[] +>Type : Type + + baseArrayType: TypeReference; +>baseArrayType : TypeReference +>TypeReference : TypeReference + } + interface UnionType extends Type { +>UnionType : UnionType +>Type : Type + + types: Type[]; +>types : Type[] +>Type : Type + + resolvedProperties: SymbolTable; +>resolvedProperties : SymbolTable +>SymbolTable : SymbolTable + } + interface ResolvedType extends ObjectType, UnionType { +>ResolvedType : ResolvedType +>ObjectType : ObjectType +>UnionType : UnionType + + members: SymbolTable; +>members : SymbolTable +>SymbolTable : SymbolTable + + properties: Symbol[]; +>properties : Symbol[] +>Symbol : Symbol + + callSignatures: Signature[]; +>callSignatures : Signature[] +>Signature : Signature + + constructSignatures: Signature[]; +>constructSignatures : Signature[] +>Signature : Signature + + stringIndexType: Type; +>stringIndexType : Type +>Type : Type + + numberIndexType: Type; +>numberIndexType : Type +>Type : Type + } + interface TypeParameter extends Type { +>TypeParameter : TypeParameter +>Type : Type + + constraint: Type; +>constraint : Type +>Type : Type + + target?: TypeParameter; +>target : TypeParameter +>TypeParameter : TypeParameter + + mapper?: TypeMapper; +>mapper : TypeMapper +>TypeMapper : TypeMapper + } + const enum SignatureKind { +>SignatureKind : SignatureKind + + Call = 0, +>Call : SignatureKind + + Construct = 1, +>Construct : SignatureKind + } + interface Signature { +>Signature : Signature + + declaration: SignatureDeclaration; +>declaration : SignatureDeclaration +>SignatureDeclaration : SignatureDeclaration + + typeParameters: TypeParameter[]; +>typeParameters : TypeParameter[] +>TypeParameter : TypeParameter + + parameters: Symbol[]; +>parameters : Symbol[] +>Symbol : Symbol + + resolvedReturnType: Type; +>resolvedReturnType : Type +>Type : Type + + minArgumentCount: number; +>minArgumentCount : number + + hasRestParameter: boolean; +>hasRestParameter : boolean + + hasStringLiterals: boolean; +>hasStringLiterals : boolean + + target?: Signature; +>target : Signature +>Signature : Signature + + mapper?: TypeMapper; +>mapper : TypeMapper +>TypeMapper : TypeMapper + + unionSignatures?: Signature[]; +>unionSignatures : Signature[] +>Signature : Signature + + erasedSignatureCache?: Signature; +>erasedSignatureCache : Signature +>Signature : Signature + + isolatedSignatureType?: ObjectType; +>isolatedSignatureType : ObjectType +>ObjectType : ObjectType + } + const enum IndexKind { +>IndexKind : IndexKind + + String = 0, +>String : IndexKind + + Number = 1, +>Number : IndexKind + } + interface TypeMapper { +>TypeMapper : TypeMapper + + (t: Type): Type; +>t : Type +>Type : Type +>Type : Type + } + interface DiagnosticMessage { +>DiagnosticMessage : DiagnosticMessage + + key: string; +>key : string + + category: DiagnosticCategory; +>category : DiagnosticCategory +>DiagnosticCategory : DiagnosticCategory + + code: number; +>code : number + } + interface DiagnosticMessageChain { +>DiagnosticMessageChain : DiagnosticMessageChain + + messageText: string; +>messageText : string + + category: DiagnosticCategory; +>category : DiagnosticCategory +>DiagnosticCategory : DiagnosticCategory + + code: number; +>code : number + + next?: DiagnosticMessageChain; +>next : DiagnosticMessageChain +>DiagnosticMessageChain : DiagnosticMessageChain + } + interface Diagnostic { +>Diagnostic : Diagnostic + + file: SourceFile; +>file : SourceFile +>SourceFile : SourceFile + + start: number; +>start : number + + length: number; +>length : number + + messageText: string | DiagnosticMessageChain; +>messageText : string | DiagnosticMessageChain +>DiagnosticMessageChain : DiagnosticMessageChain + + category: DiagnosticCategory; +>category : DiagnosticCategory +>DiagnosticCategory : DiagnosticCategory + + code: number; +>code : number + } + enum DiagnosticCategory { +>DiagnosticCategory : DiagnosticCategory + + Warning = 0, +>Warning : DiagnosticCategory + + Error = 1, +>Error : DiagnosticCategory + + Message = 2, +>Message : DiagnosticCategory + } + interface CompilerOptions { +>CompilerOptions : CompilerOptions + + allowNonTsExtensions?: boolean; +>allowNonTsExtensions : boolean + + charset?: string; +>charset : string + + declaration?: boolean; +>declaration : boolean + + diagnostics?: boolean; +>diagnostics : boolean + + emitBOM?: boolean; +>emitBOM : boolean + + help?: boolean; +>help : boolean + + listFiles?: boolean; +>listFiles : boolean + + locale?: string; +>locale : string + + mapRoot?: string; +>mapRoot : string + + module?: ModuleKind; +>module : ModuleKind +>ModuleKind : ModuleKind + + noEmit?: boolean; +>noEmit : boolean + + noEmitOnError?: boolean; +>noEmitOnError : boolean + + noErrorTruncation?: boolean; +>noErrorTruncation : boolean + + noImplicitAny?: boolean; +>noImplicitAny : boolean + + noLib?: boolean; +>noLib : boolean + + noResolve?: boolean; +>noResolve : boolean + + out?: string; +>out : string + + outDir?: string; +>outDir : string + + preserveConstEnums?: boolean; +>preserveConstEnums : boolean + + project?: string; +>project : string + + removeComments?: boolean; +>removeComments : boolean + + sourceMap?: boolean; +>sourceMap : boolean + + sourceRoot?: string; +>sourceRoot : string + + suppressImplicitAnyIndexErrors?: boolean; +>suppressImplicitAnyIndexErrors : boolean + + target?: ScriptTarget; +>target : ScriptTarget +>ScriptTarget : ScriptTarget + + version?: boolean; +>version : boolean + + watch?: boolean; +>watch : boolean + + separateCompilation?: boolean; +>separateCompilation : boolean + + [option: string]: string | number | boolean; +>option : string + } + const enum ModuleKind { +>ModuleKind : ModuleKind + + None = 0, +>None : ModuleKind + + CommonJS = 1, +>CommonJS : ModuleKind + + AMD = 2, +>AMD : ModuleKind + } + interface LineAndCharacter { +>LineAndCharacter : LineAndCharacter + + line: number; +>line : number + + character: number; +>character : number + } + const enum ScriptTarget { +>ScriptTarget : ScriptTarget + + ES3 = 0, +>ES3 : ScriptTarget + + ES5 = 1, +>ES5 : ScriptTarget + + ES6 = 2, +>ES6 : ScriptTarget + + Latest = 2, +>Latest : ScriptTarget + } + interface ParsedCommandLine { +>ParsedCommandLine : ParsedCommandLine + + options: CompilerOptions; +>options : CompilerOptions +>CompilerOptions : CompilerOptions + + fileNames: string[]; +>fileNames : string[] + + errors: Diagnostic[]; +>errors : Diagnostic[] +>Diagnostic : Diagnostic + } + interface CommandLineOption { +>CommandLineOption : CommandLineOption + + name: string; +>name : string + + type: string | Map; +>type : string | Map +>Map : Map + + isFilePath?: boolean; +>isFilePath : boolean + + shortName?: string; +>shortName : string + + description?: DiagnosticMessage; +>description : DiagnosticMessage +>DiagnosticMessage : DiagnosticMessage + + paramType?: DiagnosticMessage; +>paramType : DiagnosticMessage +>DiagnosticMessage : DiagnosticMessage + + error?: DiagnosticMessage; +>error : DiagnosticMessage +>DiagnosticMessage : DiagnosticMessage + + experimental?: boolean; +>experimental : boolean + } + const enum CharacterCodes { +>CharacterCodes : CharacterCodes + + nullCharacter = 0, +>nullCharacter : CharacterCodes + + maxAsciiCharacter = 127, +>maxAsciiCharacter : CharacterCodes + + lineFeed = 10, +>lineFeed : CharacterCodes + + carriageReturn = 13, +>carriageReturn : CharacterCodes + + lineSeparator = 8232, +>lineSeparator : CharacterCodes + + paragraphSeparator = 8233, +>paragraphSeparator : CharacterCodes + + nextLine = 133, +>nextLine : CharacterCodes + + space = 32, +>space : CharacterCodes + + nonBreakingSpace = 160, +>nonBreakingSpace : CharacterCodes + + enQuad = 8192, +>enQuad : CharacterCodes + + emQuad = 8193, +>emQuad : CharacterCodes + + enSpace = 8194, +>enSpace : CharacterCodes + + emSpace = 8195, +>emSpace : CharacterCodes + + threePerEmSpace = 8196, +>threePerEmSpace : CharacterCodes + + fourPerEmSpace = 8197, +>fourPerEmSpace : CharacterCodes + + sixPerEmSpace = 8198, +>sixPerEmSpace : CharacterCodes + + figureSpace = 8199, +>figureSpace : CharacterCodes + + punctuationSpace = 8200, +>punctuationSpace : CharacterCodes + + thinSpace = 8201, +>thinSpace : CharacterCodes + + hairSpace = 8202, +>hairSpace : CharacterCodes + + zeroWidthSpace = 8203, +>zeroWidthSpace : CharacterCodes + + narrowNoBreakSpace = 8239, +>narrowNoBreakSpace : CharacterCodes + + ideographicSpace = 12288, +>ideographicSpace : CharacterCodes + + mathematicalSpace = 8287, +>mathematicalSpace : CharacterCodes + + ogham = 5760, +>ogham : CharacterCodes + + _ = 95, +>_ : CharacterCodes + + $ = 36, +>$ : CharacterCodes + + _0 = 48, +>_0 : CharacterCodes + + _1 = 49, +>_1 : CharacterCodes + + _2 = 50, +>_2 : CharacterCodes + + _3 = 51, +>_3 : CharacterCodes + + _4 = 52, +>_4 : CharacterCodes + + _5 = 53, +>_5 : CharacterCodes + + _6 = 54, +>_6 : CharacterCodes + + _7 = 55, +>_7 : CharacterCodes + + _8 = 56, +>_8 : CharacterCodes + + _9 = 57, +>_9 : CharacterCodes + + a = 97, +>a : CharacterCodes + + b = 98, +>b : CharacterCodes + + c = 99, +>c : CharacterCodes + + d = 100, +>d : CharacterCodes + + e = 101, +>e : CharacterCodes + + f = 102, +>f : CharacterCodes + + g = 103, +>g : CharacterCodes + + h = 104, +>h : CharacterCodes + + i = 105, +>i : CharacterCodes + + j = 106, +>j : CharacterCodes + + k = 107, +>k : CharacterCodes + + l = 108, +>l : CharacterCodes + + m = 109, +>m : CharacterCodes + + n = 110, +>n : CharacterCodes + + o = 111, +>o : CharacterCodes + + p = 112, +>p : CharacterCodes + + q = 113, +>q : CharacterCodes + + r = 114, +>r : CharacterCodes + + s = 115, +>s : CharacterCodes + + t = 116, +>t : CharacterCodes + + u = 117, +>u : CharacterCodes + + v = 118, +>v : CharacterCodes + + w = 119, +>w : CharacterCodes + + x = 120, +>x : CharacterCodes + + y = 121, +>y : CharacterCodes + + z = 122, +>z : CharacterCodes + + A = 65, +>A : CharacterCodes + + B = 66, +>B : CharacterCodes + + C = 67, +>C : CharacterCodes + + D = 68, +>D : CharacterCodes + + E = 69, +>E : CharacterCodes + + F = 70, +>F : CharacterCodes + + G = 71, +>G : CharacterCodes + + H = 72, +>H : CharacterCodes + + I = 73, +>I : CharacterCodes + + J = 74, +>J : CharacterCodes + + K = 75, +>K : CharacterCodes + + L = 76, +>L : CharacterCodes + + M = 77, +>M : CharacterCodes + + N = 78, +>N : CharacterCodes + + O = 79, +>O : CharacterCodes + + P = 80, +>P : CharacterCodes + + Q = 81, +>Q : CharacterCodes + + R = 82, +>R : CharacterCodes + + S = 83, +>S : CharacterCodes + + T = 84, +>T : CharacterCodes + + U = 85, +>U : CharacterCodes + + V = 86, +>V : CharacterCodes + + W = 87, +>W : CharacterCodes + + X = 88, +>X : CharacterCodes + + Y = 89, +>Y : CharacterCodes + + Z = 90, +>Z : CharacterCodes + + ampersand = 38, +>ampersand : CharacterCodes + + asterisk = 42, +>asterisk : CharacterCodes + + at = 64, +>at : CharacterCodes + + backslash = 92, +>backslash : CharacterCodes + + backtick = 96, +>backtick : CharacterCodes + + bar = 124, +>bar : CharacterCodes + + caret = 94, +>caret : CharacterCodes + + closeBrace = 125, +>closeBrace : CharacterCodes + + closeBracket = 93, +>closeBracket : CharacterCodes + + closeParen = 41, +>closeParen : CharacterCodes + + colon = 58, +>colon : CharacterCodes + + comma = 44, +>comma : CharacterCodes + + dot = 46, +>dot : CharacterCodes + + doubleQuote = 34, +>doubleQuote : CharacterCodes + + equals = 61, +>equals : CharacterCodes + + exclamation = 33, +>exclamation : CharacterCodes + + greaterThan = 62, +>greaterThan : CharacterCodes + + hash = 35, +>hash : CharacterCodes + + lessThan = 60, +>lessThan : CharacterCodes + + minus = 45, +>minus : CharacterCodes + + openBrace = 123, +>openBrace : CharacterCodes + + openBracket = 91, +>openBracket : CharacterCodes + + openParen = 40, +>openParen : CharacterCodes + + percent = 37, +>percent : CharacterCodes + + plus = 43, +>plus : CharacterCodes + + question = 63, +>question : CharacterCodes + + semicolon = 59, +>semicolon : CharacterCodes + + singleQuote = 39, +>singleQuote : CharacterCodes + + slash = 47, +>slash : CharacterCodes + + tilde = 126, +>tilde : CharacterCodes + + backspace = 8, +>backspace : CharacterCodes + + formFeed = 12, +>formFeed : CharacterCodes + + byteOrderMark = 65279, +>byteOrderMark : CharacterCodes + + tab = 9, +>tab : CharacterCodes + + verticalTab = 11, +>verticalTab : CharacterCodes + } + interface CancellationToken { +>CancellationToken : CancellationToken + + isCancellationRequested(): boolean; +>isCancellationRequested : () => boolean + } + interface CompilerHost { +>CompilerHost : CompilerHost + + getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile; +>getSourceFile : (fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void) => SourceFile +>fileName : string +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget +>onError : (message: string) => void +>message : string +>SourceFile : SourceFile + + getDefaultLibFileName(options: CompilerOptions): string; +>getDefaultLibFileName : (options: CompilerOptions) => string +>options : CompilerOptions +>CompilerOptions : CompilerOptions + + getCancellationToken?(): CancellationToken; +>getCancellationToken : () => CancellationToken +>CancellationToken : CancellationToken + + writeFile: WriteFileCallback; +>writeFile : WriteFileCallback +>WriteFileCallback : WriteFileCallback + + getCurrentDirectory(): string; +>getCurrentDirectory : () => string + + getCanonicalFileName(fileName: string): string; +>getCanonicalFileName : (fileName: string) => string +>fileName : string + + useCaseSensitiveFileNames(): boolean; +>useCaseSensitiveFileNames : () => boolean + + getNewLine(): string; +>getNewLine : () => string + } + interface TextSpan { +>TextSpan : TextSpan + + start: number; +>start : number + + length: number; +>length : number + } + interface TextChangeRange { +>TextChangeRange : TextChangeRange + + span: TextSpan; +>span : TextSpan +>TextSpan : TextSpan + + newLength: number; +>newLength : number + } +} +declare module "typescript" { + interface ErrorCallback { +>ErrorCallback : ErrorCallback + + (message: DiagnosticMessage, length: number): void; +>message : DiagnosticMessage +>DiagnosticMessage : DiagnosticMessage +>length : number + } + interface Scanner { +>Scanner : Scanner + + getStartPos(): number; +>getStartPos : () => number + + getToken(): SyntaxKind; +>getToken : () => SyntaxKind +>SyntaxKind : SyntaxKind + + getTextPos(): number; +>getTextPos : () => number + + getTokenPos(): number; +>getTokenPos : () => number + + getTokenText(): string; +>getTokenText : () => string + + getTokenValue(): string; +>getTokenValue : () => string + + hasExtendedUnicodeEscape(): boolean; +>hasExtendedUnicodeEscape : () => boolean + + hasPrecedingLineBreak(): boolean; +>hasPrecedingLineBreak : () => boolean + + isIdentifier(): boolean; +>isIdentifier : () => boolean + + isReservedWord(): boolean; +>isReservedWord : () => boolean + + isUnterminated(): boolean; +>isUnterminated : () => boolean + + reScanGreaterToken(): SyntaxKind; +>reScanGreaterToken : () => SyntaxKind +>SyntaxKind : SyntaxKind + + reScanSlashToken(): SyntaxKind; +>reScanSlashToken : () => SyntaxKind +>SyntaxKind : SyntaxKind + + reScanTemplateToken(): SyntaxKind; +>reScanTemplateToken : () => SyntaxKind +>SyntaxKind : SyntaxKind + + scan(): SyntaxKind; +>scan : () => SyntaxKind +>SyntaxKind : SyntaxKind + + setText(text: string): void; +>setText : (text: string) => void +>text : string + + setTextPos(textPos: number): void; +>setTextPos : (textPos: number) => void +>textPos : number + + lookAhead(callback: () => T): T; +>lookAhead : (callback: () => T) => T +>T : T +>callback : () => T +>T : T +>T : T + + tryScan(callback: () => T): T; +>tryScan : (callback: () => T) => T +>T : T +>callback : () => T +>T : T +>T : T + } + function tokenToString(t: SyntaxKind): string; +>tokenToString : (t: SyntaxKind) => string +>t : SyntaxKind +>SyntaxKind : SyntaxKind + + function computeLineStarts(text: string): number[]; +>computeLineStarts : (text: string) => number[] +>text : string + + function getPositionOfLineAndCharacter(sourceFile: SourceFile, line: number, character: number): number; +>getPositionOfLineAndCharacter : (sourceFile: SourceFile, line: number, character: number) => number +>sourceFile : SourceFile +>SourceFile : SourceFile +>line : number +>character : number + + function computePositionOfLineAndCharacter(lineStarts: number[], line: number, character: number): number; +>computePositionOfLineAndCharacter : (lineStarts: number[], line: number, character: number) => number +>lineStarts : number[] +>line : number +>character : number + + function getLineStarts(sourceFile: SourceFile): number[]; +>getLineStarts : (sourceFile: SourceFile) => number[] +>sourceFile : SourceFile +>SourceFile : SourceFile + + function computeLineAndCharacterOfPosition(lineStarts: number[], position: number): { +>computeLineAndCharacterOfPosition : (lineStarts: number[], position: number) => { line: number; character: number; } +>lineStarts : number[] +>position : number + + line: number; +>line : number + + character: number; +>character : number + + }; + function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter; +>getLineAndCharacterOfPosition : (sourceFile: SourceFile, position: number) => LineAndCharacter +>sourceFile : SourceFile +>SourceFile : SourceFile +>position : number +>LineAndCharacter : LineAndCharacter + + function isWhiteSpace(ch: number): boolean; +>isWhiteSpace : (ch: number) => boolean +>ch : number + + function isLineBreak(ch: number): boolean; +>isLineBreak : (ch: number) => boolean +>ch : number + + function isOctalDigit(ch: number): boolean; +>isOctalDigit : (ch: number) => boolean +>ch : number + + function skipTrivia(text: string, pos: number, stopAfterLineBreak?: boolean): number; +>skipTrivia : (text: string, pos: number, stopAfterLineBreak?: boolean) => number +>text : string +>pos : number +>stopAfterLineBreak : boolean + + function getLeadingCommentRanges(text: string, pos: number): CommentRange[]; +>getLeadingCommentRanges : (text: string, pos: number) => CommentRange[] +>text : string +>pos : number +>CommentRange : CommentRange + + function getTrailingCommentRanges(text: string, pos: number): CommentRange[]; +>getTrailingCommentRanges : (text: string, pos: number) => CommentRange[] +>text : string +>pos : number +>CommentRange : CommentRange + + function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean; +>isIdentifierStart : (ch: number, languageVersion: ScriptTarget) => boolean +>ch : number +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget + + function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean; +>isIdentifierPart : (ch: number, languageVersion: ScriptTarget) => boolean +>ch : number +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget + + function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback): Scanner; +>createScanner : (languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback) => Scanner +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget +>skipTrivia : boolean +>text : string +>onError : ErrorCallback +>ErrorCallback : ErrorCallback +>Scanner : Scanner +} +declare module "typescript" { + function getNodeConstructor(kind: SyntaxKind): new () => Node; +>getNodeConstructor : (kind: SyntaxKind) => new () => Node +>kind : SyntaxKind +>SyntaxKind : SyntaxKind +>Node : Node + + function createNode(kind: SyntaxKind): Node; +>createNode : (kind: SyntaxKind) => Node +>kind : SyntaxKind +>SyntaxKind : SyntaxKind +>Node : Node + + function forEachChild(node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T; +>forEachChild : (node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T) => T +>T : T +>node : Node +>Node : Node +>cbNode : (node: Node) => T +>node : Node +>Node : Node +>T : T +>cbNodeArray : (nodes: Node[]) => T +>nodes : Node[] +>Node : Node +>T : T +>T : T + + function modifierToFlag(token: SyntaxKind): NodeFlags; +>modifierToFlag : (token: SyntaxKind) => NodeFlags +>token : SyntaxKind +>SyntaxKind : SyntaxKind +>NodeFlags : NodeFlags + + function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; +>updateSourceFile : (sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean) => SourceFile +>sourceFile : SourceFile +>SourceFile : SourceFile +>newText : string +>textChangeRange : TextChangeRange +>TextChangeRange : TextChangeRange +>aggressiveChecks : boolean +>SourceFile : SourceFile + + function isEvalOrArgumentsIdentifier(node: Node): boolean; +>isEvalOrArgumentsIdentifier : (node: Node) => boolean +>node : Node +>Node : Node + + function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean): SourceFile; +>createSourceFile : (fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean) => SourceFile +>fileName : string +>sourceText : string +>languageVersion : ScriptTarget +>ScriptTarget : ScriptTarget +>setParentNodes : boolean +>SourceFile : SourceFile + + function isLeftHandSideExpression(expr: Expression): boolean; +>isLeftHandSideExpression : (expr: Expression) => boolean +>expr : Expression +>Expression : Expression + + function isAssignmentOperator(token: SyntaxKind): boolean; +>isAssignmentOperator : (token: SyntaxKind) => boolean +>token : SyntaxKind +>SyntaxKind : SyntaxKind +} +declare module "typescript" { + function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; +>createTypeChecker : (host: TypeCheckerHost, produceDiagnostics: boolean) => TypeChecker +>host : TypeCheckerHost +>TypeCheckerHost : TypeCheckerHost +>produceDiagnostics : boolean +>TypeChecker : TypeChecker +} +declare module "typescript" { + /** The version of the TypeScript compiler release */ + let version: string; +>version : string + + function findConfigFile(searchPath: string): string; +>findConfigFile : (searchPath: string) => string +>searchPath : string + + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; +>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost +>options : CompilerOptions +>CompilerOptions : CompilerOptions +>setParentNodes : boolean +>CompilerHost : CompilerHost + + function getPreEmitDiagnostics(program: Program): Diagnostic[]; +>getPreEmitDiagnostics : (program: Program) => Diagnostic[] +>program : Program +>Program : Program +>Diagnostic : Diagnostic + + function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; +>flattenDiagnosticMessageText : (messageText: string | DiagnosticMessageChain, newLine: string) => string +>messageText : string | DiagnosticMessageChain +>DiagnosticMessageChain : DiagnosticMessageChain +>newLine : string + + function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; +>createProgram : (rootNames: string[], options: CompilerOptions, host?: CompilerHost) => Program +>rootNames : string[] +>options : CompilerOptions +>CompilerOptions : CompilerOptions +>host : CompilerHost +>CompilerHost : CompilerHost +>Program : Program +} +declare module "typescript" { + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; +>readConfigFile : (fileName: string) => any +>fileName : string + + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine +>json : any +>basePath : string +>ParsedCommandLine : ParsedCommandLine +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; +>servicesVersion : string + + interface Node { +>Node : Node + + getSourceFile(): SourceFile; +>getSourceFile : () => SourceFile +>SourceFile : SourceFile + + getChildCount(sourceFile?: SourceFile): number; +>getChildCount : (sourceFile?: SourceFile) => number +>sourceFile : SourceFile +>SourceFile : SourceFile + + getChildAt(index: number, sourceFile?: SourceFile): Node; +>getChildAt : (index: number, sourceFile?: SourceFile) => Node +>index : number +>sourceFile : SourceFile +>SourceFile : SourceFile +>Node : Node + + getChildren(sourceFile?: SourceFile): Node[]; +>getChildren : (sourceFile?: SourceFile) => Node[] +>sourceFile : SourceFile +>SourceFile : SourceFile +>Node : Node + + getStart(sourceFile?: SourceFile): number; +>getStart : (sourceFile?: SourceFile) => number +>sourceFile : SourceFile +>SourceFile : SourceFile + + getFullStart(): number; +>getFullStart : () => number + + getEnd(): number; +>getEnd : () => number + + getWidth(sourceFile?: SourceFile): number; +>getWidth : (sourceFile?: SourceFile) => number +>sourceFile : SourceFile +>SourceFile : SourceFile + + getFullWidth(): number; +>getFullWidth : () => number + + getLeadingTriviaWidth(sourceFile?: SourceFile): number; +>getLeadingTriviaWidth : (sourceFile?: SourceFile) => number +>sourceFile : SourceFile +>SourceFile : SourceFile + + getFullText(sourceFile?: SourceFile): string; +>getFullText : (sourceFile?: SourceFile) => string +>sourceFile : SourceFile +>SourceFile : SourceFile + + getText(sourceFile?: SourceFile): string; +>getText : (sourceFile?: SourceFile) => string +>sourceFile : SourceFile +>SourceFile : SourceFile + + getFirstToken(sourceFile?: SourceFile): Node; +>getFirstToken : (sourceFile?: SourceFile) => Node +>sourceFile : SourceFile +>SourceFile : SourceFile +>Node : Node + + getLastToken(sourceFile?: SourceFile): Node; +>getLastToken : (sourceFile?: SourceFile) => Node +>sourceFile : SourceFile +>SourceFile : SourceFile +>Node : Node + } + interface Symbol { +>Symbol : Symbol + + getFlags(): SymbolFlags; +>getFlags : () => SymbolFlags +>SymbolFlags : SymbolFlags + + getName(): string; +>getName : () => string + + getDeclarations(): Declaration[]; +>getDeclarations : () => Declaration[] +>Declaration : Declaration + + getDocumentationComment(): SymbolDisplayPart[]; +>getDocumentationComment : () => SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + interface Type { +>Type : Type + + getFlags(): TypeFlags; +>getFlags : () => TypeFlags +>TypeFlags : TypeFlags + + getSymbol(): Symbol; +>getSymbol : () => Symbol +>Symbol : Symbol + + getProperties(): Symbol[]; +>getProperties : () => Symbol[] +>Symbol : Symbol + + getProperty(propertyName: string): Symbol; +>getProperty : (propertyName: string) => Symbol +>propertyName : string +>Symbol : Symbol + + getApparentProperties(): Symbol[]; +>getApparentProperties : () => Symbol[] +>Symbol : Symbol + + getCallSignatures(): Signature[]; +>getCallSignatures : () => Signature[] +>Signature : Signature + + getConstructSignatures(): Signature[]; +>getConstructSignatures : () => Signature[] +>Signature : Signature + + getStringIndexType(): Type; +>getStringIndexType : () => Type +>Type : Type + + getNumberIndexType(): Type; +>getNumberIndexType : () => Type +>Type : Type + } + interface Signature { +>Signature : Signature + + getDeclaration(): SignatureDeclaration; +>getDeclaration : () => SignatureDeclaration +>SignatureDeclaration : SignatureDeclaration + + getTypeParameters(): Type[]; +>getTypeParameters : () => Type[] +>Type : Type + + getParameters(): Symbol[]; +>getParameters : () => Symbol[] +>Symbol : Symbol + + getReturnType(): Type; +>getReturnType : () => Type +>Type : Type + + getDocumentationComment(): SymbolDisplayPart[]; +>getDocumentationComment : () => SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + interface SourceFile { +>SourceFile : SourceFile + + getNamedDeclarations(): Declaration[]; +>getNamedDeclarations : () => Declaration[] +>Declaration : Declaration + + getLineAndCharacterOfPosition(pos: number): LineAndCharacter; +>getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter +>pos : number +>LineAndCharacter : LineAndCharacter + + getLineStarts(): number[]; +>getLineStarts : () => number[] + + getPositionOfLineAndCharacter(line: number, character: number): number; +>getPositionOfLineAndCharacter : (line: number, character: number) => number +>line : number +>character : number + + update(newText: string, textChangeRange: TextChangeRange): SourceFile; +>update : (newText: string, textChangeRange: TextChangeRange) => SourceFile +>newText : string +>textChangeRange : TextChangeRange +>TextChangeRange : TextChangeRange +>SourceFile : SourceFile + } + /** + * Represents an immutable snapshot of a script at a specified time.Once acquired, the + * snapshot is observably immutable. i.e. the same calls with the same parameters will return + * the same values. + */ + interface IScriptSnapshot { +>IScriptSnapshot : IScriptSnapshot + + /** Gets a portion of the script snapshot specified by [start, end). */ + getText(start: number, end: number): string; +>getText : (start: number, end: number) => string +>start : number +>end : number + + /** Gets the length of this script snapshot. */ + getLength(): number; +>getLength : () => number + + /** + * Gets the TextChangeRange that describe how the text changed between this text and + * an older version. This information is used by the incremental parser to determine + * what sections of the script need to be re-parsed. 'undefined' can be returned if the + * change range cannot be determined. However, in that case, incremental parsing will + * not happen and the entire document will be re - parsed. + */ + getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange; +>getChangeRange : (oldSnapshot: IScriptSnapshot) => TextChangeRange +>oldSnapshot : IScriptSnapshot +>IScriptSnapshot : IScriptSnapshot +>TextChangeRange : TextChangeRange + } + module ScriptSnapshot { +>ScriptSnapshot : typeof ScriptSnapshot + + function fromString(text: string): IScriptSnapshot; +>fromString : (text: string) => IScriptSnapshot +>text : string +>IScriptSnapshot : IScriptSnapshot + } + interface PreProcessedFileInfo { +>PreProcessedFileInfo : PreProcessedFileInfo + + referencedFiles: FileReference[]; +>referencedFiles : FileReference[] +>FileReference : FileReference + + importedFiles: FileReference[]; +>importedFiles : FileReference[] +>FileReference : FileReference + + isLibFile: boolean; +>isLibFile : boolean + } + interface LanguageServiceHost { +>LanguageServiceHost : LanguageServiceHost + + getCompilationSettings(): CompilerOptions; +>getCompilationSettings : () => CompilerOptions +>CompilerOptions : CompilerOptions + + getNewLine?(): string; +>getNewLine : () => string + + getScriptFileNames(): string[]; +>getScriptFileNames : () => string[] + + getScriptVersion(fileName: string): string; +>getScriptVersion : (fileName: string) => string +>fileName : string + + getScriptSnapshot(fileName: string): IScriptSnapshot; +>getScriptSnapshot : (fileName: string) => IScriptSnapshot +>fileName : string +>IScriptSnapshot : IScriptSnapshot + + getLocalizedDiagnosticMessages?(): any; +>getLocalizedDiagnosticMessages : () => any + + getCancellationToken?(): CancellationToken; +>getCancellationToken : () => CancellationToken +>CancellationToken : CancellationToken + + getCurrentDirectory(): string; +>getCurrentDirectory : () => string + + getDefaultLibFileName(options: CompilerOptions): string; +>getDefaultLibFileName : (options: CompilerOptions) => string +>options : CompilerOptions +>CompilerOptions : CompilerOptions + + log?(s: string): void; +>log : (s: string) => void +>s : string + + trace?(s: string): void; +>trace : (s: string) => void +>s : string + + error?(s: string): void; +>error : (s: string) => void +>s : string + } + interface LanguageService { +>LanguageService : LanguageService + + cleanupSemanticCache(): void; +>cleanupSemanticCache : () => void + + getSyntacticDiagnostics(fileName: string): Diagnostic[]; +>getSyntacticDiagnostics : (fileName: string) => Diagnostic[] +>fileName : string +>Diagnostic : Diagnostic + + getSemanticDiagnostics(fileName: string): Diagnostic[]; +>getSemanticDiagnostics : (fileName: string) => Diagnostic[] +>fileName : string +>Diagnostic : Diagnostic + + getCompilerOptionsDiagnostics(): Diagnostic[]; +>getCompilerOptionsDiagnostics : () => Diagnostic[] +>Diagnostic : Diagnostic + + getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[]; +>getSyntacticClassifications : (fileName: string, span: TextSpan) => ClassifiedSpan[] +>fileName : string +>span : TextSpan +>TextSpan : TextSpan +>ClassifiedSpan : ClassifiedSpan + + getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[]; +>getSemanticClassifications : (fileName: string, span: TextSpan) => ClassifiedSpan[] +>fileName : string +>span : TextSpan +>TextSpan : TextSpan +>ClassifiedSpan : ClassifiedSpan + + getCompletionsAtPosition(fileName: string, position: number): CompletionInfo; +>getCompletionsAtPosition : (fileName: string, position: number) => CompletionInfo +>fileName : string +>position : number +>CompletionInfo : CompletionInfo + + getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails; +>getCompletionEntryDetails : (fileName: string, position: number, entryName: string) => CompletionEntryDetails +>fileName : string +>position : number +>entryName : string +>CompletionEntryDetails : CompletionEntryDetails + + getQuickInfoAtPosition(fileName: string, position: number): QuickInfo; +>getQuickInfoAtPosition : (fileName: string, position: number) => QuickInfo +>fileName : string +>position : number +>QuickInfo : QuickInfo + + getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan; +>getNameOrDottedNameSpan : (fileName: string, startPos: number, endPos: number) => TextSpan +>fileName : string +>startPos : number +>endPos : number +>TextSpan : TextSpan + + getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan; +>getBreakpointStatementAtPosition : (fileName: string, position: number) => TextSpan +>fileName : string +>position : number +>TextSpan : TextSpan + + getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems; +>getSignatureHelpItems : (fileName: string, position: number) => SignatureHelpItems +>fileName : string +>position : number +>SignatureHelpItems : SignatureHelpItems + + getRenameInfo(fileName: string, position: number): RenameInfo; +>getRenameInfo : (fileName: string, position: number) => RenameInfo +>fileName : string +>position : number +>RenameInfo : RenameInfo + + findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[]; +>findRenameLocations : (fileName: string, position: number, findInStrings: boolean, findInComments: boolean) => RenameLocation[] +>fileName : string +>position : number +>findInStrings : boolean +>findInComments : boolean +>RenameLocation : RenameLocation + + getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; +>getDefinitionAtPosition : (fileName: string, position: number) => DefinitionInfo[] +>fileName : string +>position : number +>DefinitionInfo : DefinitionInfo + + getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; +>getReferencesAtPosition : (fileName: string, position: number) => ReferenceEntry[] +>fileName : string +>position : number +>ReferenceEntry : ReferenceEntry + + getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; +>getOccurrencesAtPosition : (fileName: string, position: number) => ReferenceEntry[] +>fileName : string +>position : number +>ReferenceEntry : ReferenceEntry + + findReferences(fileName: string, position: number): ReferencedSymbol[]; +>findReferences : (fileName: string, position: number) => ReferencedSymbol[] +>fileName : string +>position : number +>ReferencedSymbol : ReferencedSymbol + + getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; +>getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[] +>searchValue : string +>maxResultCount : number +>NavigateToItem : NavigateToItem + + getNavigationBarItems(fileName: string): NavigationBarItem[]; +>getNavigationBarItems : (fileName: string) => NavigationBarItem[] +>fileName : string +>NavigationBarItem : NavigationBarItem + + getOutliningSpans(fileName: string): OutliningSpan[]; +>getOutliningSpans : (fileName: string) => OutliningSpan[] +>fileName : string +>OutliningSpan : OutliningSpan + + getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[]; +>getTodoComments : (fileName: string, descriptors: TodoCommentDescriptor[]) => TodoComment[] +>fileName : string +>descriptors : TodoCommentDescriptor[] +>TodoCommentDescriptor : TodoCommentDescriptor +>TodoComment : TodoComment + + getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[]; +>getBraceMatchingAtPosition : (fileName: string, position: number) => TextSpan[] +>fileName : string +>position : number +>TextSpan : TextSpan + + getIndentationAtPosition(fileName: string, position: number, options: EditorOptions): number; +>getIndentationAtPosition : (fileName: string, position: number, options: EditorOptions) => number +>fileName : string +>position : number +>options : EditorOptions +>EditorOptions : EditorOptions + + getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions): TextChange[]; +>getFormattingEditsForRange : (fileName: string, start: number, end: number, options: FormatCodeOptions) => TextChange[] +>fileName : string +>start : number +>end : number +>options : FormatCodeOptions +>FormatCodeOptions : FormatCodeOptions +>TextChange : TextChange + + getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions): TextChange[]; +>getFormattingEditsForDocument : (fileName: string, options: FormatCodeOptions) => TextChange[] +>fileName : string +>options : FormatCodeOptions +>FormatCodeOptions : FormatCodeOptions +>TextChange : TextChange + + getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions): TextChange[]; +>getFormattingEditsAfterKeystroke : (fileName: string, position: number, key: string, options: FormatCodeOptions) => TextChange[] +>fileName : string +>position : number +>key : string +>options : FormatCodeOptions +>FormatCodeOptions : FormatCodeOptions +>TextChange : TextChange + + getEmitOutput(fileName: string): EmitOutput; +>getEmitOutput : (fileName: string) => EmitOutput +>fileName : string +>EmitOutput : EmitOutput + + getProgram(): Program; +>getProgram : () => Program +>Program : Program + + getSourceFile(fileName: string): SourceFile; +>getSourceFile : (fileName: string) => SourceFile +>fileName : string +>SourceFile : SourceFile + + dispose(): void; +>dispose : () => void + } + interface ClassifiedSpan { +>ClassifiedSpan : ClassifiedSpan + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + classificationType: string; +>classificationType : string + } + interface NavigationBarItem { +>NavigationBarItem : NavigationBarItem + + text: string; +>text : string + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + spans: TextSpan[]; +>spans : TextSpan[] +>TextSpan : TextSpan + + childItems: NavigationBarItem[]; +>childItems : NavigationBarItem[] +>NavigationBarItem : NavigationBarItem + + indent: number; +>indent : number + + bolded: boolean; +>bolded : boolean + + grayed: boolean; +>grayed : boolean + } + interface TodoCommentDescriptor { +>TodoCommentDescriptor : TodoCommentDescriptor + + text: string; +>text : string + + priority: number; +>priority : number + } + interface TodoComment { +>TodoComment : TodoComment + + descriptor: TodoCommentDescriptor; +>descriptor : TodoCommentDescriptor +>TodoCommentDescriptor : TodoCommentDescriptor + + message: string; +>message : string + + position: number; +>position : number + } + class TextChange { +>TextChange : TextChange + + span: TextSpan; +>span : TextSpan +>TextSpan : TextSpan + + newText: string; +>newText : string + } + interface RenameLocation { +>RenameLocation : RenameLocation + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + fileName: string; +>fileName : string + } + interface ReferenceEntry { +>ReferenceEntry : ReferenceEntry + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + fileName: string; +>fileName : string + + isWriteAccess: boolean; +>isWriteAccess : boolean + } + interface NavigateToItem { +>NavigateToItem : NavigateToItem + + name: string; +>name : string + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + matchKind: string; +>matchKind : string + + isCaseSensitive: boolean; +>isCaseSensitive : boolean + + fileName: string; +>fileName : string + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + containerName: string; +>containerName : string + + containerKind: string; +>containerKind : string + } + interface EditorOptions { +>EditorOptions : EditorOptions + + IndentSize: number; +>IndentSize : number + + TabSize: number; +>TabSize : number + + NewLineCharacter: string; +>NewLineCharacter : string + + ConvertTabsToSpaces: boolean; +>ConvertTabsToSpaces : boolean + } + interface FormatCodeOptions extends EditorOptions { +>FormatCodeOptions : FormatCodeOptions +>EditorOptions : EditorOptions + + InsertSpaceAfterCommaDelimiter: boolean; +>InsertSpaceAfterCommaDelimiter : boolean + + InsertSpaceAfterSemicolonInForStatements: boolean; +>InsertSpaceAfterSemicolonInForStatements : boolean + + InsertSpaceBeforeAndAfterBinaryOperators: boolean; +>InsertSpaceBeforeAndAfterBinaryOperators : boolean + + InsertSpaceAfterKeywordsInControlFlowStatements: boolean; +>InsertSpaceAfterKeywordsInControlFlowStatements : boolean + + InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; +>InsertSpaceAfterFunctionKeywordForAnonymousFunctions : boolean + + InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; +>InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis : boolean + + PlaceOpenBraceOnNewLineForFunctions: boolean; +>PlaceOpenBraceOnNewLineForFunctions : boolean + + PlaceOpenBraceOnNewLineForControlBlocks: boolean; +>PlaceOpenBraceOnNewLineForControlBlocks : boolean + + [s: string]: boolean | number | string; +>s : string + } + interface DefinitionInfo { +>DefinitionInfo : DefinitionInfo + + fileName: string; +>fileName : string + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + kind: string; +>kind : string + + name: string; +>name : string + + containerKind: string; +>containerKind : string + + containerName: string; +>containerName : string + } + interface ReferencedSymbol { +>ReferencedSymbol : ReferencedSymbol + + definition: DefinitionInfo; +>definition : DefinitionInfo +>DefinitionInfo : DefinitionInfo + + references: ReferenceEntry[]; +>references : ReferenceEntry[] +>ReferenceEntry : ReferenceEntry + } + enum SymbolDisplayPartKind { +>SymbolDisplayPartKind : SymbolDisplayPartKind + + aliasName = 0, +>aliasName : SymbolDisplayPartKind + + className = 1, +>className : SymbolDisplayPartKind + + enumName = 2, +>enumName : SymbolDisplayPartKind + + fieldName = 3, +>fieldName : SymbolDisplayPartKind + + interfaceName = 4, +>interfaceName : SymbolDisplayPartKind + + keyword = 5, +>keyword : SymbolDisplayPartKind + + lineBreak = 6, +>lineBreak : SymbolDisplayPartKind + + numericLiteral = 7, +>numericLiteral : SymbolDisplayPartKind + + stringLiteral = 8, +>stringLiteral : SymbolDisplayPartKind + + localName = 9, +>localName : SymbolDisplayPartKind + + methodName = 10, +>methodName : SymbolDisplayPartKind + + moduleName = 11, +>moduleName : SymbolDisplayPartKind + + operator = 12, +>operator : SymbolDisplayPartKind + + parameterName = 13, +>parameterName : SymbolDisplayPartKind + + propertyName = 14, +>propertyName : SymbolDisplayPartKind + + punctuation = 15, +>punctuation : SymbolDisplayPartKind + + space = 16, +>space : SymbolDisplayPartKind + + text = 17, +>text : SymbolDisplayPartKind + + typeParameterName = 18, +>typeParameterName : SymbolDisplayPartKind + + enumMemberName = 19, +>enumMemberName : SymbolDisplayPartKind + + functionName = 20, +>functionName : SymbolDisplayPartKind + + regularExpressionLiteral = 21, +>regularExpressionLiteral : SymbolDisplayPartKind + } + interface SymbolDisplayPart { +>SymbolDisplayPart : SymbolDisplayPart + + text: string; +>text : string + + kind: string; +>kind : string + } + interface QuickInfo { +>QuickInfo : QuickInfo + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + displayParts: SymbolDisplayPart[]; +>displayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + documentation: SymbolDisplayPart[]; +>documentation : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + interface RenameInfo { +>RenameInfo : RenameInfo + + canRename: boolean; +>canRename : boolean + + localizedErrorMessage: string; +>localizedErrorMessage : string + + displayName: string; +>displayName : string + + fullDisplayName: string; +>fullDisplayName : string + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + triggerSpan: TextSpan; +>triggerSpan : TextSpan +>TextSpan : TextSpan + } + interface SignatureHelpParameter { +>SignatureHelpParameter : SignatureHelpParameter + + name: string; +>name : string + + documentation: SymbolDisplayPart[]; +>documentation : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + displayParts: SymbolDisplayPart[]; +>displayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + isOptional: boolean; +>isOptional : boolean + } + /** + * Represents a single signature to show in signature help. + * The id is used for subsequent calls into the language service to ask questions about the + * signature help item in the context of any documents that have been updated. i.e. after + * an edit has happened, while signature help is still active, the host can ask important + * questions like 'what parameter is the user currently contained within?'. + */ + interface SignatureHelpItem { +>SignatureHelpItem : SignatureHelpItem + + isVariadic: boolean; +>isVariadic : boolean + + prefixDisplayParts: SymbolDisplayPart[]; +>prefixDisplayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + suffixDisplayParts: SymbolDisplayPart[]; +>suffixDisplayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + separatorDisplayParts: SymbolDisplayPart[]; +>separatorDisplayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + parameters: SignatureHelpParameter[]; +>parameters : SignatureHelpParameter[] +>SignatureHelpParameter : SignatureHelpParameter + + documentation: SymbolDisplayPart[]; +>documentation : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + /** + * Represents a set of signature help items, and the preferred item that should be selected. + */ + interface SignatureHelpItems { +>SignatureHelpItems : SignatureHelpItems + + items: SignatureHelpItem[]; +>items : SignatureHelpItem[] +>SignatureHelpItem : SignatureHelpItem + + applicableSpan: TextSpan; +>applicableSpan : TextSpan +>TextSpan : TextSpan + + selectedItemIndex: number; +>selectedItemIndex : number + + argumentIndex: number; +>argumentIndex : number + + argumentCount: number; +>argumentCount : number + } + interface CompletionInfo { +>CompletionInfo : CompletionInfo + + isMemberCompletion: boolean; +>isMemberCompletion : boolean + + isNewIdentifierLocation: boolean; +>isNewIdentifierLocation : boolean + + entries: CompletionEntry[]; +>entries : CompletionEntry[] +>CompletionEntry : CompletionEntry + } + interface CompletionEntry { +>CompletionEntry : CompletionEntry + + name: string; +>name : string + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + sortText: string; +>sortText : string + } + interface CompletionEntryDetails { +>CompletionEntryDetails : CompletionEntryDetails + + name: string; +>name : string + + kind: string; +>kind : string + + kindModifiers: string; +>kindModifiers : string + + displayParts: SymbolDisplayPart[]; +>displayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + documentation: SymbolDisplayPart[]; +>documentation : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + interface OutliningSpan { +>OutliningSpan : OutliningSpan + + /** The span of the document to actually collapse. */ + textSpan: TextSpan; +>textSpan : TextSpan +>TextSpan : TextSpan + + /** The span of the document to display when the user hovers over the collapsed span. */ + hintSpan: TextSpan; +>hintSpan : TextSpan +>TextSpan : TextSpan + + /** The text to display in the editor for the collapsed region. */ + bannerText: string; +>bannerText : string + + /** + * Whether or not this region should be automatically collapsed when + * the 'Collapse to Definitions' command is invoked. + */ + autoCollapse: boolean; +>autoCollapse : boolean + } + interface EmitOutput { +>EmitOutput : EmitOutput + + outputFiles: OutputFile[]; +>outputFiles : OutputFile[] +>OutputFile : OutputFile + + emitSkipped: boolean; +>emitSkipped : boolean + } + const enum OutputFileType { +>OutputFileType : OutputFileType + + JavaScript = 0, +>JavaScript : OutputFileType + + SourceMap = 1, +>SourceMap : OutputFileType + + Declaration = 2, +>Declaration : OutputFileType + } + interface OutputFile { +>OutputFile : OutputFile + + name: string; +>name : string + + writeByteOrderMark: boolean; +>writeByteOrderMark : boolean + + text: string; +>text : string + } + const enum EndOfLineState { +>EndOfLineState : EndOfLineState + + Start = 0, +>Start : EndOfLineState + + InMultiLineCommentTrivia = 1, +>InMultiLineCommentTrivia : EndOfLineState + + InSingleQuoteStringLiteral = 2, +>InSingleQuoteStringLiteral : EndOfLineState + + InDoubleQuoteStringLiteral = 3, +>InDoubleQuoteStringLiteral : EndOfLineState + + InTemplateHeadOrNoSubstitutionTemplate = 4, +>InTemplateHeadOrNoSubstitutionTemplate : EndOfLineState + + InTemplateMiddleOrTail = 5, +>InTemplateMiddleOrTail : EndOfLineState + + InTemplateSubstitutionPosition = 6, +>InTemplateSubstitutionPosition : EndOfLineState + } + enum TokenClass { +>TokenClass : TokenClass + + Punctuation = 0, +>Punctuation : TokenClass + + Keyword = 1, +>Keyword : TokenClass + + Operator = 2, +>Operator : TokenClass + + Comment = 3, +>Comment : TokenClass + + Whitespace = 4, +>Whitespace : TokenClass + + Identifier = 5, +>Identifier : TokenClass + + NumberLiteral = 6, +>NumberLiteral : TokenClass + + StringLiteral = 7, +>StringLiteral : TokenClass + + RegExpLiteral = 8, +>RegExpLiteral : TokenClass + } + interface ClassificationResult { +>ClassificationResult : ClassificationResult + + finalLexState: EndOfLineState; +>finalLexState : EndOfLineState +>EndOfLineState : EndOfLineState + + entries: ClassificationInfo[]; +>entries : ClassificationInfo[] +>ClassificationInfo : ClassificationInfo + } + interface ClassificationInfo { +>ClassificationInfo : ClassificationInfo + + length: number; +>length : number + + classification: TokenClass; +>classification : TokenClass +>TokenClass : TokenClass + } + interface Classifier { +>Classifier : Classifier + + /** + * Gives lexical classifications of tokens on a line without any syntactic context. + * For instance, a token consisting of the text 'string' can be either an identifier + * named 'string' or the keyword 'string', however, because this classifier is not aware, + * it relies on certain heuristics to give acceptable results. For classifications where + * speed trumps accuracy, this function is preferable; however, for true accuracy, the + * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the + * lexical, syntactic, and semantic classifiers may issue the best user experience. + * + * @param text The text of a line to classify. + * @param lexState The state of the lexical classifier at the end of the previous line. + * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier. + * If there is no syntactic classifier (syntacticClassifierAbsent=true), + * certain heuristics may be used in its place; however, if there is a + * syntactic classifier (syntacticClassifierAbsent=false), certain + * classifications which may be incorrectly categorized will be given + * back as Identifiers in order to allow the syntactic classifier to + * subsume the classification. + */ + getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult; +>getClassificationsForLine : (text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean) => ClassificationResult +>text : string +>lexState : EndOfLineState +>EndOfLineState : EndOfLineState +>syntacticClassifierAbsent : boolean +>ClassificationResult : ClassificationResult + } + /** + * The document registry represents a store of SourceFile objects that can be shared between + * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST) + * of files in the context. + * SourceFile objects account for most of the memory usage by the language service. Sharing + * the same DocumentRegistry instance between different instances of LanguageService allow + * for more efficient memory utilization since all projects will share at least the library + * file (lib.d.ts). + * + * A more advanced use of the document registry is to serialize sourceFile objects to disk + * and re-hydrate them when needed. + * + * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it + * to all subsequent createLanguageService calls. + */ + interface DocumentRegistry { +>DocumentRegistry : DocumentRegistry + + /** + * Request a stored SourceFile with a given fileName and compilationSettings. + * The first call to acquire will call createLanguageServiceSourceFile to generate + * the SourceFile if was not found in the registry. + * + * @param fileName The name of the file requested + * @param compilationSettings Some compilation settings like target affects the + * shape of a the resulting SourceFile. This allows the DocumentRegistry to store + * multiple copies of the same file for different compilation settings. + * @parm scriptSnapshot Text of the file. Only used if the file was not found + * in the registry and a new one was created. + * @parm version Current version of the file. Only used if the file was not found + * in the registry and a new one was created. + */ + acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>acquireDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile +>fileName : string +>compilationSettings : CompilerOptions +>CompilerOptions : CompilerOptions +>scriptSnapshot : IScriptSnapshot +>IScriptSnapshot : IScriptSnapshot +>version : string +>SourceFile : SourceFile + + /** + * Request an updated version of an already existing SourceFile with a given fileName + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile + * to get an updated SourceFile. + * + * @param fileName The name of the file requested + * @param compilationSettings Some compilation settings like target affects the + * shape of a the resulting SourceFile. This allows the DocumentRegistry to store + * multiple copies of the same file for different compilation settings. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. + */ + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile +>fileName : string +>compilationSettings : CompilerOptions +>CompilerOptions : CompilerOptions +>scriptSnapshot : IScriptSnapshot +>IScriptSnapshot : IScriptSnapshot +>version : string +>SourceFile : SourceFile + + /** + * Informs the DocumentRegistry that a file is not needed any longer. + * + * Note: It is not allowed to call release on a SourceFile that was not acquired from + * this registry originally. + * + * @param fileName The name of the file to be released + * @param compilationSettings The compilation settings used to acquire the file + */ + releaseDocument(fileName: string, compilationSettings: CompilerOptions): void; +>releaseDocument : (fileName: string, compilationSettings: CompilerOptions) => void +>fileName : string +>compilationSettings : CompilerOptions +>CompilerOptions : CompilerOptions + } + class ScriptElementKind { +>ScriptElementKind : ScriptElementKind + + static unknown: string; +>unknown : string + + static warning: string; +>warning : string + + static keyword: string; +>keyword : string + + static scriptElement: string; +>scriptElement : string + + static moduleElement: string; +>moduleElement : string + + static classElement: string; +>classElement : string + + static interfaceElement: string; +>interfaceElement : string + + static typeElement: string; +>typeElement : string + + static enumElement: string; +>enumElement : string + + static variableElement: string; +>variableElement : string + + static localVariableElement: string; +>localVariableElement : string + + static functionElement: string; +>functionElement : string + + static localFunctionElement: string; +>localFunctionElement : string + + static memberFunctionElement: string; +>memberFunctionElement : string + + static memberGetAccessorElement: string; +>memberGetAccessorElement : string + + static memberSetAccessorElement: string; +>memberSetAccessorElement : string + + static memberVariableElement: string; +>memberVariableElement : string + + static constructorImplementationElement: string; +>constructorImplementationElement : string + + static callSignatureElement: string; +>callSignatureElement : string + + static indexSignatureElement: string; +>indexSignatureElement : string + + static constructSignatureElement: string; +>constructSignatureElement : string + + static parameterElement: string; +>parameterElement : string + + static typeParameterElement: string; +>typeParameterElement : string + + static primitiveType: string; +>primitiveType : string + + static label: string; +>label : string + + static alias: string; +>alias : string + + static constElement: string; +>constElement : string + + static letElement: string; +>letElement : string + } + class ScriptElementKindModifier { +>ScriptElementKindModifier : ScriptElementKindModifier + + static none: string; +>none : string + + static publicMemberModifier: string; +>publicMemberModifier : string + + static privateMemberModifier: string; +>privateMemberModifier : string + + static protectedMemberModifier: string; +>protectedMemberModifier : string + + static exportedModifier: string; +>exportedModifier : string + + static ambientModifier: string; +>ambientModifier : string + + static staticModifier: string; +>staticModifier : string + } + class ClassificationTypeNames { +>ClassificationTypeNames : ClassificationTypeNames + + static comment: string; +>comment : string + + static identifier: string; +>identifier : string + + static keyword: string; +>keyword : string + + static numericLiteral: string; +>numericLiteral : string + + static operator: string; +>operator : string + + static stringLiteral: string; +>stringLiteral : string + + static whiteSpace: string; +>whiteSpace : string + + static text: string; +>text : string + + static punctuation: string; +>punctuation : string + + static className: string; +>className : string + + static enumName: string; +>enumName : string + + static interfaceName: string; +>interfaceName : string + + static moduleName: string; +>moduleName : string + + static typeParameterName: string; +>typeParameterName : string + + static typeAlias: string; +>typeAlias : string + } + interface DisplayPartsSymbolWriter extends SymbolWriter { +>DisplayPartsSymbolWriter : DisplayPartsSymbolWriter +>SymbolWriter : SymbolWriter + + displayParts(): SymbolDisplayPart[]; +>displayParts : () => SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + } + function displayPartsToString(displayParts: SymbolDisplayPart[]): string; +>displayPartsToString : (displayParts: SymbolDisplayPart[]) => string +>displayParts : SymbolDisplayPart[] +>SymbolDisplayPart : SymbolDisplayPart + + function getDefaultCompilerOptions(): CompilerOptions; +>getDefaultCompilerOptions : () => CompilerOptions +>CompilerOptions : CompilerOptions + + class OperationCanceledException { +>OperationCanceledException : OperationCanceledException + } + class CancellationTokenObject { +>CancellationTokenObject : CancellationTokenObject + + private cancellationToken; +>cancellationToken : any + + static None: CancellationTokenObject; +>None : CancellationTokenObject +>CancellationTokenObject : CancellationTokenObject + + constructor(cancellationToken: CancellationToken); +>cancellationToken : CancellationToken +>CancellationToken : CancellationToken + + isCancellationRequested(): boolean; +>isCancellationRequested : () => boolean + + throwIfCancellationRequested(): void; +>throwIfCancellationRequested : () => void + } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; +>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string +>input : string +>compilerOptions : CompilerOptions +>CompilerOptions : CompilerOptions +>fileName : string +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + + function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; +>createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile +>fileName : string +>scriptSnapshot : IScriptSnapshot +>IScriptSnapshot : IScriptSnapshot +>scriptTarget : ScriptTarget +>ScriptTarget : ScriptTarget +>version : string +>setNodeParents : boolean +>SourceFile : SourceFile + + let disableIncrementalParsing: boolean; +>disableIncrementalParsing : boolean + + function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; +>updateLanguageServiceSourceFile : (sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean) => SourceFile +>sourceFile : SourceFile +>SourceFile : SourceFile +>scriptSnapshot : IScriptSnapshot +>IScriptSnapshot : IScriptSnapshot +>version : string +>textChangeRange : TextChangeRange +>TextChangeRange : TextChangeRange +>aggressiveChecks : boolean +>SourceFile : SourceFile + + function createDocumentRegistry(): DocumentRegistry; +>createDocumentRegistry : () => DocumentRegistry +>DocumentRegistry : DocumentRegistry + + function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; +>preProcessFile : (sourceText: string, readImportFiles?: boolean) => PreProcessedFileInfo +>sourceText : string +>readImportFiles : boolean +>PreProcessedFileInfo : PreProcessedFileInfo + + function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry): LanguageService; +>createLanguageService : (host: LanguageServiceHost, documentRegistry?: DocumentRegistry) => LanguageService +>host : LanguageServiceHost +>LanguageServiceHost : LanguageServiceHost +>documentRegistry : DocumentRegistry +>DocumentRegistry : DocumentRegistry +>LanguageService : LanguageService + + function createClassifier(): Classifier; +>createClassifier : () => Classifier +>Classifier : Classifier + + /** + * Get the path of the default library file (lib.d.ts) as distributed with the typescript + * node package. + * The functionality is not supported if the ts module is consumed outside of a node module. + */ + function getDefaultLibFilePath(options: CompilerOptions): string; +>getDefaultLibFilePath : (options: CompilerOptions) => string +>options : CompilerOptions +>CompilerOptions : CompilerOptions +} + diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index d63d954288d..6bdf755ae12 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -143,57 +143,57 @@ declare module "typescript" { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - AsKeyword = 101, - FromKeyword = 102, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, ImplementsKeyword = 103, InterfaceKeyword = 104, LetKeyword = 105, @@ -215,119 +215,126 @@ declare module "typescript" { StringKeyword = 121, SymbolKeyword = 122, TypeKeyword = 123, - OfKeyword = 124, - QualifiedName = 125, - ComputedPropertyName = 126, - TypeParameter = 127, - Parameter = 128, - PropertySignature = 129, - PropertyDeclaration = 130, - MethodSignature = 131, - MethodDeclaration = 132, - Constructor = 133, - GetAccessor = 134, - SetAccessor = 135, - CallSignature = 136, - ConstructSignature = 137, - IndexSignature = 138, - TypeReference = 139, - FunctionType = 140, - ConstructorType = 141, - TypeQuery = 142, - TypeLiteral = 143, - ArrayType = 144, - TupleType = 145, - UnionType = 146, - ParenthesizedType = 147, - ObjectBindingPattern = 148, - ArrayBindingPattern = 149, - BindingElement = 150, - ArrayLiteralExpression = 151, - ObjectLiteralExpression = 152, - PropertyAccessExpression = 153, - ElementAccessExpression = 154, - CallExpression = 155, - NewExpression = 156, - TaggedTemplateExpression = 157, - TypeAssertionExpression = 158, - ParenthesizedExpression = 159, - FunctionExpression = 160, - ArrowFunction = 161, - DeleteExpression = 162, - TypeOfExpression = 163, - VoidExpression = 164, - PrefixUnaryExpression = 165, - PostfixUnaryExpression = 166, - BinaryExpression = 167, - ConditionalExpression = 168, - TemplateExpression = 169, - YieldExpression = 170, - SpreadElementExpression = 171, - OmittedExpression = 172, - TemplateSpan = 173, - Block = 174, - VariableStatement = 175, - EmptyStatement = 176, - ExpressionStatement = 177, - IfStatement = 178, - DoStatement = 179, - WhileStatement = 180, - ForStatement = 181, - ForInStatement = 182, - ForOfStatement = 183, - ContinueStatement = 184, - BreakStatement = 185, - ReturnStatement = 186, - WithStatement = 187, - SwitchStatement = 188, - LabeledStatement = 189, - ThrowStatement = 190, - TryStatement = 191, - DebuggerStatement = 192, - VariableDeclaration = 193, - VariableDeclarationList = 194, - FunctionDeclaration = 195, - ClassDeclaration = 196, - InterfaceDeclaration = 197, - TypeAliasDeclaration = 198, - EnumDeclaration = 199, - ModuleDeclaration = 200, - ModuleBlock = 201, - ImportEqualsDeclaration = 202, - ImportDeclaration = 203, - ImportClause = 204, - NamespaceImport = 205, - NamedImports = 206, - ImportSpecifier = 207, - ExportAssignment = 208, - ExportDeclaration = 209, - NamedExports = 210, - ExportSpecifier = 211, - ExternalModuleReference = 212, - CaseClause = 213, - DefaultClause = 214, - HeritageClause = 215, - CatchClause = 216, - PropertyAssignment = 217, - ShorthandPropertyAssignment = 218, - EnumMember = 219, - SourceFile = 220, - SyntaxList = 221, - Count = 222, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 124, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, FirstFutureReservedWord = 103, LastFutureReservedWord = 111, - FirstTypeNode = 139, - LastTypeNode = 147, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 124, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -335,8 +342,8 @@ declare module "typescript" { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 125, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -345,25 +352,28 @@ declare module "typescript" { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -374,6 +384,7 @@ declare module "typescript" { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; modifiers?: ModifiersArray; id?: number; parent?: Node; @@ -404,6 +415,9 @@ declare module "typescript" { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -481,7 +495,7 @@ declare module "typescript" { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -490,6 +504,9 @@ declare module "typescript" { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -574,16 +591,22 @@ declare module "typescript" { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -610,6 +633,7 @@ declare module "typescript" { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -621,6 +645,10 @@ declare module "typescript" { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -683,6 +711,9 @@ declare module "typescript" { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -705,20 +736,23 @@ declare module "typescript" { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -730,7 +764,7 @@ declare module "typescript" { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -744,10 +778,7 @@ declare module "typescript" { name: Identifier; members: NodeArray; } - interface ExportContainer { - exportStars?: ExportDeclaration[]; - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } @@ -761,7 +792,7 @@ declare module "typescript" { interface ExternalModuleReference extends Node { expression?: Expression; } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { importClause?: ImportClause; moduleSpecifier: Expression; } @@ -772,7 +803,7 @@ declare module "typescript" { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { exportClause?: NamedExports; moduleSpecifier?: Expression; } @@ -787,8 +818,10 @@ declare module "typescript" { } type ImportSpecifier = ImportOrExportSpecifier; type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -796,7 +829,7 @@ declare module "typescript" { interface CommentRange extends TextRange { hasTrailingNewLine?: boolean; } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; @@ -823,14 +856,14 @@ declare module "typescript" { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -901,6 +934,7 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -948,9 +982,10 @@ declare module "typescript" { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportEqualsDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -958,20 +993,23 @@ declare module "typescript" { errorModuleName?: string; } interface EmitResolver { - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; - getExpressionNameSubstitution(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: Node): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -997,13 +1035,14 @@ declare module "typescript" { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -1028,7 +1067,7 @@ declare module "typescript" { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -1057,10 +1096,9 @@ declare module "typescript" { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignmentChecked?: boolean; - exportAssignmentSymbol?: Symbol; unionType?: UnionType; resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -1076,6 +1114,8 @@ declare module "typescript" { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -1195,17 +1235,6 @@ declare module "typescript" { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1233,7 +1262,6 @@ declare module "typescript" { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1247,7 +1275,6 @@ declare module "typescript" { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1260,7 +1287,7 @@ declare module "typescript" { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1452,6 +1479,7 @@ declare module "typescript" { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1500,13 +1528,31 @@ declare module "typescript" { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1548,9 +1594,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1616,6 +1659,7 @@ declare module "typescript" { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1702,6 +1746,10 @@ declare module "typescript" { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1786,6 +1834,7 @@ declare module "typescript" { name: string; kind: string; kindModifiers: string; + sortText: string; } interface CompletionEntryDetails { name: string; @@ -1904,25 +1953,17 @@ declare module "typescript" { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1936,6 +1977,7 @@ declare module "typescript" { } class ScriptElementKind { static unknown: string; + static warning: string; static keyword: string; static scriptElement: string; static moduleElement: string; @@ -2003,8 +2045,9 @@ declare module "typescript" { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; @@ -2038,7 +2081,8 @@ function transform(contents, compilerOptions) { // Create a compilerHost object to allow the compiler to read and write files var compilerHost = { getSourceFile: function (fileName, target) { - return files[fileName] !== undefined ? ts.createSourceFile(fileName, files[fileName], target) : undefined; + return files[fileName] !== undefined ? + ts.createSourceFile(fileName, files[fileName], target) : undefined; }, writeFile: function (name, text, writeByteOrderMark) { outputs.push({ name: name, text: text, writeByteOrderMark: writeByteOrderMark }); @@ -2058,7 +2102,8 @@ function transform(contents, compilerOptions) { return { outputs: outputs, errors: errors.map(function (e) { - return e.file.fileName + "(" + (e.file.getLineAndCharacterOfPosition(e.start).line + 1) + "): " + ts.flattenDiagnosticMessageText(e.messageText, os.EOL); + return e.file.fileName + "(" + (e.file.getLineAndCharacterOfPosition(e.start).line + 1) + "): " + + ts.flattenDiagnosticMessageText(e.messageText, os.EOL); }) }; } diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index 7ffc3a11f1f..4bd248d70c7 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -447,159 +447,159 @@ declare module "typescript" { ColonToken = 51, >ColonToken : SyntaxKind - EqualsToken = 52, + AtToken = 52, +>AtToken : SyntaxKind + + EqualsToken = 53, >EqualsToken : SyntaxKind - PlusEqualsToken = 53, + PlusEqualsToken = 54, >PlusEqualsToken : SyntaxKind - MinusEqualsToken = 54, + MinusEqualsToken = 55, >MinusEqualsToken : SyntaxKind - AsteriskEqualsToken = 55, + AsteriskEqualsToken = 56, >AsteriskEqualsToken : SyntaxKind - SlashEqualsToken = 56, + SlashEqualsToken = 57, >SlashEqualsToken : SyntaxKind - PercentEqualsToken = 57, + PercentEqualsToken = 58, >PercentEqualsToken : SyntaxKind - LessThanLessThanEqualsToken = 58, + LessThanLessThanEqualsToken = 59, >LessThanLessThanEqualsToken : SyntaxKind - GreaterThanGreaterThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, >GreaterThanGreaterThanEqualsToken : SyntaxKind - GreaterThanGreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, >GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind - AmpersandEqualsToken = 61, + AmpersandEqualsToken = 62, >AmpersandEqualsToken : SyntaxKind - BarEqualsToken = 62, + BarEqualsToken = 63, >BarEqualsToken : SyntaxKind - CaretEqualsToken = 63, + CaretEqualsToken = 64, >CaretEqualsToken : SyntaxKind - Identifier = 64, + Identifier = 65, >Identifier : SyntaxKind - BreakKeyword = 65, + BreakKeyword = 66, >BreakKeyword : SyntaxKind - CaseKeyword = 66, + CaseKeyword = 67, >CaseKeyword : SyntaxKind - CatchKeyword = 67, + CatchKeyword = 68, >CatchKeyword : SyntaxKind - ClassKeyword = 68, + ClassKeyword = 69, >ClassKeyword : SyntaxKind - ConstKeyword = 69, + ConstKeyword = 70, >ConstKeyword : SyntaxKind - ContinueKeyword = 70, + ContinueKeyword = 71, >ContinueKeyword : SyntaxKind - DebuggerKeyword = 71, + DebuggerKeyword = 72, >DebuggerKeyword : SyntaxKind - DefaultKeyword = 72, + DefaultKeyword = 73, >DefaultKeyword : SyntaxKind - DeleteKeyword = 73, + DeleteKeyword = 74, >DeleteKeyword : SyntaxKind - DoKeyword = 74, + DoKeyword = 75, >DoKeyword : SyntaxKind - ElseKeyword = 75, + ElseKeyword = 76, >ElseKeyword : SyntaxKind - EnumKeyword = 76, + EnumKeyword = 77, >EnumKeyword : SyntaxKind - ExportKeyword = 77, + ExportKeyword = 78, >ExportKeyword : SyntaxKind - ExtendsKeyword = 78, + ExtendsKeyword = 79, >ExtendsKeyword : SyntaxKind - FalseKeyword = 79, + FalseKeyword = 80, >FalseKeyword : SyntaxKind - FinallyKeyword = 80, + FinallyKeyword = 81, >FinallyKeyword : SyntaxKind - ForKeyword = 81, + ForKeyword = 82, >ForKeyword : SyntaxKind - FunctionKeyword = 82, + FunctionKeyword = 83, >FunctionKeyword : SyntaxKind - IfKeyword = 83, + IfKeyword = 84, >IfKeyword : SyntaxKind - ImportKeyword = 84, + ImportKeyword = 85, >ImportKeyword : SyntaxKind - InKeyword = 85, + InKeyword = 86, >InKeyword : SyntaxKind - InstanceOfKeyword = 86, + InstanceOfKeyword = 87, >InstanceOfKeyword : SyntaxKind - NewKeyword = 87, + NewKeyword = 88, >NewKeyword : SyntaxKind - NullKeyword = 88, + NullKeyword = 89, >NullKeyword : SyntaxKind - ReturnKeyword = 89, + ReturnKeyword = 90, >ReturnKeyword : SyntaxKind - SuperKeyword = 90, + SuperKeyword = 91, >SuperKeyword : SyntaxKind - SwitchKeyword = 91, + SwitchKeyword = 92, >SwitchKeyword : SyntaxKind - ThisKeyword = 92, + ThisKeyword = 93, >ThisKeyword : SyntaxKind - ThrowKeyword = 93, + ThrowKeyword = 94, >ThrowKeyword : SyntaxKind - TrueKeyword = 94, + TrueKeyword = 95, >TrueKeyword : SyntaxKind - TryKeyword = 95, + TryKeyword = 96, >TryKeyword : SyntaxKind - TypeOfKeyword = 96, + TypeOfKeyword = 97, >TypeOfKeyword : SyntaxKind - VarKeyword = 97, + VarKeyword = 98, >VarKeyword : SyntaxKind - VoidKeyword = 98, + VoidKeyword = 99, >VoidKeyword : SyntaxKind - WhileKeyword = 99, + WhileKeyword = 100, >WhileKeyword : SyntaxKind - WithKeyword = 100, + WithKeyword = 101, >WithKeyword : SyntaxKind - AsKeyword = 101, + AsKeyword = 102, >AsKeyword : SyntaxKind - FromKeyword = 102, ->FromKeyword : SyntaxKind - ImplementsKeyword = 103, >ImplementsKeyword : SyntaxKind @@ -663,319 +663,340 @@ declare module "typescript" { TypeKeyword = 123, >TypeKeyword : SyntaxKind - OfKeyword = 124, + FromKeyword = 124, +>FromKeyword : SyntaxKind + + OfKeyword = 125, >OfKeyword : SyntaxKind - QualifiedName = 125, + QualifiedName = 126, >QualifiedName : SyntaxKind - ComputedPropertyName = 126, + ComputedPropertyName = 127, >ComputedPropertyName : SyntaxKind - TypeParameter = 127, + TypeParameter = 128, >TypeParameter : SyntaxKind - Parameter = 128, + Parameter = 129, >Parameter : SyntaxKind - PropertySignature = 129, + Decorator = 130, +>Decorator : SyntaxKind + + PropertySignature = 131, >PropertySignature : SyntaxKind - PropertyDeclaration = 130, + PropertyDeclaration = 132, >PropertyDeclaration : SyntaxKind - MethodSignature = 131, + MethodSignature = 133, >MethodSignature : SyntaxKind - MethodDeclaration = 132, + MethodDeclaration = 134, >MethodDeclaration : SyntaxKind - Constructor = 133, + Constructor = 135, >Constructor : SyntaxKind - GetAccessor = 134, + GetAccessor = 136, >GetAccessor : SyntaxKind - SetAccessor = 135, + SetAccessor = 137, >SetAccessor : SyntaxKind - CallSignature = 136, + CallSignature = 138, >CallSignature : SyntaxKind - ConstructSignature = 137, + ConstructSignature = 139, >ConstructSignature : SyntaxKind - IndexSignature = 138, + IndexSignature = 140, >IndexSignature : SyntaxKind - TypeReference = 139, + TypeReference = 141, >TypeReference : SyntaxKind - FunctionType = 140, + FunctionType = 142, >FunctionType : SyntaxKind - ConstructorType = 141, + ConstructorType = 143, >ConstructorType : SyntaxKind - TypeQuery = 142, + TypeQuery = 144, >TypeQuery : SyntaxKind - TypeLiteral = 143, + TypeLiteral = 145, >TypeLiteral : SyntaxKind - ArrayType = 144, + ArrayType = 146, >ArrayType : SyntaxKind - TupleType = 145, + TupleType = 147, >TupleType : SyntaxKind - UnionType = 146, + UnionType = 148, >UnionType : SyntaxKind - ParenthesizedType = 147, + ParenthesizedType = 149, >ParenthesizedType : SyntaxKind - ObjectBindingPattern = 148, + ObjectBindingPattern = 150, >ObjectBindingPattern : SyntaxKind - ArrayBindingPattern = 149, + ArrayBindingPattern = 151, >ArrayBindingPattern : SyntaxKind - BindingElement = 150, + BindingElement = 152, >BindingElement : SyntaxKind - ArrayLiteralExpression = 151, + ArrayLiteralExpression = 153, >ArrayLiteralExpression : SyntaxKind - ObjectLiteralExpression = 152, + ObjectLiteralExpression = 154, >ObjectLiteralExpression : SyntaxKind - PropertyAccessExpression = 153, + PropertyAccessExpression = 155, >PropertyAccessExpression : SyntaxKind - ElementAccessExpression = 154, + ElementAccessExpression = 156, >ElementAccessExpression : SyntaxKind - CallExpression = 155, + CallExpression = 157, >CallExpression : SyntaxKind - NewExpression = 156, + NewExpression = 158, >NewExpression : SyntaxKind - TaggedTemplateExpression = 157, + TaggedTemplateExpression = 159, >TaggedTemplateExpression : SyntaxKind - TypeAssertionExpression = 158, + TypeAssertionExpression = 160, >TypeAssertionExpression : SyntaxKind - ParenthesizedExpression = 159, + ParenthesizedExpression = 161, >ParenthesizedExpression : SyntaxKind - FunctionExpression = 160, + FunctionExpression = 162, >FunctionExpression : SyntaxKind - ArrowFunction = 161, + ArrowFunction = 163, >ArrowFunction : SyntaxKind - DeleteExpression = 162, + DeleteExpression = 164, >DeleteExpression : SyntaxKind - TypeOfExpression = 163, + TypeOfExpression = 165, >TypeOfExpression : SyntaxKind - VoidExpression = 164, + VoidExpression = 166, >VoidExpression : SyntaxKind - PrefixUnaryExpression = 165, + PrefixUnaryExpression = 167, >PrefixUnaryExpression : SyntaxKind - PostfixUnaryExpression = 166, + PostfixUnaryExpression = 168, >PostfixUnaryExpression : SyntaxKind - BinaryExpression = 167, + BinaryExpression = 169, >BinaryExpression : SyntaxKind - ConditionalExpression = 168, + ConditionalExpression = 170, >ConditionalExpression : SyntaxKind - TemplateExpression = 169, + TemplateExpression = 171, >TemplateExpression : SyntaxKind - YieldExpression = 170, + YieldExpression = 172, >YieldExpression : SyntaxKind - SpreadElementExpression = 171, + SpreadElementExpression = 173, >SpreadElementExpression : SyntaxKind - OmittedExpression = 172, + ClassExpression = 174, +>ClassExpression : SyntaxKind + + OmittedExpression = 175, >OmittedExpression : SyntaxKind - TemplateSpan = 173, + TemplateSpan = 176, >TemplateSpan : SyntaxKind - Block = 174, + HeritageClauseElement = 177, +>HeritageClauseElement : SyntaxKind + + SemicolonClassElement = 178, +>SemicolonClassElement : SyntaxKind + + Block = 179, >Block : SyntaxKind - VariableStatement = 175, + VariableStatement = 180, >VariableStatement : SyntaxKind - EmptyStatement = 176, + EmptyStatement = 181, >EmptyStatement : SyntaxKind - ExpressionStatement = 177, + ExpressionStatement = 182, >ExpressionStatement : SyntaxKind - IfStatement = 178, + IfStatement = 183, >IfStatement : SyntaxKind - DoStatement = 179, + DoStatement = 184, >DoStatement : SyntaxKind - WhileStatement = 180, + WhileStatement = 185, >WhileStatement : SyntaxKind - ForStatement = 181, + ForStatement = 186, >ForStatement : SyntaxKind - ForInStatement = 182, + ForInStatement = 187, >ForInStatement : SyntaxKind - ForOfStatement = 183, + ForOfStatement = 188, >ForOfStatement : SyntaxKind - ContinueStatement = 184, + ContinueStatement = 189, >ContinueStatement : SyntaxKind - BreakStatement = 185, + BreakStatement = 190, >BreakStatement : SyntaxKind - ReturnStatement = 186, + ReturnStatement = 191, >ReturnStatement : SyntaxKind - WithStatement = 187, + WithStatement = 192, >WithStatement : SyntaxKind - SwitchStatement = 188, + SwitchStatement = 193, >SwitchStatement : SyntaxKind - LabeledStatement = 189, + LabeledStatement = 194, >LabeledStatement : SyntaxKind - ThrowStatement = 190, + ThrowStatement = 195, >ThrowStatement : SyntaxKind - TryStatement = 191, + TryStatement = 196, >TryStatement : SyntaxKind - DebuggerStatement = 192, + DebuggerStatement = 197, >DebuggerStatement : SyntaxKind - VariableDeclaration = 193, + VariableDeclaration = 198, >VariableDeclaration : SyntaxKind - VariableDeclarationList = 194, + VariableDeclarationList = 199, >VariableDeclarationList : SyntaxKind - FunctionDeclaration = 195, + FunctionDeclaration = 200, >FunctionDeclaration : SyntaxKind - ClassDeclaration = 196, + ClassDeclaration = 201, >ClassDeclaration : SyntaxKind - InterfaceDeclaration = 197, + InterfaceDeclaration = 202, >InterfaceDeclaration : SyntaxKind - TypeAliasDeclaration = 198, + TypeAliasDeclaration = 203, >TypeAliasDeclaration : SyntaxKind - EnumDeclaration = 199, + EnumDeclaration = 204, >EnumDeclaration : SyntaxKind - ModuleDeclaration = 200, + ModuleDeclaration = 205, >ModuleDeclaration : SyntaxKind - ModuleBlock = 201, + ModuleBlock = 206, >ModuleBlock : SyntaxKind - ImportEqualsDeclaration = 202, + CaseBlock = 207, +>CaseBlock : SyntaxKind + + ImportEqualsDeclaration = 208, >ImportEqualsDeclaration : SyntaxKind - ImportDeclaration = 203, + ImportDeclaration = 209, >ImportDeclaration : SyntaxKind - ImportClause = 204, + ImportClause = 210, >ImportClause : SyntaxKind - NamespaceImport = 205, + NamespaceImport = 211, >NamespaceImport : SyntaxKind - NamedImports = 206, + NamedImports = 212, >NamedImports : SyntaxKind - ImportSpecifier = 207, + ImportSpecifier = 213, >ImportSpecifier : SyntaxKind - ExportAssignment = 208, + ExportAssignment = 214, >ExportAssignment : SyntaxKind - ExportDeclaration = 209, + ExportDeclaration = 215, >ExportDeclaration : SyntaxKind - NamedExports = 210, + NamedExports = 216, >NamedExports : SyntaxKind - ExportSpecifier = 211, + ExportSpecifier = 217, >ExportSpecifier : SyntaxKind - ExternalModuleReference = 212, + MissingDeclaration = 218, +>MissingDeclaration : SyntaxKind + + ExternalModuleReference = 219, >ExternalModuleReference : SyntaxKind - CaseClause = 213, + CaseClause = 220, >CaseClause : SyntaxKind - DefaultClause = 214, + DefaultClause = 221, >DefaultClause : SyntaxKind - HeritageClause = 215, + HeritageClause = 222, >HeritageClause : SyntaxKind - CatchClause = 216, + CatchClause = 223, >CatchClause : SyntaxKind - PropertyAssignment = 217, + PropertyAssignment = 224, >PropertyAssignment : SyntaxKind - ShorthandPropertyAssignment = 218, + ShorthandPropertyAssignment = 225, >ShorthandPropertyAssignment : SyntaxKind - EnumMember = 219, + EnumMember = 226, >EnumMember : SyntaxKind - SourceFile = 220, + SourceFile = 227, >SourceFile : SyntaxKind - SyntaxList = 221, + SyntaxList = 228, >SyntaxList : SyntaxKind - Count = 222, + Count = 229, >Count : SyntaxKind - FirstAssignment = 52, + FirstAssignment = 53, >FirstAssignment : SyntaxKind - LastAssignment = 63, + LastAssignment = 64, >LastAssignment : SyntaxKind - FirstReservedWord = 65, + FirstReservedWord = 66, >FirstReservedWord : SyntaxKind - LastReservedWord = 100, + LastReservedWord = 101, >LastReservedWord : SyntaxKind - FirstKeyword = 65, + FirstKeyword = 66, >FirstKeyword : SyntaxKind - LastKeyword = 124, + LastKeyword = 125, >LastKeyword : SyntaxKind FirstFutureReservedWord = 103, @@ -984,22 +1005,22 @@ declare module "typescript" { LastFutureReservedWord = 111, >LastFutureReservedWord : SyntaxKind - FirstTypeNode = 139, + FirstTypeNode = 141, >FirstTypeNode : SyntaxKind - LastTypeNode = 147, + LastTypeNode = 149, >LastTypeNode : SyntaxKind FirstPunctuation = 14, >FirstPunctuation : SyntaxKind - LastPunctuation = 63, + LastPunctuation = 64, >LastPunctuation : SyntaxKind FirstToken = 0, >FirstToken : SyntaxKind - LastToken = 124, + LastToken = 125, >LastToken : SyntaxKind FirstTriviaToken = 2, @@ -1023,10 +1044,10 @@ declare module "typescript" { FirstBinaryOperator = 24, >FirstBinaryOperator : SyntaxKind - LastBinaryOperator = 63, + LastBinaryOperator = 64, >LastBinaryOperator : SyntaxKind - FirstNode = 125, + FirstNode = 126, >FirstNode : SyntaxKind } const enum NodeFlags { @@ -1050,31 +1071,37 @@ declare module "typescript" { Static = 128, >Static : NodeFlags - MultiLine = 256, + Default = 256, +>Default : NodeFlags + + MultiLine = 512, >MultiLine : NodeFlags - Synthetic = 512, + Synthetic = 1024, >Synthetic : NodeFlags - DeclarationFile = 1024, + DeclarationFile = 2048, >DeclarationFile : NodeFlags - Let = 2048, + Let = 4096, >Let : NodeFlags - Const = 4096, + Const = 8192, >Const : NodeFlags - OctalLiteral = 8192, + OctalLiteral = 16384, >OctalLiteral : NodeFlags - Modifier = 243, + ExportContext = 32768, +>ExportContext : NodeFlags + + Modifier = 499, >Modifier : NodeFlags AccessibilityModifier = 112, >AccessibilityModifier : NodeFlags - BlockScoped = 6144, + BlockScoped = 12288, >BlockScoped : NodeFlags } const enum ParserContextFlags { @@ -1092,16 +1119,19 @@ declare module "typescript" { GeneratorParameter = 8, >GeneratorParameter : ParserContextFlags - ThisNodeHasError = 16, + Decorator = 16, +>Decorator : ParserContextFlags + + ThisNodeHasError = 32, >ThisNodeHasError : ParserContextFlags - ParserGeneratedFlags = 31, + ParserGeneratedFlags = 63, >ParserGeneratedFlags : ParserContextFlags - ThisNodeOrAnySubNodesHasError = 32, + ThisNodeOrAnySubNodesHasError = 64, >ThisNodeOrAnySubNodesHasError : ParserContextFlags - HasAggregatedChildData = 64, + HasAggregatedChildData = 128, >HasAggregatedChildData : ParserContextFlags } const enum RelationComparisonResult { @@ -1132,6 +1162,11 @@ declare module "typescript" { >parserContextFlags : ParserContextFlags >ParserContextFlags : ParserContextFlags + decorators?: NodeArray; +>decorators : NodeArray +>NodeArray : NodeArray +>Decorator : Decorator + modifiers?: ModifiersArray; >modifiers : ModifiersArray >ModifiersArray : ModifiersArray @@ -1226,6 +1261,14 @@ declare module "typescript" { expression: Expression; >expression : Expression >Expression : Expression + } + interface Decorator extends Node { +>Decorator : Decorator +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression } interface TypeParameterDeclaration extends Declaration { >TypeParameterDeclaration : TypeParameterDeclaration @@ -1466,7 +1509,7 @@ declare module "typescript" { >FunctionLikeDeclaration : FunctionLikeDeclaration >Statement : Statement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -1492,6 +1535,13 @@ declare module "typescript" { body?: Block; >body : Block >Block : Block + } + interface SemicolonClassElement extends ClassElement { +>SemicolonClassElement : SemicolonClassElement +>ClassElement : ClassElement + + _semicolonClassElementBrand: any; +>_semicolonClassElementBrand : any } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { >AccessorDeclaration : AccessorDeclaration @@ -1729,10 +1779,18 @@ declare module "typescript" { >condition : Expression >Expression : Expression + questionToken: Node; +>questionToken : Node +>Node : Node + whenTrue: Expression; >whenTrue : Expression >Expression : Expression + colonToken: Node; +>colonToken : Node +>Node : Node + whenFalse: Expression; >whenFalse : Expression >Expression : Expression @@ -1750,6 +1808,15 @@ declare module "typescript" { >body : Expression | Block >Block : Block >Expression : Expression + } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { +>ArrowFunction : ArrowFunction +>Expression : Expression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node +>Node : Node } interface LiteralExpression extends PrimaryExpression { >LiteralExpression : LiteralExpression @@ -1760,6 +1827,9 @@ declare module "typescript" { isUnterminated?: boolean; >isUnterminated : boolean + + hasExtendedUnicodeEscape?: boolean; +>hasExtendedUnicodeEscape : boolean } interface StringLiteralExpression extends LiteralExpression { >StringLiteralExpression : StringLiteralExpression @@ -1836,6 +1906,10 @@ declare module "typescript" { >expression : LeftHandSideExpression >LeftHandSideExpression : LeftHandSideExpression + dotToken: Node; +>dotToken : Node +>Node : Node + name: Identifier; >name : Identifier >Identifier : Identifier @@ -1869,6 +1943,19 @@ declare module "typescript" { >arguments : NodeArray >NodeArray : NodeArray >Expression : Expression + } + interface HeritageClauseElement extends Node { +>HeritageClauseElement : HeritageClauseElement +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode } interface NewExpression extends CallExpression, PrimaryExpression { >NewExpression : NewExpression @@ -2058,6 +2145,14 @@ declare module "typescript" { >expression : Expression >Expression : Expression + caseBlock: CaseBlock; +>caseBlock : CaseBlock +>CaseBlock : CaseBlock + } + interface CaseBlock extends Node { +>CaseBlock : CaseBlock +>Node : Node + clauses: NodeArray; >clauses : NodeArray >NodeArray : NodeArray @@ -2126,17 +2221,13 @@ declare module "typescript" { >finallyBlock : Block >Block : Block } - interface CatchClause extends Declaration { + interface CatchClause extends Node { >CatchClause : CatchClause ->Declaration : Declaration +>Node : Node - name: Identifier; ->name : Identifier ->Identifier : Identifier - - type?: TypeNode; ->type : TypeNode ->TypeNode : TypeNode + variableDeclaration: VariableDeclaration; +>variableDeclaration : VariableDeclaration +>VariableDeclaration : VariableDeclaration block: Block; >block : Block @@ -2149,12 +2240,11 @@ declare module "typescript" { _moduleElementBrand: any; >_moduleElementBrand : any } - interface ClassDeclaration extends Declaration, ModuleElement { ->ClassDeclaration : ClassDeclaration + interface ClassLikeDeclaration extends Declaration { +>ClassLikeDeclaration : ClassLikeDeclaration >Declaration : Declaration ->ModuleElement : ModuleElement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -2172,6 +2262,16 @@ declare module "typescript" { >members : NodeArray >NodeArray : NodeArray >ClassElement : ClassElement + } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { +>ClassDeclaration : ClassDeclaration +>ClassLikeDeclaration : ClassLikeDeclaration +>Statement : Statement + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { +>ClassExpression : ClassExpression +>ClassLikeDeclaration : ClassLikeDeclaration +>PrimaryExpression : PrimaryExpression } interface ClassElement extends Declaration { >ClassElement : ClassElement @@ -2212,10 +2312,10 @@ declare module "typescript" { >token : SyntaxKind >SyntaxKind : SyntaxKind - types?: NodeArray; ->types : NodeArray + types?: NodeArray; +>types : NodeArray >NodeArray : NodeArray ->TypeReferenceNode : TypeReferenceNode +>HeritageClauseElement : HeritageClauseElement } interface TypeAliasDeclaration extends Declaration, ModuleElement { >TypeAliasDeclaration : TypeAliasDeclaration @@ -2256,18 +2356,10 @@ declare module "typescript" { >NodeArray : NodeArray >EnumMember : EnumMember } - interface ExportContainer { ->ExportContainer : ExportContainer - - exportStars?: ExportDeclaration[]; ->exportStars : ExportDeclaration[] ->ExportDeclaration : ExportDeclaration - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { >ModuleDeclaration : ModuleDeclaration >Declaration : Declaration >ModuleElement : ModuleElement ->ExportContainer : ExportContainer name: Identifier | LiteralExpression; >name : Identifier | LiteralExpression @@ -2311,9 +2403,8 @@ declare module "typescript" { >expression : Expression >Expression : Expression } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { >ImportDeclaration : ImportDeclaration ->Statement : Statement >ModuleElement : ModuleElement importClause?: ImportClause; @@ -2345,9 +2436,9 @@ declare module "typescript" { >name : Identifier >Identifier : Identifier } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { >ExportDeclaration : ExportDeclaration ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement exportClause?: NamedExports; @@ -2395,14 +2486,21 @@ declare module "typescript" { >ExportSpecifier : ImportOrExportSpecifier >ImportOrExportSpecifier : ImportOrExportSpecifier - interface ExportAssignment extends Statement, ModuleElement { + interface ExportAssignment extends Declaration, ModuleElement { >ExportAssignment : ExportAssignment ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement - exportName: Identifier; ->exportName : Identifier ->Identifier : Identifier + isExportEquals?: boolean; +>isExportEquals : boolean + + expression?: Expression; +>expression : Expression +>Expression : Expression + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode } interface FileReference extends TextRange { >FileReference : FileReference @@ -2418,10 +2516,9 @@ declare module "typescript" { hasTrailingNewLine?: boolean; >hasTrailingNewLine : boolean } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { >SourceFile : SourceFile >Declaration : Declaration ->ExportContainer : ExportContainer statements: NodeArray; >statements : NodeArray @@ -2504,14 +2601,14 @@ declare module "typescript" { >SourceFile : SourceFile /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; >emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult @@ -2814,6 +2911,12 @@ declare module "typescript" { >getAliasedSymbol : (symbol: Symbol) => Symbol >symbol : Symbol >Symbol : Symbol +>Symbol : Symbol + + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; +>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[] +>moduleSymbol : Symbol +>Symbol : Symbol >Symbol : Symbol } interface SymbolDisplayBuilder { @@ -3028,6 +3131,11 @@ declare module "typescript" { CannotBeNamed = 2, >CannotBeNamed : SymbolAccessibility } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration +>ImportDeclaration : ImportDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + interface SymbolVisibilityResult { >SymbolVisibilityResult : SymbolVisibilityResult @@ -3035,9 +3143,9 @@ declare module "typescript" { >accessibility : SymbolAccessibility >SymbolAccessibility : SymbolAccessibility - aliasesToMakeVisible?: ImportEqualsDeclaration[]; ->aliasesToMakeVisible : ImportEqualsDeclaration[] ->ImportEqualsDeclaration : ImportEqualsDeclaration + aliasesToMakeVisible?: AnyImportSyntax[]; +>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[] +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration errorSymbolName?: string; >errorSymbolName : string @@ -3056,29 +3164,29 @@ declare module "typescript" { interface EmitResolver { >EmitResolver : EmitResolver - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; ->getGeneratedNameForNode : (node: EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration) => string ->node : EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration ->ModuleDeclaration : ModuleDeclaration ->EnumDeclaration : EnumDeclaration ->ImportDeclaration : ImportDeclaration ->ExportDeclaration : ExportDeclaration + hasGlobalName(name: string): boolean; +>hasGlobalName : (name: string) => boolean +>name : string - getExpressionNameSubstitution(node: Identifier): string; ->getExpressionNameSubstitution : (node: Identifier) => string + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; +>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string >node : Identifier >Identifier : Identifier - - getExportAssignmentName(node: SourceFile): string; ->getExportAssignmentName : (node: SourceFile) => string ->node : SourceFile ->SourceFile : SourceFile - - isReferencedImportDeclaration(node: Node): boolean; ->isReferencedImportDeclaration : (node: Node) => boolean +>getGeneratedNameForNode : (node: Node) => string >node : Node >Node : Node + isValueAliasDeclaration(node: Node): boolean; +>isValueAliasDeclaration : (node: Node) => boolean +>node : Node +>Node : Node + + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; +>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean +>node : Node +>Node : Node +>checkChildren : boolean + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; >isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean >node : ImportEqualsDeclaration @@ -3095,6 +3203,12 @@ declare module "typescript" { >node : Declaration >Declaration : Declaration + collectLinkedAliases(node: Identifier): Node[]; +>collectLinkedAliases : (node: Identifier) => Node[] +>node : Identifier +>Identifier : Identifier +>Node : Node + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; >isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean >node : FunctionLikeDeclaration @@ -3121,6 +3235,17 @@ declare module "typescript" { >flags : TypeFormatFlags >TypeFormatFlags : TypeFormatFlags >writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>expr : Expression +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter >SymbolWriter : SymbolWriter isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; @@ -3133,10 +3258,11 @@ declare module "typescript" { >SymbolFlags : SymbolFlags >SymbolAccessiblityResult : SymbolAccessiblityResult - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; ->isEntityNameVisible : (entityName: Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult ->entityName : Identifier | QualifiedName + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; +>isEntityNameVisible : (entityName: Identifier | Expression | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult +>entityName : Identifier | Expression | QualifiedName >EntityName : Identifier | QualifiedName +>Expression : Expression >enclosingDeclaration : Node >Node : Node >SymbolVisibilityResult : SymbolVisibilityResult @@ -3148,11 +3274,16 @@ declare module "typescript" { >PropertyAccessExpression : PropertyAccessExpression >ElementAccessExpression : ElementAccessExpression - isUnknownIdentifier(location: Node, name: string): boolean; ->isUnknownIdentifier : (location: Node, name: string) => boolean + resolvesToSomeValue(location: Node, name: string): boolean; +>resolvesToSomeValue : (location: Node, name: string) => boolean >location : Node >Node : Node >name : string + + getBlockScopedVariableId(node: Identifier): number; +>getBlockScopedVariableId : (node: Identifier) => number +>node : Identifier +>Identifier : Identifier } const enum SymbolFlags { >SymbolFlags : SymbolFlags @@ -3226,8 +3357,8 @@ declare module "typescript" { ExportNamespace = 4194304, >ExportNamespace : SymbolFlags - Import = 8388608, ->Import : SymbolFlags + Alias = 8388608, +>Alias : SymbolFlags Instantiated = 16777216, >Instantiated : SymbolFlags @@ -3247,6 +3378,9 @@ declare module "typescript" { Optional = 536870912, >Optional : SymbolFlags + ExportStar = 1073741824, +>ExportStar : SymbolFlags + Enum = 384, >Enum : SymbolFlags @@ -3319,8 +3453,8 @@ declare module "typescript" { TypeAliasExcludes = 793056, >TypeAliasExcludes : SymbolFlags - ImportExcludes = 8388608, ->ImportExcludes : SymbolFlags + AliasExcludes = 8388608, +>AliasExcludes : SymbolFlags ModuleMember = 8914931, >ModuleMember : SymbolFlags @@ -3411,13 +3545,6 @@ declare module "typescript" { referenced?: boolean; >referenced : boolean - exportAssignmentChecked?: boolean; ->exportAssignmentChecked : boolean - - exportAssignmentSymbol?: Symbol; ->exportAssignmentSymbol : Symbol ->Symbol : Symbol - unionType?: UnionType; >unionType : UnionType >UnionType : UnionType @@ -3425,6 +3552,9 @@ declare module "typescript" { resolvedExports?: SymbolTable; >resolvedExports : SymbolTable >SymbolTable : SymbolTable + + exportsChecked?: boolean; +>exportsChecked : boolean } interface TransientSymbol extends Symbol, SymbolLinks { >TransientSymbol : TransientSymbol @@ -3464,6 +3594,12 @@ declare module "typescript" { EnumValuesComputed = 128, >EnumValuesComputed : NodeCheckFlags + + BlockScopedBindingInLoop = 256, +>BlockScopedBindingInLoop : NodeCheckFlags + + EmitDecorate = 512, +>EmitDecorate : NodeCheckFlags } interface NodeLinks { >NodeLinks : NodeLinks @@ -3823,38 +3959,6 @@ declare module "typescript" { >t : Type >Type : Type >Type : Type - } - interface TypeInferences { ->TypeInferences : TypeInferences - - primary: Type[]; ->primary : Type[] ->Type : Type - - secondary: Type[]; ->secondary : Type[] ->Type : Type - } - interface InferenceContext { ->InferenceContext : InferenceContext - - typeParameters: TypeParameter[]; ->typeParameters : TypeParameter[] ->TypeParameter : TypeParameter - - inferUnionTypes: boolean; ->inferUnionTypes : boolean - - inferences: TypeInferences[]; ->inferences : TypeInferences[] ->TypeInferences : TypeInferences - - inferredTypes: Type[]; ->inferredTypes : Type[] ->Type : Type - - failedTypeParameterIndex?: number; ->failedTypeParameterIndex : number } interface DiagnosticMessage { >DiagnosticMessage : DiagnosticMessage @@ -3931,9 +4035,6 @@ declare module "typescript" { charset?: string; >charset : string - codepage?: number; ->codepage : number - declaration?: boolean; >declaration : boolean @@ -3974,9 +4075,6 @@ declare module "typescript" { noLib?: boolean; >noLib : boolean - noLibCheck?: boolean; ->noLibCheck : boolean - noResolve?: boolean; >noResolve : boolean @@ -4014,8 +4112,8 @@ declare module "typescript" { watch?: boolean; >watch : boolean - stripInternal?: boolean; ->stripInternal : boolean + separateCompilation?: boolean; +>separateCompilation : boolean [option: string]: string | number | boolean; >option : string @@ -4571,6 +4669,9 @@ declare module "typescript" { getTokenValue(): string; >getTokenValue : () => string + hasExtendedUnicodeEscape(): boolean; +>hasExtendedUnicodeEscape : () => boolean + hasPrecedingLineBreak(): boolean; >hasPrecedingLineBreak : () => boolean @@ -4796,10 +4897,19 @@ declare module "typescript" { >TypeChecker : TypeChecker } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; ->createCompilerHost : (options: CompilerOptions) => CompilerHost + /** The version of the TypeScript compiler release */ + let version: string; +>version : string + + function findConfigFile(searchPath: string): string; +>findConfigFile : (searchPath: string) => string +>searchPath : string + + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; +>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost >options : CompilerOptions >CompilerOptions : CompilerOptions +>setParentNodes : boolean >CompilerHost : CompilerHost function getPreEmitDiagnostics(program: Program): Diagnostic[]; @@ -4824,7 +4934,29 @@ declare module "typescript" { >Program : Program } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; +>readConfigFile : (fileName: string) => any +>fileName : string + + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine +>json : any +>basePath : string +>ParsedCommandLine : ParsedCommandLine +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; >servicesVersion : string interface Node { @@ -4982,17 +5114,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - version: string; ->version : string - - scriptSnapshot: IScriptSnapshot; ->scriptSnapshot : IScriptSnapshot ->IScriptSnapshot : IScriptSnapshot - - nameTable: Map; ->nameTable : Map ->Map : Map - getNamedDeclarations(): Declaration[]; >getNamedDeclarations : () => Declaration[] >Declaration : Declaration @@ -5223,6 +5344,12 @@ declare module "typescript" { >position : number >ReferenceEntry : ReferenceEntry + findReferences(fileName: string, position: number): ReferencedSymbol[]; +>findReferences : (fileName: string, position: number) => ReferencedSymbol[] +>fileName : string +>position : number +>ReferencedSymbol : ReferencedSymbol + getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; >getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[] >searchValue : string @@ -5493,6 +5620,17 @@ declare module "typescript" { containerName: string; >containerName : string + } + interface ReferencedSymbol { +>ReferencedSymbol : ReferencedSymbol + + definition: DefinitionInfo; +>definition : DefinitionInfo +>DefinitionInfo : DefinitionInfo + + references: ReferenceEntry[]; +>references : ReferenceEntry[] +>ReferenceEntry : ReferenceEntry } enum SymbolDisplayPartKind { >SymbolDisplayPartKind : SymbolDisplayPartKind @@ -5715,6 +5853,9 @@ declare module "typescript" { kindModifiers: string; >kindModifiers : string + + sortText: string; +>sortText : string } interface CompletionEntryDetails { >CompletionEntryDetails : CompletionEntryDetails @@ -5943,36 +6084,24 @@ declare module "typescript" { /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; ->updateDocument : (sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange) => SourceFile ->sourceFile : SourceFile ->SourceFile : SourceFile + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile >fileName : string >compilationSettings : CompilerOptions >CompilerOptions : CompilerOptions >scriptSnapshot : IScriptSnapshot >IScriptSnapshot : IScriptSnapshot >version : string ->textChangeRange : TextChangeRange ->TextChangeRange : TextChangeRange >SourceFile : SourceFile /** @@ -5996,6 +6125,9 @@ declare module "typescript" { static unknown: string; >unknown : string + static warning: string; +>warning : string + static keyword: string; >keyword : string @@ -6186,6 +6318,15 @@ declare module "typescript" { throwIfCancellationRequested(): void; >throwIfCancellationRequested : () => void } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; +>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string +>input : string +>compilerOptions : CompilerOptions +>CompilerOptions : CompilerOptions +>fileName : string +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; >createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile >fileName : string @@ -6197,7 +6338,7 @@ declare module "typescript" { >setNodeParents : boolean >SourceFile : SourceFile - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; >disableIncrementalParsing : boolean function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index 4cd76682393..3c11e27f0e1 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -180,57 +180,57 @@ declare module "typescript" { BarBarToken = 49, QuestionToken = 50, ColonToken = 51, - EqualsToken = 52, - PlusEqualsToken = 53, - MinusEqualsToken = 54, - AsteriskEqualsToken = 55, - SlashEqualsToken = 56, - PercentEqualsToken = 57, - LessThanLessThanEqualsToken = 58, - GreaterThanGreaterThanEqualsToken = 59, - GreaterThanGreaterThanGreaterThanEqualsToken = 60, - AmpersandEqualsToken = 61, - BarEqualsToken = 62, - CaretEqualsToken = 63, - Identifier = 64, - BreakKeyword = 65, - CaseKeyword = 66, - CatchKeyword = 67, - ClassKeyword = 68, - ConstKeyword = 69, - ContinueKeyword = 70, - DebuggerKeyword = 71, - DefaultKeyword = 72, - DeleteKeyword = 73, - DoKeyword = 74, - ElseKeyword = 75, - EnumKeyword = 76, - ExportKeyword = 77, - ExtendsKeyword = 78, - FalseKeyword = 79, - FinallyKeyword = 80, - ForKeyword = 81, - FunctionKeyword = 82, - IfKeyword = 83, - ImportKeyword = 84, - InKeyword = 85, - InstanceOfKeyword = 86, - NewKeyword = 87, - NullKeyword = 88, - ReturnKeyword = 89, - SuperKeyword = 90, - SwitchKeyword = 91, - ThisKeyword = 92, - ThrowKeyword = 93, - TrueKeyword = 94, - TryKeyword = 95, - TypeOfKeyword = 96, - VarKeyword = 97, - VoidKeyword = 98, - WhileKeyword = 99, - WithKeyword = 100, - AsKeyword = 101, - FromKeyword = 102, + AtToken = 52, + EqualsToken = 53, + PlusEqualsToken = 54, + MinusEqualsToken = 55, + AsteriskEqualsToken = 56, + SlashEqualsToken = 57, + PercentEqualsToken = 58, + LessThanLessThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, + AmpersandEqualsToken = 62, + BarEqualsToken = 63, + CaretEqualsToken = 64, + Identifier = 65, + BreakKeyword = 66, + CaseKeyword = 67, + CatchKeyword = 68, + ClassKeyword = 69, + ConstKeyword = 70, + ContinueKeyword = 71, + DebuggerKeyword = 72, + DefaultKeyword = 73, + DeleteKeyword = 74, + DoKeyword = 75, + ElseKeyword = 76, + EnumKeyword = 77, + ExportKeyword = 78, + ExtendsKeyword = 79, + FalseKeyword = 80, + FinallyKeyword = 81, + ForKeyword = 82, + FunctionKeyword = 83, + IfKeyword = 84, + ImportKeyword = 85, + InKeyword = 86, + InstanceOfKeyword = 87, + NewKeyword = 88, + NullKeyword = 89, + ReturnKeyword = 90, + SuperKeyword = 91, + SwitchKeyword = 92, + ThisKeyword = 93, + ThrowKeyword = 94, + TrueKeyword = 95, + TryKeyword = 96, + TypeOfKeyword = 97, + VarKeyword = 98, + VoidKeyword = 99, + WhileKeyword = 100, + WithKeyword = 101, + AsKeyword = 102, ImplementsKeyword = 103, InterfaceKeyword = 104, LetKeyword = 105, @@ -252,119 +252,126 @@ declare module "typescript" { StringKeyword = 121, SymbolKeyword = 122, TypeKeyword = 123, - OfKeyword = 124, - QualifiedName = 125, - ComputedPropertyName = 126, - TypeParameter = 127, - Parameter = 128, - PropertySignature = 129, - PropertyDeclaration = 130, - MethodSignature = 131, - MethodDeclaration = 132, - Constructor = 133, - GetAccessor = 134, - SetAccessor = 135, - CallSignature = 136, - ConstructSignature = 137, - IndexSignature = 138, - TypeReference = 139, - FunctionType = 140, - ConstructorType = 141, - TypeQuery = 142, - TypeLiteral = 143, - ArrayType = 144, - TupleType = 145, - UnionType = 146, - ParenthesizedType = 147, - ObjectBindingPattern = 148, - ArrayBindingPattern = 149, - BindingElement = 150, - ArrayLiteralExpression = 151, - ObjectLiteralExpression = 152, - PropertyAccessExpression = 153, - ElementAccessExpression = 154, - CallExpression = 155, - NewExpression = 156, - TaggedTemplateExpression = 157, - TypeAssertionExpression = 158, - ParenthesizedExpression = 159, - FunctionExpression = 160, - ArrowFunction = 161, - DeleteExpression = 162, - TypeOfExpression = 163, - VoidExpression = 164, - PrefixUnaryExpression = 165, - PostfixUnaryExpression = 166, - BinaryExpression = 167, - ConditionalExpression = 168, - TemplateExpression = 169, - YieldExpression = 170, - SpreadElementExpression = 171, - OmittedExpression = 172, - TemplateSpan = 173, - Block = 174, - VariableStatement = 175, - EmptyStatement = 176, - ExpressionStatement = 177, - IfStatement = 178, - DoStatement = 179, - WhileStatement = 180, - ForStatement = 181, - ForInStatement = 182, - ForOfStatement = 183, - ContinueStatement = 184, - BreakStatement = 185, - ReturnStatement = 186, - WithStatement = 187, - SwitchStatement = 188, - LabeledStatement = 189, - ThrowStatement = 190, - TryStatement = 191, - DebuggerStatement = 192, - VariableDeclaration = 193, - VariableDeclarationList = 194, - FunctionDeclaration = 195, - ClassDeclaration = 196, - InterfaceDeclaration = 197, - TypeAliasDeclaration = 198, - EnumDeclaration = 199, - ModuleDeclaration = 200, - ModuleBlock = 201, - ImportEqualsDeclaration = 202, - ImportDeclaration = 203, - ImportClause = 204, - NamespaceImport = 205, - NamedImports = 206, - ImportSpecifier = 207, - ExportAssignment = 208, - ExportDeclaration = 209, - NamedExports = 210, - ExportSpecifier = 211, - ExternalModuleReference = 212, - CaseClause = 213, - DefaultClause = 214, - HeritageClause = 215, - CatchClause = 216, - PropertyAssignment = 217, - ShorthandPropertyAssignment = 218, - EnumMember = 219, - SourceFile = 220, - SyntaxList = 221, - Count = 222, - FirstAssignment = 52, - LastAssignment = 63, - FirstReservedWord = 65, - LastReservedWord = 100, - FirstKeyword = 65, - LastKeyword = 124, + FromKeyword = 124, + OfKeyword = 125, + QualifiedName = 126, + ComputedPropertyName = 127, + TypeParameter = 128, + Parameter = 129, + Decorator = 130, + PropertySignature = 131, + PropertyDeclaration = 132, + MethodSignature = 133, + MethodDeclaration = 134, + Constructor = 135, + GetAccessor = 136, + SetAccessor = 137, + CallSignature = 138, + ConstructSignature = 139, + IndexSignature = 140, + TypeReference = 141, + FunctionType = 142, + ConstructorType = 143, + TypeQuery = 144, + TypeLiteral = 145, + ArrayType = 146, + TupleType = 147, + UnionType = 148, + ParenthesizedType = 149, + ObjectBindingPattern = 150, + ArrayBindingPattern = 151, + BindingElement = 152, + ArrayLiteralExpression = 153, + ObjectLiteralExpression = 154, + PropertyAccessExpression = 155, + ElementAccessExpression = 156, + CallExpression = 157, + NewExpression = 158, + TaggedTemplateExpression = 159, + TypeAssertionExpression = 160, + ParenthesizedExpression = 161, + FunctionExpression = 162, + ArrowFunction = 163, + DeleteExpression = 164, + TypeOfExpression = 165, + VoidExpression = 166, + PrefixUnaryExpression = 167, + PostfixUnaryExpression = 168, + BinaryExpression = 169, + ConditionalExpression = 170, + TemplateExpression = 171, + YieldExpression = 172, + SpreadElementExpression = 173, + ClassExpression = 174, + OmittedExpression = 175, + TemplateSpan = 176, + HeritageClauseElement = 177, + SemicolonClassElement = 178, + Block = 179, + VariableStatement = 180, + EmptyStatement = 181, + ExpressionStatement = 182, + IfStatement = 183, + DoStatement = 184, + WhileStatement = 185, + ForStatement = 186, + ForInStatement = 187, + ForOfStatement = 188, + ContinueStatement = 189, + BreakStatement = 190, + ReturnStatement = 191, + WithStatement = 192, + SwitchStatement = 193, + LabeledStatement = 194, + ThrowStatement = 195, + TryStatement = 196, + DebuggerStatement = 197, + VariableDeclaration = 198, + VariableDeclarationList = 199, + FunctionDeclaration = 200, + ClassDeclaration = 201, + InterfaceDeclaration = 202, + TypeAliasDeclaration = 203, + EnumDeclaration = 204, + ModuleDeclaration = 205, + ModuleBlock = 206, + CaseBlock = 207, + ImportEqualsDeclaration = 208, + ImportDeclaration = 209, + ImportClause = 210, + NamespaceImport = 211, + NamedImports = 212, + ImportSpecifier = 213, + ExportAssignment = 214, + ExportDeclaration = 215, + NamedExports = 216, + ExportSpecifier = 217, + MissingDeclaration = 218, + ExternalModuleReference = 219, + CaseClause = 220, + DefaultClause = 221, + HeritageClause = 222, + CatchClause = 223, + PropertyAssignment = 224, + ShorthandPropertyAssignment = 225, + EnumMember = 226, + SourceFile = 227, + SyntaxList = 228, + Count = 229, + FirstAssignment = 53, + LastAssignment = 64, + FirstReservedWord = 66, + LastReservedWord = 101, + FirstKeyword = 66, + LastKeyword = 125, FirstFutureReservedWord = 103, LastFutureReservedWord = 111, - FirstTypeNode = 139, - LastTypeNode = 147, + FirstTypeNode = 141, + LastTypeNode = 149, FirstPunctuation = 14, - LastPunctuation = 63, + LastPunctuation = 64, FirstToken = 0, - LastToken = 124, + LastToken = 125, FirstTriviaToken = 2, LastTriviaToken = 6, FirstLiteralToken = 7, @@ -372,8 +379,8 @@ declare module "typescript" { FirstTemplateToken = 10, LastTemplateToken = 13, FirstBinaryOperator = 24, - LastBinaryOperator = 63, - FirstNode = 125, + LastBinaryOperator = 64, + FirstNode = 126, } const enum NodeFlags { Export = 1, @@ -382,25 +389,28 @@ declare module "typescript" { Private = 32, Protected = 64, Static = 128, - MultiLine = 256, - Synthetic = 512, - DeclarationFile = 1024, - Let = 2048, - Const = 4096, - OctalLiteral = 8192, - Modifier = 243, + Default = 256, + MultiLine = 512, + Synthetic = 1024, + DeclarationFile = 2048, + Let = 4096, + Const = 8192, + OctalLiteral = 16384, + ExportContext = 32768, + Modifier = 499, AccessibilityModifier = 112, - BlockScoped = 6144, + BlockScoped = 12288, } const enum ParserContextFlags { StrictMode = 1, DisallowIn = 2, Yield = 4, GeneratorParameter = 8, - ThisNodeHasError = 16, - ParserGeneratedFlags = 31, - ThisNodeOrAnySubNodesHasError = 32, - HasAggregatedChildData = 64, + Decorator = 16, + ThisNodeHasError = 32, + ParserGeneratedFlags = 63, + ThisNodeOrAnySubNodesHasError = 64, + HasAggregatedChildData = 128, } const enum RelationComparisonResult { Succeeded = 1, @@ -411,6 +421,7 @@ declare module "typescript" { kind: SyntaxKind; flags: NodeFlags; parserContextFlags?: ParserContextFlags; + decorators?: NodeArray; modifiers?: ModifiersArray; id?: number; parent?: Node; @@ -441,6 +452,9 @@ declare module "typescript" { interface ComputedPropertyName extends Node { expression: Expression; } + interface Decorator extends Node { + expression: LeftHandSideExpression; + } interface TypeParameterDeclaration extends Declaration { name: Identifier; constraint?: TypeNode; @@ -518,7 +532,7 @@ declare module "typescript" { body?: Block | Expression; } interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { - name: Identifier; + name?: Identifier; body?: Block; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { @@ -527,6 +541,9 @@ declare module "typescript" { interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { body?: Block; } + interface SemicolonClassElement extends ClassElement { + _semicolonClassElementBrand: any; + } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; body: Block; @@ -611,16 +628,22 @@ declare module "typescript" { } interface ConditionalExpression extends Expression { condition: Expression; + questionToken: Node; whenTrue: Expression; + colonToken: Node; whenFalse: Expression; } interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; body: Block | Expression; } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { + equalsGreaterThanToken: Node; + } interface LiteralExpression extends PrimaryExpression { text: string; isUnterminated?: boolean; + hasExtendedUnicodeEscape?: boolean; } interface StringLiteralExpression extends LiteralExpression { _stringLiteralExpressionBrand: any; @@ -647,6 +670,7 @@ declare module "typescript" { } interface PropertyAccessExpression extends MemberExpression { expression: LeftHandSideExpression; + dotToken: Node; name: Identifier; } interface ElementAccessExpression extends MemberExpression { @@ -658,6 +682,10 @@ declare module "typescript" { typeArguments?: NodeArray; arguments: NodeArray; } + interface HeritageClauseElement extends Node { + expression: LeftHandSideExpression; + typeArguments?: NodeArray; + } interface NewExpression extends CallExpression, PrimaryExpression { } interface TaggedTemplateExpression extends MemberExpression { @@ -720,6 +748,9 @@ declare module "typescript" { } interface SwitchStatement extends Statement { expression: Expression; + caseBlock: CaseBlock; + } + interface CaseBlock extends Node { clauses: NodeArray; } interface CaseClause extends Node { @@ -742,20 +773,23 @@ declare module "typescript" { catchClause?: CatchClause; finallyBlock?: Block; } - interface CatchClause extends Declaration { - name: Identifier; - type?: TypeNode; + interface CatchClause extends Node { + variableDeclaration: VariableDeclaration; block: Block; } interface ModuleElement extends Node { _moduleElementBrand: any; } - interface ClassDeclaration extends Declaration, ModuleElement { - name: Identifier; + interface ClassLikeDeclaration extends Declaration { + name?: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; members: NodeArray; } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { + } interface ClassElement extends Declaration { _classElementBrand: any; } @@ -767,7 +801,7 @@ declare module "typescript" { } interface HeritageClause extends Node { token: SyntaxKind; - types?: NodeArray; + types?: NodeArray; } interface TypeAliasDeclaration extends Declaration, ModuleElement { name: Identifier; @@ -781,10 +815,7 @@ declare module "typescript" { name: Identifier; members: NodeArray; } - interface ExportContainer { - exportStars?: ExportDeclaration[]; - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } @@ -798,7 +829,7 @@ declare module "typescript" { interface ExternalModuleReference extends Node { expression?: Expression; } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { importClause?: ImportClause; moduleSpecifier: Expression; } @@ -809,7 +840,7 @@ declare module "typescript" { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { exportClause?: NamedExports; moduleSpecifier?: Expression; } @@ -824,8 +855,10 @@ declare module "typescript" { } type ImportSpecifier = ImportOrExportSpecifier; type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Statement, ModuleElement { - exportName: Identifier; + interface ExportAssignment extends Declaration, ModuleElement { + isExportEquals?: boolean; + expression?: Expression; + type?: TypeNode; } interface FileReference extends TextRange { fileName: string; @@ -833,7 +866,7 @@ declare module "typescript" { interface CommentRange extends TextRange { hasTrailingNewLine?: boolean; } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; @@ -860,14 +893,14 @@ declare module "typescript" { interface Program extends ScriptReferenceHost { getSourceFiles(): SourceFile[]; /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]; @@ -938,6 +971,7 @@ declare module "typescript" { getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; getAliasedSymbol(symbol: Symbol): Symbol; + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; } interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; @@ -985,9 +1019,10 @@ declare module "typescript" { NotAccessible = 1, CannotBeNamed = 2, } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; interface SymbolVisibilityResult { accessibility: SymbolAccessibility; - aliasesToMakeVisible?: ImportEqualsDeclaration[]; + aliasesToMakeVisible?: AnyImportSyntax[]; errorSymbolName?: string; errorNode?: Node; } @@ -995,20 +1030,23 @@ declare module "typescript" { errorModuleName?: string; } interface EmitResolver { - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; - getExpressionNameSubstitution(node: Identifier): string; - getExportAssignmentName(node: SourceFile): string; - isReferencedImportDeclaration(node: Node): boolean; + hasGlobalName(name: string): boolean; + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; + isValueAliasDeclaration(node: Node): boolean; + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; getNodeCheckFlags(node: Node): NodeCheckFlags; isDeclarationVisible(node: Declaration): boolean; + collectLinkedAliases(node: Identifier): Node[]; isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; - isUnknownIdentifier(location: Node, name: string): boolean; + resolvesToSomeValue(location: Node, name: string): boolean; + getBlockScopedVariableId(node: Identifier): number; } const enum SymbolFlags { FunctionScopedVariable = 1, @@ -1034,13 +1072,14 @@ declare module "typescript" { ExportValue = 1048576, ExportType = 2097152, ExportNamespace = 4194304, - Import = 8388608, + Alias = 8388608, Instantiated = 16777216, Merged = 33554432, Transient = 67108864, Prototype = 134217728, UnionProperty = 268435456, Optional = 536870912, + ExportStar = 1073741824, Enum = 384, Variable = 3, Value = 107455, @@ -1065,7 +1104,7 @@ declare module "typescript" { SetAccessorExcludes = 74687, TypeParameterExcludes = 530912, TypeAliasExcludes = 793056, - ImportExcludes = 8388608, + AliasExcludes = 8388608, ModuleMember = 8914931, ExportHasLocal = 944, HasLocals = 255504, @@ -1094,10 +1133,9 @@ declare module "typescript" { declaredType?: Type; mapper?: TypeMapper; referenced?: boolean; - exportAssignmentChecked?: boolean; - exportAssignmentSymbol?: Symbol; unionType?: UnionType; resolvedExports?: SymbolTable; + exportsChecked?: boolean; } interface TransientSymbol extends Symbol, SymbolLinks { } @@ -1113,6 +1151,8 @@ declare module "typescript" { SuperStatic = 32, ContextChecked = 64, EnumValuesComputed = 128, + BlockScopedBindingInLoop = 256, + EmitDecorate = 512, } interface NodeLinks { resolvedType?: Type; @@ -1232,17 +1272,6 @@ declare module "typescript" { interface TypeMapper { (t: Type): Type; } - interface TypeInferences { - primary: Type[]; - secondary: Type[]; - } - interface InferenceContext { - typeParameters: TypeParameter[]; - inferUnionTypes: boolean; - inferences: TypeInferences[]; - inferredTypes: Type[]; - failedTypeParameterIndex?: number; - } interface DiagnosticMessage { key: string; category: DiagnosticCategory; @@ -1270,7 +1299,6 @@ declare module "typescript" { interface CompilerOptions { allowNonTsExtensions?: boolean; charset?: string; - codepage?: number; declaration?: boolean; diagnostics?: boolean; emitBOM?: boolean; @@ -1284,7 +1312,6 @@ declare module "typescript" { noErrorTruncation?: boolean; noImplicitAny?: boolean; noLib?: boolean; - noLibCheck?: boolean; noResolve?: boolean; out?: string; outDir?: string; @@ -1297,7 +1324,7 @@ declare module "typescript" { target?: ScriptTarget; version?: boolean; watch?: boolean; - stripInternal?: boolean; + separateCompilation?: boolean; [option: string]: string | number | boolean; } const enum ModuleKind { @@ -1489,6 +1516,7 @@ declare module "typescript" { getTokenPos(): number; getTokenText(): string; getTokenValue(): string; + hasExtendedUnicodeEscape(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -1537,13 +1565,31 @@ declare module "typescript" { function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker; } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; + /** The version of the TypeScript compiler release */ + let version: string; + function findConfigFile(searchPath: string): string; + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1585,9 +1631,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - version: string; - scriptSnapshot: IScriptSnapshot; - nameTable: Map; getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; @@ -1653,6 +1696,7 @@ declare module "typescript" { getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; + findReferences(fileName: string, position: number): ReferencedSymbol[]; getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; getNavigationBarItems(fileName: string): NavigationBarItem[]; getOutliningSpans(fileName: string): OutliningSpan[]; @@ -1739,6 +1783,10 @@ declare module "typescript" { containerKind: string; containerName: string; } + interface ReferencedSymbol { + definition: DefinitionInfo; + references: ReferenceEntry[]; + } enum SymbolDisplayPartKind { aliasName = 0, className = 1, @@ -1823,6 +1871,7 @@ declare module "typescript" { name: string; kind: string; kindModifiers: string; + sortText: string; } interface CompletionEntryDetails { name: string; @@ -1941,25 +1990,17 @@ declare module "typescript" { acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; /** * Informs the DocumentRegistry that a file is not needed any longer. * @@ -1973,6 +2014,7 @@ declare module "typescript" { } class ScriptElementKind { static unknown: string; + static warning: string; static keyword: string; static scriptElement: string; static moduleElement: string; @@ -2040,8 +2082,9 @@ declare module "typescript" { isCancellationRequested(): boolean; throwIfCancellationRequested(): void; } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; function createDocumentRegistry(): DocumentRegistry; function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo; @@ -2115,7 +2158,9 @@ function watch(rootFileNames, options) { }); } function logErrors(fileName) { - var allDiagnostics = services.getCompilerOptionsDiagnostics().concat(services.getSyntacticDiagnostics(fileName)).concat(services.getSemanticDiagnostics(fileName)); + var allDiagnostics = services.getCompilerOptionsDiagnostics() + .concat(services.getSyntacticDiagnostics(fileName)) + .concat(services.getSemanticDiagnostics(fileName)); allDiagnostics.forEach(function (diagnostic) { if (diagnostic.file) { var lineChar = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); @@ -2128,6 +2173,7 @@ function watch(rootFileNames, options) { } } // Initialize files constituting the program as all .ts files in the current directory -var currentDirectoryFiles = fs.readdirSync(process.cwd()).filter(function (fileName) { return fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts"; }); +var currentDirectoryFiles = fs.readdirSync(process.cwd()). + filter(function (fileName) { return fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts"; }); // Start the watcher watch(currentDirectoryFiles, { module: 1 /* CommonJS */ }); diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index 52385d9f70a..f38cdc9b1af 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -620,159 +620,159 @@ declare module "typescript" { ColonToken = 51, >ColonToken : SyntaxKind - EqualsToken = 52, + AtToken = 52, +>AtToken : SyntaxKind + + EqualsToken = 53, >EqualsToken : SyntaxKind - PlusEqualsToken = 53, + PlusEqualsToken = 54, >PlusEqualsToken : SyntaxKind - MinusEqualsToken = 54, + MinusEqualsToken = 55, >MinusEqualsToken : SyntaxKind - AsteriskEqualsToken = 55, + AsteriskEqualsToken = 56, >AsteriskEqualsToken : SyntaxKind - SlashEqualsToken = 56, + SlashEqualsToken = 57, >SlashEqualsToken : SyntaxKind - PercentEqualsToken = 57, + PercentEqualsToken = 58, >PercentEqualsToken : SyntaxKind - LessThanLessThanEqualsToken = 58, + LessThanLessThanEqualsToken = 59, >LessThanLessThanEqualsToken : SyntaxKind - GreaterThanGreaterThanEqualsToken = 59, + GreaterThanGreaterThanEqualsToken = 60, >GreaterThanGreaterThanEqualsToken : SyntaxKind - GreaterThanGreaterThanGreaterThanEqualsToken = 60, + GreaterThanGreaterThanGreaterThanEqualsToken = 61, >GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind - AmpersandEqualsToken = 61, + AmpersandEqualsToken = 62, >AmpersandEqualsToken : SyntaxKind - BarEqualsToken = 62, + BarEqualsToken = 63, >BarEqualsToken : SyntaxKind - CaretEqualsToken = 63, + CaretEqualsToken = 64, >CaretEqualsToken : SyntaxKind - Identifier = 64, + Identifier = 65, >Identifier : SyntaxKind - BreakKeyword = 65, + BreakKeyword = 66, >BreakKeyword : SyntaxKind - CaseKeyword = 66, + CaseKeyword = 67, >CaseKeyword : SyntaxKind - CatchKeyword = 67, + CatchKeyword = 68, >CatchKeyword : SyntaxKind - ClassKeyword = 68, + ClassKeyword = 69, >ClassKeyword : SyntaxKind - ConstKeyword = 69, + ConstKeyword = 70, >ConstKeyword : SyntaxKind - ContinueKeyword = 70, + ContinueKeyword = 71, >ContinueKeyword : SyntaxKind - DebuggerKeyword = 71, + DebuggerKeyword = 72, >DebuggerKeyword : SyntaxKind - DefaultKeyword = 72, + DefaultKeyword = 73, >DefaultKeyword : SyntaxKind - DeleteKeyword = 73, + DeleteKeyword = 74, >DeleteKeyword : SyntaxKind - DoKeyword = 74, + DoKeyword = 75, >DoKeyword : SyntaxKind - ElseKeyword = 75, + ElseKeyword = 76, >ElseKeyword : SyntaxKind - EnumKeyword = 76, + EnumKeyword = 77, >EnumKeyword : SyntaxKind - ExportKeyword = 77, + ExportKeyword = 78, >ExportKeyword : SyntaxKind - ExtendsKeyword = 78, + ExtendsKeyword = 79, >ExtendsKeyword : SyntaxKind - FalseKeyword = 79, + FalseKeyword = 80, >FalseKeyword : SyntaxKind - FinallyKeyword = 80, + FinallyKeyword = 81, >FinallyKeyword : SyntaxKind - ForKeyword = 81, + ForKeyword = 82, >ForKeyword : SyntaxKind - FunctionKeyword = 82, + FunctionKeyword = 83, >FunctionKeyword : SyntaxKind - IfKeyword = 83, + IfKeyword = 84, >IfKeyword : SyntaxKind - ImportKeyword = 84, + ImportKeyword = 85, >ImportKeyword : SyntaxKind - InKeyword = 85, + InKeyword = 86, >InKeyword : SyntaxKind - InstanceOfKeyword = 86, + InstanceOfKeyword = 87, >InstanceOfKeyword : SyntaxKind - NewKeyword = 87, + NewKeyword = 88, >NewKeyword : SyntaxKind - NullKeyword = 88, + NullKeyword = 89, >NullKeyword : SyntaxKind - ReturnKeyword = 89, + ReturnKeyword = 90, >ReturnKeyword : SyntaxKind - SuperKeyword = 90, + SuperKeyword = 91, >SuperKeyword : SyntaxKind - SwitchKeyword = 91, + SwitchKeyword = 92, >SwitchKeyword : SyntaxKind - ThisKeyword = 92, + ThisKeyword = 93, >ThisKeyword : SyntaxKind - ThrowKeyword = 93, + ThrowKeyword = 94, >ThrowKeyword : SyntaxKind - TrueKeyword = 94, + TrueKeyword = 95, >TrueKeyword : SyntaxKind - TryKeyword = 95, + TryKeyword = 96, >TryKeyword : SyntaxKind - TypeOfKeyword = 96, + TypeOfKeyword = 97, >TypeOfKeyword : SyntaxKind - VarKeyword = 97, + VarKeyword = 98, >VarKeyword : SyntaxKind - VoidKeyword = 98, + VoidKeyword = 99, >VoidKeyword : SyntaxKind - WhileKeyword = 99, + WhileKeyword = 100, >WhileKeyword : SyntaxKind - WithKeyword = 100, + WithKeyword = 101, >WithKeyword : SyntaxKind - AsKeyword = 101, + AsKeyword = 102, >AsKeyword : SyntaxKind - FromKeyword = 102, ->FromKeyword : SyntaxKind - ImplementsKeyword = 103, >ImplementsKeyword : SyntaxKind @@ -836,319 +836,340 @@ declare module "typescript" { TypeKeyword = 123, >TypeKeyword : SyntaxKind - OfKeyword = 124, + FromKeyword = 124, +>FromKeyword : SyntaxKind + + OfKeyword = 125, >OfKeyword : SyntaxKind - QualifiedName = 125, + QualifiedName = 126, >QualifiedName : SyntaxKind - ComputedPropertyName = 126, + ComputedPropertyName = 127, >ComputedPropertyName : SyntaxKind - TypeParameter = 127, + TypeParameter = 128, >TypeParameter : SyntaxKind - Parameter = 128, + Parameter = 129, >Parameter : SyntaxKind - PropertySignature = 129, + Decorator = 130, +>Decorator : SyntaxKind + + PropertySignature = 131, >PropertySignature : SyntaxKind - PropertyDeclaration = 130, + PropertyDeclaration = 132, >PropertyDeclaration : SyntaxKind - MethodSignature = 131, + MethodSignature = 133, >MethodSignature : SyntaxKind - MethodDeclaration = 132, + MethodDeclaration = 134, >MethodDeclaration : SyntaxKind - Constructor = 133, + Constructor = 135, >Constructor : SyntaxKind - GetAccessor = 134, + GetAccessor = 136, >GetAccessor : SyntaxKind - SetAccessor = 135, + SetAccessor = 137, >SetAccessor : SyntaxKind - CallSignature = 136, + CallSignature = 138, >CallSignature : SyntaxKind - ConstructSignature = 137, + ConstructSignature = 139, >ConstructSignature : SyntaxKind - IndexSignature = 138, + IndexSignature = 140, >IndexSignature : SyntaxKind - TypeReference = 139, + TypeReference = 141, >TypeReference : SyntaxKind - FunctionType = 140, + FunctionType = 142, >FunctionType : SyntaxKind - ConstructorType = 141, + ConstructorType = 143, >ConstructorType : SyntaxKind - TypeQuery = 142, + TypeQuery = 144, >TypeQuery : SyntaxKind - TypeLiteral = 143, + TypeLiteral = 145, >TypeLiteral : SyntaxKind - ArrayType = 144, + ArrayType = 146, >ArrayType : SyntaxKind - TupleType = 145, + TupleType = 147, >TupleType : SyntaxKind - UnionType = 146, + UnionType = 148, >UnionType : SyntaxKind - ParenthesizedType = 147, + ParenthesizedType = 149, >ParenthesizedType : SyntaxKind - ObjectBindingPattern = 148, + ObjectBindingPattern = 150, >ObjectBindingPattern : SyntaxKind - ArrayBindingPattern = 149, + ArrayBindingPattern = 151, >ArrayBindingPattern : SyntaxKind - BindingElement = 150, + BindingElement = 152, >BindingElement : SyntaxKind - ArrayLiteralExpression = 151, + ArrayLiteralExpression = 153, >ArrayLiteralExpression : SyntaxKind - ObjectLiteralExpression = 152, + ObjectLiteralExpression = 154, >ObjectLiteralExpression : SyntaxKind - PropertyAccessExpression = 153, + PropertyAccessExpression = 155, >PropertyAccessExpression : SyntaxKind - ElementAccessExpression = 154, + ElementAccessExpression = 156, >ElementAccessExpression : SyntaxKind - CallExpression = 155, + CallExpression = 157, >CallExpression : SyntaxKind - NewExpression = 156, + NewExpression = 158, >NewExpression : SyntaxKind - TaggedTemplateExpression = 157, + TaggedTemplateExpression = 159, >TaggedTemplateExpression : SyntaxKind - TypeAssertionExpression = 158, + TypeAssertionExpression = 160, >TypeAssertionExpression : SyntaxKind - ParenthesizedExpression = 159, + ParenthesizedExpression = 161, >ParenthesizedExpression : SyntaxKind - FunctionExpression = 160, + FunctionExpression = 162, >FunctionExpression : SyntaxKind - ArrowFunction = 161, + ArrowFunction = 163, >ArrowFunction : SyntaxKind - DeleteExpression = 162, + DeleteExpression = 164, >DeleteExpression : SyntaxKind - TypeOfExpression = 163, + TypeOfExpression = 165, >TypeOfExpression : SyntaxKind - VoidExpression = 164, + VoidExpression = 166, >VoidExpression : SyntaxKind - PrefixUnaryExpression = 165, + PrefixUnaryExpression = 167, >PrefixUnaryExpression : SyntaxKind - PostfixUnaryExpression = 166, + PostfixUnaryExpression = 168, >PostfixUnaryExpression : SyntaxKind - BinaryExpression = 167, + BinaryExpression = 169, >BinaryExpression : SyntaxKind - ConditionalExpression = 168, + ConditionalExpression = 170, >ConditionalExpression : SyntaxKind - TemplateExpression = 169, + TemplateExpression = 171, >TemplateExpression : SyntaxKind - YieldExpression = 170, + YieldExpression = 172, >YieldExpression : SyntaxKind - SpreadElementExpression = 171, + SpreadElementExpression = 173, >SpreadElementExpression : SyntaxKind - OmittedExpression = 172, + ClassExpression = 174, +>ClassExpression : SyntaxKind + + OmittedExpression = 175, >OmittedExpression : SyntaxKind - TemplateSpan = 173, + TemplateSpan = 176, >TemplateSpan : SyntaxKind - Block = 174, + HeritageClauseElement = 177, +>HeritageClauseElement : SyntaxKind + + SemicolonClassElement = 178, +>SemicolonClassElement : SyntaxKind + + Block = 179, >Block : SyntaxKind - VariableStatement = 175, + VariableStatement = 180, >VariableStatement : SyntaxKind - EmptyStatement = 176, + EmptyStatement = 181, >EmptyStatement : SyntaxKind - ExpressionStatement = 177, + ExpressionStatement = 182, >ExpressionStatement : SyntaxKind - IfStatement = 178, + IfStatement = 183, >IfStatement : SyntaxKind - DoStatement = 179, + DoStatement = 184, >DoStatement : SyntaxKind - WhileStatement = 180, + WhileStatement = 185, >WhileStatement : SyntaxKind - ForStatement = 181, + ForStatement = 186, >ForStatement : SyntaxKind - ForInStatement = 182, + ForInStatement = 187, >ForInStatement : SyntaxKind - ForOfStatement = 183, + ForOfStatement = 188, >ForOfStatement : SyntaxKind - ContinueStatement = 184, + ContinueStatement = 189, >ContinueStatement : SyntaxKind - BreakStatement = 185, + BreakStatement = 190, >BreakStatement : SyntaxKind - ReturnStatement = 186, + ReturnStatement = 191, >ReturnStatement : SyntaxKind - WithStatement = 187, + WithStatement = 192, >WithStatement : SyntaxKind - SwitchStatement = 188, + SwitchStatement = 193, >SwitchStatement : SyntaxKind - LabeledStatement = 189, + LabeledStatement = 194, >LabeledStatement : SyntaxKind - ThrowStatement = 190, + ThrowStatement = 195, >ThrowStatement : SyntaxKind - TryStatement = 191, + TryStatement = 196, >TryStatement : SyntaxKind - DebuggerStatement = 192, + DebuggerStatement = 197, >DebuggerStatement : SyntaxKind - VariableDeclaration = 193, + VariableDeclaration = 198, >VariableDeclaration : SyntaxKind - VariableDeclarationList = 194, + VariableDeclarationList = 199, >VariableDeclarationList : SyntaxKind - FunctionDeclaration = 195, + FunctionDeclaration = 200, >FunctionDeclaration : SyntaxKind - ClassDeclaration = 196, + ClassDeclaration = 201, >ClassDeclaration : SyntaxKind - InterfaceDeclaration = 197, + InterfaceDeclaration = 202, >InterfaceDeclaration : SyntaxKind - TypeAliasDeclaration = 198, + TypeAliasDeclaration = 203, >TypeAliasDeclaration : SyntaxKind - EnumDeclaration = 199, + EnumDeclaration = 204, >EnumDeclaration : SyntaxKind - ModuleDeclaration = 200, + ModuleDeclaration = 205, >ModuleDeclaration : SyntaxKind - ModuleBlock = 201, + ModuleBlock = 206, >ModuleBlock : SyntaxKind - ImportEqualsDeclaration = 202, + CaseBlock = 207, +>CaseBlock : SyntaxKind + + ImportEqualsDeclaration = 208, >ImportEqualsDeclaration : SyntaxKind - ImportDeclaration = 203, + ImportDeclaration = 209, >ImportDeclaration : SyntaxKind - ImportClause = 204, + ImportClause = 210, >ImportClause : SyntaxKind - NamespaceImport = 205, + NamespaceImport = 211, >NamespaceImport : SyntaxKind - NamedImports = 206, + NamedImports = 212, >NamedImports : SyntaxKind - ImportSpecifier = 207, + ImportSpecifier = 213, >ImportSpecifier : SyntaxKind - ExportAssignment = 208, + ExportAssignment = 214, >ExportAssignment : SyntaxKind - ExportDeclaration = 209, + ExportDeclaration = 215, >ExportDeclaration : SyntaxKind - NamedExports = 210, + NamedExports = 216, >NamedExports : SyntaxKind - ExportSpecifier = 211, + ExportSpecifier = 217, >ExportSpecifier : SyntaxKind - ExternalModuleReference = 212, + MissingDeclaration = 218, +>MissingDeclaration : SyntaxKind + + ExternalModuleReference = 219, >ExternalModuleReference : SyntaxKind - CaseClause = 213, + CaseClause = 220, >CaseClause : SyntaxKind - DefaultClause = 214, + DefaultClause = 221, >DefaultClause : SyntaxKind - HeritageClause = 215, + HeritageClause = 222, >HeritageClause : SyntaxKind - CatchClause = 216, + CatchClause = 223, >CatchClause : SyntaxKind - PropertyAssignment = 217, + PropertyAssignment = 224, >PropertyAssignment : SyntaxKind - ShorthandPropertyAssignment = 218, + ShorthandPropertyAssignment = 225, >ShorthandPropertyAssignment : SyntaxKind - EnumMember = 219, + EnumMember = 226, >EnumMember : SyntaxKind - SourceFile = 220, + SourceFile = 227, >SourceFile : SyntaxKind - SyntaxList = 221, + SyntaxList = 228, >SyntaxList : SyntaxKind - Count = 222, + Count = 229, >Count : SyntaxKind - FirstAssignment = 52, + FirstAssignment = 53, >FirstAssignment : SyntaxKind - LastAssignment = 63, + LastAssignment = 64, >LastAssignment : SyntaxKind - FirstReservedWord = 65, + FirstReservedWord = 66, >FirstReservedWord : SyntaxKind - LastReservedWord = 100, + LastReservedWord = 101, >LastReservedWord : SyntaxKind - FirstKeyword = 65, + FirstKeyword = 66, >FirstKeyword : SyntaxKind - LastKeyword = 124, + LastKeyword = 125, >LastKeyword : SyntaxKind FirstFutureReservedWord = 103, @@ -1157,22 +1178,22 @@ declare module "typescript" { LastFutureReservedWord = 111, >LastFutureReservedWord : SyntaxKind - FirstTypeNode = 139, + FirstTypeNode = 141, >FirstTypeNode : SyntaxKind - LastTypeNode = 147, + LastTypeNode = 149, >LastTypeNode : SyntaxKind FirstPunctuation = 14, >FirstPunctuation : SyntaxKind - LastPunctuation = 63, + LastPunctuation = 64, >LastPunctuation : SyntaxKind FirstToken = 0, >FirstToken : SyntaxKind - LastToken = 124, + LastToken = 125, >LastToken : SyntaxKind FirstTriviaToken = 2, @@ -1196,10 +1217,10 @@ declare module "typescript" { FirstBinaryOperator = 24, >FirstBinaryOperator : SyntaxKind - LastBinaryOperator = 63, + LastBinaryOperator = 64, >LastBinaryOperator : SyntaxKind - FirstNode = 125, + FirstNode = 126, >FirstNode : SyntaxKind } const enum NodeFlags { @@ -1223,31 +1244,37 @@ declare module "typescript" { Static = 128, >Static : NodeFlags - MultiLine = 256, + Default = 256, +>Default : NodeFlags + + MultiLine = 512, >MultiLine : NodeFlags - Synthetic = 512, + Synthetic = 1024, >Synthetic : NodeFlags - DeclarationFile = 1024, + DeclarationFile = 2048, >DeclarationFile : NodeFlags - Let = 2048, + Let = 4096, >Let : NodeFlags - Const = 4096, + Const = 8192, >Const : NodeFlags - OctalLiteral = 8192, + OctalLiteral = 16384, >OctalLiteral : NodeFlags - Modifier = 243, + ExportContext = 32768, +>ExportContext : NodeFlags + + Modifier = 499, >Modifier : NodeFlags AccessibilityModifier = 112, >AccessibilityModifier : NodeFlags - BlockScoped = 6144, + BlockScoped = 12288, >BlockScoped : NodeFlags } const enum ParserContextFlags { @@ -1265,16 +1292,19 @@ declare module "typescript" { GeneratorParameter = 8, >GeneratorParameter : ParserContextFlags - ThisNodeHasError = 16, + Decorator = 16, +>Decorator : ParserContextFlags + + ThisNodeHasError = 32, >ThisNodeHasError : ParserContextFlags - ParserGeneratedFlags = 31, + ParserGeneratedFlags = 63, >ParserGeneratedFlags : ParserContextFlags - ThisNodeOrAnySubNodesHasError = 32, + ThisNodeOrAnySubNodesHasError = 64, >ThisNodeOrAnySubNodesHasError : ParserContextFlags - HasAggregatedChildData = 64, + HasAggregatedChildData = 128, >HasAggregatedChildData : ParserContextFlags } const enum RelationComparisonResult { @@ -1305,6 +1335,11 @@ declare module "typescript" { >parserContextFlags : ParserContextFlags >ParserContextFlags : ParserContextFlags + decorators?: NodeArray; +>decorators : NodeArray +>NodeArray : NodeArray +>Decorator : Decorator + modifiers?: ModifiersArray; >modifiers : ModifiersArray >ModifiersArray : ModifiersArray @@ -1399,6 +1434,14 @@ declare module "typescript" { expression: Expression; >expression : Expression >Expression : Expression + } + interface Decorator extends Node { +>Decorator : Decorator +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression } interface TypeParameterDeclaration extends Declaration { >TypeParameterDeclaration : TypeParameterDeclaration @@ -1639,7 +1682,7 @@ declare module "typescript" { >FunctionLikeDeclaration : FunctionLikeDeclaration >Statement : Statement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -1665,6 +1708,13 @@ declare module "typescript" { body?: Block; >body : Block >Block : Block + } + interface SemicolonClassElement extends ClassElement { +>SemicolonClassElement : SemicolonClassElement +>ClassElement : ClassElement + + _semicolonClassElementBrand: any; +>_semicolonClassElementBrand : any } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { >AccessorDeclaration : AccessorDeclaration @@ -1902,10 +1952,18 @@ declare module "typescript" { >condition : Expression >Expression : Expression + questionToken: Node; +>questionToken : Node +>Node : Node + whenTrue: Expression; >whenTrue : Expression >Expression : Expression + colonToken: Node; +>colonToken : Node +>Node : Node + whenFalse: Expression; >whenFalse : Expression >Expression : Expression @@ -1923,6 +1981,15 @@ declare module "typescript" { >body : Expression | Block >Block : Block >Expression : Expression + } + interface ArrowFunction extends Expression, FunctionLikeDeclaration { +>ArrowFunction : ArrowFunction +>Expression : Expression +>FunctionLikeDeclaration : FunctionLikeDeclaration + + equalsGreaterThanToken: Node; +>equalsGreaterThanToken : Node +>Node : Node } interface LiteralExpression extends PrimaryExpression { >LiteralExpression : LiteralExpression @@ -1933,6 +2000,9 @@ declare module "typescript" { isUnterminated?: boolean; >isUnterminated : boolean + + hasExtendedUnicodeEscape?: boolean; +>hasExtendedUnicodeEscape : boolean } interface StringLiteralExpression extends LiteralExpression { >StringLiteralExpression : StringLiteralExpression @@ -2009,6 +2079,10 @@ declare module "typescript" { >expression : LeftHandSideExpression >LeftHandSideExpression : LeftHandSideExpression + dotToken: Node; +>dotToken : Node +>Node : Node + name: Identifier; >name : Identifier >Identifier : Identifier @@ -2042,6 +2116,19 @@ declare module "typescript" { >arguments : NodeArray >NodeArray : NodeArray >Expression : Expression + } + interface HeritageClauseElement extends Node { +>HeritageClauseElement : HeritageClauseElement +>Node : Node + + expression: LeftHandSideExpression; +>expression : LeftHandSideExpression +>LeftHandSideExpression : LeftHandSideExpression + + typeArguments?: NodeArray; +>typeArguments : NodeArray +>NodeArray : NodeArray +>TypeNode : TypeNode } interface NewExpression extends CallExpression, PrimaryExpression { >NewExpression : NewExpression @@ -2231,6 +2318,14 @@ declare module "typescript" { >expression : Expression >Expression : Expression + caseBlock: CaseBlock; +>caseBlock : CaseBlock +>CaseBlock : CaseBlock + } + interface CaseBlock extends Node { +>CaseBlock : CaseBlock +>Node : Node + clauses: NodeArray; >clauses : NodeArray >NodeArray : NodeArray @@ -2299,17 +2394,13 @@ declare module "typescript" { >finallyBlock : Block >Block : Block } - interface CatchClause extends Declaration { + interface CatchClause extends Node { >CatchClause : CatchClause ->Declaration : Declaration +>Node : Node - name: Identifier; ->name : Identifier ->Identifier : Identifier - - type?: TypeNode; ->type : TypeNode ->TypeNode : TypeNode + variableDeclaration: VariableDeclaration; +>variableDeclaration : VariableDeclaration +>VariableDeclaration : VariableDeclaration block: Block; >block : Block @@ -2322,12 +2413,11 @@ declare module "typescript" { _moduleElementBrand: any; >_moduleElementBrand : any } - interface ClassDeclaration extends Declaration, ModuleElement { ->ClassDeclaration : ClassDeclaration + interface ClassLikeDeclaration extends Declaration { +>ClassLikeDeclaration : ClassLikeDeclaration >Declaration : Declaration ->ModuleElement : ModuleElement - name: Identifier; + name?: Identifier; >name : Identifier >Identifier : Identifier @@ -2345,6 +2435,16 @@ declare module "typescript" { >members : NodeArray >NodeArray : NodeArray >ClassElement : ClassElement + } + interface ClassDeclaration extends ClassLikeDeclaration, Statement { +>ClassDeclaration : ClassDeclaration +>ClassLikeDeclaration : ClassLikeDeclaration +>Statement : Statement + } + interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { +>ClassExpression : ClassExpression +>ClassLikeDeclaration : ClassLikeDeclaration +>PrimaryExpression : PrimaryExpression } interface ClassElement extends Declaration { >ClassElement : ClassElement @@ -2385,10 +2485,10 @@ declare module "typescript" { >token : SyntaxKind >SyntaxKind : SyntaxKind - types?: NodeArray; ->types : NodeArray + types?: NodeArray; +>types : NodeArray >NodeArray : NodeArray ->TypeReferenceNode : TypeReferenceNode +>HeritageClauseElement : HeritageClauseElement } interface TypeAliasDeclaration extends Declaration, ModuleElement { >TypeAliasDeclaration : TypeAliasDeclaration @@ -2429,18 +2529,10 @@ declare module "typescript" { >NodeArray : NodeArray >EnumMember : EnumMember } - interface ExportContainer { ->ExportContainer : ExportContainer - - exportStars?: ExportDeclaration[]; ->exportStars : ExportDeclaration[] ->ExportDeclaration : ExportDeclaration - } - interface ModuleDeclaration extends Declaration, ModuleElement, ExportContainer { + interface ModuleDeclaration extends Declaration, ModuleElement { >ModuleDeclaration : ModuleDeclaration >Declaration : Declaration >ModuleElement : ModuleElement ->ExportContainer : ExportContainer name: Identifier | LiteralExpression; >name : Identifier | LiteralExpression @@ -2484,9 +2576,8 @@ declare module "typescript" { >expression : Expression >Expression : Expression } - interface ImportDeclaration extends Statement, ModuleElement { + interface ImportDeclaration extends ModuleElement { >ImportDeclaration : ImportDeclaration ->Statement : Statement >ModuleElement : ModuleElement importClause?: ImportClause; @@ -2518,9 +2609,9 @@ declare module "typescript" { >name : Identifier >Identifier : Identifier } - interface ExportDeclaration extends Statement, ModuleElement { + interface ExportDeclaration extends Declaration, ModuleElement { >ExportDeclaration : ExportDeclaration ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement exportClause?: NamedExports; @@ -2568,14 +2659,21 @@ declare module "typescript" { >ExportSpecifier : ImportOrExportSpecifier >ImportOrExportSpecifier : ImportOrExportSpecifier - interface ExportAssignment extends Statement, ModuleElement { + interface ExportAssignment extends Declaration, ModuleElement { >ExportAssignment : ExportAssignment ->Statement : Statement +>Declaration : Declaration >ModuleElement : ModuleElement - exportName: Identifier; ->exportName : Identifier ->Identifier : Identifier + isExportEquals?: boolean; +>isExportEquals : boolean + + expression?: Expression; +>expression : Expression +>Expression : Expression + + type?: TypeNode; +>type : TypeNode +>TypeNode : TypeNode } interface FileReference extends TextRange { >FileReference : FileReference @@ -2591,10 +2689,9 @@ declare module "typescript" { hasTrailingNewLine?: boolean; >hasTrailingNewLine : boolean } - interface SourceFile extends Declaration, ExportContainer { + interface SourceFile extends Declaration { >SourceFile : SourceFile >Declaration : Declaration ->ExportContainer : ExportContainer statements: NodeArray; >statements : NodeArray @@ -2677,14 +2774,14 @@ declare module "typescript" { >SourceFile : SourceFile /** - * Emits the javascript and declaration files. If targetSourceFile is not specified, then - * the javascript and declaration files will be produced for all the files in this program. - * If targetSourceFile is specified, then only the javascript and declaration for that + * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then + * the JavaScript and declaration files will be produced for all the files in this program. + * If targetSourceFile is specified, then only the JavaScript and declaration for that * specific file will be generated. * * If writeFile is not specified then the writeFile callback from the compiler host will be - * used for writing the javascript and declaration files. Otherwise, the writeFile parameter - * will be invoked when writing the javascript and declaration files. + * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter + * will be invoked when writing the JavaScript and declaration files. */ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult; >emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult @@ -2987,6 +3084,12 @@ declare module "typescript" { >getAliasedSymbol : (symbol: Symbol) => Symbol >symbol : Symbol >Symbol : Symbol +>Symbol : Symbol + + getExportsOfModule(moduleSymbol: Symbol): Symbol[]; +>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[] +>moduleSymbol : Symbol +>Symbol : Symbol >Symbol : Symbol } interface SymbolDisplayBuilder { @@ -3201,6 +3304,11 @@ declare module "typescript" { CannotBeNamed = 2, >CannotBeNamed : SymbolAccessibility } + type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration +>ImportDeclaration : ImportDeclaration +>ImportEqualsDeclaration : ImportEqualsDeclaration + interface SymbolVisibilityResult { >SymbolVisibilityResult : SymbolVisibilityResult @@ -3208,9 +3316,9 @@ declare module "typescript" { >accessibility : SymbolAccessibility >SymbolAccessibility : SymbolAccessibility - aliasesToMakeVisible?: ImportEqualsDeclaration[]; ->aliasesToMakeVisible : ImportEqualsDeclaration[] ->ImportEqualsDeclaration : ImportEqualsDeclaration + aliasesToMakeVisible?: AnyImportSyntax[]; +>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[] +>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration errorSymbolName?: string; >errorSymbolName : string @@ -3229,29 +3337,29 @@ declare module "typescript" { interface EmitResolver { >EmitResolver : EmitResolver - getGeneratedNameForNode(node: ModuleDeclaration | EnumDeclaration | ImportDeclaration | ExportDeclaration): string; ->getGeneratedNameForNode : (node: EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration) => string ->node : EnumDeclaration | ExportDeclaration | ModuleDeclaration | ImportDeclaration ->ModuleDeclaration : ModuleDeclaration ->EnumDeclaration : EnumDeclaration ->ImportDeclaration : ImportDeclaration ->ExportDeclaration : ExportDeclaration + hasGlobalName(name: string): boolean; +>hasGlobalName : (name: string) => boolean +>name : string - getExpressionNameSubstitution(node: Identifier): string; ->getExpressionNameSubstitution : (node: Identifier) => string + getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string; +>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string >node : Identifier >Identifier : Identifier - - getExportAssignmentName(node: SourceFile): string; ->getExportAssignmentName : (node: SourceFile) => string ->node : SourceFile ->SourceFile : SourceFile - - isReferencedImportDeclaration(node: Node): boolean; ->isReferencedImportDeclaration : (node: Node) => boolean +>getGeneratedNameForNode : (node: Node) => string >node : Node >Node : Node + isValueAliasDeclaration(node: Node): boolean; +>isValueAliasDeclaration : (node: Node) => boolean +>node : Node +>Node : Node + + isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean; +>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean +>node : Node +>Node : Node +>checkChildren : boolean + isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean; >isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean >node : ImportEqualsDeclaration @@ -3268,6 +3376,12 @@ declare module "typescript" { >node : Declaration >Declaration : Declaration + collectLinkedAliases(node: Identifier): Node[]; +>collectLinkedAliases : (node: Identifier) => Node[] +>node : Identifier +>Identifier : Identifier +>Node : Node + isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; >isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean >node : FunctionLikeDeclaration @@ -3294,6 +3408,17 @@ declare module "typescript" { >flags : TypeFormatFlags >TypeFormatFlags : TypeFormatFlags >writer : SymbolWriter +>SymbolWriter : SymbolWriter + + writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void; +>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void +>expr : Expression +>Expression : Expression +>enclosingDeclaration : Node +>Node : Node +>flags : TypeFormatFlags +>TypeFormatFlags : TypeFormatFlags +>writer : SymbolWriter >SymbolWriter : SymbolWriter isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult; @@ -3306,10 +3431,11 @@ declare module "typescript" { >SymbolFlags : SymbolFlags >SymbolAccessiblityResult : SymbolAccessiblityResult - isEntityNameVisible(entityName: EntityName, enclosingDeclaration: Node): SymbolVisibilityResult; ->isEntityNameVisible : (entityName: Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult ->entityName : Identifier | QualifiedName + isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult; +>isEntityNameVisible : (entityName: Identifier | Expression | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult +>entityName : Identifier | Expression | QualifiedName >EntityName : Identifier | QualifiedName +>Expression : Expression >enclosingDeclaration : Node >Node : Node >SymbolVisibilityResult : SymbolVisibilityResult @@ -3321,11 +3447,16 @@ declare module "typescript" { >PropertyAccessExpression : PropertyAccessExpression >ElementAccessExpression : ElementAccessExpression - isUnknownIdentifier(location: Node, name: string): boolean; ->isUnknownIdentifier : (location: Node, name: string) => boolean + resolvesToSomeValue(location: Node, name: string): boolean; +>resolvesToSomeValue : (location: Node, name: string) => boolean >location : Node >Node : Node >name : string + + getBlockScopedVariableId(node: Identifier): number; +>getBlockScopedVariableId : (node: Identifier) => number +>node : Identifier +>Identifier : Identifier } const enum SymbolFlags { >SymbolFlags : SymbolFlags @@ -3399,8 +3530,8 @@ declare module "typescript" { ExportNamespace = 4194304, >ExportNamespace : SymbolFlags - Import = 8388608, ->Import : SymbolFlags + Alias = 8388608, +>Alias : SymbolFlags Instantiated = 16777216, >Instantiated : SymbolFlags @@ -3420,6 +3551,9 @@ declare module "typescript" { Optional = 536870912, >Optional : SymbolFlags + ExportStar = 1073741824, +>ExportStar : SymbolFlags + Enum = 384, >Enum : SymbolFlags @@ -3492,8 +3626,8 @@ declare module "typescript" { TypeAliasExcludes = 793056, >TypeAliasExcludes : SymbolFlags - ImportExcludes = 8388608, ->ImportExcludes : SymbolFlags + AliasExcludes = 8388608, +>AliasExcludes : SymbolFlags ModuleMember = 8914931, >ModuleMember : SymbolFlags @@ -3584,13 +3718,6 @@ declare module "typescript" { referenced?: boolean; >referenced : boolean - exportAssignmentChecked?: boolean; ->exportAssignmentChecked : boolean - - exportAssignmentSymbol?: Symbol; ->exportAssignmentSymbol : Symbol ->Symbol : Symbol - unionType?: UnionType; >unionType : UnionType >UnionType : UnionType @@ -3598,6 +3725,9 @@ declare module "typescript" { resolvedExports?: SymbolTable; >resolvedExports : SymbolTable >SymbolTable : SymbolTable + + exportsChecked?: boolean; +>exportsChecked : boolean } interface TransientSymbol extends Symbol, SymbolLinks { >TransientSymbol : TransientSymbol @@ -3637,6 +3767,12 @@ declare module "typescript" { EnumValuesComputed = 128, >EnumValuesComputed : NodeCheckFlags + + BlockScopedBindingInLoop = 256, +>BlockScopedBindingInLoop : NodeCheckFlags + + EmitDecorate = 512, +>EmitDecorate : NodeCheckFlags } interface NodeLinks { >NodeLinks : NodeLinks @@ -3996,38 +4132,6 @@ declare module "typescript" { >t : Type >Type : Type >Type : Type - } - interface TypeInferences { ->TypeInferences : TypeInferences - - primary: Type[]; ->primary : Type[] ->Type : Type - - secondary: Type[]; ->secondary : Type[] ->Type : Type - } - interface InferenceContext { ->InferenceContext : InferenceContext - - typeParameters: TypeParameter[]; ->typeParameters : TypeParameter[] ->TypeParameter : TypeParameter - - inferUnionTypes: boolean; ->inferUnionTypes : boolean - - inferences: TypeInferences[]; ->inferences : TypeInferences[] ->TypeInferences : TypeInferences - - inferredTypes: Type[]; ->inferredTypes : Type[] ->Type : Type - - failedTypeParameterIndex?: number; ->failedTypeParameterIndex : number } interface DiagnosticMessage { >DiagnosticMessage : DiagnosticMessage @@ -4104,9 +4208,6 @@ declare module "typescript" { charset?: string; >charset : string - codepage?: number; ->codepage : number - declaration?: boolean; >declaration : boolean @@ -4147,9 +4248,6 @@ declare module "typescript" { noLib?: boolean; >noLib : boolean - noLibCheck?: boolean; ->noLibCheck : boolean - noResolve?: boolean; >noResolve : boolean @@ -4187,8 +4285,8 @@ declare module "typescript" { watch?: boolean; >watch : boolean - stripInternal?: boolean; ->stripInternal : boolean + separateCompilation?: boolean; +>separateCompilation : boolean [option: string]: string | number | boolean; >option : string @@ -4744,6 +4842,9 @@ declare module "typescript" { getTokenValue(): string; >getTokenValue : () => string + hasExtendedUnicodeEscape(): boolean; +>hasExtendedUnicodeEscape : () => boolean + hasPrecedingLineBreak(): boolean; >hasPrecedingLineBreak : () => boolean @@ -4969,10 +5070,19 @@ declare module "typescript" { >TypeChecker : TypeChecker } declare module "typescript" { - function createCompilerHost(options: CompilerOptions): CompilerHost; ->createCompilerHost : (options: CompilerOptions) => CompilerHost + /** The version of the TypeScript compiler release */ + let version: string; +>version : string + + function findConfigFile(searchPath: string): string; +>findConfigFile : (searchPath: string) => string +>searchPath : string + + function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; +>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost >options : CompilerOptions >CompilerOptions : CompilerOptions +>setParentNodes : boolean >CompilerHost : CompilerHost function getPreEmitDiagnostics(program: Program): Diagnostic[]; @@ -4997,7 +5107,29 @@ declare module "typescript" { >Program : Program } declare module "typescript" { - var servicesVersion: string; + /** + * Read tsconfig.json file + * @param fileName The path to the config file + */ + function readConfigFile(fileName: string): any; +>readConfigFile : (fileName: string) => any +>fileName : string + + /** + * Parse the contents of a config file (tsconfig.json). + * @param json The contents of the config file to parse + * @param basePath A root directory to resolve relative path entries in the config + * file to. e.g. outDir + */ + function parseConfigFile(json: any, basePath?: string): ParsedCommandLine; +>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine +>json : any +>basePath : string +>ParsedCommandLine : ParsedCommandLine +} +declare module "typescript" { + /** The version of the language service API */ + let servicesVersion: string; >servicesVersion : string interface Node { @@ -5155,17 +5287,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - version: string; ->version : string - - scriptSnapshot: IScriptSnapshot; ->scriptSnapshot : IScriptSnapshot ->IScriptSnapshot : IScriptSnapshot - - nameTable: Map; ->nameTable : Map ->Map : Map - getNamedDeclarations(): Declaration[]; >getNamedDeclarations : () => Declaration[] >Declaration : Declaration @@ -5396,6 +5517,12 @@ declare module "typescript" { >position : number >ReferenceEntry : ReferenceEntry + findReferences(fileName: string, position: number): ReferencedSymbol[]; +>findReferences : (fileName: string, position: number) => ReferencedSymbol[] +>fileName : string +>position : number +>ReferencedSymbol : ReferencedSymbol + getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[]; >getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[] >searchValue : string @@ -5666,6 +5793,17 @@ declare module "typescript" { containerName: string; >containerName : string + } + interface ReferencedSymbol { +>ReferencedSymbol : ReferencedSymbol + + definition: DefinitionInfo; +>definition : DefinitionInfo +>DefinitionInfo : DefinitionInfo + + references: ReferenceEntry[]; +>references : ReferenceEntry[] +>ReferenceEntry : ReferenceEntry } enum SymbolDisplayPartKind { >SymbolDisplayPartKind : SymbolDisplayPartKind @@ -5888,6 +6026,9 @@ declare module "typescript" { kindModifiers: string; >kindModifiers : string + + sortText: string; +>sortText : string } interface CompletionEntryDetails { >CompletionEntryDetails : CompletionEntryDetails @@ -6116,36 +6257,24 @@ declare module "typescript" { /** * Request an updated version of an already existing SourceFile with a given fileName - * and compilationSettings. The update will intern call updateLanguageServiceSourceFile + * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile * to get an updated SourceFile. * - * Note: It is not allowed to call update on a SourceFile that was not acquired from this - * registry originally. - * - * @param sourceFile The original sourceFile object to update * @param fileName The name of the file requested * @param compilationSettings Some compilation settings like target affects the * shape of a the resulting SourceFile. This allows the DocumentRegistry to store * multiple copies of the same file for different compilation settings. - * @parm scriptSnapshot Text of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm version Current version of the file. Only used if the file was not found - * in the registry and a new one was created. - * @parm textChangeRange Change ranges since the last snapshot. Only used if the file - * was not found in the registry and a new one was created. + * @param scriptSnapshot Text of the file. + * @param version Current version of the file. */ - updateDocument(sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange): SourceFile; ->updateDocument : (sourceFile: SourceFile, fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange) => SourceFile ->sourceFile : SourceFile ->SourceFile : SourceFile + updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile; +>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile >fileName : string >compilationSettings : CompilerOptions >CompilerOptions : CompilerOptions >scriptSnapshot : IScriptSnapshot >IScriptSnapshot : IScriptSnapshot >version : string ->textChangeRange : TextChangeRange ->TextChangeRange : TextChangeRange >SourceFile : SourceFile /** @@ -6169,6 +6298,9 @@ declare module "typescript" { static unknown: string; >unknown : string + static warning: string; +>warning : string + static keyword: string; >keyword : string @@ -6359,6 +6491,15 @@ declare module "typescript" { throwIfCancellationRequested(): void; >throwIfCancellationRequested : () => void } + function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string; +>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string +>input : string +>compilerOptions : CompilerOptions +>CompilerOptions : CompilerOptions +>fileName : string +>diagnostics : Diagnostic[] +>Diagnostic : Diagnostic + function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile; >createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile >fileName : string @@ -6370,7 +6511,7 @@ declare module "typescript" { >setNodeParents : boolean >SourceFile : SourceFile - var disableIncrementalParsing: boolean; + let disableIncrementalParsing: boolean; >disableIncrementalParsing : boolean function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile; diff --git a/tests/baselines/reference/ES3For-ofTypeCheck1.errors.txt b/tests/baselines/reference/ES3For-ofTypeCheck1.errors.txt new file mode 100644 index 00000000000..6437cfbc73d --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck1.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck1.ts(1,15): error TS2494: Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher. + + +==== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck1.ts (1 errors) ==== + for (var v of "") { } + ~~ +!!! error TS2494: Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/ES3For-ofTypeCheck1.js b/tests/baselines/reference/ES3For-ofTypeCheck1.js new file mode 100644 index 00000000000..19efa96808b --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck1.js @@ -0,0 +1,7 @@ +//// [ES3For-ofTypeCheck1.ts] +for (var v of "") { } + +//// [ES3For-ofTypeCheck1.js] +for (var _i = 0, _a = ""; _i < _a.length; _i++) { + var v = _a[_i]; +} diff --git a/tests/baselines/reference/ES3For-ofTypeCheck2.js b/tests/baselines/reference/ES3For-ofTypeCheck2.js new file mode 100644 index 00000000000..865a5493a0c --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck2.js @@ -0,0 +1,7 @@ +//// [ES3For-ofTypeCheck2.ts] +for (var v of [true]) { } + +//// [ES3For-ofTypeCheck2.js] +for (var _i = 0, _a = [true]; _i < _a.length; _i++) { + var v = _a[_i]; +} diff --git a/tests/baselines/reference/ES3For-ofTypeCheck2.types b/tests/baselines/reference/ES3For-ofTypeCheck2.types new file mode 100644 index 00000000000..f5ca0ab17e8 --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck2.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck2.ts === +for (var v of [true]) { } +>v : boolean +>[true] : boolean[] + diff --git a/tests/baselines/reference/ES3For-ofTypeCheck4.errors.txt b/tests/baselines/reference/ES3For-ofTypeCheck4.errors.txt new file mode 100644 index 00000000000..80e60008da4 --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck4.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck4.ts(2,17): error TS2494: Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher. + + +==== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck4.ts (1 errors) ==== + var union: string | string[]; + for (const v of union) { } + ~~~~~ +!!! error TS2494: Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/ES3For-ofTypeCheck4.js b/tests/baselines/reference/ES3For-ofTypeCheck4.js new file mode 100644 index 00000000000..7386a1967eb --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck4.js @@ -0,0 +1,9 @@ +//// [ES3For-ofTypeCheck4.ts] +var union: string | string[]; +for (const v of union) { } + +//// [ES3For-ofTypeCheck4.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES3For-ofTypeCheck6.js b/tests/baselines/reference/ES3For-ofTypeCheck6.js new file mode 100644 index 00000000000..ddc11808b18 --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck6.js @@ -0,0 +1,9 @@ +//// [ES3For-ofTypeCheck6.ts] +var union: string[] | number[]; +for (var v of union) { } + +//// [ES3For-ofTypeCheck6.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES3For-ofTypeCheck6.types b/tests/baselines/reference/ES3For-ofTypeCheck6.types new file mode 100644 index 00000000000..d7e6045b029 --- /dev/null +++ b/tests/baselines/reference/ES3For-ofTypeCheck6.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES3For-ofTypeCheck6.ts === +var union: string[] | number[]; +>union : string[] | number[] + +for (var v of union) { } +>v : string | number +>union : string[] | number[] + diff --git a/tests/baselines/reference/ES5For-of1.errors.txt b/tests/baselines/reference/ES5For-of1.errors.txt new file mode 100644 index 00000000000..16222725b3d --- /dev/null +++ b/tests/baselines/reference/ES5For-of1.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of1.ts(2,5): error TS2304: Cannot find name 'console'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of1.ts (1 errors) ==== + for (var v of ['a', 'b', 'c']) { + console.log(v); + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of1.js b/tests/baselines/reference/ES5For-of1.js new file mode 100644 index 00000000000..dffe843399f --- /dev/null +++ b/tests/baselines/reference/ES5For-of1.js @@ -0,0 +1,11 @@ +//// [ES5For-of1.ts] +for (var v of ['a', 'b', 'c']) { + console.log(v); +} + +//// [ES5For-of1.js] +for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { + var v = _a[_i]; + console.log(v); +} +//# sourceMappingURL=ES5For-of1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of1.js.map b/tests/baselines/reference/ES5For-of1.js.map new file mode 100644 index 00000000000..568ac1987e7 --- /dev/null +++ b/tests/baselines/reference/ES5For-of1.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of1.js.map] +{"version":3,"file":"ES5For-of1.js","sourceRoot":"","sources":["ES5For-of1.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAClB"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of1.sourcemap.txt b/tests/baselines/reference/ES5For-of1.sourcemap.txt new file mode 100644 index 00000000000..7bdd7edfa13 --- /dev/null +++ b/tests/baselines/reference/ES5For-of1.sourcemap.txt @@ -0,0 +1,116 @@ +=================================================================== +JsFile: ES5For-of1.js +mapUrl: ES5For-of1.js.map +sourceRoot: +sources: ES5For-of1.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of1.js +sourceFile:ES5For-of1.ts +------------------------------------------------------------------- +>>>for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { +1 > +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^ +9 > ^^ +10> ^^^ +11> ^^ +12> ^^^ +13> ^ +14> ^^ +15> ^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^ +18> ^ +1 > +2 >for +3 > +4 > (var v of +5 > ['a', 'b', 'c'] +6 > +7 > [ +8 > 'a' +9 > , +10> 'b' +11> , +12> 'c' +13> ] +14> +15> var v +16> +17> var v of ['a', 'b', 'c'] +18> ) +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) +3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) +4 >Emitted(1, 6) Source(1, 15) + SourceIndex(0) +5 >Emitted(1, 16) Source(1, 30) + SourceIndex(0) +6 >Emitted(1, 18) Source(1, 15) + SourceIndex(0) +7 >Emitted(1, 24) Source(1, 16) + SourceIndex(0) +8 >Emitted(1, 27) Source(1, 19) + SourceIndex(0) +9 >Emitted(1, 29) Source(1, 21) + SourceIndex(0) +10>Emitted(1, 32) Source(1, 24) + SourceIndex(0) +11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) +12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) +13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) +18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) +--- +>>> var v = _a[_i]; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^^^^^^^ +5 > ^^-> +1 > +2 > var +3 > v +4 > +1 >Emitted(2, 5) Source(1, 6) + SourceIndex(0) +2 >Emitted(2, 9) Source(1, 10) + SourceIndex(0) +3 >Emitted(2, 10) Source(1, 11) + SourceIndex(0) +4 >Emitted(2, 19) Source(1, 11) + SourceIndex(0) +--- +>>> console.log(v); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^ +8 > ^ +1-> of ['a', 'b', 'c']) { + > +2 > console +3 > . +4 > log +5 > ( +6 > v +7 > ) +8 > ; +1->Emitted(3, 5) Source(2, 5) + SourceIndex(0) +2 >Emitted(3, 12) Source(2, 12) + SourceIndex(0) +3 >Emitted(3, 13) Source(2, 13) + SourceIndex(0) +4 >Emitted(3, 16) Source(2, 16) + SourceIndex(0) +5 >Emitted(3, 17) Source(2, 17) + SourceIndex(0) +6 >Emitted(3, 18) Source(2, 18) + SourceIndex(0) +7 >Emitted(3, 19) Source(2, 19) + SourceIndex(0) +8 >Emitted(3, 20) Source(2, 20) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(4, 2) Source(3, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of10.js b/tests/baselines/reference/ES5For-of10.js new file mode 100644 index 00000000000..f12dc9d8acb --- /dev/null +++ b/tests/baselines/reference/ES5For-of10.js @@ -0,0 +1,20 @@ +//// [ES5For-of10.ts] +function foo() { + return { x: 0 }; +} +for (foo().x of []) { + for (foo().x of []) + var p = foo().x; +} + +//// [ES5For-of10.js] +function foo() { + return { x: 0 }; +} +for (var _i = 0, _a = []; _i < _a.length; _i++) { + foo().x = _a[_i]; + for (var _b = 0, _c = []; _b < _c.length; _b++) { + foo().x = _c[_b]; + var p = foo().x; + } +} diff --git a/tests/baselines/reference/ES5For-of10.types b/tests/baselines/reference/ES5For-of10.types new file mode 100644 index 00000000000..32a2adcf3da --- /dev/null +++ b/tests/baselines/reference/ES5For-of10.types @@ -0,0 +1,29 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of10.ts === +function foo() { +>foo : () => { x: number; } + + return { x: 0 }; +>{ x: 0 } : { x: number; } +>x : number +} +for (foo().x of []) { +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number +>[] : undefined[] + + for (foo().x of []) +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number +>[] : undefined[] + + var p = foo().x; +>p : number +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number +} diff --git a/tests/baselines/reference/ES5For-of11.js b/tests/baselines/reference/ES5For-of11.js new file mode 100644 index 00000000000..dc1268524f1 --- /dev/null +++ b/tests/baselines/reference/ES5For-of11.js @@ -0,0 +1,9 @@ +//// [ES5For-of11.ts] +var v; +for (v of []) { } + +//// [ES5For-of11.js] +var v; +for (var _i = 0, _a = []; _i < _a.length; _i++) { + v = _a[_i]; +} diff --git a/tests/baselines/reference/ES5For-of11.types b/tests/baselines/reference/ES5For-of11.types new file mode 100644 index 00000000000..e51bc46f157 --- /dev/null +++ b/tests/baselines/reference/ES5For-of11.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of11.ts === +var v; +>v : any + +for (v of []) { } +>v : any +>[] : undefined[] + diff --git a/tests/baselines/reference/ES5For-of12.errors.txt b/tests/baselines/reference/ES5For-of12.errors.txt new file mode 100644 index 00000000000..02ed4c335a6 --- /dev/null +++ b/tests/baselines/reference/ES5For-of12.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of12.ts(1,7): error TS2364: Invalid left-hand side of assignment expression. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of12.ts (1 errors) ==== + for ([""] of [[""]]) { } + ~~ +!!! error TS2364: Invalid left-hand side of assignment expression. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of12.js b/tests/baselines/reference/ES5For-of12.js new file mode 100644 index 00000000000..99c5fad5fad --- /dev/null +++ b/tests/baselines/reference/ES5For-of12.js @@ -0,0 +1,7 @@ +//// [ES5For-of12.ts] +for ([""] of [[""]]) { } + +//// [ES5For-of12.js] +for (var _i = 0, _a = [[""]]; _i < _a.length; _i++) { + "" = _a[_i][0]; +} diff --git a/tests/baselines/reference/ES5For-of13.js b/tests/baselines/reference/ES5For-of13.js new file mode 100644 index 00000000000..2bcf98e14f1 --- /dev/null +++ b/tests/baselines/reference/ES5For-of13.js @@ -0,0 +1,11 @@ +//// [ES5For-of13.ts] +for (let v of ['a', 'b', 'c']) { + var x = v; +} + +//// [ES5For-of13.js] +for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { + var v = _a[_i]; + var x = v; +} +//# sourceMappingURL=ES5For-of13.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of13.js.map b/tests/baselines/reference/ES5For-of13.js.map new file mode 100644 index 00000000000..5ff54bb8816 --- /dev/null +++ b/tests/baselines/reference/ES5For-of13.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of13.js.map] +{"version":3,"file":"ES5For-of13.js","sourceRoot":"","sources":["ES5For-of13.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CACb"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of13.sourcemap.txt b/tests/baselines/reference/ES5For-of13.sourcemap.txt new file mode 100644 index 00000000000..c3a188e7221 --- /dev/null +++ b/tests/baselines/reference/ES5For-of13.sourcemap.txt @@ -0,0 +1,109 @@ +=================================================================== +JsFile: ES5For-of13.js +mapUrl: ES5For-of13.js.map +sourceRoot: +sources: ES5For-of13.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of13.js +sourceFile:ES5For-of13.ts +------------------------------------------------------------------- +>>>for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { +1 > +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^ +9 > ^^ +10> ^^^ +11> ^^ +12> ^^^ +13> ^ +14> ^^ +15> ^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^ +18> ^ +1 > +2 >for +3 > +4 > (let v of +5 > ['a', 'b', 'c'] +6 > +7 > [ +8 > 'a' +9 > , +10> 'b' +11> , +12> 'c' +13> ] +14> +15> let v +16> +17> let v of ['a', 'b', 'c'] +18> ) +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) +3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) +4 >Emitted(1, 6) Source(1, 15) + SourceIndex(0) +5 >Emitted(1, 16) Source(1, 30) + SourceIndex(0) +6 >Emitted(1, 18) Source(1, 15) + SourceIndex(0) +7 >Emitted(1, 24) Source(1, 16) + SourceIndex(0) +8 >Emitted(1, 27) Source(1, 19) + SourceIndex(0) +9 >Emitted(1, 29) Source(1, 21) + SourceIndex(0) +10>Emitted(1, 32) Source(1, 24) + SourceIndex(0) +11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) +12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) +13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) +18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) +--- +>>> var v = _a[_i]; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^^^^^^^ +1 > +2 > let +3 > v +4 > +1 >Emitted(2, 5) Source(1, 6) + SourceIndex(0) +2 >Emitted(2, 9) Source(1, 10) + SourceIndex(0) +3 >Emitted(2, 10) Source(1, 11) + SourceIndex(0) +4 >Emitted(2, 19) Source(1, 11) + SourceIndex(0) +--- +>>> var x = v; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^ +1 > of ['a', 'b', 'c']) { + > +2 > var +3 > x +4 > = +5 > v +6 > ; +1 >Emitted(3, 5) Source(2, 5) + SourceIndex(0) +2 >Emitted(3, 9) Source(2, 9) + SourceIndex(0) +3 >Emitted(3, 10) Source(2, 10) + SourceIndex(0) +4 >Emitted(3, 13) Source(2, 13) + SourceIndex(0) +5 >Emitted(3, 14) Source(2, 14) + SourceIndex(0) +6 >Emitted(3, 15) Source(2, 15) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(4, 2) Source(3, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of13.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of13.types b/tests/baselines/reference/ES5For-of13.types new file mode 100644 index 00000000000..64aac2ae4b2 --- /dev/null +++ b/tests/baselines/reference/ES5For-of13.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of13.ts === +for (let v of ['a', 'b', 'c']) { +>v : string +>['a', 'b', 'c'] : string[] + + var x = v; +>x : string +>v : string +} diff --git a/tests/baselines/reference/ES5For-of14.js b/tests/baselines/reference/ES5For-of14.js new file mode 100644 index 00000000000..1011bc3558c --- /dev/null +++ b/tests/baselines/reference/ES5For-of14.js @@ -0,0 +1,10 @@ +//// [ES5For-of14.ts] +for (const v of []) { + var x = v; +} + +//// [ES5For-of14.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + var x = v; +} diff --git a/tests/baselines/reference/ES5For-of14.types b/tests/baselines/reference/ES5For-of14.types new file mode 100644 index 00000000000..0a4f9a78453 --- /dev/null +++ b/tests/baselines/reference/ES5For-of14.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of14.ts === +for (const v of []) { +>v : any +>[] : undefined[] + + var x = v; +>x : any +>v : any +} diff --git a/tests/baselines/reference/ES5For-of15.js b/tests/baselines/reference/ES5For-of15.js new file mode 100644 index 00000000000..5a1b8327107 --- /dev/null +++ b/tests/baselines/reference/ES5For-of15.js @@ -0,0 +1,17 @@ +//// [ES5For-of15.ts] +for (let v of []) { + v; + for (const v of []) { + var x = v; + } +} + +//// [ES5For-of15.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + v; + for (var _b = 0, _c = []; _b < _c.length; _b++) { + var v_1 = _c[_b]; + var x = v_1; + } +} diff --git a/tests/baselines/reference/ES5For-of15.types b/tests/baselines/reference/ES5For-of15.types new file mode 100644 index 00000000000..90409b8b167 --- /dev/null +++ b/tests/baselines/reference/ES5For-of15.types @@ -0,0 +1,17 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of15.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + v; +>v : any + + for (const v of []) { +>v : any +>[] : undefined[] + + var x = v; +>x : any +>v : any + } +} diff --git a/tests/baselines/reference/ES5For-of16.js b/tests/baselines/reference/ES5For-of16.js new file mode 100644 index 00000000000..88f2c39414a --- /dev/null +++ b/tests/baselines/reference/ES5For-of16.js @@ -0,0 +1,19 @@ +//// [ES5For-of16.ts] +for (let v of []) { + v; + for (let v of []) { + var x = v; + v++; + } +} + +//// [ES5For-of16.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + v; + for (var _b = 0, _c = []; _b < _c.length; _b++) { + var v_1 = _c[_b]; + var x = v_1; + v_1++; + } +} diff --git a/tests/baselines/reference/ES5For-of16.types b/tests/baselines/reference/ES5For-of16.types new file mode 100644 index 00000000000..94f01509711 --- /dev/null +++ b/tests/baselines/reference/ES5For-of16.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of16.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + v; +>v : any + + for (let v of []) { +>v : any +>[] : undefined[] + + var x = v; +>x : any +>v : any + + v++; +>v++ : number +>v : any + } +} diff --git a/tests/baselines/reference/ES5For-of17.errors.txt b/tests/baselines/reference/ES5For-of17.errors.txt new file mode 100644 index 00000000000..3b9ab93a565 --- /dev/null +++ b/tests/baselines/reference/ES5For-of17.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of17.ts(3,20): error TS2448: Block-scoped variable 'v' used before its declaration. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of17.ts (1 errors) ==== + for (let v of []) { + v; + for (let v of [v]) { + ~ +!!! error TS2448: Block-scoped variable 'v' used before its declaration. + var x = v; + v++; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of17.js b/tests/baselines/reference/ES5For-of17.js new file mode 100644 index 00000000000..50064d82932 --- /dev/null +++ b/tests/baselines/reference/ES5For-of17.js @@ -0,0 +1,19 @@ +//// [ES5For-of17.ts] +for (let v of []) { + v; + for (let v of [v]) { + var x = v; + v++; + } +} + +//// [ES5For-of17.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + v; + for (var _b = 0, _c = [v]; _b < _c.length; _b++) { + var v_1 = _c[_b]; + var x = v_1; + v_1++; + } +} diff --git a/tests/baselines/reference/ES5For-of18.js b/tests/baselines/reference/ES5For-of18.js new file mode 100644 index 00000000000..0d4809ed72d --- /dev/null +++ b/tests/baselines/reference/ES5For-of18.js @@ -0,0 +1,18 @@ +//// [ES5For-of18.ts] +for (let v of []) { + v; +} +for (let v of []) { + v; +} + + +//// [ES5For-of18.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + v; +} +for (var _b = 0, _c = []; _b < _c.length; _b++) { + var v = _c[_b]; + v; +} diff --git a/tests/baselines/reference/ES5For-of18.types b/tests/baselines/reference/ES5For-of18.types new file mode 100644 index 00000000000..e78bc846df6 --- /dev/null +++ b/tests/baselines/reference/ES5For-of18.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of18.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + v; +>v : any +} +for (let v of []) { +>v : any +>[] : undefined[] + + v; +>v : any +} + diff --git a/tests/baselines/reference/ES5For-of19.js b/tests/baselines/reference/ES5For-of19.js new file mode 100644 index 00000000000..2714574ab5b --- /dev/null +++ b/tests/baselines/reference/ES5For-of19.js @@ -0,0 +1,22 @@ +//// [ES5For-of19.ts] +for (let v of []) { + v; + function foo() { + for (const v of []) { + v; + } + } +} + + +//// [ES5For-of19.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + v; + function foo() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v_1 = _a[_i]; + v_1; + } + } +} diff --git a/tests/baselines/reference/ES5For-of19.types b/tests/baselines/reference/ES5For-of19.types new file mode 100644 index 00000000000..d95dc63d262 --- /dev/null +++ b/tests/baselines/reference/ES5For-of19.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of19.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + v; +>v : any + + function foo() { +>foo : () => void + + for (const v of []) { +>v : any +>[] : undefined[] + + v; +>v : any + } + } +} + diff --git a/tests/baselines/reference/ES5For-of2.js b/tests/baselines/reference/ES5For-of2.js new file mode 100644 index 00000000000..3d83df36c76 --- /dev/null +++ b/tests/baselines/reference/ES5For-of2.js @@ -0,0 +1,10 @@ +//// [ES5For-of2.ts] +for (var v of []) { + var x = v; +} + +//// [ES5For-of2.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + var x = v; +} diff --git a/tests/baselines/reference/ES5For-of2.types b/tests/baselines/reference/ES5For-of2.types new file mode 100644 index 00000000000..3e680c44bc8 --- /dev/null +++ b/tests/baselines/reference/ES5For-of2.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of2.ts === +for (var v of []) { +>v : any +>[] : undefined[] + + var x = v; +>x : any +>v : any +} diff --git a/tests/baselines/reference/ES5For-of20.errors.txt b/tests/baselines/reference/ES5For-of20.errors.txt new file mode 100644 index 00000000000..772d5143a04 --- /dev/null +++ b/tests/baselines/reference/ES5For-of20.errors.txt @@ -0,0 +1,15 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of20.ts(3,20): error TS2448: Block-scoped variable 'v' used before its declaration. +tests/cases/conformance/statements/for-ofStatements/ES5For-of20.ts(4,15): error TS1155: 'const' declarations must be initialized + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of20.ts (2 errors) ==== + for (let v of []) { + let v; + for (let v of [v]) { + ~ +!!! error TS2448: Block-scoped variable 'v' used before its declaration. + const v; + ~ +!!! error TS1155: 'const' declarations must be initialized + } + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of20.js b/tests/baselines/reference/ES5For-of20.js new file mode 100644 index 00000000000..c6376ab05d7 --- /dev/null +++ b/tests/baselines/reference/ES5For-of20.js @@ -0,0 +1,17 @@ +//// [ES5For-of20.ts] +for (let v of []) { + let v; + for (let v of [v]) { + const v; + } +} + +//// [ES5For-of20.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + var v_1; + for (var _b = 0, _c = [v]; _b < _c.length; _b++) { + var v_2 = _c[_b]; + var v_3; + } +} diff --git a/tests/baselines/reference/ES5For-of21.js b/tests/baselines/reference/ES5For-of21.js new file mode 100644 index 00000000000..d7e4db63c3b --- /dev/null +++ b/tests/baselines/reference/ES5For-of21.js @@ -0,0 +1,12 @@ +//// [ES5For-of21.ts] +for (let v of []) { + for (let _i of []) { } +} + +//// [ES5For-of21.js] +for (var _a = 0, _b = []; _a < _b.length; _a++) { + var v = _b[_a]; + for (var _c = 0, _d = []; _c < _d.length; _c++) { + var _i = _d[_c]; + } +} diff --git a/tests/baselines/reference/ES5For-of21.types b/tests/baselines/reference/ES5For-of21.types new file mode 100644 index 00000000000..a15942fd013 --- /dev/null +++ b/tests/baselines/reference/ES5For-of21.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of21.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + for (let _i of []) { } +>_i : any +>[] : undefined[] +} diff --git a/tests/baselines/reference/ES5For-of22.errors.txt b/tests/baselines/reference/ES5For-of22.errors.txt new file mode 100644 index 00000000000..914be13c63c --- /dev/null +++ b/tests/baselines/reference/ES5For-of22.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of22.ts(3,5): error TS2304: Cannot find name 'console'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of22.ts (1 errors) ==== + for (var x of [1, 2, 3]) { + let _a = 0; + console.log(x); + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of22.js b/tests/baselines/reference/ES5For-of22.js new file mode 100644 index 00000000000..6e88a5c4d71 --- /dev/null +++ b/tests/baselines/reference/ES5For-of22.js @@ -0,0 +1,12 @@ +//// [ES5For-of22.ts] +for (var x of [1, 2, 3]) { + let _a = 0; + console.log(x); +} + +//// [ES5For-of22.js] +for (var _i = 0, _b = [1, 2, 3]; _i < _b.length; _i++) { + var x = _b[_i]; + var _a = 0; + console.log(x); +} diff --git a/tests/baselines/reference/ES5For-of23.errors.txt b/tests/baselines/reference/ES5For-of23.errors.txt new file mode 100644 index 00000000000..cbc043e32d2 --- /dev/null +++ b/tests/baselines/reference/ES5For-of23.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of23.ts(3,5): error TS2304: Cannot find name 'console'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of23.ts (1 errors) ==== + for (var x of [1, 2, 3]) { + var _a = 0; + console.log(x); + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of23.js b/tests/baselines/reference/ES5For-of23.js new file mode 100644 index 00000000000..3842591820f --- /dev/null +++ b/tests/baselines/reference/ES5For-of23.js @@ -0,0 +1,12 @@ +//// [ES5For-of23.ts] +for (var x of [1, 2, 3]) { + var _a = 0; + console.log(x); +} + +//// [ES5For-of23.js] +for (var _i = 0, _b = [1, 2, 3]; _i < _b.length; _i++) { + var x = _b[_i]; + var _a = 0; + console.log(x); +} diff --git a/tests/baselines/reference/ES5For-of24.js b/tests/baselines/reference/ES5For-of24.js new file mode 100644 index 00000000000..cdc0876692f --- /dev/null +++ b/tests/baselines/reference/ES5For-of24.js @@ -0,0 +1,12 @@ +//// [ES5For-of24.ts] +var a = [1, 2, 3]; +for (var v of a) { + let a = 0; +} + +//// [ES5For-of24.js] +var a = [1, 2, 3]; +for (var _i = 0; _i < a.length; _i++) { + var v = a[_i]; + var a_1 = 0; +} diff --git a/tests/baselines/reference/ES5For-of24.types b/tests/baselines/reference/ES5For-of24.types new file mode 100644 index 00000000000..7170073b5d9 --- /dev/null +++ b/tests/baselines/reference/ES5For-of24.types @@ -0,0 +1,12 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of24.ts === +var a = [1, 2, 3]; +>a : number[] +>[1, 2, 3] : number[] + +for (var v of a) { +>v : number +>a : number[] + + let a = 0; +>a : number +} diff --git a/tests/baselines/reference/ES5For-of25.js b/tests/baselines/reference/ES5For-of25.js new file mode 100644 index 00000000000..756c14fbe81 --- /dev/null +++ b/tests/baselines/reference/ES5For-of25.js @@ -0,0 +1,15 @@ +//// [ES5For-of25.ts] +var a = [1, 2, 3]; +for (var v of a) { + v; + a; +} + +//// [ES5For-of25.js] +var a = [1, 2, 3]; +for (var _i = 0; _i < a.length; _i++) { + var v = a[_i]; + v; + a; +} +//# sourceMappingURL=ES5For-of25.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of25.js.map b/tests/baselines/reference/ES5For-of25.js.map new file mode 100644 index 00000000000..cc31767128b --- /dev/null +++ b/tests/baselines/reference/ES5For-of25.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of25.js.map] +{"version":3,"file":"ES5For-of25.js","sourceRoot":"","sources":["ES5For-of25.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG,CAAC,CAAU,UAAC,EAAV,aAAK,EAAL,IAAU,CAAC;IAAX,IAAI,CAAC,GAAI,CAAC,IAAL;IACN,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of25.sourcemap.txt b/tests/baselines/reference/ES5For-of25.sourcemap.txt new file mode 100644 index 00000000000..623627fde20 --- /dev/null +++ b/tests/baselines/reference/ES5For-of25.sourcemap.txt @@ -0,0 +1,135 @@ +=================================================================== +JsFile: ES5For-of25.js +mapUrl: ES5For-of25.js.map +sourceRoot: +sources: ES5For-of25.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of25.js +sourceFile:ES5For-of25.ts +------------------------------------------------------------------- +>>>var a = [1, 2, 3]; +1 > +2 >^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^ +9 > ^^ +10> ^ +11> ^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^-> +1 > +2 >var +3 > a +4 > = +5 > [ +6 > 1 +7 > , +8 > 2 +9 > , +10> 3 +11> ] +12> ; +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) +3 >Emitted(1, 6) Source(1, 6) + SourceIndex(0) +4 >Emitted(1, 9) Source(1, 9) + SourceIndex(0) +5 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) +6 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) +7 >Emitted(1, 13) Source(1, 13) + SourceIndex(0) +8 >Emitted(1, 14) Source(1, 14) + SourceIndex(0) +9 >Emitted(1, 16) Source(1, 16) + SourceIndex(0) +10>Emitted(1, 17) Source(1, 17) + SourceIndex(0) +11>Emitted(1, 18) Source(1, 18) + SourceIndex(0) +12>Emitted(1, 19) Source(1, 19) + SourceIndex(0) +--- +>>>for (var _i = 0; _i < a.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^ +1-> + > +2 >for +3 > +4 > (var v of +5 > a +6 > +7 > var v +8 > +9 > var v of a +10> ) +1->Emitted(2, 1) Source(2, 1) + SourceIndex(0) +2 >Emitted(2, 4) Source(2, 4) + SourceIndex(0) +3 >Emitted(2, 5) Source(2, 5) + SourceIndex(0) +4 >Emitted(2, 6) Source(2, 15) + SourceIndex(0) +5 >Emitted(2, 16) Source(2, 16) + SourceIndex(0) +6 >Emitted(2, 18) Source(2, 6) + SourceIndex(0) +7 >Emitted(2, 31) Source(2, 11) + SourceIndex(0) +8 >Emitted(2, 33) Source(2, 6) + SourceIndex(0) +9 >Emitted(2, 37) Source(2, 16) + SourceIndex(0) +10>Emitted(2, 38) Source(2, 17) + SourceIndex(0) +--- +>>> var v = a[_i]; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^ +1 > +2 > var +3 > v +4 > of +5 > a +6 > +1 >Emitted(3, 5) Source(2, 6) + SourceIndex(0) +2 >Emitted(3, 9) Source(2, 10) + SourceIndex(0) +3 >Emitted(3, 10) Source(2, 11) + SourceIndex(0) +4 >Emitted(3, 13) Source(2, 15) + SourceIndex(0) +5 >Emitted(3, 14) Source(2, 16) + SourceIndex(0) +6 >Emitted(3, 18) Source(2, 11) + SourceIndex(0) +--- +>>> v; +1 >^^^^ +2 > ^ +3 > ^ +4 > ^-> +1 > of a) { + > +2 > v +3 > ; +1 >Emitted(4, 5) Source(3, 5) + SourceIndex(0) +2 >Emitted(4, 6) Source(3, 6) + SourceIndex(0) +3 >Emitted(4, 7) Source(3, 7) + SourceIndex(0) +--- +>>> a; +1->^^^^ +2 > ^ +3 > ^ +1-> + > +2 > a +3 > ; +1->Emitted(5, 5) Source(4, 5) + SourceIndex(0) +2 >Emitted(5, 6) Source(4, 6) + SourceIndex(0) +3 >Emitted(5, 7) Source(4, 7) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(6, 2) Source(5, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of25.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of25.types b/tests/baselines/reference/ES5For-of25.types new file mode 100644 index 00000000000..7b306ee9a26 --- /dev/null +++ b/tests/baselines/reference/ES5For-of25.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of25.ts === +var a = [1, 2, 3]; +>a : number[] +>[1, 2, 3] : number[] + +for (var v of a) { +>v : number +>a : number[] + + v; +>v : number + + a; +>a : number[] +} diff --git a/tests/baselines/reference/ES5For-of26.errors.txt b/tests/baselines/reference/ES5For-of26.errors.txt new file mode 100644 index 00000000000..324ded25b4f --- /dev/null +++ b/tests/baselines/reference/ES5For-of26.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of26.ts(1,10): error TS2461: Type 'number' is not an array type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of26.ts (1 errors) ==== + for (var [a = 0, b = 1] of [2, 3]) { + ~~~~~~~~~~~~~~ +!!! error TS2461: Type 'number' is not an array type. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of26.js b/tests/baselines/reference/ES5For-of26.js new file mode 100644 index 00000000000..4571cc660a3 --- /dev/null +++ b/tests/baselines/reference/ES5For-of26.js @@ -0,0 +1,13 @@ +//// [ES5For-of26.ts] +for (var [a = 0, b = 1] of [2, 3]) { + a; + b; +} + +//// [ES5For-of26.js] +for (var _i = 0, _a = [2, 3]; _i < _a.length; _i++) { + var _b = _a[_i], _c = _b[0], a = _c === void 0 ? 0 : _c, _d = _b[1], b = _d === void 0 ? 1 : _d; + a; + b; +} +//# sourceMappingURL=ES5For-of26.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of26.js.map b/tests/baselines/reference/ES5For-of26.js.map new file mode 100644 index 00000000000..704a3a24f2a --- /dev/null +++ b/tests/baselines/reference/ES5For-of26.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of26.js.map] +{"version":3,"file":"ES5For-of26.js","sourceRoot":"","sources":["ES5For-of26.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAuB,UAAM,EAAN,MAAC,CAAC,EAAE,CAAC,CAAC,EAA5B,cAAkB,EAAlB,IAA4B,CAAC;IAA7B,6BAAK,CAAC,mBAAG,CAAC,mBAAE,CAAC,mBAAG,CAAC,KAAC;IACnB,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of26.sourcemap.txt b/tests/baselines/reference/ES5For-of26.sourcemap.txt new file mode 100644 index 00000000000..c9942b1e861 --- /dev/null +++ b/tests/baselines/reference/ES5For-of26.sourcemap.txt @@ -0,0 +1,126 @@ +=================================================================== +JsFile: ES5For-of26.js +mapUrl: ES5For-of26.js.map +sourceRoot: +sources: ES5For-of26.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of26.js +sourceFile:ES5For-of26.ts +------------------------------------------------------------------- +>>>for (var _i = 0, _a = [2, 3]; _i < _a.length; _i++) { +1 > +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > +2 >for +3 > +4 > (var [a = 0, b = 1] of +5 > [2, 3] +6 > +7 > [ +8 > 2 +9 > , +10> 3 +11> ] +12> +13> var [a = 0, b = 1] +14> +15> var [a = 0, b = 1] of [2, 3] +16> ) +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) +3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) +4 >Emitted(1, 6) Source(1, 28) + SourceIndex(0) +5 >Emitted(1, 16) Source(1, 34) + SourceIndex(0) +6 >Emitted(1, 18) Source(1, 28) + SourceIndex(0) +7 >Emitted(1, 24) Source(1, 29) + SourceIndex(0) +8 >Emitted(1, 25) Source(1, 30) + SourceIndex(0) +9 >Emitted(1, 27) Source(1, 32) + SourceIndex(0) +10>Emitted(1, 28) Source(1, 33) + SourceIndex(0) +11>Emitted(1, 29) Source(1, 34) + SourceIndex(0) +12>Emitted(1, 31) Source(1, 6) + SourceIndex(0) +13>Emitted(1, 45) Source(1, 24) + SourceIndex(0) +14>Emitted(1, 47) Source(1, 6) + SourceIndex(0) +15>Emitted(1, 51) Source(1, 34) + SourceIndex(0) +16>Emitted(1, 52) Source(1, 35) + SourceIndex(0) +--- +>>> var _b = _a[_i], _c = _b[0], a = _c === void 0 ? 0 : _c, _d = _b[1], b = _d === void 0 ? 1 : _d; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^ +1-> +2 > var [ +3 > a +4 > = +5 > 0 +6 > , +7 > b +8 > = +9 > 1 +10> ] +1->Emitted(2, 5) Source(1, 6) + SourceIndex(0) +2 >Emitted(2, 34) Source(1, 11) + SourceIndex(0) +3 >Emitted(2, 35) Source(1, 12) + SourceIndex(0) +4 >Emitted(2, 54) Source(1, 15) + SourceIndex(0) +5 >Emitted(2, 55) Source(1, 16) + SourceIndex(0) +6 >Emitted(2, 74) Source(1, 18) + SourceIndex(0) +7 >Emitted(2, 75) Source(1, 19) + SourceIndex(0) +8 >Emitted(2, 94) Source(1, 22) + SourceIndex(0) +9 >Emitted(2, 95) Source(1, 23) + SourceIndex(0) +10>Emitted(2, 100) Source(1, 24) + SourceIndex(0) +--- +>>> a; +1 >^^^^ +2 > ^ +3 > ^ +4 > ^-> +1 > of [2, 3]) { + > +2 > a +3 > ; +1 >Emitted(3, 5) Source(2, 5) + SourceIndex(0) +2 >Emitted(3, 6) Source(2, 6) + SourceIndex(0) +3 >Emitted(3, 7) Source(2, 7) + SourceIndex(0) +--- +>>> b; +1->^^^^ +2 > ^ +3 > ^ +1-> + > +2 > b +3 > ; +1->Emitted(4, 5) Source(3, 5) + SourceIndex(0) +2 >Emitted(4, 6) Source(3, 6) + SourceIndex(0) +3 >Emitted(4, 7) Source(3, 7) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(5, 2) Source(4, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of26.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of27.errors.txt b/tests/baselines/reference/ES5For-of27.errors.txt new file mode 100644 index 00000000000..0c839859930 --- /dev/null +++ b/tests/baselines/reference/ES5For-of27.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of27.ts(1,11): error TS2459: Type 'number' has no property 'x' and no string index signature. +tests/cases/conformance/statements/for-ofStatements/ES5For-of27.ts(1,21): error TS2459: Type 'number' has no property 'y' and no string index signature. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of27.ts (2 errors) ==== + for (var {x: a = 0, y: b = 1} of [2, 3]) { + ~ +!!! error TS2459: Type 'number' has no property 'x' and no string index signature. + ~ +!!! error TS2459: Type 'number' has no property 'y' and no string index signature. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of27.js b/tests/baselines/reference/ES5For-of27.js new file mode 100644 index 00000000000..c8e5a03b114 --- /dev/null +++ b/tests/baselines/reference/ES5For-of27.js @@ -0,0 +1,12 @@ +//// [ES5For-of27.ts] +for (var {x: a = 0, y: b = 1} of [2, 3]) { + a; + b; +} + +//// [ES5For-of27.js] +for (var _i = 0, _a = [2, 3]; _i < _a.length; _i++) { + var _b = _a[_i], _c = _b.x, a = _c === void 0 ? 0 : _c, _d = _b.y, b = _d === void 0 ? 1 : _d; + a; + b; +} diff --git a/tests/baselines/reference/ES5For-of28.errors.txt b/tests/baselines/reference/ES5For-of28.errors.txt new file mode 100644 index 00000000000..81398fa5a9b --- /dev/null +++ b/tests/baselines/reference/ES5For-of28.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of28.ts(1,10): error TS2461: Type 'number' is not an array type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of28.ts (1 errors) ==== + for (let [a = 0, b = 1] of [2, 3]) { + ~~~~~~~~~~~~~~ +!!! error TS2461: Type 'number' is not an array type. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of28.js b/tests/baselines/reference/ES5For-of28.js new file mode 100644 index 00000000000..362b8835212 --- /dev/null +++ b/tests/baselines/reference/ES5For-of28.js @@ -0,0 +1,12 @@ +//// [ES5For-of28.ts] +for (let [a = 0, b = 1] of [2, 3]) { + a; + b; +} + +//// [ES5For-of28.js] +for (var _i = 0, _a = [2, 3]; _i < _a.length; _i++) { + var _b = _a[_i], _c = _b[0], a = _c === void 0 ? 0 : _c, _d = _b[1], b = _d === void 0 ? 1 : _d; + a; + b; +} diff --git a/tests/baselines/reference/ES5For-of29.errors.txt b/tests/baselines/reference/ES5For-of29.errors.txt new file mode 100644 index 00000000000..e669b070222 --- /dev/null +++ b/tests/baselines/reference/ES5For-of29.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of29.ts(1,13): error TS2459: Type 'number' has no property 'x' and no string index signature. +tests/cases/conformance/statements/for-ofStatements/ES5For-of29.ts(1,23): error TS2459: Type 'number' has no property 'y' and no string index signature. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of29.ts (2 errors) ==== + for (const {x: a = 0, y: b = 1} of [2, 3]) { + ~ +!!! error TS2459: Type 'number' has no property 'x' and no string index signature. + ~ +!!! error TS2459: Type 'number' has no property 'y' and no string index signature. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of29.js b/tests/baselines/reference/ES5For-of29.js new file mode 100644 index 00000000000..338ff311dba --- /dev/null +++ b/tests/baselines/reference/ES5For-of29.js @@ -0,0 +1,12 @@ +//// [ES5For-of29.ts] +for (const {x: a = 0, y: b = 1} of [2, 3]) { + a; + b; +} + +//// [ES5For-of29.js] +for (var _i = 0, _a = [2, 3]; _i < _a.length; _i++) { + var _b = _a[_i], _c = _b.x, a = _c === void 0 ? 0 : _c, _d = _b.y, b = _d === void 0 ? 1 : _d; + a; + b; +} diff --git a/tests/baselines/reference/ES5For-of3.js b/tests/baselines/reference/ES5For-of3.js new file mode 100644 index 00000000000..648d34a9b16 --- /dev/null +++ b/tests/baselines/reference/ES5For-of3.js @@ -0,0 +1,10 @@ +//// [ES5For-of3.ts] +for (var v of ['a', 'b', 'c']) + var x = v; + +//// [ES5For-of3.js] +for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { + var v = _a[_i]; + var x = v; +} +//# sourceMappingURL=ES5For-of3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of3.js.map b/tests/baselines/reference/ES5For-of3.js.map new file mode 100644 index 00000000000..7454e1ca85d --- /dev/null +++ b/tests/baselines/reference/ES5For-of3.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of3.js.map] +{"version":3,"file":"ES5For-of3.js","sourceRoot":"","sources":["ES5For-of3.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of3.sourcemap.txt b/tests/baselines/reference/ES5For-of3.sourcemap.txt new file mode 100644 index 00000000000..dd0bca37b68 --- /dev/null +++ b/tests/baselines/reference/ES5For-of3.sourcemap.txt @@ -0,0 +1,108 @@ +=================================================================== +JsFile: ES5For-of3.js +mapUrl: ES5For-of3.js.map +sourceRoot: +sources: ES5For-of3.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of3.js +sourceFile:ES5For-of3.ts +------------------------------------------------------------------- +>>>for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { +1 > +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^ +9 > ^^ +10> ^^^ +11> ^^ +12> ^^^ +13> ^ +14> ^^ +15> ^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^ +18> ^ +1 > +2 >for +3 > +4 > (var v of +5 > ['a', 'b', 'c'] +6 > +7 > [ +8 > 'a' +9 > , +10> 'b' +11> , +12> 'c' +13> ] +14> +15> var v +16> +17> var v of ['a', 'b', 'c'] +18> ) +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) +3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) +4 >Emitted(1, 6) Source(1, 15) + SourceIndex(0) +5 >Emitted(1, 16) Source(1, 30) + SourceIndex(0) +6 >Emitted(1, 18) Source(1, 15) + SourceIndex(0) +7 >Emitted(1, 24) Source(1, 16) + SourceIndex(0) +8 >Emitted(1, 27) Source(1, 19) + SourceIndex(0) +9 >Emitted(1, 29) Source(1, 21) + SourceIndex(0) +10>Emitted(1, 32) Source(1, 24) + SourceIndex(0) +11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) +12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) +13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) +18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) +--- +>>> var v = _a[_i]; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^^^^^^^ +1 > +2 > var +3 > v +4 > +1 >Emitted(2, 5) Source(1, 6) + SourceIndex(0) +2 >Emitted(2, 9) Source(1, 10) + SourceIndex(0) +3 >Emitted(2, 10) Source(1, 11) + SourceIndex(0) +4 >Emitted(2, 19) Source(1, 11) + SourceIndex(0) +--- +>>> var x = v; +1 >^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^ +1 > of ['a', 'b', 'c']) + > +2 > var +3 > x +4 > = +5 > v +6 > ; +1 >Emitted(3, 5) Source(2, 5) + SourceIndex(0) +2 >Emitted(3, 9) Source(2, 9) + SourceIndex(0) +3 >Emitted(3, 10) Source(2, 10) + SourceIndex(0) +4 >Emitted(3, 13) Source(2, 13) + SourceIndex(0) +5 >Emitted(3, 14) Source(2, 14) + SourceIndex(0) +6 >Emitted(3, 15) Source(2, 15) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > +1 >Emitted(4, 2) Source(2, 15) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of3.types b/tests/baselines/reference/ES5For-of3.types new file mode 100644 index 00000000000..c47328816e8 --- /dev/null +++ b/tests/baselines/reference/ES5For-of3.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of3.ts === +for (var v of ['a', 'b', 'c']) +>v : string +>['a', 'b', 'c'] : string[] + + var x = v; +>x : string +>v : string + diff --git a/tests/baselines/reference/ES5For-of30.errors.txt b/tests/baselines/reference/ES5For-of30.errors.txt new file mode 100644 index 00000000000..0b02a55ba3f --- /dev/null +++ b/tests/baselines/reference/ES5For-of30.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of30.ts(3,6): error TS2461: Type 'string | number' is not an array type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of30.ts (1 errors) ==== + var a: string, b: number; + var tuple: [number, string] = [2, "3"]; + for ([a = 1, b = ""] of tuple) { + ~~~~~~~~~~~~~~~ +!!! error TS2461: Type 'string | number' is not an array type. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of30.js b/tests/baselines/reference/ES5For-of30.js new file mode 100644 index 00000000000..2a1dc5a3399 --- /dev/null +++ b/tests/baselines/reference/ES5For-of30.js @@ -0,0 +1,17 @@ +//// [ES5For-of30.ts] +var a: string, b: number; +var tuple: [number, string] = [2, "3"]; +for ([a = 1, b = ""] of tuple) { + a; + b; +} + +//// [ES5For-of30.js] +var a, b; +var tuple = [2, "3"]; +for (var _i = 0; _i < tuple.length; _i++) { + _a = tuple[_i], _b = _a[0], a = _b === void 0 ? 1 : _b, _c = _a[1], b = _c === void 0 ? "" : _c; + a; + b; +} +var _a, _b, _c; diff --git a/tests/baselines/reference/ES5For-of31.errors.txt b/tests/baselines/reference/ES5For-of31.errors.txt new file mode 100644 index 00000000000..4a49e1fdf92 --- /dev/null +++ b/tests/baselines/reference/ES5For-of31.errors.txt @@ -0,0 +1,15 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of31.ts(3,8): error TS2459: Type 'undefined' has no property 'a' and no string index signature. +tests/cases/conformance/statements/for-ofStatements/ES5For-of31.ts(3,18): error TS2459: Type 'undefined' has no property 'b' and no string index signature. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of31.ts (2 errors) ==== + var a: string, b: number; + + for ({ a: b = 1, b: a = ""} of []) { + ~ +!!! error TS2459: Type 'undefined' has no property 'a' and no string index signature. + ~ +!!! error TS2459: Type 'undefined' has no property 'b' and no string index signature. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of31.js b/tests/baselines/reference/ES5For-of31.js new file mode 100644 index 00000000000..6b038e377cb --- /dev/null +++ b/tests/baselines/reference/ES5For-of31.js @@ -0,0 +1,16 @@ +//// [ES5For-of31.ts] +var a: string, b: number; + +for ({ a: b = 1, b: a = ""} of []) { + a; + b; +} + +//// [ES5For-of31.js] +var a, b; +for (var _i = 0, _a = []; _i < _a.length; _i++) { + _b = _a[_i], _c = _b.a, b = _c === void 0 ? 1 : _c, _d = _b.b, a = _d === void 0 ? "" : _d; + a; + b; +} +var _b, _c, _d; diff --git a/tests/baselines/reference/ES5For-of4.js b/tests/baselines/reference/ES5For-of4.js new file mode 100644 index 00000000000..44d486dddf0 --- /dev/null +++ b/tests/baselines/reference/ES5For-of4.js @@ -0,0 +1,11 @@ +//// [ES5For-of4.ts] +for (var v of []) + var x = v; +var y = v; + +//// [ES5For-of4.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var v = _a[_i]; + var x = v; +} +var y = v; diff --git a/tests/baselines/reference/ES5For-of4.types b/tests/baselines/reference/ES5For-of4.types new file mode 100644 index 00000000000..9396096746c --- /dev/null +++ b/tests/baselines/reference/ES5For-of4.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of4.ts === +for (var v of []) +>v : any +>[] : undefined[] + + var x = v; +>x : any +>v : any + +var y = v; +>y : any +>v : any + diff --git a/tests/baselines/reference/ES5For-of5.js b/tests/baselines/reference/ES5For-of5.js new file mode 100644 index 00000000000..8e1a37db061 --- /dev/null +++ b/tests/baselines/reference/ES5For-of5.js @@ -0,0 +1,10 @@ +//// [ES5For-of5.ts] +for (var _a of []) { + var x = _a; +} + +//// [ES5For-of5.js] +for (var _i = 0, _b = []; _i < _b.length; _i++) { + var _a = _b[_i]; + var x = _a; +} diff --git a/tests/baselines/reference/ES5For-of5.types b/tests/baselines/reference/ES5For-of5.types new file mode 100644 index 00000000000..dd9aa285edb --- /dev/null +++ b/tests/baselines/reference/ES5For-of5.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of5.ts === +for (var _a of []) { +>_a : any +>[] : undefined[] + + var x = _a; +>x : any +>_a : any +} diff --git a/tests/baselines/reference/ES5For-of6.js b/tests/baselines/reference/ES5For-of6.js new file mode 100644 index 00000000000..bf966a0a5ae --- /dev/null +++ b/tests/baselines/reference/ES5For-of6.js @@ -0,0 +1,15 @@ +//// [ES5For-of6.ts] +for (var w of []) { + for (var v of []) { + var x = [w, v]; + } +} + +//// [ES5For-of6.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var w = _a[_i]; + for (var _b = 0, _c = []; _b < _c.length; _b++) { + var v = _c[_b]; + var x = [w, v]; + } +} diff --git a/tests/baselines/reference/ES5For-of6.types b/tests/baselines/reference/ES5For-of6.types new file mode 100644 index 00000000000..e2d2f872809 --- /dev/null +++ b/tests/baselines/reference/ES5For-of6.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of6.ts === +for (var w of []) { +>w : any +>[] : undefined[] + + for (var v of []) { +>v : any +>[] : undefined[] + + var x = [w, v]; +>x : any[] +>[w, v] : any[] +>w : any +>v : any + } +} diff --git a/tests/baselines/reference/ES5For-of7.errors.txt b/tests/baselines/reference/ES5For-of7.errors.txt new file mode 100644 index 00000000000..a3d40f38814 --- /dev/null +++ b/tests/baselines/reference/ES5For-of7.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of7.ts(6,9): error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'any[]'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of7.ts (1 errors) ==== + for (var w of []) { + var x = w; + } + + for (var v of []) { + var x = [w, v]; + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'x' must be of type 'any', but here has type 'any[]'. + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of7.js b/tests/baselines/reference/ES5For-of7.js new file mode 100644 index 00000000000..ad2302cdc5c --- /dev/null +++ b/tests/baselines/reference/ES5For-of7.js @@ -0,0 +1,18 @@ +//// [ES5For-of7.ts] +for (var w of []) { + var x = w; +} + +for (var v of []) { + var x = [w, v]; +} + +//// [ES5For-of7.js] +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var w = _a[_i]; + var x = w; +} +for (var _b = 0, _c = []; _b < _c.length; _b++) { + var v = _c[_b]; + var x = [w, v]; +} diff --git a/tests/baselines/reference/ES5For-of8.errors.txt b/tests/baselines/reference/ES5For-of8.errors.txt new file mode 100644 index 00000000000..7cc3c871277 --- /dev/null +++ b/tests/baselines/reference/ES5For-of8.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-of8.ts(4,6): error TS2322: Type 'string' is not assignable to type 'number'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-of8.ts (1 errors) ==== + function foo() { + return { x: 0 }; + } + for (foo().x of ['a', 'b', 'c']) { + ~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var p = foo().x; + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of8.js b/tests/baselines/reference/ES5For-of8.js new file mode 100644 index 00000000000..dbe747b9690 --- /dev/null +++ b/tests/baselines/reference/ES5For-of8.js @@ -0,0 +1,17 @@ +//// [ES5For-of8.ts] +function foo() { + return { x: 0 }; +} +for (foo().x of ['a', 'b', 'c']) { + var p = foo().x; +} + +//// [ES5For-of8.js] +function foo() { + return { x: 0 }; +} +for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { + foo().x = _a[_i]; + var p = foo().x; +} +//# sourceMappingURL=ES5For-of8.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of8.js.map b/tests/baselines/reference/ES5For-of8.js.map new file mode 100644 index 00000000000..be14106e77c --- /dev/null +++ b/tests/baselines/reference/ES5For-of8.js.map @@ -0,0 +1,2 @@ +//// [ES5For-of8.js.map] +{"version":3,"file":"ES5For-of8.js","sourceRoot":"","sources":["ES5For-of8.ts"],"names":["foo"],"mappings":"AAAA;IACIA,MAAMA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,CAACA;AACpBA,CAACA;AACD,GAAG,CAAC,CAAY,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAA1B,cAAO,EAAP,IAA0B,CAAC;IAA3B,GAAG,EAAE,CAAC,CAAC,SAAA;IACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;CACnB"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of8.sourcemap.txt b/tests/baselines/reference/ES5For-of8.sourcemap.txt new file mode 100644 index 00000000000..814f4364dc6 --- /dev/null +++ b/tests/baselines/reference/ES5For-of8.sourcemap.txt @@ -0,0 +1,172 @@ +=================================================================== +JsFile: ES5For-of8.js +mapUrl: ES5For-of8.js.map +sourceRoot: +sources: ES5For-of8.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/conformance/statements/for-ofStatements/ES5For-of8.js +sourceFile:ES5For-of8.ts +------------------------------------------------------------------- +>>>function foo() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^-> +1 > +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +--- +>>> return { x: 0 }; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^ +5 > ^ +6 > ^^ +7 > ^ +8 > ^^ +9 > ^ +1->function foo() { + > +2 > return +3 > +4 > { +5 > x +6 > : +7 > 0 +8 > } +9 > ; +1->Emitted(2, 5) Source(2, 5) + SourceIndex(0) name (foo) +2 >Emitted(2, 11) Source(2, 11) + SourceIndex(0) name (foo) +3 >Emitted(2, 12) Source(2, 12) + SourceIndex(0) name (foo) +4 >Emitted(2, 14) Source(2, 14) + SourceIndex(0) name (foo) +5 >Emitted(2, 15) Source(2, 15) + SourceIndex(0) name (foo) +6 >Emitted(2, 17) Source(2, 17) + SourceIndex(0) name (foo) +7 >Emitted(2, 18) Source(2, 18) + SourceIndex(0) name (foo) +8 >Emitted(2, 20) Source(2, 20) + SourceIndex(0) name (foo) +9 >Emitted(2, 21) Source(2, 21) + SourceIndex(0) name (foo) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(3, 1) Source(3, 1) + SourceIndex(0) name (foo) +2 >Emitted(3, 2) Source(3, 2) + SourceIndex(0) name (foo) +--- +>>>for (var _i = 0, _a = ['a', 'b', 'c']; _i < _a.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^ +9 > ^^ +10> ^^^ +11> ^^ +12> ^^^ +13> ^ +14> ^^ +15> ^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^ +18> ^ +1-> + > +2 >for +3 > +4 > (foo().x of +5 > ['a', 'b', 'c'] +6 > +7 > [ +8 > 'a' +9 > , +10> 'b' +11> , +12> 'c' +13> ] +14> +15> foo().x +16> +17> foo().x of ['a', 'b', 'c'] +18> ) +1->Emitted(4, 1) Source(4, 1) + SourceIndex(0) +2 >Emitted(4, 4) Source(4, 4) + SourceIndex(0) +3 >Emitted(4, 5) Source(4, 5) + SourceIndex(0) +4 >Emitted(4, 6) Source(4, 17) + SourceIndex(0) +5 >Emitted(4, 16) Source(4, 32) + SourceIndex(0) +6 >Emitted(4, 18) Source(4, 17) + SourceIndex(0) +7 >Emitted(4, 24) Source(4, 18) + SourceIndex(0) +8 >Emitted(4, 27) Source(4, 21) + SourceIndex(0) +9 >Emitted(4, 29) Source(4, 23) + SourceIndex(0) +10>Emitted(4, 32) Source(4, 26) + SourceIndex(0) +11>Emitted(4, 34) Source(4, 28) + SourceIndex(0) +12>Emitted(4, 37) Source(4, 31) + SourceIndex(0) +13>Emitted(4, 38) Source(4, 32) + SourceIndex(0) +14>Emitted(4, 40) Source(4, 6) + SourceIndex(0) +15>Emitted(4, 54) Source(4, 13) + SourceIndex(0) +16>Emitted(4, 56) Source(4, 6) + SourceIndex(0) +17>Emitted(4, 60) Source(4, 32) + SourceIndex(0) +18>Emitted(4, 61) Source(4, 33) + SourceIndex(0) +--- +>>> foo().x = _a[_i]; +1 >^^^^ +2 > ^^^ +3 > ^^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^-> +1 > +2 > foo +3 > () +4 > . +5 > x +6 > +1 >Emitted(5, 5) Source(4, 6) + SourceIndex(0) +2 >Emitted(5, 8) Source(4, 9) + SourceIndex(0) +3 >Emitted(5, 10) Source(4, 11) + SourceIndex(0) +4 >Emitted(5, 11) Source(4, 12) + SourceIndex(0) +5 >Emitted(5, 12) Source(4, 13) + SourceIndex(0) +6 >Emitted(5, 21) Source(4, 13) + SourceIndex(0) +--- +>>> var p = foo().x; +1->^^^^ +2 > ^^^^ +3 > ^ +4 > ^^^ +5 > ^^^ +6 > ^^ +7 > ^ +8 > ^ +9 > ^ +1-> of ['a', 'b', 'c']) { + > +2 > var +3 > p +4 > = +5 > foo +6 > () +7 > . +8 > x +9 > ; +1->Emitted(6, 5) Source(5, 5) + SourceIndex(0) +2 >Emitted(6, 9) Source(5, 9) + SourceIndex(0) +3 >Emitted(6, 10) Source(5, 10) + SourceIndex(0) +4 >Emitted(6, 13) Source(5, 13) + SourceIndex(0) +5 >Emitted(6, 16) Source(5, 16) + SourceIndex(0) +6 >Emitted(6, 18) Source(5, 18) + SourceIndex(0) +7 >Emitted(6, 19) Source(5, 19) + SourceIndex(0) +8 >Emitted(6, 20) Source(5, 20) + SourceIndex(0) +9 >Emitted(6, 21) Source(5, 21) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(7, 2) Source(6, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=ES5For-of8.js.map \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of9.js b/tests/baselines/reference/ES5For-of9.js new file mode 100644 index 00000000000..3a2cd2b1f74 --- /dev/null +++ b/tests/baselines/reference/ES5For-of9.js @@ -0,0 +1,21 @@ +//// [ES5For-of9.ts] +function foo() { + return { x: 0 }; +} +for (foo().x of []) { + for (foo().x of []) { + var p = foo().x; + } +} + +//// [ES5For-of9.js] +function foo() { + return { x: 0 }; +} +for (var _i = 0, _a = []; _i < _a.length; _i++) { + foo().x = _a[_i]; + for (var _b = 0, _c = []; _b < _c.length; _b++) { + foo().x = _c[_b]; + var p = foo().x; + } +} diff --git a/tests/baselines/reference/ES5For-of9.types b/tests/baselines/reference/ES5For-of9.types new file mode 100644 index 00000000000..60870c2d642 --- /dev/null +++ b/tests/baselines/reference/ES5For-of9.types @@ -0,0 +1,30 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-of9.ts === +function foo() { +>foo : () => { x: number; } + + return { x: 0 }; +>{ x: 0 } : { x: number; } +>x : number +} +for (foo().x of []) { +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number +>[] : undefined[] + + for (foo().x of []) { +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number +>[] : undefined[] + + var p = foo().x; +>p : number +>foo().x : number +>foo() : { x: number; } +>foo : () => { x: number; } +>x : number + } +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck1.js b/tests/baselines/reference/ES5For-ofTypeCheck1.js new file mode 100644 index 00000000000..f1522e512b6 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck1.js @@ -0,0 +1,7 @@ +//// [ES5For-ofTypeCheck1.ts] +for (var v of "") { } + +//// [ES5For-ofTypeCheck1.js] +for (var _i = 0, _a = ""; _i < _a.length; _i++) { + var v = _a[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck1.types b/tests/baselines/reference/ES5For-ofTypeCheck1.types new file mode 100644 index 00000000000..4da0ecc0e36 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck1.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck1.ts === +for (var v of "") { } +>v : string + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt new file mode 100644 index 00000000000..b762db8a04b --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt @@ -0,0 +1,23 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(1,15): error TS2495: Type 'StringIterator' is not an array type or a string type. +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(11,6): error TS2304: Cannot find name 'Symbol'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts (2 errors) ==== + for (var v of new StringIterator) { } + ~~~~~~~~~~~~~~~~~~ +!!! error TS2495: Type 'StringIterator' is not an array type or a string type. + + // In ES3/5, you cannot for...of over an arbitrary iterable. + class StringIterator { + next() { + return { + done: true, + value: "" + }; + } + [Symbol.iterator]() { + ~~~~~~ +!!! error TS2304: Cannot find name 'Symbol'. + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck10.js b/tests/baselines/reference/ES5For-ofTypeCheck10.js new file mode 100644 index 00000000000..ffef1fde8f8 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck10.js @@ -0,0 +1,35 @@ +//// [ES5For-ofTypeCheck10.ts] +for (var v of new StringIterator) { } + +// In ES3/5, you cannot for...of over an arbitrary iterable. +class StringIterator { + next() { + return { + done: true, + value: "" + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [ES5For-ofTypeCheck10.js] +for (var _i = 0, _a = new StringIterator; _i < _a.length; _i++) { + var v = _a[_i]; +} +// In ES3/5, you cannot for...of over an arbitrary iterable. +var StringIterator = (function () { + function StringIterator() { + } + StringIterator.prototype.next = function () { + return { + done: true, + value: "" + }; + }; + StringIterator.prototype[Symbol.iterator] = function () { + return this; + }; + return StringIterator; +})(); diff --git a/tests/baselines/reference/ES5For-ofTypeCheck11.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck11.errors.txt new file mode 100644 index 00000000000..635bb09616a --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck11.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck11.ts(3,6): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck11.ts (1 errors) ==== + var union: string | number[]; + var v: string; + for (v of union) { } + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck11.js b/tests/baselines/reference/ES5For-ofTypeCheck11.js new file mode 100644 index 00000000000..c0e46a45452 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck11.js @@ -0,0 +1,11 @@ +//// [ES5For-ofTypeCheck11.ts] +var union: string | number[]; +var v: string; +for (v of union) { } + +//// [ES5For-ofTypeCheck11.js] +var union; +var v; +for (var _i = 0; _i < union.length; _i++) { + v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck12.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck12.errors.txt new file mode 100644 index 00000000000..67af1f4f401 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck12.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck12.ts(1,17): error TS2495: Type 'number' is not an array type or a string type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck12.ts (1 errors) ==== + for (const v of 0) { } + ~ +!!! error TS2495: Type 'number' is not an array type or a string type. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck12.js b/tests/baselines/reference/ES5For-ofTypeCheck12.js new file mode 100644 index 00000000000..6004990f6dc --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck12.js @@ -0,0 +1,7 @@ +//// [ES5For-ofTypeCheck12.ts] +for (const v of 0) { } + +//// [ES5For-ofTypeCheck12.js] +for (var _i = 0, _a = 0; _i < _a.length; _i++) { + var v = _a[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck2.js b/tests/baselines/reference/ES5For-ofTypeCheck2.js new file mode 100644 index 00000000000..587de4f82ff --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck2.js @@ -0,0 +1,7 @@ +//// [ES5For-ofTypeCheck2.ts] +for (var v of [true]) { } + +//// [ES5For-ofTypeCheck2.js] +for (var _i = 0, _a = [true]; _i < _a.length; _i++) { + var v = _a[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck2.types b/tests/baselines/reference/ES5For-ofTypeCheck2.types new file mode 100644 index 00000000000..e6b86ce1d81 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck2.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck2.ts === +for (var v of [true]) { } +>v : boolean +>[true] : boolean[] + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck3.js b/tests/baselines/reference/ES5For-ofTypeCheck3.js new file mode 100644 index 00000000000..76d8237997b --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck3.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck3.ts] +var tuple: [string, number] = ["", 0]; +for (var v of tuple) { } + +//// [ES5For-ofTypeCheck3.js] +var tuple = ["", 0]; +for (var _i = 0; _i < tuple.length; _i++) { + var v = tuple[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck3.types b/tests/baselines/reference/ES5For-ofTypeCheck3.types new file mode 100644 index 00000000000..5293634c6c5 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck3.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck3.ts === +var tuple: [string, number] = ["", 0]; +>tuple : [string, number] +>["", 0] : [string, number] + +for (var v of tuple) { } +>v : string | number +>tuple : [string, number] + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck4.js b/tests/baselines/reference/ES5For-ofTypeCheck4.js new file mode 100644 index 00000000000..630bc869c58 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck4.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck4.ts] +var union: string | string[]; +for (const v of union) { } + +//// [ES5For-ofTypeCheck4.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck4.types b/tests/baselines/reference/ES5For-ofTypeCheck4.types new file mode 100644 index 00000000000..4f5721a0604 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck4.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck4.ts === +var union: string | string[]; +>union : string | string[] + +for (const v of union) { } +>v : string +>union : string | string[] + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck5.js b/tests/baselines/reference/ES5For-ofTypeCheck5.js new file mode 100644 index 00000000000..2e6b47f779d --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck5.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck5.ts] +var union: string | number[]; +for (var v of union) { } + +//// [ES5For-ofTypeCheck5.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck5.types b/tests/baselines/reference/ES5For-ofTypeCheck5.types new file mode 100644 index 00000000000..ed3d13f3918 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck5.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck5.ts === +var union: string | number[]; +>union : string | number[] + +for (var v of union) { } +>v : string | number +>union : string | number[] + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck6.js b/tests/baselines/reference/ES5For-ofTypeCheck6.js new file mode 100644 index 00000000000..9249020b9d4 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck6.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck6.ts] +var union: string[] | number[]; +for (var v of union) { } + +//// [ES5For-ofTypeCheck6.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck6.types b/tests/baselines/reference/ES5For-ofTypeCheck6.types new file mode 100644 index 00000000000..87999d9b0ca --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck6.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck6.ts === +var union: string[] | number[]; +>union : string[] | number[] + +for (var v of union) { } +>v : string | number +>union : string[] | number[] + diff --git a/tests/baselines/reference/ES5For-ofTypeCheck7.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck7.errors.txt new file mode 100644 index 00000000000..9006b5a2779 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck7.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck7.ts(2,15): error TS2461: Type 'number' is not an array type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck7.ts (1 errors) ==== + var union: string | number; + for (var v of union) { } + ~~~~~ +!!! error TS2461: Type 'number' is not an array type. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck7.js b/tests/baselines/reference/ES5For-ofTypeCheck7.js new file mode 100644 index 00000000000..d5b74a24728 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck7.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck7.ts] +var union: string | number; +for (var v of union) { } + +//// [ES5For-ofTypeCheck7.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck8.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck8.errors.txt new file mode 100644 index 00000000000..0cb52dbb21b --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck8.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck8.ts(3,6): error TS2322: Type 'string | number | symbol' is not assignable to type 'symbol'. + Type 'string' is not assignable to type 'symbol'. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck8.ts (1 errors) ==== + var union: string | string[]| number[]| symbol[]; + var v: symbol; + for (v of union) { } + ~ +!!! error TS2322: Type 'string | number | symbol' is not assignable to type 'symbol'. +!!! error TS2322: Type 'string' is not assignable to type 'symbol'. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck8.js b/tests/baselines/reference/ES5For-ofTypeCheck8.js new file mode 100644 index 00000000000..d73aea1cb7b --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck8.js @@ -0,0 +1,11 @@ +//// [ES5For-ofTypeCheck8.ts] +var union: string | string[]| number[]| symbol[]; +var v: symbol; +for (v of union) { } + +//// [ES5For-ofTypeCheck8.js] +var union; +var v; +for (var _i = 0; _i < union.length; _i++) { + v = union[_i]; +} diff --git a/tests/baselines/reference/ES5For-ofTypeCheck9.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck9.errors.txt new file mode 100644 index 00000000000..156eb188803 --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck9.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck9.ts(2,15): error TS2461: Type 'number | symbol | string[]' is not an array type. + + +==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck9.ts (1 errors) ==== + var union: string | string[] | number | symbol; + for (let v of union) { } + ~~~~~ +!!! error TS2461: Type 'number | symbol | string[]' is not an array type. \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-ofTypeCheck9.js b/tests/baselines/reference/ES5For-ofTypeCheck9.js new file mode 100644 index 00000000000..6c7465d10ec --- /dev/null +++ b/tests/baselines/reference/ES5For-ofTypeCheck9.js @@ -0,0 +1,9 @@ +//// [ES5For-ofTypeCheck9.ts] +var union: string | string[] | number | symbol; +for (let v of union) { } + +//// [ES5For-ofTypeCheck9.js] +var union; +for (var _i = 0; _i < union.length; _i++) { + var v = union[_i]; +} diff --git a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.js b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.js index d9fdb511fa2..4ca0b4cd5f7 100644 --- a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.js +++ b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.js @@ -34,6 +34,6 @@ var enumdule; enumdule.Point = Point; })(enumdule || (enumdule = {})); var x; -var x = 0 /* Red */; +var x = enumdule.Red; var y; var y = new enumdule.Point(0, 0); diff --git a/tests/baselines/reference/ExportAssignment7.errors.txt b/tests/baselines/reference/ExportAssignment7.errors.txt index 6ba0f480e7f..b72ca2d4a72 100644 --- a/tests/baselines/reference/ExportAssignment7.errors.txt +++ b/tests/baselines/reference/ExportAssignment7.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/ExportAssignment7.ts(1,14): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/compiler/ExportAssignment7.ts(4,1): error TS2304: Cannot find name 'B'. tests/cases/compiler/ExportAssignment7.ts(4,1): error TS2309: An export assignment cannot be used in a module with other exported elements. +tests/cases/compiler/ExportAssignment7.ts(4,10): error TS2304: Cannot find name 'B'. ==== tests/cases/compiler/ExportAssignment7.ts (3 errors) ==== @@ -11,6 +11,6 @@ tests/cases/compiler/ExportAssignment7.ts(4,1): error TS2309: An export assignme export = B; ~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'B'. - ~~~~~~~~~~~ -!!! error TS2309: An export assignment cannot be used in a module with other exported elements. \ No newline at end of file +!!! error TS2309: An export assignment cannot be used in a module with other exported elements. + ~ +!!! error TS2304: Cannot find name 'B'. \ No newline at end of file diff --git a/tests/baselines/reference/ExportAssignment8.errors.txt b/tests/baselines/reference/ExportAssignment8.errors.txt index 4dc35a9f0b7..4536f37bb81 100644 --- a/tests/baselines/reference/ExportAssignment8.errors.txt +++ b/tests/baselines/reference/ExportAssignment8.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/ExportAssignment8.ts(1,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/compiler/ExportAssignment8.ts(1,1): error TS2304: Cannot find name 'B'. tests/cases/compiler/ExportAssignment8.ts(1,1): error TS2309: An export assignment cannot be used in a module with other exported elements. +tests/cases/compiler/ExportAssignment8.ts(1,10): error TS2304: Cannot find name 'B'. ==== tests/cases/compiler/ExportAssignment8.ts (3 errors) ==== @@ -8,9 +8,9 @@ tests/cases/compiler/ExportAssignment8.ts(1,1): error TS2309: An export assignme ~~~~~~~~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. ~~~~~~~~~~~ -!!! error TS2304: Cannot find name 'B'. - ~~~~~~~~~~~ !!! error TS2309: An export assignment cannot be used in a module with other exported elements. + ~ +!!! error TS2304: Cannot find name 'B'. export class C { } \ No newline at end of file diff --git a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.js b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.js index 533843d2947..96df9812bc6 100644 --- a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.js +++ b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.js @@ -34,6 +34,6 @@ var enumdule; enumdule[enumdule["Blue"] = 1] = "Blue"; })(enumdule || (enumdule = {})); var x; -var x = 0 /* Red */; +var x = enumdule.Red; var y; var y = new enumdule.Point(0, 0); diff --git a/tests/baselines/reference/ModuleWithExportedAndNonExportedClasses.js b/tests/baselines/reference/ModuleWithExportedAndNonExportedClasses.js index 7555ae217e5..06e5427a879 100644 --- a/tests/baselines/reference/ModuleWithExportedAndNonExportedClasses.js +++ b/tests/baselines/reference/ModuleWithExportedAndNonExportedClasses.js @@ -35,19 +35,19 @@ var ag2 = new A.A2(); //// [ModuleWithExportedAndNonExportedClasses.js] var A; -(function (_A) { +(function (A_1) { var A = (function () { function A() { } return A; })(); - _A.A = A; + A_1.A = A; var AG = (function () { function AG() { } return AG; })(); - _A.AG = AG; + A_1.AG = AG; var A2 = (function () { function A2() { } diff --git a/tests/baselines/reference/ModuleWithExportedAndNonExportedEnums.js b/tests/baselines/reference/ModuleWithExportedAndNonExportedEnums.js index afcef6bbb5c..3cd522d3c2c 100644 --- a/tests/baselines/reference/ModuleWithExportedAndNonExportedEnums.js +++ b/tests/baselines/reference/ModuleWithExportedAndNonExportedEnums.js @@ -26,6 +26,6 @@ var A; })(Day || (Day = {})); })(A || (A = {})); // not an error since exported -var a = 0 /* Red */; +var a = A.Color.Red; // error not exported var b = A.Day.Monday; diff --git a/tests/baselines/reference/VariableDeclaration10_es6.errors.txt b/tests/baselines/reference/VariableDeclaration10_es6.errors.txt deleted file mode 100644 index b7d4bf2f1c3..00000000000 --- a/tests/baselines/reference/VariableDeclaration10_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration10_es6.ts(1,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration10_es6.ts (1 errors) ==== - let a: number = 1 - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration10_es6.types b/tests/baselines/reference/VariableDeclaration10_es6.types new file mode 100644 index 00000000000..47238fdd5a8 --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration10_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration10_es6.ts === +let a: number = 1 +>a : number + diff --git a/tests/baselines/reference/VariableDeclaration2_es6.errors.txt b/tests/baselines/reference/VariableDeclaration2_es6.errors.txt index 0d8214f5420..35e0ad2821c 100644 --- a/tests/baselines/reference/VariableDeclaration2_es6.errors.txt +++ b/tests/baselines/reference/VariableDeclaration2_es6.errors.txt @@ -1,10 +1,7 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration2_es6.ts(1,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. tests/cases/conformance/es6/variableDeclarations/VariableDeclaration2_es6.ts(1,7): error TS1155: 'const' declarations must be initialized -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration2_es6.ts (2 errors) ==== +==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration2_es6.ts (1 errors) ==== const a - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. ~ !!! error TS1155: 'const' declarations must be initialized \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration3_es6.errors.txt b/tests/baselines/reference/VariableDeclaration3_es6.errors.txt deleted file mode 100644 index a3b09f70d2d..00000000000 --- a/tests/baselines/reference/VariableDeclaration3_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration3_es6.ts(1,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration3_es6.ts (1 errors) ==== - const a = 1 - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration3_es6.types b/tests/baselines/reference/VariableDeclaration3_es6.types new file mode 100644 index 00000000000..a172c8114cb --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration3_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration3_es6.ts === +const a = 1 +>a : number + diff --git a/tests/baselines/reference/VariableDeclaration4_es6.errors.txt b/tests/baselines/reference/VariableDeclaration4_es6.errors.txt index b4bb75b5658..33d956ee1e5 100644 --- a/tests/baselines/reference/VariableDeclaration4_es6.errors.txt +++ b/tests/baselines/reference/VariableDeclaration4_es6.errors.txt @@ -1,10 +1,7 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration4_es6.ts(1,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. tests/cases/conformance/es6/variableDeclarations/VariableDeclaration4_es6.ts(1,7): error TS1155: 'const' declarations must be initialized -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration4_es6.ts (2 errors) ==== +==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration4_es6.ts (1 errors) ==== const a: number - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. ~ !!! error TS1155: 'const' declarations must be initialized \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration5_es6.errors.txt b/tests/baselines/reference/VariableDeclaration5_es6.errors.txt deleted file mode 100644 index c72d423e460..00000000000 --- a/tests/baselines/reference/VariableDeclaration5_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration5_es6.ts(1,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration5_es6.ts (1 errors) ==== - const a: number = 1 - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration5_es6.types b/tests/baselines/reference/VariableDeclaration5_es6.types new file mode 100644 index 00000000000..a07894d533d --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration5_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration5_es6.ts === +const a: number = 1 +>a : number + diff --git a/tests/baselines/reference/VariableDeclaration7_es6.errors.txt b/tests/baselines/reference/VariableDeclaration7_es6.errors.txt deleted file mode 100644 index 83d12d463e6..00000000000 --- a/tests/baselines/reference/VariableDeclaration7_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration7_es6.ts(1,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration7_es6.ts (1 errors) ==== - let a - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration7_es6.types b/tests/baselines/reference/VariableDeclaration7_es6.types new file mode 100644 index 00000000000..321c1b07bbc --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration7_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration7_es6.ts === +let a +>a : any + diff --git a/tests/baselines/reference/VariableDeclaration8_es6.errors.txt b/tests/baselines/reference/VariableDeclaration8_es6.errors.txt deleted file mode 100644 index e371c64c9a6..00000000000 --- a/tests/baselines/reference/VariableDeclaration8_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration8_es6.ts(1,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration8_es6.ts (1 errors) ==== - let a = 1 - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration8_es6.types b/tests/baselines/reference/VariableDeclaration8_es6.types new file mode 100644 index 00000000000..530b147136d --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration8_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration8_es6.ts === +let a = 1 +>a : number + diff --git a/tests/baselines/reference/VariableDeclaration9_es6.errors.txt b/tests/baselines/reference/VariableDeclaration9_es6.errors.txt deleted file mode 100644 index 4a1890d4694..00000000000 --- a/tests/baselines/reference/VariableDeclaration9_es6.errors.txt +++ /dev/null @@ -1,7 +0,0 @@ -tests/cases/conformance/es6/variableDeclarations/VariableDeclaration9_es6.ts(1,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration9_es6.ts (1 errors) ==== - let a: number - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/VariableDeclaration9_es6.types b/tests/baselines/reference/VariableDeclaration9_es6.types new file mode 100644 index 00000000000..6b29a04281b --- /dev/null +++ b/tests/baselines/reference/VariableDeclaration9_es6.types @@ -0,0 +1,4 @@ +=== tests/cases/conformance/es6/variableDeclarations/VariableDeclaration9_es6.ts === +let a: number +>a : number + diff --git a/tests/baselines/reference/accessorWithRestParam.js b/tests/baselines/reference/accessorWithRestParam.js index a0b7e849e51..9feafe1904d 100644 --- a/tests/baselines/reference/accessorWithRestParam.js +++ b/tests/baselines/reference/accessorWithRestParam.js @@ -10,12 +10,22 @@ var C = (function () { function C() { } Object.defineProperty(C.prototype, "X", { - set: function () { }, + set: function () { + var v = []; + for (var _i = 0; _i < arguments.length; _i++) { + v[_i - 0] = arguments[_i]; + } + }, enumerable: true, configurable: true }); Object.defineProperty(C, "X", { - set: function () { }, + set: function () { + var v2 = []; + for (var _i = 0; _i < arguments.length; _i++) { + v2[_i - 0] = arguments[_i]; + } + }, enumerable: true, configurable: true }); diff --git a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.js b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.js index 26a77e917d9..04fb5a143c6 100644 --- a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.js +++ b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.js @@ -79,7 +79,7 @@ var r11 = a + foo(); var r12 = a + C; var r13 = a + new C(); var r14 = a + E; -var r15 = a + 0 /* a */; +var r15 = a + E.a; var r16 = a + M; var r17 = a + ''; var r18 = a + 123; diff --git a/tests/baselines/reference/additionOperatorWithInvalidOperands.js b/tests/baselines/reference/additionOperatorWithInvalidOperands.js index 7bd31c7ae53..a8edb4b1879 100644 --- a/tests/baselines/reference/additionOperatorWithInvalidOperands.js +++ b/tests/baselines/reference/additionOperatorWithInvalidOperands.js @@ -83,6 +83,6 @@ var r14 = b + d; var r15 = b + foo; var r16 = b + foo(); var r17 = b + C; -var r18 = 0 /* a */ + new C(); -var r19 = 0 /* a */ + C.foo(); -var r20 = 0 /* a */ + M; +var r18 = E.a + new C(); +var r19 = E.a + C.foo(); +var r20 = E.a + M; diff --git a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.js b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.js index 1ba54d47f1c..1b5cb877d21 100644 --- a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.js +++ b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.js @@ -49,13 +49,13 @@ var r2 = a + null; var r3 = null + b; var r4 = null + 1; var r5 = null + c; -var r6 = null + 0 /* a */; -var r7 = null + 0 /* 'a' */; +var r6 = null + E.a; +var r7 = null + E['a']; var r8 = b + null; var r9 = 1 + null; var r10 = c + null; -var r11 = 0 /* a */ + null; -var r12 = 0 /* 'a' */ + null; +var r11 = E.a + null; +var r12 = E['a'] + null; // null + string var r13 = null + d; var r14 = null + ''; diff --git a/tests/baselines/reference/additionOperatorWithNumberAndEnum.js b/tests/baselines/reference/additionOperatorWithNumberAndEnum.js index 231831518e6..d559e98dc3e 100644 --- a/tests/baselines/reference/additionOperatorWithNumberAndEnum.js +++ b/tests/baselines/reference/additionOperatorWithNumberAndEnum.js @@ -43,10 +43,10 @@ var r2 = a + b; var r3 = b + a; var r4 = b + b; var r5 = 0 + a; -var r6 = 0 /* a */ + 0; -var r7 = 0 /* a */ + 1 /* b */; -var r8 = 0 /* 'a' */ + 1 /* 'b' */; -var r9 = 0 /* 'a' */ + 0 /* 'c' */; +var r6 = E.a + 0; +var r7 = E.a + E.b; +var r8 = E['a'] + E['b']; +var r9 = E['a'] + F['c']; var r10 = a + c; var r11 = c + a; var r12 = b + c; diff --git a/tests/baselines/reference/additionOperatorWithStringAndEveryType.js b/tests/baselines/reference/additionOperatorWithStringAndEveryType.js index ecce65ba577..03456020c80 100644 --- a/tests/baselines/reference/additionOperatorWithStringAndEveryType.js +++ b/tests/baselines/reference/additionOperatorWithStringAndEveryType.js @@ -72,7 +72,7 @@ var r13 = f + x; var r14 = g + x; // other cases var r15 = x + E; -var r16 = x + 0 /* a */; +var r16 = x + E.a; var r17 = x + ''; var r18 = x + 0; var r19 = x + { a: '' }; diff --git a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.js b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.js index cb89d242a18..68804694449 100644 --- a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.js +++ b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.js @@ -49,13 +49,13 @@ var r2 = a + undefined; var r3 = undefined + b; var r4 = undefined + 1; var r5 = undefined + c; -var r6 = undefined + 0 /* a */; -var r7 = undefined + 0 /* 'a' */; +var r6 = undefined + E.a; +var r7 = undefined + E['a']; var r8 = b + undefined; var r9 = 1 + undefined; var r10 = c + undefined; -var r11 = 0 /* a */ + undefined; -var r12 = 0 /* 'a' */ + undefined; +var r11 = E.a + undefined; +var r12 = E['a'] + undefined; // undefined + string var r13 = undefined + d; var r14 = undefined + ''; diff --git a/tests/baselines/reference/aliasBug.errors.txt b/tests/baselines/reference/aliasBug.errors.txt index 92b63e41b68..398b093aa88 100644 --- a/tests/baselines/reference/aliasBug.errors.txt +++ b/tests/baselines/reference/aliasBug.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/aliasBug.ts(17,10): error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. +tests/cases/compiler/aliasBug.ts(17,15): error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. ==== tests/cases/compiler/aliasBug.ts (1 errors) ==== @@ -19,7 +19,7 @@ tests/cases/compiler/aliasBug.ts(17,10): error TS2305: Module 'foo.bar.baz' has var p1: provide.Provide; // error here, but should be okay var p2: foo.Provide; var p3:booz.bar; - ~~~~~~~~ + ~~~ !!! error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. var p22 = new provide.Provide(); } diff --git a/tests/baselines/reference/aliasErrors.errors.txt b/tests/baselines/reference/aliasErrors.errors.txt index a4c71fa9c5a..ffc114f80e3 100644 --- a/tests/baselines/reference/aliasErrors.errors.txt +++ b/tests/baselines/reference/aliasErrors.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/aliasErrors.ts(11,1): error TS2304: Cannot find name 'no'. -tests/cases/compiler/aliasErrors.ts(12,1): error TS2304: Cannot find name 'no'. +tests/cases/compiler/aliasErrors.ts(11,12): error TS2304: Cannot find name 'no'. +tests/cases/compiler/aliasErrors.ts(12,13): error TS2304: Cannot find name 'no'. tests/cases/compiler/aliasErrors.ts(13,12): error TS1003: Identifier expected. tests/cases/compiler/aliasErrors.ts(14,12): error TS1003: Identifier expected. tests/cases/compiler/aliasErrors.ts(15,12): error TS1003: Identifier expected. -tests/cases/compiler/aliasErrors.ts(16,1): error TS2304: Cannot find name 'undefined'. -tests/cases/compiler/aliasErrors.ts(26,10): error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. +tests/cases/compiler/aliasErrors.ts(16,12): error TS2304: Cannot find name 'undefined'. +tests/cases/compiler/aliasErrors.ts(26,15): error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. ==== tests/cases/compiler/aliasErrors.ts (7 errors) ==== @@ -19,10 +19,10 @@ tests/cases/compiler/aliasErrors.ts(26,10): error TS2305: Module 'foo.bar.baz' h import beez = foo.bar; import m = no; - ~~~~~~~~~~~~~~ + ~~ !!! error TS2304: Cannot find name 'no'. import m2 = no.mod; - ~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS2304: Cannot find name 'no'. import n = 5; ~ @@ -34,7 +34,7 @@ tests/cases/compiler/aliasErrors.ts(26,10): error TS2305: Module 'foo.bar.baz' h ~~~~ !!! error TS1003: Identifier expected. import r = undefined; - ~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~~~~ !!! error TS2304: Cannot find name 'undefined'. @@ -46,7 +46,7 @@ tests/cases/compiler/aliasErrors.ts(26,10): error TS2305: Module 'foo.bar.baz' h var p1: provide.Provide; var p2: foo.Provide; var p3:booz.bar; - ~~~~~~~~ + ~~~ !!! error TS2305: Module 'foo.bar.baz' has no exported member 'bar'. var p22 = new provide.Provide(); } diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types index c300ae861ac..a666d2cee98 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types @@ -52,7 +52,7 @@ import Backbone = require("aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types index 2e792d39603..f7e2beb49dd 100644 --- a/tests/baselines/reference/aliasUsageInArray.types +++ b/tests/baselines/reference/aliasUsageInArray.types @@ -40,7 +40,7 @@ import Backbone = require("aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index ba66a0f1c7c..392481d2d02 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -41,7 +41,7 @@ import Backbone = require("aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index cf63eba6a61..568e885f51f 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -55,7 +55,7 @@ import Backbone = require("aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types index cc4b2377099..e968abe597f 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types @@ -49,7 +49,7 @@ import Backbone = require("aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types index b34a4300c52..2e631a41cdf 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.types +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types @@ -54,7 +54,7 @@ import Backbone = require("aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types index c937187f049..1a4dae90356 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types +++ b/tests/baselines/reference/aliasUsageInOrExpression.types @@ -75,7 +75,7 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types.pull b/tests/baselines/reference/aliasUsageInOrExpression.types.pull index cc45af29f86..3b138d1404a 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types.pull +++ b/tests/baselines/reference/aliasUsageInOrExpression.types.pull @@ -75,7 +75,7 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types index e2e8b57b94f..72f0aaf9e20 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types @@ -45,7 +45,7 @@ import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types index 7ca745b3d23..6b1c097ad97 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.types +++ b/tests/baselines/reference/aliasUsageInVarAssignment.types @@ -36,7 +36,7 @@ import Backbone = require("aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here diff --git a/tests/baselines/reference/ambientErrors.errors.txt b/tests/baselines/reference/ambientErrors.errors.txt index c8159708dd8..a741536e078 100644 --- a/tests/baselines/reference/ambientErrors.errors.txt +++ b/tests/baselines/reference/ambientErrors.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/ambient/ambientErrors.ts(2,15): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(6,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/conformance/ambient/ambientErrors.ts(6,18): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/conformance/ambient/ambientErrors.ts(17,22): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/ambient/ambientErrors.ts(20,24): error TS1184: An implementation cannot be declared in ambient contexts. tests/cases/conformance/ambient/ambientErrors.ts(24,5): error TS1066: Ambient enum elements can only have integer literal initializers. @@ -25,7 +25,7 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export // Ambient functions with invalid overloads declare function fn(x: number): string; declare function fn(x: 'foo'): number; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. // Ambient functions with duplicate signatures diff --git a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types index 22e4b19fb25..4e9043d1b75 100644 --- a/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types +++ b/tests/baselines/reference/ambientExternalModuleWithInternalImportDeclaration.types @@ -11,23 +11,23 @@ var c = new A(); === tests/cases/compiler/ambientExternalModuleWithInternalImportDeclaration_0.ts === declare module 'M' { module C { ->C : typeof X +>C : typeof C export var f: number; >f : number } class C { ->C : X +>C : C foo(): void; >foo : () => void } import X = C; ->X : typeof X ->C : X +>X : typeof C +>C : C export = X; ->X : X +>X : C } diff --git a/tests/baselines/reference/amdImportAsPrimaryExpression.js b/tests/baselines/reference/amdImportAsPrimaryExpression.js index 4704b32d989..fc8d0420842 100644 --- a/tests/baselines/reference/amdImportAsPrimaryExpression.js +++ b/tests/baselines/reference/amdImportAsPrimaryExpression.js @@ -23,6 +23,6 @@ define(["require", "exports"], function (require, exports) { }); //// [foo_1.js] define(["require", "exports", "./foo_0"], function (require, exports, foo) { - if (0 /* A */ === 0) { + if (foo.E1.A === 0) { } }); diff --git a/tests/baselines/reference/anonymousClassExpression1.errors.txt b/tests/baselines/reference/anonymousClassExpression1.errors.txt new file mode 100644 index 00000000000..db4c5b4ce3d --- /dev/null +++ b/tests/baselines/reference/anonymousClassExpression1.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/anonymousClassExpression1.ts(2,19): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/compiler/anonymousClassExpression1.ts (1 errors) ==== + function f() { + return typeof class {} === "function"; + ~~~~~ +!!! error TS9003: 'class' expressions are not currently supported. + } \ No newline at end of file diff --git a/tests/baselines/reference/anonymousClassExpression1.js b/tests/baselines/reference/anonymousClassExpression1.js new file mode 100644 index 00000000000..78cf5b05c51 --- /dev/null +++ b/tests/baselines/reference/anonymousClassExpression1.js @@ -0,0 +1,13 @@ +//// [anonymousClassExpression1.ts] +function f() { + return typeof class {} === "function"; +} + +//// [anonymousClassExpression1.js] +function f() { + return typeof (function () { + function default_1() { + } + return default_1; + })() === "function"; +} diff --git a/tests/baselines/reference/anyIdenticalToItself.errors.txt b/tests/baselines/reference/anyIdenticalToItself.errors.txt index 6b82f3af73c..bcd3b52daef 100644 --- a/tests/baselines/reference/anyIdenticalToItself.errors.txt +++ b/tests/baselines/reference/anyIdenticalToItself.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/anyIdenticalToItself.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/anyIdenticalToItself.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/compiler/anyIdenticalToItself.ts(6,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/anyIdenticalToItself.ts(10,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. ==== tests/cases/compiler/anyIdenticalToItself.ts (3 errors) ==== function foo(x: any); - ~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(x: any); function foo(x: any, y: number) { } diff --git a/tests/baselines/reference/arithmeticOperatorWithEnum.js b/tests/baselines/reference/arithmeticOperatorWithEnum.js index 9ef2790b4ce..3572f3ecc41 100644 --- a/tests/baselines/reference/arithmeticOperatorWithEnum.js +++ b/tests/baselines/reference/arithmeticOperatorWithEnum.js @@ -166,127 +166,127 @@ var ra2 = c * b; var ra3 = c * c; var ra4 = a * c; var ra5 = b * c; -var ra6 = 0 /* a */ * a; -var ra7 = 0 /* a */ * b; -var ra8 = 0 /* a */ * 1 /* b */; -var ra9 = 0 /* a */ * 1; -var ra10 = a * 1 /* b */; -var ra11 = b * 1 /* b */; -var ra12 = 1 * 1 /* b */; +var ra6 = E.a * a; +var ra7 = E.a * b; +var ra8 = E.a * E.b; +var ra9 = E.a * 1; +var ra10 = a * E.b; +var ra11 = b * E.b; +var ra12 = 1 * E.b; // operator / var rb1 = c / a; var rb2 = c / b; var rb3 = c / c; var rb4 = a / c; var rb5 = b / c; -var rb6 = 0 /* a */ / a; -var rb7 = 0 /* a */ / b; -var rb8 = 0 /* a */ / 1 /* b */; -var rb9 = 0 /* a */ / 1; -var rb10 = a / 1 /* b */; -var rb11 = b / 1 /* b */; -var rb12 = 1 / 1 /* b */; +var rb6 = E.a / a; +var rb7 = E.a / b; +var rb8 = E.a / E.b; +var rb9 = E.a / 1; +var rb10 = a / E.b; +var rb11 = b / E.b; +var rb12 = 1 / E.b; // operator % var rc1 = c % a; var rc2 = c % b; var rc3 = c % c; var rc4 = a % c; var rc5 = b % c; -var rc6 = 0 /* a */ % a; -var rc7 = 0 /* a */ % b; -var rc8 = 0 /* a */ % 1 /* b */; -var rc9 = 0 /* a */ % 1; -var rc10 = a % 1 /* b */; -var rc11 = b % 1 /* b */; -var rc12 = 1 % 1 /* b */; +var rc6 = E.a % a; +var rc7 = E.a % b; +var rc8 = E.a % E.b; +var rc9 = E.a % 1; +var rc10 = a % E.b; +var rc11 = b % E.b; +var rc12 = 1 % E.b; // operator - var rd1 = c - a; var rd2 = c - b; var rd3 = c - c; var rd4 = a - c; var rd5 = b - c; -var rd6 = 0 /* a */ - a; -var rd7 = 0 /* a */ - b; -var rd8 = 0 /* a */ - 1 /* b */; -var rd9 = 0 /* a */ - 1; -var rd10 = a - 1 /* b */; -var rd11 = b - 1 /* b */; -var rd12 = 1 - 1 /* b */; +var rd6 = E.a - a; +var rd7 = E.a - b; +var rd8 = E.a - E.b; +var rd9 = E.a - 1; +var rd10 = a - E.b; +var rd11 = b - E.b; +var rd12 = 1 - E.b; // operator << var re1 = c << a; var re2 = c << b; var re3 = c << c; var re4 = a << c; var re5 = b << c; -var re6 = 0 /* a */ << a; -var re7 = 0 /* a */ << b; -var re8 = 0 /* a */ << 1 /* b */; -var re9 = 0 /* a */ << 1; -var re10 = a << 1 /* b */; -var re11 = b << 1 /* b */; -var re12 = 1 << 1 /* b */; +var re6 = E.a << a; +var re7 = E.a << b; +var re8 = E.a << E.b; +var re9 = E.a << 1; +var re10 = a << E.b; +var re11 = b << E.b; +var re12 = 1 << E.b; // operator >> var rf1 = c >> a; var rf2 = c >> b; var rf3 = c >> c; var rf4 = a >> c; var rf5 = b >> c; -var rf6 = 0 /* a */ >> a; -var rf7 = 0 /* a */ >> b; -var rf8 = 0 /* a */ >> 1 /* b */; -var rf9 = 0 /* a */ >> 1; -var rf10 = a >> 1 /* b */; -var rf11 = b >> 1 /* b */; -var rf12 = 1 >> 1 /* b */; +var rf6 = E.a >> a; +var rf7 = E.a >> b; +var rf8 = E.a >> E.b; +var rf9 = E.a >> 1; +var rf10 = a >> E.b; +var rf11 = b >> E.b; +var rf12 = 1 >> E.b; // operator >>> var rg1 = c >>> a; var rg2 = c >>> b; var rg3 = c >>> c; var rg4 = a >>> c; var rg5 = b >>> c; -var rg6 = 0 /* a */ >>> a; -var rg7 = 0 /* a */ >>> b; -var rg8 = 0 /* a */ >>> 1 /* b */; -var rg9 = 0 /* a */ >>> 1; -var rg10 = a >>> 1 /* b */; -var rg11 = b >>> 1 /* b */; -var rg12 = 1 >>> 1 /* b */; +var rg6 = E.a >>> a; +var rg7 = E.a >>> b; +var rg8 = E.a >>> E.b; +var rg9 = E.a >>> 1; +var rg10 = a >>> E.b; +var rg11 = b >>> E.b; +var rg12 = 1 >>> E.b; // operator & var rh1 = c & a; var rh2 = c & b; var rh3 = c & c; var rh4 = a & c; var rh5 = b & c; -var rh6 = 0 /* a */ & a; -var rh7 = 0 /* a */ & b; -var rh8 = 0 /* a */ & 1 /* b */; -var rh9 = 0 /* a */ & 1; -var rh10 = a & 1 /* b */; -var rh11 = b & 1 /* b */; -var rh12 = 1 & 1 /* b */; +var rh6 = E.a & a; +var rh7 = E.a & b; +var rh8 = E.a & E.b; +var rh9 = E.a & 1; +var rh10 = a & E.b; +var rh11 = b & E.b; +var rh12 = 1 & E.b; // operator ^ var ri1 = c ^ a; var ri2 = c ^ b; var ri3 = c ^ c; var ri4 = a ^ c; var ri5 = b ^ c; -var ri6 = 0 /* a */ ^ a; -var ri7 = 0 /* a */ ^ b; -var ri8 = 0 /* a */ ^ 1 /* b */; -var ri9 = 0 /* a */ ^ 1; -var ri10 = a ^ 1 /* b */; -var ri11 = b ^ 1 /* b */; -var ri12 = 1 ^ 1 /* b */; +var ri6 = E.a ^ a; +var ri7 = E.a ^ b; +var ri8 = E.a ^ E.b; +var ri9 = E.a ^ 1; +var ri10 = a ^ E.b; +var ri11 = b ^ E.b; +var ri12 = 1 ^ E.b; // operator | var rj1 = c | a; var rj2 = c | b; var rj3 = c | c; var rj4 = a | c; var rj5 = b | c; -var rj6 = 0 /* a */ | a; -var rj7 = 0 /* a */ | b; -var rj8 = 0 /* a */ | 1 /* b */; -var rj9 = 0 /* a */ | 1; -var rj10 = a | 1 /* b */; -var rj11 = b | 1 /* b */; -var rj12 = 1 | 1 /* b */; +var rj6 = E.a | a; +var rj7 = E.a | b; +var rj8 = E.a | E.b; +var rj9 = E.a | 1; +var rj10 = a | E.b; +var rj11 = b | E.b; +var rj12 = 1 | E.b; diff --git a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.js b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.js index 315f7dd237b..95bc0b866c9 100644 --- a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.js +++ b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.js @@ -175,127 +175,127 @@ var ra2 = c * b; var ra3 = c * c; var ra4 = a * c; var ra5 = b * c; -var ra6 = 0 /* a */ * a; -var ra7 = 0 /* a */ * b; -var ra8 = 0 /* a */ * 1 /* b */; -var ra9 = 0 /* a */ * 1; -var ra10 = a * 1 /* b */; -var ra11 = b * 1 /* b */; -var ra12 = 1 * 1 /* b */; +var ra6 = E.a * a; +var ra7 = E.a * b; +var ra8 = E.a * E.b; +var ra9 = E.a * 1; +var ra10 = a * E.b; +var ra11 = b * E.b; +var ra12 = 1 * E.b; // operator / var rb1 = c / a; var rb2 = c / b; var rb3 = c / c; var rb4 = a / c; var rb5 = b / c; -var rb6 = 0 /* a */ / a; -var rb7 = 0 /* a */ / b; -var rb8 = 0 /* a */ / 1 /* b */; -var rb9 = 0 /* a */ / 1; -var rb10 = a / 1 /* b */; -var rb11 = b / 1 /* b */; -var rb12 = 1 / 1 /* b */; +var rb6 = E.a / a; +var rb7 = E.a / b; +var rb8 = E.a / E.b; +var rb9 = E.a / 1; +var rb10 = a / E.b; +var rb11 = b / E.b; +var rb12 = 1 / E.b; // operator % var rc1 = c % a; var rc2 = c % b; var rc3 = c % c; var rc4 = a % c; var rc5 = b % c; -var rc6 = 0 /* a */ % a; -var rc7 = 0 /* a */ % b; -var rc8 = 0 /* a */ % 1 /* b */; -var rc9 = 0 /* a */ % 1; -var rc10 = a % 1 /* b */; -var rc11 = b % 1 /* b */; -var rc12 = 1 % 1 /* b */; +var rc6 = E.a % a; +var rc7 = E.a % b; +var rc8 = E.a % E.b; +var rc9 = E.a % 1; +var rc10 = a % E.b; +var rc11 = b % E.b; +var rc12 = 1 % E.b; // operator - var rd1 = c - a; var rd2 = c - b; var rd3 = c - c; var rd4 = a - c; var rd5 = b - c; -var rd6 = 0 /* a */ - a; -var rd7 = 0 /* a */ - b; -var rd8 = 0 /* a */ - 1 /* b */; -var rd9 = 0 /* a */ - 1; -var rd10 = a - 1 /* b */; -var rd11 = b - 1 /* b */; -var rd12 = 1 - 1 /* b */; +var rd6 = E.a - a; +var rd7 = E.a - b; +var rd8 = E.a - E.b; +var rd9 = E.a - 1; +var rd10 = a - E.b; +var rd11 = b - E.b; +var rd12 = 1 - E.b; // operator << var re1 = c << a; var re2 = c << b; var re3 = c << c; var re4 = a << c; var re5 = b << c; -var re6 = 0 /* a */ << a; -var re7 = 0 /* a */ << b; -var re8 = 0 /* a */ << 1 /* b */; -var re9 = 0 /* a */ << 1; -var re10 = a << 1 /* b */; -var re11 = b << 1 /* b */; -var re12 = 1 << 1 /* b */; +var re6 = E.a << a; +var re7 = E.a << b; +var re8 = E.a << E.b; +var re9 = E.a << 1; +var re10 = a << E.b; +var re11 = b << E.b; +var re12 = 1 << E.b; // operator >> var rf1 = c >> a; var rf2 = c >> b; var rf3 = c >> c; var rf4 = a >> c; var rf5 = b >> c; -var rf6 = 0 /* a */ >> a; -var rf7 = 0 /* a */ >> b; -var rf8 = 0 /* a */ >> 1 /* b */; -var rf9 = 0 /* a */ >> 1; -var rf10 = a >> 1 /* b */; -var rf11 = b >> 1 /* b */; -var rf12 = 1 >> 1 /* b */; +var rf6 = E.a >> a; +var rf7 = E.a >> b; +var rf8 = E.a >> E.b; +var rf9 = E.a >> 1; +var rf10 = a >> E.b; +var rf11 = b >> E.b; +var rf12 = 1 >> E.b; // operator >>> var rg1 = c >>> a; var rg2 = c >>> b; var rg3 = c >>> c; var rg4 = a >>> c; var rg5 = b >>> c; -var rg6 = 0 /* a */ >>> a; -var rg7 = 0 /* a */ >>> b; -var rg8 = 0 /* a */ >>> 1 /* b */; -var rg9 = 0 /* a */ >>> 1; -var rg10 = a >>> 1 /* b */; -var rg11 = b >>> 1 /* b */; -var rg12 = 1 >>> 1 /* b */; +var rg6 = E.a >>> a; +var rg7 = E.a >>> b; +var rg8 = E.a >>> E.b; +var rg9 = E.a >>> 1; +var rg10 = a >>> E.b; +var rg11 = b >>> E.b; +var rg12 = 1 >>> E.b; // operator & var rh1 = c & a; var rh2 = c & b; var rh3 = c & c; var rh4 = a & c; var rh5 = b & c; -var rh6 = 0 /* a */ & a; -var rh7 = 0 /* a */ & b; -var rh8 = 0 /* a */ & 1 /* b */; -var rh9 = 0 /* a */ & 1; -var rh10 = a & 1 /* b */; -var rh11 = b & 1 /* b */; -var rh12 = 1 & 1 /* b */; +var rh6 = E.a & a; +var rh7 = E.a & b; +var rh8 = E.a & E.b; +var rh9 = E.a & 1; +var rh10 = a & E.b; +var rh11 = b & E.b; +var rh12 = 1 & E.b; // operator ^ var ri1 = c ^ a; var ri2 = c ^ b; var ri3 = c ^ c; var ri4 = a ^ c; var ri5 = b ^ c; -var ri6 = 0 /* a */ ^ a; -var ri7 = 0 /* a */ ^ b; -var ri8 = 0 /* a */ ^ 1 /* b */; -var ri9 = 0 /* a */ ^ 1; -var ri10 = a ^ 1 /* b */; -var ri11 = b ^ 1 /* b */; -var ri12 = 1 ^ 1 /* b */; +var ri6 = E.a ^ a; +var ri7 = E.a ^ b; +var ri8 = E.a ^ E.b; +var ri9 = E.a ^ 1; +var ri10 = a ^ E.b; +var ri11 = b ^ E.b; +var ri12 = 1 ^ E.b; // operator | var rj1 = c | a; var rj2 = c | b; var rj3 = c | c; var rj4 = a | c; var rj5 = b | c; -var rj6 = 0 /* a */ | a; -var rj7 = 0 /* a */ | b; -var rj8 = 0 /* a */ | 1 /* b */; -var rj9 = 0 /* a */ | 1; -var rj10 = a | 1 /* b */; -var rj11 = b | 1 /* b */; -var rj12 = 1 | 1 /* b */; +var rj6 = E.a | a; +var rj7 = E.a | b; +var rj8 = E.a | E.b; +var rj9 = E.a | 1; +var rj10 = a | E.b; +var rj11 = b | E.b; +var rj12 = 1 | E.b; diff --git a/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.js b/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.js index 8a9e6549144..974e9930103 100644 --- a/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.js +++ b/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.js @@ -634,18 +634,18 @@ var r1f3 = f * c; var r1f4 = f * d; var r1f5 = f * e; var r1f6 = f * f; -var r1g1 = 0 /* a */ * a; //ok -var r1g2 = 0 /* a */ * b; -var r1g3 = 0 /* a */ * c; //ok -var r1g4 = 0 /* a */ * d; -var r1g5 = 0 /* a */ * e; -var r1g6 = 0 /* a */ * f; -var r1h1 = a * 1 /* b */; //ok -var r1h2 = b * 1 /* b */; -var r1h3 = c * 1 /* b */; //ok -var r1h4 = d * 1 /* b */; -var r1h5 = e * 1 /* b */; -var r1h6 = f * 1 /* b */; +var r1g1 = E.a * a; //ok +var r1g2 = E.a * b; +var r1g3 = E.a * c; //ok +var r1g4 = E.a * d; +var r1g5 = E.a * e; +var r1g6 = E.a * f; +var r1h1 = a * E.b; //ok +var r1h2 = b * E.b; +var r1h3 = c * E.b; //ok +var r1h4 = d * E.b; +var r1h5 = e * E.b; +var r1h6 = f * E.b; // operator / var r2a1 = a / a; //ok var r2a2 = a / b; @@ -683,18 +683,18 @@ var r2f3 = f / c; var r2f4 = f / d; var r2f5 = f / e; var r2f6 = f / f; -var r2g1 = 0 /* a */ / a; //ok -var r2g2 = 0 /* a */ / b; -var r2g3 = 0 /* a */ / c; //ok -var r2g4 = 0 /* a */ / d; -var r2g5 = 0 /* a */ / e; -var r2g6 = 0 /* a */ / f; -var r2h1 = a / 1 /* b */; //ok -var r2h2 = b / 1 /* b */; -var r2h3 = c / 1 /* b */; //ok -var r2h4 = d / 1 /* b */; -var r2h5 = e / 1 /* b */; -var r2h6 = f / 1 /* b */; +var r2g1 = E.a / a; //ok +var r2g2 = E.a / b; +var r2g3 = E.a / c; //ok +var r2g4 = E.a / d; +var r2g5 = E.a / e; +var r2g6 = E.a / f; +var r2h1 = a / E.b; //ok +var r2h2 = b / E.b; +var r2h3 = c / E.b; //ok +var r2h4 = d / E.b; +var r2h5 = e / E.b; +var r2h6 = f / E.b; // operator % var r3a1 = a % a; //ok var r3a2 = a % b; @@ -732,18 +732,18 @@ var r3f3 = f % c; var r3f4 = f % d; var r3f5 = f % e; var r3f6 = f % f; -var r3g1 = 0 /* a */ % a; //ok -var r3g2 = 0 /* a */ % b; -var r3g3 = 0 /* a */ % c; //ok -var r3g4 = 0 /* a */ % d; -var r3g5 = 0 /* a */ % e; -var r3g6 = 0 /* a */ % f; -var r3h1 = a % 1 /* b */; //ok -var r3h2 = b % 1 /* b */; -var r3h3 = c % 1 /* b */; //ok -var r3h4 = d % 1 /* b */; -var r3h5 = e % 1 /* b */; -var r3h6 = f % 1 /* b */; +var r3g1 = E.a % a; //ok +var r3g2 = E.a % b; +var r3g3 = E.a % c; //ok +var r3g4 = E.a % d; +var r3g5 = E.a % e; +var r3g6 = E.a % f; +var r3h1 = a % E.b; //ok +var r3h2 = b % E.b; +var r3h3 = c % E.b; //ok +var r3h4 = d % E.b; +var r3h5 = e % E.b; +var r3h6 = f % E.b; // operator - var r4a1 = a - a; //ok var r4a2 = a - b; @@ -781,18 +781,18 @@ var r4f3 = f - c; var r4f4 = f - d; var r4f5 = f - e; var r4f6 = f - f; -var r4g1 = 0 /* a */ - a; //ok -var r4g2 = 0 /* a */ - b; -var r4g3 = 0 /* a */ - c; //ok -var r4g4 = 0 /* a */ - d; -var r4g5 = 0 /* a */ - e; -var r4g6 = 0 /* a */ - f; -var r4h1 = a - 1 /* b */; //ok -var r4h2 = b - 1 /* b */; -var r4h3 = c - 1 /* b */; //ok -var r4h4 = d - 1 /* b */; -var r4h5 = e - 1 /* b */; -var r4h6 = f - 1 /* b */; +var r4g1 = E.a - a; //ok +var r4g2 = E.a - b; +var r4g3 = E.a - c; //ok +var r4g4 = E.a - d; +var r4g5 = E.a - e; +var r4g6 = E.a - f; +var r4h1 = a - E.b; //ok +var r4h2 = b - E.b; +var r4h3 = c - E.b; //ok +var r4h4 = d - E.b; +var r4h5 = e - E.b; +var r4h6 = f - E.b; // operator << var r5a1 = a << a; //ok var r5a2 = a << b; @@ -830,18 +830,18 @@ var r5f3 = f << c; var r5f4 = f << d; var r5f5 = f << e; var r5f6 = f << f; -var r5g1 = 0 /* a */ << a; //ok -var r5g2 = 0 /* a */ << b; -var r5g3 = 0 /* a */ << c; //ok -var r5g4 = 0 /* a */ << d; -var r5g5 = 0 /* a */ << e; -var r5g6 = 0 /* a */ << f; -var r5h1 = a << 1 /* b */; //ok -var r5h2 = b << 1 /* b */; -var r5h3 = c << 1 /* b */; //ok -var r5h4 = d << 1 /* b */; -var r5h5 = e << 1 /* b */; -var r5h6 = f << 1 /* b */; +var r5g1 = E.a << a; //ok +var r5g2 = E.a << b; +var r5g3 = E.a << c; //ok +var r5g4 = E.a << d; +var r5g5 = E.a << e; +var r5g6 = E.a << f; +var r5h1 = a << E.b; //ok +var r5h2 = b << E.b; +var r5h3 = c << E.b; //ok +var r5h4 = d << E.b; +var r5h5 = e << E.b; +var r5h6 = f << E.b; // operator >> var r6a1 = a >> a; //ok var r6a2 = a >> b; @@ -879,18 +879,18 @@ var r6f3 = f >> c; var r6f4 = f >> d; var r6f5 = f >> e; var r6f6 = f >> f; -var r6g1 = 0 /* a */ >> a; //ok -var r6g2 = 0 /* a */ >> b; -var r6g3 = 0 /* a */ >> c; //ok -var r6g4 = 0 /* a */ >> d; -var r6g5 = 0 /* a */ >> e; -var r6g6 = 0 /* a */ >> f; -var r6h1 = a >> 1 /* b */; //ok -var r6h2 = b >> 1 /* b */; -var r6h3 = c >> 1 /* b */; //ok -var r6h4 = d >> 1 /* b */; -var r6h5 = e >> 1 /* b */; -var r6h6 = f >> 1 /* b */; +var r6g1 = E.a >> a; //ok +var r6g2 = E.a >> b; +var r6g3 = E.a >> c; //ok +var r6g4 = E.a >> d; +var r6g5 = E.a >> e; +var r6g6 = E.a >> f; +var r6h1 = a >> E.b; //ok +var r6h2 = b >> E.b; +var r6h3 = c >> E.b; //ok +var r6h4 = d >> E.b; +var r6h5 = e >> E.b; +var r6h6 = f >> E.b; // operator >>> var r7a1 = a >>> a; //ok var r7a2 = a >>> b; @@ -928,18 +928,18 @@ var r7f3 = f >>> c; var r7f4 = f >>> d; var r7f5 = f >>> e; var r7f6 = f >>> f; -var r7g1 = 0 /* a */ >>> a; //ok -var r7g2 = 0 /* a */ >>> b; -var r7g3 = 0 /* a */ >>> c; //ok -var r7g4 = 0 /* a */ >>> d; -var r7g5 = 0 /* a */ >>> e; -var r7g6 = 0 /* a */ >>> f; -var r7h1 = a >>> 1 /* b */; //ok -var r7h2 = b >>> 1 /* b */; -var r7h3 = c >>> 1 /* b */; //ok -var r7h4 = d >>> 1 /* b */; -var r7h5 = e >>> 1 /* b */; -var r7h6 = f >>> 1 /* b */; +var r7g1 = E.a >>> a; //ok +var r7g2 = E.a >>> b; +var r7g3 = E.a >>> c; //ok +var r7g4 = E.a >>> d; +var r7g5 = E.a >>> e; +var r7g6 = E.a >>> f; +var r7h1 = a >>> E.b; //ok +var r7h2 = b >>> E.b; +var r7h3 = c >>> E.b; //ok +var r7h4 = d >>> E.b; +var r7h5 = e >>> E.b; +var r7h6 = f >>> E.b; // operator & var r8a1 = a & a; //ok var r8a2 = a & b; @@ -977,18 +977,18 @@ var r8f3 = f & c; var r8f4 = f & d; var r8f5 = f & e; var r8f6 = f & f; -var r8g1 = 0 /* a */ & a; //ok -var r8g2 = 0 /* a */ & b; -var r8g3 = 0 /* a */ & c; //ok -var r8g4 = 0 /* a */ & d; -var r8g5 = 0 /* a */ & e; -var r8g6 = 0 /* a */ & f; -var r8h1 = a & 1 /* b */; //ok -var r8h2 = b & 1 /* b */; -var r8h3 = c & 1 /* b */; //ok -var r8h4 = d & 1 /* b */; -var r8h5 = e & 1 /* b */; -var r8h6 = f & 1 /* b */; +var r8g1 = E.a & a; //ok +var r8g2 = E.a & b; +var r8g3 = E.a & c; //ok +var r8g4 = E.a & d; +var r8g5 = E.a & e; +var r8g6 = E.a & f; +var r8h1 = a & E.b; //ok +var r8h2 = b & E.b; +var r8h3 = c & E.b; //ok +var r8h4 = d & E.b; +var r8h5 = e & E.b; +var r8h6 = f & E.b; // operator ^ var r9a1 = a ^ a; //ok var r9a2 = a ^ b; @@ -1026,18 +1026,18 @@ var r9f3 = f ^ c; var r9f4 = f ^ d; var r9f5 = f ^ e; var r9f6 = f ^ f; -var r9g1 = 0 /* a */ ^ a; //ok -var r9g2 = 0 /* a */ ^ b; -var r9g3 = 0 /* a */ ^ c; //ok -var r9g4 = 0 /* a */ ^ d; -var r9g5 = 0 /* a */ ^ e; -var r9g6 = 0 /* a */ ^ f; -var r9h1 = a ^ 1 /* b */; //ok -var r9h2 = b ^ 1 /* b */; -var r9h3 = c ^ 1 /* b */; //ok -var r9h4 = d ^ 1 /* b */; -var r9h5 = e ^ 1 /* b */; -var r9h6 = f ^ 1 /* b */; +var r9g1 = E.a ^ a; //ok +var r9g2 = E.a ^ b; +var r9g3 = E.a ^ c; //ok +var r9g4 = E.a ^ d; +var r9g5 = E.a ^ e; +var r9g6 = E.a ^ f; +var r9h1 = a ^ E.b; //ok +var r9h2 = b ^ E.b; +var r9h3 = c ^ E.b; //ok +var r9h4 = d ^ E.b; +var r9h5 = e ^ E.b; +var r9h6 = f ^ E.b; // operator | var r10a1 = a | a; //ok var r10a2 = a | b; @@ -1075,15 +1075,15 @@ var r10f3 = f | c; var r10f4 = f | d; var r10f5 = f | e; var r10f6 = f | f; -var r10g1 = 0 /* a */ | a; //ok -var r10g2 = 0 /* a */ | b; -var r10g3 = 0 /* a */ | c; //ok -var r10g4 = 0 /* a */ | d; -var r10g5 = 0 /* a */ | e; -var r10g6 = 0 /* a */ | f; -var r10h1 = a | 1 /* b */; //ok -var r10h2 = b | 1 /* b */; -var r10h3 = c | 1 /* b */; //ok -var r10h4 = d | 1 /* b */; -var r10h5 = e | 1 /* b */; -var r10h6 = f | 1 /* b */; +var r10g1 = E.a | a; //ok +var r10g2 = E.a | b; +var r10g3 = E.a | c; //ok +var r10g4 = E.a | d; +var r10g5 = E.a | e; +var r10g6 = E.a | f; +var r10h1 = a | E.b; //ok +var r10h2 = b | E.b; +var r10h3 = c | E.b; //ok +var r10h4 = d | E.b; +var r10h5 = e | E.b; +var r10h6 = f | E.b; diff --git a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.js b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.js index 40676ef4495..0c30e8d0484 100644 --- a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.js +++ b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.js @@ -124,89 +124,89 @@ var b; var ra1 = null * a; var ra2 = null * b; var ra3 = null * 1; -var ra4 = null * 0 /* a */; +var ra4 = null * E.a; var ra5 = a * null; var ra6 = b * null; var ra7 = 0 * null; -var ra8 = 1 /* b */ * null; +var ra8 = E.b * null; // operator / var rb1 = null / a; var rb2 = null / b; var rb3 = null / 1; -var rb4 = null / 0 /* a */; +var rb4 = null / E.a; var rb5 = a / null; var rb6 = b / null; var rb7 = 0 / null; -var rb8 = 1 /* b */ / null; +var rb8 = E.b / null; // operator % var rc1 = null % a; var rc2 = null % b; var rc3 = null % 1; -var rc4 = null % 0 /* a */; +var rc4 = null % E.a; var rc5 = a % null; var rc6 = b % null; var rc7 = 0 % null; -var rc8 = 1 /* b */ % null; +var rc8 = E.b % null; // operator - var rd1 = null - a; var rd2 = null - b; var rd3 = null - 1; -var rd4 = null - 0 /* a */; +var rd4 = null - E.a; var rd5 = a - null; var rd6 = b - null; var rd7 = 0 - null; -var rd8 = 1 /* b */ - null; +var rd8 = E.b - null; // operator << var re1 = null << a; var re2 = null << b; var re3 = null << 1; -var re4 = null << 0 /* a */; +var re4 = null << E.a; var re5 = a << null; var re6 = b << null; var re7 = 0 << null; -var re8 = 1 /* b */ << null; +var re8 = E.b << null; // operator >> var rf1 = null >> a; var rf2 = null >> b; var rf3 = null >> 1; -var rf4 = null >> 0 /* a */; +var rf4 = null >> E.a; var rf5 = a >> null; var rf6 = b >> null; var rf7 = 0 >> null; -var rf8 = 1 /* b */ >> null; +var rf8 = E.b >> null; // operator >>> var rg1 = null >>> a; var rg2 = null >>> b; var rg3 = null >>> 1; -var rg4 = null >>> 0 /* a */; +var rg4 = null >>> E.a; var rg5 = a >>> null; var rg6 = b >>> null; var rg7 = 0 >>> null; -var rg8 = 1 /* b */ >>> null; +var rg8 = E.b >>> null; // operator & var rh1 = null & a; var rh2 = null & b; var rh3 = null & 1; -var rh4 = null & 0 /* a */; +var rh4 = null & E.a; var rh5 = a & null; var rh6 = b & null; var rh7 = 0 & null; -var rh8 = 1 /* b */ & null; +var rh8 = E.b & null; // operator ^ var ri1 = null ^ a; var ri2 = null ^ b; var ri3 = null ^ 1; -var ri4 = null ^ 0 /* a */; +var ri4 = null ^ E.a; var ri5 = a ^ null; var ri6 = b ^ null; var ri7 = 0 ^ null; -var ri8 = 1 /* b */ ^ null; +var ri8 = E.b ^ null; // operator | var rj1 = null | a; var rj2 = null | b; var rj3 = null | 1; -var rj4 = null | 0 /* a */; +var rj4 = null | E.a; var rj5 = a | null; var rj6 = b | null; var rj7 = 0 | null; -var rj8 = 1 /* b */ | null; +var rj8 = E.b | null; diff --git a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.js b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.js index ddc2c87dd7a..60ea9af32c2 100644 --- a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.js +++ b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.js @@ -124,89 +124,89 @@ var b; var ra1 = undefined * a; var ra2 = undefined * b; var ra3 = undefined * 1; -var ra4 = undefined * 0 /* a */; +var ra4 = undefined * E.a; var ra5 = a * undefined; var ra6 = b * undefined; var ra7 = 0 * undefined; -var ra8 = 1 /* b */ * undefined; +var ra8 = E.b * undefined; // operator / var rb1 = undefined / a; var rb2 = undefined / b; var rb3 = undefined / 1; -var rb4 = undefined / 0 /* a */; +var rb4 = undefined / E.a; var rb5 = a / undefined; var rb6 = b / undefined; var rb7 = 0 / undefined; -var rb8 = 1 /* b */ / undefined; +var rb8 = E.b / undefined; // operator % var rc1 = undefined % a; var rc2 = undefined % b; var rc3 = undefined % 1; -var rc4 = undefined % 0 /* a */; +var rc4 = undefined % E.a; var rc5 = a % undefined; var rc6 = b % undefined; var rc7 = 0 % undefined; -var rc8 = 1 /* b */ % undefined; +var rc8 = E.b % undefined; // operator - var rd1 = undefined - a; var rd2 = undefined - b; var rd3 = undefined - 1; -var rd4 = undefined - 0 /* a */; +var rd4 = undefined - E.a; var rd5 = a - undefined; var rd6 = b - undefined; var rd7 = 0 - undefined; -var rd8 = 1 /* b */ - undefined; +var rd8 = E.b - undefined; // operator << var re1 = undefined << a; var re2 = undefined << b; var re3 = undefined << 1; -var re4 = undefined << 0 /* a */; +var re4 = undefined << E.a; var re5 = a << undefined; var re6 = b << undefined; var re7 = 0 << undefined; -var re8 = 1 /* b */ << undefined; +var re8 = E.b << undefined; // operator >> var rf1 = undefined >> a; var rf2 = undefined >> b; var rf3 = undefined >> 1; -var rf4 = undefined >> 0 /* a */; +var rf4 = undefined >> E.a; var rf5 = a >> undefined; var rf6 = b >> undefined; var rf7 = 0 >> undefined; -var rf8 = 1 /* b */ >> undefined; +var rf8 = E.b >> undefined; // operator >>> var rg1 = undefined >>> a; var rg2 = undefined >>> b; var rg3 = undefined >>> 1; -var rg4 = undefined >>> 0 /* a */; +var rg4 = undefined >>> E.a; var rg5 = a >>> undefined; var rg6 = b >>> undefined; var rg7 = 0 >>> undefined; -var rg8 = 1 /* b */ >>> undefined; +var rg8 = E.b >>> undefined; // operator & var rh1 = undefined & a; var rh2 = undefined & b; var rh3 = undefined & 1; -var rh4 = undefined & 0 /* a */; +var rh4 = undefined & E.a; var rh5 = a & undefined; var rh6 = b & undefined; var rh7 = 0 & undefined; -var rh8 = 1 /* b */ & undefined; +var rh8 = E.b & undefined; // operator ^ var ri1 = undefined ^ a; var ri2 = undefined ^ b; var ri3 = undefined ^ 1; -var ri4 = undefined ^ 0 /* a */; +var ri4 = undefined ^ E.a; var ri5 = a ^ undefined; var ri6 = b ^ undefined; var ri7 = 0 ^ undefined; -var ri8 = 1 /* b */ ^ undefined; +var ri8 = E.b ^ undefined; // operator | var rj1 = undefined | a; var rj2 = undefined | b; var rj3 = undefined | 1; -var rj4 = undefined | 0 /* a */; +var rj4 = undefined | E.a; var rj5 = a | undefined; var rj6 = b | undefined; var rj7 = 0 | undefined; -var rj8 = 1 /* b */ | undefined; +var rj8 = E.b | undefined; diff --git a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt new file mode 100644 index 00000000000..391fbf42384 --- /dev/null +++ b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt @@ -0,0 +1,147 @@ +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(13,12): error TS2493: Tuple type '[string, number]' with length '2' cannot be assigned to tuple with length '3'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(14,12): error TS2460: Type 'StrNum' has no property '2'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(15,5): error TS2461: Type '{ 0: string; 1: number; }' is not an array type. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(16,5): error TS2322: Type '[string, number]' is not assignable to type '[number, number, number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(17,5): error TS2322: Type 'StrNum' is not assignable to type '[number, number, number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(18,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number, number, number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(19,5): error TS2322: Type '[string, number]' is not assignable to type '[string, number, number]'. + Property '2' is missing in type '[string, number]'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(20,5): error TS2322: Type 'StrNum' is not assignable to type '[string, number, number]'. + Property '2' is missing in type 'StrNum'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(21,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string, number, number]'. + Property '2' is missing in type '{ 0: string; 1: number; }'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(22,5): error TS2322: Type '[string, number]' is not assignable to type '[number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(23,5): error TS2322: Type 'StrNum' is not assignable to type '[number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(24,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(25,5): error TS2322: Type '[string, number]' is not assignable to type '[string]'. + Types of property 'pop' are incompatible. + Type '() => string | number' is not assignable to type '() => string'. + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(26,5): error TS2322: Type 'StrNum' is not assignable to type '[string]'. + Types of property 'pop' are incompatible. + Type '() => string | number' is not assignable to type '() => string'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(27,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. + Property 'length' is missing in type '{ 0: string; 1: number; }'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(28,5): error TS2322: Type '[string, number]' is not assignable to type '[number, string]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(29,5): error TS2322: Type 'StrNum' is not assignable to type '[number, string]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(30,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number, string]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. + + +==== tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts (18 errors) ==== + interface StrNum extends Array { + 0: string; + 1: number; + } + + var x: [string, number]; + var y: StrNum + var z: { + 0: string; + 1: number; + } + + var [a, b, c] = x; + ~ +!!! error TS2493: Tuple type '[string, number]' with length '2' cannot be assigned to tuple with length '3'. + var [d, e, f] = y; + ~ +!!! error TS2460: Type 'StrNum' has no property '2'. + var [g, h, i] = z; + ~~~~~~~~~ +!!! error TS2461: Type '{ 0: string; 1: number; }' is not an array type. + var j1: [number, number, number] = x; + ~~ +!!! error TS2322: Type '[string, number]' is not assignable to type '[number, number, number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var j2: [number, number, number] = y; + ~~ +!!! error TS2322: Type 'StrNum' is not assignable to type '[number, number, number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var j3: [number, number, number] = z; + ~~ +!!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number, number, number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var k1: [string, number, number] = x; + ~~ +!!! error TS2322: Type '[string, number]' is not assignable to type '[string, number, number]'. +!!! error TS2322: Property '2' is missing in type '[string, number]'. + var k2: [string, number, number] = y; + ~~ +!!! error TS2322: Type 'StrNum' is not assignable to type '[string, number, number]'. +!!! error TS2322: Property '2' is missing in type 'StrNum'. + var k3: [string, number, number] = z; + ~~ +!!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string, number, number]'. +!!! error TS2322: Property '2' is missing in type '{ 0: string; 1: number; }'. + var l1: [number] = x; + ~~ +!!! error TS2322: Type '[string, number]' is not assignable to type '[number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var l2: [number] = y; + ~~ +!!! error TS2322: Type 'StrNum' is not assignable to type '[number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var l3: [number] = z; + ~~ +!!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var m1: [string] = x; + ~~ +!!! error TS2322: Type '[string, number]' is not assignable to type '[string]'. +!!! error TS2322: Types of property 'pop' are incompatible. +!!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + var m2: [string] = y; + ~~ +!!! error TS2322: Type 'StrNum' is not assignable to type '[string]'. +!!! error TS2322: Types of property 'pop' are incompatible. +!!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. + var m3: [string] = z; + ~~ +!!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. +!!! error TS2322: Property 'length' is missing in type '{ 0: string; 1: number; }'. + var n1: [number, string] = x; + ~~ +!!! error TS2322: Type '[string, number]' is not assignable to type '[number, string]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var n2: [number, string] = y; + ~~ +!!! error TS2322: Type 'StrNum' is not assignable to type '[number, string]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var n3: [number, string] = z; + ~~ +!!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[number, string]'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. + var o1: [string, number] = x; + var o2: [string, number] = y; + var o3: [string, number] = y; + \ No newline at end of file diff --git a/tests/baselines/reference/arityAndOrderCompatibility01.js b/tests/baselines/reference/arityAndOrderCompatibility01.js new file mode 100644 index 00000000000..2eb1bcf8bd8 --- /dev/null +++ b/tests/baselines/reference/arityAndOrderCompatibility01.js @@ -0,0 +1,61 @@ +//// [arityAndOrderCompatibility01.ts] +interface StrNum extends Array { + 0: string; + 1: number; +} + +var x: [string, number]; +var y: StrNum +var z: { + 0: string; + 1: number; +} + +var [a, b, c] = x; +var [d, e, f] = y; +var [g, h, i] = z; +var j1: [number, number, number] = x; +var j2: [number, number, number] = y; +var j3: [number, number, number] = z; +var k1: [string, number, number] = x; +var k2: [string, number, number] = y; +var k3: [string, number, number] = z; +var l1: [number] = x; +var l2: [number] = y; +var l3: [number] = z; +var m1: [string] = x; +var m2: [string] = y; +var m3: [string] = z; +var n1: [number, string] = x; +var n2: [number, string] = y; +var n3: [number, string] = z; +var o1: [string, number] = x; +var o2: [string, number] = y; +var o3: [string, number] = y; + + +//// [arityAndOrderCompatibility01.js] +var x; +var y; +var z; +var a = x[0], b = x[1], c = x[2]; +var d = y[0], e = y[1], f = y[2]; +var g = z[0], h = z[1], i = z[2]; +var j1 = x; +var j2 = y; +var j3 = z; +var k1 = x; +var k2 = y; +var k3 = z; +var l1 = x; +var l2 = y; +var l3 = z; +var m1 = x; +var m2 = y; +var m3 = z; +var n1 = x; +var n2 = y; +var n3 = z; +var o1 = x; +var o2 = y; +var o3 = y; diff --git a/tests/baselines/reference/arrayConcatMap.js b/tests/baselines/reference/arrayConcatMap.js index dc7272b7223..715ca158a43 100644 --- a/tests/baselines/reference/arrayConcatMap.js +++ b/tests/baselines/reference/arrayConcatMap.js @@ -3,4 +3,5 @@ var x = [].concat([{ a: 1 }], [{ a: 2 }]) .map(b => b.a); //// [arrayConcatMap.js] -var x = [].concat([{ a: 1 }], [{ a: 2 }]).map(function (b) { return b.a; }); +var x = [].concat([{ a: 1 }], [{ a: 2 }]) + .map(function (b) { return b.a; }); diff --git a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.js b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.js index 9edf545f8b4..57cba07d6bf 100644 --- a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.js +++ b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.js @@ -5,5 +5,10 @@ panic([], 'one', 'two'); //// [arrayLiteralInNonVarArgParameter.js] -function panic(val) { } +function panic(val) { + var opt = []; + for (var _i = 1; _i < arguments.length; _i++) { + opt[_i - 1] = arguments[_i]; + } +} panic([], 'one', 'two'); diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.js new file mode 100644 index 00000000000..d53f33deadc --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.js @@ -0,0 +1,5 @@ +//// [arrowFunctionWithObjectLiteralBody1.ts] +var v = a => {} + +//// [arrowFunctionWithObjectLiteralBody1.js] +var v = function (a) { return {}; }; diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types new file mode 100644 index 00000000000..2446c97d4ce --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody1.ts === +var v = a => {} +>v : (a: any) => any +>a => {} : (a: any) => any +>a : any +>{} : any +>{} : {} + diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.js new file mode 100644 index 00000000000..f2fc086c082 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.js @@ -0,0 +1,5 @@ +//// [arrowFunctionWithObjectLiteralBody2.ts] +var v = a => {} + +//// [arrowFunctionWithObjectLiteralBody2.js] +var v = function (a) { return {}; }; diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types new file mode 100644 index 00000000000..df8e87e82ea --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody2.ts === +var v = a => {} +>v : (a: any) => any +>a => {} : (a: any) => any +>a : any +>{} : any +>{} : any +>{} : {} + diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.js new file mode 100644 index 00000000000..91a699dfc4b --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.js @@ -0,0 +1,5 @@ +//// [arrowFunctionWithObjectLiteralBody3.ts] +var v = a => {} + +//// [arrowFunctionWithObjectLiteralBody3.js] +var v = a => ({}); diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types new file mode 100644 index 00000000000..91e11ab9104 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody3.ts === +var v = a => {} +>v : (a: any) => any +>a => {} : (a: any) => any +>a : any +>{} : any +>{} : {} + diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.js new file mode 100644 index 00000000000..83bc0c878ca --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.js @@ -0,0 +1,5 @@ +//// [arrowFunctionWithObjectLiteralBody4.ts] +var v = a => {} + +//// [arrowFunctionWithObjectLiteralBody4.js] +var v = a => ({}); diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types new file mode 100644 index 00000000000..400a91b459d --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody4.ts === +var v = a => {} +>v : (a: any) => any +>a => {} : (a: any) => any +>a : any +>{} : any +>{} : any +>{} : {} + diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.js new file mode 100644 index 00000000000..77f5c2d4c3d --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.js @@ -0,0 +1,14 @@ +//// [arrowFunctionWithObjectLiteralBody5.ts] +var a = () => { name: "foo", message: "bar" }; + +var b = () => ({ name: "foo", message: "bar" }); + +var c = () => ({ name: "foo", message: "bar" }); + +var d = () => ((({ name: "foo", message: "bar" }))); + +//// [arrowFunctionWithObjectLiteralBody5.js] +var a = function () { return { name: "foo", message: "bar" }; }; +var b = function () { return ({ name: "foo", message: "bar" }); }; +var c = function () { return ({ name: "foo", message: "bar" }); }; +var d = function () { return (({ name: "foo", message: "bar" })); }; diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types new file mode 100644 index 00000000000..15b3697732a --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types @@ -0,0 +1,40 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody5.ts === +var a = () => { name: "foo", message: "bar" }; +>a : () => Error +>() => { name: "foo", message: "bar" } : () => Error +>{ name: "foo", message: "bar" } : Error +>Error : Error +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var b = () => ({ name: "foo", message: "bar" }); +>b : () => Error +>() => ({ name: "foo", message: "bar" }) : () => Error +>({ name: "foo", message: "bar" }) : Error +>{ name: "foo", message: "bar" } : Error +>Error : Error +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var c = () => ({ name: "foo", message: "bar" }); +>c : () => { name: string; message: string; } +>() => ({ name: "foo", message: "bar" }) : () => { name: string; message: string; } +>({ name: "foo", message: "bar" }) : { name: string; message: string; } +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var d = () => ((({ name: "foo", message: "bar" }))); +>d : () => Error +>() => ((({ name: "foo", message: "bar" }))) : () => Error +>((({ name: "foo", message: "bar" }))) : Error +>(({ name: "foo", message: "bar" })) : Error +>({ name: "foo", message: "bar" }) : Error +>Error : Error +>({ name: "foo", message: "bar" }) : { name: string; message: string; } +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.js b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.js new file mode 100644 index 00000000000..6128a6bef86 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.js @@ -0,0 +1,14 @@ +//// [arrowFunctionWithObjectLiteralBody6.ts] +var a = () => { name: "foo", message: "bar" }; + +var b = () => ({ name: "foo", message: "bar" }); + +var c = () => ({ name: "foo", message: "bar" }); + +var d = () => ((({ name: "foo", message: "bar" }))); + +//// [arrowFunctionWithObjectLiteralBody6.js] +var a = () => ({ name: "foo", message: "bar" }); +var b = () => ({ name: "foo", message: "bar" }); +var c = () => ({ name: "foo", message: "bar" }); +var d = () => (({ name: "foo", message: "bar" })); diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types new file mode 100644 index 00000000000..14a45dca213 --- /dev/null +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types @@ -0,0 +1,40 @@ +=== tests/cases/compiler/arrowFunctionWithObjectLiteralBody6.ts === +var a = () => { name: "foo", message: "bar" }; +>a : () => Error +>() => { name: "foo", message: "bar" } : () => Error +>{ name: "foo", message: "bar" } : Error +>Error : Error +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var b = () => ({ name: "foo", message: "bar" }); +>b : () => Error +>() => ({ name: "foo", message: "bar" }) : () => Error +>({ name: "foo", message: "bar" }) : Error +>{ name: "foo", message: "bar" } : Error +>Error : Error +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var c = () => ({ name: "foo", message: "bar" }); +>c : () => { name: string; message: string; } +>() => ({ name: "foo", message: "bar" }) : () => { name: string; message: string; } +>({ name: "foo", message: "bar" }) : { name: string; message: string; } +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + +var d = () => ((({ name: "foo", message: "bar" }))); +>d : () => Error +>() => ((({ name: "foo", message: "bar" }))) : () => Error +>((({ name: "foo", message: "bar" }))) : Error +>(({ name: "foo", message: "bar" })) : Error +>({ name: "foo", message: "bar" }) : Error +>Error : Error +>({ name: "foo", message: "bar" }) : { name: string; message: string; } +>{ name: "foo", message: "bar" } : { name: string; message: string; } +>name : string +>message : string + diff --git a/tests/baselines/reference/asiArith.js b/tests/baselines/reference/asiArith.js index ac739bbd767..d552fd5ee77 100644 --- a/tests/baselines/reference/asiArith.js +++ b/tests/baselines/reference/asiArith.js @@ -37,9 +37,11 @@ y //// [asiArith.js] var x = 1; var y = 1; -var z = x + -+ +y; +var z = x + + + + +y; var a = 1; var b = 1; -var c = x - -- -y; +var c = x + - + - -y; diff --git a/tests/baselines/reference/assignAnyToEveryType.js b/tests/baselines/reference/assignAnyToEveryType.js index 47093cd0852..94b8067ddd7 100644 --- a/tests/baselines/reference/assignAnyToEveryType.js +++ b/tests/baselines/reference/assignAnyToEveryType.js @@ -61,7 +61,7 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); var g = x; -var g2 = 0 /* A */; +var g2 = E.A; g2 = x; var C = (function () { function C() { diff --git a/tests/baselines/reference/assignEveryTypeToAny.js b/tests/baselines/reference/assignEveryTypeToAny.js index 15aa6bcdd91..bbe622b3300 100644 --- a/tests/baselines/reference/assignEveryTypeToAny.js +++ b/tests/baselines/reference/assignEveryTypeToAny.js @@ -77,8 +77,8 @@ var E; (function (E) { E[E["A"] = 0] = "A"; })(E || (E = {})); -x = 0 /* A */; -var f = 0 /* A */; +x = E.A; +var f = E.A; x = f; var g; x = g; diff --git a/tests/baselines/reference/assignFromNumberInterface2.errors.txt b/tests/baselines/reference/assignFromNumberInterface2.errors.txt index fa53d8facdf..85639cdeeaf 100644 --- a/tests/baselines/reference/assignFromNumberInterface2.errors.txt +++ b/tests/baselines/reference/assignFromNumberInterface2.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts(23,1): error TS2322: Type 'Number' is not assignable to type 'number'. -tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts(24,1): error TS2322: Type 'NotNumber' is not assignable to type 'number'. +tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts(24,1): error TS2322: Type 'Number' is not assignable to type 'number'. +tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts(25,1): error TS2322: Type 'NotNumber' is not assignable to type 'number'. ==== tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts (2 errors) ==== @@ -12,6 +12,7 @@ tests/cases/conformance/types/primitives/number/assignFromNumberInterface2.ts(24 toFixed(fractionDigits?: number): string; toExponential(fractionDigits?: number): string; toPrecision(precision?: number): string; + valueOf(): number; doStuff(): string; } diff --git a/tests/baselines/reference/assignFromNumberInterface2.js b/tests/baselines/reference/assignFromNumberInterface2.js index 74384d42302..25262bf27f0 100644 --- a/tests/baselines/reference/assignFromNumberInterface2.js +++ b/tests/baselines/reference/assignFromNumberInterface2.js @@ -8,6 +8,7 @@ interface NotNumber { toFixed(fractionDigits?: number): string; toExponential(fractionDigits?: number): string; toPrecision(precision?: number): string; + valueOf(): number; doStuff(): string; } diff --git a/tests/baselines/reference/assignFromStringInterface2.errors.txt b/tests/baselines/reference/assignFromStringInterface2.errors.txt index 2e3e518f75b..4e09eb6eacb 100644 --- a/tests/baselines/reference/assignFromStringInterface2.errors.txt +++ b/tests/baselines/reference/assignFromStringInterface2.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts(46,1): error TS2322: Type 'String' is not assignable to type 'string'. -tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts(47,1): error TS2322: Type 'NotString' is not assignable to type 'string'. +tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts(47,1): error TS2322: Type 'String' is not assignable to type 'string'. +tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts(48,1): error TS2322: Type 'NotString' is not assignable to type 'string'. ==== tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts (2 errors) ==== @@ -35,6 +35,7 @@ tests/cases/conformance/types/primitives/string/assignFromStringInterface2.ts(47 trim(): string; length: number; substr(from: number, length?: number): string; + valueOf(): string; [index: number]: string; } diff --git a/tests/baselines/reference/assignFromStringInterface2.js b/tests/baselines/reference/assignFromStringInterface2.js index 7e4821ac2a7..5636a4806cc 100644 --- a/tests/baselines/reference/assignFromStringInterface2.js +++ b/tests/baselines/reference/assignFromStringInterface2.js @@ -31,6 +31,7 @@ interface NotString { trim(): string; length: number; substr(from: number, length?: number): string; + valueOf(): string; [index: number]: string; } diff --git a/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.errors.txt b/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.errors.txt index 580c6fa3c45..f462fd347e6 100644 --- a/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.errors.txt +++ b/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.errors.txt @@ -16,7 +16,7 @@ tests/cases/compiler/assignLambdaToNominalSubtypeOfFunction.ts(8,4): error TS234 !!! error TS2345: Argument of type '(a: any, b: any) => boolean' is not assignable to parameter of type 'IResultCallback'. !!! error TS2345: Property 'x' is missing in type '(a: any, b: any) => boolean'. fn(function (a, b) { return true; }) - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~~~ !!! error TS2345: Argument of type '(a: any, b: any) => boolean' is not assignable to parameter of type 'IResultCallback'. !!! error TS2345: Property 'x' is missing in type '(a: any, b: any) => boolean'. \ No newline at end of file diff --git a/tests/baselines/reference/assignToEnum.js b/tests/baselines/reference/assignToEnum.js index 153068738d1..5f7048894fa 100644 --- a/tests/baselines/reference/assignToEnum.js +++ b/tests/baselines/reference/assignToEnum.js @@ -14,6 +14,6 @@ var A; A[A["bar"] = 1] = "bar"; })(A || (A = {})); A = undefined; // invalid LHS -A = 1 /* bar */; // invalid LHS -0 /* foo */ = 1; // invalid LHS -0 /* foo */ = 1 /* bar */; // invalid LHS +A = A.bar; // invalid LHS +A.foo = 1; // invalid LHS +A.foo = A.bar; // invalid LHS diff --git a/tests/baselines/reference/assignments.js b/tests/baselines/reference/assignments.js index 363d2f2a017..e2c9c90d375 100644 --- a/tests/baselines/reference/assignments.js +++ b/tests/baselines/reference/assignments.js @@ -52,7 +52,7 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); E = null; // Error -0 /* A */ = null; // OK per spec, Error per implementation (509581) +E.A = null; // OK per spec, Error per implementation (509581) function fn() { } fn = null; // Should be error var v; diff --git a/tests/baselines/reference/baseTypeAfterDerivedType.js b/tests/baselines/reference/baseTypeAfterDerivedType.js index 65b73a17542..c64239ac0c8 100644 --- a/tests/baselines/reference/baseTypeAfterDerivedType.js +++ b/tests/baselines/reference/baseTypeAfterDerivedType.js @@ -20,6 +20,11 @@ interface Base2 { var Derived2 = (function () { function Derived2() { } - Derived2.prototype.method = function () { }; + Derived2.prototype.method = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + }; return Derived2; })(); diff --git a/tests/baselines/reference/bestCommonTypeOfTuple.js b/tests/baselines/reference/bestCommonTypeOfTuple.js index f78f8990db0..81cfa752f5d 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple.js +++ b/tests/baselines/reference/bestCommonTypeOfTuple.js @@ -43,9 +43,9 @@ var t3; var t4; // no error t1 = [f1, f2]; -t2 = [0 /* one */, 0 /* two */]; +t2 = [E1.one, E2.two]; t3 = [5, undefined]; -t4 = [0 /* one */, 0 /* two */, 20]; +t4 = [E1.one, E2.two, 20]; var e1 = t1[2]; // {} var e2 = t2[2]; // {} var e3 = t3[2]; // any diff --git a/tests/baselines/reference/bitwiseNotOperatorWithEnumType.js b/tests/baselines/reference/bitwiseNotOperatorWithEnumType.js index 710af4edfa7..0bcf2fa3956 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithEnumType.js +++ b/tests/baselines/reference/bitwiseNotOperatorWithEnumType.js @@ -30,11 +30,11 @@ var ENUM1; // enum type var var ResultIsNumber1 = ~ENUM1; // enum type expressions -var ResultIsNumber2 = ~0 /* "A" */; -var ResultIsNumber3 = ~(0 /* A */ + 1 /* "B" */); +var ResultIsNumber2 = ~ENUM1["A"]; +var ResultIsNumber3 = ~(ENUM1.A + ENUM1["B"]); // multiple ~ operators -var ResultIsNumber4 = ~~~(0 /* "A" */ + 1 /* B */); +var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B); // miss assignment operators ~ENUM1; -~0 /* "A" */; -~0 /* A */, ~1 /* "B" */; +~ENUM1["A"]; +~ENUM1.A, ~ENUM1["B"]; diff --git a/tests/baselines/reference/booleanAssignment.errors.txt b/tests/baselines/reference/booleanAssignment.errors.txt index 2d6c6b045ea..454bd7ef707 100644 --- a/tests/baselines/reference/booleanAssignment.errors.txt +++ b/tests/baselines/reference/booleanAssignment.errors.txt @@ -1,13 +1,15 @@ tests/cases/compiler/booleanAssignment.ts(2,1): error TS2322: Type 'number' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. - Type '() => Object' is not assignable to type '() => boolean'. - Type 'Object' is not assignable to type 'boolean'. + Type '() => number' is not assignable to type '() => boolean'. + Type 'number' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(3,1): error TS2322: Type 'string' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. - Type '() => Object' is not assignable to type '() => boolean'. + Type '() => string' is not assignable to type '() => boolean'. + Type 'string' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => Object' is not assignable to type '() => boolean'. + Type 'Object' is not assignable to type 'boolean'. ==== tests/cases/compiler/booleanAssignment.ts (3 errors) ==== @@ -16,18 +18,20 @@ tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not a ~ !!! error TS2322: Type 'number' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. -!!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. +!!! error TS2322: Type '() => number' is not assignable to type '() => boolean'. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. b = "a"; // Error ~ !!! error TS2322: Type 'string' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. -!!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. +!!! error TS2322: Type '() => string' is not assignable to type '() => boolean'. +!!! error TS2322: Type 'string' is not assignable to type 'boolean'. b = {}; // Error ~ !!! error TS2322: Type '{}' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. +!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. var o = {}; o = b; // OK diff --git a/tests/baselines/reference/bpSpan_exports.baseline b/tests/baselines/reference/bpSpan_exports.baseline new file mode 100644 index 00000000000..1b09fb75a2f --- /dev/null +++ b/tests/baselines/reference/bpSpan_exports.baseline @@ -0,0 +1,17 @@ + +1 >export * from "a"; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 18) SpanInfo: {"start":0,"length":17} + >export * from "a" + >:=> (line 1, col 0) to (line 1, col 17) +-------------------------------- +2 >export {a as A} from "a"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (19 to 44) SpanInfo: {"start":19,"length":24} + >export {a as A} from "a" + >:=> (line 2, col 0) to (line 2, col 24) +-------------------------------- +3 >export import e = require("a"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (45 to 75) SpanInfo: {"start":45,"length":30} + >export import e = require("a") + >:=> (line 3, col 0) to (line 3, col 30) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpan_imports.baseline b/tests/baselines/reference/bpSpan_imports.baseline new file mode 100644 index 00000000000..c59f9faf904 --- /dev/null +++ b/tests/baselines/reference/bpSpan_imports.baseline @@ -0,0 +1,35 @@ + +1 >import * as NS from "a"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 24) SpanInfo: {"start":0,"length":23} + >import * as NS from "a" + >:=> (line 1, col 0) to (line 1, col 23) +-------------------------------- +2 >import {a as A} from "a"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (25 to 50) SpanInfo: {"start":25,"length":24} + >import {a as A} from "a" + >:=> (line 2, col 0) to (line 2, col 24) +-------------------------------- +3 > import d from "a"; + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (51 to 70) SpanInfo: {"start":52,"length":17} + >import d from "a" + >:=> (line 3, col 1) to (line 3, col 18) +-------------------------------- +4 >import d2, {c, d as D} from "a"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (71 to 103) SpanInfo: {"start":71,"length":31} + >import d2, {c, d as D} from "a" + >:=> (line 4, col 0) to (line 4, col 31) +-------------------------------- +5 >import "a"; + + ~~~~~~~~~~~~ => Pos: (104 to 115) SpanInfo: {"start":104,"length":10} + >import "a" + >:=> (line 5, col 0) to (line 5, col 10) +-------------------------------- +6 >import e = require("a"); + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (116 to 139) SpanInfo: {"start":116,"length":23} + >import e = require("a") + >:=> (line 6, col 0) to (line 6, col 23) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpan_stmts.baseline b/tests/baselines/reference/bpSpan_stmts.baseline index a81559ee9a5..7f6bf21b40b 100644 --- a/tests/baselines/reference/bpSpan_stmts.baseline +++ b/tests/baselines/reference/bpSpan_stmts.baseline @@ -217,7 +217,15 @@ >:=> (line 28, col 8) to (line 28, col 22) 29 > } catch (e) { - ~~~~~~~~~~~~~ => Pos: (416 to 428) SpanInfo: {"start":437,"length":15} + ~~~~~~~~ => Pos: (416 to 423) SpanInfo: {"start":437,"length":15} + >if (obj.z < 10) + >:=> (line 30, col 8) to (line 30, col 23) +29 > } catch (e) { + + ~ => Pos: (424 to 424) SpanInfo: undefined +29 > } catch (e) { + + ~~~~ => Pos: (425 to 428) SpanInfo: {"start":437,"length":15} >if (obj.z < 10) >:=> (line 30, col 8) to (line 30, col 23) -------------------------------- @@ -286,7 +294,15 @@ >:=> (line 37, col 8) to (line 37, col 25) 38 > } catch (e1) { - ~~~~~~~~~~~~~~ => Pos: (581 to 594) SpanInfo: {"start":603,"length":10} + ~~~~~~~~ => Pos: (581 to 588) SpanInfo: {"start":603,"length":10} + >var b = e1 + >:=> (line 39, col 8) to (line 39, col 18) +38 > } catch (e1) { + + ~~ => Pos: (589 to 590) SpanInfo: undefined +38 > } catch (e1) { + + ~~~~ => Pos: (591 to 594) SpanInfo: {"start":603,"length":10} >var b = e1 >:=> (line 39, col 8) to (line 39, col 18) -------------------------------- diff --git a/tests/baselines/reference/bpSpan_tryCatchFinally.baseline b/tests/baselines/reference/bpSpan_tryCatchFinally.baseline index 5a9e569f403..e5465b8812c 100644 --- a/tests/baselines/reference/bpSpan_tryCatchFinally.baseline +++ b/tests/baselines/reference/bpSpan_tryCatchFinally.baseline @@ -24,7 +24,15 @@ >:=> (line 3, col 4) to (line 3, col 13) 4 >} catch (e) { - ~~~~~~~~~~~~~ => Pos: (34 to 46) SpanInfo: {"start":51,"length":9} + ~~~~~~~~ => Pos: (34 to 41) SpanInfo: {"start":51,"length":9} + >x = x - 1 + >:=> (line 5, col 4) to (line 5, col 13) +4 >} catch (e) { + + ~ => Pos: (42 to 42) SpanInfo: undefined +4 >} catch (e) { + + ~~~~ => Pos: (43 to 46) SpanInfo: {"start":51,"length":9} >x = x - 1 >:=> (line 5, col 4) to (line 5, col 13) -------------------------------- @@ -94,7 +102,15 @@ -------------------------------- 14 >catch (e) - ~~~~~~~~~~ => Pos: (138 to 147) SpanInfo: {"start":154,"length":9} + ~~~~~~~ => Pos: (138 to 144) SpanInfo: {"start":154,"length":9} + >x = x - 1 + >:=> (line 16, col 4) to (line 16, col 13) +14 >catch (e) + + ~ => Pos: (145 to 145) SpanInfo: undefined +14 >catch (e) + + ~~ => Pos: (146 to 147) SpanInfo: {"start":154,"length":9} >x = x - 1 >:=> (line 16, col 4) to (line 16, col 13) -------------------------------- diff --git a/tests/baselines/reference/callWithSpread.js b/tests/baselines/reference/callWithSpread.js index e9f7a7a3288..d676c0f2a33 100644 --- a/tests/baselines/reference/callWithSpread.js +++ b/tests/baselines/reference/callWithSpread.js @@ -61,6 +61,10 @@ var __extends = this.__extends || function (d, b) { d.prototype = new __(); }; function foo(x, y) { + var z = []; + for (var _i = 2; _i < arguments.length; _i++) { + z[_i - 2] = arguments[_i]; + } } var a; var z; @@ -89,6 +93,10 @@ var C = (function () { this.foo.apply(this, [x, y].concat(z)); } C.prototype.foo = function (x, y) { + var z = []; + for (var _i = 2; _i < arguments.length; _i++) { + z[_i - 2] = arguments[_i]; + } }; return C; })(); diff --git a/tests/baselines/reference/callWithSpreadES6.js b/tests/baselines/reference/callWithSpreadES6.js index bdb5aab33ec..d6a915f5f36 100644 --- a/tests/baselines/reference/callWithSpreadES6.js +++ b/tests/baselines/reference/callWithSpreadES6.js @@ -55,12 +55,6 @@ var c = new C(1, 2, ...a); //// [callWithSpreadES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; function foo(x, y, ...z) { } var a; @@ -80,26 +74,23 @@ xa[1].foo(1, 2, "abc"); xa[1].foo(1, 2, ...a); xa[1].foo(1, 2, ...a, "abc"); xa[1].foo(...[1, 2, "abc"]); -var C = (function () { - function C(x, y, ...z) { +class C { + constructor(x, y, ...z) { this.foo(x, y); this.foo(x, y, ...z); } - C.prototype.foo = function (x, y, ...z) { - }; - return C; -})(); -var D = (function (_super) { - __extends(D, _super); - function D() { - _super.call(this, 1, 2); - _super.call(this, 1, 2, ...a); + foo(x, y, ...z) { } - D.prototype.foo = function () { - _super.prototype.foo.call(this, 1, 2); - _super.prototype.foo.call(this, 1, 2, ...a); - }; - return D; -})(C); +} +class D extends C { + constructor() { + super(1, 2); + super(1, 2, ...a); + } + foo() { + super.foo(1, 2); + super.foo(1, 2, ...a); + } +} // Only supported in when target is ES6 var c = new C(1, 2, ...a); diff --git a/tests/baselines/reference/castingTuple.js b/tests/baselines/reference/castingTuple.js index fffadcbc070..2c41d81cd6a 100644 --- a/tests/baselines/reference/castingTuple.js +++ b/tests/baselines/reference/castingTuple.js @@ -90,7 +90,7 @@ var interfaceIITuple = classCDTuple; var classCDATuple = classCDTuple; var eleFromCDA1 = classCDATuple[2]; // A var eleFromCDA2 = classCDATuple[5]; // C | D | A -var t10 = [0 /* one */, 0 /* one */]; +var t10 = [E1.one, E2.one]; var t11 = t10; var array1 = emptyObjTuple; var unionTuple = [new C(), "foo"]; diff --git a/tests/baselines/reference/catchClauseWithBindingPattern1.errors.txt b/tests/baselines/reference/catchClauseWithBindingPattern1.errors.txt new file mode 100644 index 00000000000..0b7482850e5 --- /dev/null +++ b/tests/baselines/reference/catchClauseWithBindingPattern1.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/catchClauseWithBindingPattern1.ts(3,8): error TS1195: Catch clause variable name must be an identifier. + + +==== tests/cases/compiler/catchClauseWithBindingPattern1.ts (1 errors) ==== + try { + } + catch ({a}) { + ~ +!!! error TS1195: Catch clause variable name must be an identifier. + } \ No newline at end of file diff --git a/tests/baselines/reference/catchClauseWithBindingPattern1.js b/tests/baselines/reference/catchClauseWithBindingPattern1.js new file mode 100644 index 00000000000..bbdc259946c --- /dev/null +++ b/tests/baselines/reference/catchClauseWithBindingPattern1.js @@ -0,0 +1,11 @@ +//// [catchClauseWithBindingPattern1.ts] +try { +} +catch ({a}) { +} + +//// [catchClauseWithBindingPattern1.js] +try { +} +catch (a = (void 0).a) { +} diff --git a/tests/baselines/reference/catchClauseWithInitializer1.errors.txt b/tests/baselines/reference/catchClauseWithInitializer1.errors.txt new file mode 100644 index 00000000000..b13644f4d83 --- /dev/null +++ b/tests/baselines/reference/catchClauseWithInitializer1.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/catchClauseWithInitializer1.ts(3,12): error TS1197: Catch clause variable cannot have an initializer. + + +==== tests/cases/compiler/catchClauseWithInitializer1.ts (1 errors) ==== + try { + } + catch (e = 1) { + ~ +!!! error TS1197: Catch clause variable cannot have an initializer. + } \ No newline at end of file diff --git a/tests/baselines/reference/catchClauseWithInitializer1.js b/tests/baselines/reference/catchClauseWithInitializer1.js new file mode 100644 index 00000000000..5cb89a567f1 --- /dev/null +++ b/tests/baselines/reference/catchClauseWithInitializer1.js @@ -0,0 +1,11 @@ +//// [catchClauseWithInitializer1.ts] +try { +} +catch (e = 1) { +} + +//// [catchClauseWithInitializer1.js] +try { +} +catch (e = 1) { +} diff --git a/tests/baselines/reference/catchClauseWithTypeAnnotation.errors.txt b/tests/baselines/reference/catchClauseWithTypeAnnotation.errors.txt index d3eea6619b6..5bc7339d2fc 100644 --- a/tests/baselines/reference/catchClauseWithTypeAnnotation.errors.txt +++ b/tests/baselines/reference/catchClauseWithTypeAnnotation.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/catchClauseWithTypeAnnotation.ts(2,11): error TS1013: Catch clause parameter cannot have a type annotation. +tests/cases/compiler/catchClauseWithTypeAnnotation.ts(2,13): error TS1196: Catch clause variable cannot have a type annotation. ==== tests/cases/compiler/catchClauseWithTypeAnnotation.ts (1 errors) ==== try { } catch (e: any) { - ~ -!!! error TS1013: Catch clause parameter cannot have a type annotation. + ~~~ +!!! error TS1196: Catch clause variable cannot have a type annotation. } \ No newline at end of file diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt index f9edcf4eef6..181bfcc907d 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts(19,59): error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. Type 'B' is not assignable to type 'C'. + Property 'z' is missing in type 'B'. ==== tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts (1 errors) ==== @@ -24,4 +25,5 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParamete (new Chain(new A)).then(a => new B).then(b => new C).then(c => new B).then(b => new A); ~~~~~~~~~~ !!! error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. -!!! error TS2345: Type 'B' is not assignable to type 'C'. \ No newline at end of file +!!! error TS2345: Type 'B' is not assignable to type 'C'. +!!! error TS2345: Property 'z' is missing in type 'B'. \ No newline at end of file diff --git a/tests/baselines/reference/circularImportAlias.types b/tests/baselines/reference/circularImportAlias.types index ab8de414e30..b61f91d460e 100644 --- a/tests/baselines/reference/circularImportAlias.types +++ b/tests/baselines/reference/circularImportAlias.types @@ -10,7 +10,7 @@ module B { export class D extends a.C { >D : D ->a : unknown +>a : typeof a >C : a.C id: number; diff --git a/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt b/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt new file mode 100644 index 00000000000..4f15007bb2a --- /dev/null +++ b/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/classDeclarationBlockScoping1.ts(5,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + + +==== tests/cases/compiler/classDeclarationBlockScoping1.ts (1 errors) ==== + class C { + } + + { + class C { + ~ +!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/classDeclarationBlockScoping1.js b/tests/baselines/reference/classDeclarationBlockScoping1.js new file mode 100644 index 00000000000..717c2f788c3 --- /dev/null +++ b/tests/baselines/reference/classDeclarationBlockScoping1.js @@ -0,0 +1,22 @@ +//// [classDeclarationBlockScoping1.ts] +class C { +} + +{ + class C { + } +} + +//// [classDeclarationBlockScoping1.js] +var C = (function () { + function C() { + } + return C; +})(); +{ + var C = (function () { + function C() { + } + return C; + })(); +} diff --git a/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt b/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt new file mode 100644 index 00000000000..2a9885e110b --- /dev/null +++ b/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/classDeclarationBlockScoping2.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. +tests/cases/compiler/classDeclarationBlockScoping2.ts(5,15): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + + +==== tests/cases/compiler/classDeclarationBlockScoping2.ts (2 errors) ==== + function f() { + class C {} + ~ +!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + var c1 = C; + { + class C {} + ~ +!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + var c2 = C; + } + return C === c1; + } \ No newline at end of file diff --git a/tests/baselines/reference/classDeclarationBlockScoping2.js b/tests/baselines/reference/classDeclarationBlockScoping2.js new file mode 100644 index 00000000000..9e468077119 --- /dev/null +++ b/tests/baselines/reference/classDeclarationBlockScoping2.js @@ -0,0 +1,29 @@ +//// [classDeclarationBlockScoping2.ts] +function f() { + class C {} + var c1 = C; + { + class C {} + var c2 = C; + } + return C === c1; +} + +//// [classDeclarationBlockScoping2.js] +function f() { + var C = (function () { + function C() { + } + return C; + })(); + var c1 = C; + { + var C = (function () { + function C() { + } + return C; + })(); + var c2 = C; + } + return C === c1; +} diff --git a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types index b39d65c3d65..623515a7ec0 100644 --- a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types +++ b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types @@ -18,7 +18,7 @@ module M { export class O extends M.N { >O : O ->M : unknown +>M : typeof M >N : N } } diff --git a/tests/baselines/reference/classExpression.errors.txt b/tests/baselines/reference/classExpression.errors.txt index f5028814acc..c8266d0e879 100644 --- a/tests/baselines/reference/classExpression.errors.txt +++ b/tests/baselines/reference/classExpression.errors.txt @@ -1,36 +1,24 @@ -tests/cases/conformance/classes/classExpression.ts(1,9): error TS1109: Expression expected. -tests/cases/conformance/classes/classExpression.ts(5,10): error TS1109: Expression expected. -tests/cases/conformance/classes/classExpression.ts(5,16): error TS1005: ':' expected. -tests/cases/conformance/classes/classExpression.ts(5,16): error TS2304: Cannot find name 'C2'. -tests/cases/conformance/classes/classExpression.ts(5,19): error TS1005: ',' expected. -tests/cases/conformance/classes/classExpression.ts(7,1): error TS1128: Declaration or statement expected. -tests/cases/conformance/classes/classExpression.ts(10,13): error TS1109: Expression expected. +tests/cases/conformance/classes/classExpression.ts(1,15): error TS9003: 'class' expressions are not currently supported. +tests/cases/conformance/classes/classExpression.ts(5,16): error TS9003: 'class' expressions are not currently supported. +tests/cases/conformance/classes/classExpression.ts(10,19): error TS9003: 'class' expressions are not currently supported. -==== tests/cases/conformance/classes/classExpression.ts (7 errors) ==== +==== tests/cases/conformance/classes/classExpression.ts (3 errors) ==== var x = class C { - ~~~~~ -!!! error TS1109: Expression expected. + ~ +!!! error TS9003: 'class' expressions are not currently supported. } var y = { foo: class C2 { - ~~~~~ -!!! error TS1109: Expression expected. ~~ -!!! error TS1005: ':' expected. - ~~ -!!! error TS2304: Cannot find name 'C2'. - ~ -!!! error TS1005: ',' expected. +!!! error TS9003: 'class' expressions are not currently supported. } } - ~ -!!! error TS1128: Declaration or statement expected. module M { var z = class C4 { - ~~~~~ -!!! error TS1109: Expression expected. + ~~ +!!! error TS9003: 'class' expressions are not currently supported. } } \ No newline at end of file diff --git a/tests/baselines/reference/classExpression.js b/tests/baselines/reference/classExpression.js index 6bcf0f46f74..8f3270d13e7 100644 --- a/tests/baselines/reference/classExpression.js +++ b/tests/baselines/reference/classExpression.js @@ -13,18 +13,21 @@ module M { } //// [classExpression.js] -var x = ; -var C = (function () { +var x = (function () { function C() { } return C; })(); var y = { - foo: , class: C2 }, _a = void 0; + foo: (function () { + function C2() { + } + return C2; + })() +}; var M; (function (M) { - var z = ; - var C4 = (function () { + var z = (function () { function C4() { } return C4; diff --git a/tests/baselines/reference/classExpression1.errors.txt b/tests/baselines/reference/classExpression1.errors.txt new file mode 100644 index 00000000000..9d7d14d8571 --- /dev/null +++ b/tests/baselines/reference/classExpression1.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/classes/classExpressions/classExpression1.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/conformance/classes/classExpressions/classExpression1.ts (1 errors) ==== + var v = class C {}; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpression1.js b/tests/baselines/reference/classExpression1.js new file mode 100644 index 00000000000..68c7bc5e1e7 --- /dev/null +++ b/tests/baselines/reference/classExpression1.js @@ -0,0 +1,9 @@ +//// [classExpression1.ts] +var v = class C {}; + +//// [classExpression1.js] +var v = (function () { + function C() { + } + return C; +})(); diff --git a/tests/baselines/reference/classExpression2.errors.txt b/tests/baselines/reference/classExpression2.errors.txt new file mode 100644 index 00000000000..e2f3ccd77cd --- /dev/null +++ b/tests/baselines/reference/classExpression2.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/classes/classExpressions/classExpression2.ts(2,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/conformance/classes/classExpressions/classExpression2.ts (1 errors) ==== + class D { } + var v = class C extends D {}; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpression2.js b/tests/baselines/reference/classExpression2.js new file mode 100644 index 00000000000..4220b88fb11 --- /dev/null +++ b/tests/baselines/reference/classExpression2.js @@ -0,0 +1,17 @@ +//// [classExpression2.ts] +class D { } +var v = class C extends D {}; + +//// [classExpression2.js] +var D = (function () { + function D() { + } + return D; +})(); +var v = (function (_super) { + __extends(C, _super); + function C() { + _super.apply(this, arguments); + } + return C; +})(D); diff --git a/tests/baselines/reference/classExpressionES61.errors.txt b/tests/baselines/reference/classExpressionES61.errors.txt new file mode 100644 index 00000000000..abaa5ab893c --- /dev/null +++ b/tests/baselines/reference/classExpressionES61.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/es6/classExpressions/classExpressionES61.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/conformance/es6/classExpressions/classExpressionES61.ts (1 errors) ==== + var v = class C {}; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionES61.js b/tests/baselines/reference/classExpressionES61.js new file mode 100644 index 00000000000..afef0909039 --- /dev/null +++ b/tests/baselines/reference/classExpressionES61.js @@ -0,0 +1,7 @@ +//// [classExpressionES61.ts] +var v = class C {}; + +//// [classExpressionES61.js] +var v = class C { +} +; diff --git a/tests/baselines/reference/classExpressionES62.errors.txt b/tests/baselines/reference/classExpressionES62.errors.txt new file mode 100644 index 00000000000..1e28367a17e --- /dev/null +++ b/tests/baselines/reference/classExpressionES62.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/classExpressions/classExpressionES62.ts(2,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/conformance/es6/classExpressions/classExpressionES62.ts (1 errors) ==== + class D { } + var v = class C extends D {}; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionES62.js b/tests/baselines/reference/classExpressionES62.js new file mode 100644 index 00000000000..79cede7300d --- /dev/null +++ b/tests/baselines/reference/classExpressionES62.js @@ -0,0 +1,10 @@ +//// [classExpressionES62.ts] +class D { } +var v = class C extends D {}; + +//// [classExpressionES62.js] +class D { +} +var v = class C extends D { +} +; diff --git a/tests/baselines/reference/classExpressionTest1.errors.txt b/tests/baselines/reference/classExpressionTest1.errors.txt new file mode 100644 index 00000000000..4d7e1cda639 --- /dev/null +++ b/tests/baselines/reference/classExpressionTest1.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/classExpressionTest1.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + + +==== tests/cases/compiler/classExpressionTest1.ts (1 errors) ==== + function M() { + class C { + ~ +!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + f() { + var t: T; + var x: X; + return { t, x }; + } + } + + var v = new C(); + return v.f(); + } \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionTest1.js b/tests/baselines/reference/classExpressionTest1.js new file mode 100644 index 00000000000..e91cdebb8c1 --- /dev/null +++ b/tests/baselines/reference/classExpressionTest1.js @@ -0,0 +1,29 @@ +//// [classExpressionTest1.ts] +function M() { + class C { + f() { + var t: T; + var x: X; + return { t, x }; + } + } + + var v = new C(); + return v.f(); +} + +//// [classExpressionTest1.js] +function M() { + var C = (function () { + function C() { + } + C.prototype.f = function () { + var t; + var x; + return { t: t, x: x }; + }; + return C; + })(); + var v = new C(); + return v.f(); +} diff --git a/tests/baselines/reference/classExpressionTest2.errors.txt b/tests/baselines/reference/classExpressionTest2.errors.txt new file mode 100644 index 00000000000..424eb590611 --- /dev/null +++ b/tests/baselines/reference/classExpressionTest2.errors.txt @@ -0,0 +1,21 @@ +tests/cases/compiler/classExpressionTest2.ts(2,19): error TS9003: 'class' expressions are not currently supported. +tests/cases/compiler/classExpressionTest2.ts(5,20): error TS2304: Cannot find name 'X'. + + +==== tests/cases/compiler/classExpressionTest2.ts (2 errors) ==== + function M() { + var m = class C { + ~ +!!! error TS9003: 'class' expressions are not currently supported. + f() { + var t: T; + var x: X; + ~ +!!! error TS2304: Cannot find name 'X'. + return { t, x }; + } + } + + var v = new m(); + return v.f(); + } \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionTest2.js b/tests/baselines/reference/classExpressionTest2.js new file mode 100644 index 00000000000..ebb5c1e21b6 --- /dev/null +++ b/tests/baselines/reference/classExpressionTest2.js @@ -0,0 +1,29 @@ +//// [classExpressionTest2.ts] +function M() { + var m = class C { + f() { + var t: T; + var x: X; + return { t, x }; + } + } + + var v = new m(); + return v.f(); +} + +//// [classExpressionTest2.js] +function M() { + var m = (function () { + function C() { + } + C.prototype.f = function () { + var t; + var x; + return { t: t, x: x }; + }; + return C; + })(); + var v = new m(); + return v.f(); +} diff --git a/tests/baselines/reference/classExpressionWithDecorator1.errors.txt b/tests/baselines/reference/classExpressionWithDecorator1.errors.txt new file mode 100644 index 00000000000..10f0d8aa376 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithDecorator1.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/classExpressionWithDecorator1.ts(1,9): error TS1109: Expression expected. +tests/cases/compiler/classExpressionWithDecorator1.ts(1,10): error TS2304: Cannot find name 'decorate'. + + +==== tests/cases/compiler/classExpressionWithDecorator1.ts (2 errors) ==== + var v = @decorate class C { static p = 1 }; + ~ +!!! error TS1109: Expression expected. + ~~~~~~~~ +!!! error TS2304: Cannot find name 'decorate'. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionWithDecorator1.js b/tests/baselines/reference/classExpressionWithDecorator1.js new file mode 100644 index 00000000000..fd15941996a --- /dev/null +++ b/tests/baselines/reference/classExpressionWithDecorator1.js @@ -0,0 +1,26 @@ +//// [classExpressionWithDecorator1.ts] +var v = @decorate class C { static p = 1 }; + +//// [classExpressionWithDecorator1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var v = ; +var C = (function () { + function C() { + } + C.p = 1; + C = __decorate([decorate], C); + return C; +})(); +; diff --git a/tests/baselines/reference/classExpressionWithStaticProperties1.errors.txt b/tests/baselines/reference/classExpressionWithStaticProperties1.errors.txt new file mode 100644 index 00000000000..28e42dd33f1 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticProperties1.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/classExpressionWithStaticProperties1.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/compiler/classExpressionWithStaticProperties1.ts (1 errors) ==== + var v = class C { static a = 1; static b = 2 }; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionWithStaticProperties1.js b/tests/baselines/reference/classExpressionWithStaticProperties1.js new file mode 100644 index 00000000000..344dbff50ed --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticProperties1.js @@ -0,0 +1,11 @@ +//// [classExpressionWithStaticProperties1.ts] +var v = class C { static a = 1; static b = 2 }; + +//// [classExpressionWithStaticProperties1.js] +var v = (function () { + function C() { + } + C.a = 1; + C.b = 2; + return C; +})(); diff --git a/tests/baselines/reference/classExpressionWithStaticProperties2.errors.txt b/tests/baselines/reference/classExpressionWithStaticProperties2.errors.txt new file mode 100644 index 00000000000..9a915f70193 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticProperties2.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/classExpressionWithStaticProperties2.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/compiler/classExpressionWithStaticProperties2.ts (1 errors) ==== + var v = class C { static a = 1; static b }; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionWithStaticProperties2.js b/tests/baselines/reference/classExpressionWithStaticProperties2.js new file mode 100644 index 00000000000..9ff9c06ffe4 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticProperties2.js @@ -0,0 +1,10 @@ +//// [classExpressionWithStaticProperties2.ts] +var v = class C { static a = 1; static b }; + +//// [classExpressionWithStaticProperties2.js] +var v = (function () { + function C() { + } + C.a = 1; + return C; +})(); diff --git a/tests/baselines/reference/classExpressionWithStaticPropertiesES61.errors.txt b/tests/baselines/reference/classExpressionWithStaticPropertiesES61.errors.txt new file mode 100644 index 00000000000..bc015a3d8f0 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticPropertiesES61.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/classExpressionWithStaticPropertiesES61.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/compiler/classExpressionWithStaticPropertiesES61.ts (1 errors) ==== + var v = class C { static a = 1; static b = 2 }; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionWithStaticPropertiesES61.js b/tests/baselines/reference/classExpressionWithStaticPropertiesES61.js new file mode 100644 index 00000000000..43f5e7415c4 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticPropertiesES61.js @@ -0,0 +1,10 @@ +//// [classExpressionWithStaticPropertiesES61.ts] +var v = class C { static a = 1; static b = 2 }; + +//// [classExpressionWithStaticPropertiesES61.js] +var v = (_a = class C { + }, + _a.a = 1, + _a.b = 2, + _a); +var _a; diff --git a/tests/baselines/reference/classExpressionWithStaticPropertiesES62.errors.txt b/tests/baselines/reference/classExpressionWithStaticPropertiesES62.errors.txt new file mode 100644 index 00000000000..bed4b2c01aa --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticPropertiesES62.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/classExpressionWithStaticPropertiesES62.ts(1,15): error TS9003: 'class' expressions are not currently supported. + + +==== tests/cases/compiler/classExpressionWithStaticPropertiesES62.ts (1 errors) ==== + var v = class C { static a = 1; static b }; + ~ +!!! error TS9003: 'class' expressions are not currently supported. \ No newline at end of file diff --git a/tests/baselines/reference/classExpressionWithStaticPropertiesES62.js b/tests/baselines/reference/classExpressionWithStaticPropertiesES62.js new file mode 100644 index 00000000000..1efa56ecaa2 --- /dev/null +++ b/tests/baselines/reference/classExpressionWithStaticPropertiesES62.js @@ -0,0 +1,9 @@ +//// [classExpressionWithStaticPropertiesES62.ts] +var v = class C { static a = 1; static b }; + +//// [classExpressionWithStaticPropertiesES62.js] +var v = (_a = class C { + }, + _a.a = 1, + _a); +var _a; diff --git a/tests/baselines/reference/classExtendingPrimitive.errors.txt b/tests/baselines/reference/classExtendingPrimitive.errors.txt index d46439eba1c..ae039640e99 100644 --- a/tests/baselines/reference/classExtendingPrimitive.errors.txt +++ b/tests/baselines/reference/classExtendingPrimitive.errors.txt @@ -2,16 +2,15 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(4,18): error TS2304: Cannot find name 'string'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(5,18): error TS2304: Cannot find name 'boolean'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(6,18): error TS2304: Cannot find name 'Void'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(7,19): error TS1133: Type reference expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(7,19): error TS1109: Expression expected. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(8,18): error TS2304: Cannot find name 'Null'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(9,19): error TS1133: Type reference expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(9,24): error TS1005: ';' expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(9,19): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(10,18): error TS2304: Cannot find name 'undefined'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(11,18): error TS2304: Cannot find name 'Undefined'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(14,18): error TS2311: A class may only extend another class. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts (11 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts (10 errors) ==== // classes cannot extend primitives class C extends number { } @@ -28,15 +27,13 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla !!! error TS2304: Cannot find name 'Void'. class C4a extends void {} ~~~~ -!!! error TS1133: Type reference expected. +!!! error TS1109: Expression expected. class C5 extends Null { } ~~~~ !!! error TS2304: Cannot find name 'Null'. class C5a extends null { } ~~~~ -!!! error TS1133: Type reference expected. - ~ -!!! error TS1005: ';' expected. +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. class C6 extends undefined { } ~~~~~~~~~ !!! error TS2304: Cannot find name 'undefined'. diff --git a/tests/baselines/reference/classExtendingPrimitive.js b/tests/baselines/reference/classExtendingPrimitive.js index 81301818918..45e92dde5f8 100644 --- a/tests/baselines/reference/classExtendingPrimitive.js +++ b/tests/baselines/reference/classExtendingPrimitive.js @@ -63,13 +63,13 @@ var C5 = (function (_super) { } return C5; })(Null); -var C5a = (function () { +var C5a = (function (_super) { + __extends(C5a, _super); function C5a() { + _super.apply(this, arguments); } return C5a; -})(); -null; -{ } +})(null); var C6 = (function (_super) { __extends(C6, _super); function C6() { diff --git a/tests/baselines/reference/classExtendingPrimitive2.errors.txt b/tests/baselines/reference/classExtendingPrimitive2.errors.txt index cc7da5de821..3bba9b9e041 100644 --- a/tests/baselines/reference/classExtendingPrimitive2.errors.txt +++ b/tests/baselines/reference/classExtendingPrimitive2.errors.txt @@ -1,16 +1,13 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(3,19): error TS1133: Type reference expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(4,19): error TS1133: Type reference expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(4,24): error TS1005: ';' expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(3,19): error TS1109: Expression expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(4,19): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts (3 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts (2 errors) ==== // classes cannot extend primitives class C4a extends void {} ~~~~ -!!! error TS1133: Type reference expected. +!!! error TS1109: Expression expected. class C5a extends null { } ~~~~ -!!! error TS1133: Type reference expected. - ~ -!!! error TS1005: ';' expected. \ No newline at end of file +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingPrimitive2.js b/tests/baselines/reference/classExtendingPrimitive2.js index 06b481dbbf4..4ac6b14121a 100644 --- a/tests/baselines/reference/classExtendingPrimitive2.js +++ b/tests/baselines/reference/classExtendingPrimitive2.js @@ -6,16 +6,22 @@ class C5a extends null { } //// [classExtendingPrimitive2.js] // classes cannot extend primitives +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; var C4a = (function () { function C4a() { } return C4a; })(); void {}; -var C5a = (function () { +var C5a = (function (_super) { + __extends(C5a, _super); function C5a() { + _super.apply(this, arguments); } return C5a; -})(); -null; -{ } +})(null); diff --git a/tests/baselines/reference/classExtendingQualifiedName.errors.txt b/tests/baselines/reference/classExtendingQualifiedName.errors.txt index 42eae691050..b63b3e23108 100644 --- a/tests/baselines/reference/classExtendingQualifiedName.errors.txt +++ b/tests/baselines/reference/classExtendingQualifiedName.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendingQualifiedName.ts(5,21): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/compiler/classExtendingQualifiedName.ts(5,23): error TS2305: Module 'M' has no exported member 'C'. ==== tests/cases/compiler/classExtendingQualifiedName.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/compiler/classExtendingQualifiedName.ts(5,21): error TS2305: Module } class D extends M.C { - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'C'. } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingQualifiedName2.types b/tests/baselines/reference/classExtendingQualifiedName2.types index 7706f6bada9..ba96058d9b2 100644 --- a/tests/baselines/reference/classExtendingQualifiedName2.types +++ b/tests/baselines/reference/classExtendingQualifiedName2.types @@ -8,7 +8,7 @@ module M { class D extends M.C { >D : D ->M : unknown +>M : typeof M >C : C } } diff --git a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt index f1870d71391..75eced53139 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt @@ -1,12 +1,13 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(4,17): error TS2311: A class may only extend another class. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,31): error TS1005: ',' expected. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(8,18): error TS2304: Cannot find name 'x'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(11,18): error TS2304: Cannot find name 'M'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(14,18): error TS2304: Cannot find name 'foo'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS1133: Type reference expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,20): error TS1005: ';' expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts (6 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts (7 errors) ==== interface I { foo: string; } @@ -15,6 +16,10 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla !!! error TS2311: A class may only extend another class. class C2 extends { foo: string; } { } // error + ~~~~~~~~~~~~~~~~ +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. + ~ +!!! error TS1005: ',' expected. var x: { foo: string; } class C3 extends x { } // error ~ @@ -31,7 +36,5 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla !!! error TS2304: Cannot find name 'foo'. class C6 extends []{ } // error - ~ -!!! error TS1133: Type reference expected. - ~ -!!! error TS1005: ';' expected. \ No newline at end of file + ~~ +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType.js b/tests/baselines/reference/classExtendsEveryObjectType.js index 2ae7ea71cea..30966fedafc 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType.js +++ b/tests/baselines/reference/classExtendsEveryObjectType.js @@ -30,12 +30,13 @@ var C = (function (_super) { } return C; })(I); // error -var C2 = (function () { +var C2 = (function (_super) { + __extends(C2, _super); function C2() { + _super.apply(this, arguments); } return C2; -})(); -{ } // error +})({ foo: string }); // error var x; var C3 = (function (_super) { __extends(C3, _super); @@ -63,10 +64,10 @@ var C5 = (function (_super) { } return C5; })(foo); // error -var C6 = (function () { +var C6 = (function (_super) { + __extends(C6, _super); function C6() { + _super.apply(this, arguments); } return C6; -})(); -[]; -{ } // error +})([]); // error diff --git a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt index ce5d8aed7a9..45a63030d00 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt @@ -1,12 +1,15 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS1133: Type reference expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,20): error TS1005: ';' expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,31): error TS1005: ',' expected. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts (2 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts (3 errors) ==== class C2 extends { foo: string; } { } // error + ~~~~~~~~~~~~~~~~ +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. + ~ +!!! error TS1005: ',' expected. class C6 extends []{ } // error - ~ -!!! error TS1133: Type reference expected. - ~ -!!! error TS1005: ';' expected. \ No newline at end of file + ~~ +!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType2.js b/tests/baselines/reference/classExtendsEveryObjectType2.js index 7be13137766..37c0861f5ec 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType2.js +++ b/tests/baselines/reference/classExtendsEveryObjectType2.js @@ -4,16 +4,23 @@ class C2 extends { foo: string; } { } // error class C6 extends []{ } // error //// [classExtendsEveryObjectType2.js] -var C2 = (function () { +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var C2 = (function (_super) { + __extends(C2, _super); function C2() { + _super.apply(this, arguments); } return C2; -})(); -{ } // error -var C6 = (function () { +})({ foo: string }); // error +var C6 = (function (_super) { + __extends(C6, _super); function C6() { + _super.apply(this, arguments); } return C6; -})(); -[]; -{ } // error +})([]); // error diff --git a/tests/baselines/reference/classInsideBlock.errors.txt b/tests/baselines/reference/classInsideBlock.errors.txt new file mode 100644 index 00000000000..369e77735e2 --- /dev/null +++ b/tests/baselines/reference/classInsideBlock.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + + +==== tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts (1 errors) ==== + function foo() { + class C { } + ~ +!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. + } \ No newline at end of file diff --git a/tests/baselines/reference/classInsideBlock.js b/tests/baselines/reference/classInsideBlock.js new file mode 100644 index 00000000000..55b3b0bbead --- /dev/null +++ b/tests/baselines/reference/classInsideBlock.js @@ -0,0 +1,13 @@ +//// [classInsideBlock.ts] +function foo() { + class C { } +} + +//// [classInsideBlock.js] +function foo() { + var C = (function () { + function C() { + } + return C; + })(); +} diff --git a/tests/baselines/reference/classWithPredefinedTypesAsNames2.errors.txt b/tests/baselines/reference/classWithPredefinedTypesAsNames2.errors.txt index 73cb373180c..84c258b550d 100644 --- a/tests/baselines/reference/classWithPredefinedTypesAsNames2.errors.txt +++ b/tests/baselines/reference/classWithPredefinedTypesAsNames2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames2.ts(3,7): error TS1003: Identifier expected. +tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames2.ts(3,7): error TS1005: '{' expected. ==== tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames2.ts (1 errors) ==== @@ -6,4 +6,4 @@ tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsName class void {} ~~~~ -!!! error TS1003: Identifier expected. \ No newline at end of file +!!! error TS1005: '{' expected. \ No newline at end of file diff --git a/tests/baselines/reference/classWithPredefinedTypesAsNames2.js b/tests/baselines/reference/classWithPredefinedTypesAsNames2.js index a47adcbe32f..91ff735accc 100644 --- a/tests/baselines/reference/classWithPredefinedTypesAsNames2.js +++ b/tests/baselines/reference/classWithPredefinedTypesAsNames2.js @@ -5,9 +5,9 @@ class void {} //// [classWithPredefinedTypesAsNames2.js] // classes cannot use predefined types as names -var = (function () { - function () { +var default_1 = (function () { + function default_1() { } - return ; + return default_1; })(); void {}; diff --git a/tests/baselines/reference/classWithSemicolonClassElement1.js b/tests/baselines/reference/classWithSemicolonClassElement1.js new file mode 100644 index 00000000000..3838316e113 --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElement1.js @@ -0,0 +1,12 @@ +//// [classWithSemicolonClassElement1.ts] +class C { + ; +} + +//// [classWithSemicolonClassElement1.js] +var C = (function () { + function C() { + } + ; + return C; +})(); diff --git a/tests/baselines/reference/classWithSemicolonClassElement1.types b/tests/baselines/reference/classWithSemicolonClassElement1.types new file mode 100644 index 00000000000..d3315c4cd03 --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElement1.types @@ -0,0 +1,6 @@ +=== tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement1.ts === +class C { +>C : C + + ; +} diff --git a/tests/baselines/reference/classWithSemicolonClassElement2.js b/tests/baselines/reference/classWithSemicolonClassElement2.js new file mode 100644 index 00000000000..77af51bce60 --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElement2.js @@ -0,0 +1,14 @@ +//// [classWithSemicolonClassElement2.ts] +class C { + ; + ; +} + +//// [classWithSemicolonClassElement2.js] +var C = (function () { + function C() { + } + ; + ; + return C; +})(); diff --git a/tests/baselines/reference/classWithSemicolonClassElement2.types b/tests/baselines/reference/classWithSemicolonClassElement2.types new file mode 100644 index 00000000000..ce638e79fc0 --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElement2.types @@ -0,0 +1,7 @@ +=== tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement2.ts === +class C { +>C : C + + ; + ; +} diff --git a/tests/baselines/reference/classWithSemicolonClassElementES61.js b/tests/baselines/reference/classWithSemicolonClassElementES61.js new file mode 100644 index 00000000000..27f020257f5 --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElementES61.js @@ -0,0 +1,9 @@ +//// [classWithSemicolonClassElementES61.ts] +class C { + ; +} + +//// [classWithSemicolonClassElementES61.js] +class C { + ; +} diff --git a/tests/baselines/reference/classWithSemicolonClassElementES61.types b/tests/baselines/reference/classWithSemicolonClassElementES61.types new file mode 100644 index 00000000000..974f269d33c --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElementES61.types @@ -0,0 +1,6 @@ +=== tests/cases/conformance/es6/classDeclaration/classWithSemicolonClassElementES61.ts === +class C { +>C : C + + ; +} diff --git a/tests/baselines/reference/classWithSemicolonClassElementES62.js b/tests/baselines/reference/classWithSemicolonClassElementES62.js new file mode 100644 index 00000000000..068286c25ce --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElementES62.js @@ -0,0 +1,11 @@ +//// [classWithSemicolonClassElementES62.ts] +class C { + ; + ; +} + +//// [classWithSemicolonClassElementES62.js] +class C { + ; + ; +} diff --git a/tests/baselines/reference/classWithSemicolonClassElementES62.types b/tests/baselines/reference/classWithSemicolonClassElementES62.types new file mode 100644 index 00000000000..9f96fbb5ebd --- /dev/null +++ b/tests/baselines/reference/classWithSemicolonClassElementES62.types @@ -0,0 +1,7 @@ +=== tests/cases/conformance/es6/classDeclaration/classWithSemicolonClassElementES62.ts === +class C { +>C : C + + ; + ; +} diff --git a/tests/baselines/reference/cloduleWithRecursiveReference.js b/tests/baselines/reference/cloduleWithRecursiveReference.js index 1b8a91b3c68..1a688712270 100644 --- a/tests/baselines/reference/cloduleWithRecursiveReference.js +++ b/tests/baselines/reference/cloduleWithRecursiveReference.js @@ -17,7 +17,7 @@ var M; })(); M.C = C; var C; - (function (_C) { - _C.C = M.C; + (function (C_1) { + C_1.C = M.C; })(C = M.C || (M.C = {})); })(M || (M = {})); diff --git a/tests/baselines/reference/collisionArgumentsClassConstructor.errors.txt b/tests/baselines/reference/collisionArgumentsClassConstructor.errors.txt index f2ec9429eb7..03bf4f9e38b 100644 --- a/tests/baselines/reference/collisionArgumentsClassConstructor.errors.txt +++ b/tests/baselines/reference/collisionArgumentsClassConstructor.errors.txt @@ -1,40 +1,89 @@ tests/cases/compiler/collisionArgumentsClassConstructor.ts(3,28): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(3,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(4,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(8,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassConstructor.ts(8,17): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(9,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(13,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(14,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(20,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(25,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassConstructor.ts(30,17): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(30,24): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(31,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(35,24): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(36,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(41,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(44,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(47,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(51,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(52,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassConstructor.ts(53,25): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(53,28): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(54,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(59,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(60,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(61,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassConstructor.ts(61,17): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(62,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(67,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(68,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(69,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(70,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(75,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(76,31): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(79,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(80,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(84,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassConstructor.ts(85,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. -==== tests/cases/compiler/collisionArgumentsClassConstructor.ts (5 errors) ==== +==== tests/cases/compiler/collisionArgumentsClassConstructor.ts (38 errors) ==== // Constructors class c1 { constructor(i: number, ...arguments) { // error ~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any[]; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c12 { constructor(arguments: number, ...rest) { // error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. ~~~~~~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c1NoError { constructor(arguments: number) { // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c2 { constructor(...restParameters) { var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c2NoError { constructor() { var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } @@ -42,63 +91,113 @@ tests/cases/compiler/collisionArgumentsClassConstructor.ts(61,17): error TS2396: constructor(public arguments: number, ...restParameters) { //arguments is error ~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c3NoError { constructor(public arguments: number) { // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } declare class c4 { constructor(i: number, ...arguments); // No error - no code gen + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } declare class c42 { constructor(arguments: number, ...rest); // No error - no code gen + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } declare class c4NoError { constructor(arguments: number); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } class c5 { constructor(i: number, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(i: string, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(i: any, ...arguments) { // error ~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any[]; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c52 { constructor(arguments: number, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: string, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: any, ...rest) { // error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. ~~~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. var arguments: any; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } class c5NoError { constructor(arguments: number); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: string); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: any) { // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } declare class c6 { constructor(i: number, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(i: string, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } declare class c62 { constructor(arguments: number, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: string, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } declare class c6NoError { constructor(arguments: number); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. constructor(arguments: string); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } \ No newline at end of file diff --git a/tests/baselines/reference/collisionArgumentsClassMethod.errors.txt b/tests/baselines/reference/collisionArgumentsClassMethod.errors.txt index 38ad6867200..ea699414f17 100644 --- a/tests/baselines/reference/collisionArgumentsClassMethod.errors.txt +++ b/tests/baselines/reference/collisionArgumentsClassMethod.errors.txt @@ -1,63 +1,150 @@ tests/cases/compiler/collisionArgumentsClassMethod.ts(2,27): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassMethod.ts(2,30): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(3,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(5,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassMethod.ts(5,17): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassMethod.ts(6,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(8,23): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(9,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(11,29): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(12,29): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassMethod.ts(13,23): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassMethod.ts(13,26): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(14,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(16,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(17,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(18,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. tests/cases/compiler/collisionArgumentsClassMethod.ts(18,16): error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. +tests/cases/compiler/collisionArgumentsClassMethod.ts(19,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(21,22): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(22,22): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(23,22): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(24,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(29,30): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(30,17): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(31,23): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(33,29): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(34,29): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(35,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(36,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(37,22): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(38,22): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(43,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/compiler/collisionArgumentsClassMethod.ts(46,13): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. -==== tests/cases/compiler/collisionArgumentsClassMethod.ts (4 errors) ==== +==== tests/cases/compiler/collisionArgumentsClassMethod.ts (33 errors) ==== class c1 { public foo(i: number, ...arguments) { //arguments is error ~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any[]; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public foo1(arguments: number, ...rest) { //arguments is error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. ~~~~~~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public fooNoError(arguments: number) { // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public f4(i: number, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4(i: string, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4(i: any, ...arguments) { // error ~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any[]; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public f41(arguments: number, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f41(arguments: string, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f41(arguments: any, ...rest) { // error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. ~~~~~~~~~~~~~~ !!! error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. var arguments: any; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public f4NoError(arguments: number); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4NoError(arguments: string); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4NoError(arguments: any) { // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. var arguments: any; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } declare class c2 { public foo(i: number, ...arguments); // No error - no code gen + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public foo1(arguments: number, ...rest); // No error - no code gen + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public fooNoError(arguments: number); // No error - no code gen + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4(i: number, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4(i: string, ...arguments); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f41(arguments: number, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f41(arguments: string, ...rest); // no codegen no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4NoError(arguments: number); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. public f4NoError(arguments: string); // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } class c3 { public foo(...restParameters) { var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } public fooNoError() { var arguments = 10; // no error + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. } } \ No newline at end of file diff --git a/tests/baselines/reference/collisionCodeGenEnumWithEnumMemberConflict.js b/tests/baselines/reference/collisionCodeGenEnumWithEnumMemberConflict.js index 454fddf6fa8..1e56eb8bd9f 100644 --- a/tests/baselines/reference/collisionCodeGenEnumWithEnumMemberConflict.js +++ b/tests/baselines/reference/collisionCodeGenEnumWithEnumMemberConflict.js @@ -8,5 +8,5 @@ enum Color { var Color; (function (Color) { Color[Color["Color"] = 0] = "Color"; - Color[Color["Thing"] = Color.Color] = "Thing"; + Color[Color["Thing"] = 0] = "Thing"; })(Color || (Color = {})); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithAccessorChildren.js b/tests/baselines/reference/collisionCodeGenModuleWithAccessorChildren.js index 141ef285f03..8152a9c2721 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithAccessorChildren.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithAccessorChildren.js @@ -47,14 +47,14 @@ module M { // Shouldnt be _M //// [collisionCodeGenModuleWithAccessorChildren.js] var M; -(function (_M) { - _M.x = 3; +(function (M_1) { + M_1.x = 3; var c = (function () { function c() { } Object.defineProperty(c.prototype, "Z", { set: function (M) { - this.y = _M.x; + this.y = M_1.x; }, enumerable: true, configurable: true @@ -63,14 +63,14 @@ var M; })(); })(M || (M = {})); var M; -(function (_M_1) { +(function (M_2) { var d = (function () { function d() { } Object.defineProperty(d.prototype, "Z", { set: function (p) { var M = 10; - this.y = _M_1.x; + this.y = M_2.x; }, enumerable: true, configurable: true @@ -94,14 +94,14 @@ var M; })(); })(M || (M = {})); var M; -(function (_M_2) { +(function (M_3) { var f = (function () { function f() { } Object.defineProperty(f.prototype, "Z", { get: function () { var M = 10; - return _M_2.x; + return M_3.x; }, enumerable: true, configurable: true diff --git a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.js b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.js index 2158a0562ea..2aa705c9141 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.js @@ -25,31 +25,31 @@ module M { //// [collisionCodeGenModuleWithConstructorChildren.js] var M; -(function (_M) { - _M.x = 3; +(function (M_1) { + M_1.x = 3; var c = (function () { function c(M, p) { - if (p === void 0) { p = _M.x; } + if (p === void 0) { p = M_1.x; } } return c; })(); })(M || (M = {})); var M; -(function (_M_1) { +(function (M_2) { var d = (function () { function d(M, p) { - if (p === void 0) { p = _M_1.x; } + if (p === void 0) { p = M_2.x; } this.M = M; } return d; })(); })(M || (M = {})); var M; -(function (_M_2) { +(function (M_3) { var d2 = (function () { function d2() { var M = 10; - var p = _M_2.x; + var p = M_3.x; } return d2; })(); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithEnumMemberConflict.js b/tests/baselines/reference/collisionCodeGenModuleWithEnumMemberConflict.js index 0dc8e508d45..3662f5d6ddd 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithEnumMemberConflict.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithEnumMemberConflict.js @@ -12,6 +12,6 @@ var m1; var e; (function (e) { e[e["m1"] = 0] = "m1"; - e[e["m2"] = e.m1] = "m2"; + e[e["m2"] = 0] = "m2"; })(e || (e = {})); })(m1 || (m1 = {})); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.js b/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.js index caaa6a59da5..252ad2c63dc 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.js @@ -21,24 +21,24 @@ module M { //// [collisionCodeGenModuleWithFunctionChildren.js] var M; -(function (_M) { - _M.x = 3; +(function (M_1) { + M_1.x = 3; function fn(M, p) { - if (p === void 0) { p = _M.x; } + if (p === void 0) { p = M_1.x; } } })(M || (M = {})); var M; -(function (_M_1) { +(function (M_2) { function fn2() { var M; - var p = _M_1.x; + var p = M_2.x; } })(M || (M = {})); var M; -(function (_M_2) { +(function (M_3) { function fn3() { function M() { - var p = _M_2.x; + var p = M_3.x; } } })(M || (M = {})); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMemberClassConflict.js b/tests/baselines/reference/collisionCodeGenModuleWithMemberClassConflict.js index 59c2ebf295d..05ae475e7d2 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMemberClassConflict.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithMemberClassConflict.js @@ -17,29 +17,29 @@ var foo = new m2._m2(); //// [collisionCodeGenModuleWithMemberClassConflict.js] var m1; -(function (_m1) { +(function (m1_1) { var m1 = (function () { function m1() { } return m1; })(); - _m1.m1 = m1; + m1_1.m1 = m1; })(m1 || (m1 = {})); var foo = new m1.m1(); var m2; -(function (_m2_1) { +(function (m2_1) { var m2 = (function () { function m2() { } return m2; })(); - _m2_1.m2 = m2; + m2_1.m2 = m2; var _m2 = (function () { function _m2() { } return _m2; })(); - _m2_1._m2 = _m2; + m2_1._m2 = _m2; })(m2 || (m2 = {})); var foo = new m2.m2(); var foo = new m2._m2(); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.js b/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.js index d57de06dfa7..1a23b81c139 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.js @@ -7,8 +7,8 @@ var foo = m1.m1; //// [collisionCodeGenModuleWithMemberVariable.js] var m1; -(function (_m1) { - _m1.m1 = 10; - var b = _m1.m1; +(function (m1_1) { + m1_1.m1 = 10; + var b = m1_1.m1; })(m1 || (m1 = {})); var foo = m1.m1; diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.js b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.js index 212364ed30b..53807f1cabd 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.js @@ -34,37 +34,37 @@ module M { // Shouldnt bn _M //// [collisionCodeGenModuleWithMethodChildren.js] var M; -(function (_M) { - _M.x = 3; +(function (M_1) { + M_1.x = 3; var c = (function () { function c() { } c.prototype.fn = function (M, p) { - if (p === void 0) { p = _M.x; } + if (p === void 0) { p = M_1.x; } }; return c; })(); })(M || (M = {})); var M; -(function (_M_1) { +(function (M_2) { var d = (function () { function d() { } d.prototype.fn2 = function () { var M; - var p = _M_1.x; + var p = M_2.x; }; return d; })(); })(M || (M = {})); var M; -(function (_M_2) { +(function (M_3) { var e = (function () { function e() { } e.prototype.fn3 = function () { function M() { - var p = _M_2.x; + var p = M_3.x; } }; return e; diff --git a/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.js b/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.js index 3c8b17deadd..2862a844067 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.js @@ -44,16 +44,16 @@ module M { //// [collisionCodeGenModuleWithModuleChildren.js] var M; -(function (_M) { - _M.x = 3; +(function (M_1) { + M_1.x = 3; var m1; (function (m1) { var M = 10; - var p = _M.x; + var p = M_1.x; })(m1 || (m1 = {})); })(M || (M = {})); var M; -(function (_M_1) { +(function (M_2) { var m2; (function (m2) { var M = (function () { @@ -61,17 +61,17 @@ var M; } return M; })(); - var p = _M_1.x; + var p = M_2.x; var p2 = new M(); })(m2 || (m2 = {})); })(M || (M = {})); var M; -(function (_M_2) { +(function (M_3) { var m3; (function (m3) { function M() { } - var p = _M_2.x; + var p = M_3.x; var p2 = M(); })(m3 || (m3 = {})); })(M || (M = {})); @@ -84,12 +84,12 @@ var M; })(m3 || (m3 = {})); })(M || (M = {})); var M; -(function (_M_3) { +(function (M_4) { var m4; (function (m4) { var M; (function (M) { - var p = _M_3.x; + var p = M_4.x; })(M || (M = {})); })(m4 || (m4 = {})); })(M || (M = {})); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.js b/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.js index 4c3d6023063..710c09e4558 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.js @@ -31,13 +31,13 @@ var foo2 = new m2.m2(); //// [collisionCodeGenModuleWithModuleReopening.js] var m1; -(function (_m1) { +(function (m1_1) { var m1 = (function () { function m1() { } return m1; })(); - _m1.m1 = m1; + m1_1.m1 = m1; })(m1 || (m1 = {})); var foo = new m1.m1(); var m1; @@ -65,16 +65,16 @@ var m2; })(m2 || (m2 = {})); var foo3 = new m2.c1(); var m2; -(function (_m2) { +(function (m2_1) { var m2 = (function () { function m2() { } return m2; })(); - _m2.m2 = m2; + m2_1.m2 = m2; var b = new m2(); - var d = _m2.b10; - var c = new _m2.c1(); + var d = m2_1.b10; + var c = new m2_1.c1(); })(m2 || (m2 = {})); var foo3 = new m2.c1(); var foo2 = new m2.m2(); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithPrivateMember.js b/tests/baselines/reference/collisionCodeGenModuleWithPrivateMember.js index 28901bd11e8..4b4d6aa7afb 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithPrivateMember.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithPrivateMember.js @@ -10,7 +10,7 @@ var foo = new m1.c1(); //// [collisionCodeGenModuleWithPrivateMember.js] var m1; -(function (_m1) { +(function (m1_1) { var m1 = (function () { function m1() { } @@ -22,6 +22,6 @@ var m1; } return c1; })(); - _m1.c1 = c1; + m1_1.c1 = c1; })(m1 || (m1 = {})); var foo = new m1.c1(); diff --git a/tests/baselines/reference/collisionCodeGenModuleWithUnicodeNames.js b/tests/baselines/reference/collisionCodeGenModuleWithUnicodeNames.js index d4e919e0a17..3204a05bc75 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithUnicodeNames.js +++ b/tests/baselines/reference/collisionCodeGenModuleWithUnicodeNames.js @@ -11,12 +11,12 @@ var x = new 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكو //// [collisionCodeGenModuleWithUnicodeNames.js] var 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123; -(function (_才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123) { +(function (才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123_1) { var 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = (function () { function 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123() { } return 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123; })(); - _才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123.才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123; + 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123_1.才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123; })(才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 || (才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = {})); var x = new 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123.才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123(); diff --git a/tests/baselines/reference/collisionRestParameterFunction.js b/tests/baselines/reference/collisionRestParameterFunction.js index 9ae266dad41..8660e8f5db0 100644 --- a/tests/baselines/reference/collisionRestParameterFunction.js +++ b/tests/baselines/reference/collisionRestParameterFunction.js @@ -56,6 +56,10 @@ function f3NoError() { var _i = 10; // no error } function f4(_i) { + var rest = []; + for (var _a = 1; _a < arguments.length; _a++) { + rest[_a - 1] = arguments[_a]; + } } function f4NoError(_i) { } diff --git a/tests/baselines/reference/collisionRestParameterFunctionExpressions.js b/tests/baselines/reference/collisionRestParameterFunctionExpressions.js index f45619ddb71..22709b087eb 100644 --- a/tests/baselines/reference/collisionRestParameterFunctionExpressions.js +++ b/tests/baselines/reference/collisionRestParameterFunctionExpressions.js @@ -47,6 +47,10 @@ function foo() { var _i = 10; // no error } function f4(_i) { + var rest = []; + for (var _a = 1; _a < arguments.length; _a++) { + rest[_a - 1] = arguments[_a]; + } } function f4NoError(_i) { } diff --git a/tests/baselines/reference/collisionSuperAndLocalFunctionInAccessors.errors.txt b/tests/baselines/reference/collisionSuperAndLocalFunctionInAccessors.errors.txt index 6a459b222c7..16b4edced7b 100644 --- a/tests/baselines/reference/collisionSuperAndLocalFunctionInAccessors.errors.txt +++ b/tests/baselines/reference/collisionSuperAndLocalFunctionInAccessors.errors.txt @@ -1,13 +1,13 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(4,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(9,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(15,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(16,9): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(16,18): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(20,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(21,9): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(21,18): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(26,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(28,13): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(28,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(33,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(35,13): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(35,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. ==== tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts (10 errors) ==== @@ -33,20 +33,18 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(35,13): error ~~~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } return 10; } set prop2(val: number) { ~~~~~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } class c extends Foo { @@ -55,10 +53,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(35,13): error !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var x = () => { function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } return 10; } @@ -67,10 +64,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInAccessors.ts(35,13): error !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. var x = () => { function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } } \ No newline at end of file diff --git a/tests/baselines/reference/collisionSuperAndLocalFunctionInConstructor.errors.txt b/tests/baselines/reference/collisionSuperAndLocalFunctionInConstructor.errors.txt index 8fce8f63f9d..5e1ec686bfd 100644 --- a/tests/baselines/reference/collisionSuperAndLocalFunctionInConstructor.errors.txt +++ b/tests/baselines/reference/collisionSuperAndLocalFunctionInConstructor.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(12,9): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. -tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(20,13): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(12,18): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(20,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. ==== tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts (2 errors) ==== @@ -15,10 +15,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(20,13): erro constructor() { super(); function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } class c extends Foo { @@ -26,10 +25,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInConstructor.ts(20,13): erro super(); var x = () => { function _super() { // Should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } } \ No newline at end of file diff --git a/tests/baselines/reference/collisionSuperAndLocalFunctionInMethod.errors.txt b/tests/baselines/reference/collisionSuperAndLocalFunctionInMethod.errors.txt index e45219e43c3..e899858fcc9 100644 --- a/tests/baselines/reference/collisionSuperAndLocalFunctionInMethod.errors.txt +++ b/tests/baselines/reference/collisionSuperAndLocalFunctionInMethod.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(13,9): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. -tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(22,13): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(13,18): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(22,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. ==== tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts (2 errors) ==== @@ -16,10 +16,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(22,13): error TS2 class b extends Foo { public foo() { function _super() { // should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } _super() { // No Error } @@ -28,10 +27,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInMethod.ts(22,13): error TS2 public foo() { var x = () => { function _super() { // should be error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } _super() { // No error diff --git a/tests/baselines/reference/collisionSuperAndLocalFunctionInProperty.errors.txt b/tests/baselines/reference/collisionSuperAndLocalFunctionInProperty.errors.txt index 6313eb2d830..f5c585525e0 100644 --- a/tests/baselines/reference/collisionSuperAndLocalFunctionInProperty.errors.txt +++ b/tests/baselines/reference/collisionSuperAndLocalFunctionInProperty.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/collisionSuperAndLocalFunctionInProperty.ts(14,13): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. +tests/cases/compiler/collisionSuperAndLocalFunctionInProperty.ts(14,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. ==== tests/cases/compiler/collisionSuperAndLocalFunctionInProperty.ts (1 errors) ==== @@ -16,10 +16,9 @@ tests/cases/compiler/collisionSuperAndLocalFunctionInProperty.ts(14,13): error T public prop2 = { doStuff: () => { function _super() { // error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. + } } } } \ No newline at end of file diff --git a/tests/baselines/reference/commentOnAmbientModule.types b/tests/baselines/reference/commentOnAmbientModule.types index bf57d9d11bd..f0056decc29 100644 --- a/tests/baselines/reference/commentOnAmbientModule.types +++ b/tests/baselines/reference/commentOnAmbientModule.types @@ -5,7 +5,7 @@ declare module E { class foobar extends D.bar { >foobar : foobar ->D : unknown +>D : typeof D >bar : D.bar foo(); diff --git a/tests/baselines/reference/commentOnBlock1.js b/tests/baselines/reference/commentOnBlock1.js new file mode 100644 index 00000000000..ed5437c1f66 --- /dev/null +++ b/tests/baselines/reference/commentOnBlock1.js @@ -0,0 +1,11 @@ +//// [commentOnBlock1.ts] +// asdf +function f() { + /*asdf*/{} +} + +//// [commentOnBlock1.js] +// asdf +function f() { + /*asdf*/ { } +} diff --git a/tests/baselines/reference/commentOnBlock1.types b/tests/baselines/reference/commentOnBlock1.types new file mode 100644 index 00000000000..cc01efddb1c --- /dev/null +++ b/tests/baselines/reference/commentOnBlock1.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/commentOnBlock1.ts === +// asdf +function f() { +>f : () => void + + /*asdf*/{} +} diff --git a/tests/baselines/reference/commentsEnums.js b/tests/baselines/reference/commentsEnums.js index c8bba8a4f77..7be17f085b0 100644 --- a/tests/baselines/reference/commentsEnums.js +++ b/tests/baselines/reference/commentsEnums.js @@ -21,8 +21,8 @@ var Colors; /** Fancy name for 'pink'*/ Colors[Colors["FancyPink"] = 1] = "FancyPink"; })(Colors || (Colors = {})); // trailing comment -var x = 0 /* Cornflower */; -x = 1 /* FancyPink */; +var x = Colors.Cornflower; +x = Colors.FancyPink; //// [commentsEnums.d.ts] diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.js b/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.js index e0c1f33cb4a..fc0323a89aa 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.js +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.js @@ -80,56 +80,56 @@ var b; // operator < var ra1 = a < b; var ra2 = b < a; -var ra3 = 0 /* a */ < b; -var ra4 = b < 0 /* a */; -var ra5 = 0 /* a */ < 0; -var ra6 = 0 < 0 /* a */; +var ra3 = E.a < b; +var ra4 = b < E.a; +var ra5 = E.a < 0; +var ra6 = 0 < E.a; // operator > var rb1 = a > b; var rb2 = b > a; -var rb3 = 0 /* a */ > b; -var rb4 = b > 0 /* a */; -var rb5 = 0 /* a */ > 0; -var rb6 = 0 > 0 /* a */; +var rb3 = E.a > b; +var rb4 = b > E.a; +var rb5 = E.a > 0; +var rb6 = 0 > E.a; // operator <= var rc1 = a <= b; var rc2 = b <= a; -var rc3 = 0 /* a */ <= b; -var rc4 = b <= 0 /* a */; -var rc5 = 0 /* a */ <= 0; -var rc6 = 0 <= 0 /* a */; +var rc3 = E.a <= b; +var rc4 = b <= E.a; +var rc5 = E.a <= 0; +var rc6 = 0 <= E.a; // operator >= var rd1 = a >= b; var rd2 = b >= a; -var rd3 = 0 /* a */ >= b; -var rd4 = b >= 0 /* a */; -var rd5 = 0 /* a */ >= 0; -var rd6 = 0 >= 0 /* a */; +var rd3 = E.a >= b; +var rd4 = b >= E.a; +var rd5 = E.a >= 0; +var rd6 = 0 >= E.a; // operator == var re1 = a == b; var re2 = b == a; -var re3 = 0 /* a */ == b; -var re4 = b == 0 /* a */; -var re5 = 0 /* a */ == 0; -var re6 = 0 == 0 /* a */; +var re3 = E.a == b; +var re4 = b == E.a; +var re5 = E.a == 0; +var re6 = 0 == E.a; // operator != var rf1 = a != b; var rf2 = b != a; -var rf3 = 0 /* a */ != b; -var rf4 = b != 0 /* a */; -var rf5 = 0 /* a */ != 0; -var rf6 = 0 != 0 /* a */; +var rf3 = E.a != b; +var rf4 = b != E.a; +var rf5 = E.a != 0; +var rf6 = 0 != E.a; // operator === var rg1 = a === b; var rg2 = b === a; -var rg3 = 0 /* a */ === b; -var rg4 = b === 0 /* a */; -var rg5 = 0 /* a */ === 0; -var rg6 = 0 === 0 /* a */; +var rg3 = E.a === b; +var rg4 = b === E.a; +var rg5 = E.a === 0; +var rg6 = 0 === E.a; // operator !== var rh1 = a !== b; var rh2 = b !== a; -var rh3 = 0 /* a */ !== b; -var rh4 = b !== 0 /* a */; -var rh5 = 0 /* a */ !== 0; -var rh6 = 0 !== 0 /* a */; +var rh3 = E.a !== b; +var rh4 = b !== E.a; +var rh5 = E.a !== 0; +var rh6 = 0 !== E.a; diff --git a/tests/baselines/reference/complicatedPrivacy.errors.txt b/tests/baselines/reference/complicatedPrivacy.errors.txt index e212ee21fb5..2ba3abbab8a 100644 --- a/tests/baselines/reference/complicatedPrivacy.errors.txt +++ b/tests/baselines/reference/complicatedPrivacy.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/complicatedPrivacy.ts(11,24): error TS1054: A 'get' accessor cannot have parameters. tests/cases/compiler/complicatedPrivacy.ts(35,5): error TS1170: A computed property name in a type literal must directly refer to a built-in symbol. tests/cases/compiler/complicatedPrivacy.ts(35,6): error TS2304: Cannot find name 'number'. -tests/cases/compiler/complicatedPrivacy.ts(73,49): error TS2305: Module 'mglo5' has no exported member 'i6'. +tests/cases/compiler/complicatedPrivacy.ts(73,55): error TS2305: Module 'mglo5' has no exported member 'i6'. ==== tests/cases/compiler/complicatedPrivacy.ts (4 errors) ==== @@ -84,7 +84,7 @@ tests/cases/compiler/complicatedPrivacy.ts(73,49): error TS2305: Module 'mglo5' export module m3 { export class c_pr implements mglo5.i5, mglo5.i6 { - ~~~~~~~~ + ~~ !!! error TS2305: Module 'mglo5' has no exported member 'i6'. f1() { return "Hello"; diff --git a/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.js b/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.js index aebacb88827..ae53d064178 100644 --- a/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.js +++ b/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.js @@ -64,7 +64,7 @@ x1 += b; x1 += true; x1 += 0; x1 += ''; -x1 += 0 /* a */; +x1 += E.a; x1 += {}; x1 += null; x1 += undefined; @@ -74,20 +74,20 @@ x2 += b; x2 += true; x2 += 0; x2 += ''; -x2 += 0 /* a */; +x2 += E.a; x2 += {}; x2 += null; x2 += undefined; var x3; x3 += a; x3 += 0; -x3 += 0 /* a */; +x3 += E.a; x3 += null; x3 += undefined; var x4; x4 += a; x4 += 0; -x4 += 0 /* a */; +x4 += E.a; x4 += null; x4 += undefined; var x5; diff --git a/tests/baselines/reference/compoundAdditionAssignmentWithInvalidOperands.js b/tests/baselines/reference/compoundAdditionAssignmentWithInvalidOperands.js index af4f1bc1521..cef1d3e424e 100644 --- a/tests/baselines/reference/compoundAdditionAssignmentWithInvalidOperands.js +++ b/tests/baselines/reference/compoundAdditionAssignmentWithInvalidOperands.js @@ -51,7 +51,7 @@ var x1; x1 += a; x1 += true; x1 += 0; -x1 += 0 /* a */; +x1 += E.a; x1 += {}; x1 += null; x1 += undefined; @@ -59,7 +59,7 @@ var x2; x2 += a; x2 += true; x2 += 0; -x2 += 0 /* a */; +x2 += E.a; x2 += {}; x2 += null; x2 += undefined; @@ -67,7 +67,7 @@ var x3; x3 += a; x3 += true; x3 += 0; -x3 += 0 /* a */; +x3 += E.a; x3 += {}; x3 += null; x3 += undefined; diff --git a/tests/baselines/reference/compoundArithmeticAssignmentWithInvalidOperands.js b/tests/baselines/reference/compoundArithmeticAssignmentWithInvalidOperands.js index 61722df0fb0..5c71f717bb2 100644 --- a/tests/baselines/reference/compoundArithmeticAssignmentWithInvalidOperands.js +++ b/tests/baselines/reference/compoundArithmeticAssignmentWithInvalidOperands.js @@ -74,7 +74,7 @@ x1 *= b; x1 *= true; x1 *= 0; x1 *= ''; -x1 *= 0 /* a */; +x1 *= E.a; x1 *= {}; x1 *= null; x1 *= undefined; @@ -84,7 +84,7 @@ x2 *= b; x2 *= true; x2 *= 0; x2 *= ''; -x2 *= 0 /* a */; +x2 *= E.a; x2 *= {}; x2 *= null; x2 *= undefined; @@ -94,7 +94,7 @@ x3 *= b; x3 *= true; x3 *= 0; x3 *= ''; -x3 *= 0 /* a */; +x3 *= E.a; x3 *= {}; x3 *= null; x3 *= undefined; @@ -104,7 +104,7 @@ x4 *= b; x4 *= true; x4 *= 0; x4 *= ''; -x4 *= 0 /* a */; +x4 *= E.a; x4 *= {}; x4 *= null; x4 *= undefined; diff --git a/tests/baselines/reference/computedPropertyNames12_ES6.js b/tests/baselines/reference/computedPropertyNames12_ES6.js index 5ab6e4c09b3..fd6ccb6e486 100644 --- a/tests/baselines/reference/computedPropertyNames12_ES6.js +++ b/tests/baselines/reference/computedPropertyNames12_ES6.js @@ -20,12 +20,11 @@ class C { var s; var n; var a; -var C = (function () { - function C() { +class C { + constructor() { this[n] = n; this[s + n] = 2; this[`hello bye`] = 0; } - C[`hello ${a} bye`] = 0; - return C; -})(); +} +C[`hello ${a} bye`] = 0; diff --git a/tests/baselines/reference/computedPropertyNames13_ES6.js b/tests/baselines/reference/computedPropertyNames13_ES6.js index b18ef3fb3e2..4d4c4372ebf 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES6.js +++ b/tests/baselines/reference/computedPropertyNames13_ES6.js @@ -20,19 +20,16 @@ class C { var s; var n; var a; -var C = (function () { - function C() { - } - C.prototype[s] = function () { }; - C.prototype[n] = function () { }; - C[s + s] = function () { }; - C.prototype[s + n] = function () { }; - C.prototype[+s] = function () { }; - C[""] = function () { }; - C.prototype[0] = function () { }; - C.prototype[a] = function () { }; - C[true] = function () { }; - C.prototype[`hello bye`] = function () { }; - C[`hello ${a} bye`] = function () { }; - return C; -})(); +class C { + [s]() { } + [n]() { } + static [s + s]() { } + [s + n]() { } + [+s]() { } + static [""]() { } + [0]() { } + [a]() { } + static [true]() { } + [`hello bye`]() { } + static [`hello ${a} bye`]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames14_ES6.js b/tests/baselines/reference/computedPropertyNames14_ES6.js index 94b4196a606..e925d6af9d4 100644 --- a/tests/baselines/reference/computedPropertyNames14_ES6.js +++ b/tests/baselines/reference/computedPropertyNames14_ES6.js @@ -11,14 +11,11 @@ class C { //// [computedPropertyNames14_ES6.js] var b; -var C = (function () { - function C() { - } - C.prototype[b] = function () { }; - C[true] = function () { }; - C.prototype[[]] = function () { }; - C[{}] = function () { }; - C.prototype[undefined] = function () { }; - C[null] = function () { }; - return C; -})(); +class C { + [b]() { } + static [true]() { } + [[]]() { } + static [{}]() { } + [undefined]() { } + static [null]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames15_ES6.js b/tests/baselines/reference/computedPropertyNames15_ES6.js index ab7bf4552d6..4cf6ca88146 100644 --- a/tests/baselines/reference/computedPropertyNames15_ES6.js +++ b/tests/baselines/reference/computedPropertyNames15_ES6.js @@ -12,11 +12,8 @@ class C { var p1; var p2; var p3; -var C = (function () { - function C() { - } - C.prototype[p1] = function () { }; - C.prototype[p2] = function () { }; - C.prototype[p3] = function () { }; - return C; -})(); +class C { + [p1]() { } + [p2]() { } + [p3]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames16_ES6.js b/tests/baselines/reference/computedPropertyNames16_ES6.js index 369040e7e22..aaec8db01a3 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES6.js +++ b/tests/baselines/reference/computedPropertyNames16_ES6.js @@ -20,63 +20,16 @@ class C { var s; var n; var a; -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, s, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, n, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, s + s, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, s + n, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, +s, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, "", { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, 0, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, a, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, true, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, `hello bye`, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, `hello ${a} bye`, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + get [s]() { return 0; } + set [n](v) { } + static get [s + s]() { return 0; } + set [s + n](v) { } + get [+s]() { return 0; } + static set [""](v) { } + get [0]() { return 0; } + set [a](v) { } + static get [true]() { return 0; } + set [`hello bye`](v) { } + get [`hello ${a} bye`]() { return 0; } +} diff --git a/tests/baselines/reference/computedPropertyNames17_ES6.js b/tests/baselines/reference/computedPropertyNames17_ES6.js index 38012efbb14..5b1e87744c4 100644 --- a/tests/baselines/reference/computedPropertyNames17_ES6.js +++ b/tests/baselines/reference/computedPropertyNames17_ES6.js @@ -11,38 +11,11 @@ class C { //// [computedPropertyNames17_ES6.js] var b; -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, b, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, true, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, [], { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, {}, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, undefined, { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, null, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + get [b]() { return 0; } + static set [true](v) { } + get [[]]() { return 0; } + set [{}](v) { } + static get [undefined]() { return 0; } + set [null](v) { } +} diff --git a/tests/baselines/reference/computedPropertyNames21_ES6.js b/tests/baselines/reference/computedPropertyNames21_ES6.js index 34a1878f689..5cee093bc4c 100644 --- a/tests/baselines/reference/computedPropertyNames21_ES6.js +++ b/tests/baselines/reference/computedPropertyNames21_ES6.js @@ -7,12 +7,9 @@ class C { } //// [computedPropertyNames21_ES6.js] -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { return 0; - }; - C.prototype[this.bar()] = function () { }; - return C; -})(); + } + [this.bar()]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames22_ES6.js b/tests/baselines/reference/computedPropertyNames22_ES6.js index c5d58939fc8..5fd0487d233 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES6.js +++ b/tests/baselines/reference/computedPropertyNames22_ES6.js @@ -9,14 +9,11 @@ class C { } //// [computedPropertyNames22_ES6.js] -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { var obj = { [this.bar()]() { } }; return 0; - }; - return C; -})(); + } +} diff --git a/tests/baselines/reference/computedPropertyNames23_ES5.js b/tests/baselines/reference/computedPropertyNames23_ES5.js index 33a6d95ec47..8e42a29f7e7 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES5.js +++ b/tests/baselines/reference/computedPropertyNames23_ES5.js @@ -17,5 +17,5 @@ var C = (function () { }; C.prototype[(_a = {}, _a[this.bar()] = 1, _a)[0]] = function () { }; return C; + var _a; })(); -var _a; diff --git a/tests/baselines/reference/computedPropertyNames23_ES6.js b/tests/baselines/reference/computedPropertyNames23_ES6.js index ad3e35dbb25..2103c26d197 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES6.js +++ b/tests/baselines/reference/computedPropertyNames23_ES6.js @@ -9,12 +9,9 @@ class C { } //// [computedPropertyNames23_ES6.js] -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { return 0; - }; - C.prototype[{ [this.bar()]: 1 }[0]] = function () { }; - return C; -})(); + } + [{ [this.bar()]: 1 }[0]]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames24_ES5.errors.txt b/tests/baselines/reference/computedPropertyNames24_ES5.errors.txt index a1290e06956..121b39450a6 100644 --- a/tests/baselines/reference/computedPropertyNames24_ES5.errors.txt +++ b/tests/baselines/reference/computedPropertyNames24_ES5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/computedProperties/computedPropertyNames24_ES5.ts(9,6): error TS2466: 'super' cannot be referenced in a computed property name. +tests/cases/conformance/es6/computedProperties/computedPropertyNames24_ES5.ts(7,6): error TS2466: 'super' cannot be referenced in a computed property name. ==== tests/cases/conformance/es6/computedProperties/computedPropertyNames24_ES5.ts (1 errors) ==== @@ -8,8 +8,6 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames24_ES5.ts(9, } } class C extends Base { - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. [super.bar()]() { } ~~~~~ !!! error TS2466: 'super' cannot be referenced in a computed property name. diff --git a/tests/baselines/reference/computedPropertyNames24_ES5.js b/tests/baselines/reference/computedPropertyNames24_ES5.js index 5b9fcbca992..3fd4d41d0c2 100644 --- a/tests/baselines/reference/computedPropertyNames24_ES5.js +++ b/tests/baselines/reference/computedPropertyNames24_ES5.js @@ -5,8 +5,6 @@ class Base { } } class C extends Base { - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. [super.bar()]() { } } @@ -30,8 +28,6 @@ var C = (function (_super) { function C() { _super.apply(this, arguments); } - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. - C.prototype[super.bar.call(this)] = function () { }; + C.prototype[_super.bar.call(this)] = function () { }; return C; })(Base); diff --git a/tests/baselines/reference/computedPropertyNames24_ES6.js b/tests/baselines/reference/computedPropertyNames24_ES6.js index 58eb07cfb8d..8441ae9111e 100644 --- a/tests/baselines/reference/computedPropertyNames24_ES6.js +++ b/tests/baselines/reference/computedPropertyNames24_ES6.js @@ -11,27 +11,13 @@ class C extends Base { } //// [computedPropertyNames24_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - Base.prototype.bar = function () { +class Base { + bar() { return 0; - }; - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.apply(this, arguments); } +} +class C extends Base { // Gets emitted as super, not _super, which is consistent with // use of super in static properties initializers. - C.prototype[super.bar.call(this)] = function () { }; - return C; -})(Base); + [super.bar()]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames25_ES6.js b/tests/baselines/reference/computedPropertyNames25_ES6.js index 020582c9497..5fa7071c652 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES6.js +++ b/tests/baselines/reference/computedPropertyNames25_ES6.js @@ -14,30 +14,16 @@ class C extends Base { } //// [computedPropertyNames25_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - Base.prototype.bar = function () { +class Base { + bar() { return 0; - }; - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.apply(this, arguments); } - C.prototype.foo = function () { +} +class C extends Base { + foo() { var obj = { - [_super.prototype.bar.call(this)]() { } + [super.bar()]() { } }; return 0; - }; - return C; -})(Base); + } +} diff --git a/tests/baselines/reference/computedPropertyNames26_ES5.errors.txt b/tests/baselines/reference/computedPropertyNames26_ES5.errors.txt index 77408f0a9f8..e7039712734 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES5.errors.txt +++ b/tests/baselines/reference/computedPropertyNames26_ES5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/computedProperties/computedPropertyNames26_ES5.ts(10,12): error TS2466: 'super' cannot be referenced in a computed property name. +tests/cases/conformance/es6/computedProperties/computedPropertyNames26_ES5.ts(8,12): error TS2466: 'super' cannot be referenced in a computed property name. ==== tests/cases/conformance/es6/computedProperties/computedPropertyNames26_ES5.ts (1 errors) ==== @@ -8,8 +8,6 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames26_ES5.ts(10 } } class C extends Base { - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. [ { [super.bar()]: 1 }[0] ~~~~~ diff --git a/tests/baselines/reference/computedPropertyNames26_ES5.js b/tests/baselines/reference/computedPropertyNames26_ES5.js index 60f6590be9d..7a0a982eb41 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES5.js +++ b/tests/baselines/reference/computedPropertyNames26_ES5.js @@ -5,8 +5,6 @@ class Base { } } class C extends Base { - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. [ { [super.bar()]: 1 }[0] ]() { } @@ -32,9 +30,7 @@ var C = (function (_super) { function C() { _super.apply(this, arguments); } - // Gets emitted as super, not _super, which is consistent with - // use of super in static properties initializers. - C.prototype[(_a = {}, _a[super.bar.call(this)] = 1, _a)[0]] = function () { }; + C.prototype[(_a = {}, _a[_super.bar.call(this)] = 1, _a)[0]] = function () { }; return C; + var _a; })(Base); -var _a; diff --git a/tests/baselines/reference/computedPropertyNames26_ES6.js b/tests/baselines/reference/computedPropertyNames26_ES6.js index dadc6a29e80..bdf65456e48 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES6.js +++ b/tests/baselines/reference/computedPropertyNames26_ES6.js @@ -13,27 +13,13 @@ class C extends Base { } //// [computedPropertyNames26_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - Base.prototype.bar = function () { +class Base { + bar() { return 0; - }; - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.apply(this, arguments); } +} +class C extends Base { // Gets emitted as super, not _super, which is consistent with // use of super in static properties initializers. - C.prototype[{ [super.bar.call(this)]: 1 }[0]] = function () { }; - return C; -})(Base); + [{ [super.bar()]: 1 }[0]]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames27_ES6.js b/tests/baselines/reference/computedPropertyNames27_ES6.js index a78f13cda20..947d9fafe13 100644 --- a/tests/baselines/reference/computedPropertyNames27_ES6.js +++ b/tests/baselines/reference/computedPropertyNames27_ES6.js @@ -6,22 +6,8 @@ class C extends Base { } //// [computedPropertyNames27_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.apply(this, arguments); - } - C.prototype[(_super.call(this), "prop")] = function () { }; - return C; -})(Base); +class Base { +} +class C extends Base { + [(super(), "prop")]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames28_ES6.js b/tests/baselines/reference/computedPropertyNames28_ES6.js index 5656d96de87..0897df3d338 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES6.js +++ b/tests/baselines/reference/computedPropertyNames28_ES6.js @@ -11,24 +11,13 @@ class C extends Base { } //// [computedPropertyNames28_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.call(this); +class Base { +} +class C extends Base { + constructor() { + super(); var obj = { - [(_super.call(this), "prop")]() { } + [(super(), "prop")]() { } }; } - return C; -})(Base); +} diff --git a/tests/baselines/reference/computedPropertyNames29_ES6.js b/tests/baselines/reference/computedPropertyNames29_ES6.js index d01b6fd3b7f..1aa479555d4 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES6.js +++ b/tests/baselines/reference/computedPropertyNames29_ES6.js @@ -11,16 +11,13 @@ class C { } //// [computedPropertyNames29_ES6.js] -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { (() => { var obj = { [this.bar()]() { } // needs capture }; }); return 0; - }; - return C; -})(); + } +} diff --git a/tests/baselines/reference/computedPropertyNames2_ES6.js b/tests/baselines/reference/computedPropertyNames2_ES6.js index b58b1a6f077..9eeb1a609fd 100644 --- a/tests/baselines/reference/computedPropertyNames2_ES6.js +++ b/tests/baselines/reference/computedPropertyNames2_ES6.js @@ -13,30 +13,11 @@ class C { //// [computedPropertyNames2_ES6.js] var methodName = "method"; var accessorName = "accessor"; -var C = (function () { - function C() { - } - C.prototype[methodName] = function () { }; - C[methodName] = function () { }; - Object.defineProperty(C.prototype, accessorName, { - get: function () { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, accessorName, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, accessorName, { - get: function () { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, accessorName, { - set: function (v) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + [methodName]() { } + static [methodName]() { } + get [accessorName]() { } + set [accessorName](v) { } + static get [accessorName]() { } + static set [accessorName](v) { } +} diff --git a/tests/baselines/reference/computedPropertyNames30_ES6.js b/tests/baselines/reference/computedPropertyNames30_ES6.js index 0c4f259fe48..44a475fed92 100644 --- a/tests/baselines/reference/computedPropertyNames30_ES6.js +++ b/tests/baselines/reference/computedPropertyNames30_ES6.js @@ -16,29 +16,18 @@ class C extends Base { } //// [computedPropertyNames30_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.call(this); +class Base { +} +class C extends Base { + constructor() { + super(); (() => { var obj = { // Ideally, we would capture this. But the reference is // illegal, and not capturing this is consistent with //treatment of other similar violations. - [(_super.call(this), "prop")]() { } + [(super(), "prop")]() { } }; }); } - return C; -})(Base); +} diff --git a/tests/baselines/reference/computedPropertyNames31_ES6.js b/tests/baselines/reference/computedPropertyNames31_ES6.js index 0f7d72818fe..2c63dcee077 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES6.js +++ b/tests/baselines/reference/computedPropertyNames31_ES6.js @@ -16,33 +16,19 @@ class C extends Base { } //// [computedPropertyNames31_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Base = (function () { - function Base() { - } - Base.prototype.bar = function () { +class Base { + bar() { return 0; - }; - return Base; -})(); -var C = (function (_super) { - __extends(C, _super); - function C() { - _super.apply(this, arguments); } - C.prototype.foo = function () { +} +class C extends Base { + foo() { var _this = this; (() => { var obj = { - [_super.prototype.bar.call(_this)]() { } // needs capture + [super.bar()]() { } // needs capture }; }); return 0; - }; - return C; -})(Base); + } +} diff --git a/tests/baselines/reference/computedPropertyNames32_ES6.js b/tests/baselines/reference/computedPropertyNames32_ES6.js index 69d2a40edce..07d331d923b 100644 --- a/tests/baselines/reference/computedPropertyNames32_ES6.js +++ b/tests/baselines/reference/computedPropertyNames32_ES6.js @@ -9,12 +9,9 @@ class C { //// [computedPropertyNames32_ES6.js] function foo() { return ''; } -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { return 0; - }; - C.prototype[foo()] = function () { }; - return C; -})(); + } + [foo()]() { } +} diff --git a/tests/baselines/reference/computedPropertyNames33_ES6.js b/tests/baselines/reference/computedPropertyNames33_ES6.js index 768af6fd403..2a74f486342 100644 --- a/tests/baselines/reference/computedPropertyNames33_ES6.js +++ b/tests/baselines/reference/computedPropertyNames33_ES6.js @@ -11,14 +11,11 @@ class C { //// [computedPropertyNames33_ES6.js] function foo() { return ''; } -var C = (function () { - function C() { - } - C.prototype.bar = function () { +class C { + bar() { var obj = { [foo()]() { } }; return 0; - }; - return C; -})(); + } +} diff --git a/tests/baselines/reference/computedPropertyNames34_ES6.js b/tests/baselines/reference/computedPropertyNames34_ES6.js index 09cccb0e7f4..69528052849 100644 --- a/tests/baselines/reference/computedPropertyNames34_ES6.js +++ b/tests/baselines/reference/computedPropertyNames34_ES6.js @@ -11,14 +11,11 @@ class C { //// [computedPropertyNames34_ES6.js] function foo() { return ''; } -var C = (function () { - function C() { - } - C.bar = function () { +class C { + static bar() { var obj = { [foo()]() { } }; return 0; - }; - return C; -})(); + } +} diff --git a/tests/baselines/reference/computedPropertyNames36_ES6.js b/tests/baselines/reference/computedPropertyNames36_ES6.js index 09bab9a2630..5d10ceef310 100644 --- a/tests/baselines/reference/computedPropertyNames36_ES6.js +++ b/tests/baselines/reference/computedPropertyNames36_ES6.js @@ -11,29 +11,12 @@ class C { } //// [computedPropertyNames36_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, "get1", { - // Computed properties - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, "set1", { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class Foo { +} +class Foo2 { +} +class C { + // Computed properties + get ["get1"]() { return new Foo; } + set ["set1"](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames37_ES6.js b/tests/baselines/reference/computedPropertyNames37_ES6.js index c824f15ef54..025df25d055 100644 --- a/tests/baselines/reference/computedPropertyNames37_ES6.js +++ b/tests/baselines/reference/computedPropertyNames37_ES6.js @@ -11,29 +11,12 @@ class C { } //// [computedPropertyNames37_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, "get1", { - // Computed properties - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, "set1", { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class Foo { +} +class Foo2 { +} +class C { + // Computed properties + get ["get1"]() { return new Foo; } + set ["set1"](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames38_ES6.js b/tests/baselines/reference/computedPropertyNames38_ES6.js index 9dde7da09de..ea87afedcc4 100644 --- a/tests/baselines/reference/computedPropertyNames38_ES6.js +++ b/tests/baselines/reference/computedPropertyNames38_ES6.js @@ -11,29 +11,12 @@ class C { } //// [computedPropertyNames38_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, 1 << 6, { - // Computed properties - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, 1 << 6, { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class Foo { +} +class Foo2 { +} +class C { + // Computed properties + get [1 << 6]() { return new Foo; } + set [1 << 6](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames39_ES6.js b/tests/baselines/reference/computedPropertyNames39_ES6.js index d0d21f201bb..a874140da0f 100644 --- a/tests/baselines/reference/computedPropertyNames39_ES6.js +++ b/tests/baselines/reference/computedPropertyNames39_ES6.js @@ -11,29 +11,12 @@ class C { } //// [computedPropertyNames39_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, 1 << 6, { - // Computed properties - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, 1 << 6, { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class Foo { +} +class Foo2 { +} +class C { + // Computed properties + get [1 << 6]() { return new Foo; } + set [1 << 6](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames3_ES5.errors.txt b/tests/baselines/reference/computedPropertyNames3_ES5.errors.txt index 82e4b71b33b..a31965dc69e 100644 --- a/tests/baselines/reference/computedPropertyNames3_ES5.errors.txt +++ b/tests/baselines/reference/computedPropertyNames3_ES5.errors.txt @@ -1,12 +1,13 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(4,12): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(5,9): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(5,9): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. +tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(5,17): error TS1102: 'delete' cannot be called on an identifier in strict mode. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(6,9): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(7,16): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(7,16): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. -==== tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts (6 errors) ==== +==== tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts (7 errors) ==== var id; class C { [0 + 1]() { } @@ -18,6 +19,8 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES5.ts(7,1 !!! error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. ~~~~~~~~~~~ !!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. + ~~ +!!! error TS1102: 'delete' cannot be called on an identifier in strict mode. set [[0, 1]](v) { } ~~~~~~~~ !!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. diff --git a/tests/baselines/reference/computedPropertyNames3_ES6.errors.txt b/tests/baselines/reference/computedPropertyNames3_ES6.errors.txt index 3df6d6d9744..b9009112347 100644 --- a/tests/baselines/reference/computedPropertyNames3_ES6.errors.txt +++ b/tests/baselines/reference/computedPropertyNames3_ES6.errors.txt @@ -1,12 +1,13 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(4,12): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(5,9): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(5,9): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. +tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(5,17): error TS1102: 'delete' cannot be called on an identifier in strict mode. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(6,9): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(7,16): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(7,16): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. -==== tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts (6 errors) ==== +==== tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts (7 errors) ==== var id; class C { [0 + 1]() { } @@ -18,6 +19,8 @@ tests/cases/conformance/es6/computedProperties/computedPropertyNames3_ES6.ts(7,1 !!! error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. ~~~~~~~~~~~ !!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. + ~~ +!!! error TS1102: 'delete' cannot be called on an identifier in strict mode. set [[0, 1]](v) { } ~~~~~~~~ !!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. diff --git a/tests/baselines/reference/computedPropertyNames3_ES6.js b/tests/baselines/reference/computedPropertyNames3_ES6.js index 672d90d7b45..d12d7d18660 100644 --- a/tests/baselines/reference/computedPropertyNames3_ES6.js +++ b/tests/baselines/reference/computedPropertyNames3_ES6.js @@ -11,30 +11,11 @@ class C { //// [computedPropertyNames3_ES6.js] var id; -var C = (function () { - function C() { - } - C.prototype[0 + 1] = function () { }; - C[() => { }] = function () { }; - Object.defineProperty(C.prototype, delete id, { - get: function () { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, [0, 1], { - set: function (v) { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, "", { - get: function () { }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, id.toString(), { - set: function (v) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + [0 + 1]() { } + static [() => { }]() { } + get [delete id]() { } + set [[0, 1]](v) { } + static get [""]() { } + static set [id.toString()](v) { } +} diff --git a/tests/baselines/reference/computedPropertyNames40_ES6.js b/tests/baselines/reference/computedPropertyNames40_ES6.js index 208be7760a9..af566425d56 100644 --- a/tests/baselines/reference/computedPropertyNames40_ES6.js +++ b/tests/baselines/reference/computedPropertyNames40_ES6.js @@ -11,21 +11,12 @@ class C { } //// [computedPropertyNames40_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } +class Foo { +} +class Foo2 { +} +class C { // Computed properties - C.prototype[""] = function () { return new Foo; }; - C.prototype[""] = function () { return new Foo2; }; - return C; -})(); + [""]() { return new Foo; } + [""]() { return new Foo2; } +} diff --git a/tests/baselines/reference/computedPropertyNames41_ES6.js b/tests/baselines/reference/computedPropertyNames41_ES6.js index 050079017c0..b27f8da01d1 100644 --- a/tests/baselines/reference/computedPropertyNames41_ES6.js +++ b/tests/baselines/reference/computedPropertyNames41_ES6.js @@ -10,20 +10,11 @@ class C { } //// [computedPropertyNames41_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } +class Foo { +} +class Foo2 { +} +class C { // Computed properties - C[""] = function () { return new Foo; }; - return C; -})(); + static [""]() { return new Foo; } +} diff --git a/tests/baselines/reference/computedPropertyNames42_ES6.js b/tests/baselines/reference/computedPropertyNames42_ES6.js index 8538088f450..b6114f06bac 100644 --- a/tests/baselines/reference/computedPropertyNames42_ES6.js +++ b/tests/baselines/reference/computedPropertyNames42_ES6.js @@ -10,18 +10,9 @@ class C { } //// [computedPropertyNames42_ES6.js] -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - return C; -})(); +class Foo { +} +class Foo2 { +} +class C { +} diff --git a/tests/baselines/reference/computedPropertyNames43_ES6.js b/tests/baselines/reference/computedPropertyNames43_ES6.js index 4b64a4c803b..346c2a0d30d 100644 --- a/tests/baselines/reference/computedPropertyNames43_ES6.js +++ b/tests/baselines/reference/computedPropertyNames43_ES6.js @@ -13,42 +13,14 @@ class D extends C { } //// [computedPropertyNames43_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - return C; -})(); -var D = (function (_super) { - __extends(D, _super); - function D() { - _super.apply(this, arguments); - } - Object.defineProperty(D.prototype, "get1", { - // Computed properties - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(D.prototype, "set1", { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return D; -})(C); +class Foo { +} +class Foo2 { +} +class C { +} +class D extends C { + // Computed properties + get ["get1"]() { return new Foo; } + set ["set1"](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames44_ES6.js b/tests/baselines/reference/computedPropertyNames44_ES6.js index 9cf11f3b337..cd1b8c5da2d 100644 --- a/tests/baselines/reference/computedPropertyNames44_ES6.js +++ b/tests/baselines/reference/computedPropertyNames44_ES6.js @@ -12,41 +12,13 @@ class D extends C { } //// [computedPropertyNames44_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, "get1", { - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - return C; -})(); -var D = (function (_super) { - __extends(D, _super); - function D() { - _super.apply(this, arguments); - } - Object.defineProperty(D.prototype, "set1", { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return D; -})(C); +class Foo { +} +class Foo2 { +} +class C { + get ["get1"]() { return new Foo; } +} +class D extends C { + set ["set1"](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames45_ES6.js b/tests/baselines/reference/computedPropertyNames45_ES6.js index 2e7992fe260..2c01d7625ec 100644 --- a/tests/baselines/reference/computedPropertyNames45_ES6.js +++ b/tests/baselines/reference/computedPropertyNames45_ES6.js @@ -13,41 +13,13 @@ class D extends C { } //// [computedPropertyNames45_ES6.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var Foo = (function () { - function Foo() { - } - return Foo; -})(); -var Foo2 = (function () { - function Foo2() { - } - return Foo2; -})(); -var C = (function () { - function C() { - } - Object.defineProperty(C.prototype, "get1", { - get: function () { return new Foo; }, - enumerable: true, - configurable: true - }); - return C; -})(); -var D = (function (_super) { - __extends(D, _super); - function D() { - _super.apply(this, arguments); - } - Object.defineProperty(D.prototype, "set1", { - set: function (p) { }, - enumerable: true, - configurable: true - }); - return D; -})(C); +class Foo { +} +class Foo2 { +} +class C { + get ["get1"]() { return new Foo; } +} +class D extends C { + set ["set1"](p) { } +} diff --git a/tests/baselines/reference/computedPropertyNames47_ES5.js b/tests/baselines/reference/computedPropertyNames47_ES5.js index 6ba31fe3b06..d03b614b29b 100644 --- a/tests/baselines/reference/computedPropertyNames47_ES5.js +++ b/tests/baselines/reference/computedPropertyNames47_ES5.js @@ -15,7 +15,7 @@ var E2; E2[E2["x"] = 0] = "x"; })(E2 || (E2 = {})); var o = (_a = {}, - _a[0 /* x */ || 0 /* x */] = 0, + _a[E1.x || E2.x] = 0, _a ); var _a; diff --git a/tests/baselines/reference/computedPropertyNames47_ES6.js b/tests/baselines/reference/computedPropertyNames47_ES6.js index e104d33e7d3..0b6cb352999 100644 --- a/tests/baselines/reference/computedPropertyNames47_ES6.js +++ b/tests/baselines/reference/computedPropertyNames47_ES6.js @@ -15,5 +15,5 @@ var E2; E2[E2["x"] = 0] = "x"; })(E2 || (E2 = {})); var o = { - [0 /* x */ || 0 /* x */]: 0 + [E1.x || E2.x]: 0 }; diff --git a/tests/baselines/reference/computedPropertyNames48_ES5.js b/tests/baselines/reference/computedPropertyNames48_ES5.js index 859fb7a179c..15123a98f30 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES5.js +++ b/tests/baselines/reference/computedPropertyNames48_ES5.js @@ -28,7 +28,7 @@ extractIndexer((_a = {}, _a )); // Should return string extractIndexer((_b = {}, - _b[0 /* x */] = "", + _b[E.x] = "", _b )); // Should return string extractIndexer((_c = {}, diff --git a/tests/baselines/reference/computedPropertyNames48_ES6.js b/tests/baselines/reference/computedPropertyNames48_ES6.js index 27821647565..8e54d67238c 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES6.js +++ b/tests/baselines/reference/computedPropertyNames48_ES6.js @@ -27,7 +27,7 @@ extractIndexer({ [a]: "" }); // Should return string extractIndexer({ - [0 /* x */]: "" + [E.x]: "" }); // Should return string extractIndexer({ ["" || 0]: "" diff --git a/tests/baselines/reference/computedPropertyNames7_ES5.js b/tests/baselines/reference/computedPropertyNames7_ES5.js index 886cd8d85eb..3311ec7e092 100644 --- a/tests/baselines/reference/computedPropertyNames7_ES5.js +++ b/tests/baselines/reference/computedPropertyNames7_ES5.js @@ -12,7 +12,7 @@ var E; E[E["member"] = 0] = "member"; })(E || (E = {})); var v = (_a = {}, - _a[0 /* member */] = 0, + _a[E.member] = 0, _a ); var _a; diff --git a/tests/baselines/reference/computedPropertyNames7_ES6.js b/tests/baselines/reference/computedPropertyNames7_ES6.js index 5714fb747a6..ee1e1c85c06 100644 --- a/tests/baselines/reference/computedPropertyNames7_ES6.js +++ b/tests/baselines/reference/computedPropertyNames7_ES6.js @@ -12,5 +12,5 @@ var E; E[E["member"] = 0] = "member"; })(E || (E = {})); var v = { - [0 /* member */]: 0 + [E.member]: 0 }; diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.js b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.js index b7505212baf..2cdb6e34608 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.js +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.js @@ -6,22 +6,11 @@ class C { } //// [computedPropertyNamesDeclarationEmit1_ES6.js] -var C = (function () { - function C() { - } - C.prototype["" + ""] = function () { }; - Object.defineProperty(C.prototype, "" + "", { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C.prototype, "" + "", { - set: function (x) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + ["" + ""]() { } + get ["" + ""]() { return 0; } + set ["" + ""](x) { } +} //// [computedPropertyNamesDeclarationEmit1_ES6.d.ts] diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.js b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.js index 9cd90493ea6..d8934f6c809 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.js +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.js @@ -6,22 +6,11 @@ class C { } //// [computedPropertyNamesDeclarationEmit2_ES6.js] -var C = (function () { - function C() { - } - C["" + ""] = function () { }; - Object.defineProperty(C, "" + "", { - get: function () { return 0; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(C, "" + "", { - set: function (x) { }, - enumerable: true, - configurable: true - }); - return C; -})(); +class C { + static ["" + ""]() { } + static get ["" + ""]() { return 0; } + static set ["" + ""](x) { } +} //// [computedPropertyNamesDeclarationEmit2_ES6.d.ts] diff --git a/tests/baselines/reference/computedPropertyNamesOnOverloads_ES6.js b/tests/baselines/reference/computedPropertyNamesOnOverloads_ES6.js index 1cbddb58dc2..5f09cb5f318 100644 --- a/tests/baselines/reference/computedPropertyNamesOnOverloads_ES6.js +++ b/tests/baselines/reference/computedPropertyNamesOnOverloads_ES6.js @@ -10,9 +10,6 @@ class C { //// [computedPropertyNamesOnOverloads_ES6.js] var methodName = "method"; var accessorName = "accessor"; -var C = (function () { - function C() { - } - C.prototype[methodName] = function (v) { }; - return C; -})(); +class C { + [methodName](v) { } +} diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.js.map b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.js.map index f3881a54bd5..c47fcfcad31 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.js.map +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.js.map @@ -1,2 +1,2 @@ //// [computedPropertyNamesSourceMap1_ES5.js.map] -{"version":3,"file":"computedPropertyNamesSourceMap1_ES5.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap1_ES5.ts"],"names":["C","C.constructor","C[\"hello\"]"],"mappings":"AAAA,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAIPC,CAACA;IAHGD,YAACA,OAAOA,CAACA,GAATA;QACIE,QAAQA,CAACA;IACbA,CAACA;IACLF,QAACA;AAADA,CAACA,AAJD,IAIC"} \ No newline at end of file +{"version":3,"file":"computedPropertyNamesSourceMap1_ES5.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap1_ES5.ts"],"names":["C","C.constructor","C[\"hello\"]"],"mappings":"AAAA;IAAAA;IAIAC,CAACA;IAHGD,YAACA,OAAOA,CAACA,GAATA;QACIE,QAAQA,CAACA;IACbA,CAACA;IACLF,QAACA;AAADA,CAACA,AAJD,IAIC"} \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.sourcemap.txt b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.sourcemap.txt index 607d51ca5dc..df0af71fb02 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.sourcemap.txt +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.sourcemap.txt @@ -10,38 +10,27 @@ sourceFile:computedPropertyNamesSourceMap1_ES5.ts ------------------------------------------------------------------- >>>var C = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > -2 >class -3 > C 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(1, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(1, 8) + SourceIndex(0) --- >>> function C() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ +2 > ^^-> 1-> -2 > class -3 > C 1->Emitted(2, 5) Source(1, 1) + SourceIndex(0) name (C) -2 >Emitted(2, 14) Source(1, 7) + SourceIndex(0) name (C) -3 >Emitted(2, 15) Source(1, 8) + SourceIndex(0) name (C) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > { +1->class C { > ["hello"]() { > debugger; > } > 2 > } -1 >Emitted(3, 5) Source(5, 1) + SourceIndex(0) name (C.constructor) +1->Emitted(3, 5) Source(5, 1) + SourceIndex(0) name (C.constructor) 2 >Emitted(3, 6) Source(5, 2) + SourceIndex(0) name (C.constructor) --- >>> C.prototype["hello"] = function () { diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js index f7dc9e17836..749ab99b18b 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js @@ -6,12 +6,9 @@ class C { } //// [computedPropertyNamesSourceMap1_ES6.js] -var C = (function () { - function C() { - } - C.prototype["hello"] = function () { +class C { + ["hello"]() { debugger; - }; - return C; -})(); + } +} //# sourceMappingURL=computedPropertyNamesSourceMap1_ES6.js.map \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js.map b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js.map index 51154cc4676..9a2dd60999e 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js.map +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.js.map @@ -1,2 +1,2 @@ //// [computedPropertyNamesSourceMap1_ES6.js.map] -{"version":3,"file":"computedPropertyNamesSourceMap1_ES6.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap1_ES6.ts"],"names":["C","C.constructor","C[\"hello\"]"],"mappings":"AAAA,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAIPC,CAACA;IAHGD,YAACA,OAAOA,CAACA,GAATA;QACIE,QAAQA,CAACA;IACbA,CAACA;IACLF,QAACA;AAADA,CAACA,AAJD,IAIC"} \ No newline at end of file +{"version":3,"file":"computedPropertyNamesSourceMap1_ES6.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap1_ES6.ts"],"names":["C","C[\"hello\"]"],"mappings":"AAAA;IACIA,CAACA,OAAOA,CAACA;QACLC,QAAQA,CAACA;IACbA,CAACA;AACLD,CAACA;AAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.sourcemap.txt b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.sourcemap.txt index bb482f68cba..30493b97347 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.sourcemap.txt +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.sourcemap.txt @@ -8,107 +8,61 @@ sources: computedPropertyNamesSourceMap1_ES6.ts emittedFile:tests/cases/conformance/es6/computedProperties/computedPropertyNamesSourceMap1_ES6.js sourceFile:computedPropertyNamesSourceMap1_ES6.ts ------------------------------------------------------------------- ->>>var C = (function () { +>>>class C { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^-> 1 > -2 >class -3 > C 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(1, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(1, 8) + SourceIndex(0) --- ->>> function C() { +>>> ["hello"]() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> -2 > class -3 > C -1->Emitted(2, 5) Source(1, 1) + SourceIndex(0) name (C) -2 >Emitted(2, 14) Source(1, 7) + SourceIndex(0) name (C) -3 >Emitted(2, 15) Source(1, 8) + SourceIndex(0) name (C) +2 > ^ +3 > ^^^^^^^ +4 > ^ +5 > ^^^^^-> +1->class C { + > +2 > [ +3 > "hello" +4 > ] +1->Emitted(2, 5) Source(2, 5) + SourceIndex(0) name (C) +2 >Emitted(2, 6) Source(2, 6) + SourceIndex(0) name (C) +3 >Emitted(2, 13) Source(2, 13) + SourceIndex(0) name (C) +4 >Emitted(2, 14) Source(2, 14) + SourceIndex(0) name (C) +--- +>>> debugger; +1->^^^^^^^^ +2 > ^^^^^^^^ +3 > ^ +1->() { + > +2 > debugger +3 > ; +1->Emitted(3, 9) Source(3, 9) + SourceIndex(0) name (C["hello"]) +2 >Emitted(3, 17) Source(3, 17) + SourceIndex(0) name (C["hello"]) +3 >Emitted(3, 18) Source(3, 18) + SourceIndex(0) name (C["hello"]) --- >>> } 1 >^^^^ 2 > ^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > { - > ["hello"]() { - > debugger; - > } - > -2 > } -1 >Emitted(3, 5) Source(5, 1) + SourceIndex(0) name (C.constructor) -2 >Emitted(3, 6) Source(5, 2) + SourceIndex(0) name (C.constructor) ---- ->>> C.prototype["hello"] = function () { -1->^^^^ -2 > ^^^^^^^^^^^^ -3 > ^^^^^^^ -4 > ^ -5 > ^^^ -1-> -2 > [ -3 > "hello" -4 > ] -5 > -1->Emitted(4, 5) Source(2, 5) + SourceIndex(0) name (C) -2 >Emitted(4, 17) Source(2, 6) + SourceIndex(0) name (C) -3 >Emitted(4, 24) Source(2, 13) + SourceIndex(0) name (C) -4 >Emitted(4, 25) Source(2, 14) + SourceIndex(0) name (C) -5 >Emitted(4, 28) Source(2, 5) + SourceIndex(0) name (C) ---- ->>> debugger; -1 >^^^^^^^^ -2 > ^^^^^^^^ -3 > ^ -1 >["hello"]() { - > -2 > debugger -3 > ; -1 >Emitted(5, 9) Source(3, 9) + SourceIndex(0) name (C["hello"]) -2 >Emitted(5, 17) Source(3, 17) + SourceIndex(0) name (C["hello"]) -3 >Emitted(5, 18) Source(3, 18) + SourceIndex(0) name (C["hello"]) ---- ->>> }; -1 >^^^^ -2 > ^ -3 > ^^^^^^^^^-> 1 > > 2 > } -1 >Emitted(6, 5) Source(4, 5) + SourceIndex(0) name (C["hello"]) -2 >Emitted(6, 6) Source(4, 6) + SourceIndex(0) name (C["hello"]) +1 >Emitted(4, 5) Source(4, 5) + SourceIndex(0) name (C["hello"]) +2 >Emitted(4, 6) Source(4, 6) + SourceIndex(0) name (C["hello"]) --- ->>> return C; -1->^^^^ -2 > ^^^^^^^^ -1-> - > -2 > } -1->Emitted(7, 5) Source(5, 1) + SourceIndex(0) name (C) -2 >Emitted(7, 13) Source(5, 2) + SourceIndex(0) name (C) ---- ->>>})(); +>>>} 1 > 2 >^ -3 > -4 > ^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > 2 >} -3 > -4 > class C { - > ["hello"]() { - > debugger; - > } - > } -1 >Emitted(8, 1) Source(5, 1) + SourceIndex(0) name (C) -2 >Emitted(8, 2) Source(5, 2) + SourceIndex(0) name (C) -3 >Emitted(8, 2) Source(1, 1) + SourceIndex(0) -4 >Emitted(8, 6) Source(5, 2) + SourceIndex(0) +1 >Emitted(5, 1) Source(5, 1) + SourceIndex(0) name (C) +2 >Emitted(5, 2) Source(5, 2) + SourceIndex(0) name (C) --- ->>>//# sourceMappingURL=computedPropertyNamesSourceMap1_ES6.js.map \ No newline at end of file +>>>//# sourceMappingURL=computedPropertyNamesSourceMap1_ES6.js.map1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> +1->Emitted(6, 1) Source(5, 2) + SourceIndex(0) +--- \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.js.map b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.js.map index 2d9d4ea3088..d36428a0379 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.js.map +++ b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.js.map @@ -1,2 +1,2 @@ //// [computedPropertyNamesSourceMap2_ES5.js.map] -{"version":3,"file":"computedPropertyNamesSourceMap2_ES5.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap2_ES5.ts"],"names":["[\"hello\"]"],"mappings":"AAAA,IAAI,CAAC,GAAG,CAAR,EAAA;IACI,AADJ,EAAA,CACK,OAAO,CAAC;QACLA,QAAQA,CAACA;IACbA,CAACA;IAHL,EAAA;CAIC,CAAA;IAJD,EAAA"} \ No newline at end of file +{"version":3,"file":"computedPropertyNamesSourceMap2_ES5.js","sourceRoot":"","sources":["computedPropertyNamesSourceMap2_ES5.ts"],"names":["[\"hello\"]"],"mappings":"AAAA,IAAI,CAAC,GAAG;IACJ,GAAC,OAAO,CAAC;QACLA,QAAQA,CAACA;IACbA,CAACA;;CACJ,CAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.sourcemap.txt b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.sourcemap.txt index 4c49c91499b..74d69f566a0 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.sourcemap.txt +++ b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.sourcemap.txt @@ -13,44 +13,31 @@ sourceFile:computedPropertyNamesSourceMap2_ES5.ts 2 >^^^^ 3 > ^ 4 > ^^^ -5 > ^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^-> +5 > ^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >var 3 > v 4 > = -5 > -6 > 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) 3 >Emitted(1, 6) Source(1, 6) + SourceIndex(0) 4 >Emitted(1, 9) Source(1, 9) + SourceIndex(0) -5 >Emitted(1, 10) Source(1, 1) + SourceIndex(0) -6 >Emitted(1, 12) Source(1, 1) + SourceIndex(0) --- >>> _a["hello"] = function () { 1->^^^^ -2 > -3 > ^^ -4 > ^ -5 > ^^^^^^^ -6 > ^ -7 > ^^^-> -1->var v = { +2 > ^^^ +3 > ^^^^^^^ +4 > ^ +5 > ^^^-> +1->{ > -2 > -3 > -4 > var v = { - > [ -5 > "hello" -6 > ] +2 > [ +3 > "hello" +4 > ] 1->Emitted(2, 5) Source(2, 5) + SourceIndex(0) -2 >Emitted(2, 5) Source(1, 1) + SourceIndex(0) -3 >Emitted(2, 7) Source(1, 1) + SourceIndex(0) -4 >Emitted(2, 8) Source(2, 6) + SourceIndex(0) -5 >Emitted(2, 15) Source(2, 13) + SourceIndex(0) -6 >Emitted(2, 16) Source(2, 14) + SourceIndex(0) +2 >Emitted(2, 8) Source(2, 6) + SourceIndex(0) +3 >Emitted(2, 15) Source(2, 13) + SourceIndex(0) +4 >Emitted(2, 16) Source(2, 14) + SourceIndex(0) --- >>> debugger; 1->^^^^^^^^ @@ -75,33 +62,15 @@ sourceFile:computedPropertyNamesSourceMap2_ES5.ts 2 >Emitted(4, 6) Source(4, 6) + SourceIndex(0) name (["hello"]) --- >>> _a -1->^^^^ -2 > ^^ -1-> -2 > -1->Emitted(5, 5) Source(1, 1) + SourceIndex(0) -2 >Emitted(5, 7) Source(1, 1) + SourceIndex(0) ---- >>>); -1 >^ +1->^ 2 > ^ 3 > ^^^^^^-> -1 >var v = { - > ["hello"]() { - > debugger; - > } +1-> >} 2 > -1 >Emitted(6, 2) Source(5, 2) + SourceIndex(0) +1->Emitted(6, 2) Source(5, 2) + SourceIndex(0) 2 >Emitted(6, 3) Source(5, 2) + SourceIndex(0) --- >>>var _a; -1->^^^^ -2 > ^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1-> -2 > -1->Emitted(7, 5) Source(1, 1) + SourceIndex(0) -2 >Emitted(7, 7) Source(1, 1) + SourceIndex(0) ---- >>>//# sourceMappingURL=computedPropertyNamesSourceMap2_ES5.js.map \ No newline at end of file diff --git a/tests/baselines/reference/computedPropertyNamesWithStaticProperty.js b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.js new file mode 100644 index 00000000000..9f0407588a8 --- /dev/null +++ b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.js @@ -0,0 +1,23 @@ +//// [computedPropertyNamesWithStaticProperty.ts] +class C { + static staticProp = 10; + get [C.staticProp]() { + return "hello"; + } + set [C.staticProp](x: string) { + var y = x; + } + [C.staticProp]() { } +} + +//// [computedPropertyNamesWithStaticProperty.js] +class C { + get [C.staticProp]() { + return "hello"; + } + set [C.staticProp](x) { + var y = x; + } + [C.staticProp]() { } +} +C.staticProp = 10; diff --git a/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types new file mode 100644 index 00000000000..b23d986f894 --- /dev/null +++ b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types @@ -0,0 +1,29 @@ +=== tests/cases/conformance/es6/computedProperties/computedPropertyNamesWithStaticProperty.ts === +class C { +>C : C + + static staticProp = 10; +>staticProp : number + + get [C.staticProp]() { +>C.staticProp : number +>C : typeof C +>staticProp : number + + return "hello"; + } + set [C.staticProp](x: string) { +>C.staticProp : number +>C : typeof C +>staticProp : number +>x : string + + var y = x; +>y : string +>x : string + } + [C.staticProp]() { } +>C.staticProp : number +>C : typeof C +>staticProp : number +} diff --git a/tests/baselines/reference/conditionalExpressionNewLine1.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine1.errors.txt new file mode 100644 index 00000000000..504d66fe3a7 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine1.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/conditionalExpressionNewLine1.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine1.ts(1,13): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine1.ts(1,17): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine1.ts (3 errors) ==== + var v = a ? b : c; + ~ +!!! error TS2304: Cannot find name 'a'. + ~ +!!! error TS2304: Cannot find name 'b'. + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine1.js b/tests/baselines/reference/conditionalExpressionNewLine1.js new file mode 100644 index 00000000000..02055e3e479 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine1.js @@ -0,0 +1,5 @@ +//// [conditionalExpressionNewLine1.ts] +var v = a ? b : c; + +//// [conditionalExpressionNewLine1.js] +var v = a ? b : c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine10.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine10.errors.txt new file mode 100644 index 00000000000..a5c902361e6 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine10.errors.txt @@ -0,0 +1,31 @@ +tests/cases/compiler/conditionalExpressionNewLine10.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(2,5): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(3,7): error TS2304: Cannot find name 'd'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(4,7): error TS2304: Cannot find name 'e'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(5,5): error TS2304: Cannot find name 'c'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(6,7): error TS2304: Cannot find name 'f'. +tests/cases/compiler/conditionalExpressionNewLine10.ts(7,7): error TS2304: Cannot find name 'g'. + + +==== tests/cases/compiler/conditionalExpressionNewLine10.ts (7 errors) ==== + var v = a + ~ +!!! error TS2304: Cannot find name 'a'. + ? b + ~ +!!! error TS2304: Cannot find name 'b'. + ? d + ~ +!!! error TS2304: Cannot find name 'd'. + : e + ~ +!!! error TS2304: Cannot find name 'e'. + : c + ~ +!!! error TS2304: Cannot find name 'c'. + ? f + ~ +!!! error TS2304: Cannot find name 'f'. + : g; + ~ +!!! error TS2304: Cannot find name 'g'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine10.js b/tests/baselines/reference/conditionalExpressionNewLine10.js new file mode 100644 index 00000000000..bb2f3bec231 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine10.js @@ -0,0 +1,17 @@ +//// [conditionalExpressionNewLine10.ts] +var v = a + ? b + ? d + : e + : c + ? f + : g; + +//// [conditionalExpressionNewLine10.js] +var v = a + ? b + ? d + : e + : c + ? f + : g; diff --git a/tests/baselines/reference/conditionalExpressionNewLine2.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine2.errors.txt new file mode 100644 index 00000000000..5036b247304 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine2.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/conditionalExpressionNewLine2.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine2.ts(2,5): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine2.ts(2,9): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine2.ts (3 errors) ==== + var v = a + ~ +!!! error TS2304: Cannot find name 'a'. + ? b : c; + ~ +!!! error TS2304: Cannot find name 'b'. + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine2.js b/tests/baselines/reference/conditionalExpressionNewLine2.js new file mode 100644 index 00000000000..e69f2004ebc --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine2.js @@ -0,0 +1,7 @@ +//// [conditionalExpressionNewLine2.ts] +var v = a + ? b : c; + +//// [conditionalExpressionNewLine2.js] +var v = a + ? b : c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine3.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine3.errors.txt new file mode 100644 index 00000000000..34ea3d419d8 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine3.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/conditionalExpressionNewLine3.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine3.ts(2,3): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine3.ts(2,7): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine3.ts (3 errors) ==== + var v = a ? + ~ +!!! error TS2304: Cannot find name 'a'. + b : c; + ~ +!!! error TS2304: Cannot find name 'b'. + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine3.js b/tests/baselines/reference/conditionalExpressionNewLine3.js new file mode 100644 index 00000000000..4d11f45368f --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine3.js @@ -0,0 +1,7 @@ +//// [conditionalExpressionNewLine3.ts] +var v = a ? + b : c; + +//// [conditionalExpressionNewLine3.js] +var v = a ? + b : c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine4.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine4.errors.txt new file mode 100644 index 00000000000..74c39406c6c --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine4.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/conditionalExpressionNewLine4.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine4.ts(1,13): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine4.ts(2,3): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine4.ts (3 errors) ==== + var v = a ? b : + ~ +!!! error TS2304: Cannot find name 'a'. + ~ +!!! error TS2304: Cannot find name 'b'. + c; + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine4.js b/tests/baselines/reference/conditionalExpressionNewLine4.js new file mode 100644 index 00000000000..d6532ecb15b --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine4.js @@ -0,0 +1,7 @@ +//// [conditionalExpressionNewLine4.ts] +var v = a ? b : + c; + +//// [conditionalExpressionNewLine4.js] +var v = a ? b : + c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine5.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine5.errors.txt new file mode 100644 index 00000000000..86c8890e218 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine5.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/conditionalExpressionNewLine5.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine5.ts(1,13): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine5.ts(2,5): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine5.ts (3 errors) ==== + var v = a ? b + ~ +!!! error TS2304: Cannot find name 'a'. + ~ +!!! error TS2304: Cannot find name 'b'. + : c; + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine5.js b/tests/baselines/reference/conditionalExpressionNewLine5.js new file mode 100644 index 00000000000..6fdd0735bcd --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine5.js @@ -0,0 +1,7 @@ +//// [conditionalExpressionNewLine5.ts] +var v = a ? b + : c; + +//// [conditionalExpressionNewLine5.js] +var v = a ? b + : c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine6.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine6.errors.txt new file mode 100644 index 00000000000..c59ea73b845 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine6.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/conditionalExpressionNewLine6.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine6.ts(2,5): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine6.ts(3,5): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine6.ts (3 errors) ==== + var v = a + ~ +!!! error TS2304: Cannot find name 'a'. + ? b + ~ +!!! error TS2304: Cannot find name 'b'. + : c; + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine6.js b/tests/baselines/reference/conditionalExpressionNewLine6.js new file mode 100644 index 00000000000..94539ab891e --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine6.js @@ -0,0 +1,9 @@ +//// [conditionalExpressionNewLine6.ts] +var v = a + ? b + : c; + +//// [conditionalExpressionNewLine6.js] +var v = a + ? b + : c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine7.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine7.errors.txt new file mode 100644 index 00000000000..ff71c42ddae --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine7.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/conditionalExpressionNewLine7.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine7.ts(2,3): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine7.ts(3,3): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/conditionalExpressionNewLine7.ts (3 errors) ==== + var v = a ? + ~ +!!! error TS2304: Cannot find name 'a'. + b : + ~ +!!! error TS2304: Cannot find name 'b'. + c; + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine7.js b/tests/baselines/reference/conditionalExpressionNewLine7.js new file mode 100644 index 00000000000..5c781f7d85a --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine7.js @@ -0,0 +1,9 @@ +//// [conditionalExpressionNewLine7.ts] +var v = a ? + b : + c; + +//// [conditionalExpressionNewLine7.js] +var v = a ? + b : + c; diff --git a/tests/baselines/reference/conditionalExpressionNewLine8.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine8.errors.txt new file mode 100644 index 00000000000..1c6a039089c --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine8.errors.txt @@ -0,0 +1,27 @@ +tests/cases/compiler/conditionalExpressionNewLine8.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(2,5): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(2,9): error TS2304: Cannot find name 'd'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(2,13): error TS2304: Cannot find name 'e'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(3,5): error TS2304: Cannot find name 'c'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(3,9): error TS2304: Cannot find name 'f'. +tests/cases/compiler/conditionalExpressionNewLine8.ts(3,13): error TS2304: Cannot find name 'g'. + + +==== tests/cases/compiler/conditionalExpressionNewLine8.ts (7 errors) ==== + var v = a + ~ +!!! error TS2304: Cannot find name 'a'. + ? b ? d : e + ~ +!!! error TS2304: Cannot find name 'b'. + ~ +!!! error TS2304: Cannot find name 'd'. + ~ +!!! error TS2304: Cannot find name 'e'. + : c ? f : g; + ~ +!!! error TS2304: Cannot find name 'c'. + ~ +!!! error TS2304: Cannot find name 'f'. + ~ +!!! error TS2304: Cannot find name 'g'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine8.js b/tests/baselines/reference/conditionalExpressionNewLine8.js new file mode 100644 index 00000000000..61372eeadbc --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine8.js @@ -0,0 +1,9 @@ +//// [conditionalExpressionNewLine8.ts] +var v = a + ? b ? d : e + : c ? f : g; + +//// [conditionalExpressionNewLine8.js] +var v = a + ? b ? d : e + : c ? f : g; diff --git a/tests/baselines/reference/conditionalExpressionNewLine9.errors.txt b/tests/baselines/reference/conditionalExpressionNewLine9.errors.txt new file mode 100644 index 00000000000..821e3ac67f4 --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine9.errors.txt @@ -0,0 +1,29 @@ +tests/cases/compiler/conditionalExpressionNewLine9.ts(1,9): error TS2304: Cannot find name 'a'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(2,5): error TS2304: Cannot find name 'b'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(3,7): error TS2304: Cannot find name 'd'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(3,11): error TS2304: Cannot find name 'e'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(4,5): error TS2304: Cannot find name 'c'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(5,7): error TS2304: Cannot find name 'f'. +tests/cases/compiler/conditionalExpressionNewLine9.ts(5,11): error TS2304: Cannot find name 'g'. + + +==== tests/cases/compiler/conditionalExpressionNewLine9.ts (7 errors) ==== + var v = a + ~ +!!! error TS2304: Cannot find name 'a'. + ? b + ~ +!!! error TS2304: Cannot find name 'b'. + ? d : e + ~ +!!! error TS2304: Cannot find name 'd'. + ~ +!!! error TS2304: Cannot find name 'e'. + : c + ~ +!!! error TS2304: Cannot find name 'c'. + ? f : g; + ~ +!!! error TS2304: Cannot find name 'f'. + ~ +!!! error TS2304: Cannot find name 'g'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalExpressionNewLine9.js b/tests/baselines/reference/conditionalExpressionNewLine9.js new file mode 100644 index 00000000000..79f4606754e --- /dev/null +++ b/tests/baselines/reference/conditionalExpressionNewLine9.js @@ -0,0 +1,13 @@ +//// [conditionalExpressionNewLine9.ts] +var v = a + ? b + ? d : e + : c + ? f : g; + +//// [conditionalExpressionNewLine9.js] +var v = a + ? b + ? d : e + : c + ? f : g; diff --git a/tests/baselines/reference/constDeclarations-access5.errors.txt b/tests/baselines/reference/constDeclarations-access5.errors.txt index 23200e50ee4..a098b0e72c6 100644 --- a/tests/baselines/reference/constDeclarations-access5.errors.txt +++ b/tests/baselines/reference/constDeclarations-access5.errors.txt @@ -1,3 +1,5 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +tests/cases/compiler/constDeclarations_access_2.ts(2,1): error TS1202: Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from "mod"', 'import {a} from "mod"' or 'import d from "mod"' instead. tests/cases/compiler/constDeclarations_access_2.ts(4,1): error TS2450: Left-hand side of assignment expression cannot be a constant. tests/cases/compiler/constDeclarations_access_2.ts(5,1): error TS2450: Left-hand side of assignment expression cannot be a constant. tests/cases/compiler/constDeclarations_access_2.ts(6,1): error TS2450: Left-hand side of assignment expression cannot be a constant. @@ -18,9 +20,12 @@ tests/cases/compiler/constDeclarations_access_2.ts(22,3): error TS2449: The oper tests/cases/compiler/constDeclarations_access_2.ts(24,1): error TS2450: Left-hand side of assignment expression cannot be a constant. -==== tests/cases/compiler/constDeclarations_access_2.ts (18 errors) ==== +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/constDeclarations_access_2.ts (19 errors) ==== /// import m = require('constDeclarations_access_1'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1202: Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from "mod"', 'import {a} from "mod"' or 'import d from "mod"' instead. // Errors m.x = 1; ~~~ diff --git a/tests/baselines/reference/constDeclarations-access5.js b/tests/baselines/reference/constDeclarations-access5.js index 71b8c99ae58..7735e37d2b0 100644 --- a/tests/baselines/reference/constDeclarations-access5.js +++ b/tests/baselines/reference/constDeclarations-access5.js @@ -49,39 +49,35 @@ m.x.toString(); //// [constDeclarations_access_1.js] -define(["require", "exports"], function (require, exports) { - exports.x = 0; -}); +export const x = 0; //// [constDeclarations_access_2.js] -define(["require", "exports", 'constDeclarations_access_1'], function (require, exports, m) { - // Errors - m.x = 1; - m.x += 2; - m.x -= 3; - m.x *= 4; - m.x /= 5; - m.x %= 6; - m.x <<= 7; - m.x >>= 8; - m.x >>>= 9; - m.x &= 10; - m.x |= 11; - m.x ^= 12; - m; - m.x++; - m.x--; - ++m.x; - --m.x; - ++((m.x)); - m["x"] = 0; - // OK - var a = m.x + 1; - function f(v) { } - f(m.x); - if (m.x) { } - m.x; - (m.x); - -m.x; - +m.x; - m.x.toString(); -}); +// Errors +m.x = 1; +m.x += 2; +m.x -= 3; +m.x *= 4; +m.x /= 5; +m.x %= 6; +m.x <<= 7; +m.x >>= 8; +m.x >>>= 9; +m.x &= 10; +m.x |= 11; +m.x ^= 12; +m; +m.x++; +m.x--; +++m.x; +--m.x; +++((m.x)); +m["x"] = 0; +// OK +var a = m.x + 1; +function f(v) { } +f(m.x); +if (m.x) { } +m.x; +(m.x); +-m.x; ++m.x; +m.x.toString(); diff --git a/tests/baselines/reference/constDeclarations-errors.errors.txt b/tests/baselines/reference/constDeclarations-errors.errors.txt index c0ae6635c5e..10501beb1a5 100644 --- a/tests/baselines/reference/constDeclarations-errors.errors.txt +++ b/tests/baselines/reference/constDeclarations-errors.errors.txt @@ -4,13 +4,12 @@ tests/cases/compiler/constDeclarations-errors.ts(5,7): error TS1155: 'const' dec tests/cases/compiler/constDeclarations-errors.ts(5,11): error TS1155: 'const' declarations must be initialized tests/cases/compiler/constDeclarations-errors.ts(5,15): error TS1155: 'const' declarations must be initialized tests/cases/compiler/constDeclarations-errors.ts(5,27): error TS1155: 'const' declarations must be initialized -tests/cases/compiler/constDeclarations-errors.ts(8,11): error TS1155: 'const' declarations must be initialized -tests/cases/compiler/constDeclarations-errors.ts(11,27): error TS2449: The operand of an increment or decrement operator cannot be a constant. -tests/cases/compiler/constDeclarations-errors.ts(14,11): error TS1155: 'const' declarations must be initialized -tests/cases/compiler/constDeclarations-errors.ts(17,20): error TS1155: 'const' declarations must be initialized +tests/cases/compiler/constDeclarations-errors.ts(10,27): error TS2449: The operand of an increment or decrement operator cannot be a constant. +tests/cases/compiler/constDeclarations-errors.ts(13,11): error TS1155: 'const' declarations must be initialized +tests/cases/compiler/constDeclarations-errors.ts(16,20): error TS1155: 'const' declarations must be initialized -==== tests/cases/compiler/constDeclarations-errors.ts (10 errors) ==== +==== tests/cases/compiler/constDeclarations-errors.ts (9 errors) ==== // error, missing intialicer const c1; @@ -29,10 +28,7 @@ tests/cases/compiler/constDeclarations-errors.ts(17,20): error TS1155: 'const' d ~~ !!! error TS1155: 'const' declarations must be initialized - // error, can not be unintalized for(const c in {}) { } - ~ -!!! error TS1155: 'const' declarations must be initialized // error, assigning to a const for(const c8 = 0; c8 < 1; c8++) { } diff --git a/tests/baselines/reference/constDeclarations-errors.js b/tests/baselines/reference/constDeclarations-errors.js index 2947593b01d..e7143f2564a 100644 --- a/tests/baselines/reference/constDeclarations-errors.js +++ b/tests/baselines/reference/constDeclarations-errors.js @@ -5,7 +5,6 @@ const c1; const c2: number; const c3, c4, c5 :string, c6; // error, missing initialicer -// error, can not be unintalized for(const c in {}) { } // error, assigning to a const @@ -22,8 +21,7 @@ for(const c10 = 0, c11; c10 < 1;) { } const c1; const c2; const c3, c4, c5, c6; // error, missing initialicer -// error, can not be unintalized -for (var c in {}) { } +for (const c in {}) { } // error, assigning to a const for (const c8 = 0; c8 < 1; c8++) { } // error, can not be unintalized diff --git a/tests/baselines/reference/constDeclarations-es5.errors.txt b/tests/baselines/reference/constDeclarations-es5.errors.txt deleted file mode 100644 index d15535349ac..00000000000 --- a/tests/baselines/reference/constDeclarations-es5.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/compiler/constDeclarations-es5.ts(2,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/constDeclarations-es5.ts(3,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/constDeclarations-es5.ts(4,1): error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/compiler/constDeclarations-es5.ts (3 errors) ==== - - const z7 = false; - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - const z8: number = 23; - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - const z9 = 0, z10 :string = "", z11 = null; - ~~~~~ -!!! error TS1154: 'const' declarations are only available when targeting ECMAScript 6 and higher. - \ No newline at end of file diff --git a/tests/baselines/reference/constDeclarations-es5.js b/tests/baselines/reference/constDeclarations-es5.js index 20deb9dca37..736260ad102 100644 --- a/tests/baselines/reference/constDeclarations-es5.js +++ b/tests/baselines/reference/constDeclarations-es5.js @@ -6,6 +6,6 @@ const z9 = 0, z10 :string = "", z11 = null; //// [constDeclarations-es5.js] -const z7 = false; -const z8 = 23; -const z9 = 0, z10 = "", z11 = null; +var z7 = false; +var z8 = 23; +var z9 = 0, z10 = "", z11 = null; diff --git a/tests/baselines/reference/constDeclarations-es5.types b/tests/baselines/reference/constDeclarations-es5.types new file mode 100644 index 00000000000..be55dc0febc --- /dev/null +++ b/tests/baselines/reference/constDeclarations-es5.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/constDeclarations-es5.ts === + +const z7 = false; +>z7 : boolean + +const z8: number = 23; +>z8 : number + +const z9 = 0, z10 :string = "", z11 = null; +>z9 : number +>z10 : string +>z11 : any + diff --git a/tests/baselines/reference/constDeclarations-scopes.js b/tests/baselines/reference/constDeclarations-scopes.js index f8fbc47312b..b144b4f83a5 100644 --- a/tests/baselines/reference/constDeclarations-scopes.js +++ b/tests/baselines/reference/constDeclarations-scopes.js @@ -242,30 +242,25 @@ var m; } })(m || (m = {})); // methods -var C = (function () { - function C() { +class C { + constructor() { const c = 0; n = c; } - C.prototype.method = function () { + method() { const c = 0; n = c; - }; - Object.defineProperty(C.prototype, "v", { - get: function () { - const c = 0; - n = c; - return n; - }, - set: function (value) { - const c = 0; - n = c; - }, - enumerable: true, - configurable: true - }); - return C; -})(); + } + get v() { + const c = 0; + n = c; + return n; + } + set v(value) { + const c = 0; + n = c; + } +} // object literals var o = { f() { diff --git a/tests/baselines/reference/constDeclarations-validContexts.js b/tests/baselines/reference/constDeclarations-validContexts.js index 5a54e915713..7d3269c6683 100644 --- a/tests/baselines/reference/constDeclarations-validContexts.js +++ b/tests/baselines/reference/constDeclarations-validContexts.js @@ -201,26 +201,21 @@ var m; } })(m || (m = {})); // methods -var C = (function () { - function C() { +class C { + constructor() { const c24 = 0; } - C.prototype.method = function () { + method() { const c25 = 0; - }; - Object.defineProperty(C.prototype, "v", { - get: function () { - const c26 = 0; - return c26; - }, - set: function (value) { - const c27 = value; - }, - enumerable: true, - configurable: true - }); - return C; -})(); + } + get v() { + const c26 = 0; + return c26; + } + set v(value) { + const c27 = value; + } +} // object literals var o = { f() { diff --git a/tests/baselines/reference/constEnumOnlyModuleMerging.js b/tests/baselines/reference/constEnumOnlyModuleMerging.js new file mode 100644 index 00000000000..1d32fe748ab --- /dev/null +++ b/tests/baselines/reference/constEnumOnlyModuleMerging.js @@ -0,0 +1,26 @@ +//// [constEnumOnlyModuleMerging.ts] +module Outer { + export var x = 1; +} + +module Outer { + export const enum A { X } +} + +module B { + import O = Outer; + var x = O.A.X; + var y = O.x; +} + +//// [constEnumOnlyModuleMerging.js] +var Outer; +(function (Outer) { + Outer.x = 1; +})(Outer || (Outer = {})); +var B; +(function (B) { + var O = Outer; + var x = 0 /* X */; + var y = O.x; +})(B || (B = {})); diff --git a/tests/baselines/reference/constEnumOnlyModuleMerging.types b/tests/baselines/reference/constEnumOnlyModuleMerging.types new file mode 100644 index 00000000000..30426e3fa4c --- /dev/null +++ b/tests/baselines/reference/constEnumOnlyModuleMerging.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/constEnumOnlyModuleMerging.ts === +module Outer { +>Outer : typeof Outer + + export var x = 1; +>x : number +} + +module Outer { +>Outer : typeof Outer + + export const enum A { X } +>A : A +>X : A +} + +module B { +>B : typeof B + + import O = Outer; +>O : typeof O +>Outer : typeof O + + var x = O.A.X; +>x : O.A +>O.A.X : O.A +>O.A : typeof O.A +>O : typeof O +>A : typeof O.A +>X : O.A + + var y = O.x; +>y : number +>O.x : number +>O : typeof O +>x : number +} diff --git a/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.errors.txt b/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.errors.txt index b0a4a871f21..3c5e6f8efca 100644 --- a/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.errors.txt +++ b/tests/baselines/reference/constantOverloadFunctionNoSubtypeError.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(6,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(7,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(8,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(6,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(7,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(8,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. ==== tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts (3 errors) ==== @@ -10,13 +10,13 @@ tests/cases/compiler/constantOverloadFunctionNoSubtypeError.ts(8,1): error TS238 class Derived3 extends Base { biz() { } } function foo(tagName: 'canvas'): Derived3; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(tagName: 'div'): Derived2; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(tagName: 'span'): Derived1; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(tagName: number): Base; function foo(tagName: any): Base { diff --git a/tests/baselines/reference/constructorStaticParamName.errors.txt b/tests/baselines/reference/constructorStaticParamName.errors.txt new file mode 100644 index 00000000000..ac50edd22f1 --- /dev/null +++ b/tests/baselines/reference/constructorStaticParamName.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/constructorStaticParamName.ts(4,18): error TS1003: Identifier expected. + + +==== tests/cases/compiler/constructorStaticParamName.ts (1 errors) ==== + // static as constructor parameter name should only give error if 'use strict' + + class test { + constructor (static) { } + ~~~~~~ +!!! error TS1003: Identifier expected. + } + \ No newline at end of file diff --git a/tests/baselines/reference/constructorStaticParamName.js b/tests/baselines/reference/constructorStaticParamName.js index cf74aed2ebc..85b22867442 100644 --- a/tests/baselines/reference/constructorStaticParamName.js +++ b/tests/baselines/reference/constructorStaticParamName.js @@ -9,7 +9,7 @@ class test { //// [constructorStaticParamName.js] // static as constructor parameter name should only give error if 'use strict' var test = (function () { - function test(static) { + function test() { } return test; })(); diff --git a/tests/baselines/reference/constructorStaticParamName.types b/tests/baselines/reference/constructorStaticParamName.types deleted file mode 100644 index 9fdc94e4a73..00000000000 --- a/tests/baselines/reference/constructorStaticParamName.types +++ /dev/null @@ -1,10 +0,0 @@ -=== tests/cases/compiler/constructorStaticParamName.ts === -// static as constructor parameter name should only give error if 'use strict' - -class test { ->test : test - - constructor (static) { } ->static : any -} - diff --git a/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.errors.txt b/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.errors.txt index 6b394fec4d6..75de7c32ebc 100644 --- a/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.errors.txt +++ b/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,1): error TS2304: Cannot find name 'module'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,13): error TS2304: Cannot find name 'module'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,19): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(22,35): error TS1005: ')' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(22,39): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. @@ -21,27 +21,47 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(47,17): error TS tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(49,13): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(53,13): error TS2304: Cannot find name 'console'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(58,5): error TS1128: Declaration or statement expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(65,29): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(69,13): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(72,37): error TS1127: Invalid character. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(81,13): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(89,23): error TS2364: Invalid left-hand side of assignment expression. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(90,13): error TS1109: Expression expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(94,17): error TS1134: Variable declaration expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(95,13): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(105,29): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(106,13): error TS1109: Expression expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,24): error TS2365: Operator '+' cannot be applied to types 'number' and 'boolean'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,24): error TS2304: Cannot find name 'any'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,30): error TS2304: Cannot find name 'bool'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,37): error TS2304: Cannot find name 'declare'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,47): error TS2304: Cannot find name 'constructor'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,61): error TS2304: Cannot find name 'get'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(108,67): error TS2304: Cannot find name 'implements'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(111,9): error TS1128: Declaration or statement expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(118,9): error TS2304: Cannot find name 'STATEMENTS'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(118,21): error TS1005: ',' expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(118,30): error TS1005: ';' expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(118,39): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(138,13): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(141,32): error TS1005: '{' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(143,13): error TS1005: 'try' expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(155,9): error TS1128: Declaration or statement expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(155,16): error TS2304: Cannot find name 'TYPES'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(155,23): error TS1005: ';' expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(155,32): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(159,24): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(159,30): error TS1005: '(' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(159,31): error TS2304: Cannot find name 'Property'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(166,13): error TS2365: Operator '+=' cannot be applied to types 'number' and 'void'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(176,9): error TS1128: Declaration or statement expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(176,16): error TS2304: Cannot find name 'OPERATOR'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(176,26): error TS1005: ';' expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(176,35): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(180,40): error TS2447: The '^' operator is not allowed for boolean types. Consider using '!==' instead. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(205,28): error TS1109: Expression expected. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(210,5): error TS1128: Declaration or statement expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(213,16): error TS2304: Cannot find name 'bool'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(218,10): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(218,29): error TS2304: Cannot find name 'yield'. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(218,36): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(223,23): error TS2304: Cannot find name 'bool'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(227,13): error TS1109: Expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(234,14): error TS1005: '{' expected. @@ -49,7 +69,6 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,9): error TS tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,16): error TS2304: Cannot find name 'method1'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,24): error TS2304: Cannot find name 'val'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,27): error TS1005: ',' expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,28): error TS2304: Cannot find name 'number'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(235,36): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(238,9): error TS1128: Declaration or statement expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(238,16): error TS2304: Cannot find name 'method2'. @@ -64,27 +83,23 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(256,9): error TS tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(256,16): error TS2304: Cannot find name 'Overloads'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(256,26): error TS2304: Cannot find name 'value'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(256,31): error TS1005: ',' expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(256,33): error TS2304: Cannot find name 'string'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,9): error TS1128: Declaration or statement expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,16): error TS2304: Cannot find name 'Overloads'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,27): error TS1135: Argument expression expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,33): error TS1005: '(' expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,35): error TS2304: Cannot find name 'string'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,43): error TS1109: Expression expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,52): error TS2304: Cannot find name 'string'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,60): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(257,65): error TS1109: Expression expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,9): error TS2304: Cannot find name 'public'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,16): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,16): error TS2304: Cannot find name 'DefaultValue'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,29): error TS2304: Cannot find name 'value'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,35): error TS1109: Expression expected. -tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,37): error TS2304: Cannot find name 'string'. +tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,37): error TS2322: Type 'string' is not assignable to type 'boolean'. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(259,55): error TS1005: ';' expected. tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS1128: Declaration or statement expected. -==== tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts (84 errors) ==== +==== tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts (99 errors) ==== declare module "fs" { export class File { constructor(filename: string); @@ -96,7 +111,7 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS } import fs = module("fs"); - ~~~~~~~~~~~~~~~~~~ + ~~~~~~ !!! error TS2304: Cannot find name 'module'. ~ !!! error TS1005: ';' expected. @@ -199,6 +214,8 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS /// /// public VARIABLES(): number { + ~~~~~~ +!!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement. var local = Number.MAX_VALUE; var min = Number.MIN_VALUE; var inf = Number.NEGATIVE_INFINITY - @@ -238,7 +255,11 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS var constructor = 0; var get = 0; var implements = 0; + ~~~~~~~~~~ +!!! error TS1134: Variable declaration expected. var interface = 0; + ~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. var let = 0; var module = 0; var number = 0; @@ -256,11 +277,23 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS !!! error TS1109: Expression expected. var sum3 = any + bool + declare + constructor + get + implements + interface + let + module + number + package + private + protected + public + set + static + string + yield; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2365: Operator '+' cannot be applied to types 'number' and 'boolean'. + ~~~ +!!! error TS2304: Cannot find name 'any'. + ~~~~ +!!! error TS2304: Cannot find name 'bool'. + ~~~~~~~ +!!! error TS2304: Cannot find name 'declare'. + ~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'constructor'. + ~~~ +!!! error TS2304: Cannot find name 'get'. + ~~~~~~~~~~ +!!! error TS2304: Cannot find name 'implements'. return 0; } + ~ +!!! error TS1128: Declaration or statement expected. /// /// Test different statements. Including if-else,swith,foreach,(un)checked,lock,using,try-catch-finally @@ -268,6 +301,14 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS /// /// STATEMENTS(i: number): number { + ~~~~~~~~~~ +!!! error TS2304: Cannot find name 'STATEMENTS'. + ~ +!!! error TS1005: ',' expected. + ~ +!!! error TS1005: ';' expected. + ~ +!!! error TS1005: ';' expected. var retVal = 0; if (i == 1) retVal = 1; @@ -311,6 +352,14 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS /// /// public TYPES(): number { + ~~~~~~ +!!! error TS1128: Declaration or statement expected. + ~~~~~ +!!! error TS2304: Cannot find name 'TYPES'. + ~ +!!! error TS1005: ';' expected. + ~ +!!! error TS1005: ';' expected. var retVal = 0; var c = new CLASS(); var xx: IF = c; @@ -340,6 +389,14 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS ///// ///// public OPERATOR(): number { + ~~~~~~ +!!! error TS1128: Declaration or statement expected. + ~~~~~~~~ +!!! error TS2304: Cannot find name 'OPERATOR'. + ~ +!!! error TS1005: ';' expected. + ~ +!!! error TS1005: ';' expected. var a: number[] = [1, 2, 3, 4, 5, ];/*[] bug*/ // YES [] var i = a[1];/*[]*/ i = i + i - i * i / i % i & i | i ^ i;/*+ - * / % & | ^*/ @@ -378,6 +435,8 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS } } + ~ +!!! error TS1128: Declaration or statement expected. interface IF { Foo(): bool; @@ -390,10 +449,6 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS case d = () => { yield 0; }; ~~~~ !!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. - ~~~~~ -!!! error TS2304: Cannot find name 'yield'. - ~ -!!! error TS1005: ';' expected. public get Property() { return 0; } public Member() { return 0; @@ -425,8 +480,6 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS !!! error TS2304: Cannot find name 'val'. ~ !!! error TS1005: ',' expected. - ~~~~~~ -!!! error TS2304: Cannot find name 'number'. ~ !!! error TS1005: ';' expected. return val; @@ -476,8 +529,6 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS !!! error TS2304: Cannot find name 'value'. ~ !!! error TS1005: ',' expected. - ~~~~~~ -!!! error TS2304: Cannot find name 'string'. public Overloads( while : string, ...rest: string[]) { & ~~~~~~ !!! error TS1128: Declaration or statement expected. @@ -487,20 +538,14 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS !!! error TS1135: Argument expression expected. ~ !!! error TS1005: '(' expected. - ~~~~~~ -!!! error TS2304: Cannot find name 'string'. ~~~ !!! error TS1109: Expression expected. - ~~~~~~ -!!! error TS2304: Cannot find name 'string'. ~ !!! error TS1005: ';' expected. ~ !!! error TS1109: Expression expected. public DefaultValue(value?: string = "Hello") { } - ~~~~~~ -!!! error TS2304: Cannot find name 'public'. ~~~~~~~~~~~~ !!! error TS1005: ';' expected. ~~~~~~~~~~~~ @@ -510,7 +555,7 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS ~ !!! error TS1109: Expression expected. ~~~~~~ -!!! error TS2304: Cannot find name 'string'. +!!! error TS2322: Type 'string' is not assignable to type 'boolean'. ~ !!! error TS1005: ';' expected. } diff --git a/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.js b/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.js index cd31308311b..4fb940bc9ec 100644 --- a/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.js +++ b/tests/baselines/reference/constructorWithIncompleteTypeAnnotation.js @@ -314,8 +314,8 @@ var TypeScriptAllInOne; Program.prototype.if = function (retValue) { if (retValue === void 0) { retValue = != 0; } return 1; - ^ - retValue; + ^ + retValue; bfs.TYPES(); if (retValue != 0) { return 1 && @@ -342,6 +342,7 @@ var TypeScriptAllInOne; })(TypeScriptAllInOne || (TypeScriptAllInOne = {})); var BasicFeatures = (function () { function BasicFeatures() { + this.implements = 0; } /// /// Test various of variables. Including nullable,key world as variable,special format @@ -365,7 +366,7 @@ var BasicFeatures = (function () { var quoted = '"', quoted2 = "'"; var reg = /\w*/; var objLit = { "var": number = 42, equals: function (x) { return x["var"] === 42; }, instanceof: function () { return 'objLit{42}'; } }; - var weekday = 0 /* Monday */; + var weekday = Weekdays.Monday; var con = char + f + hexchar + float.toString() + float2.toString() + reg.toString() + objLit + weekday; // var any = 0 ^= @@ -374,120 +375,118 @@ var BasicFeatures = (function () { var declare = 0; var constructor = 0; var get = 0; - var implements = 0; - var interface = 0; - var let = 0; - var module = 0; - var number = 0; - var package = 0; - var private = 0; - var protected = 0; - var public = 0; - var set = 0; - var static = 0; - var string = 0 / > - ; - var yield = 0; - var sum3 = any + bool + declare + constructor + get + implements + interface + let + module + number + package + private + protected + public + set + static + string + yield; - return 0; - }; - /// - /// Test different statements. Including if-else,swith,foreach,(un)checked,lock,using,try-catch-finally - /// - /// - /// - BasicFeatures.prototype.STATEMENTS = function (i) { - var retVal = 0; - if (i == 1) - retVal = 1; - else - retVal = 0; - switch (i) { - case 2: - retVal = 1; - break; - case 3: - retVal = 1; - break; - default: - break; - } - for (var x in { x: 0, y: 1 }) { - !; - try { - throw null; - } - catch (Exception) { } - } - try { - } - finally { - try { } - catch (Exception) { } - } - return retVal; - }; - /// - /// Test types in ts language. Including class,struct,interface,delegate,anonymous type - /// - /// - BasicFeatures.prototype.TYPES = function () { - var retVal = 0; - var c = new CLASS(); - var xx = c; - retVal += ; - try { } - catch () { } - Property; - retVal += c.Member(); - retVal += xx.Foo() ? 0 : 1; - //anonymous type - var anony = { a: new CLASS() }; - retVal += anony.a.d(); - return retVal; - }; - ///// - ///// Test different operators - ///// - ///// - BasicFeatures.prototype.OPERATOR = function () { - var a = [1, 2, 3, 4, 5,]; /*[] bug*/ // YES [] - var i = a[1]; /*[]*/ - i = i + i - i * i / i % i & i | i ^ i; /*+ - * / % & | ^*/ - var b = true && false || true ^ false; /*& | ^*/ - b = !b; /*!*/ - i = ~i; /*~i*/ - b = i < (i - 1) && (i + 1) > i; /*< && >*/ - var f = true ? 1 : 0; /*? :*/ // YES : - i++; /*++*/ - i--; /*--*/ - b = true && false || true; /*&& ||*/ - i = i << 5; /*<<*/ - i = i >> 5; /*>>*/ - var j = i; - b = i == j && i != j && i <= j && i >= j; /*= == && != <= >=*/ - i += 5.0; /*+=*/ - i -= i; /*-=*/ - i *= i; /**=*/ - if (i == 0) - i++; - i /= i; /*/=*/ - i %= i; /*%=*/ - i &= i; /*&=*/ - i |= i; /*|=*/ - i ^= i; /*^=*/ - i <<= i; /*<<=*/ - i >>= i; /*>>=*/ - if (i == 0 && != b && f == 1) - return 0; - else - return 1; + var ; }; return BasicFeatures; })(); +var interface = 0; +var let = 0; +var module = 0; +var number = 0; +var package = 0; +var private = 0; +var protected = 0; +var public = 0; +var set = 0; +var static = 0; +var string = 0 / > +; +var yield = 0; +var sum3 = any + bool + declare + constructor + get + implements + interface + let + module + number + package + private + protected + public + set + static + string + yield; +return 0; +/// +/// Test different statements. Including if-else,swith,foreach,(un)checked,lock,using,try-catch-finally +/// +/// +/// +STATEMENTS(i, number); +number; +{ + var retVal = 0; + if (i == 1) + retVal = 1; + else + retVal = 0; + switch (i) { + case 2: + retVal = 1; + break; + case 3: + retVal = 1; + break; + default: + break; + } + for (var x in { x: 0, y: 1 }) { + !; + try { + throw null; + } + catch (Exception) { } + } + try { + } + finally { + try { } + catch (Exception) { } + } + return retVal; +} +TYPES(); +number; +{ + var retVal = 0; + var c = new CLASS(); + var xx = c; + retVal += ; + try { } + catch () { } + Property; + retVal += c.Member(); + retVal += xx.Foo() ? 0 : 1; + //anonymous type + var anony = { a: new CLASS() }; + retVal += anony.a.d(); + return retVal; +} +OPERATOR(); +number; +{ + var a = [1, 2, 3, 4, 5,]; /*[] bug*/ // YES [] + var i = a[1]; /*[]*/ + i = i + i - i * i / i % i & i | i ^ i; /*+ - * / % & | ^*/ + var b = true && false || true ^ false; /*& | ^*/ + b = !b; /*!*/ + i = ~i; /*~i*/ + b = i < (i - 1) && (i + 1) > i; /*< && >*/ + var f = true ? 1 : 0; /*? :*/ // YES : + i++; /*++*/ + i--; /*--*/ + b = true && false || true; /*&& ||*/ + i = i << 5; /*<<*/ + i = i >> 5; /*>>*/ + var j = i; + b = i == j && i != j && i <= j && i >= j; /*= == && != <= >=*/ + i += 5.0; /*+=*/ + i -= i; /*-=*/ + i *= i; /**=*/ + if (i == 0) + i++; + i /= i; /*/=*/ + i %= i; /*%=*/ + i &= i; /*&=*/ + i |= i; /*|=*/ + i ^= i; /*^=*/ + i <<= i; /*<<=*/ + i >>= i; /*>>=*/ + if (i == 0 && != b && f == 1) + return 0; + else + return 1; +} var CLASS = (function () { function CLASS() { - this.d = function () { yield; 0; }; + this.d = function () { ; }; } Object.defineProperty(CLASS.prototype, "Property", { get: function () { return 0; }, @@ -500,7 +499,9 @@ var CLASS = (function () { CLASS.prototype.Foo = function () { var myEvent = function () { return 1; }; if (myEvent() == 1) - return true ? : ; + return true ? + : + ; else return false; }; @@ -543,7 +544,7 @@ while () rest: string[]; { & - public; + public; DefaultValue(value ? : string = "Hello"); { } } diff --git a/tests/baselines/reference/contextualTyping.js.map b/tests/baselines/reference/contextualTyping.js.map index 7cb571ee5af..a8835dc965d 100644 --- a/tests/baselines/reference/contextualTyping.js.map +++ b/tests/baselines/reference/contextualTyping.js.map @@ -1,2 +1,2 @@ //// [contextualTyping.js.map] -{"version":3,"file":"contextualTyping.js","sourceRoot":"","sources":["contextualTyping.ts"],"names":["C1T5","C1T5.constructor","C2T5","C4T5","C4T5.constructor","C5T5","C11t5","C11t5.constructor","EF1","Point"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"contextualTyping.js","sourceRoot":"","sources":["contextualTyping.ts"],"names":["C1T5","C1T5.constructor","C2T5","C4T5","C4T5.constructor","C5T5","c9t5","C11t5","C11t5.constructor","EF1","Point"],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping.sourcemap.txt b/tests/baselines/reference/contextualTyping.sourcemap.txt index 9dc9c4b3ee6..085f6a439ff 100644 --- a/tests/baselines/reference/contextualTyping.sourcemap.txt +++ b/tests/baselines/reference/contextualTyping.sourcemap.txt @@ -33,26 +33,12 @@ sourceFile:contextualTyping.ts 3 >Emitted(1, 39) Source(13, 39) + SourceIndex(0) --- >>>var C1T5 = (function () { -1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^-> -1 > - >class -2 > C1T5 -1 >Emitted(2, 5) Source(14, 7) + SourceIndex(0) -2 >Emitted(2, 9) Source(14, 11) + SourceIndex(0) ---- >>> function C1T5() { -1->^^^^ -2 > ^^^^^^^^^ -3 > ^^^^ -4 > ^^^^^^^^^^^^^^^^^-> -1-> -2 > class -3 > C1T5 -1->Emitted(3, 5) Source(14, 1) + SourceIndex(0) name (C1T5) -2 >Emitted(3, 14) Source(14, 7) + SourceIndex(0) name (C1T5) -3 >Emitted(3, 18) Source(14, 11) + SourceIndex(0) name (C1T5) +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(3, 5) Source(14, 1) + SourceIndex(0) name (C1T5) --- >>> this.foo = function (i) { 1->^^^^^^^^ @@ -60,7 +46,7 @@ sourceFile:contextualTyping.ts 3 > ^^^ 4 > ^^^^^^^^^^ 5 > ^ -1-> { +1->class C1T5 { > 2 > foo 3 > : (i: number, s: string) => number = @@ -972,28 +958,14 @@ sourceFile:contextualTyping.ts 3 >Emitted(40, 38) Source(55, 38) + SourceIndex(0) --- >>>var C4T5 = (function () { -1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^-> -1 > - >class -2 > C4T5 -1 >Emitted(41, 5) Source(56, 7) + SourceIndex(0) -2 >Emitted(41, 9) Source(56, 11) + SourceIndex(0) ---- >>> function C4T5() { -1->^^^^ -2 > ^^^^^^^^^ -3 > ^^^^ -4 > ^^^^^^^^^^^^^^^^^^^^-> -1-> { +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >class C4T5 { > foo: (i: number, s: string) => string; > -2 > -3 > C4T5 -1->Emitted(42, 5) Source(58, 5) + SourceIndex(0) name (C4T5) -2 >Emitted(42, 14) Source(56, 7) + SourceIndex(0) name (C4T5) -3 >Emitted(42, 18) Source(56, 11) + SourceIndex(0) name (C4T5) +1 >Emitted(42, 5) Source(58, 5) + SourceIndex(0) name (C4T5) --- >>> this.foo = function (i, s) { 1->^^^^^^^^ @@ -1005,9 +977,7 @@ sourceFile:contextualTyping.ts 7 > ^ 8 > ^^ 9 > ^ -1-> { - > foo: (i: number, s: string) => string; - > constructor() { +1->constructor() { > 2 > this 3 > . @@ -2193,25 +2163,19 @@ sourceFile:contextualTyping.ts 3 >Emitted(86, 26) Source(145, 26) + SourceIndex(0) --- >>>function c9t5(f) { } -1 >^^^^^^^^^ -2 > ^^^^ -3 > ^ -4 > ^ -5 > ^^^^ -6 > ^ +1 >^^^^^^^^^^^^^^ +2 > ^ +3 > ^^^^ +4 > ^ 1 > - >function -2 > c9t5 -3 > ( -4 > f: (n: number) => IFoo -5 > ) { -6 > } -1 >Emitted(87, 10) Source(146, 10) + SourceIndex(0) -2 >Emitted(87, 14) Source(146, 14) + SourceIndex(0) -3 >Emitted(87, 15) Source(146, 15) + SourceIndex(0) -4 >Emitted(87, 16) Source(146, 37) + SourceIndex(0) -5 >Emitted(87, 20) Source(146, 40) + SourceIndex(0) -6 >Emitted(87, 21) Source(146, 41) + SourceIndex(0) + >function c9t5( +2 > f: (n: number) => IFoo +3 > ) { +4 > } +1 >Emitted(87, 15) Source(146, 15) + SourceIndex(0) +2 >Emitted(87, 16) Source(146, 37) + SourceIndex(0) +3 >Emitted(87, 20) Source(146, 40) + SourceIndex(0) name (c9t5) +4 >Emitted(87, 21) Source(146, 41) + SourceIndex(0) name (c9t5) --- >>>; 1 > @@ -2378,31 +2342,17 @@ sourceFile:contextualTyping.ts 3 >Emitted(94, 27) Source(154, 27) + SourceIndex(0) --- >>>var C11t5 = (function () { -1->^^^^ -2 > ^^^^^ -3 > ^^^^^^^^^^^^^^^-> -1-> - >class -2 > C11t5 -1->Emitted(95, 5) Source(155, 7) + SourceIndex(0) -2 >Emitted(95, 10) Source(155, 12) + SourceIndex(0) ---- >>> function C11t5(f) { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^^^^^ -4 > ^ -5 > ^ -1-> { -2 > -3 > C11t5 -4 > { constructor( -5 > f: (n: number) => IFoo +2 > ^^^^^^^^^^^^^^^ +3 > ^ +1-> + >class C11t5 { +2 > constructor( +3 > f: (n: number) => IFoo 1->Emitted(96, 5) Source(155, 15) + SourceIndex(0) name (C11t5) -2 >Emitted(96, 14) Source(155, 7) + SourceIndex(0) name (C11t5) -3 >Emitted(96, 19) Source(155, 12) + SourceIndex(0) name (C11t5) -4 >Emitted(96, 20) Source(155, 27) + SourceIndex(0) name (C11t5) -5 >Emitted(96, 21) Source(155, 49) + SourceIndex(0) name (C11t5) +2 >Emitted(96, 20) Source(155, 27) + SourceIndex(0) name (C11t5) +3 >Emitted(96, 21) Source(155, 49) + SourceIndex(0) name (C11t5) --- >>> } 1 >^^^^ @@ -3197,21 +3147,19 @@ sourceFile:contextualTyping.ts --- >>>function EF1(a, b) { return a + b; } 1-> -2 >^^^^^^^^^ -3 > ^^^ -4 > ^ -5 > ^ -6 > ^^ -7 > ^ -8 > ^^^^ -9 > ^^^^^^ -10> ^ -11> ^ -12> ^^^ -13> ^ -14> ^ -15> ^ -16> ^ +2 >^^^^^^^^^^^^^ +3 > ^ +4 > ^^ +5 > ^ +6 > ^^^^ +7 > ^^^^^^ +8 > ^ +9 > ^ +10> ^^^ +11> ^ +12> ^ +13> ^ +14> ^ 1-> > >// CONTEXT: Contextual typing declarations @@ -3220,37 +3168,33 @@ sourceFile:contextualTyping.ts >declare function EF1(a:number, b:number):number; > > -2 >function -3 > EF1 -4 > ( -5 > a -6 > , -7 > b -8 > ) { -9 > return -10> -11> a -12> + -13> b -14> ; -15> -16> } +2 >function EF1( +3 > a +4 > , +5 > b +6 > ) { +7 > return +8 > +9 > a +10> + +11> b +12> ; +13> +14> } 1->Emitted(125, 1) Source(191, 1) + SourceIndex(0) -2 >Emitted(125, 10) Source(191, 10) + SourceIndex(0) -3 >Emitted(125, 13) Source(191, 13) + SourceIndex(0) -4 >Emitted(125, 14) Source(191, 14) + SourceIndex(0) -5 >Emitted(125, 15) Source(191, 15) + SourceIndex(0) -6 >Emitted(125, 17) Source(191, 16) + SourceIndex(0) -7 >Emitted(125, 18) Source(191, 17) + SourceIndex(0) -8 >Emitted(125, 22) Source(191, 21) + SourceIndex(0) name (EF1) -9 >Emitted(125, 28) Source(191, 27) + SourceIndex(0) name (EF1) -10>Emitted(125, 29) Source(191, 28) + SourceIndex(0) name (EF1) -11>Emitted(125, 30) Source(191, 29) + SourceIndex(0) name (EF1) -12>Emitted(125, 33) Source(191, 30) + SourceIndex(0) name (EF1) -13>Emitted(125, 34) Source(191, 31) + SourceIndex(0) name (EF1) -14>Emitted(125, 35) Source(191, 32) + SourceIndex(0) name (EF1) -15>Emitted(125, 36) Source(191, 33) + SourceIndex(0) name (EF1) -16>Emitted(125, 37) Source(191, 34) + SourceIndex(0) name (EF1) +2 >Emitted(125, 14) Source(191, 14) + SourceIndex(0) +3 >Emitted(125, 15) Source(191, 15) + SourceIndex(0) +4 >Emitted(125, 17) Source(191, 16) + SourceIndex(0) +5 >Emitted(125, 18) Source(191, 17) + SourceIndex(0) +6 >Emitted(125, 22) Source(191, 21) + SourceIndex(0) name (EF1) +7 >Emitted(125, 28) Source(191, 27) + SourceIndex(0) name (EF1) +8 >Emitted(125, 29) Source(191, 28) + SourceIndex(0) name (EF1) +9 >Emitted(125, 30) Source(191, 29) + SourceIndex(0) name (EF1) +10>Emitted(125, 33) Source(191, 30) + SourceIndex(0) name (EF1) +11>Emitted(125, 34) Source(191, 31) + SourceIndex(0) name (EF1) +12>Emitted(125, 35) Source(191, 32) + SourceIndex(0) name (EF1) +13>Emitted(125, 36) Source(191, 33) + SourceIndex(0) name (EF1) +14>Emitted(125, 37) Source(191, 34) + SourceIndex(0) name (EF1) --- >>>var efv = EF1(1, 2); 1 > @@ -3292,12 +3236,10 @@ sourceFile:contextualTyping.ts --- >>>function Point(x, y) { 1-> -2 >^^^^^^^^^ -3 > ^^^^^ -4 > ^ -5 > ^ -6 > ^^ -7 > ^ +2 >^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^ +5 > ^ 1-> > > @@ -3313,19 +3255,15 @@ sourceFile:contextualTyping.ts >} > > -2 >function -3 > Point -4 > ( -5 > x -6 > , -7 > y +2 >function Point( +3 > x +4 > , +5 > y 1->Emitted(127, 1) Source(207, 1) + SourceIndex(0) -2 >Emitted(127, 10) Source(207, 10) + SourceIndex(0) -3 >Emitted(127, 15) Source(207, 15) + SourceIndex(0) -4 >Emitted(127, 16) Source(207, 16) + SourceIndex(0) -5 >Emitted(127, 17) Source(207, 17) + SourceIndex(0) -6 >Emitted(127, 19) Source(207, 19) + SourceIndex(0) -7 >Emitted(127, 20) Source(207, 20) + SourceIndex(0) +2 >Emitted(127, 16) Source(207, 16) + SourceIndex(0) +3 >Emitted(127, 17) Source(207, 17) + SourceIndex(0) +4 >Emitted(127, 19) Source(207, 19) + SourceIndex(0) +5 >Emitted(127, 20) Source(207, 20) + SourceIndex(0) --- >>> this.x = x; 1 >^^^^ diff --git a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt index c7b15e8efef..a11f0009016 100644 --- a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt +++ b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(16,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. Type 'string' is not assignable to type 'Date'. @@ -24,6 +25,7 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): ~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. !!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r6 = _.forEach(c2, (x) => { return x.toFixed() }); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. diff --git a/tests/baselines/reference/convertKeywordsYes.errors.txt b/tests/baselines/reference/convertKeywordsYes.errors.txt new file mode 100644 index 00000000000..932fda09be8 --- /dev/null +++ b/tests/baselines/reference/convertKeywordsYes.errors.txt @@ -0,0 +1,353 @@ +tests/cases/compiler/convertKeywordsYes.ts(293,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(293,21): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(294,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(296,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(296,19): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(297,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(297,19): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(298,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(298,21): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(299,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(299,18): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(301,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(301,18): error TS1005: ';' expected. +tests/cases/compiler/convertKeywordsYes.ts(303,11): error TS1005: '{' expected. +tests/cases/compiler/convertKeywordsYes.ts(303,17): error TS1005: ';' expected. + + +==== tests/cases/compiler/convertKeywordsYes.ts (15 errors) ==== + // reserved ES5 future in strict mode + + var constructor = 0; + var any = 0; + var boolean = 0; + var implements = 0; + var interface = 0; + var let = 0; + var module = 0; + var number = 0; + var package = 0; + var private = 0; + var protected = 0; + var public = 0; + var set = 0; + var static = 0; + var string = 0; + var get = 0; + var yield = 0; + var declare = 0; + + function bigGeneric< + constructor, + implements , + interface , + let, + module , + package, + private , + protected, + public , + set , + static , + get , + yield, + declare + >(c: constructor, + a: any, + b2: boolean, + i: implements , + i2: interface , + l: let, + m: module , + n: number, + p: package, + p2: private , + p3: protected, + p4: public , + s: set , + s2: static , + s3: string, + g: get , + y: yield, + d: declare ) { } + + var bigObject = { + constructor: 0, + any: 0, + boolean: 0, + implements: 0, + interface: 0, + let: 0, + module: 0, + number: 0, + package: 0, + private: 0, + protected: 0, + public: 0, + set: 0, + static: 0, + string: 0, + get: 0, + yield: 0, + break: 0, + case: 0, + catch: 0, + class: 0, + continue: 0, + const: 0, + + debugger: 0, + declare: 0, + default: 0, + delete: 0, + do: 0, + else: 0, + enum: 0, + export: 0, + extends: 0, + false: 0, + finally: 0, + for: 0, + function: 0, + if: 0, + + import: 0, + in: 0, + instanceof: 0, + new: 0, + null: 0, + return: 0, + super: 0, + switch: 0, + this: 0, + throw: 0, + true: 0, + try: 0, + typeof: 0, + var: 0, + void: 0, + while: 0, + with: 0, + }; + + interface bigInterface { + constructor; + any; + boolean; + implements; + interface; + let; + module; + number; + package; + private; + protected; + public; + set; + static; + string; + get; + yield; + break; + case; + catch; + class; + continue; + const; + + debugger; + declare; + default; + delete; + do; + else; + enum; + export; + extends; + false; + finally; + for; + function; + if; + + import; + in; + instanceof; + new; + null; + return; + super; + switch; + this; + throw; + true; + try; + typeof; + var; + void; + while; + with; + } + + class bigClass { + public "constructor" = 0; + public any = 0; + public boolean = 0; + public implements = 0; + public interface = 0; + public let = 0; + public module = 0; + public number = 0; + public package = 0; + public private = 0; + public protected = 0; + public public = 0; + public set = 0; + public static = 0; + public string = 0; + public get = 0; + public yield = 0; + public break = 0; + public case = 0; + public catch = 0; + public class = 0; + public continue = 0; + public const = 0; + public debugger = 0; + public declare = 0; + public default = 0; + public delete = 0; + public do = 0; + public else = 0; + public enum = 0; + public export = 0; + public extends = 0; + public false = 0; + public finally = 0; + public for = 0; + public function = 0; + public if = 0; + public import = 0; + public in = 0; + public instanceof = 0; + public new = 0; + public null = 0; + public return = 0; + public super = 0; + public switch = 0; + public this = 0; + public throw = 0; + public true = 0; + public try = 0; + public typeof = 0; + public var = 0; + public void = 0; + public while = 0; + public with = 0; + } + + enum bigEnum { + constructor, + any, + boolean, + implements, + interface, + let, + module, + number, + package, + private, + protected, + public, + set, + static, + string, + get, + yield, + break, + case, + catch, + class, + continue, + const, + + debugger, + declare, + default, + delete, + do, + else, + enum, + export, + extends, + false, + finally, + for, + function, + if, + + import, + in, + instanceof, + new, + null, + return, + super, + switch, + this, + throw, + true, + try, + typeof, + var, + void, + while, + with, + } + + module bigModule { + class constructor { } + class implements { } + class interface { } + ~~~~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class let { } + ~~~ +!!! error TS1005: '{' expected. + class module { } + class package { } + ~~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class private { } + ~~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class protected { } + ~~~~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class public { } + ~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class set { } + class static { } + ~~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class get { } + class yield { } + ~~~~~ +!!! error TS1005: '{' expected. + ~ +!!! error TS1005: ';' expected. + class declare { } + } \ No newline at end of file diff --git a/tests/baselines/reference/convertKeywordsYes.js b/tests/baselines/reference/convertKeywordsYes.js index a68f751f434..2b17e744b66 100644 --- a/tests/baselines/reference/convertKeywordsYes.js +++ b/tests/baselines/reference/convertKeywordsYes.js @@ -505,66 +505,81 @@ var bigModule; } return constructor; })(); - var implements = (function () { - function implements() { + var default_1 = (function () { + function default_1() { } - return implements; + return default_1; })(); - var interface = (function () { - function interface() { + var default_2 = (function () { + function default_2() { } - return interface; + return default_2; })(); - var let = (function () { - function let() { + interface; + { } + var default_3 = (function () { + function default_3() { } - return let; + return default_3; })(); + var _a = void 0; var module = (function () { function module() { } return module; })(); - var package = (function () { - function package() { + var default_4 = (function () { + function default_4() { } - return package; + return default_4; })(); - var private = (function () { - function private() { + package; + { } + var default_5 = (function () { + function default_5() { } - return private; + return default_5; })(); - var protected = (function () { - function protected() { + private; + { } + var default_6 = (function () { + function default_6() { } - return protected; + return default_6; })(); - var public = (function () { - function public() { + protected; + { } + var default_7 = (function () { + function default_7() { } - return public; + return default_7; })(); + public; + { } var set = (function () { function set() { } return set; })(); - var static = (function () { - function static() { + var default_8 = (function () { + function default_8() { } - return static; + return default_8; })(); + static; + { } var get = (function () { function get() { } return get; })(); - var yield = (function () { - function yield() { + var default_9 = (function () { + function default_9() { } - return yield; + return default_9; })(); + yield; + { } var declare = (function () { function declare() { } diff --git a/tests/baselines/reference/convertKeywordsYes.types b/tests/baselines/reference/convertKeywordsYes.types deleted file mode 100644 index af2e0766181..00000000000 --- a/tests/baselines/reference/convertKeywordsYes.types +++ /dev/null @@ -1,879 +0,0 @@ -=== tests/cases/compiler/convertKeywordsYes.ts === -// reserved ES5 future in strict mode - -var constructor = 0; ->constructor : number - -var any = 0; ->any : number - -var boolean = 0; ->boolean : number - -var implements = 0; ->implements : number - -var interface = 0; ->interface : number - -var let = 0; ->let : number - -var module = 0; ->module : number - -var number = 0; ->number : number - -var package = 0; ->package : number - -var private = 0; ->private : number - -var protected = 0; ->protected : number - -var public = 0; ->public : number - -var set = 0; ->set : number - -var static = 0; ->static : number - -var string = 0; ->string : number - -var get = 0; ->get : number - -var yield = 0; ->yield : number - -var declare = 0; ->declare : number - -function bigGeneric< ->bigGeneric : (c: constructor, a: any, b2: boolean, i: implements, i2: interface, l: let, m: module, n: number, p: package, p2: private, p3: protected, p4: public, s: set, s2: static, s3: string, g: get, y: yield, d: declare) => void - - constructor, ->constructor : constructor - - implements , ->implements : implements - - interface , ->interface : interface - - let, ->let : let - - module , ->module : module - - package, ->package : package - - private , ->private : private - - protected, ->protected : protected - - public , ->public : public - - set , ->set : set - - static , ->static : static - - get , ->get : get - - yield, ->yield : yield - - declare ->declare : declare - - >(c: constructor, ->c : constructor ->constructor : constructor - - a: any, ->a : any - - b2: boolean, ->b2 : boolean - - i: implements , ->i : implements ->implements : implements - - i2: interface , ->i2 : interface ->interface : interface - - l: let, ->l : let ->let : let - - m: module , ->m : module ->module : module - - n: number, ->n : number - - p: package, ->p : package ->package : package - - p2: private , ->p2 : private ->private : private - - p3: protected, ->p3 : protected ->protected : protected - - p4: public , ->p4 : public ->public : public - - s: set , ->s : set ->set : set - - s2: static , ->s2 : static ->static : static - - s3: string, ->s3 : string - - g: get , ->g : get ->get : get - - y: yield, ->y : yield ->yield : yield - - d: declare ) { } ->d : declare ->declare : declare - -var bigObject = { ->bigObject : { constructor: number; any: number; boolean: number; implements: number; interface: number; let: number; module: number; number: number; package: number; private: number; protected: number; public: number; set: number; static: number; string: number; get: number; yield: number; break: number; case: number; catch: number; class: number; continue: number; const: number; debugger: number; declare: number; default: number; delete: number; do: number; else: number; enum: number; export: number; extends: number; false: number; finally: number; for: number; function: number; if: number; import: number; in: number; instanceof: number; new: number; null: number; return: number; super: number; switch: number; this: number; throw: number; true: number; try: number; typeof: number; var: number; void: number; while: number; with: number; } ->{ constructor: 0, any: 0, boolean: 0, implements: 0, interface: 0, let: 0, module: 0, number: 0, package: 0, private: 0, protected: 0, public: 0, set: 0, static: 0, string: 0, get: 0, yield: 0, break: 0, case: 0, catch: 0, class: 0, continue: 0, const: 0, debugger: 0, declare: 0, default: 0, delete: 0, do: 0, else: 0, enum: 0, export: 0, extends: 0, false: 0, finally: 0, for: 0, function: 0, if: 0, import: 0, in: 0, instanceof: 0, new: 0, null: 0, return: 0, super: 0, switch: 0, this: 0, throw: 0, true: 0, try: 0, typeof: 0, var: 0, void: 0, while: 0, with: 0,} : { constructor: number; any: number; boolean: number; implements: number; interface: number; let: number; module: number; number: number; package: number; private: number; protected: number; public: number; set: number; static: number; string: number; get: number; yield: number; break: number; case: number; catch: number; class: number; continue: number; const: number; debugger: number; declare: number; default: number; delete: number; do: number; else: number; enum: number; export: number; extends: number; false: number; finally: number; for: number; function: number; if: number; import: number; in: number; instanceof: number; new: number; null: number; return: number; super: number; switch: number; this: number; throw: number; true: number; try: number; typeof: number; var: number; void: number; while: number; with: number; } - - constructor: 0, ->constructor : number - - any: 0, ->any : number - - boolean: 0, ->boolean : number - - implements: 0, ->implements : number - - interface: 0, ->interface : number - - let: 0, ->let : number - - module: 0, ->module : number - - number: 0, ->number : number - - package: 0, ->package : number - - private: 0, ->private : number - - protected: 0, ->protected : number - - public: 0, ->public : number - - set: 0, ->set : number - - static: 0, ->static : number - - string: 0, ->string : number - - get: 0, ->get : number - - yield: 0, ->yield : number - - break: 0, ->break : number - - case: 0, ->case : number - - catch: 0, ->catch : number - - class: 0, ->class : number - - continue: 0, ->continue : number - - const: 0, ->const : number - - debugger: 0, ->debugger : number - - declare: 0, ->declare : number - - default: 0, ->default : number - - delete: 0, ->delete : number - - do: 0, ->do : number - - else: 0, ->else : number - - enum: 0, ->enum : number - - export: 0, ->export : number - - extends: 0, ->extends : number - - false: 0, ->false : number - - finally: 0, ->finally : number - - for: 0, ->for : number - - function: 0, ->function : number - - if: 0, ->if : number - - import: 0, ->import : number - - in: 0, ->in : number - - instanceof: 0, ->instanceof : number - - new: 0, ->new : number - - null: 0, ->null : number - - return: 0, ->return : number - - super: 0, ->super : number - - switch: 0, ->switch : number - - this: 0, ->this : number - - throw: 0, ->throw : number - - true: 0, ->true : number - - try: 0, ->try : number - - typeof: 0, ->typeof : number - - var: 0, ->var : number - - void: 0, ->void : number - - while: 0, ->while : number - - with: 0, ->with : number - -}; - -interface bigInterface { ->bigInterface : bigInterface - - constructor; ->constructor : any - - any; ->any : any - - boolean; ->boolean : any - - implements; ->implements : any - - interface; ->interface : any - - let; ->let : any - - module; ->module : any - - number; ->number : any - - package; ->package : any - - private; ->private : any - - protected; ->protected : any - - public; ->public : any - - set; ->set : any - - static; ->static : any - - string; ->string : any - - get; ->get : any - - yield; ->yield : any - - break; ->break : any - - case; ->case : any - - catch; ->catch : any - - class; ->class : any - - continue; ->continue : any - - const; ->const : any - - debugger; ->debugger : any - - declare; ->declare : any - - default; ->default : any - - delete; ->delete : any - - do; ->do : any - - else; ->else : any - - enum; ->enum : any - - export; ->export : any - - extends; ->extends : any - - false; ->false : any - - finally; ->finally : any - - for; ->for : any - - function; ->function : any - - if; ->if : any - - import; ->import : any - - in; ->in : any - - instanceof; ->instanceof : any - - new; ->new : any - - null; ->null : any - - return; ->return : any - - super; ->super : any - - switch; ->switch : any - - this; ->this : any - - throw; ->throw : any - - true; ->true : any - - try; ->try : any - - typeof; ->typeof : any - - var; ->var : any - - void; ->void : any - - while; ->while : any - - with; ->with : any -} - -class bigClass { ->bigClass : bigClass - - public "constructor" = 0; - public any = 0; ->any : number - - public boolean = 0; ->boolean : number - - public implements = 0; ->implements : number - - public interface = 0; ->interface : number - - public let = 0; ->let : number - - public module = 0; ->module : number - - public number = 0; ->number : number - - public package = 0; ->package : number - - public private = 0; ->private : number - - public protected = 0; ->protected : number - - public public = 0; ->public : number - - public set = 0; ->set : number - - public static = 0; ->static : number - - public string = 0; ->string : number - - public get = 0; ->get : number - - public yield = 0; ->yield : number - - public break = 0; ->break : number - - public case = 0; ->case : number - - public catch = 0; ->catch : number - - public class = 0; ->class : number - - public continue = 0; ->continue : number - - public const = 0; ->const : number - - public debugger = 0; ->debugger : number - - public declare = 0; ->declare : number - - public default = 0; ->default : number - - public delete = 0; ->delete : number - - public do = 0; ->do : number - - public else = 0; ->else : number - - public enum = 0; ->enum : number - - public export = 0; ->export : number - - public extends = 0; ->extends : number - - public false = 0; ->false : number - - public finally = 0; ->finally : number - - public for = 0; ->for : number - - public function = 0; ->function : number - - public if = 0; ->if : number - - public import = 0; ->import : number - - public in = 0; ->in : number - - public instanceof = 0; ->instanceof : number - - public new = 0; ->new : number - - public null = 0; ->null : number - - public return = 0; ->return : number - - public super = 0; ->super : number - - public switch = 0; ->switch : number - - public this = 0; ->this : number - - public throw = 0; ->throw : number - - public true = 0; ->true : number - - public try = 0; ->try : number - - public typeof = 0; ->typeof : number - - public var = 0; ->var : number - - public void = 0; ->void : number - - public while = 0; ->while : number - - public with = 0; ->with : number -} - -enum bigEnum { ->bigEnum : bigEnum - - constructor, ->constructor : bigEnum - - any, ->any : bigEnum - - boolean, ->boolean : bigEnum - - implements, ->implements : bigEnum - - interface, ->interface : bigEnum - - let, ->let : bigEnum - - module, ->module : bigEnum - - number, ->number : bigEnum - - package, ->package : bigEnum - - private, ->private : bigEnum - - protected, ->protected : bigEnum - - public, ->public : bigEnum - - set, ->set : bigEnum - - static, ->static : bigEnum - - string, ->string : bigEnum - - get, ->get : bigEnum - - yield, ->yield : bigEnum - - break, ->break : bigEnum - - case, ->case : bigEnum - - catch, ->catch : bigEnum - - class, ->class : bigEnum - - continue, ->continue : bigEnum - - const, ->const : bigEnum - - debugger, ->debugger : bigEnum - - declare, ->declare : bigEnum - - default, ->default : bigEnum - - delete, ->delete : bigEnum - - do, ->do : bigEnum - - else, ->else : bigEnum - - enum, ->enum : bigEnum - - export, ->export : bigEnum - - extends, ->extends : bigEnum - - false, ->false : bigEnum - - finally, ->finally : bigEnum - - for, ->for : bigEnum - - function, ->function : bigEnum - - if, ->if : bigEnum - - import, ->import : bigEnum - - in, ->in : bigEnum - - instanceof, ->instanceof : bigEnum - - new, ->new : bigEnum - - null, ->null : bigEnum - - return, ->return : bigEnum - - super, ->super : bigEnum - - switch, ->switch : bigEnum - - this, ->this : bigEnum - - throw, ->throw : bigEnum - - true, ->true : bigEnum - - try, ->try : bigEnum - - typeof, ->typeof : bigEnum - - var, ->var : bigEnum - - void, ->void : bigEnum - - while, ->while : bigEnum - - with, ->with : bigEnum -} - -module bigModule { ->bigModule : typeof bigModule - - class constructor { } ->constructor : constructor - - class implements { } ->implements : implements - - class interface { } ->interface : interface - - class let { } ->let : let - - class module { } ->module : module - - class package { } ->package : package - - class private { } ->private : private - - class protected { } ->protected : protected - - class public { } ->public : public - - class set { } ->set : set - - class static { } ->static : static - - class get { } ->get : get - - class yield { } ->yield : yield - - class declare { } ->declare : declare -} diff --git a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.errors.txt b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.errors.txt index 717d76309a5..450d180e884 100644 --- a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.errors.txt +++ b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/crashInsourcePropertyIsRelatableToTargetProperty.ts(5,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/crashInsourcePropertyIsRelatableToTargetProperty.ts(5,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/compiler/crashInsourcePropertyIsRelatableToTargetProperty.ts(9,5): error TS2322: Type '(x: "hi", items: string[]) => typeof foo' is not assignable to type 'D'. Property 'x' is missing in type '(x: "hi", items: string[]) => typeof foo'. @@ -9,7 +9,7 @@ tests/cases/compiler/crashInsourcePropertyIsRelatableToTargetProperty.ts(9,5): e } class D extends C { } function foo(x: "hi", items: string[]): typeof foo; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(x: string, items: string[]): typeof foo { return null; diff --git a/tests/baselines/reference/declFileEnums.js b/tests/baselines/reference/declFileEnums.js index 97559f05574..34f1e386a96 100644 --- a/tests/baselines/reference/declFileEnums.js +++ b/tests/baselines/reference/declFileEnums.js @@ -46,14 +46,14 @@ var e1; var e2; (function (e2) { e2[e2["a"] = 10] = "a"; - e2[e2["b"] = e2.a + 2] = "b"; + e2[e2["b"] = 12] = "b"; e2[e2["c"] = 10] = "c"; })(e2 || (e2 = {})); var e3; (function (e3) { e3[e3["a"] = 10] = "a"; e3[e3["b"] = Math.PI] = "b"; - e3[e3["c"] = e3.a + 3] = "c"; + e3[e3["c"] = 13] = "c"; })(e3 || (e3 = {})); var e4; (function (e4) { @@ -80,13 +80,13 @@ declare enum e1 { } declare enum e2 { a = 10, - b, + b = 12, c = 10, } declare enum e3 { a = 10, b, - c, + c = 13, } declare enum e4 { a = 0, diff --git a/tests/baselines/reference/declFileGenericType.types b/tests/baselines/reference/declFileGenericType.types index 284ce8f475b..50026cc3aeb 100644 --- a/tests/baselines/reference/declFileGenericType.types +++ b/tests/baselines/reference/declFileGenericType.types @@ -147,14 +147,14 @@ export var g = C.F5>(); export class h extends C.A{ } >h : h ->C : unknown +>C : typeof C >A : C.A >C : unknown >B : C.B export interface i extends C.A { } >i : i ->C : unknown +>C : typeof C >A : C.A >C : unknown >B : C.B diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index f9345b5ff11..fed2caca7ac 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -30,7 +30,7 @@ declare module templa.mvc { >templa : unknown >mvc : unknown >IModel : IModel ->mvc : unknown +>mvc : typeof mvc >IController : IController >ModelType : ModelType } @@ -42,7 +42,7 @@ declare module templa.mvc.composite { interface ICompositeControllerModel extends mvc.IModel { >ICompositeControllerModel : ICompositeControllerModel ->mvc : unknown +>mvc : typeof mvc >IModel : IModel getControllers(): mvc.IController[]; @@ -64,8 +64,8 @@ module templa.dom.mvc { >templa : unknown >mvc : unknown >IModel : templa.mvc.IModel ->templa : unknown ->mvc : unknown +>templa : typeof templa +>mvc : typeof templa.mvc >IController : templa.mvc.IController >ModelType : ModelType } @@ -82,8 +82,8 @@ module templa.dom.mvc { >templa : unknown >mvc : unknown >IModel : templa.mvc.IModel ->templa : unknown ->mvc : unknown +>templa : typeof templa +>mvc : typeof templa.mvc >AbstractController : templa.mvc.AbstractController >ModelType : ModelType >IElementController : IElementController @@ -110,9 +110,9 @@ module templa.dom.mvc.composite { >mvc : unknown >composite : unknown >ICompositeControllerModel : templa.mvc.composite.ICompositeControllerModel ->templa : unknown ->dom : unknown ->mvc : unknown +>templa : typeof templa +>dom : typeof dom +>mvc : typeof mvc >AbstractElementController : AbstractElementController >ModelType : ModelType diff --git a/tests/baselines/reference/declFileImportChainInExportAssignment.js b/tests/baselines/reference/declFileImportChainInExportAssignment.js index c8773889a7d..4ec3893d02f 100644 --- a/tests/baselines/reference/declFileImportChainInExportAssignment.js +++ b/tests/baselines/reference/declFileImportChainInExportAssignment.js @@ -13,13 +13,13 @@ export = b; var m; (function (m) { var c; - (function (_c) { + (function (c_1) { var c = (function () { function c() { } return c; })(); - _c.c = c; + c_1.c = c; })(c = m.c || (m.c = {})); })(m || (m = {})); var a = m.c; diff --git a/tests/baselines/reference/declFileModuleContinuation.types b/tests/baselines/reference/declFileModuleContinuation.types index 671d9e6923c..0080d7cbbf3 100644 --- a/tests/baselines/reference/declFileModuleContinuation.types +++ b/tests/baselines/reference/declFileModuleContinuation.types @@ -15,7 +15,7 @@ module A.B.C { export class W implements A.C.Z { >W : W ->A : unknown +>A : typeof A >C : unknown >Z : A.C.Z } diff --git a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.js b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.js index 0150c3f9d42..563551d67a8 100644 --- a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.js +++ b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.js @@ -11,7 +11,12 @@ var f6 = () => { return [10]; } //// [declFileRestParametersOfFunctionAndFunctionType.js] -function f1() { } +function f1() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } +} function f2(x) { } function f3(x) { } function f4() { } diff --git a/tests/baselines/reference/declFileTypeofEnum.js b/tests/baselines/reference/declFileTypeofEnum.js index 8ced6f9e595..5b1c6977472 100644 --- a/tests/baselines/reference/declFileTypeofEnum.js +++ b/tests/baselines/reference/declFileTypeofEnum.js @@ -25,7 +25,7 @@ var days; days[days["saturday"] = 5] = "saturday"; days[days["sunday"] = 6] = "sunday"; })(days || (days = {})); -var weekendDay = 5 /* saturday */; +var weekendDay = days.saturday; var daysOfMonth = days; var daysOfYear; diff --git a/tests/baselines/reference/declFileTypeofInAnonymousType.js b/tests/baselines/reference/declFileTypeofInAnonymousType.js index 2210f189d16..01025ed1806 100644 --- a/tests/baselines/reference/declFileTypeofInAnonymousType.js +++ b/tests/baselines/reference/declFileTypeofInAnonymousType.js @@ -48,7 +48,7 @@ var d = { m: { mod: m1 }, mc: { cl: m1.c }, me: { en: m1.e }, - mh: 2 /* holiday */ + mh: m1.e.holiday }; diff --git a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types index 34d263ef6bb..818a31b26d5 100644 --- a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types +++ b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types @@ -19,9 +19,9 @@ module X.Y.base { export class W extends A.B.Base.W { >W : W ->A : unknown ->B : unknown ->Base : unknown +>A : typeof A +>B : typeof A.B +>Base : typeof A.B.Base >W : A.B.Base.W name: string; @@ -38,9 +38,9 @@ module X.Y.base.Z { export class W extends X.Y.base.W { >W : W >TValue : TValue ->X : unknown ->Y : unknown ->base : unknown +>X : typeof X +>Y : typeof Y +>base : typeof base >W : base.W value: boolean; diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types index 8c5c4169cb4..b2a1c154412 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types @@ -20,8 +20,8 @@ module X.A.B.C { } export class W implements X.A.C.Z { // This needs to be refered as X.A.C.Z as A has conflict >W : W ->X : unknown ->A : unknown +>X : typeof X +>A : typeof A >C : unknown >Z : X.A.C.Z } diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types index 11afd69d94c..e43d0b78f57 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types @@ -17,7 +17,7 @@ module X.A.B.C { export class W implements A.C.Z { // This can refer to it as A.C.Z >W : W ->A : unknown +>A : typeof A >C : unknown >Z : A.C.Z } diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types index 0b17b2ce78a..d45c2cf0523 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types @@ -17,8 +17,8 @@ module X.A.B.C { export class W implements X.A.C.Z { // This needs to be refered as X.A.C.Z as A has conflict >W : W ->X : unknown ->A : unknown +>X : typeof X +>A : typeof A >C : unknown >Z : X.A.C.Z } diff --git a/tests/baselines/reference/declarationEmitDefaultExport1.js b/tests/baselines/reference/declarationEmitDefaultExport1.js new file mode 100644 index 00000000000..197e4fc9cc8 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport1.js @@ -0,0 +1,12 @@ +//// [declarationEmitDefaultExport1.ts] +export default class C { +} + +//// [declarationEmitDefaultExport1.js] +export default class C { +} + + +//// [declarationEmitDefaultExport1.d.ts] +export default class C { +} diff --git a/tests/baselines/reference/declarationEmitDefaultExport1.types b/tests/baselines/reference/declarationEmitDefaultExport1.types new file mode 100644 index 00000000000..41dd3547b6d --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport1.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/declarationEmitDefaultExport1.ts === +export default class C { +>C : C +} diff --git a/tests/baselines/reference/declarationEmitDefaultExport2.js b/tests/baselines/reference/declarationEmitDefaultExport2.js new file mode 100644 index 00000000000..687c6d67cdb --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport2.js @@ -0,0 +1,12 @@ +//// [declarationEmitDefaultExport2.ts] +export default class { +} + +//// [declarationEmitDefaultExport2.js] +export default class { +} + + +//// [declarationEmitDefaultExport2.d.ts] +export default class { +} diff --git a/tests/baselines/reference/declarationEmitDefaultExport2.types b/tests/baselines/reference/declarationEmitDefaultExport2.types new file mode 100644 index 00000000000..b82e6cfb923 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport2.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/declarationEmitDefaultExport2.ts === +export default class { +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExport3.js b/tests/baselines/reference/declarationEmitDefaultExport3.js new file mode 100644 index 00000000000..ba412a1b4b7 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport3.js @@ -0,0 +1,13 @@ +//// [declarationEmitDefaultExport3.ts] +export default function foo() { + return "" +} + +//// [declarationEmitDefaultExport3.js] +export default function foo() { + return ""; +} + + +//// [declarationEmitDefaultExport3.d.ts] +export default function foo(): string; diff --git a/tests/baselines/reference/declarationEmitDefaultExport3.types b/tests/baselines/reference/declarationEmitDefaultExport3.types new file mode 100644 index 00000000000..0bde6eff915 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport3.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/declarationEmitDefaultExport3.ts === +export default function foo() { +>foo : () => string + + return "" +} diff --git a/tests/baselines/reference/declarationEmitDefaultExport4.js b/tests/baselines/reference/declarationEmitDefaultExport4.js new file mode 100644 index 00000000000..92f8ef8bb81 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport4.js @@ -0,0 +1,13 @@ +//// [declarationEmitDefaultExport4.ts] +export default function () { + return 1; +} + +//// [declarationEmitDefaultExport4.js] +export default function () { + return 1; +} + + +//// [declarationEmitDefaultExport4.d.ts] +export default function (): number; diff --git a/tests/baselines/reference/declarationEmitDefaultExport4.types b/tests/baselines/reference/declarationEmitDefaultExport4.types new file mode 100644 index 00000000000..8043af36b76 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport4.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/declarationEmitDefaultExport4.ts === +export default function () { +No type information for this code. return 1; +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExport5.js b/tests/baselines/reference/declarationEmitDefaultExport5.js new file mode 100644 index 00000000000..a8794d92c63 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport5.js @@ -0,0 +1,10 @@ +//// [declarationEmitDefaultExport5.ts] +export default 1 + 2; + + +//// [declarationEmitDefaultExport5.js] +export default 1 + 2; + + +//// [declarationEmitDefaultExport5.d.ts] +export default : number; diff --git a/tests/baselines/reference/declarationEmitDefaultExport5.types b/tests/baselines/reference/declarationEmitDefaultExport5.types new file mode 100644 index 00000000000..702cc51f71e --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport5.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/declarationEmitDefaultExport5.ts === +export default 1 + 2; +>1 + 2 : number + diff --git a/tests/baselines/reference/declarationEmitDefaultExport6.js b/tests/baselines/reference/declarationEmitDefaultExport6.js new file mode 100644 index 00000000000..d328458366e --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport6.js @@ -0,0 +1,15 @@ +//// [declarationEmitDefaultExport6.ts] +export class A {} +export default new A(); + + +//// [declarationEmitDefaultExport6.js] +export class A { +} +export default new A(); + + +//// [declarationEmitDefaultExport6.d.ts] +export declare class A { +} +export default : A; diff --git a/tests/baselines/reference/declarationEmitDefaultExport6.types b/tests/baselines/reference/declarationEmitDefaultExport6.types new file mode 100644 index 00000000000..9c839edb1a9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport6.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/declarationEmitDefaultExport6.ts === +export class A {} +>A : A + +export default new A(); +>new A() : A +>A : typeof A + diff --git a/tests/baselines/reference/declarationEmitDefaultExport7.errors.txt b/tests/baselines/reference/declarationEmitDefaultExport7.errors.txt new file mode 100644 index 00000000000..f19766cbb00 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport7.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/declarationEmitDefaultExport7.ts(2,1): error TS4082: Default export of the module has or is using private name 'A'. + + +==== tests/cases/compiler/declarationEmitDefaultExport7.ts (1 errors) ==== + class A {} + export default new A(); + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4082: Default export of the module has or is using private name 'A'. + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDefaultExport7.js b/tests/baselines/reference/declarationEmitDefaultExport7.js new file mode 100644 index 00000000000..99751113dd6 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDefaultExport7.js @@ -0,0 +1,9 @@ +//// [declarationEmitDefaultExport7.ts] +class A {} +export default new A(); + + +//// [declarationEmitDefaultExport7.js] +class A { +} +export default new A(); diff --git a/tests/baselines/reference/declarationEmitDestructuring1.js b/tests/baselines/reference/declarationEmitDestructuring1.js new file mode 100644 index 00000000000..9ac08032a0d --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring1.js @@ -0,0 +1,37 @@ +//// [declarationEmitDestructuring1.ts] +function foo([a, b, c]: [string, string, string]): void { } +function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void { } +function bar({a1, b1, c1}: { a1: number, b1: boolean, c1: string }): void { } +function baz({a2, b2: {b1, c1}}: { a2: number, b2: { b1: boolean, c1: string } }): void { } + + +//// [declarationEmitDestructuring1.js] +function foo(_a) { + var a = _a[0], b = _a[1], c = _a[2]; +} +function far(_a) { + var a = _a[0], b = _a[1][0], c = _a[2][0][0]; +} +function bar(_a) { + var a1 = _a.a1, b1 = _a.b1, c1 = _a.c1; +} +function baz(_a) { + var a2 = _a.a2, _b = _a.b2, b1 = _b.b1, c1 = _b.c1; +} + + +//// [declarationEmitDestructuring1.d.ts] +declare function foo([a, b, c]: [string, string, string]): void; +declare function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void; +declare function bar({a1, b1, c1}: { + a1: number; + b1: boolean; + c1: string; +}): void; +declare function baz({a2, b2: {b1, c1}}: { + a2: number; + b2: { + b1: boolean; + c1: string; + }; +}): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring1.types b/tests/baselines/reference/declarationEmitDestructuring1.types new file mode 100644 index 00000000000..6b22f25b54b --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring1.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/declarationEmitDestructuring1.ts === +function foo([a, b, c]: [string, string, string]): void { } +>foo : ([a, b, c]: [string, string, string]) => void +>a : string +>b : string +>c : string + +function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void { } +>far : ([a, [b], [[c]]]: [number, boolean[], string[][]]) => void +>a : number +>b : boolean +>c : string + +function bar({a1, b1, c1}: { a1: number, b1: boolean, c1: string }): void { } +>bar : ({a1, b1, c1}: { a1: number; b1: boolean; c1: string; }) => void +>a1 : number +>b1 : boolean +>c1 : string +>a1 : number +>b1 : boolean +>c1 : string + +function baz({a2, b2: {b1, c1}}: { a2: number, b2: { b1: boolean, c1: string } }): void { } +>baz : ({a2, b2: {b1, c1}}: { a2: number; b2: { b1: boolean; c1: string; }; }) => void +>a2 : number +>b2 : unknown +>b1 : boolean +>c1 : string +>a2 : number +>b2 : { b1: boolean; c1: string; } +>b1 : boolean +>c1 : string + diff --git a/tests/baselines/reference/declarationEmitDestructuring2.js b/tests/baselines/reference/declarationEmitDestructuring2.js new file mode 100644 index 00000000000..eeabbf1ff37 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring2.js @@ -0,0 +1,43 @@ +//// [declarationEmitDestructuring2.ts] +function f({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]} = { x: 10, y: [2, 4, 6, 8] }) { } +function g([a, b, c, d] = [1, 2, 3, 4]) { } +function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ } +function h1([a, [b], [[c]], {x = 10, y = [1, 2, 3], z: {a1, b1}}]){ } + +//// [declarationEmitDestructuring2.js] +function f(_a) { + var _b = _a === void 0 ? { x: 10, y: [2, 4, 6, 8] } : _a, _c = _b.x, x = _c === void 0 ? 10 : _c, _d = _b.y, _e = _d === void 0 ? [1, 2, 3, 4] : _d, a = _e[0], b = _e[1], c = _e[2], d = _e[3]; +} +function g(_a) { + var _b = _a === void 0 ? [1, 2, 3, 4] : _a, a = _b[0], b = _b[1], c = _b[2], d = _b[3]; +} +function h(_a) { + var a = _a[0], b = _a[1][0], c = _a[2][0][0], _b = _a[3], _c = _b.x, x = _c === void 0 ? 10 : _c, _d = _b.y, a = _d[0], b = _d[1], c = _d[2], _e = _b.z, a1 = _e.a1, b1 = _e.b1; +} +function h1(_a) { + var a = _a[0], b = _a[1][0], c = _a[2][0][0], _b = _a[3], _c = _b.x, x = _c === void 0 ? 10 : _c, _d = _b.y, y = _d === void 0 ? [1, 2, 3] : _d, _e = _b.z, a1 = _e.a1, b1 = _e.b1; +} + + +//// [declarationEmitDestructuring2.d.ts] +declare function f({x, y: [a, b, c, d]}?: { + x: number; + y: [number, number, number, number]; +}): void; +declare function g([a, b, c, d]?: [number, number, number, number]): void; +declare function h([a, [b], [[c]], {x, y: [a, b, c], z: {a1, b1}}]: [any, [any], [[any]], { + x?: number; + y: [any, any, any]; + z: { + a1: any; + b1: any; + }; +}]): void; +declare function h1([a, [b], [[c]], {x, y, z: {a1, b1}}]: [any, [any], [[any]], { + x?: number; + y?: number[]; + z: { + a1: any; + b1: any; + }; +}]): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring2.types b/tests/baselines/reference/declarationEmitDestructuring2.types new file mode 100644 index 00000000000..3368d4e72fd --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring2.types @@ -0,0 +1,49 @@ +=== tests/cases/compiler/declarationEmitDestructuring2.ts === +function f({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]} = { x: 10, y: [2, 4, 6, 8] }) { } +>f : ({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]}?: { x: number; y: [number, number, number, number]; }) => void +>x : number +>y : unknown +>a : number +>b : number +>c : number +>d : number +>[1, 2, 3, 4] : [number, number, number, number] +>{ x: 10, y: [2, 4, 6, 8] } : { x: number; y: [number, number, number, number]; } +>x : number +>y : [number, number, number, number] +>[2, 4, 6, 8] : [number, number, number, number] + +function g([a, b, c, d] = [1, 2, 3, 4]) { } +>g : ([a, b, c, d]?: [number, number, number, number]) => void +>a : number +>b : number +>c : number +>d : number +>[1, 2, 3, 4] : [number, number, number, number] + +function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ } +>h : ([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]: [any, [any], [[any]], { x?: number; y: [any, any, any]; z: { a1: any; b1: any; }; }]) => void +>a : any +>b : any +>c : any +>x : number +>y : unknown +>a : any +>b : any +>c : any +>z : unknown +>a1 : any +>b1 : any + +function h1([a, [b], [[c]], {x = 10, y = [1, 2, 3], z: {a1, b1}}]){ } +>h1 : ([a, [b], [[c]], {x = 10, y = [1, 2, 3], z: {a1, b1}}]: [any, [any], [[any]], { x?: number; y?: number[]; z: { a1: any; b1: any; }; }]) => void +>a : any +>b : any +>c : any +>x : number +>y : number[] +>[1, 2, 3] : number[] +>z : unknown +>a1 : any +>b1 : any + diff --git a/tests/baselines/reference/declarationEmitDestructuring3.js b/tests/baselines/reference/declarationEmitDestructuring3.js new file mode 100644 index 00000000000..b21c63203c8 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring3.js @@ -0,0 +1,18 @@ +//// [declarationEmitDestructuring3.ts] +function bar([x, z, ...w]) { } +function foo([x, ...y] = [1, "string", true]) { } + + + +//// [declarationEmitDestructuring3.js] +function bar(_a) { + var x = _a[0], z = _a[1], w = _a.slice(2); +} +function foo(_a) { + var _b = _a === void 0 ? [1, "string", true] : _a, x = _b[0], y = _b.slice(1); +} + + +//// [declarationEmitDestructuring3.d.ts] +declare function bar([x, z, ...w]: any[]): void; +declare function foo([x, ...y]?: (string | number | boolean)[]): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring3.types b/tests/baselines/reference/declarationEmitDestructuring3.types new file mode 100644 index 00000000000..57764f53eee --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring3.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/declarationEmitDestructuring3.ts === +function bar([x, z, ...w]) { } +>bar : ([x, z, ...w]: any[]) => void +>x : any +>z : any +>w : any[] + +function foo([x, ...y] = [1, "string", true]) { } +>foo : ([x, ...y]?: (string | number | boolean)[]) => void +>x : string | number | boolean +>y : (string | number | boolean)[] +>[1, "string", true] : (string | number | boolean)[] + + diff --git a/tests/baselines/reference/declarationEmitDestructuring4.js b/tests/baselines/reference/declarationEmitDestructuring4.js new file mode 100644 index 00000000000..f5d9df09175 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring4.js @@ -0,0 +1,42 @@ +//// [declarationEmitDestructuring4.ts] +// For an array binding pattern with empty elements, +// we will not make any modification and will emit +// the similar binding pattern users' have written +function baz([]) { } +function baz1([] = [1,2,3]) { } +function baz2([[]] = [[1,2,3]]) { } + +function baz3({}) { } +function baz4({} = { x: 10 }) { } + + + +//// [declarationEmitDestructuring4.js] +// For an array binding pattern with empty elements, +// we will not make any modification and will emit +// the similar binding pattern users' have written +function baz(_a) { + var ; +} +function baz1(_a) { + var _b = _a === void 0 ? [1, 2, 3] : _a; +} +function baz2(_a) { + var _b = (_a === void 0 ? [[1, 2, 3]] : _a)[0]; +} +function baz3(_a) { + var ; +} +function baz4(_a) { + var _b = _a === void 0 ? { x: 10 } : _a; +} + + +//// [declarationEmitDestructuring4.d.ts] +declare function baz([]: any[]): void; +declare function baz1([]?: number[]): void; +declare function baz2([[]]?: [number[]]): void; +declare function baz3({}: {}): void; +declare function baz4({}?: { + x: number; +}): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring4.types b/tests/baselines/reference/declarationEmitDestructuring4.types new file mode 100644 index 00000000000..6a90eda1702 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring4.types @@ -0,0 +1,25 @@ +=== tests/cases/compiler/declarationEmitDestructuring4.ts === +// For an array binding pattern with empty elements, +// we will not make any modification and will emit +// the similar binding pattern users' have written +function baz([]) { } +>baz : ([]: any[]) => void + +function baz1([] = [1,2,3]) { } +>baz1 : ([]?: number[]) => void +>[1,2,3] : number[] + +function baz2([[]] = [[1,2,3]]) { } +>baz2 : ([[]]?: [number[]]) => void +>[[1,2,3]] : [number[]] +>[1,2,3] : number[] + +function baz3({}) { } +>baz3 : ({}: {}) => void + +function baz4({} = { x: 10 }) { } +>baz4 : ({}?: { x: number; }) => void +>{ x: 10 } : { x: number; } +>x : number + + diff --git a/tests/baselines/reference/declarationEmitDestructuring5.js b/tests/baselines/reference/declarationEmitDestructuring5.js new file mode 100644 index 00000000000..32c9b5667d1 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring5.js @@ -0,0 +1,31 @@ +//// [declarationEmitDestructuring5.ts] +function baz([, z, , ]) { } +function foo([, b, ]: [any, any]): void { } +function bar([z, , , ]) { } +function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } +function bar2([,,z, , , ]) { } + +//// [declarationEmitDestructuring5.js] +function baz(_a) { + var z = _a[1]; +} +function foo(_a) { + var b = _a[1]; +} +function bar(_a) { + var z = _a[0]; +} +function bar1(_a) { + var _b = _a === void 0 ? [1, 3, 4, 6, 7] : _a, z = _b[0]; +} +function bar2(_a) { + var z = _a[2]; +} + + +//// [declarationEmitDestructuring5.d.ts] +declare function baz([ , z, , ]: [any, any, any]): void; +declare function foo([ , b, ]: [any, any]): void; +declare function bar([z, , , ]: [any, any, any]): void; +declare function bar1([z, , , ]?: [number, number, number, number, number]): void; +declare function bar2([ , , z, , , ]: [any, any, any, any, any]): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring5.types b/tests/baselines/reference/declarationEmitDestructuring5.types new file mode 100644 index 00000000000..375440bea0b --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuring5.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/declarationEmitDestructuring5.ts === +function baz([, z, , ]) { } +>baz : ([, z, , ]: [any, any, any]) => void +>z : any + +function foo([, b, ]: [any, any]): void { } +>foo : ([, b, ]: [any, any]) => void +>b : any + +function bar([z, , , ]) { } +>bar : ([z, , , ]: [any, any, any]) => void +>z : any + +function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } +>bar1 : ([z, , , ]?: [number, number, number, number, number]) => void +>z : number +>[1, 3, 4, 6, 7] : [number, number, number, number, number] + +function bar2([,,z, , , ]) { } +>bar2 : ([,,z, , , ]: [any, any, any, any, any]) => void +>z : any + diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.js new file mode 100644 index 00000000000..088bb4e849f --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.js @@ -0,0 +1,28 @@ +//// [declarationEmitDestructuringArrayPattern1.ts] + +var [] = [1, "hello"]; // Dont emit anything +var [x] = [1, "hello"]; // emit x: number +var [x1, y1] = [1, "hello"]; // emit x1: number, y1: string +var [, , z1] = [0, 1, 2]; // emit z1: number + +var a = [1, "hello"]; +var [x2] = a; // emit x2: number | string +var [x3, y3, z3] = a; // emit x3, y3, z3 + +//// [declarationEmitDestructuringArrayPattern1.js] +var _a = [1, "hello"]; // Dont emit anything +var x = ([1, "hello"])[0]; // emit x: number +var _b = [1, "hello"], x1 = _b[0], y1 = _b[1]; // emit x1: number, y1: string +var _c = [0, 1, 2], z1 = _c[2]; // emit z1: number +var a = [1, "hello"]; +var x2 = a[0]; // emit x2: number | string +var x3 = a[0], y3 = a[1], z3 = a[2]; // emit x3, y3, z3 + + +//// [declarationEmitDestructuringArrayPattern1.d.ts] +declare var x: number; +declare var x1: number, y1: string; +declare var z1: number; +declare var a: (string | number)[]; +declare var x2: string | number; +declare var x3: string | number, y3: string | number, z3: string | number; diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types new file mode 100644 index 00000000000..9f6f4c9857d --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types @@ -0,0 +1,32 @@ +=== tests/cases/compiler/declarationEmitDestructuringArrayPattern1.ts === + +var [] = [1, "hello"]; // Dont emit anything +>[1, "hello"] : (string | number)[] + +var [x] = [1, "hello"]; // emit x: number +>x : number +>[1, "hello"] : [number, string] + +var [x1, y1] = [1, "hello"]; // emit x1: number, y1: string +>x1 : number +>y1 : string +>[1, "hello"] : [number, string] + +var [, , z1] = [0, 1, 2]; // emit z1: number +>z1 : number +>[0, 1, 2] : [number, number, number] + +var a = [1, "hello"]; +>a : (string | number)[] +>[1, "hello"] : (string | number)[] + +var [x2] = a; // emit x2: number | string +>x2 : string | number +>a : (string | number)[] + +var [x3, y3, z3] = a; // emit x3, y3, z3 +>x3 : string | number +>y3 : string | number +>z3 : string | number +>a : (string | number)[] + diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.js new file mode 100644 index 00000000000..818b3a6f7a9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.js @@ -0,0 +1,31 @@ +//// [declarationEmitDestructuringArrayPattern2.ts] +var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; + +var [x11 = 0, y11 = ""] = [1, "hello"]; +var [a11, b11, c11] = []; + +var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello", { x12: 5, y12: true }]]; + +var [x13, y13] = [1, "hello"]; +var [a3, b3] = [[x13, y13], { x: x13, y: y13 }]; + + +//// [declarationEmitDestructuringArrayPattern2.js] +var _a = [1, ["hello", [true]]], x10 = _a[0], _b = _a[1], y10 = _b[0], z10 = _b[1][0]; +var _c = [1, "hello"], _d = _c[0], x11 = _d === void 0 ? 0 : _d, _e = _c[1], y11 = _e === void 0 ? "" : _e; +var _f = [], a11 = _f[0], b11 = _f[1], c11 = _f[2]; +var _g = [1, ["hello", { x12: 5, y12: true }]], a2 = _g[0], _h = _g[1], _j = _h === void 0 ? ["abc", { x12: 10, y12: false }] : _h, b2 = _j[0], _k = _j[1], x12 = _k.x12, c2 = _k.y12; +var _l = [1, "hello"], x13 = _l[0], y13 = _l[1]; +var _m = [[x13, y13], { x: x13, y: y13 }], a3 = _m[0], b3 = _m[1]; + + +//// [declarationEmitDestructuringArrayPattern2.d.ts] +declare var x10: number, y10: string, z10: boolean; +declare var x11: number, y11: string; +declare var a11: any, b11: any, c11: any; +declare var a2: number, b2: string, x12: number, c2: boolean; +declare var x13: number, y13: string; +declare var a3: (string | number)[], b3: { + x: number; + y: string; +}; diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types new file mode 100644 index 00000000000..2b40a388e3b --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types @@ -0,0 +1,54 @@ +=== tests/cases/compiler/declarationEmitDestructuringArrayPattern2.ts === +var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; +>x10 : number +>y10 : string +>z10 : boolean +>[1, ["hello", [true]]] : [number, [string, [boolean]]] +>["hello", [true]] : [string, [boolean]] +>[true] : [boolean] + +var [x11 = 0, y11 = ""] = [1, "hello"]; +>x11 : number +>y11 : string +>[1, "hello"] : [number, string] + +var [a11, b11, c11] = []; +>a11 : any +>b11 : any +>c11 : any +>[] : undefined[] + +var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello", { x12: 5, y12: true }]]; +>a2 : number +>b2 : string +>x12 : number +>y12 : unknown +>c2 : boolean +>["abc", { x12: 10, y12: false }] : [string, { x12: number; y12: boolean; }] +>{ x12: 10, y12: false } : { x12: number; y12: boolean; } +>x12 : number +>y12 : boolean +>[1, ["hello", { x12: 5, y12: true }]] : [number, [string, { x12: number; y12: boolean; }]] +>["hello", { x12: 5, y12: true }] : [string, { x12: number; y12: boolean; }] +>{ x12: 5, y12: true } : { x12: number; y12: boolean; } +>x12 : number +>y12 : boolean + +var [x13, y13] = [1, "hello"]; +>x13 : number +>y13 : string +>[1, "hello"] : [number, string] + +var [a3, b3] = [[x13, y13], { x: x13, y: y13 }]; +>a3 : (string | number)[] +>b3 : { x: number; y: string; } +>[[x13, y13], { x: x13, y: y13 }] : [(string | number)[], { x: number; y: string; }] +>[x13, y13] : (string | number)[] +>x13 : number +>y13 : string +>{ x: x13, y: y13 } : { x: number; y: string; } +>x : number +>x13 : number +>y : string +>y13 : string + diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.js new file mode 100644 index 00000000000..84ab9f242e9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.js @@ -0,0 +1,17 @@ +//// [declarationEmitDestructuringArrayPattern3.ts] +module M { + export var [a, b] = [1, 2]; +} + +//// [declarationEmitDestructuringArrayPattern3.js] +var M; +(function (M) { + _a = [1, 2], M.a = _a[0], M.b = _a[1]; + var _a; +})(M || (M = {})); + + +//// [declarationEmitDestructuringArrayPattern3.d.ts] +declare module M { + var a: number, b: number; +} diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types new file mode 100644 index 00000000000..4852a7e37fb --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/declarationEmitDestructuringArrayPattern3.ts === +module M { +>M : typeof M + + export var [a, b] = [1, 2]; +>a : number +>b : number +>[1, 2] : [number, number] +} diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js new file mode 100644 index 00000000000..f19a4a840bf --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js @@ -0,0 +1,31 @@ +//// [declarationEmitDestructuringArrayPattern4.ts] +var [...a5] = [1, 2, 3]; +var [x14, ...a6] = [1, 2, 3]; +var [x15, y15, ...a7] = [1, 2, 3]; +var [x16, y16, z16, ...a8] = [1, 2, 3]; + +var [...a9] = [1, "hello", true]; +var [x17, ...a10] = [1, "hello", true]; +var [x18, y18, ...a12] = [1, "hello", true]; +var [x19, y19, z19, ...a13] = [1, "hello", true]; + +//// [declarationEmitDestructuringArrayPattern4.js] +var _a = [1, 2, 3], a5 = _a.slice(0); +var _b = [1, 2, 3], x14 = _b[0], a6 = _b.slice(1); +var _c = [1, 2, 3], x15 = _c[0], y15 = _c[1], a7 = _c.slice(2); +var _d = [1, 2, 3], x16 = _d[0], y16 = _d[1], z16 = _d[2], a8 = _d.slice(3); +var _e = [1, "hello", true], a9 = _e.slice(0); +var _f = [1, "hello", true], x17 = _f[0], a10 = _f.slice(1); +var _g = [1, "hello", true], x18 = _g[0], y18 = _g[1], a12 = _g.slice(2); +var _h = [1, "hello", true], x19 = _h[0], y19 = _h[1], z19 = _h[2], a13 = _h.slice(3); + + +//// [declarationEmitDestructuringArrayPattern4.d.ts] +declare var a5: number[]; +declare var x14: number, a6: number[]; +declare var x15: number, y15: number, a7: number[]; +declare var x16: number, y16: number, z16: number, a8: number[]; +declare var a9: (string | number | boolean)[]; +declare var x17: string | number | boolean, a10: (string | number | boolean)[]; +declare var x18: string | number | boolean, y18: string | number | boolean, a12: (string | number | boolean)[]; +declare var x19: string | number | boolean, y19: string | number | boolean, z19: string | number | boolean, a13: (string | number | boolean)[]; diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types new file mode 100644 index 00000000000..d6d0fa758d7 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types @@ -0,0 +1,45 @@ +=== tests/cases/compiler/declarationEmitDestructuringArrayPattern4.ts === +var [...a5] = [1, 2, 3]; +>a5 : number[] +>[1, 2, 3] : number[] + +var [x14, ...a6] = [1, 2, 3]; +>x14 : number +>a6 : number[] +>[1, 2, 3] : number[] + +var [x15, y15, ...a7] = [1, 2, 3]; +>x15 : number +>y15 : number +>a7 : number[] +>[1, 2, 3] : number[] + +var [x16, y16, z16, ...a8] = [1, 2, 3]; +>x16 : number +>y16 : number +>z16 : number +>a8 : number[] +>[1, 2, 3] : number[] + +var [...a9] = [1, "hello", true]; +>a9 : (string | number | boolean)[] +>[1, "hello", true] : (string | number | boolean)[] + +var [x17, ...a10] = [1, "hello", true]; +>x17 : string | number | boolean +>a10 : (string | number | boolean)[] +>[1, "hello", true] : (string | number | boolean)[] + +var [x18, y18, ...a12] = [1, "hello", true]; +>x18 : string | number | boolean +>y18 : string | number | boolean +>a12 : (string | number | boolean)[] +>[1, "hello", true] : (string | number | boolean)[] + +var [x19, y19, z19, ...a13] = [1, "hello", true]; +>x19 : string | number | boolean +>y19 : string | number | boolean +>z19 : string | number | boolean +>a13 : (string | number | boolean)[] +>[1, "hello", true] : (string | number | boolean)[] + diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.js new file mode 100644 index 00000000000..820864cc25a --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.js @@ -0,0 +1,15 @@ +//// [declarationEmitDestructuringArrayPattern5.ts] +var [, , z] = [1, 2, 4]; +var [, a, , ] = [3, 4, 5]; +var [, , [, b, ]] = [3,5,[0, 1]]; + +//// [declarationEmitDestructuringArrayPattern5.js] +var _a = [1, 2, 4], z = _a[2]; +var _b = [3, 4, 5], a = _b[1]; +var _c = [3, 5, [0, 1]], _d = _c[2], b = _d[1]; + + +//// [declarationEmitDestructuringArrayPattern5.d.ts] +declare var z: number; +declare var a: number; +declare var b: number; diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types new file mode 100644 index 00000000000..6352917682e --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/declarationEmitDestructuringArrayPattern5.ts === +var [, , z] = [1, 2, 4]; +>z : number +>[1, 2, 4] : [number, number, number] + +var [, a, , ] = [3, 4, 5]; +>a : number +>[3, 4, 5] : [number, number, number] + +var [, , [, b, ]] = [3,5,[0, 1]]; +>b : number +>[3,5,[0, 1]] : [number, number, [number, number]] +>[0, 1] : [number, number] + diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.js b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.js new file mode 100644 index 00000000000..d94da79ad9a --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.js @@ -0,0 +1,64 @@ +//// [declarationEmitDestructuringObjectLiteralPattern.ts] + +var { } = { x: 5, y: "hello" }; +var { x4 } = { x4: 5, y4: "hello" }; +var { y5 } = { x5: 5, y5: "hello" }; +var { x6, y6 } = { x6: 5, y6: "hello" }; +var { x7: a1 } = { x7: 5, y7: "hello" }; +var { y8: b1 } = { x8: 5, y8: "hello" }; +var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; + +var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; + +function f15() { + var a4 = "hello"; + var b4 = 1; + var c4 = true; + return { a4, b4, c4 }; +} +var { a4, b4, c4 } = f15(); + +module m { + export var { a4, b4, c4 } = f15(); +} + +//// [declarationEmitDestructuringObjectLiteralPattern.js] +var _a = { x: 5, y: "hello" }; +var x4 = ({ x4: 5, y4: "hello" }).x4; +var y5 = ({ x5: 5, y5: "hello" }).y5; +var _b = { x6: 5, y6: "hello" }, x6 = _b.x6, y6 = _b.y6; +var a1 = ({ x7: 5, y7: "hello" }).x7; +var b1 = ({ x8: 5, y8: "hello" }).y8; +var _c = { x9: 5, y9: "hello" }, a2 = _c.x9, b2 = _c.y9; +var _d = { a: 1, b: { a: "hello", b: { a: true } } }, x11 = _d.a, _e = _d.b, y11 = _e.a, z11 = _e.b.a; +function f15() { + var a4 = "hello"; + var b4 = 1; + var c4 = true; + return { a4: a4, b4: b4, c4: c4 }; +} +var _f = f15(), a4 = _f.a4, b4 = _f.b4, c4 = _f.c4; +var m; +(function (m) { + _a = f15(), m.a4 = _a.a4, m.b4 = _a.b4, m.c4 = _a.c4; + var _a; +})(m || (m = {})); + + +//// [declarationEmitDestructuringObjectLiteralPattern.d.ts] +declare var x4: number; +declare var y5: string; +declare var x6: number, y6: string; +declare var a1: number; +declare var b1: string; +declare var a2: number, b2: string; +declare var x11: number, y11: string, z11: boolean; +declare function f15(): { + a4: string; + b4: number; + c4: boolean; +}; +declare var a4: string, b4: number, c4: boolean; +declare module m { + var a4: string, b4: number, c4: boolean; +} diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types new file mode 100644 index 00000000000..b3c422e4958 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types @@ -0,0 +1,102 @@ +=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern.ts === + +var { } = { x: 5, y: "hello" }; +>{ x: 5, y: "hello" } : { x: number; y: string; } +>x : number +>y : string + +var { x4 } = { x4: 5, y4: "hello" }; +>x4 : number +>{ x4: 5, y4: "hello" } : { x4: number; y4: string; } +>x4 : number +>y4 : string + +var { y5 } = { x5: 5, y5: "hello" }; +>y5 : string +>{ x5: 5, y5: "hello" } : { x5: number; y5: string; } +>x5 : number +>y5 : string + +var { x6, y6 } = { x6: 5, y6: "hello" }; +>x6 : number +>y6 : string +>{ x6: 5, y6: "hello" } : { x6: number; y6: string; } +>x6 : number +>y6 : string + +var { x7: a1 } = { x7: 5, y7: "hello" }; +>x7 : unknown +>a1 : number +>{ x7: 5, y7: "hello" } : { x7: number; y7: string; } +>x7 : number +>y7 : string + +var { y8: b1 } = { x8: 5, y8: "hello" }; +>y8 : unknown +>b1 : string +>{ x8: 5, y8: "hello" } : { x8: number; y8: string; } +>x8 : number +>y8 : string + +var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; +>x9 : unknown +>a2 : number +>y9 : unknown +>b2 : string +>{ x9: 5, y9: "hello" } : { x9: number; y9: string; } +>x9 : number +>y9 : string + +var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; +>a : unknown +>x11 : number +>b : unknown +>a : unknown +>y11 : string +>b : unknown +>a : unknown +>z11 : boolean +>{ a: 1, b: { a: "hello", b: { a: true } } } : { a: number; b: { a: string; b: { a: boolean; }; }; } +>a : number +>b : { a: string; b: { a: boolean; }; } +>{ a: "hello", b: { a: true } } : { a: string; b: { a: boolean; }; } +>a : string +>b : { a: boolean; } +>{ a: true } : { a: boolean; } +>a : boolean + +function f15() { +>f15 : () => { a4: string; b4: number; c4: boolean; } + + var a4 = "hello"; +>a4 : string + + var b4 = 1; +>b4 : number + + var c4 = true; +>c4 : boolean + + return { a4, b4, c4 }; +>{ a4, b4, c4 } : { a4: string; b4: number; c4: boolean; } +>a4 : string +>b4 : number +>c4 : boolean +} +var { a4, b4, c4 } = f15(); +>a4 : string +>b4 : number +>c4 : boolean +>f15() : { a4: string; b4: number; c4: boolean; } +>f15 : () => { a4: string; b4: number; c4: boolean; } + +module m { +>m : typeof m + + export var { a4, b4, c4 } = f15(); +>a4 : string +>b4 : number +>c4 : boolean +>f15() : { a4: string; b4: number; c4: boolean; } +>f15 : () => { a4: string; b4: number; c4: boolean; } +} diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.js b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.js new file mode 100644 index 00000000000..2c14e743039 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.js @@ -0,0 +1,27 @@ +//// [declarationEmitDestructuringObjectLiteralPattern1.ts] + +var { } = { x: 5, y: "hello" }; +var { x4 } = { x4: 5, y4: "hello" }; +var { y5 } = { x5: 5, y5: "hello" }; +var { x6, y6 } = { x6: 5, y6: "hello" }; +var { x7: a1 } = { x7: 5, y7: "hello" }; +var { y8: b1 } = { x8: 5, y8: "hello" }; +var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; + +//// [declarationEmitDestructuringObjectLiteralPattern1.js] +var _a = { x: 5, y: "hello" }; +var x4 = ({ x4: 5, y4: "hello" }).x4; +var y5 = ({ x5: 5, y5: "hello" }).y5; +var _b = { x6: 5, y6: "hello" }, x6 = _b.x6, y6 = _b.y6; +var a1 = ({ x7: 5, y7: "hello" }).x7; +var b1 = ({ x8: 5, y8: "hello" }).y8; +var _c = { x9: 5, y9: "hello" }, a2 = _c.x9, b2 = _c.y9; + + +//// [declarationEmitDestructuringObjectLiteralPattern1.d.ts] +declare var x4: number; +declare var y5: string; +declare var x6: number, y6: string; +declare var a1: number; +declare var b1: string; +declare var a2: number, b2: string; diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types new file mode 100644 index 00000000000..cc2094c68f4 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types @@ -0,0 +1,49 @@ +=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern1.ts === + +var { } = { x: 5, y: "hello" }; +>{ x: 5, y: "hello" } : { x: number; y: string; } +>x : number +>y : string + +var { x4 } = { x4: 5, y4: "hello" }; +>x4 : number +>{ x4: 5, y4: "hello" } : { x4: number; y4: string; } +>x4 : number +>y4 : string + +var { y5 } = { x5: 5, y5: "hello" }; +>y5 : string +>{ x5: 5, y5: "hello" } : { x5: number; y5: string; } +>x5 : number +>y5 : string + +var { x6, y6 } = { x6: 5, y6: "hello" }; +>x6 : number +>y6 : string +>{ x6: 5, y6: "hello" } : { x6: number; y6: string; } +>x6 : number +>y6 : string + +var { x7: a1 } = { x7: 5, y7: "hello" }; +>x7 : unknown +>a1 : number +>{ x7: 5, y7: "hello" } : { x7: number; y7: string; } +>x7 : number +>y7 : string + +var { y8: b1 } = { x8: 5, y8: "hello" }; +>y8 : unknown +>b1 : string +>{ x8: 5, y8: "hello" } : { x8: number; y8: string; } +>x8 : number +>y8 : string + +var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; +>x9 : unknown +>a2 : number +>y9 : unknown +>b2 : string +>{ x9: 5, y9: "hello" } : { x9: number; y9: string; } +>x9 : number +>y9 : string + diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.js b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.js new file mode 100644 index 00000000000..7e5a3d9d2fa --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.js @@ -0,0 +1,43 @@ +//// [declarationEmitDestructuringObjectLiteralPattern2.ts] + +var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; + +function f15() { + var a4 = "hello"; + var b4 = 1; + var c4 = true; + return { a4, b4, c4 }; +} +var { a4, b4, c4 } = f15(); + +module m { + export var { a4, b4, c4 } = f15(); +} + +//// [declarationEmitDestructuringObjectLiteralPattern2.js] +var _a = { a: 1, b: { a: "hello", b: { a: true } } }, x11 = _a.a, _b = _a.b, y11 = _b.a, z11 = _b.b.a; +function f15() { + var a4 = "hello"; + var b4 = 1; + var c4 = true; + return { a4: a4, b4: b4, c4: c4 }; +} +var _c = f15(), a4 = _c.a4, b4 = _c.b4, c4 = _c.c4; +var m; +(function (m) { + _a = f15(), m.a4 = _a.a4, m.b4 = _a.b4, m.c4 = _a.c4; + var _a; +})(m || (m = {})); + + +//// [declarationEmitDestructuringObjectLiteralPattern2.d.ts] +declare var x11: number, y11: string, z11: boolean; +declare function f15(): { + a4: string; + b4: number; + c4: boolean; +}; +declare var a4: string, b4: number, c4: boolean; +declare module m { + var a4: string, b4: number, c4: boolean; +} diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types new file mode 100644 index 00000000000..68394686e31 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types @@ -0,0 +1,55 @@ +=== tests/cases/compiler/declarationEmitDestructuringObjectLiteralPattern2.ts === + +var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; +>a : unknown +>x11 : number +>b : unknown +>a : unknown +>y11 : string +>b : unknown +>a : unknown +>z11 : boolean +>{ a: 1, b: { a: "hello", b: { a: true } } } : { a: number; b: { a: string; b: { a: boolean; }; }; } +>a : number +>b : { a: string; b: { a: boolean; }; } +>{ a: "hello", b: { a: true } } : { a: string; b: { a: boolean; }; } +>a : string +>b : { a: boolean; } +>{ a: true } : { a: boolean; } +>a : boolean + +function f15() { +>f15 : () => { a4: string; b4: number; c4: boolean; } + + var a4 = "hello"; +>a4 : string + + var b4 = 1; +>b4 : number + + var c4 = true; +>c4 : boolean + + return { a4, b4, c4 }; +>{ a4, b4, c4 } : { a4: string; b4: number; c4: boolean; } +>a4 : string +>b4 : number +>c4 : boolean +} +var { a4, b4, c4 } = f15(); +>a4 : string +>b4 : number +>c4 : boolean +>f15() : { a4: string; b4: number; c4: boolean; } +>f15 : () => { a4: string; b4: number; c4: boolean; } + +module m { +>m : typeof m + + export var { a4, b4, c4 } = f15(); +>a4 : string +>b4 : number +>c4 : boolean +>f15() : { a4: string; b4: number; c4: boolean; } +>f15 : () => { a4: string; b4: number; c4: boolean; } +} diff --git a/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.js b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.js new file mode 100644 index 00000000000..a3cdee31222 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.js @@ -0,0 +1,33 @@ +//// [declarationEmitDestructuringOptionalBindingParametersInOverloads.ts] + +function foo([x, y, z] ?: [string, number, boolean]); +function foo(...rest: any[]) { +} + +function foo2( { x, y, z }?: { x: string; y: number; z: boolean }); +function foo2(...rest: any[]) { + +} + +//// [declarationEmitDestructuringOptionalBindingParametersInOverloads.js] +function foo() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +} +function foo2() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +} + + +//// [declarationEmitDestructuringOptionalBindingParametersInOverloads.d.ts] +declare function foo([x, y, z]?: [string, number, boolean]): any; +declare function foo2({x, y, z}?: { + x: string; + y: number; + z: boolean; +}): any; diff --git a/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types new file mode 100644 index 00000000000..1c75466f0c3 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types @@ -0,0 +1,27 @@ +=== tests/cases/compiler/declarationEmitDestructuringOptionalBindingParametersInOverloads.ts === + +function foo([x, y, z] ?: [string, number, boolean]); +>foo : ([x, y, z]?: [string, number, boolean]) => any +>x : string +>y : number +>z : boolean + +function foo(...rest: any[]) { +>foo : ([x, y, z]?: [string, number, boolean]) => any +>rest : any[] +} + +function foo2( { x, y, z }?: { x: string; y: number; z: boolean }); +>foo2 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any +>x : string +>y : number +>z : boolean +>x : string +>y : number +>z : boolean + +function foo2(...rest: any[]) { +>foo2 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any +>rest : any[] + +} diff --git a/tests/baselines/reference/declarationEmitDestructuringParameterProperties.errors.txt b/tests/baselines/reference/declarationEmitDestructuringParameterProperties.errors.txt new file mode 100644 index 00000000000..83785e86f65 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringParameterProperties.errors.txt @@ -0,0 +1,28 @@ +tests/cases/compiler/declarationEmitDestructuringParameterProperties.ts(2,17): error TS1187: A parameter property may not be a binding pattern. +tests/cases/compiler/declarationEmitDestructuringParameterProperties.ts(8,17): error TS1187: A parameter property may not be a binding pattern. +tests/cases/compiler/declarationEmitDestructuringParameterProperties.ts(14,17): error TS1187: A parameter property may not be a binding pattern. + + +==== tests/cases/compiler/declarationEmitDestructuringParameterProperties.ts (3 errors) ==== + class C1 { + constructor(public [x, y, z]: string[]) { + ~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1187: A parameter property may not be a binding pattern. + } + } + + type TupleType1 =[string, number, boolean]; + class C2 { + constructor(public [x, y, z]: TupleType1) { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1187: A parameter property may not be a binding pattern. + } + } + + type ObjType1 = { x: number; y: string; z: boolean } + class C3 { + constructor(public { x, y, z }: ObjType1) { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1187: A parameter property may not be a binding pattern. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringParameterProperties.js b/tests/baselines/reference/declarationEmitDestructuringParameterProperties.js new file mode 100644 index 00000000000..a98620c8529 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringParameterProperties.js @@ -0,0 +1,61 @@ +//// [declarationEmitDestructuringParameterProperties.ts] +class C1 { + constructor(public [x, y, z]: string[]) { + } +} + +type TupleType1 =[string, number, boolean]; +class C2 { + constructor(public [x, y, z]: TupleType1) { + } +} + +type ObjType1 = { x: number; y: string; z: boolean } +class C3 { + constructor(public { x, y, z }: ObjType1) { + } +} + +//// [declarationEmitDestructuringParameterProperties.js] +var C1 = (function () { + function C1(_a) { + var x = _a[0], y = _a[1], z = _a[2]; + this.[x, y, z] = [x, y, z]; + } + return C1; +})(); +var C2 = (function () { + function C2(_a) { + var x = _a[0], y = _a[1], z = _a[2]; + this.[x, y, z] = [x, y, z]; + } + return C2; +})(); +var C3 = (function () { + function C3(_a) { + var x = _a.x, y = _a.y, z = _a.z; + this.{ x, y, z } = { x, y, z }; + } + return C3; +})(); + + +//// [declarationEmitDestructuringParameterProperties.d.ts] +declare class C1 { + x: string, y: string, z: string; + constructor([x, y, z]: string[]); +} +declare type TupleType1 = [string, number, boolean]; +declare class C2 { + x: string, y: number, z: boolean; + constructor([x, y, z]: TupleType1); +} +declare type ObjType1 = { + x: number; + y: string; + z: boolean; +}; +declare class C3 { + x: number, y: string, z: boolean; + constructor({x, y, z}: ObjType1); +} diff --git a/tests/baselines/reference/declarationEmitDestructuringPrivacyError.errors.txt b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.errors.txt new file mode 100644 index 00000000000..e464b96a8bf --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/declarationEmitDestructuringPrivacyError.ts(4,20): error TS4025: Exported variable 'y' has or is using private name 'c'. + + +==== tests/cases/compiler/declarationEmitDestructuringPrivacyError.ts (1 errors) ==== + module m { + class c { + } + export var [x, y, z] = [10, new c(), 30]; + ~ +!!! error TS4025: Exported variable 'y' has or is using private name 'c'. + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js new file mode 100644 index 00000000000..fa3cae9478b --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringPrivacyError.js @@ -0,0 +1,18 @@ +//// [declarationEmitDestructuringPrivacyError.ts] +module m { + class c { + } + export var [x, y, z] = [10, new c(), 30]; +} + +//// [declarationEmitDestructuringPrivacyError.js] +var m; +(function (m) { + var c = (function () { + function c() { + } + return c; + })(); + _a = [10, new c(), 30], m.x = _a[0], m.y = _a[1], m.z = _a[2]; + var _a; +})(m || (m = {})); diff --git a/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.errors.txt b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.errors.txt new file mode 100644 index 00000000000..7b8a70ae8f1 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/declarationEmitDestructuringWithOptionalBindingParameters.ts(1,14): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. +tests/cases/compiler/declarationEmitDestructuringWithOptionalBindingParameters.ts(3,16): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. + + +==== tests/cases/compiler/declarationEmitDestructuringWithOptionalBindingParameters.ts (2 errors) ==== + function foo([x,y,z]?: [string, number, boolean]) { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2463: A binding pattern parameter cannot be optional in an implementation signature. + } + function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2463: A binding pattern parameter cannot be optional in an implementation signature. + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.js b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.js new file mode 100644 index 00000000000..5c7f4d2cec5 --- /dev/null +++ b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.js @@ -0,0 +1,22 @@ +//// [declarationEmitDestructuringWithOptionalBindingParameters.ts] +function foo([x,y,z]?: [string, number, boolean]) { +} +function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) { +} + +//// [declarationEmitDestructuringWithOptionalBindingParameters.js] +function foo(_a) { + var x = _a[0], y = _a[1], z = _a[2]; +} +function foo1(_a) { + var x = _a.x, y = _a.y, z = _a.z; +} + + +//// [declarationEmitDestructuringWithOptionalBindingParameters.d.ts] +declare function foo([x, y, z]?: [string, number, boolean]): void; +declare function foo1({x, y, z}?: { + x: string; + y: number; + z: boolean; +}): void; diff --git a/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.js b/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.js new file mode 100644 index 00000000000..9b580bcd7a4 --- /dev/null +++ b/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.js @@ -0,0 +1,39 @@ +//// [declarationEmitImportInExportAssignmentModule.ts] + +module m { + export module c { + export class c { + } + } + import x = c; + export var a: typeof x; +} +export = m; + +//// [declarationEmitImportInExportAssignmentModule.js] +var m; +(function (m) { + var c; + (function (c_1) { + var c = (function () { + function c() { + } + return c; + })(); + c_1.c = c; + })(c = m.c || (m.c = {})); + m.a; +})(m || (m = {})); +module.exports = m; + + +//// [declarationEmitImportInExportAssignmentModule.d.ts] +declare module m { + module c { + class c { + } + } + import x = c; + var a: typeof x; +} +export = m; diff --git a/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.types b/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.types new file mode 100644 index 00000000000..23176a0abe2 --- /dev/null +++ b/tests/baselines/reference/declarationEmitImportInExportAssignmentModule.types @@ -0,0 +1,23 @@ +=== tests/cases/compiler/declarationEmitImportInExportAssignmentModule.ts === + +module m { +>m : typeof m + + export module c { +>c : typeof x + + export class c { +>c : c + } + } + import x = c; +>x : typeof x +>c : typeof x + + export var a: typeof x; +>a : typeof x +>x : typeof x +} +export = m; +>m : typeof m + diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.types b/tests/baselines/reference/declarationEmit_nameConflicts.types index f07a7fbb2ab..e38c831493d 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts.types +++ b/tests/baselines/reference/declarationEmit_nameConflicts.types @@ -119,13 +119,13 @@ export module M.Q { } export interface b extends M.b { } // ok >b : b ->M : unknown +>M : typeof M >b : M.C export interface I extends M.c.I { } // ok >I : I ->M : unknown ->c : unknown +>M : typeof M +>c : typeof M.N >I : M.c.I export module c { @@ -133,8 +133,8 @@ export module M.Q { export interface I extends M.c.I { } // ok >I : I ->M : unknown ->c : unknown +>M : typeof M +>c : typeof M.N >I : M.c.I } } diff --git a/tests/baselines/reference/declarationInAmbientContext.errors.txt b/tests/baselines/reference/declarationInAmbientContext.errors.txt deleted file mode 100644 index 338da990a0b..00000000000 --- a/tests/baselines/reference/declarationInAmbientContext.errors.txt +++ /dev/null @@ -1,12 +0,0 @@ -tests/cases/conformance/es6/destructuring/declarationInAmbientContext.ts(1,13): error TS1183: Destructuring declarations are not allowed in ambient contexts. -tests/cases/conformance/es6/destructuring/declarationInAmbientContext.ts(2,13): error TS1183: Destructuring declarations are not allowed in ambient contexts. - - -==== tests/cases/conformance/es6/destructuring/declarationInAmbientContext.ts (2 errors) ==== - declare var [a, b]; // Error, destructuring declaration not allowed in ambient context - ~~~~~~ -!!! error TS1183: Destructuring declarations are not allowed in ambient contexts. - declare var {c, d}; // Error, destructuring declaration not allowed in ambient context - ~~~~~~ -!!! error TS1183: Destructuring declarations are not allowed in ambient contexts. - \ No newline at end of file diff --git a/tests/baselines/reference/declarationInAmbientContext.types b/tests/baselines/reference/declarationInAmbientContext.types new file mode 100644 index 00000000000..ecdd3b7c7eb --- /dev/null +++ b/tests/baselines/reference/declarationInAmbientContext.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/es6/destructuring/declarationInAmbientContext.ts === +declare var [a, b]; // Error, destructuring declaration not allowed in ambient context +>a : any +>b : any + +declare var {c, d}; // Error, destructuring declaration not allowed in ambient context +>c : any +>d : any + diff --git a/tests/baselines/reference/declarationsAndAssignments.errors.txt b/tests/baselines/reference/declarationsAndAssignments.errors.txt index 4eefc2fcc23..828083e7687 100644 --- a/tests/baselines/reference/declarationsAndAssignments.errors.txt +++ b/tests/baselines/reference/declarationsAndAssignments.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(5,16): error TS2460: Type '[number, string]' has no property '2'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(5,16): error TS2493: Tuple type '[number, string]' with length '2' cannot be assigned to tuple with length '3'. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(56,17): error TS2322: Type 'number' is not assignable to type 'string'. -tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,13): error TS2460: Type '[number]' has no property '1'. -tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,16): error TS2460: Type '[number]' has no property '2'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,13): error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. +tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(63,16): error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(67,9): error TS2461: Type '{ [x: number]: undefined; }' is not an array type. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(68,9): error TS2461: Type '{ [x: number]: number; 0: number; 1: number; }' is not an array type. tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(73,11): error TS2459: Type '{}' has no property 'a' and no string index signature. @@ -25,7 +25,7 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): var [x, y] = [1, "hello"]; var [x, y, z] = [1, "hello"]; // Error ~ -!!! error TS2460: Type '[number, string]' has no property '2'. +!!! error TS2493: Tuple type '[number, string]' with length '2' cannot be assigned to tuple with length '3'. var [,, z] = [0, 1, 2]; var x: number; var y: string; @@ -87,9 +87,9 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9): var [a, b, c] = []; // Ok, [] is an array var [d, e, f] = [1]; // Error, [1] is a tuple ~ -!!! error TS2460: Type '[number]' has no property '1'. +!!! error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. ~ -!!! error TS2460: Type '[number]' has no property '2'. +!!! error TS2493: Tuple type '[number]' with length '1' cannot be assigned to tuple with length '3'. } function f9() { diff --git a/tests/baselines/reference/declareDottedExtend.types b/tests/baselines/reference/declareDottedExtend.types index 5efcea51b26..6b529b5e00d 100644 --- a/tests/baselines/reference/declareDottedExtend.types +++ b/tests/baselines/reference/declareDottedExtend.types @@ -14,12 +14,12 @@ import ab = A.B; class D extends ab.C{ } >D : D ->ab : unknown +>ab : typeof ab >C : ab.C class E extends A.B.C{ } >E : E ->A : unknown ->B : unknown +>A : typeof A +>B : typeof ab >C : ab.C diff --git a/tests/baselines/reference/declareModifierOnImport1.errors.txt b/tests/baselines/reference/declareModifierOnImport1.errors.txt index e78b4973aa1..776f2c07bcb 100644 --- a/tests/baselines/reference/declareModifierOnImport1.errors.txt +++ b/tests/baselines/reference/declareModifierOnImport1.errors.txt @@ -1,10 +1,10 @@ tests/cases/compiler/declareModifierOnImport1.ts(1,1): error TS1079: A 'declare' modifier cannot be used with an import declaration. -tests/cases/compiler/declareModifierOnImport1.ts(1,1): error TS2304: Cannot find name 'b'. +tests/cases/compiler/declareModifierOnImport1.ts(1,20): error TS2304: Cannot find name 'b'. ==== tests/cases/compiler/declareModifierOnImport1.ts (2 errors) ==== declare import a = b; ~~~~~~~ !!! error TS1079: A 'declare' modifier cannot be used with an import declaration. - ~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2304: Cannot find name 'b'. \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnArrowFunction.errors.txt b/tests/baselines/reference/decoratorOnArrowFunction.errors.txt new file mode 100644 index 00000000000..14bde1e49bf --- /dev/null +++ b/tests/baselines/reference/decoratorOnArrowFunction.errors.txt @@ -0,0 +1,16 @@ +tests/cases/conformance/decorators/invalid/decoratorOnArrowFunction.ts(3,9): error TS1109: Expression expected. +tests/cases/conformance/decorators/invalid/decoratorOnArrowFunction.ts(3,16): error TS1146: Declaration expected. +tests/cases/conformance/decorators/invalid/decoratorOnArrowFunction.ts(3,17): error TS1128: Declaration or statement expected. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnArrowFunction.ts (3 errors) ==== + declare function dec(target: T): T; + + var F = @dec () => { + ~ +!!! error TS1109: Expression expected. + +!!! error TS1146: Declaration expected. + ~~ +!!! error TS1128: Declaration or statement expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnArrowFunction.js b/tests/baselines/reference/decoratorOnArrowFunction.js new file mode 100644 index 00000000000..1a327e7fc9a --- /dev/null +++ b/tests/baselines/reference/decoratorOnArrowFunction.js @@ -0,0 +1,10 @@ +//// [decoratorOnArrowFunction.ts] +declare function dec(target: T): T; + +var F = @dec () => { +} + +//// [decoratorOnArrowFunction.js] +var F = ; +{ +} diff --git a/tests/baselines/reference/decoratorOnClass1.js b/tests/baselines/reference/decoratorOnClass1.js new file mode 100644 index 00000000000..24be2517469 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass1.js @@ -0,0 +1,27 @@ +//// [decoratorOnClass1.ts] +declare function dec(target: T): T; + +@dec +class C { +} + +//// [decoratorOnClass1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec], C); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClass1.types b/tests/baselines/reference/decoratorOnClass1.types new file mode 100644 index 00000000000..19e066586da --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass1.types @@ -0,0 +1,14 @@ +=== tests/cases/conformance/decorators/class/decoratorOnClass1.ts === +declare function dec(target: T): T; +>dec : (target: T) => T +>T : T +>target : T +>T : T +>T : T + +@dec +>dec : unknown + +class C { +>C : C +} diff --git a/tests/baselines/reference/decoratorOnClass2.js b/tests/baselines/reference/decoratorOnClass2.js new file mode 100644 index 00000000000..92741819e94 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass2.js @@ -0,0 +1,28 @@ +//// [decoratorOnClass2.ts] +declare function dec(target: T): T; + +@dec +export class C { +} + +//// [decoratorOnClass2.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec], C); + return C; +})(); +exports.C = C; diff --git a/tests/baselines/reference/decoratorOnClass2.types b/tests/baselines/reference/decoratorOnClass2.types new file mode 100644 index 00000000000..43102ee9122 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass2.types @@ -0,0 +1,14 @@ +=== tests/cases/conformance/decorators/class/decoratorOnClass2.ts === +declare function dec(target: T): T; +>dec : (target: T) => T +>T : T +>target : T +>T : T +>T : T + +@dec +>dec : unknown + +export class C { +>C : C +} diff --git a/tests/baselines/reference/decoratorOnClass3.errors.txt b/tests/baselines/reference/decoratorOnClass3.errors.txt new file mode 100644 index 00000000000..dfa430dec0c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass3.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/decorators/class/decoratorOnClass3.ts(3,1): error TS1128: Declaration or statement expected. + + +==== tests/cases/conformance/decorators/class/decoratorOnClass3.ts (1 errors) ==== + declare function dec(target: T): T; + + export + ~~~~~~ +!!! error TS1128: Declaration or statement expected. + @dec + class C { + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClass3.js b/tests/baselines/reference/decoratorOnClass3.js new file mode 100644 index 00000000000..766acc42072 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass3.js @@ -0,0 +1,28 @@ +//// [decoratorOnClass3.ts] +declare function dec(target: T): T; + +export +@dec +class C { +} + +//// [decoratorOnClass3.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec], C); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClass4.js b/tests/baselines/reference/decoratorOnClass4.js new file mode 100644 index 00000000000..95bde549379 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass4.js @@ -0,0 +1,27 @@ +//// [decoratorOnClass4.ts] +declare function dec(): (target: T) => T; + +@dec() +class C { +} + +//// [decoratorOnClass4.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec()], C); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClass4.types b/tests/baselines/reference/decoratorOnClass4.types new file mode 100644 index 00000000000..425aa63ac21 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass4.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/decorators/class/decoratorOnClass4.ts === +declare function dec(): (target: T) => T; +>dec : () => (target: T) => T +>T : T +>target : T +>T : T +>T : T + +@dec() +>dec() : (target: T) => T +>dec : () => (target: T) => T + +class C { +>C : C +} diff --git a/tests/baselines/reference/decoratorOnClass5.js b/tests/baselines/reference/decoratorOnClass5.js new file mode 100644 index 00000000000..a93d625f491 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass5.js @@ -0,0 +1,27 @@ +//// [decoratorOnClass5.ts] +declare function dec(): (target: T) => T; + +@dec() +class C { +} + +//// [decoratorOnClass5.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec()], C); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClass5.types b/tests/baselines/reference/decoratorOnClass5.types new file mode 100644 index 00000000000..1c967ffcc00 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass5.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/decorators/class/decoratorOnClass5.ts === +declare function dec(): (target: T) => T; +>dec : () => (target: T) => T +>T : T +>target : T +>T : T +>T : T + +@dec() +>dec() : (target: T) => T +>dec : () => (target: T) => T + +class C { +>C : C +} diff --git a/tests/baselines/reference/decoratorOnClass8.errors.txt b/tests/baselines/reference/decoratorOnClass8.errors.txt new file mode 100644 index 00000000000..0a9fbf2956c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass8.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/decoratorOnClass8.ts(3,1): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: typeof C) => void | typeof C'. + + +==== tests/cases/conformance/decorators/class/decoratorOnClass8.ts (1 errors) ==== + declare function dec(): (target: Function, paramIndex: number) => void; + + @dec() + ~~~~~~ +!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: typeof C) => void | typeof C'. + class C { + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClass8.js b/tests/baselines/reference/decoratorOnClass8.js new file mode 100644 index 00000000000..0e782d45e11 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClass8.js @@ -0,0 +1,27 @@ +//// [decoratorOnClass8.ts] +declare function dec(): (target: Function, paramIndex: number) => void; + +@dec() +class C { +} + +//// [decoratorOnClass8.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C = __decorate([dec()], C); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.js b/tests/baselines/reference/decoratorOnClassAccessor1.js new file mode 100644 index 00000000000..c8a96c40721 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor1.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor1.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec get accessor() { return 1; } +} + +//// [decoratorOnClassAccessor1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + get: function () { return 1; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.types b/tests/baselines/reference/decoratorOnClassAccessor1.types new file mode 100644 index 00000000000..fd592d7d294 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor1.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor1.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec get accessor() { return 1; } +>dec : unknown +>accessor : number +} diff --git a/tests/baselines/reference/decoratorOnClassAccessor2.js b/tests/baselines/reference/decoratorOnClassAccessor2.js new file mode 100644 index 00000000000..bffbfb4b700 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor2.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor2.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec public get accessor() { return 1; } +} + +//// [decoratorOnClassAccessor2.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + get: function () { return 1; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor2.types b/tests/baselines/reference/decoratorOnClassAccessor2.types new file mode 100644 index 00000000000..32bb503d889 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor2.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor2.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec public get accessor() { return 1; } +>dec : unknown +>accessor : number +} diff --git a/tests/baselines/reference/decoratorOnClassAccessor3.errors.txt b/tests/baselines/reference/decoratorOnClassAccessor3.errors.txt new file mode 100644 index 00000000000..1a1e6503355 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor3.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor3.ts(4,5): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + + +==== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor3.ts (1 errors) ==== + declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + + class C { + public @dec get accessor() { return 1; } + ~~~~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassAccessor3.js b/tests/baselines/reference/decoratorOnClassAccessor3.js new file mode 100644 index 00000000000..a2a2221a119 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor3.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor3.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + public @dec get accessor() { return 1; } +} + +//// [decoratorOnClassAccessor3.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + get: function () { return 1; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor4.js b/tests/baselines/reference/decoratorOnClassAccessor4.js new file mode 100644 index 00000000000..1b4853b69bc --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor4.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor4.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec set accessor(value: number) { } +} + +//// [decoratorOnClassAccessor4.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + set: function (value) { }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor4.types b/tests/baselines/reference/decoratorOnClassAccessor4.types new file mode 100644 index 00000000000..40dd43d7e62 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor4.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor4.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec set accessor(value: number) { } +>dec : unknown +>accessor : number +>value : number +} diff --git a/tests/baselines/reference/decoratorOnClassAccessor5.js b/tests/baselines/reference/decoratorOnClassAccessor5.js new file mode 100644 index 00000000000..eec246c7ead --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor5.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor5.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec public set accessor(value: number) { } +} + +//// [decoratorOnClassAccessor5.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + set: function (value) { }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassAccessor5.types b/tests/baselines/reference/decoratorOnClassAccessor5.types new file mode 100644 index 00000000000..4b167fe8df1 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor5.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor5.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec public set accessor(value: number) { } +>dec : unknown +>accessor : number +>value : number +} diff --git a/tests/baselines/reference/decoratorOnClassAccessor6.errors.txt b/tests/baselines/reference/decoratorOnClassAccessor6.errors.txt new file mode 100644 index 00000000000..f43827c0e4b --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor6.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor6.ts(4,5): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + + +==== tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor6.ts (1 errors) ==== + declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + + class C { + public @dec set accessor(value: number) { } + ~~~~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassAccessor6.js b/tests/baselines/reference/decoratorOnClassAccessor6.js new file mode 100644 index 00000000000..ce9776bfc61 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassAccessor6.js @@ -0,0 +1,32 @@ +//// [decoratorOnClassAccessor6.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + public @dec set accessor(value: number) { } +} + +//// [decoratorOnClassAccessor6.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + Object.defineProperty(C.prototype, "accessor", { + set: function (value) { }, + enumerable: true, + configurable: true + }); + Object.defineProperty(C.prototype, "accessor", __decorate([dec], C.prototype, "accessor", Object.getOwnPropertyDescriptor(C.prototype, "accessor"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassConstructor1.errors.txt b/tests/baselines/reference/decoratorOnClassConstructor1.errors.txt new file mode 100644 index 00000000000..14a164eccb4 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructor1.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/constructor/decoratorOnClassConstructor1.ts(4,5): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/class/constructor/decoratorOnClassConstructor1.ts (1 errors) ==== + declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + + class C { + @dec constructor() {} + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1206: Decorators are not valid here. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassConstructor1.js b/tests/baselines/reference/decoratorOnClassConstructor1.js new file mode 100644 index 00000000000..c61d1d218a5 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructor1.js @@ -0,0 +1,13 @@ +//// [decoratorOnClassConstructor1.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec constructor() {} +} + +//// [decoratorOnClassConstructor1.js] +var C = (function () { + function C() { + } + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter1.js b/tests/baselines/reference/decoratorOnClassConstructorParameter1.js new file mode 100644 index 00000000000..0c86a1ccf7a --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter1.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassConstructorParameter1.ts] +declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; + +class C { + constructor(@dec p: number) {} +} + +//// [decoratorOnClassConstructorParameter1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C(p) { + } + __decorate([dec], C, void 0, 0); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter1.types b/tests/baselines/reference/decoratorOnClassConstructorParameter1.types new file mode 100644 index 00000000000..d5ce51269bc --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter1.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter1.ts === +declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; +>dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void +>target : Function +>Function : Function +>propertyKey : string | symbol +>parameterIndex : number + +class C { +>C : C + + constructor(@dec p: number) {} +>dec : unknown +>p : number +} diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter4.errors.txt b/tests/baselines/reference/decoratorOnClassConstructorParameter4.errors.txt new file mode 100644 index 00000000000..61ff1433662 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter4.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter4.ts(4,17): error TS1003: Identifier expected. +tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter4.ts(4,24): error TS1005: ',' expected. + + +==== tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter4.ts (2 errors) ==== + declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; + + class C { + constructor(public @dec p: number) {} + ~~~~~~ +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ',' expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter4.js b/tests/baselines/reference/decoratorOnClassConstructorParameter4.js new file mode 100644 index 00000000000..3ab9829e72a --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter4.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassConstructorParameter4.ts] +declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; + +class C { + constructor(public @dec p: number) {} +} + +//// [decoratorOnClassConstructorParameter4.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C(, p) { + } + __decorate([dec], C, void 0, 1); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod1.js b/tests/baselines/reference/decoratorOnClassMethod1.js new file mode 100644 index 00000000000..b7230cca8b1 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod1.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethod1.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec method() {} +} + +//// [decoratorOnClassMethod1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod1.types b/tests/baselines/reference/decoratorOnClassMethod1.types new file mode 100644 index 00000000000..760f758bbff --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod1.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod1.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec method() {} +>dec : unknown +>method : () => void +} diff --git a/tests/baselines/reference/decoratorOnClassMethod10.errors.txt b/tests/baselines/reference/decoratorOnClassMethod10.errors.txt new file mode 100644 index 00000000000..cd331473b7c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod10.errors.txt @@ -0,0 +1,17 @@ +tests/cases/conformance/decorators/class/method/decoratorOnClassMethod10.ts(4,5): error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<() => void>) => void | TypedPropertyDescriptor<() => void>'. + Types of parameters 'paramIndex' and 'propertyKey' are incompatible. + Type 'number' is not assignable to type 'string | symbol'. + Type 'number' is not assignable to type 'symbol'. + + +==== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod10.ts (1 errors) ==== + declare function dec(target: Function, paramIndex: number): void; + + class C { + @dec method() {} + ~~~~ +!!! error TS2322: Type '(target: Function, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<() => void>) => void | TypedPropertyDescriptor<() => void>'. +!!! error TS2322: Types of parameters 'paramIndex' and 'propertyKey' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string | symbol'. +!!! error TS2322: Type 'number' is not assignable to type 'symbol'. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassMethod10.js b/tests/baselines/reference/decoratorOnClassMethod10.js new file mode 100644 index 00000000000..137a0c2839f --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod10.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethod10.ts] +declare function dec(target: Function, paramIndex: number): void; + +class C { + @dec method() {} +} + +//// [decoratorOnClassMethod10.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod2.js b/tests/baselines/reference/decoratorOnClassMethod2.js new file mode 100644 index 00000000000..ceddff2f150 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod2.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethod2.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec public method() {} +} + +//// [decoratorOnClassMethod2.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod2.types b/tests/baselines/reference/decoratorOnClassMethod2.types new file mode 100644 index 00000000000..98539648cd0 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod2.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod2.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec public method() {} +>dec : unknown +>method : () => void +} diff --git a/tests/baselines/reference/decoratorOnClassMethod3.errors.txt b/tests/baselines/reference/decoratorOnClassMethod3.errors.txt new file mode 100644 index 00000000000..2775ab9f144 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod3.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/method/decoratorOnClassMethod3.ts(4,5): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + + +==== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod3.ts (1 errors) ==== + declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + + class C { + public @dec method() {} + ~~~~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassMethod3.js b/tests/baselines/reference/decoratorOnClassMethod3.js new file mode 100644 index 00000000000..7e13f91d86c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod3.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethod3.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + public @dec method() {} +} + +//// [decoratorOnClassMethod3.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod4.js b/tests/baselines/reference/decoratorOnClassMethod4.js new file mode 100644 index 00000000000..55798a2e1db --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod4.js @@ -0,0 +1,26 @@ +//// [decoratorOnClassMethod4.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec ["method"]() {} +} + +//// [decoratorOnClassMethod4.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +class C { + [_a = "method"]() { } +} +Object.defineProperty(C.prototype, _a, __decorate([dec], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a))); +var _a; diff --git a/tests/baselines/reference/decoratorOnClassMethod4.types b/tests/baselines/reference/decoratorOnClassMethod4.types new file mode 100644 index 00000000000..6d55e01e97a --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod4.types @@ -0,0 +1,18 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod4.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec ["method"]() {} +>dec : unknown +} diff --git a/tests/baselines/reference/decoratorOnClassMethod5.js b/tests/baselines/reference/decoratorOnClassMethod5.js new file mode 100644 index 00000000000..2fe671e1b52 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod5.js @@ -0,0 +1,26 @@ +//// [decoratorOnClassMethod5.ts] +declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; + +class C { + @dec() ["method"]() {} +} + +//// [decoratorOnClassMethod5.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +class C { + [_a = "method"]() { } +} +Object.defineProperty(C.prototype, _a, __decorate([dec()], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a))); +var _a; diff --git a/tests/baselines/reference/decoratorOnClassMethod5.types b/tests/baselines/reference/decoratorOnClassMethod5.types new file mode 100644 index 00000000000..d87de2b351a --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod5.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod5.ts === +declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; +>dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec() ["method"]() {} +>dec() : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +} diff --git a/tests/baselines/reference/decoratorOnClassMethod6.js b/tests/baselines/reference/decoratorOnClassMethod6.js new file mode 100644 index 00000000000..2e828d6ad4d --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod6.js @@ -0,0 +1,26 @@ +//// [decoratorOnClassMethod6.ts] +declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; + +class C { + @dec ["method"]() {} +} + +//// [decoratorOnClassMethod6.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +class C { + [_a = "method"]() { } +} +Object.defineProperty(C.prototype, _a, __decorate([dec], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a))); +var _a; diff --git a/tests/baselines/reference/decoratorOnClassMethod6.types b/tests/baselines/reference/decoratorOnClassMethod6.types new file mode 100644 index 00000000000..4e6629cd60a --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod6.types @@ -0,0 +1,18 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod6.ts === +declare function dec(): (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; +>dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec ["method"]() {} +>dec : unknown +} diff --git a/tests/baselines/reference/decoratorOnClassMethod7.js b/tests/baselines/reference/decoratorOnClassMethod7.js new file mode 100644 index 00000000000..0b0f5abc4fa --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod7.js @@ -0,0 +1,26 @@ +//// [decoratorOnClassMethod7.ts] +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; + +class C { + @dec public ["method"]() {} +} + +//// [decoratorOnClassMethod7.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +class C { + [_a = "method"]() { } +} +Object.defineProperty(C.prototype, _a, __decorate([dec], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a))); +var _a; diff --git a/tests/baselines/reference/decoratorOnClassMethod7.types b/tests/baselines/reference/decoratorOnClassMethod7.types new file mode 100644 index 00000000000..7e426cb773c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod7.types @@ -0,0 +1,18 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod7.ts === +declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; +>dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>T : T +>target : any +>propertyKey : string +>descriptor : TypedPropertyDescriptor +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T +>TypedPropertyDescriptor : TypedPropertyDescriptor +>T : T + +class C { +>C : C + + @dec public ["method"]() {} +>dec : unknown +} diff --git a/tests/baselines/reference/decoratorOnClassMethod8.js b/tests/baselines/reference/decoratorOnClassMethod8.js new file mode 100644 index 00000000000..89afc665143 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod8.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethod8.ts] +declare function dec(target: T): T; + +class C { + @dec method() {} +} + +//// [decoratorOnClassMethod8.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + Object.defineProperty(C.prototype, "method", __decorate([dec], C.prototype, "method", Object.getOwnPropertyDescriptor(C.prototype, "method"))); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethod8.types b/tests/baselines/reference/decoratorOnClassMethod8.types new file mode 100644 index 00000000000..f932ab8696f --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethod8.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/decorators/class/method/decoratorOnClassMethod8.ts === +declare function dec(target: T): T; +>dec : (target: T) => T +>T : T +>target : T +>T : T +>T : T + +class C { +>C : C + + @dec method() {} +>dec : unknown +>method : () => void +} diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter1.js b/tests/baselines/reference/decoratorOnClassMethodParameter1.js new file mode 100644 index 00000000000..dcd6c123527 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethodParameter1.js @@ -0,0 +1,28 @@ +//// [decoratorOnClassMethodParameter1.ts] +declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; + +class C { + method(@dec p: number) {} +} + +//// [decoratorOnClassMethodParameter1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + C.prototype.method = function (p) { }; + __decorate([dec], C.prototype, "method", 0); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter1.types b/tests/baselines/reference/decoratorOnClassMethodParameter1.types new file mode 100644 index 00000000000..cf7bfd352bf --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassMethodParameter1.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/decorators/class/method/parameter/decoratorOnClassMethodParameter1.ts === +declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; +>dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void +>target : Function +>Function : Function +>propertyKey : string | symbol +>parameterIndex : number + +class C { +>C : C + + method(@dec p: number) {} +>method : (p: number) => void +>dec : unknown +>p : number +} diff --git a/tests/baselines/reference/decoratorOnClassProperty1.js b/tests/baselines/reference/decoratorOnClassProperty1.js new file mode 100644 index 00000000000..efc6a2c04db --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty1.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty1.ts] +declare function dec(target: any, propertyKey: string): void; + +class C { + @dec prop; +} + +//// [decoratorOnClassProperty1.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty1.types b/tests/baselines/reference/decoratorOnClassProperty1.types new file mode 100644 index 00000000000..651085c7ac4 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty1.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty1.ts === +declare function dec(target: any, propertyKey: string): void; +>dec : (target: any, propertyKey: string) => void +>target : any +>propertyKey : string + +class C { +>C : C + + @dec prop; +>dec : unknown +>prop : any +} diff --git a/tests/baselines/reference/decoratorOnClassProperty10.js b/tests/baselines/reference/decoratorOnClassProperty10.js new file mode 100644 index 00000000000..d55eb71e3c6 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty10.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty10.ts] +declare function dec(): (target: any, propertyKey: string) => void; + +class C { + @dec() prop; +} + +//// [decoratorOnClassProperty10.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec()], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty10.types b/tests/baselines/reference/decoratorOnClassProperty10.types new file mode 100644 index 00000000000..d0aa05589ff --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty10.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty10.ts === +declare function dec(): (target: any, propertyKey: string) => void; +>dec : () => (target: any, propertyKey: string) => void +>T : T +>target : any +>propertyKey : string + +class C { +>C : C + + @dec() prop; +>dec() : (target: any, propertyKey: string) => void +>dec : () => (target: any, propertyKey: string) => void +>prop : any +} diff --git a/tests/baselines/reference/decoratorOnClassProperty11.js b/tests/baselines/reference/decoratorOnClassProperty11.js new file mode 100644 index 00000000000..63e5f8d02e9 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty11.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty11.ts] +declare function dec(): (target: any, propertyKey: string) => void; + +class C { + @dec prop; +} + +//// [decoratorOnClassProperty11.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty11.types b/tests/baselines/reference/decoratorOnClassProperty11.types new file mode 100644 index 00000000000..5377e53c31c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty11.types @@ -0,0 +1,14 @@ +=== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty11.ts === +declare function dec(): (target: any, propertyKey: string) => void; +>dec : () => (target: any, propertyKey: string) => void +>T : T +>target : any +>propertyKey : string + +class C { +>C : C + + @dec prop; +>dec : unknown +>prop : any +} diff --git a/tests/baselines/reference/decoratorOnClassProperty2.js b/tests/baselines/reference/decoratorOnClassProperty2.js new file mode 100644 index 00000000000..d52baa79202 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty2.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty2.ts] +declare function dec(target: any, propertyKey: string): void; + +class C { + @dec public prop; +} + +//// [decoratorOnClassProperty2.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty2.types b/tests/baselines/reference/decoratorOnClassProperty2.types new file mode 100644 index 00000000000..2d5c9fe07d7 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty2.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty2.ts === +declare function dec(target: any, propertyKey: string): void; +>dec : (target: any, propertyKey: string) => void +>target : any +>propertyKey : string + +class C { +>C : C + + @dec public prop; +>dec : unknown +>prop : any +} diff --git a/tests/baselines/reference/decoratorOnClassProperty3.errors.txt b/tests/baselines/reference/decoratorOnClassProperty3.errors.txt new file mode 100644 index 00000000000..a6321c55426 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty3.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/property/decoratorOnClassProperty3.ts(4,5): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + + +==== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty3.ts (1 errors) ==== + declare function dec(target: any, propertyKey: string): void; + + class C { + public @dec prop; + ~~~~~~ +!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassProperty3.js b/tests/baselines/reference/decoratorOnClassProperty3.js new file mode 100644 index 00000000000..f8a2cce27df --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty3.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty3.ts] +declare function dec(target: any, propertyKey: string): void; + +class C { + public @dec prop; +} + +//// [decoratorOnClassProperty3.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty6.js b/tests/baselines/reference/decoratorOnClassProperty6.js new file mode 100644 index 00000000000..7f087156bc7 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty6.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty6.ts] +declare function dec(target: Function): void; + +class C { + @dec prop; +} + +//// [decoratorOnClassProperty6.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnClassProperty6.types b/tests/baselines/reference/decoratorOnClassProperty6.types new file mode 100644 index 00000000000..2c8c41abf78 --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty6.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty6.ts === +declare function dec(target: Function): void; +>dec : (target: Function) => void +>target : Function +>Function : Function + +class C { +>C : C + + @dec prop; +>dec : unknown +>prop : any +} diff --git a/tests/baselines/reference/decoratorOnClassProperty7.errors.txt b/tests/baselines/reference/decoratorOnClassProperty7.errors.txt new file mode 100644 index 00000000000..8b93d0ab38e --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty7.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/class/property/decoratorOnClassProperty7.ts(4,5): error TS2322: Type '(target: Function, propertyKey: string | symbol, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol) => void'. + + +==== tests/cases/conformance/decorators/class/property/decoratorOnClassProperty7.ts (1 errors) ==== + declare function dec(target: Function, propertyKey: string | symbol, paramIndex: number): void; + + class C { + @dec prop; + ~~~~ +!!! error TS2322: Type '(target: Function, propertyKey: string | symbol, paramIndex: number) => void' is not assignable to type '(target: Object, propertyKey: string | symbol) => void'. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnClassProperty7.js b/tests/baselines/reference/decoratorOnClassProperty7.js new file mode 100644 index 00000000000..ba2c8383a2c --- /dev/null +++ b/tests/baselines/reference/decoratorOnClassProperty7.js @@ -0,0 +1,27 @@ +//// [decoratorOnClassProperty7.ts] +declare function dec(target: Function, propertyKey: string | symbol, paramIndex: number): void; + +class C { + @dec prop; +} + +//// [decoratorOnClassProperty7.js] +var __decorate = this.__decorate || function (decorators, target, key, value) { + var kind = typeof (arguments.length == 2 ? value = target : value); + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + switch (kind) { + case "function": value = decorator(value) || value; break; + case "number": decorator(target, key, value); break; + case "undefined": decorator(target, key); break; + case "object": value = decorator(target, key, value) || value; break; + } + } + return value; +}; +var C = (function () { + function C() { + } + __decorate([dec], C.prototype, "prop"); + return C; +})(); diff --git a/tests/baselines/reference/decoratorOnEnum.errors.txt b/tests/baselines/reference/decoratorOnEnum.errors.txt new file mode 100644 index 00000000000..21a6d39aab5 --- /dev/null +++ b/tests/baselines/reference/decoratorOnEnum.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/invalid/decoratorOnEnum.ts(4,6): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnEnum.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + enum E { + ~ +!!! error TS1206: Decorators are not valid here. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnEnum.js b/tests/baselines/reference/decoratorOnEnum.js new file mode 100644 index 00000000000..14651b65928 --- /dev/null +++ b/tests/baselines/reference/decoratorOnEnum.js @@ -0,0 +1,11 @@ +//// [decoratorOnEnum.ts] +declare function dec(target: T): T; + +@dec +enum E { +} + +//// [decoratorOnEnum.js] +var E; +(function (E) { +})(E || (E = {})); diff --git a/tests/baselines/reference/decoratorOnEnum2.errors.txt b/tests/baselines/reference/decoratorOnEnum2.errors.txt new file mode 100644 index 00000000000..3a643bc861a --- /dev/null +++ b/tests/baselines/reference/decoratorOnEnum2.errors.txt @@ -0,0 +1,20 @@ +tests/cases/conformance/decorators/invalid/decoratorOnEnum2.ts(4,5): error TS1132: Enum member expected. +tests/cases/conformance/decorators/invalid/decoratorOnEnum2.ts(4,9): error TS1146: Declaration expected. +tests/cases/conformance/decorators/invalid/decoratorOnEnum2.ts(4,10): error TS2304: Cannot find name 'A'. +tests/cases/conformance/decorators/invalid/decoratorOnEnum2.ts(5,1): error TS1128: Declaration or statement expected. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnEnum2.ts (4 errors) ==== + declare function dec(target: T): T; + + enum E { + @dec A + ~ +!!! error TS1132: Enum member expected. + +!!! error TS1146: Declaration expected. + ~ +!!! error TS2304: Cannot find name 'A'. + } + ~ +!!! error TS1128: Declaration or statement expected. \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnEnum2.js b/tests/baselines/reference/decoratorOnEnum2.js new file mode 100644 index 00000000000..fecff1f3413 --- /dev/null +++ b/tests/baselines/reference/decoratorOnEnum2.js @@ -0,0 +1,12 @@ +//// [decoratorOnEnum2.ts] +declare function dec(target: T): T; + +enum E { + @dec A +} + +//// [decoratorOnEnum2.js] +var E; +(function (E) { +})(E || (E = {})); +A; diff --git a/tests/baselines/reference/decoratorOnFunctionDeclaration.errors.txt b/tests/baselines/reference/decoratorOnFunctionDeclaration.errors.txt new file mode 100644 index 00000000000..bda00f1a85f --- /dev/null +++ b/tests/baselines/reference/decoratorOnFunctionDeclaration.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/invalid/decoratorOnFunctionDeclaration.ts(4,10): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnFunctionDeclaration.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + function F() { + ~ +!!! error TS1206: Decorators are not valid here. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnFunctionDeclaration.js b/tests/baselines/reference/decoratorOnFunctionDeclaration.js new file mode 100644 index 00000000000..7c1a1ff5bfe --- /dev/null +++ b/tests/baselines/reference/decoratorOnFunctionDeclaration.js @@ -0,0 +1,10 @@ +//// [decoratorOnFunctionDeclaration.ts] +declare function dec(target: T): T; + +@dec +function F() { +} + +//// [decoratorOnFunctionDeclaration.js] +function F() { +} diff --git a/tests/baselines/reference/decoratorOnFunctionExpression.errors.txt b/tests/baselines/reference/decoratorOnFunctionExpression.errors.txt new file mode 100644 index 00000000000..71aae3e13eb --- /dev/null +++ b/tests/baselines/reference/decoratorOnFunctionExpression.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/decorators/invalid/decoratorOnFunctionExpression.ts(3,9): error TS1109: Expression expected. +tests/cases/conformance/decorators/invalid/decoratorOnFunctionExpression.ts(3,23): error TS1003: Identifier expected. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnFunctionExpression.ts (2 errors) ==== + declare function dec(target: T): T; + + var F = @dec function () { + ~ +!!! error TS1109: Expression expected. + ~ +!!! error TS1003: Identifier expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnFunctionExpression.js b/tests/baselines/reference/decoratorOnFunctionExpression.js new file mode 100644 index 00000000000..f6808674ed4 --- /dev/null +++ b/tests/baselines/reference/decoratorOnFunctionExpression.js @@ -0,0 +1,10 @@ +//// [decoratorOnFunctionExpression.ts] +declare function dec(target: T): T; + +var F = @dec function () { +} + +//// [decoratorOnFunctionExpression.js] +var F = ; +function () { +} diff --git a/tests/baselines/reference/decoratorOnImportEquals1.errors.txt b/tests/baselines/reference/decoratorOnImportEquals1.errors.txt new file mode 100644 index 00000000000..a09a0b01427 --- /dev/null +++ b/tests/baselines/reference/decoratorOnImportEquals1.errors.txt @@ -0,0 +1,17 @@ +tests/cases/conformance/decorators/invalid/decoratorOnImportEquals1.ts(8,5): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnImportEquals1.ts (1 errors) ==== + declare function dec(target: T): T; + + module M1 { + export var X: number; + } + + module M2 { + @dec + ~~~~ + import X = M1.X; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1206: Decorators are not valid here. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnImportEquals1.js b/tests/baselines/reference/decoratorOnImportEquals1.js new file mode 100644 index 00000000000..440fdb99bce --- /dev/null +++ b/tests/baselines/reference/decoratorOnImportEquals1.js @@ -0,0 +1,17 @@ +//// [decoratorOnImportEquals1.ts] +declare function dec(target: T): T; + +module M1 { + export var X: number; +} + +module M2 { + @dec + import X = M1.X; +} + +//// [decoratorOnImportEquals1.js] +var M1; +(function (M1) { + M1.X; +})(M1 || (M1 = {})); diff --git a/tests/baselines/reference/decoratorOnImportEquals2.errors.txt b/tests/baselines/reference/decoratorOnImportEquals2.errors.txt new file mode 100644 index 00000000000..5701afe569b --- /dev/null +++ b/tests/baselines/reference/decoratorOnImportEquals2.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/decorators/invalid/decoratorOnImportEquals2_1.ts(1,1): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnImportEquals2_1.ts (1 errors) ==== + @dec + ~~~~ + import lib = require('./decoratorOnImportEquals2_0'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1206: Decorators are not valid here. + + declare function dec(target: T): T; +==== tests/cases/conformance/decorators/invalid/decoratorOnImportEquals2_0.ts (0 errors) ==== + export var X; + \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnImportEquals2.js b/tests/baselines/reference/decoratorOnImportEquals2.js new file mode 100644 index 00000000000..7db2da6b2c2 --- /dev/null +++ b/tests/baselines/reference/decoratorOnImportEquals2.js @@ -0,0 +1,14 @@ +//// [tests/cases/conformance/decorators/invalid/decoratorOnImportEquals2.ts] //// + +//// [decoratorOnImportEquals2_0.ts] +export var X; + +//// [decoratorOnImportEquals2_1.ts] +@dec +import lib = require('./decoratorOnImportEquals2_0'); + +declare function dec(target: T): T; + +//// [decoratorOnImportEquals2_0.js] +exports.X; +//// [decoratorOnImportEquals2_1.js] diff --git a/tests/baselines/reference/decoratorOnInterface.errors.txt b/tests/baselines/reference/decoratorOnInterface.errors.txt new file mode 100644 index 00000000000..055b43fa877 --- /dev/null +++ b/tests/baselines/reference/decoratorOnInterface.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/invalid/decoratorOnInterface.ts(4,11): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnInterface.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + interface I { + ~ +!!! error TS1206: Decorators are not valid here. + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnInterface.js b/tests/baselines/reference/decoratorOnInterface.js new file mode 100644 index 00000000000..10b01f299bf --- /dev/null +++ b/tests/baselines/reference/decoratorOnInterface.js @@ -0,0 +1,8 @@ +//// [decoratorOnInterface.ts] +declare function dec(target: T): T; + +@dec +interface I { +} + +//// [decoratorOnInterface.js] diff --git a/tests/baselines/reference/decoratorOnInternalModule.errors.txt b/tests/baselines/reference/decoratorOnInternalModule.errors.txt new file mode 100644 index 00000000000..2fd92dfb250 --- /dev/null +++ b/tests/baselines/reference/decoratorOnInternalModule.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/decorators/invalid/decoratorOnInternalModule.ts(4,8): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnInternalModule.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + module M { + ~ +!!! error TS1206: Decorators are not valid here. + + } \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnInternalModule.js b/tests/baselines/reference/decoratorOnInternalModule.js new file mode 100644 index 00000000000..d69ab6f1a56 --- /dev/null +++ b/tests/baselines/reference/decoratorOnInternalModule.js @@ -0,0 +1,9 @@ +//// [decoratorOnInternalModule.ts] +declare function dec(target: T): T; + +@dec +module M { + +} + +//// [decoratorOnInternalModule.js] diff --git a/tests/baselines/reference/decoratorOnTypeAlias.errors.txt b/tests/baselines/reference/decoratorOnTypeAlias.errors.txt new file mode 100644 index 00000000000..0d3109fe463 --- /dev/null +++ b/tests/baselines/reference/decoratorOnTypeAlias.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/invalid/decoratorOnTypeAlias.ts(3,1): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnTypeAlias.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + ~~~~ + type T = number; + ~~~~~~~~~~~~~~~~ +!!! error TS1206: Decorators are not valid here. \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnTypeAlias.js b/tests/baselines/reference/decoratorOnTypeAlias.js new file mode 100644 index 00000000000..ef4fc51034f --- /dev/null +++ b/tests/baselines/reference/decoratorOnTypeAlias.js @@ -0,0 +1,7 @@ +//// [decoratorOnTypeAlias.ts] +declare function dec(target: T): T; + +@dec +type T = number; + +//// [decoratorOnTypeAlias.js] diff --git a/tests/baselines/reference/decoratorOnVar.errors.txt b/tests/baselines/reference/decoratorOnVar.errors.txt new file mode 100644 index 00000000000..bd87357edad --- /dev/null +++ b/tests/baselines/reference/decoratorOnVar.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/decorators/invalid/decoratorOnVar.ts(3,1): error TS1206: Decorators are not valid here. + + +==== tests/cases/conformance/decorators/invalid/decoratorOnVar.ts (1 errors) ==== + declare function dec(target: T): T; + + @dec + ~~~~ + var x: number; + ~~~~~~~~~~~~~~ +!!! error TS1206: Decorators are not valid here. \ No newline at end of file diff --git a/tests/baselines/reference/decoratorOnVar.js b/tests/baselines/reference/decoratorOnVar.js new file mode 100644 index 00000000000..5240d59fda0 --- /dev/null +++ b/tests/baselines/reference/decoratorOnVar.js @@ -0,0 +1,8 @@ +//// [decoratorOnVar.ts] +declare function dec(target: T): T; + +@dec +var x: number; + +//// [decoratorOnVar.js] +var x; diff --git a/tests/baselines/reference/decrementOperatorWithEnumType.js b/tests/baselines/reference/decrementOperatorWithEnumType.js index 15247ea4225..27cb376cc05 100644 --- a/tests/baselines/reference/decrementOperatorWithEnumType.js +++ b/tests/baselines/reference/decrementOperatorWithEnumType.js @@ -22,8 +22,8 @@ var ENUM1; })(ENUM1 || (ENUM1 = {})); ; // expression -var ResultIsNumber1 = --0 /* "A" */; -var ResultIsNumber2 = 0 /* A */--; +var ResultIsNumber1 = --ENUM1["A"]; +var ResultIsNumber2 = ENUM1.A--; // miss assignment operator ---0 /* "A" */; +--ENUM1["A"]; ENUM1[A]--; diff --git a/tests/baselines/reference/deleteOperatorWithEnumType.js b/tests/baselines/reference/deleteOperatorWithEnumType.js index b87ab8298a7..0a17b300d3d 100644 --- a/tests/baselines/reference/deleteOperatorWithEnumType.js +++ b/tests/baselines/reference/deleteOperatorWithEnumType.js @@ -39,13 +39,13 @@ var ENUM1; var ResultIsBoolean1 = delete ENUM; var ResultIsBoolean2 = delete ENUM1; // enum type expressions -var ResultIsBoolean3 = delete 0 /* "A" */; -var ResultIsBoolean4 = delete (ENUM[0] + 1 /* "B" */); +var ResultIsBoolean3 = delete ENUM1["A"]; +var ResultIsBoolean4 = delete (ENUM[0] + ENUM1["B"]); // multiple delete operators var ResultIsBoolean5 = delete delete ENUM; -var ResultIsBoolean6 = delete delete delete (ENUM[0] + 1 /* "B" */); +var ResultIsBoolean6 = delete delete delete (ENUM[0] + ENUM1["B"]); // miss assignment operators delete ENUM; delete ENUM1; -delete 1 /* B */; +delete ENUM1.B; delete ENUM, ENUM1; diff --git a/tests/baselines/reference/destructuringParameterProperties4.js b/tests/baselines/reference/destructuringParameterProperties4.js index 6da6f53a4fe..cd6334c8568 100644 --- a/tests/baselines/reference/destructuringParameterProperties4.js +++ b/tests/baselines/reference/destructuringParameterProperties4.js @@ -28,38 +28,26 @@ class C2 extends C1 { //// [destructuringParameterProperties4.js] -var __extends = this.__extends || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - __.prototype = b.prototype; - d.prototype = new __(); -}; -var C1 = (function () { - function C1(k, [a, b, c]) { +class C1 { + constructor(k, [a, b, c]) { this.k = k; this.[a, b, c] = [a, b, c]; if ((b === undefined && c === undefined) || (this.b === undefined && this.c === undefined)) { this.a = a || k; } } - C1.prototype.getA = function () { + getA() { return this.a; - }; - C1.prototype.getB = function () { - return this.b; - }; - C1.prototype.getC = function () { - return this.c; - }; - return C1; -})(); -var C2 = (function (_super) { - __extends(C2, _super); - function C2() { - _super.apply(this, arguments); } - C2.prototype.doSomethingWithSuperProperties = function () { + getB() { + return this.b; + } + getC() { + return this.c; + } +} +class C2 extends C1 { + doSomethingWithSuperProperties() { return `${this.a} ${this.b} ${this.c}`; - }; - return C2; -})(C1); + } +} diff --git a/tests/baselines/reference/disallowLineTerminatorBeforeArrow.errors.txt b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.errors.txt new file mode 100644 index 00000000000..fbd9be772fa --- /dev/null +++ b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.errors.txt @@ -0,0 +1,131 @@ +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(2,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(4,7): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(6,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(8,7): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(10,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(12,7): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(14,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(16,7): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(18,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(21,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(23,8): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(26,8): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(52,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(54,5): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(59,13): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(63,13): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(68,13): error TS1200: Line terminator not permitted before arrow. +tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts(72,9): error TS1200: Line terminator not permitted before arrow. + + +==== tests/cases/conformance/es6/arrowFunction/disallowLineTerminatorBeforeArrow.ts (18 errors) ==== + var f1 = () + => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f2 = (x: string, y: string) /* + */ => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f3 = (x: string, y: number, ...rest) + => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f4 = (x: string, y: number, ...rest) /* + */ => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f5 = (...rest) + => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f6 = (...rest) /* + */ => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f7 = (x: string, y: number, z = 10) + => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f8 = (x: string, y: number, z = 10) /* + */ => { } + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f9 = (a: number): number + => a; + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f10 = (a: number) : + number + => a + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f11 = (a: number): number /* + */ => a; + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + var f12 = (a: number) : + number /* + */ => a + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + + // Should be valid. + var f11 = (a: number + ) => a; + + // Should be valid. + var f12 = (a: number) + : number => a; + + // Should be valid. + var f13 = (a: number): + number => a; + + // Should be valid. + var f14 = () /* */ => {} + + // Should be valid. + var f15 = (a: number): number /* */ => a + + // Should be valid. + var f16 = (a: number, b = 10): + number /* */ => a + b; + + function foo(func: () => boolean) { } + foo(() + => true); + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + foo(() + => { return false; }); + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + + module m { + class City { + constructor(x: number, thing = () + => 100) { + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + } + + public m = () + => 2 * 2 * 2 + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + } + + export enum Enum { + claw = (() + => 10)() + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + } + + export var v = x + => new City(Enum.claw); + ~~ +!!! error TS1200: Line terminator not permitted before arrow. + } + \ No newline at end of file diff --git a/tests/baselines/reference/disallowLineTerminatorBeforeArrow.js b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.js new file mode 100644 index 00000000000..7e292614d43 --- /dev/null +++ b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.js @@ -0,0 +1,170 @@ +//// [disallowLineTerminatorBeforeArrow.ts] +var f1 = () + => { } +var f2 = (x: string, y: string) /* + */ => { } +var f3 = (x: string, y: number, ...rest) + => { } +var f4 = (x: string, y: number, ...rest) /* + */ => { } +var f5 = (...rest) + => { } +var f6 = (...rest) /* + */ => { } +var f7 = (x: string, y: number, z = 10) + => { } +var f8 = (x: string, y: number, z = 10) /* + */ => { } +var f9 = (a: number): number + => a; +var f10 = (a: number) : + number + => a +var f11 = (a: number): number /* + */ => a; +var f12 = (a: number) : + number /* + */ => a + +// Should be valid. +var f11 = (a: number + ) => a; + +// Should be valid. +var f12 = (a: number) + : number => a; + +// Should be valid. +var f13 = (a: number): + number => a; + +// Should be valid. +var f14 = () /* */ => {} + +// Should be valid. +var f15 = (a: number): number /* */ => a + +// Should be valid. +var f16 = (a: number, b = 10): + number /* */ => a + b; + +function foo(func: () => boolean) { } +foo(() + => true); +foo(() + => { return false; }); + +module m { + class City { + constructor(x: number, thing = () + => 100) { + } + + public m = () + => 2 * 2 * 2 + } + + export enum Enum { + claw = (() + => 10)() + } + + export var v = x + => new City(Enum.claw); +} + + +//// [disallowLineTerminatorBeforeArrow.js] +var f1 = function () { }; +var f2 = function (x, y) { }; +var f3 = function (x, y) { + var rest = []; + for (var _i = 2; _i < arguments.length; _i++) { + rest[_i - 2] = arguments[_i]; + } +}; +var f4 = function (x, y) { + var rest = []; + for (var _i = 2; _i < arguments.length; _i++) { + rest[_i - 2] = arguments[_i]; + } +}; +var f5 = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var f6 = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var f7 = function (x, y, z) { + if (z === void 0) { z = 10; } +}; +var f8 = function (x, y, z) { + if (z === void 0) { z = 10; } +}; +var f9 = function (a) { + return a; +}; +var f10 = function (a) { + return a; +}; +var f11 = function (a) { + return a; +}; +var f12 = function (a) { + return a; +}; +// Should be valid. +var f11 = function (a) { + return a; +}; +// Should be valid. +var f12 = function (a) { + return a; +}; +// Should be valid. +var f13 = function (a) { + return a; +}; +// Should be valid. +var f14 = function () { }; +// Should be valid. +var f15 = function (a) { return a; }; +// Should be valid. +var f16 = function (a, b) { + if (b === void 0) { b = 10; } + return a + b; +}; +function foo(func) { } +foo(function () { + return true; +}); +foo(function () { return false; }); +var m; +(function (m) { + var City = (function () { + function City(x, thing) { + if (thing === void 0) { thing = function () { + return 100; + }; } + this.m = function () { + return 2 * 2 * 2; + }; + } + return City; + })(); + (function (Enum) { + Enum[Enum["claw"] = (function () { + return 10; + })()] = "claw"; + })(m.Enum || (m.Enum = {})); + var Enum = m.Enum; + m.v = function (x) { + return new City(Enum.claw); + }; +})(m || (m = {})); diff --git a/tests/baselines/reference/downlevelLetConst1.errors.txt b/tests/baselines/reference/downlevelLetConst1.errors.txt new file mode 100644 index 00000000000..a46d1973e04 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst1.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/downlevelLetConst1.ts(1,6): error TS1123: Variable declaration list cannot be empty. + + +==== tests/cases/compiler/downlevelLetConst1.ts (1 errors) ==== + const + +!!! error TS1123: Variable declaration list cannot be empty. \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst1.js b/tests/baselines/reference/downlevelLetConst1.js new file mode 100644 index 00000000000..3463c100324 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst1.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst1.ts] +const + +//// [downlevelLetConst1.js] +var ; diff --git a/tests/baselines/reference/downlevelLetConst10.js b/tests/baselines/reference/downlevelLetConst10.js new file mode 100644 index 00000000000..8beb79b04b4 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst10.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst10.ts] +let a: number = 1 + +//// [downlevelLetConst10.js] +var a = 1; diff --git a/tests/baselines/reference/downlevelLetConst10.types b/tests/baselines/reference/downlevelLetConst10.types new file mode 100644 index 00000000000..05fe3029455 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst10.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst10.ts === +let a: number = 1 +>a : number + diff --git a/tests/baselines/reference/downlevelLetConst11.errors.txt b/tests/baselines/reference/downlevelLetConst11.errors.txt new file mode 100644 index 00000000000..42449bd3c8a --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst11.errors.txt @@ -0,0 +1,8 @@ +tests/cases/compiler/downlevelLetConst11.ts(2,4): error TS1123: Variable declaration list cannot be empty. + + +==== tests/cases/compiler/downlevelLetConst11.ts (1 errors) ==== + "use strict"; + let + +!!! error TS1123: Variable declaration list cannot be empty. \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst11.js b/tests/baselines/reference/downlevelLetConst11.js new file mode 100644 index 00000000000..377c7e6a9ed --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst11.js @@ -0,0 +1,7 @@ +//// [downlevelLetConst11.ts] +"use strict"; +let + +//// [downlevelLetConst11.js] +"use strict"; +var ; diff --git a/tests/baselines/reference/downlevelLetConst12.js b/tests/baselines/reference/downlevelLetConst12.js new file mode 100644 index 00000000000..6437d17accb --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst12.js @@ -0,0 +1,22 @@ +//// [downlevelLetConst12.ts] + +'use strict' +// top level let\const should not be renamed +let foo; +const bar = 1; + +let [baz] = []; +let {a: baz2} = { a: 1 }; + +const [baz3] = [] +const {a: baz4} = { a: 1 }; + +//// [downlevelLetConst12.js] +'use strict'; +// top level let\const should not be renamed +var foo; +var bar = 1; +var baz = ([])[0]; +var baz2 = ({ a: 1 }).a; +var baz3 = ([])[0]; +var baz4 = ({ a: 1 }).a; diff --git a/tests/baselines/reference/downlevelLetConst12.types b/tests/baselines/reference/downlevelLetConst12.types new file mode 100644 index 00000000000..90a814e0753 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst12.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/downlevelLetConst12.ts === + +'use strict' +// top level let\const should not be renamed +let foo; +>foo : any + +const bar = 1; +>bar : number + +let [baz] = []; +>baz : any +>[] : undefined[] + +let {a: baz2} = { a: 1 }; +>a : unknown +>baz2 : number +>{ a: 1 } : { a: number; } +>a : number + +const [baz3] = [] +>baz3 : any +>[] : undefined[] + +const {a: baz4} = { a: 1 }; +>a : unknown +>baz4 : number +>{ a: 1 } : { a: number; } +>a : number + diff --git a/tests/baselines/reference/downlevelLetConst13.js b/tests/baselines/reference/downlevelLetConst13.js new file mode 100644 index 00000000000..8324d697e95 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst13.js @@ -0,0 +1,39 @@ +//// [downlevelLetConst13.ts] + +'use strict' +// exported let\const bindings should not be renamed + +export let foo = 10; +export const bar = "123" +export let [bar1] = [1]; +export const [bar2] = [2]; +export let {a: bar3} = { a: 1 }; +export const {a: bar4} = { a: 1 }; + +export module M { + export let baz = 100; + export const baz2 = true; + export let [bar5] = [1]; + export const [bar6] = [2]; + export let {a: bar7} = { a: 1 }; + export const {a: bar8} = { a: 1 }; +} + +//// [downlevelLetConst13.js] +'use strict'; +// exported let\const bindings should not be renamed +exports.foo = 10; +exports.bar = "123"; +exports.bar1 = ([1])[0]; +exports.bar2 = ([2])[0]; +exports.bar3 = ({ a: 1 }).a; +exports.bar4 = ({ a: 1 }).a; +var M; +(function (M) { + M.baz = 100; + M.baz2 = true; + M.bar5 = ([1])[0]; + M.bar6 = ([2])[0]; + M.bar7 = ({ a: 1 }).a; + M.bar8 = ({ a: 1 }).a; +})(M = exports.M || (exports.M = {})); diff --git a/tests/baselines/reference/downlevelLetConst13.types b/tests/baselines/reference/downlevelLetConst13.types new file mode 100644 index 00000000000..e72e3936f43 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst13.types @@ -0,0 +1,60 @@ +=== tests/cases/compiler/downlevelLetConst13.ts === + +'use strict' +// exported let\const bindings should not be renamed + +export let foo = 10; +>foo : number + +export const bar = "123" +>bar : string + +export let [bar1] = [1]; +>bar1 : number +>[1] : [number] + +export const [bar2] = [2]; +>bar2 : number +>[2] : [number] + +export let {a: bar3} = { a: 1 }; +>a : unknown +>bar3 : number +>{ a: 1 } : { a: number; } +>a : number + +export const {a: bar4} = { a: 1 }; +>a : unknown +>bar4 : number +>{ a: 1 } : { a: number; } +>a : number + +export module M { +>M : typeof M + + export let baz = 100; +>baz : number + + export const baz2 = true; +>baz2 : boolean + + export let [bar5] = [1]; +>bar5 : number +>[1] : [number] + + export const [bar6] = [2]; +>bar6 : number +>[2] : [number] + + export let {a: bar7} = { a: 1 }; +>a : unknown +>bar7 : number +>{ a: 1 } : { a: number; } +>a : number + + export const {a: bar8} = { a: 1 }; +>a : unknown +>bar8 : number +>{ a: 1 } : { a: number; } +>a : number +} diff --git a/tests/baselines/reference/downlevelLetConst14.js b/tests/baselines/reference/downlevelLetConst14.js new file mode 100644 index 00000000000..d45cf10d3a7 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst14.js @@ -0,0 +1,107 @@ +//// [downlevelLetConst14.ts] +'use strict' +declare function use(a: any); + +var x = 10; +var z0, z1, z2, z3; +{ + let x = 20; + use(x); + + let [z0] = [1]; + use(z0); + let [z1] = [1] + use(z1); + let {a: z2} = { a: 1 }; + use(z2); + let {a: z3} = { a: 1 }; + use(z3); +} +use(x); +use(z0); +use(z1); +use(z2); +use(z3); +var z6; +var y = true; +{ + let y = ""; + let [z6] = [true] + { + let y = 1; + let {a: z6} = {a: 1} + use(y); + use(z6); + } + use(y); + use(z6); +} +use(y); +use(z6); + +var z = false; +var z5 = 1; +{ + let z = ""; + let [z5] = [5]; + { + let _z = 1; + let {a: _z5} = { a: 1 }; + // try to step on generated name + use(_z); + } + use(z); +} +use(y); + +//// [downlevelLetConst14.js] +'use strict'; +var x = 10; +var z0, z1, z2, z3; +{ + var x_1 = 20; + use(x_1); + var z0_1 = ([1])[0]; + use(z0_1); + var z1_1 = ([1])[0]; + use(z1_1); + var z2_1 = ({ a: 1 }).a; + use(z2_1); + var z3_1 = ({ a: 1 }).a; + use(z3_1); +} +use(x); +use(z0); +use(z1); +use(z2); +use(z3); +var z6; +var y = true; +{ + var y_1 = ""; + var z6_1 = ([true])[0]; + { + var y_2 = 1; + var z6_2 = ({ a: 1 }).a; + use(y_2); + use(z6_2); + } + use(y_1); + use(z6_1); +} +use(y); +use(z6); +var z = false; +var z5 = 1; +{ + var z_1 = ""; + var z5_1 = ([5])[0]; + { + var _z = 1; + var _z5 = ({ a: 1 }).a; + // try to step on generated name + use(_z); + } + use(z_1); +} +use(y); diff --git a/tests/baselines/reference/downlevelLetConst14.types b/tests/baselines/reference/downlevelLetConst14.types new file mode 100644 index 00000000000..05b66948830 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst14.types @@ -0,0 +1,178 @@ +=== tests/cases/compiler/downlevelLetConst14.ts === +'use strict' +declare function use(a: any); +>use : (a: any) => any +>a : any + +var x = 10; +>x : number + +var z0, z1, z2, z3; +>z0 : any +>z1 : any +>z2 : any +>z3 : any +{ + let x = 20; +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number + + let [z0] = [1]; +>z0 : number +>[1] : [number] + + use(z0); +>use(z0) : any +>use : (a: any) => any +>z0 : number + + let [z1] = [1] +>z1 : number +>[1] : [number] + + use(z1); +>use(z1) : any +>use : (a: any) => any +>z1 : number + + let {a: z2} = { a: 1 }; +>a : unknown +>z2 : number +>{ a: 1 } : { a: number; } +>a : number + + use(z2); +>use(z2) : any +>use : (a: any) => any +>z2 : number + + let {a: z3} = { a: 1 }; +>a : unknown +>z3 : number +>{ a: 1 } : { a: number; } +>a : number + + use(z3); +>use(z3) : any +>use : (a: any) => any +>z3 : number +} +use(x); +>use(x) : any +>use : (a: any) => any +>x : number + +use(z0); +>use(z0) : any +>use : (a: any) => any +>z0 : any + +use(z1); +>use(z1) : any +>use : (a: any) => any +>z1 : any + +use(z2); +>use(z2) : any +>use : (a: any) => any +>z2 : any + +use(z3); +>use(z3) : any +>use : (a: any) => any +>z3 : any + +var z6; +>z6 : any + +var y = true; +>y : boolean +{ + let y = ""; +>y : string + + let [z6] = [true] +>z6 : boolean +>[true] : [boolean] + { + let y = 1; +>y : number + + let {a: z6} = {a: 1} +>a : unknown +>z6 : number +>{a: 1} : { a: number; } +>a : number + + use(y); +>use(y) : any +>use : (a: any) => any +>y : number + + use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : number + } + use(y); +>use(y) : any +>use : (a: any) => any +>y : string + + use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : boolean +} +use(y); +>use(y) : any +>use : (a: any) => any +>y : boolean + +use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : any + +var z = false; +>z : boolean + +var z5 = 1; +>z5 : number +{ + let z = ""; +>z : string + + let [z5] = [5]; +>z5 : number +>[5] : [number] + { + let _z = 1; +>_z : number + + let {a: _z5} = { a: 1 }; +>a : unknown +>_z5 : number +>{ a: 1 } : { a: number; } +>a : number + + // try to step on generated name + use(_z); +>use(_z) : any +>use : (a: any) => any +>_z : number + } + use(z); +>use(z) : any +>use : (a: any) => any +>z : string +} +use(y); +>use(y) : any +>use : (a: any) => any +>y : boolean + diff --git a/tests/baselines/reference/downlevelLetConst15.js b/tests/baselines/reference/downlevelLetConst15.js new file mode 100644 index 00000000000..99522542d38 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst15.js @@ -0,0 +1,107 @@ +//// [downlevelLetConst15.ts] +'use strict' +declare function use(a: any); + +var x = 10; +var z0, z1, z2, z3; +{ + const x = 20; + use(x); + + const [z0] = [1]; + use(z0); + const [{a: z1}] = [{a: 1}] + use(z1); + const {a: z2} = { a: 1 }; + use(z2); + const {a: {b: z3}} = { a: {b: 1} }; + use(z3); +} +use(x); +use(z0); +use(z1); +use(z2); +use(z3); +var z6; +var y = true; +{ + const y = ""; + const [z6] = [true] + { + const y = 1; + const {a: z6} = { a: 1 } + use(y); + use(z6); + } + use(y); + use(z6); +} +use(y); +use(z6); + +var z = false; +var z5 = 1; +{ + const z = ""; + const [z5] = [5]; + { + const _z = 1; + const {a: _z5} = { a: 1 }; + // try to step on generated name + use(_z); + } + use(z); +} +use(y); + +//// [downlevelLetConst15.js] +'use strict'; +var x = 10; +var z0, z1, z2, z3; +{ + var x_1 = 20; + use(x_1); + var z0_1 = ([1])[0]; + use(z0_1); + var z1_1 = ([{ a: 1 }])[0].a; + use(z1_1); + var z2_1 = ({ a: 1 }).a; + use(z2_1); + var z3_1 = ({ a: { b: 1 } }).a.b; + use(z3_1); +} +use(x); +use(z0); +use(z1); +use(z2); +use(z3); +var z6; +var y = true; +{ + var y_1 = ""; + var z6_1 = ([true])[0]; + { + var y_2 = 1; + var z6_2 = ({ a: 1 }).a; + use(y_2); + use(z6_2); + } + use(y_1); + use(z6_1); +} +use(y); +use(z6); +var z = false; +var z5 = 1; +{ + var z_1 = ""; + var z5_1 = ([5])[0]; + { + var _z = 1; + var _z5 = ({ a: 1 }).a; + // try to step on generated name + use(_z); + } + use(z_1); +} +use(y); diff --git a/tests/baselines/reference/downlevelLetConst15.types b/tests/baselines/reference/downlevelLetConst15.types new file mode 100644 index 00000000000..008d132ab70 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst15.types @@ -0,0 +1,184 @@ +=== tests/cases/compiler/downlevelLetConst15.ts === +'use strict' +declare function use(a: any); +>use : (a: any) => any +>a : any + +var x = 10; +>x : number + +var z0, z1, z2, z3; +>z0 : any +>z1 : any +>z2 : any +>z3 : any +{ + const x = 20; +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number + + const [z0] = [1]; +>z0 : number +>[1] : [number] + + use(z0); +>use(z0) : any +>use : (a: any) => any +>z0 : number + + const [{a: z1}] = [{a: 1}] +>a : unknown +>z1 : number +>[{a: 1}] : [{ a: number; }] +>{a: 1} : { a: number; } +>a : number + + use(z1); +>use(z1) : any +>use : (a: any) => any +>z1 : number + + const {a: z2} = { a: 1 }; +>a : unknown +>z2 : number +>{ a: 1 } : { a: number; } +>a : number + + use(z2); +>use(z2) : any +>use : (a: any) => any +>z2 : number + + const {a: {b: z3}} = { a: {b: 1} }; +>a : unknown +>b : unknown +>z3 : number +>{ a: {b: 1} } : { a: { b: number; }; } +>a : { b: number; } +>{b: 1} : { b: number; } +>b : number + + use(z3); +>use(z3) : any +>use : (a: any) => any +>z3 : number +} +use(x); +>use(x) : any +>use : (a: any) => any +>x : number + +use(z0); +>use(z0) : any +>use : (a: any) => any +>z0 : any + +use(z1); +>use(z1) : any +>use : (a: any) => any +>z1 : any + +use(z2); +>use(z2) : any +>use : (a: any) => any +>z2 : any + +use(z3); +>use(z3) : any +>use : (a: any) => any +>z3 : any + +var z6; +>z6 : any + +var y = true; +>y : boolean +{ + const y = ""; +>y : string + + const [z6] = [true] +>z6 : boolean +>[true] : [boolean] + { + const y = 1; +>y : number + + const {a: z6} = { a: 1 } +>a : unknown +>z6 : number +>{ a: 1 } : { a: number; } +>a : number + + use(y); +>use(y) : any +>use : (a: any) => any +>y : number + + use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : number + } + use(y); +>use(y) : any +>use : (a: any) => any +>y : string + + use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : boolean +} +use(y); +>use(y) : any +>use : (a: any) => any +>y : boolean + +use(z6); +>use(z6) : any +>use : (a: any) => any +>z6 : any + +var z = false; +>z : boolean + +var z5 = 1; +>z5 : number +{ + const z = ""; +>z : string + + const [z5] = [5]; +>z5 : number +>[5] : [number] + { + const _z = 1; +>_z : number + + const {a: _z5} = { a: 1 }; +>a : unknown +>_z5 : number +>{ a: 1 } : { a: number; } +>a : number + + // try to step on generated name + use(_z); +>use(_z) : any +>use : (a: any) => any +>_z : number + } + use(z); +>use(z) : any +>use : (a: any) => any +>z : string +} +use(y); +>use(y) : any +>use : (a: any) => any +>y : boolean + diff --git a/tests/baselines/reference/downlevelLetConst16.errors.txt b/tests/baselines/reference/downlevelLetConst16.errors.txt new file mode 100644 index 00000000000..94c53360b87 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst16.errors.txt @@ -0,0 +1,242 @@ +tests/cases/compiler/downlevelLetConst16.ts(195,14): error TS2461: Type 'undefined' is not an array type. +tests/cases/compiler/downlevelLetConst16.ts(202,15): error TS2459: Type 'undefined' has no property 'a' and no string index signature. +tests/cases/compiler/downlevelLetConst16.ts(216,16): error TS2461: Type 'undefined' is not an array type. +tests/cases/compiler/downlevelLetConst16.ts(223,17): error TS2459: Type 'undefined' has no property 'a' and no string index signature. + + +==== tests/cases/compiler/downlevelLetConst16.ts (4 errors) ==== + 'use strict' + + declare function use(a: any); + + var x = 10; + var y; + var z; + use(x); + use(y); + use(z); + function foo1() { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = {a: 1}; + use(z); + } + + function foo2() { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); + } + + class A { + m1() { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + m2() { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); + } + + } + + class B { + m1() { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + m2() { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); + } + } + + function bar1() { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + } + + function bar2() { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); + } + + module M1 { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + + module M2 { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); + } + + module M3 { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + + module M4 { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); + use(y); + use(z); + } + + function foo3() { + for (let x; ;) { + use(x); + } + for (let [y] = []; ;) { + use(y); + } + for (let {a: z} = {a: 1}; ;) { + use(z); + } + use(x); + } + + function foo4() { + for (const x = 1; ;) { + use(x); + } + for (const [y] = []; ;) { + use(y); + } + for (const {a: z} = { a: 1 }; ;) { + use(z); + } + use(x); + } + + function foo5() { + for (let x in []) { + use(x); + } + use(x); + } + + function foo6() { + for (const x in []) { + use(x); + } + use(x); + } + + function foo7() { + for (let x of []) { + use(x); + } + use(x); + } + + function foo8() { + for (let [x] of []) { + ~~~ +!!! error TS2461: Type 'undefined' is not an array type. + use(x); + } + use(x); + } + + function foo9() { + for (let {a: x} of []) { + ~ +!!! error TS2459: Type 'undefined' has no property 'a' and no string index signature. + use(x); + } + use(x); + } + + function foo10() { + for (const x of []) { + use(x); + } + use(x); + } + + function foo11() { + for (const [x] of []) { + ~~~ +!!! error TS2461: Type 'undefined' is not an array type. + use(x); + } + use(x); + } + + function foo12() { + for (const {a: x} of []) { + ~ +!!! error TS2459: Type 'undefined' has no property 'a' and no string index signature. + use(x); + } + use(x); + } \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst16.js b/tests/baselines/reference/downlevelLetConst16.js new file mode 100644 index 00000000000..4765b50e0a1 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst16.js @@ -0,0 +1,445 @@ +//// [downlevelLetConst16.ts] +'use strict' + +declare function use(a: any); + +var x = 10; +var y; +var z; +use(x); +use(y); +use(z); +function foo1() { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = {a: 1}; + use(z); +} + +function foo2() { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); +} + +class A { + m1() { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + m2() { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); + } + +} + +class B { + m1() { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + m2() { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); + } +} + +function bar1() { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); +} + +function bar2() { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); +} + +module M1 { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); +} + +module M2 { + { + let x = 1; + use(x); + let [y] = [1]; + use(y); + let {a: z} = { a: 1 }; + use(z); + } + use(x); +} + +module M3 { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + +} + +module M4 { + { + const x = 1; + use(x); + const [y] = [1]; + use(y); + const {a: z} = { a: 1 }; + use(z); + + } + use(x); + use(y); + use(z); +} + +function foo3() { + for (let x; ;) { + use(x); + } + for (let [y] = []; ;) { + use(y); + } + for (let {a: z} = {a: 1}; ;) { + use(z); + } + use(x); +} + +function foo4() { + for (const x = 1; ;) { + use(x); + } + for (const [y] = []; ;) { + use(y); + } + for (const {a: z} = { a: 1 }; ;) { + use(z); + } + use(x); +} + +function foo5() { + for (let x in []) { + use(x); + } + use(x); +} + +function foo6() { + for (const x in []) { + use(x); + } + use(x); +} + +function foo7() { + for (let x of []) { + use(x); + } + use(x); +} + +function foo8() { + for (let [x] of []) { + use(x); + } + use(x); +} + +function foo9() { + for (let {a: x} of []) { + use(x); + } + use(x); +} + +function foo10() { + for (const x of []) { + use(x); + } + use(x); +} + +function foo11() { + for (const [x] of []) { + use(x); + } + use(x); +} + +function foo12() { + for (const {a: x} of []) { + use(x); + } + use(x); +} + +//// [downlevelLetConst16.js] +'use strict'; +var x = 10; +var y; +var z; +use(x); +use(y); +use(z); +function foo1() { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); +} +function foo2() { + { + var x_1 = 1; + use(x_1); + var y_1 = ([1])[0]; + use(y_1); + var z_1 = ({ a: 1 }).a; + use(z_1); + } + use(x); +} +var A = (function () { + function A() { + } + A.prototype.m1 = function () { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); + }; + A.prototype.m2 = function () { + { + var x_2 = 1; + use(x_2); + var y_2 = ([1])[0]; + use(y_2); + var z_2 = ({ a: 1 }).a; + use(z_2); + } + use(x); + }; + return A; +})(); +var B = (function () { + function B() { + } + B.prototype.m1 = function () { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); + }; + B.prototype.m2 = function () { + { + var x_3 = 1; + use(x_3); + var y_3 = ([1])[0]; + use(y_3); + var z_3 = ({ a: 1 }).a; + use(z_3); + } + use(x); + }; + return B; +})(); +function bar1() { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); +} +function bar2() { + { + var x_4 = 1; + use(x_4); + var y_4 = ([1])[0]; + use(y_4); + var z_4 = ({ a: 1 }).a; + use(z_4); + } + use(x); +} +var M1; +(function (M1) { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); +})(M1 || (M1 = {})); +var M2; +(function (M2) { + { + var x_5 = 1; + use(x_5); + var y_5 = ([1])[0]; + use(y_5); + var z_5 = ({ a: 1 }).a; + use(z_5); + } + use(x); +})(M2 || (M2 = {})); +var M3; +(function (M3) { + var x = 1; + use(x); + var y = ([1])[0]; + use(y); + var z = ({ a: 1 }).a; + use(z); +})(M3 || (M3 = {})); +var M4; +(function (M4) { + { + var x_6 = 1; + use(x_6); + var y_6 = ([1])[0]; + use(y_6); + var z_6 = ({ a: 1 }).a; + use(z_6); + } + use(x); + use(y); + use(z); +})(M4 || (M4 = {})); +function foo3() { + for (var x_7 = void 0;;) { + use(x_7); + } + for (var y_7 = ([])[0];;) { + use(y_7); + } + for (var z_7 = ({ a: 1 }).a;;) { + use(z_7); + } + use(x); +} +function foo4() { + for (var x_8 = 1;;) { + use(x_8); + } + for (var y_8 = ([])[0];;) { + use(y_8); + } + for (var z_8 = ({ a: 1 }).a;;) { + use(z_8); + } + use(x); +} +function foo5() { + for (var x_9 in []) { + use(x_9); + } + use(x); +} +function foo6() { + for (var x_10 in []) { + use(x_10); + } + use(x); +} +function foo7() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_11 = _a[_i]; + use(x_11); + } + use(x); +} +function foo8() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_12 = _a[_i][0]; + use(x_12); + } + use(x); +} +function foo9() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_13 = _a[_i].a; + use(x_13); + } + use(x); +} +function foo10() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_14 = _a[_i]; + use(x_14); + } + use(x); +} +function foo11() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_15 = _a[_i][0]; + use(x_15); + } + use(x); +} +function foo12() { + for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_16 = _a[_i].a; + use(x_16); + } + use(x); +} diff --git a/tests/baselines/reference/downlevelLetConst17.js b/tests/baselines/reference/downlevelLetConst17.js new file mode 100644 index 00000000000..56ab1e6df54 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst17.js @@ -0,0 +1,123 @@ +//// [downlevelLetConst17.ts] +'use strict' + +declare function use(a: any); + +var x; +for (let x = 10; ;) { + use(x); +} +use(x); + +for (const x = 10; ;) { + use(x); +} + +for (; ;) { + let x = 10; + use(x); + x = 1; +} + +for (; ;) { + const x = 10; + use(x); +} + +for (let x; ;) { + use(x); + x = 1; +} + +for (; ;) { + let x; + use(x); + x = 1; +} + +while (true) { + let x; + use(x); +} + +while (true) { + const x = true; + use(x); +} + +do { + let x; + use(x); +} while (true); + +do { + let x; + use(x); +} while (true); + +for (let x in []) { + use(x); +} + +for (const x in []) { + use(x); +} + +for (const x of []) { + use(x); +} + +//// [downlevelLetConst17.js] +'use strict'; +var x; +for (var x_1 = 10;;) { + use(x_1); +} +use(x); +for (var x_2 = 10;;) { + use(x_2); +} +for (;;) { + var x_3 = 10; + use(x_3); + x_3 = 1; +} +for (;;) { + var x_4 = 10; + use(x_4); +} +for (var x_5 = void 0;;) { + use(x_5); + x_5 = 1; +} +for (;;) { + var x_6 = void 0; + use(x_6); + x_6 = 1; +} +while (true) { + var x_7 = void 0; + use(x_7); +} +while (true) { + var x_8 = true; + use(x_8); +} +do { + var x_9 = void 0; + use(x_9); +} while (true); +do { + var x_10 = void 0; + use(x_10); +} while (true); +for (var x_11 in []) { + use(x_11); +} +for (var x_12 in []) { + use(x_12); +} +for (var _i = 0, _a = []; _i < _a.length; _i++) { + var x_13 = _a[_i]; + use(x_13); +} diff --git a/tests/baselines/reference/downlevelLetConst17.types b/tests/baselines/reference/downlevelLetConst17.types new file mode 100644 index 00000000000..0c5a8eaa86b --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst17.types @@ -0,0 +1,154 @@ +=== tests/cases/compiler/downlevelLetConst17.ts === +'use strict' + +declare function use(a: any); +>use : (a: any) => any +>a : any + +var x; +>x : any + +for (let x = 10; ;) { +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number +} +use(x); +>use(x) : any +>use : (a: any) => any +>x : any + +for (const x = 10; ;) { +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number +} + +for (; ;) { + let x = 10; +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number + + x = 1; +>x = 1 : number +>x : number +} + +for (; ;) { + const x = 10; +>x : number + + use(x); +>use(x) : any +>use : (a: any) => any +>x : number +} + +for (let x; ;) { +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + + x = 1; +>x = 1 : number +>x : any +} + +for (; ;) { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + + x = 1; +>x = 1 : number +>x : any +} + +while (true) { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any +} + +while (true) { + const x = true; +>x : boolean + + use(x); +>use(x) : any +>use : (a: any) => any +>x : boolean +} + +do { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + +} while (true); + +do { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + +} while (true); + +for (let x in []) { +>x : any +>[] : undefined[] + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any +} + +for (const x in []) { +>x : any +>[] : undefined[] + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any +} + +for (const x of []) { +>x : any +>[] : undefined[] + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any +} diff --git a/tests/baselines/reference/downlevelLetConst18.errors.txt b/tests/baselines/reference/downlevelLetConst18.errors.txt new file mode 100644 index 00000000000..8f30b0f802a --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst18.errors.txt @@ -0,0 +1,60 @@ +tests/cases/compiler/downlevelLetConst18.ts(3,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(4,14): error TS2393: Duplicate function implementation. +tests/cases/compiler/downlevelLetConst18.ts(7,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(8,14): error TS2393: Duplicate function implementation. +tests/cases/compiler/downlevelLetConst18.ts(11,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(15,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(19,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(23,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. +tests/cases/compiler/downlevelLetConst18.ts(27,1): error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + + +==== tests/cases/compiler/downlevelLetConst18.ts (9 errors) ==== + 'use strict' + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + function foo() { x }; + ~~~ +!!! error TS2393: Duplicate function implementation. + } + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + function foo() { x }; + ~~~ +!!! error TS2393: Duplicate function implementation. + } + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + (() => { x })(); + } + + for (const x = 1; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + (() => { x })(); + } + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + ({ foo() { x }}) + } + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + ({ get foo() { return x } }) + } + + for (let x; ;) { + ~~~ +!!! error TS4091: Loop contains block-scoped variable 'x' referenced by a function in the loop. This is only supported in ECMAScript 6 or higher. + ({ set foo(v) { x } }) + } + \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst18.js b/tests/baselines/reference/downlevelLetConst18.js new file mode 100644 index 00000000000..70b8cb9e346 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst18.js @@ -0,0 +1,57 @@ +//// [downlevelLetConst18.ts] +'use strict' + +for (let x; ;) { + function foo() { x }; +} + +for (let x; ;) { + function foo() { x }; +} + +for (let x; ;) { + (() => { x })(); +} + +for (const x = 1; ;) { + (() => { x })(); +} + +for (let x; ;) { + ({ foo() { x }}) +} + +for (let x; ;) { + ({ get foo() { return x } }) +} + +for (let x; ;) { + ({ set foo(v) { x } }) +} + + +//// [downlevelLetConst18.js] +'use strict'; +for (var x = void 0;;) { + function foo() { x; } + ; +} +for (var x = void 0;;) { + function foo() { x; } + ; +} +for (var x = void 0;;) { + (function () { x; })(); +} +for (var x = 1;;) { + (function () { x; })(); +} +for (var x = void 0;;) { + ({ foo: function () { x; } }); +} +for (var x = void 0;;) { + ({ get foo() { return x; } }); +} +for (var x = void 0;;) { + ({ set foo(v) { x; } }); +} diff --git a/tests/baselines/reference/downlevelLetConst19.js b/tests/baselines/reference/downlevelLetConst19.js new file mode 100644 index 00000000000..2b3ec8036cb --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst19.js @@ -0,0 +1,39 @@ +//// [downlevelLetConst19.ts] +'use strict' +declare function use(a: any); +var x; +function a() { + { + let x; + use(x); + + function b() { + { + let x; + use(x); + } + use(x); + } + } + use(x) +} +use(x) + +//// [downlevelLetConst19.js] +'use strict'; +var x; +function a() { + { + var x_1; + use(x_1); + function b() { + { + var x_2; + use(x_2); + } + use(x_1); + } + } + use(x); +} +use(x); diff --git a/tests/baselines/reference/downlevelLetConst19.types b/tests/baselines/reference/downlevelLetConst19.types new file mode 100644 index 00000000000..492d10b59c9 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst19.types @@ -0,0 +1,47 @@ +=== tests/cases/compiler/downlevelLetConst19.ts === +'use strict' +declare function use(a: any); +>use : (a: any) => any +>a : any + +var x; +>x : any + +function a() { +>a : () => void + { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + + function b() { +>b : () => void + { + let x; +>x : any + + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + } + use(x); +>use(x) : any +>use : (a: any) => any +>x : any + } + } + use(x) +>use(x) : any +>use : (a: any) => any +>x : any +} +use(x) +>use(x) : any +>use : (a: any) => any +>x : any + diff --git a/tests/baselines/reference/downlevelLetConst2.errors.txt b/tests/baselines/reference/downlevelLetConst2.errors.txt new file mode 100644 index 00000000000..9da0c94a12e --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst2.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/downlevelLetConst2.ts(1,7): error TS1155: 'const' declarations must be initialized + + +==== tests/cases/compiler/downlevelLetConst2.ts (1 errors) ==== + const a + ~ +!!! error TS1155: 'const' declarations must be initialized \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst2.js b/tests/baselines/reference/downlevelLetConst2.js new file mode 100644 index 00000000000..a73688cd4af --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst2.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst2.ts] +const a + +//// [downlevelLetConst2.js] +var a; diff --git a/tests/baselines/reference/downlevelLetConst3.js b/tests/baselines/reference/downlevelLetConst3.js new file mode 100644 index 00000000000..f6ef605c261 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst3.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst3.ts] +const a = 1 + +//// [downlevelLetConst3.js] +var a = 1; diff --git a/tests/baselines/reference/downlevelLetConst3.types b/tests/baselines/reference/downlevelLetConst3.types new file mode 100644 index 00000000000..6cd3f85e074 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst3.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst3.ts === +const a = 1 +>a : number + diff --git a/tests/baselines/reference/downlevelLetConst4.errors.txt b/tests/baselines/reference/downlevelLetConst4.errors.txt new file mode 100644 index 00000000000..3bf3e58cecc --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst4.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/downlevelLetConst4.ts(1,7): error TS1155: 'const' declarations must be initialized + + +==== tests/cases/compiler/downlevelLetConst4.ts (1 errors) ==== + const a: number + ~ +!!! error TS1155: 'const' declarations must be initialized \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst4.js b/tests/baselines/reference/downlevelLetConst4.js new file mode 100644 index 00000000000..725aa5cde8f --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst4.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst4.ts] +const a: number + +//// [downlevelLetConst4.js] +var a; diff --git a/tests/baselines/reference/downlevelLetConst5.js b/tests/baselines/reference/downlevelLetConst5.js new file mode 100644 index 00000000000..271c71b6829 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst5.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst5.ts] +const a: number = 1 + +//// [downlevelLetConst5.js] +var a = 1; diff --git a/tests/baselines/reference/downlevelLetConst5.types b/tests/baselines/reference/downlevelLetConst5.types new file mode 100644 index 00000000000..dd8cdf9fcdd --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst5.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst5.ts === +const a: number = 1 +>a : number + diff --git a/tests/baselines/reference/downlevelLetConst6.errors.txt b/tests/baselines/reference/downlevelLetConst6.errors.txt new file mode 100644 index 00000000000..bad0674c5c4 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst6.errors.txt @@ -0,0 +1,7 @@ +tests/cases/compiler/downlevelLetConst6.ts(1,1): error TS2304: Cannot find name 'let'. + + +==== tests/cases/compiler/downlevelLetConst6.ts (1 errors) ==== + let + ~~~ +!!! error TS2304: Cannot find name 'let'. \ No newline at end of file diff --git a/tests/baselines/reference/downlevelLetConst6.js b/tests/baselines/reference/downlevelLetConst6.js new file mode 100644 index 00000000000..2a1aea002d9 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst6.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst6.ts] +let + +//// [downlevelLetConst6.js] +let; diff --git a/tests/baselines/reference/downlevelLetConst7.js b/tests/baselines/reference/downlevelLetConst7.js new file mode 100644 index 00000000000..6020ddf2479 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst7.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst7.ts] +let a + +//// [downlevelLetConst7.js] +var a; diff --git a/tests/baselines/reference/downlevelLetConst7.types b/tests/baselines/reference/downlevelLetConst7.types new file mode 100644 index 00000000000..9c76479ecf5 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst7.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst7.ts === +let a +>a : any + diff --git a/tests/baselines/reference/downlevelLetConst8.js b/tests/baselines/reference/downlevelLetConst8.js new file mode 100644 index 00000000000..5cc548c1361 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst8.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst8.ts] +let a = 1 + +//// [downlevelLetConst8.js] +var a = 1; diff --git a/tests/baselines/reference/downlevelLetConst8.types b/tests/baselines/reference/downlevelLetConst8.types new file mode 100644 index 00000000000..a3b9986bbc8 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst8.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst8.ts === +let a = 1 +>a : number + diff --git a/tests/baselines/reference/downlevelLetConst9.js b/tests/baselines/reference/downlevelLetConst9.js new file mode 100644 index 00000000000..c6bcfe27a8a --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst9.js @@ -0,0 +1,5 @@ +//// [downlevelLetConst9.ts] +let a: number + +//// [downlevelLetConst9.js] +var a; diff --git a/tests/baselines/reference/downlevelLetConst9.types b/tests/baselines/reference/downlevelLetConst9.types new file mode 100644 index 00000000000..cab9ac82a60 --- /dev/null +++ b/tests/baselines/reference/downlevelLetConst9.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/downlevelLetConst9.ts === +let a: number +>a : number + diff --git a/tests/baselines/reference/duplicateExportAssignments.errors.txt b/tests/baselines/reference/duplicateExportAssignments.errors.txt index 0052391f62c..c0a93076981 100644 --- a/tests/baselines/reference/duplicateExportAssignments.errors.txt +++ b/tests/baselines/reference/duplicateExportAssignments.errors.txt @@ -1,15 +1,15 @@ tests/cases/conformance/externalModules/foo1.ts(3,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/conformance/externalModules/foo1.ts(3,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo1.ts(4,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo2.ts(3,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo2.ts(4,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo3.ts(7,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo3.ts(8,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo4.ts(1,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo4.ts(8,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo5.ts(4,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo5.ts(5,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2308: A module cannot have more than one export assignment. +tests/cases/conformance/externalModules/foo1.ts(3,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo1.ts(4,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo2.ts(3,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo2.ts(4,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo3.ts(7,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo3.ts(8,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo4.ts(1,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo4.ts(8,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo5.ts(4,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo5.ts(5,1): error TS2300: Duplicate identifier 'export='. +tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2300: Duplicate identifier 'export='. ==== tests/cases/conformance/externalModules/foo1.ts (3 errors) ==== @@ -19,20 +19,20 @@ tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2308: A module can ~~~~~~~~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = y; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. ==== tests/cases/conformance/externalModules/foo2.ts (2 errors) ==== var x = 10; class y {}; export = x; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = y; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. ==== tests/cases/conformance/externalModules/foo3.ts (2 errors) ==== module x { @@ -43,15 +43,15 @@ tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2308: A module can } export = x; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = y; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. ==== tests/cases/conformance/externalModules/foo4.ts (2 errors) ==== export = x; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. function x(){ return 42; } @@ -60,7 +60,7 @@ tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2308: A module can } export = y; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. ==== tests/cases/conformance/externalModules/foo5.ts (3 errors) ==== var x = 5; @@ -68,11 +68,11 @@ tests/cases/conformance/externalModules/foo5.ts(6,1): error TS2308: A module can var z = {}; export = x; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = y; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = z; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. \ No newline at end of file diff --git a/tests/baselines/reference/duplicateExportAssignments.js b/tests/baselines/reference/duplicateExportAssignments.js index 7d2776962f7..3742a5f1fe5 100644 --- a/tests/baselines/reference/duplicateExportAssignments.js +++ b/tests/baselines/reference/duplicateExportAssignments.js @@ -56,8 +56,8 @@ var y = (function () { module.exports = x; //// [foo3.js] var x; -(function (_x) { - _x.x = 10; +(function (x_1) { + x_1.x = 10; })(x || (x = {})); var y = (function () { function y() { diff --git a/tests/baselines/reference/duplicateLocalVariable1.js b/tests/baselines/reference/duplicateLocalVariable1.js index e77a38c5be8..62e291f28c0 100644 --- a/tests/baselines/reference/duplicateLocalVariable1.js +++ b/tests/baselines/reference/duplicateLocalVariable1.js @@ -431,7 +431,7 @@ exports.tests = (function () { })); testRunner.addTest(new TestCase("Check binary file doesn't match", function () { return (!FileManager.FileBuffer.isTextFile("C:\\somedir\\app.exe") && - !FileManager.FileBuffer.isTextFile("C:\\somedir\\my lib.dll")); + !FileManager.FileBuffer.isTextFile("C:\\somedir\\my lib.dll")); })); // Command-line parameter tests testRunner.addTest(new TestCase("Check App defaults", function () { diff --git a/tests/baselines/reference/duplicateLocalVariable4.js b/tests/baselines/reference/duplicateLocalVariable4.js index d7d67f28d50..34fe30a1f1c 100644 --- a/tests/baselines/reference/duplicateLocalVariable4.js +++ b/tests/baselines/reference/duplicateLocalVariable4.js @@ -12,4 +12,4 @@ var E; E[E["a"] = 0] = "a"; })(E || (E = {})); var x = E; -var x = 0 /* a */; +var x = E.a; diff --git a/tests/baselines/reference/emitArrowFunction.js b/tests/baselines/reference/emitArrowFunction.js index 455972f781b..7e2617045a8 100644 --- a/tests/baselines/reference/emitArrowFunction.js +++ b/tests/baselines/reference/emitArrowFunction.js @@ -10,7 +10,12 @@ foo(() => { return false; }); //// [emitArrowFunction.js] var f1 = function () { }; var f2 = function (x, y) { }; -var f3 = function (x, y) { }; +var f3 = function (x, y) { + var rest = []; + for (var _i = 2; _i < arguments.length; _i++) { + rest[_i - 2] = arguments[_i]; + } +}; var f4 = function (x, y, z) { if (z === void 0) { z = 10; } }; diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments.errors.txt b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments.errors.txt index 3a0ab0e597c..2f5ca2a387c 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments.errors.txt +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments.errors.txt @@ -1,21 +1,21 @@ -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(2,15): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(7,19): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(13,13): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(19,15): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(2,15): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(7,19): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(13,13): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts(19,15): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. ==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts (4 errors) ==== var a = () => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } var b = function () { var a = () => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } } @@ -23,7 +23,7 @@ tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts () => { var arg = arguments[0]; ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } } @@ -31,7 +31,7 @@ tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArguments.ts foo(() => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. }); function bar() { diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArgumentsES6.errors.txt b/tests/baselines/reference/emitArrowFunctionWhenUsingArgumentsES6.errors.txt index f879f11799b..26f204d3ee6 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArgumentsES6.errors.txt +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArgumentsES6.errors.txt @@ -1,21 +1,21 @@ -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(2,15): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(7,19): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(13,13): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. -tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(19,15): error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(2,15): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(7,19): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(13,13): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts(19,15): error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. ==== tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6.ts (4 errors) ==== var a = () => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } var b = function () { var a = () => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } } @@ -23,7 +23,7 @@ tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6 () => { var arg = arguments[0]; ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. } } @@ -31,7 +31,7 @@ tests/cases/conformance/es6/arrowFunction/emitArrowFunctionWhenUsingArgumentsES6 foo(() => { var arg = arguments[0]; // error ~~~~~~~~~ -!!! error TS9002: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. +!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function. Consider using a standard function expression. }); function bar() { diff --git a/tests/baselines/reference/emitClassDeclarationOverloadInES6.js b/tests/baselines/reference/emitClassDeclarationOverloadInES6.js new file mode 100644 index 00000000000..4cf96778f3f --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationOverloadInES6.js @@ -0,0 +1,21 @@ +//// [emitClassDeclarationOverloadInES6.ts] +class C { + constructor(y: any) + constructor(x: number) { + } +} + +class D { + constructor(y: any) + constructor(x: number, z="hello") {} +} + +//// [emitClassDeclarationOverloadInES6.js] +class C { + constructor(x) { + } +} +class D { + constructor(x, z = "hello") { + } +} diff --git a/tests/baselines/reference/emitClassDeclarationOverloadInES6.types b/tests/baselines/reference/emitClassDeclarationOverloadInES6.types new file mode 100644 index 00000000000..850a5aa5456 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationOverloadInES6.types @@ -0,0 +1,22 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationOverloadInES6.ts === +class C { +>C : C + + constructor(y: any) +>y : any + + constructor(x: number) { +>x : number + } +} + +class D { +>D : D + + constructor(y: any) +>y : any + + constructor(x: number, z="hello") {} +>x : number +>z : string +} diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.js b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.js new file mode 100644 index 00000000000..f74442e9fd9 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.js @@ -0,0 +1,41 @@ +//// [emitClassDeclarationWithConstructorInES6.ts] +class A { + y: number; + constructor(x: number) { + } + foo(a: any); + foo() { } +} + +class B { + y: number; + x: string = "hello"; + _bar: string; + + constructor(x: number, z = "hello", ...args) { + this.y = 10; + } + baz(...args): string; + baz(z: string, v: number): string { + return this._bar; + } +} + + + + +//// [emitClassDeclarationWithConstructorInES6.js] +class A { + constructor(x) { + } + foo() { } +} +class B { + constructor(x, z = "hello", ...args) { + this.x = "hello"; + this.y = 10; + } + baz(z, v) { + return this._bar; + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types new file mode 100644 index 00000000000..10244bf6170 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types @@ -0,0 +1,59 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithConstructorInES6.ts === +class A { +>A : A + + y: number; +>y : number + + constructor(x: number) { +>x : number + } + foo(a: any); +>foo : (a: any) => any +>a : any + + foo() { } +>foo : (a: any) => any +} + +class B { +>B : B + + y: number; +>y : number + + x: string = "hello"; +>x : string + + _bar: string; +>_bar : string + + constructor(x: number, z = "hello", ...args) { +>x : number +>z : string +>args : any[] + + this.y = 10; +>this.y = 10 : number +>this.y : number +>this : B +>y : number + } + baz(...args): string; +>baz : (...args: any[]) => string +>args : any[] + + baz(z: string, v: number): string { +>baz : (...args: any[]) => string +>z : string +>v : number + + return this._bar; +>this._bar : string +>this : B +>_bar : string + } +} + + + diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.js b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.js new file mode 100644 index 00000000000..cd217af6a81 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.js @@ -0,0 +1,24 @@ +//// [emitClassDeclarationWithExtensionAndTypeArgumentInES6.ts] +class B { + constructor(a: T) { } +} +class C extends B { } +class D extends B { + constructor(a: any) + constructor(b: number) { + super(b); + } +} + +//// [emitClassDeclarationWithExtensionAndTypeArgumentInES6.js] +class B { + constructor(a) { + } +} +class C extends B { +} +class D extends B { + constructor(b) { + super(b); + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types new file mode 100644 index 00000000000..0f546fa7b86 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types @@ -0,0 +1,29 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithExtensionAndTypeArgumentInES6.ts === +class B { +>B : B +>T : T + + constructor(a: T) { } +>a : T +>T : T +} +class C extends B { } +>C : C +>B : B + +class D extends B { +>D : D +>B : B + + constructor(a: any) +>a : any + + constructor(b: number) { +>b : number + + super(b); +>super(b) : void +>super : typeof B +>b : number + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.js b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.js new file mode 100644 index 00000000000..f31b5df0cb8 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.js @@ -0,0 +1,46 @@ +//// [emitClassDeclarationWithExtensionInES6.ts] +class B { + baz(a: string, y = 10) { } +} +class C extends B { + foo() { } + baz(a: string, y:number) { + super.baz(a, y); + } +} +class D extends C { + constructor() { + super(); + } + + foo() { + super.foo(); + } + + baz() { + super.baz("hello", 10); + } +} + + +//// [emitClassDeclarationWithExtensionInES6.js] +class B { + baz(a, y = 10) { } +} +class C extends B { + foo() { } + baz(a, y) { + super.baz(a, y); + } +} +class D extends C { + constructor() { + super(); + } + foo() { + super.foo(); + } + baz() { + super.baz("hello", 10); + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types new file mode 100644 index 00000000000..a1549be5df4 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types @@ -0,0 +1,61 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithExtensionInES6.ts === +class B { +>B : B + + baz(a: string, y = 10) { } +>baz : (a: string, y?: number) => void +>a : string +>y : number +} +class C extends B { +>C : C +>B : B + + foo() { } +>foo : () => void + + baz(a: string, y:number) { +>baz : (a: string, y: number) => void +>a : string +>y : number + + super.baz(a, y); +>super.baz(a, y) : void +>super.baz : (a: string, y?: number) => void +>super : B +>baz : (a: string, y?: number) => void +>a : string +>y : number + } +} +class D extends C { +>D : D +>C : C + + constructor() { + super(); +>super() : void +>super : typeof C + } + + foo() { +>foo : () => void + + super.foo(); +>super.foo() : void +>super.foo : () => void +>super : C +>foo : () => void + } + + baz() { +>baz : () => void + + super.baz("hello", 10); +>super.baz("hello", 10) : void +>super.baz : (a: string, y: number) => void +>super : C +>baz : (a: string, y: number) => void + } +} + diff --git a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.js b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.js new file mode 100644 index 00000000000..ece24d691da --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.js @@ -0,0 +1,54 @@ +//// [emitClassDeclarationWithGetterSetterInES6.ts] +class C { + _name: string; + get name(): string { + return this._name; + } + static get name2(): string { + return "BYE"; + } + static get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + + set ["computedname"](x: any) { + } + set ["computedname"](y: string) { + } + + set foo(a: string) { } + static set bar(b: number) { } + static set ["computedname"](b: string) { } +} + +//// [emitClassDeclarationWithGetterSetterInES6.js] +class C { + get name() { + return this._name; + } + static get name2() { + return "BYE"; + } + static get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + set ["computedname"](x) { + } + set ["computedname"](y) { + } + set foo(a) { } + static set bar(b) { } + static set ["computedname"](b) { } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types new file mode 100644 index 00000000000..83d4fcd0d80 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types @@ -0,0 +1,48 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithGetterSetterInES6.ts === +class C { +>C : C + + _name: string; +>_name : string + + get name(): string { +>name : string + + return this._name; +>this._name : string +>this : C +>_name : string + } + static get name2(): string { +>name2 : string + + return "BYE"; + } + static get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + get ["computedname"]() { + return ""; + } + + set ["computedname"](x: any) { +>x : any + } + set ["computedname"](y: string) { +>y : string + } + + set foo(a: string) { } +>foo : string +>a : string + + static set bar(b: number) { } +>bar : number +>b : number + + static set ["computedname"](b: string) { } +>b : string +} diff --git a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.js b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.js new file mode 100644 index 00000000000..961bd4041cd --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.js @@ -0,0 +1,33 @@ +//// [emitClassDeclarationWithLiteralPropertyNameInES6.ts] +class B { + "hello" = 10; + 0b110 = "world"; + 0o23534 = "WORLD"; + 20 = "twenty"; + "foo"() { } + 0b1110() {} + 11() { } + interface() { } + static "hi" = 10000; + static 22 = "twenty-two"; + static 0b101 = "binary"; + static 0o3235 = "octal"; +} + +//// [emitClassDeclarationWithLiteralPropertyNameInES6.js] +class B { + constructor() { + this["hello"] = 10; + this[0b110] = "world"; + this[0o23534] = "WORLD"; + this[20] = "twenty"; + } + "foo"() { } + 0b1110() { } + 11() { } + interface() { } +} +B["hi"] = 10000; +B[22] = "twenty-two"; +B[0b101] = "binary"; +B[0o3235] = "octal"; diff --git a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types new file mode 100644 index 00000000000..65ba8f7d2b9 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithLiteralPropertyNameInES6.ts === +class B { +>B : B + + "hello" = 10; + 0b110 = "world"; + 0o23534 = "WORLD"; + 20 = "twenty"; + "foo"() { } + 0b1110() {} + 11() { } + interface() { } +>interface : () => void + + static "hi" = 10000; + static 22 = "twenty-two"; + static 0b101 = "binary"; + static 0o3235 = "octal"; +} diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.js b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.js new file mode 100644 index 00000000000..fc0a510461b --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.js @@ -0,0 +1,46 @@ +//// [emitClassDeclarationWithMethodInES6.ts] +class D { + _bar: string; + foo() { } + ["computedName"]() { } + ["computedName"](a: string) { } + ["computedName"](a: string): number { return 1; } + bar(): string { + return this._bar; + } + baz(a: any, x: string): string { + return "HELLO"; + } + static ["computedname"]() { } + static ["computedname"](a: string) { } + static ["computedname"](a: string): boolean { return true; } + static staticMethod() { + var x = 1 + 2; + return x + } + static foo(a: string) { } + static bar(a: string): number { return 1; } +} + +//// [emitClassDeclarationWithMethodInES6.js] +class D { + foo() { } + ["computedName"]() { } + ["computedName"](a) { } + ["computedName"](a) { return 1; } + bar() { + return this._bar; + } + baz(a, x) { + return "HELLO"; + } + static ["computedname"]() { } + static ["computedname"](a) { } + static ["computedname"](a) { return true; } + static staticMethod() { + var x = 1 + 2; + return x; + } + static foo(a) { } + static bar(a) { return 1; } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types new file mode 100644 index 00000000000..f26a9f87e6d --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types @@ -0,0 +1,57 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithMethodInES6.ts === +class D { +>D : D + + _bar: string; +>_bar : string + + foo() { } +>foo : () => void + + ["computedName"]() { } + ["computedName"](a: string) { } +>a : string + + ["computedName"](a: string): number { return 1; } +>a : string + + bar(): string { +>bar : () => string + + return this._bar; +>this._bar : string +>this : D +>_bar : string + } + baz(a: any, x: string): string { +>baz : (a: any, x: string) => string +>a : any +>x : string + + return "HELLO"; + } + static ["computedname"]() { } + static ["computedname"](a: string) { } +>a : string + + static ["computedname"](a: string): boolean { return true; } +>a : string + + static staticMethod() { +>staticMethod : () => number + + var x = 1 + 2; +>x : number +>1 + 2 : number + + return x +>x : number + } + static foo(a: string) { } +>foo : (a: string) => void +>a : string + + static bar(a: string): number { return 1; } +>bar : (a: string) => number +>a : string +} diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.js b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.js new file mode 100644 index 00000000000..03fb45b806e --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.js @@ -0,0 +1,51 @@ +//// [emitClassDeclarationWithPropertyAssignmentInES6.ts] +class C { + x: string = "Hello world"; +} + +class D { + x: string = "Hello world"; + y: number; + constructor() { + this.y = 10; + } +} + +class E extends D{ + z: boolean = true; +} + +class F extends D{ + z: boolean = true; + j: string; + constructor() { + super(); + this.j = "HI"; + } +} + +//// [emitClassDeclarationWithPropertyAssignmentInES6.js] +class C { + constructor() { + this.x = "Hello world"; + } +} +class D { + constructor() { + this.x = "Hello world"; + this.y = 10; + } +} +class E extends D { + constructor(...args) { + super(...args); + this.z = true; + } +} +class F extends D { + constructor() { + super(); + this.z = true; + this.j = "HI"; + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types new file mode 100644 index 00000000000..5e7ebbc167c --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types @@ -0,0 +1,56 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAssignmentInES6.ts === +class C { +>C : C + + x: string = "Hello world"; +>x : string +} + +class D { +>D : D + + x: string = "Hello world"; +>x : string + + y: number; +>y : number + + constructor() { + this.y = 10; +>this.y = 10 : number +>this.y : number +>this : D +>y : number + } +} + +class E extends D{ +>E : E +>D : D + + z: boolean = true; +>z : boolean +} + +class F extends D{ +>F : F +>D : D + + z: boolean = true; +>z : boolean + + j: string; +>j : string + + constructor() { + super(); +>super() : void +>super : typeof D + + this.j = "HI"; +>this.j = "HI" : string +>this.j : string +>this : F +>j : string + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.js b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.js new file mode 100644 index 00000000000..8e0bf3de06b --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.js @@ -0,0 +1,21 @@ +//// [emitClassDeclarationWithStaticPropertyAssignmentInES6.ts] +class C { + static z: string = "Foo"; +} + +class D { + x = 20000; + static b = true; +} + + +//// [emitClassDeclarationWithStaticPropertyAssignmentInES6.js] +class C { +} +C.z = "Foo"; +class D { + constructor() { + this.x = 20000; + } +} +D.b = true; diff --git a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types new file mode 100644 index 00000000000..6003b85b590 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types @@ -0,0 +1,18 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithStaticPropertyAssignmentInES6.ts === +class C { +>C : C + + static z: string = "Foo"; +>z : string +} + +class D { +>D : D + + x = 20000; +>x : number + + static b = true; +>b : boolean +} + diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.js b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.js new file mode 100644 index 00000000000..0098cddb1fe --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.js @@ -0,0 +1,37 @@ +//// [emitClassDeclarationWithThisKeywordInES6.ts] +class B { + x = 10; + constructor() { + this.x = 10; + } + static log(a: number) { } + foo() { + B.log(this.x); + } + + get X() { + return this.x; + } + + set bX(y: number) { + this.x = y; + } +} + +//// [emitClassDeclarationWithThisKeywordInES6.js] +class B { + constructor() { + this.x = 10; + this.x = 10; + } + static log(a) { } + foo() { + B.log(this.x); + } + get X() { + return this.x; + } + set bX(y) { + this.x = y; + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types new file mode 100644 index 00000000000..bb0f7e99939 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types @@ -0,0 +1,52 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithThisKeywordInES6.ts === +class B { +>B : B + + x = 10; +>x : number + + constructor() { + this.x = 10; +>this.x = 10 : number +>this.x : number +>this : B +>x : number + } + static log(a: number) { } +>log : (a: number) => void +>a : number + + foo() { +>foo : () => void + + B.log(this.x); +>B.log(this.x) : void +>B.log : (a: number) => void +>B : typeof B +>log : (a: number) => void +>this.x : number +>this : B +>x : number + } + + get X() { +>X : number + + return this.x; +>this.x : number +>this : B +>x : number + } + + set bX(y: number) { +>bX : number +>y : number + + this.x = y; +>this.x = y : number +>this.x : number +>this : B +>x : number +>y : number + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.js b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.js new file mode 100644 index 00000000000..8dc5b6cddaa --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.js @@ -0,0 +1,39 @@ +//// [emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts] +class B { + x: T; + B: T; + + constructor(a: any) + constructor(a: any,b: T) + constructor(a: T) { this.B = a;} + + foo(a: T) + foo(a: any) + foo(b: string) + foo(): T { + return this.x; + } + + get BB(): T { + return this.B; + } + set BBWith(c: T) { + this.B = c; + } +} + +//// [emitClassDeclarationWithTypeArgumentAndOverloadInES6.js] +class B { + constructor(a) { + this.B = a; + } + foo() { + return this.x; + } + get BB() { + return this.B; + } + set BBWith(c) { + this.B = c; + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types new file mode 100644 index 00000000000..ba515168a5d --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types @@ -0,0 +1,75 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithTypeArgumentAndOverloadInES6.ts === +class B { +>B : B +>T : T + + x: T; +>x : T +>T : T + + B: T; +>B : T +>T : T + + constructor(a: any) +>a : any + + constructor(a: any,b: T) +>a : any +>b : T +>T : T + + constructor(a: T) { this.B = a;} +>a : T +>T : T +>this.B = a : T +>this.B : T +>this : B +>B : T +>a : T + + foo(a: T) +>foo : { (a: T): any; (a: any): any; (b: string): any; } +>a : T +>T : T + + foo(a: any) +>foo : { (a: T): any; (a: any): any; (b: string): any; } +>a : any + + foo(b: string) +>foo : { (a: T): any; (a: any): any; (b: string): any; } +>b : string + + foo(): T { +>foo : { (a: T): any; (a: any): any; (b: string): any; } +>T : T + + return this.x; +>this.x : T +>this : B +>x : T + } + + get BB(): T { +>BB : T +>T : T + + return this.B; +>this.B : T +>this : B +>B : T + } + set BBWith(c: T) { +>BBWith : T +>c : T +>T : T + + this.B = c; +>this.B = c : T +>this.B : T +>this : B +>B : T +>c : T + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.js b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.js new file mode 100644 index 00000000000..4e2872b4f06 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.js @@ -0,0 +1,31 @@ +//// [emitClassDeclarationWithTypeArgumentInES6.ts] +class B { + x: T; + B: T; + constructor(a: T) { this.B = a;} + foo(): T { + return this.x; + } + get BB(): T { + return this.B; + } + set BBWith(c: T) { + this.B = c; + } +} + +//// [emitClassDeclarationWithTypeArgumentInES6.js] +class B { + constructor(a) { + this.B = a; + } + foo() { + return this.x; + } + get BB() { + return this.B; + } + set BBWith(c) { + this.B = c; + } +} diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types new file mode 100644 index 00000000000..8081d044e35 --- /dev/null +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentInES6.types @@ -0,0 +1,53 @@ +=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithTypeArgumentInES6.ts === +class B { +>B : B +>T : T + + x: T; +>x : T +>T : T + + B: T; +>B : T +>T : T + + constructor(a: T) { this.B = a;} +>a : T +>T : T +>this.B = a : T +>this.B : T +>this : B +>B : T +>a : T + + foo(): T { +>foo : () => T +>T : T + + return this.x; +>this.x : T +>this : B +>x : T + } + get BB(): T { +>BB : T +>T : T + + return this.B; +>this.B : T +>this : B +>B : T + } + set BBWith(c: T) { +>BBWith : T +>c : T +>T : T + + this.B = c; +>this.B = c : T +>this.B : T +>this : B +>B : T +>c : T + } +} diff --git a/tests/baselines/reference/emitDefaultParametersMethodES6.js b/tests/baselines/reference/emitDefaultParametersMethodES6.js index 8489b5708f1..2b97e3e1632 100644 --- a/tests/baselines/reference/emitDefaultParametersMethodES6.js +++ b/tests/baselines/reference/emitDefaultParametersMethodES6.js @@ -17,22 +17,19 @@ class E { } //// [emitDefaultParametersMethodES6.js] -var C = (function () { - function C(t, z, x, y = "hello") { +class C { + constructor(t, z, x, y = "hello") { } - C.prototype.foo = function (x, t = false) { }; - C.prototype.foo1 = function (x, t = false, ...rest) { }; - C.prototype.bar = function (t = false) { }; - C.prototype.boo = function (t = false, ...rest) { }; - return C; -})(); -var D = (function () { - function D(y = "hello") { + foo(x, t = false) { } + foo1(x, t = false, ...rest) { } + bar(t = false) { } + boo(t = false, ...rest) { } +} +class D { + constructor(y = "hello") { } - return D; -})(); -var E = (function () { - function E(y = "hello", ...rest) { +} +class E { + constructor(y = "hello", ...rest) { } - return E; -})(); +} diff --git a/tests/baselines/reference/emitRestParametersFunction.js b/tests/baselines/reference/emitRestParametersFunction.js index 4ee4ff06df9..01116f2ac92 100644 --- a/tests/baselines/reference/emitRestParametersFunction.js +++ b/tests/baselines/reference/emitRestParametersFunction.js @@ -3,5 +3,15 @@ function bar(...rest) { } function foo(x: number, y: string, ...rest) { } //// [emitRestParametersFunction.js] -function bar() { } -function foo(x, y) { } +function bar() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +} +function foo(x, y) { + var rest = []; + for (var _i = 2; _i < arguments.length; _i++) { + rest[_i - 2] = arguments[_i]; + } +} diff --git a/tests/baselines/reference/emitRestParametersFunctionExpression.js b/tests/baselines/reference/emitRestParametersFunctionExpression.js index 6229c1e8d64..da87cc79f2d 100644 --- a/tests/baselines/reference/emitRestParametersFunctionExpression.js +++ b/tests/baselines/reference/emitRestParametersFunctionExpression.js @@ -6,7 +6,27 @@ var funcExp3 = (function (...rest) { })() //// [emitRestParametersFunctionExpression.js] -var funcExp = function () { }; -var funcExp1 = function (X) { }; -var funcExp2 = function () { }; -var funcExp3 = (function () { })(); +var funcExp = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var funcExp1 = function (X) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +}; +var funcExp2 = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var funcExp3 = (function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +})(); diff --git a/tests/baselines/reference/emitRestParametersFunctionProperty.js b/tests/baselines/reference/emitRestParametersFunctionProperty.js index eec67fb880a..4fd60a9269d 100644 --- a/tests/baselines/reference/emitRestParametersFunctionProperty.js +++ b/tests/baselines/reference/emitRestParametersFunctionProperty.js @@ -10,5 +10,10 @@ var obj2 = { //// [emitRestParametersFunctionProperty.js] var obj; var obj2 = { - func: function () { } + func: function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + } }; diff --git a/tests/baselines/reference/emitRestParametersMethod.js b/tests/baselines/reference/emitRestParametersMethod.js index 4e4c62dc47b..5ceb6d768f8 100644 --- a/tests/baselines/reference/emitRestParametersMethod.js +++ b/tests/baselines/reference/emitRestParametersMethod.js @@ -21,8 +21,18 @@ var C = (function () { rest[_i - 1] = arguments[_i]; } } - C.prototype.bar = function () { }; - C.prototype.foo = function (x) { }; + C.prototype.bar = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + }; + C.prototype.foo = function (x) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + }; return C; })(); var D = (function () { @@ -32,7 +42,17 @@ var D = (function () { rest[_i - 0] = arguments[_i]; } } - D.prototype.bar = function () { }; - D.prototype.foo = function (x) { }; + D.prototype.bar = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + }; + D.prototype.foo = function (x) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + }; return D; })(); diff --git a/tests/baselines/reference/emitRestParametersMethodES6.js b/tests/baselines/reference/emitRestParametersMethodES6.js index ff8e040be9c..930cd109b6e 100644 --- a/tests/baselines/reference/emitRestParametersMethodES6.js +++ b/tests/baselines/reference/emitRestParametersMethodES6.js @@ -15,17 +15,15 @@ class D { //// [emitRestParametersMethodES6.js] -var C = (function () { - function C(name, ...rest) { +class C { + constructor(name, ...rest) { } - C.prototype.bar = function (...rest) { }; - C.prototype.foo = function (x, ...rest) { }; - return C; -})(); -var D = (function () { - function D(...rest) { + bar(...rest) { } + foo(x, ...rest) { } +} +class D { + constructor(...rest) { } - D.prototype.bar = function (...rest) { }; - D.prototype.foo = function (x, ...rest) { }; - return D; -})(); + bar(...rest) { } + foo(x, ...rest) { } +} diff --git a/tests/baselines/reference/emitThisInSuperMethodCall.js b/tests/baselines/reference/emitThisInSuperMethodCall.js index 383da7d419f..de47b0b95af 100644 --- a/tests/baselines/reference/emitThisInSuperMethodCall.js +++ b/tests/baselines/reference/emitThisInSuperMethodCall.js @@ -49,20 +49,20 @@ var RegisteredUser = (function (_super) { RegisteredUser.prototype.f = function () { (function () { function inner() { - super.sayHello.call(this); + _super.sayHello.call(this); } }); }; RegisteredUser.prototype.g = function () { function inner() { (function () { - super.sayHello.call(this); + _super.sayHello.call(this); }); } }; RegisteredUser.prototype.h = function () { function inner() { - super.sayHello.call(this); + _super.sayHello.call(this); } }; return RegisteredUser; diff --git a/tests/baselines/reference/enumAssignability.js b/tests/baselines/reference/enumAssignability.js index 874c177c4e6..5bf639d9cf1 100644 --- a/tests/baselines/reference/enumAssignability.js +++ b/tests/baselines/reference/enumAssignability.js @@ -64,8 +64,8 @@ var F; (function (F) { F[F["B"] = 0] = "B"; })(F || (F = {})); -var e = 0 /* A */; -var f = 0 /* B */; +var e = E.A; +var f = F.B; e = f; f = e; e = 1; // ok diff --git a/tests/baselines/reference/enumAssignabilityInInheritance.js b/tests/baselines/reference/enumAssignabilityInInheritance.js index a26bd0670f8..01439854259 100644 --- a/tests/baselines/reference/enumAssignabilityInInheritance.js +++ b/tests/baselines/reference/enumAssignabilityInInheritance.js @@ -115,41 +115,41 @@ var E; (function (E) { E[E["A"] = 0] = "A"; })(E || (E = {})); -var r = foo(0 /* A */); // E +var r = foo(E.A); // E var r2 = foo(1); // number var r3 = foo(null); // any -var r4 = foo2(0 /* A */); -var r4 = foo3(0 /* A */); -var r4 = foo4(0 /* A */); -var r4 = foo5(0 /* A */); -var r4 = foo6(0 /* A */); -var r4 = foo7(0 /* A */); -var r4 = foo8(0 /* A */); +var r4 = foo2(E.A); +var r4 = foo3(E.A); +var r4 = foo4(E.A); +var r4 = foo5(E.A); +var r4 = foo6(E.A); +var r4 = foo7(E.A); +var r4 = foo8(E.A); var A = (function () { function A() { } return A; })(); -var r4 = foo9(0 /* A */); +var r4 = foo9(E.A); var A2 = (function () { function A2() { } return A2; })(); -var r4 = foo10(0 /* A */); -var r4 = foo11(0 /* A */); -var r4 = foo12(0 /* A */); +var r4 = foo10(E.A); +var r4 = foo11(E.A); +var r4 = foo12(E.A); var E2; (function (E2) { E2[E2["A"] = 0] = "A"; })(E2 || (E2 = {})); -var r4 = foo13(0 /* A */); +var r4 = foo13(E.A); function f() { } var f; (function (f) { f.bar = 1; })(f || (f = {})); -var r4 = foo14(0 /* A */); +var r4 = foo14(E.A); var CC = (function () { function CC() { } @@ -159,6 +159,6 @@ var CC; (function (CC) { CC.bar = 1; })(CC || (CC = {})); -var r4 = foo15(0 /* A */); -var r4 = foo16(0 /* A */); -var r4 = foo16(0 /* A */); +var r4 = foo15(E.A); +var r4 = foo16(E.A); +var r4 = foo16(E.A); diff --git a/tests/baselines/reference/enumAssignmentCompat.js b/tests/baselines/reference/enumAssignmentCompat.js index 24f65bc96a9..f56b1f300ed 100644 --- a/tests/baselines/reference/enumAssignmentCompat.js +++ b/tests/baselines/reference/enumAssignmentCompat.js @@ -57,15 +57,15 @@ var W; var x = W; var y = W; var z = W; // error -var a = 0 /* a */; -var b = 0 /* a */; // error -var c = 0 /* a */; +var a = W.a; +var b = W.a; // error +var c = W.a; var d = 3; // error var e = 4; -var f = 0 /* a */; // error +var f = W.a; // error var g = 5; // error var h = 3; -var i = 0 /* a */; -i = 0 /* a */; +var i = W.a; +i = W.a; W.D; var p; diff --git a/tests/baselines/reference/enumAssignmentCompat2.js b/tests/baselines/reference/enumAssignmentCompat2.js index 7ded9416c11..1fb7eb65e36 100644 --- a/tests/baselines/reference/enumAssignmentCompat2.js +++ b/tests/baselines/reference/enumAssignmentCompat2.js @@ -56,15 +56,15 @@ var W; var x = W; var y = W; var z = W; // error -var a = 0 /* a */; -var b = 0 /* a */; // error -var c = 0 /* a */; +var a = W.a; +var b = W.a; // error +var c = W.a; var d = 3; // error var e = 4; -var f = 0 /* a */; // error +var f = W.a; // error var g = 5; // error var h = 3; -var i = 0 /* a */; -i = 0 /* a */; +var i = W.a; +i = W.a; W.D; var p; diff --git a/tests/baselines/reference/enumBasics.js b/tests/baselines/reference/enumBasics.js index eca92215fb6..25aec5a72d8 100644 --- a/tests/baselines/reference/enumBasics.js +++ b/tests/baselines/reference/enumBasics.js @@ -89,13 +89,13 @@ var E1; E1[E1["C"] = 2] = "C"; })(E1 || (E1 = {})); // Enum type is a subtype of Number -var x = 0 /* A */; +var x = E1.A; // Enum object type is anonymous with properties of the enum type and numeric indexer var e = E1; var e; var e; // Reverse mapping of enum returns string name of property -var s = E1[0 /* A */]; +var s = E1[e.A]; var s; // Enum with only constant members var E2; @@ -108,7 +108,7 @@ var E2; var E3; (function (E3) { E3[E3["X"] = 'foo'.length] = "X"; - E3[E3["Y"] = 4 + 3] = "Y"; + E3[E3["Y"] = 7] = "Y"; E3[E3["Z"] = +'foo'] = "Z"; })(E3 || (E3 = {})); // Enum with constant members followed by computed members @@ -145,7 +145,7 @@ var E8; var E9; (function (E9) { E9[E9["A"] = 0] = "A"; - E9[E9["B"] = E9.A] = "B"; + E9[E9["B"] = 0] = "B"; })(E9 || (E9 = {})); // (refer to .js to validate) // Enum constant members are propagated @@ -154,5 +154,5 @@ var doNotPropagate = [ ]; // Enum computed members are not propagated var doPropagate = [ - 0 /* A */, E9.B, 0 /* B */, 1 /* C */, 0 /* A */, 0 /* A */, 3 /* B */, 4 /* C */ + E9.A, E9.B, E6.B, E6.C, E6.A, E5.A, E5.B, E5.C ]; diff --git a/tests/baselines/reference/enumBasics1.js b/tests/baselines/reference/enumBasics1.js index 13b6da353b9..e5c9c6d29d4 100644 --- a/tests/baselines/reference/enumBasics1.js +++ b/tests/baselines/reference/enumBasics1.js @@ -63,7 +63,7 @@ class C { var e = E; // shouldn't error */ -1 /* A */.A; // should error +E.A.A; // should error var E2; (function (E2) { E2[E2["A"] = 0] = "A"; diff --git a/tests/baselines/reference/enumConflictsWithGlobalIdentifier.js b/tests/baselines/reference/enumConflictsWithGlobalIdentifier.js index 67d9a020bb6..5c32fe5a16b 100644 --- a/tests/baselines/reference/enumConflictsWithGlobalIdentifier.js +++ b/tests/baselines/reference/enumConflictsWithGlobalIdentifier.js @@ -11,5 +11,6 @@ var Position; (function (Position) { Position[Position["IgnoreRulesSpecific"] = 0] = "IgnoreRulesSpecific"; })(Position || (Position = {})); -var x = IgnoreRulesSpecific.; -var y = 0 /* IgnoreRulesSpecific */; +var x = IgnoreRulesSpecific. +; +var y = Position.IgnoreRulesSpecific; diff --git a/tests/baselines/reference/enumErrors.errors.txt b/tests/baselines/reference/enumErrors.errors.txt index ca13ceba4ae..14cad3cb53b 100644 --- a/tests/baselines/reference/enumErrors.errors.txt +++ b/tests/baselines/reference/enumErrors.errors.txt @@ -3,15 +3,13 @@ tests/cases/conformance/enums/enumErrors.ts(3,6): error TS2431: Enum name cannot tests/cases/conformance/enums/enumErrors.ts(4,6): error TS2431: Enum name cannot be 'string' tests/cases/conformance/enums/enumErrors.ts(5,6): error TS2431: Enum name cannot be 'boolean' tests/cases/conformance/enums/enumErrors.ts(9,9): error TS2322: Type 'Number' is not assignable to type 'E5'. -tests/cases/conformance/enums/enumErrors.ts(20,9): error TS2322: Type 'E9' is not assignable to type 'E10'. -tests/cases/conformance/enums/enumErrors.ts(21,9): error TS2322: Type 'E9' is not assignable to type 'E10'. tests/cases/conformance/enums/enumErrors.ts(26,9): error TS2322: Type 'string' is not assignable to type 'E11'. tests/cases/conformance/enums/enumErrors.ts(27,9): error TS2322: Type 'Date' is not assignable to type 'E11'. tests/cases/conformance/enums/enumErrors.ts(28,9): error TS2304: Cannot find name 'window'. tests/cases/conformance/enums/enumErrors.ts(29,9): error TS2322: Type '{}' is not assignable to type 'E11'. -==== tests/cases/conformance/enums/enumErrors.ts (11 errors) ==== +==== tests/cases/conformance/enums/enumErrors.ts (9 errors) ==== // Enum named with PredefinedTypes enum any { } ~~~ @@ -42,11 +40,7 @@ tests/cases/conformance/enums/enumErrors.ts(29,9): error TS2322: Type '{}' is no // Bug 707850: This should be allowed enum E10 { A = E9.A, - ~~~~ -!!! error TS2322: Type 'E9' is not assignable to type 'E10'. B = E9.B - ~~~~ -!!! error TS2322: Type 'E9' is not assignable to type 'E10'. } // Enum with computed member intializer of other types diff --git a/tests/baselines/reference/enumErrors.js b/tests/baselines/reference/enumErrors.js index 44aa2f90162..a8ecdf2470a 100644 --- a/tests/baselines/reference/enumErrors.js +++ b/tests/baselines/reference/enumErrors.js @@ -53,14 +53,14 @@ var E5; var E9; (function (E9) { E9[E9["A"] = 0] = "A"; - E9[E9["B"] = E9.A] = "B"; + E9[E9["B"] = 0] = "B"; })(E9 || (E9 = {})); //Enum with computed member intializer of different enum type // Bug 707850: This should be allowed var E10; (function (E10) { - E10[E10["A"] = 0 /* A */] = "A"; - E10[E10["B"] = E9.B] = "B"; + E10[E10["A"] = 0] = "A"; + E10[E10["B"] = 0] = "B"; })(E10 || (E10 = {})); // Enum with computed member intializer of other types var E11; diff --git a/tests/baselines/reference/enumFromExternalModule.js b/tests/baselines/reference/enumFromExternalModule.js index 8e92cbbbda7..ed2a1f3926a 100644 --- a/tests/baselines/reference/enumFromExternalModule.js +++ b/tests/baselines/reference/enumFromExternalModule.js @@ -18,4 +18,4 @@ var Mode = exports.Mode; //// [enumFromExternalModule_1.js] /// var f = require('enumFromExternalModule_0'); -var x = 0 /* Open */; +var x = f.Mode.Open; diff --git a/tests/baselines/reference/enumIndexer.js b/tests/baselines/reference/enumIndexer.js index f9f71a3ff98..561461229c7 100644 --- a/tests/baselines/reference/enumIndexer.js +++ b/tests/baselines/reference/enumIndexer.js @@ -14,5 +14,5 @@ var MyEnumType; MyEnumType[MyEnumType["bar"] = 1] = "bar"; })(MyEnumType || (MyEnumType = {})); var _arr = [{ key: 'foo' }, { key: 'bar' }]; -var enumValue = 0 /* foo */; +var enumValue = MyEnumType.foo; var x = _arr.map(function (o) { return MyEnumType[o.key] === enumValue; }); // these are not same type diff --git a/tests/baselines/reference/enumMapBackIntoItself.js b/tests/baselines/reference/enumMapBackIntoItself.js index 2d177731b95..80a4b88479f 100644 --- a/tests/baselines/reference/enumMapBackIntoItself.js +++ b/tests/baselines/reference/enumMapBackIntoItself.js @@ -16,7 +16,7 @@ var TShirtSize; TShirtSize[TShirtSize["Medium"] = 1] = "Medium"; TShirtSize[TShirtSize["Large"] = 2] = "Large"; })(TShirtSize || (TShirtSize = {})); -var mySize = 2 /* Large */; +var mySize = TShirtSize.Large; var test = TShirtSize[mySize]; // specifically checking output here, bug was that test used to be undefined at runtime test + ''; diff --git a/tests/baselines/reference/enumMemberResolution.js b/tests/baselines/reference/enumMemberResolution.js index e1d79ebeb92..ec27342471d 100644 --- a/tests/baselines/reference/enumMemberResolution.js +++ b/tests/baselines/reference/enumMemberResolution.js @@ -12,6 +12,7 @@ var Position2; (function (Position2) { Position2[Position2["IgnoreRulesSpecific"] = 0] = "IgnoreRulesSpecific"; })(Position2 || (Position2 = {})); -var x = IgnoreRulesSpecific.; // error +var x = IgnoreRulesSpecific. +; // error var y = 1; -var z = 0 /* IgnoreRulesSpecific */; // no error +var z = Position2.IgnoreRulesSpecific; // no error diff --git a/tests/baselines/reference/enumMerging.js b/tests/baselines/reference/enumMerging.js index b0da96c4b6e..5dc5a475b40 100644 --- a/tests/baselines/reference/enumMerging.js +++ b/tests/baselines/reference/enumMerging.js @@ -95,7 +95,7 @@ var M1; EConst1[EConst1["F"] = 8] = "F"; })(M1.EConst1 || (M1.EConst1 = {})); var EConst1 = M1.EConst1; - var x = [3 /* A */, 2 /* B */, 1 /* C */, 7 /* D */, 9 /* E */, 8 /* F */]; + var x = [EConst1.A, EConst1.B, EConst1.C, EConst1.D, EConst1.E, EConst1.F]; })(M1 || (M1 = {})); // Enum with only computed members across 2 declarations with the same root module var M2; @@ -169,6 +169,6 @@ var M6; })(A.Color || (A.Color = {})); var Color = A.Color; })(A = M6.A || (M6.A = {})); - var t = 1 /* Yellow */; - t = 0 /* Red */; + var t = A.Color.Yellow; + t = A.Color.Red; })(M6 || (M6 = {})); diff --git a/tests/baselines/reference/enumOperations.js b/tests/baselines/reference/enumOperations.js index 902079c04c0..96d9ace576c 100644 --- a/tests/baselines/reference/enumOperations.js +++ b/tests/baselines/reference/enumOperations.js @@ -21,7 +21,7 @@ var Enum; (function (Enum) { Enum[Enum["None"] = 0] = "None"; })(Enum || (Enum = {})); -var enumType = 0 /* None */; +var enumType = Enum.None; var numberType = 0; var anyType = 0; enumType ^ numberType; diff --git a/tests/baselines/reference/enumPropertyAccess.js b/tests/baselines/reference/enumPropertyAccess.js index 4c2a7df3c94..1ac82b0a3de 100644 --- a/tests/baselines/reference/enumPropertyAccess.js +++ b/tests/baselines/reference/enumPropertyAccess.js @@ -20,7 +20,7 @@ var Colors; Colors[Colors["Red"] = 0] = "Red"; Colors[Colors["Green"] = 1] = "Green"; })(Colors || (Colors = {})); -var x = 0 /* Red */; // type of 'x' should be 'Colors' +var x = Colors.Red; // type of 'x' should be 'Colors' var p = x.Green; // error x.toFixed(); // ok // Now with generics diff --git a/tests/baselines/reference/enumWithParenthesizedInitializer1.js b/tests/baselines/reference/enumWithParenthesizedInitializer1.js index 0c125b3d8b2..f81af2c4dda 100644 --- a/tests/baselines/reference/enumWithParenthesizedInitializer1.js +++ b/tests/baselines/reference/enumWithParenthesizedInitializer1.js @@ -6,5 +6,5 @@ enum E { //// [enumWithParenthesizedInitializer1.js] var E; (function (E) { - E[E["e"] = -(3)] = "e"; + E[E["e"] = -3] = "e"; })(E || (E = {})); diff --git a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.js b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.js index ef9192c1c90..8d203e9fd71 100644 --- a/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.js +++ b/tests/baselines/reference/enumWithoutInitializerAfterComputedMember.js @@ -9,6 +9,6 @@ enum E { var E; (function (E) { E[E["a"] = 0] = "a"; - E[E["b"] = E.a] = "b"; - E[E["c"] = undefined] = "c"; + E[E["b"] = 0] = "b"; + E[E["c"] = 1] = "c"; })(E || (E = {})); diff --git a/tests/baselines/reference/errorSuperPropertyAccess.js b/tests/baselines/reference/errorSuperPropertyAccess.js index 79ba631afed..26ef99f269d 100644 --- a/tests/baselines/reference/errorSuperPropertyAccess.js +++ b/tests/baselines/reference/errorSuperPropertyAccess.js @@ -140,27 +140,27 @@ var __extends = this.__extends || function (d, b) { //super property access in instance member accessor(get and set) of class with no base type var NoBase = (function () { function NoBase() { - this.m = super.prototype; - this.n = super.hasOwnProperty.call(this, ''); - var a = super.prototype; - var b = super.hasOwnProperty.call(this, ''); + this.m = _super.prototype; + this.n = _super.hasOwnProperty.call(this, ''); + var a = _super.prototype; + var b = _super.hasOwnProperty.call(this, ''); } NoBase.prototype.fn = function () { - var a = super.prototype; - var b = super.hasOwnProperty.call(this, ''); + var a = _super.prototype; + var b = _super.hasOwnProperty.call(this, ''); }; //super static property access in static member function of class with no base type //super static property access in static member accessor(get and set) of class with no base type NoBase.static1 = function () { - super.hasOwnProperty.call(this, ''); + _super.hasOwnProperty.call(this, ''); }; Object.defineProperty(NoBase, "static2", { get: function () { - super.hasOwnProperty.call(this, ''); + _super.hasOwnProperty.call(this, ''); return ''; }, set: function (n) { - super.hasOwnProperty.call(this, ''); + _super.hasOwnProperty.call(this, ''); }, enumerable: true, configurable: true @@ -206,10 +206,10 @@ var SomeDerived1 = (function (_super) { }); SomeDerived1.prototype.fn2 = function () { function inner() { - super.publicFunc.call(this); + _super.publicFunc.call(this); } var x = { - test: function () { return super.publicFunc.call(this); } + test: function () { return _super.publicFunc.call(this); } }; }; return SomeDerived1; @@ -271,4 +271,4 @@ var SomeDerived3 = (function (_super) { return SomeDerived3; })(SomeBase); // In object literal -var obj = { n: super.wat, p: super.foo.call(this) }; +var obj = { n: _super.wat, p: _super.foo.call(this) }; diff --git a/tests/baselines/reference/es3-amd.js.map b/tests/baselines/reference/es3-amd.js.map index c587e10f904..a1ccff476c6 100644 --- a/tests/baselines/reference/es3-amd.js.map +++ b/tests/baselines/reference/es3-amd.js.map @@ -1,2 +1,2 @@ //// [es3-amd.js.map] -{"version":3,"file":"es3-amd.js","sourceRoot":"","sources":["es3-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es3-amd.js","sourceRoot":"","sources":["es3-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es3-amd.sourcemap.txt b/tests/baselines/reference/es3-amd.sourcemap.txt index 226904108df..86ef55a1f58 100644 --- a/tests/baselines/reference/es3-amd.sourcemap.txt +++ b/tests/baselines/reference/es3-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es3-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es3-declaration-amd.js.map b/tests/baselines/reference/es3-declaration-amd.js.map index ccd05b446f7..612763299c9 100644 --- a/tests/baselines/reference/es3-declaration-amd.js.map +++ b/tests/baselines/reference/es3-declaration-amd.js.map @@ -1,2 +1,2 @@ //// [es3-declaration-amd.js.map] -{"version":3,"file":"es3-declaration-amd.js","sourceRoot":"","sources":["es3-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es3-declaration-amd.js","sourceRoot":"","sources":["es3-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es3-declaration-amd.sourcemap.txt b/tests/baselines/reference/es3-declaration-amd.sourcemap.txt index 35e5474dd84..7ad6f48d3ad 100644 --- a/tests/baselines/reference/es3-declaration-amd.sourcemap.txt +++ b/tests/baselines/reference/es3-declaration-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es3-declaration-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es3-sourcemap-amd.js.map b/tests/baselines/reference/es3-sourcemap-amd.js.map index d3f8fafc960..e11de869437 100644 --- a/tests/baselines/reference/es3-sourcemap-amd.js.map +++ b/tests/baselines/reference/es3-sourcemap-amd.js.map @@ -1,2 +1,2 @@ //// [es3-sourcemap-amd.js.map] -{"version":3,"file":"es3-sourcemap-amd.js","sourceRoot":"","sources":["es3-sourcemap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es3-sourcemap-amd.js","sourceRoot":"","sources":["es3-sourcemap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es3-sourcemap-amd.sourcemap.txt b/tests/baselines/reference/es3-sourcemap-amd.sourcemap.txt index c39c3ccd4b1..a20cfaa766d 100644 --- a/tests/baselines/reference/es3-sourcemap-amd.sourcemap.txt +++ b/tests/baselines/reference/es3-sourcemap-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es3-sourcemap-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es5-amd.js.map b/tests/baselines/reference/es5-amd.js.map index 84512d7eece..6201673cb34 100644 --- a/tests/baselines/reference/es5-amd.js.map +++ b/tests/baselines/reference/es5-amd.js.map @@ -1,2 +1,2 @@ //// [es5-amd.js.map] -{"version":3,"file":"es5-amd.js","sourceRoot":"","sources":["es5-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es5-amd.js","sourceRoot":"","sources":["es5-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es5-amd.sourcemap.txt b/tests/baselines/reference/es5-amd.sourcemap.txt index e7586b02a4e..a5902f03982 100644 --- a/tests/baselines/reference/es5-amd.sourcemap.txt +++ b/tests/baselines/reference/es5-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es5-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es5-declaration-amd.js.map b/tests/baselines/reference/es5-declaration-amd.js.map index 8ed2d06ab3f..d4dfe8ac244 100644 --- a/tests/baselines/reference/es5-declaration-amd.js.map +++ b/tests/baselines/reference/es5-declaration-amd.js.map @@ -1,2 +1,2 @@ //// [es5-declaration-amd.js.map] -{"version":3,"file":"es5-declaration-amd.js","sourceRoot":"","sources":["es5-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es5-declaration-amd.js","sourceRoot":"","sources":["es5-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es5-declaration-amd.sourcemap.txt b/tests/baselines/reference/es5-declaration-amd.sourcemap.txt index 80a60ca6c6a..59b6ba6bb0a 100644 --- a/tests/baselines/reference/es5-declaration-amd.sourcemap.txt +++ b/tests/baselines/reference/es5-declaration-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es5-declaration-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es5-souremap-amd.js.map b/tests/baselines/reference/es5-souremap-amd.js.map index 64d882aae47..b8412bd1e72 100644 --- a/tests/baselines/reference/es5-souremap-amd.js.map +++ b/tests/baselines/reference/es5-souremap-amd.js.map @@ -1,2 +1,2 @@ //// [es5-souremap-amd.js.map] -{"version":3,"file":"es5-souremap-amd.js","sourceRoot":"","sources":["es5-souremap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es5-souremap-amd.js","sourceRoot":"","sources":["es5-souremap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file diff --git a/tests/baselines/reference/es5-souremap-amd.sourcemap.txt b/tests/baselines/reference/es5-souremap-amd.sourcemap.txt index dc614195e28..9b6b4af56ca 100644 --- a/tests/baselines/reference/es5-souremap-amd.sourcemap.txt +++ b/tests/baselines/reference/es5-souremap-amd.sourcemap.txt @@ -10,42 +10,29 @@ sourceFile:es5-souremap-amd.ts ------------------------------------------------------------------- >>>var A = (function () { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- >>> function A() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- >>> A.prototype.B = function () { diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration.js b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js new file mode 100644 index 00000000000..b5cfdb02f78 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration.js @@ -0,0 +1,21 @@ +//// [es5ExportDefaultClassDeclaration.ts] + +export default class C { + method() { } +} + + +//// [es5ExportDefaultClassDeclaration.js] +var C = (function () { + function C() { + } + C.prototype.method = function () { }; + return C; +})(); +exports.default = C; + + +//// [es5ExportDefaultClassDeclaration.d.ts] +export default class C { + method(): void; +} diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration.types b/tests/baselines/reference/es5ExportDefaultClassDeclaration.types new file mode 100644 index 00000000000..34fb87fcbb2 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/es5ExportDefaultClassDeclaration.ts === + +export default class C { +>C : C + + method() { } +>method : () => void +} + diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration2.js b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.js new file mode 100644 index 00000000000..de0d109dadf --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.js @@ -0,0 +1,21 @@ +//// [es5ExportDefaultClassDeclaration2.ts] + +export default class { + method() { } +} + + +//// [es5ExportDefaultClassDeclaration2.js] +var default_1 = (function () { + function default_1() { + } + default_1.prototype.method = function () { }; + return default_1; +})(); +exports.default = default_1; + + +//// [es5ExportDefaultClassDeclaration2.d.ts] +export default class { + method(): void; +} diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration2.types b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.types new file mode 100644 index 00000000000..e4c7a59e0e7 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration2.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/es5ExportDefaultClassDeclaration2.ts === + +export default class { + method() { } +>method : () => void +} + diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.js b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.js new file mode 100644 index 00000000000..bff80940a02 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.js @@ -0,0 +1,35 @@ +//// [es5ExportDefaultClassDeclaration3.ts] + +var before: C = new C(); + +export default class C { + method(): C { + return new C(); + } +} + +var after: C = new C(); + +var t: typeof C = C; + + + +//// [es5ExportDefaultClassDeclaration3.js] +var before = new C(); +var C = (function () { + function C() { + } + C.prototype.method = function () { + return new C(); + }; + return C; +})(); +exports.default = C; +var after = new C(); +var t = C; + + +//// [es5ExportDefaultClassDeclaration3.d.ts] +export default class C { + method(): C; +} diff --git a/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types new file mode 100644 index 00000000000..1ed302ac45e --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultClassDeclaration3.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/es5ExportDefaultClassDeclaration3.ts === + +var before: C = new C(); +>before : C +>C : C +>new C() : C +>C : typeof C + +export default class C { +>C : C + + method(): C { +>method : () => C +>C : C + + return new C(); +>new C() : C +>C : typeof C + } +} + +var after: C = new C(); +>after : C +>C : C +>new C() : C +>C : typeof C + +var t: typeof C = C; +>t : typeof C +>C : typeof C +>C : typeof C + + diff --git a/tests/baselines/reference/es5ExportDefaultExpression.js b/tests/baselines/reference/es5ExportDefaultExpression.js new file mode 100644 index 00000000000..1e14ae0bffd --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultExpression.js @@ -0,0 +1,11 @@ +//// [es5ExportDefaultExpression.ts] + +export default (1 + 2); + + +//// [es5ExportDefaultExpression.js] +exports.default = (1 + 2); + + +//// [es5ExportDefaultExpression.d.ts] +export default : number; diff --git a/tests/baselines/reference/es5ExportDefaultExpression.types b/tests/baselines/reference/es5ExportDefaultExpression.types new file mode 100644 index 00000000000..2f4e2b57284 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultExpression.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/es5ExportDefaultExpression.ts === + +export default (1 + 2); +>(1 + 2) : number +>1 + 2 : number + diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js new file mode 100644 index 00000000000..673cc3cb453 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.js @@ -0,0 +1,12 @@ +//// [es5ExportDefaultFunctionDeclaration.ts] + +export default function f() { } + + +//// [es5ExportDefaultFunctionDeclaration.js] +function f() { } +exports.default = f; + + +//// [es5ExportDefaultFunctionDeclaration.d.ts] +export default function f(): void; diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.types b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.types new file mode 100644 index 00000000000..446bd8e2a31 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/es5ExportDefaultFunctionDeclaration.ts === + +export default function f() { } +>f : () => void + diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js new file mode 100644 index 00000000000..ad1334e810b --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.js @@ -0,0 +1,12 @@ +//// [es5ExportDefaultFunctionDeclaration2.ts] + +export default function () { } + + +//// [es5ExportDefaultFunctionDeclaration2.js] +function default_1() { } +exports.default = default_1; + + +//// [es5ExportDefaultFunctionDeclaration2.d.ts] +export default function (): void; diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.types b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.types new file mode 100644 index 00000000000..1b9f9d26151 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration2.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/es5ExportDefaultFunctionDeclaration2.ts === + +No type information for this code.export default function () { } +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.js b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.js new file mode 100644 index 00000000000..1fc57976439 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.js @@ -0,0 +1,21 @@ +//// [es5ExportDefaultFunctionDeclaration3.ts] + +var before: typeof func = func(); + +export default function func(): typeof func { + return func; +} + +var after: typeof func = func(); + +//// [es5ExportDefaultFunctionDeclaration3.js] +var before = func(); +function func() { + return func; +} +exports.default = func; +var after = func(); + + +//// [es5ExportDefaultFunctionDeclaration3.d.ts] +export default function func(): typeof func; diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types new file mode 100644 index 00000000000..d3a8ff92b2f --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/es5ExportDefaultFunctionDeclaration3.ts === + +var before: typeof func = func(); +>before : () => typeof func +>func : () => typeof func +>func() : () => typeof func +>func : () => typeof func + +export default function func(): typeof func { +>func : () => typeof func +>func : () => typeof func + + return func; +>func : () => typeof func +} + +var after: typeof func = func(); +>after : () => typeof func +>func : () => typeof func +>func() : () => typeof func +>func : () => typeof func + diff --git a/tests/baselines/reference/es5ExportDefaultIdentifier.js b/tests/baselines/reference/es5ExportDefaultIdentifier.js new file mode 100644 index 00000000000..739f3d6c109 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultIdentifier.js @@ -0,0 +1,16 @@ +//// [es5ExportDefaultIdentifier.ts] + +export function f() { } + +export default f; + + +//// [es5ExportDefaultIdentifier.js] +function f() { } +exports.f = f; +exports.default = f; + + +//// [es5ExportDefaultIdentifier.d.ts] +export declare function f(): void; +export default f; diff --git a/tests/baselines/reference/es5ExportDefaultIdentifier.types b/tests/baselines/reference/es5ExportDefaultIdentifier.types new file mode 100644 index 00000000000..d57f7575070 --- /dev/null +++ b/tests/baselines/reference/es5ExportDefaultIdentifier.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/es5ExportDefaultIdentifier.ts === + +export function f() { } +>f : () => void + +export default f; +>f : () => void + diff --git a/tests/baselines/reference/es5ExportEquals.errors.txt b/tests/baselines/reference/es5ExportEquals.errors.txt new file mode 100644 index 00000000000..89197aca632 --- /dev/null +++ b/tests/baselines/reference/es5ExportEquals.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/es5ExportEquals.ts(4,1): error TS2309: An export assignment cannot be used in a module with other exported elements. + + +==== tests/cases/compiler/es5ExportEquals.ts (1 errors) ==== + + export function f() { } + + export = f; + ~~~~~~~~~~~ +!!! error TS2309: An export assignment cannot be used in a module with other exported elements. + \ No newline at end of file diff --git a/tests/baselines/reference/es5ExportEquals.js b/tests/baselines/reference/es5ExportEquals.js new file mode 100644 index 00000000000..88d1da4201d --- /dev/null +++ b/tests/baselines/reference/es5ExportEquals.js @@ -0,0 +1,16 @@ +//// [es5ExportEquals.ts] + +export function f() { } + +export = f; + + +//// [es5ExportEquals.js] +function f() { } +exports.f = f; +module.exports = f; + + +//// [es5ExportEquals.d.ts] +export declare function f(): void; +export = f; diff --git a/tests/baselines/reference/es5ExportEqualsDts.js b/tests/baselines/reference/es5ExportEqualsDts.js new file mode 100644 index 00000000000..922d012be0e --- /dev/null +++ b/tests/baselines/reference/es5ExportEqualsDts.js @@ -0,0 +1,37 @@ +//// [es5ExportEqualsDts.ts] + +class A { + foo() { + var aVal: A.B; + return aVal; + } +} + +module A { + export interface B { } +} + +export = A + +//// [es5ExportEqualsDts.js] +var A = (function () { + function A() { + } + A.prototype.foo = function () { + var aVal; + return aVal; + }; + return A; +})(); +module.exports = A; + + +//// [es5ExportEqualsDts.d.ts] +declare class A { + foo(): A.B; +} +declare module A { + interface B { + } +} +export = A; diff --git a/tests/baselines/reference/es5ExportEqualsDts.types b/tests/baselines/reference/es5ExportEqualsDts.types new file mode 100644 index 00000000000..58b35a0d7ce --- /dev/null +++ b/tests/baselines/reference/es5ExportEqualsDts.types @@ -0,0 +1,28 @@ +=== tests/cases/compiler/es5ExportEqualsDts.ts === + +class A { +>A : A + + foo() { +>foo : () => A.B + + var aVal: A.B; +>aVal : A.B +>A : unknown +>B : A.B + + return aVal; +>aVal : A.B + } +} + +module A { +>A : typeof A + + export interface B { } +>B : B +} + +export = A +>A : A + diff --git a/tests/baselines/reference/es5ModuleInternalNamedImports.errors.txt b/tests/baselines/reference/es5ModuleInternalNamedImports.errors.txt new file mode 100644 index 00000000000..65f29984d59 --- /dev/null +++ b/tests/baselines/reference/es5ModuleInternalNamedImports.errors.txt @@ -0,0 +1,59 @@ +tests/cases/compiler/es5ModuleInternalNamedImports.ts(23,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(24,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(25,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(26,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(27,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(28,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(29,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es5ModuleInternalNamedImports.ts(30,5): error TS1194: Export declarations are not permitted in an internal module. + + +==== tests/cases/compiler/es5ModuleInternalNamedImports.ts (8 errors) ==== + + export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; + + // Reexports + export {M_V as v}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_I as i}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_C as c}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_M as m}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_MU as mu}; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_F as f}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_E as e}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_A as a}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + } + \ No newline at end of file diff --git a/tests/baselines/reference/es5ModuleInternalNamedImports.js b/tests/baselines/reference/es5ModuleInternalNamedImports.js new file mode 100644 index 00000000000..d7d120e8af9 --- /dev/null +++ b/tests/baselines/reference/es5ModuleInternalNamedImports.js @@ -0,0 +1,64 @@ +//// [es5ModuleInternalNamedImports.ts] + +export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; + + // Reexports + export {M_V as v}; + export {M_I as i}; + export {M_C as c}; + export {M_M as m}; + export {M_MU as mu}; + export {M_F as f}; + export {M_E as e}; + export {M_A as a}; +} + + +//// [es5ModuleInternalNamedImports.js] +define(["require", "exports"], function (require, exports) { + var M; + (function (M) { + // variable + M.M_V = 0; + //calss + var M_C = (function () { + function M_C() { + } + return M_C; + })(); + M.M_C = M_C; + // instantiated module + var M_M; + (function (M_M) { + var x; + })(M_M = M.M_M || (M.M_M = {})); + // function + function M_F() { } + M.M_F = M_F; + // enum + (function (M_E) { + })(M.M_E || (M.M_E = {})); + var M_E = M.M_E; + // alias + M.M_A = M_M; + // Reexports + })(M = exports.M || (exports.M = {})); +}); diff --git a/tests/baselines/reference/es5ModuleWithModuleGenAmd.js b/tests/baselines/reference/es5ModuleWithModuleGenAmd.js new file mode 100644 index 00000000000..f4757b539eb --- /dev/null +++ b/tests/baselines/reference/es5ModuleWithModuleGenAmd.js @@ -0,0 +1,25 @@ +//// [es5ModuleWithModuleGenAmd.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es5ModuleWithModuleGenAmd.js] +define(["require", "exports"], function (require, exports) { + var A = (function () { + function A() { + } + A.prototype.B = function () { + return 42; + }; + return A; + })(); + exports.A = A; +}); diff --git a/tests/baselines/reference/es6-sourcemap-amd.types b/tests/baselines/reference/es5ModuleWithModuleGenAmd.types similarity index 55% rename from tests/baselines/reference/es6-sourcemap-amd.types rename to tests/baselines/reference/es5ModuleWithModuleGenAmd.types index 661ab2e7cdd..e3453587a12 100644 --- a/tests/baselines/reference/es6-sourcemap-amd.types +++ b/tests/baselines/reference/es5ModuleWithModuleGenAmd.types @@ -1,11 +1,9 @@ -=== tests/cases/compiler/es6-sourcemap-amd.ts === - -class A +=== tests/cases/compiler/es5ModuleWithModuleGenAmd.ts === +export class A >A : A { constructor () { - } public B() diff --git a/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.js b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.js new file mode 100644 index 00000000000..b4ca020f566 --- /dev/null +++ b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.js @@ -0,0 +1,23 @@ +//// [es5ModuleWithModuleGenCommonjs.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es5ModuleWithModuleGenCommonjs.js] +var A = (function () { + function A() { + } + A.prototype.B = function () { + return 42; + }; + return A; +})(); +exports.A = A; diff --git a/tests/baselines/reference/es6-declaration-amd.types b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types similarity index 53% rename from tests/baselines/reference/es6-declaration-amd.types rename to tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types index e275fc52439..721df9afe58 100644 --- a/tests/baselines/reference/es6-declaration-amd.types +++ b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types @@ -1,11 +1,9 @@ -=== tests/cases/compiler/es6-declaration-amd.ts === - -class A +=== tests/cases/compiler/es5ModuleWithModuleGenCommonjs.ts === +export class A >A : A { constructor () { - } public B() diff --git a/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.errors.txt b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.errors.txt new file mode 100644 index 00000000000..25e64fc72d0 --- /dev/null +++ b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/es5ModuleWithoutModuleGenTarget.ts(1,14): error TS1148: Cannot compile external modules unless the '--module' flag is provided. + + +==== tests/cases/compiler/es5ModuleWithoutModuleGenTarget.ts (1 errors) ==== + export class A + ~ +!!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. + { + constructor () + { + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.js b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.js new file mode 100644 index 00000000000..4f663875ade --- /dev/null +++ b/tests/baselines/reference/es5ModuleWithoutModuleGenTarget.js @@ -0,0 +1,23 @@ +//// [es5ModuleWithoutModuleGenTarget.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es5ModuleWithoutModuleGenTarget.js] +var A = (function () { + function A() { + } + A.prototype.B = function () { + return 42; + }; + return A; +})(); +exports.A = A; diff --git a/tests/baselines/reference/es6-amd.errors.txt b/tests/baselines/reference/es6-amd.errors.txt new file mode 100644 index 00000000000..cb1ef4b1287 --- /dev/null +++ b/tests/baselines/reference/es6-amd.errors.txt @@ -0,0 +1,18 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6-amd.ts (0 errors) ==== + + class A + { + constructor () + { + + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es6-amd.js b/tests/baselines/reference/es6-amd.js index 0cce3af0446..74f3037303e 100644 --- a/tests/baselines/reference/es6-amd.js +++ b/tests/baselines/reference/es6-amd.js @@ -14,14 +14,13 @@ class A } //// [es6-amd.js] -var A = (function () { - function A() { +class A { + constructor() { } - A.prototype.B = function () { + B() { return 42; - }; - return A; -})(); + } +} //# sourceMappingURL=es6-amd.js.map //// [es6-amd.d.ts] diff --git a/tests/baselines/reference/es6-amd.js.map b/tests/baselines/reference/es6-amd.js.map index 7371ba578bd..fe234f8424b 100644 --- a/tests/baselines/reference/es6-amd.js.map +++ b/tests/baselines/reference/es6-amd.js.map @@ -1,2 +1,2 @@ //// [es6-amd.js.map] -{"version":3,"file":"es6-amd.js","sourceRoot":"","sources":["es6-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es6-amd.js","sourceRoot":"","sources":["es6-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,CAACA;QAEJE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;AACLF,CAACA;AAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/es6-amd.sourcemap.txt b/tests/baselines/reference/es6-amd.sourcemap.txt index 070a35703e1..1ab547073c6 100644 --- a/tests/baselines/reference/es6-amd.sourcemap.txt +++ b/tests/baselines/reference/es6-amd.sourcemap.txt @@ -8,121 +8,84 @@ sources: es6-amd.ts emittedFile:tests/cases/compiler/es6-amd.js sourceFile:es6-amd.ts ------------------------------------------------------------------- ->>>var A = (function () { +>>>class A { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- ->>> function A() { +>>> constructor() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +3 > ^^^^^-> +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- ->>> A.prototype.B = function () { +>>> B() { 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^ +2 > ^ +3 > ^^^^^^^^^^^^^^-> 1-> > > public 2 > B -3 > 1->Emitted(4, 5) Source(9, 12) + SourceIndex(0) name (A) -2 >Emitted(4, 18) Source(9, 13) + SourceIndex(0) name (A) -3 >Emitted(4, 21) Source(9, 5) + SourceIndex(0) name (A) +2 >Emitted(4, 6) Source(9, 13) + SourceIndex(0) name (A) --- >>> return 42; -1 >^^^^^^^^ +1->^^^^^^^^ 2 > ^^^^^^ 3 > ^ 4 > ^^ 5 > ^ -1 >public B() +1->() > { > 2 > return 3 > 4 > 42 5 > ; -1 >Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) +1->Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) 2 >Emitted(5, 15) Source(11, 15) + SourceIndex(0) name (A.B) 3 >Emitted(5, 16) Source(11, 16) + SourceIndex(0) name (A.B) 4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) name (A.B) 5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) name (A.B) --- ->>> }; +>>> } 1 >^^^^ 2 > ^ -3 > ^^^^^^^^^-> 1 > > 2 > } 1 >Emitted(6, 5) Source(12, 5) + SourceIndex(0) name (A.B) 2 >Emitted(6, 6) Source(12, 6) + SourceIndex(0) name (A.B) --- ->>> return A; -1->^^^^ -2 > ^^^^^^^^ -1-> - > -2 > } -1->Emitted(7, 5) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(7, 13) Source(13, 2) + SourceIndex(0) name (A) ---- ->>>})(); +>>>} 1 > 2 >^ -3 > -4 > ^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > 2 >} -3 > -4 > class A - > { - > constructor () - > { - > - > } - > - > public B() - > { - > return 42; - > } - > } -1 >Emitted(8, 1) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(8, 2) Source(13, 2) + SourceIndex(0) name (A) -3 >Emitted(8, 2) Source(2, 1) + SourceIndex(0) -4 >Emitted(8, 6) Source(13, 2) + SourceIndex(0) +1 >Emitted(7, 1) Source(13, 1) + SourceIndex(0) name (A) +2 >Emitted(7, 2) Source(13, 2) + SourceIndex(0) name (A) --- ->>>//# sourceMappingURL=es6-amd.js.map \ No newline at end of file +>>>//# sourceMappingURL=es6-amd.js.map1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> +1->Emitted(8, 1) Source(13, 2) + SourceIndex(0) +--- \ No newline at end of file diff --git a/tests/baselines/reference/es6-declaration-amd.errors.txt b/tests/baselines/reference/es6-declaration-amd.errors.txt new file mode 100644 index 00000000000..18319504dc9 --- /dev/null +++ b/tests/baselines/reference/es6-declaration-amd.errors.txt @@ -0,0 +1,18 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6-declaration-amd.ts (0 errors) ==== + + class A + { + constructor () + { + + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es6-declaration-amd.js b/tests/baselines/reference/es6-declaration-amd.js index 471f96b223d..aeba23e0b6e 100644 --- a/tests/baselines/reference/es6-declaration-amd.js +++ b/tests/baselines/reference/es6-declaration-amd.js @@ -14,14 +14,13 @@ class A } //// [es6-declaration-amd.js] -var A = (function () { - function A() { +class A { + constructor() { } - A.prototype.B = function () { + B() { return 42; - }; - return A; -})(); + } +} //# sourceMappingURL=es6-declaration-amd.js.map //// [es6-declaration-amd.d.ts] diff --git a/tests/baselines/reference/es6-declaration-amd.js.map b/tests/baselines/reference/es6-declaration-amd.js.map index 0987f9478e9..ca1899e03f5 100644 --- a/tests/baselines/reference/es6-declaration-amd.js.map +++ b/tests/baselines/reference/es6-declaration-amd.js.map @@ -1,2 +1,2 @@ //// [es6-declaration-amd.js.map] -{"version":3,"file":"es6-declaration-amd.js","sourceRoot":"","sources":["es6-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es6-declaration-amd.js","sourceRoot":"","sources":["es6-declaration-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,CAACA;QAEJE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;AACLF,CAACA;AAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/es6-declaration-amd.sourcemap.txt b/tests/baselines/reference/es6-declaration-amd.sourcemap.txt index 1fc0b5f05fe..9061bc1ed7c 100644 --- a/tests/baselines/reference/es6-declaration-amd.sourcemap.txt +++ b/tests/baselines/reference/es6-declaration-amd.sourcemap.txt @@ -8,121 +8,84 @@ sources: es6-declaration-amd.ts emittedFile:tests/cases/compiler/es6-declaration-amd.js sourceFile:es6-declaration-amd.ts ------------------------------------------------------------------- ->>>var A = (function () { +>>>class A { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- ->>> function A() { +>>> constructor() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +3 > ^^^^^-> +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- ->>> A.prototype.B = function () { +>>> B() { 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^ +2 > ^ +3 > ^^^^^^^^^^^^^^-> 1-> > > public 2 > B -3 > 1->Emitted(4, 5) Source(9, 12) + SourceIndex(0) name (A) -2 >Emitted(4, 18) Source(9, 13) + SourceIndex(0) name (A) -3 >Emitted(4, 21) Source(9, 5) + SourceIndex(0) name (A) +2 >Emitted(4, 6) Source(9, 13) + SourceIndex(0) name (A) --- >>> return 42; -1 >^^^^^^^^ +1->^^^^^^^^ 2 > ^^^^^^ 3 > ^ 4 > ^^ 5 > ^ -1 >public B() +1->() > { > 2 > return 3 > 4 > 42 5 > ; -1 >Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) +1->Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) 2 >Emitted(5, 15) Source(11, 15) + SourceIndex(0) name (A.B) 3 >Emitted(5, 16) Source(11, 16) + SourceIndex(0) name (A.B) 4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) name (A.B) 5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) name (A.B) --- ->>> }; +>>> } 1 >^^^^ 2 > ^ -3 > ^^^^^^^^^-> 1 > > 2 > } 1 >Emitted(6, 5) Source(12, 5) + SourceIndex(0) name (A.B) 2 >Emitted(6, 6) Source(12, 6) + SourceIndex(0) name (A.B) --- ->>> return A; -1->^^^^ -2 > ^^^^^^^^ -1-> - > -2 > } -1->Emitted(7, 5) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(7, 13) Source(13, 2) + SourceIndex(0) name (A) ---- ->>>})(); +>>>} 1 > 2 >^ -3 > -4 > ^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > 2 >} -3 > -4 > class A - > { - > constructor () - > { - > - > } - > - > public B() - > { - > return 42; - > } - > } -1 >Emitted(8, 1) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(8, 2) Source(13, 2) + SourceIndex(0) name (A) -3 >Emitted(8, 2) Source(2, 1) + SourceIndex(0) -4 >Emitted(8, 6) Source(13, 2) + SourceIndex(0) +1 >Emitted(7, 1) Source(13, 1) + SourceIndex(0) name (A) +2 >Emitted(7, 2) Source(13, 2) + SourceIndex(0) name (A) --- ->>>//# sourceMappingURL=es6-declaration-amd.js.map \ No newline at end of file +>>>//# sourceMappingURL=es6-declaration-amd.js.map1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> +1->Emitted(8, 1) Source(13, 2) + SourceIndex(0) +--- \ No newline at end of file diff --git a/tests/baselines/reference/es6-sourcemap-amd.errors.txt b/tests/baselines/reference/es6-sourcemap-amd.errors.txt new file mode 100644 index 00000000000..24a83f8ee12 --- /dev/null +++ b/tests/baselines/reference/es6-sourcemap-amd.errors.txt @@ -0,0 +1,18 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6-sourcemap-amd.ts (0 errors) ==== + + class A + { + constructor () + { + + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es6-sourcemap-amd.js b/tests/baselines/reference/es6-sourcemap-amd.js index 805e56cf830..106726c0f2c 100644 --- a/tests/baselines/reference/es6-sourcemap-amd.js +++ b/tests/baselines/reference/es6-sourcemap-amd.js @@ -14,12 +14,11 @@ class A } //// [es6-sourcemap-amd.js] -var A = (function () { - function A() { +class A { + constructor() { } - A.prototype.B = function () { + B() { return 42; - }; - return A; -})(); + } +} //# sourceMappingURL=es6-sourcemap-amd.js.map \ No newline at end of file diff --git a/tests/baselines/reference/es6-sourcemap-amd.js.map b/tests/baselines/reference/es6-sourcemap-amd.js.map index 689f0447fa8..779c13b1296 100644 --- a/tests/baselines/reference/es6-sourcemap-amd.js.map +++ b/tests/baselines/reference/es6-sourcemap-amd.js.map @@ -1,2 +1,2 @@ //// [es6-sourcemap-amd.js.map] -{"version":3,"file":"es6-sourcemap-amd.js","sourceRoot":"","sources":["es6-sourcemap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA,IAAM,CAAC;IAEHA,SAFEA,CAACA;IAKHC,CAACA;IAEMD,aAACA,GAARA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IACLF,QAACA;AAADA,CAACA,AAXD,IAWC"} \ No newline at end of file +{"version":3,"file":"es6-sourcemap-amd.js","sourceRoot":"","sources":["es6-sourcemap-amd.ts"],"names":["A","A.constructor","A.B"],"mappings":"AACA;IAEIA;IAGAC,CAACA;IAEMD,CAACA;QAEJE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;AACLF,CAACA;AAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/es6-sourcemap-amd.sourcemap.txt b/tests/baselines/reference/es6-sourcemap-amd.sourcemap.txt index 09abb195987..179dd79ba17 100644 --- a/tests/baselines/reference/es6-sourcemap-amd.sourcemap.txt +++ b/tests/baselines/reference/es6-sourcemap-amd.sourcemap.txt @@ -8,121 +8,84 @@ sources: es6-sourcemap-amd.ts emittedFile:tests/cases/compiler/es6-sourcemap-amd.js sourceFile:es6-sourcemap-amd.ts ------------------------------------------------------------------- ->>>var A = (function () { +>>>class A { 1 > -2 >^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >class -3 > A 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 5) Source(2, 7) + SourceIndex(0) -3 >Emitted(1, 6) Source(2, 8) + SourceIndex(0) --- ->>> function A() { +>>> constructor() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^ -1-> +2 > ^^-> +1->class A >{ > -2 > -3 > A 1->Emitted(2, 5) Source(4, 5) + SourceIndex(0) name (A) -2 >Emitted(2, 14) Source(2, 7) + SourceIndex(0) name (A) -3 >Emitted(2, 15) Source(2, 8) + SourceIndex(0) name (A) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > - >{ - > constructor () +3 > ^^^^^-> +1->constructor () > { > > 2 > } -1 >Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) +1->Emitted(3, 5) Source(7, 5) + SourceIndex(0) name (A.constructor) 2 >Emitted(3, 6) Source(7, 6) + SourceIndex(0) name (A.constructor) --- ->>> A.prototype.B = function () { +>>> B() { 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^ +2 > ^ +3 > ^^^^^^^^^^^^^^-> 1-> > > public 2 > B -3 > 1->Emitted(4, 5) Source(9, 12) + SourceIndex(0) name (A) -2 >Emitted(4, 18) Source(9, 13) + SourceIndex(0) name (A) -3 >Emitted(4, 21) Source(9, 5) + SourceIndex(0) name (A) +2 >Emitted(4, 6) Source(9, 13) + SourceIndex(0) name (A) --- >>> return 42; -1 >^^^^^^^^ +1->^^^^^^^^ 2 > ^^^^^^ 3 > ^ 4 > ^^ 5 > ^ -1 >public B() +1->() > { > 2 > return 3 > 4 > 42 5 > ; -1 >Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) +1->Emitted(5, 9) Source(11, 9) + SourceIndex(0) name (A.B) 2 >Emitted(5, 15) Source(11, 15) + SourceIndex(0) name (A.B) 3 >Emitted(5, 16) Source(11, 16) + SourceIndex(0) name (A.B) 4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) name (A.B) 5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) name (A.B) --- ->>> }; +>>> } 1 >^^^^ 2 > ^ -3 > ^^^^^^^^^-> 1 > > 2 > } 1 >Emitted(6, 5) Source(12, 5) + SourceIndex(0) name (A.B) 2 >Emitted(6, 6) Source(12, 6) + SourceIndex(0) name (A.B) --- ->>> return A; -1->^^^^ -2 > ^^^^^^^^ -1-> - > -2 > } -1->Emitted(7, 5) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(7, 13) Source(13, 2) + SourceIndex(0) name (A) ---- ->>>})(); +>>>} 1 > 2 >^ -3 > -4 > ^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> -1 > +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > 2 >} -3 > -4 > class A - > { - > constructor () - > { - > - > } - > - > public B() - > { - > return 42; - > } - > } -1 >Emitted(8, 1) Source(13, 1) + SourceIndex(0) name (A) -2 >Emitted(8, 2) Source(13, 2) + SourceIndex(0) name (A) -3 >Emitted(8, 2) Source(2, 1) + SourceIndex(0) -4 >Emitted(8, 6) Source(13, 2) + SourceIndex(0) +1 >Emitted(7, 1) Source(13, 1) + SourceIndex(0) name (A) +2 >Emitted(7, 2) Source(13, 2) + SourceIndex(0) name (A) --- ->>>//# sourceMappingURL=es6-sourcemap-amd.js.map \ No newline at end of file +>>>//# sourceMappingURL=es6-sourcemap-amd.js.map1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> +1->Emitted(8, 1) Source(13, 2) + SourceIndex(0) +--- \ No newline at end of file diff --git a/tests/baselines/reference/es6ClassTest2.js b/tests/baselines/reference/es6ClassTest2.js index fb0349c9044..f23be04fd17 100644 --- a/tests/baselines/reference/es6ClassTest2.js +++ b/tests/baselines/reference/es6ClassTest2.js @@ -240,7 +240,12 @@ var SplatMonster = (function () { args[_i - 0] = arguments[_i]; } } - SplatMonster.prototype.roar = function (name) { }; + SplatMonster.prototype.roar = function (name) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + }; return SplatMonster; })(); function foo() { return true; } diff --git a/tests/baselines/reference/es6ClassTest3.errors.txt b/tests/baselines/reference/es6ClassTest3.errors.txt deleted file mode 100644 index 5eb310f338d..00000000000 --- a/tests/baselines/reference/es6ClassTest3.errors.txt +++ /dev/null @@ -1,23 +0,0 @@ -tests/cases/compiler/es6ClassTest3.ts(3,22): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. -tests/cases/compiler/es6ClassTest3.ts(4,23): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. - - -==== tests/cases/compiler/es6ClassTest3.ts (2 errors) ==== - module M { - class Visibility { - public foo() { }; - ~ -!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. - private bar() { }; - ~ -!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. - private x: number; - public y: number; - public z: number; - - constructor() { - this.x = 1; - this.y = 2; - } - } - } \ No newline at end of file diff --git a/tests/baselines/reference/es6ClassTest3.js b/tests/baselines/reference/es6ClassTest3.js index dc9f1c67154..572bd079636 100644 --- a/tests/baselines/reference/es6ClassTest3.js +++ b/tests/baselines/reference/es6ClassTest3.js @@ -23,7 +23,9 @@ var M; this.y = 2; } Visibility.prototype.foo = function () { }; + ; Visibility.prototype.bar = function () { }; + ; return Visibility; })(); })(M || (M = {})); diff --git a/tests/baselines/reference/es6ClassTest3.types b/tests/baselines/reference/es6ClassTest3.types new file mode 100644 index 00000000000..ba0f2036f0e --- /dev/null +++ b/tests/baselines/reference/es6ClassTest3.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/es6ClassTest3.ts === +module M { +>M : typeof M + + class Visibility { +>Visibility : Visibility + + public foo() { }; +>foo : () => void + + private bar() { }; +>bar : () => void + + private x: number; +>x : number + + public y: number; +>y : number + + public z: number; +>z : number + + constructor() { + this.x = 1; +>this.x = 1 : number +>this.x : number +>this : Visibility +>x : number + + this.y = 2; +>this.y = 2 : number +>this.y : number +>this : Visibility +>y : number + } + } +} diff --git a/tests/baselines/reference/es6ClassTest7.types b/tests/baselines/reference/es6ClassTest7.types index 9ac4a65b305..2ad5e88179c 100644 --- a/tests/baselines/reference/es6ClassTest7.types +++ b/tests/baselines/reference/es6ClassTest7.types @@ -9,7 +9,7 @@ declare module M { class Bar extends M.Foo { >Bar : Bar ->M : unknown +>M : typeof M >Foo : M.Foo } diff --git a/tests/baselines/reference/es6ExportAll.js b/tests/baselines/reference/es6ExportAll.js new file mode 100644 index 00000000000..afa07c39d8f --- /dev/null +++ b/tests/baselines/reference/es6ExportAll.js @@ -0,0 +1,43 @@ +//// [tests/cases/compiler/es6ExportAll.ts] //// + +//// [server.ts] + +export class c { +} +export interface i { +} +export module m { + export var x = 10; +} +export var x = 10; +export module uninstantiated { +} + +//// [client.ts] +export * from "server"; + +//// [server.js] +export class c { +} +export var m; +(function (m) { + m.x = 10; +})(m || (m = {})); +export var x = 10; +//// [client.js] +export * from "server"; + + +//// [server.d.ts] +export declare class c { +} +export interface i { +} +export declare module m { + var x: number; +} +export declare var x: number; +export declare module uninstantiated { +} +//// [client.d.ts] +export * from "server"; diff --git a/tests/baselines/reference/es6ExportAll.types b/tests/baselines/reference/es6ExportAll.types new file mode 100644 index 00000000000..99e8fde9d40 --- /dev/null +++ b/tests/baselines/reference/es6ExportAll.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/server.ts === + +export class c { +>c : c +} +export interface i { +>i : i +} +export module m { +>m : typeof m + + export var x = 10; +>x : number +} +export var x = 10; +>x : number + +export module uninstantiated { +>uninstantiated : unknown +} + +=== tests/cases/compiler/client.ts === +export * from "server"; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportAllInEs5.js b/tests/baselines/reference/es6ExportAllInEs5.js new file mode 100644 index 00000000000..1be3fa1f1b2 --- /dev/null +++ b/tests/baselines/reference/es6ExportAllInEs5.js @@ -0,0 +1,50 @@ +//// [tests/cases/compiler/es6ExportAllInEs5.ts] //// + +//// [server.ts] + +export class c { +} +export interface i { +} +export module m { + export var x = 10; +} +export var x = 10; +export module uninstantiated { +} + +//// [client.ts] +export * from "server"; + +//// [server.js] +var c = (function () { + function c() { + } + return c; +})(); +exports.c = c; +var m; +(function (m) { + m.x = 10; +})(m = exports.m || (exports.m = {})); +exports.x = 10; +//// [client.js] +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("server")); + + +//// [server.d.ts] +export declare class c { +} +export interface i { +} +export declare module m { + var x: number; +} +export declare var x: number; +export declare module uninstantiated { +} +//// [client.d.ts] +export * from "server"; diff --git a/tests/baselines/reference/es6ExportAllInEs5.types b/tests/baselines/reference/es6ExportAllInEs5.types new file mode 100644 index 00000000000..99e8fde9d40 --- /dev/null +++ b/tests/baselines/reference/es6ExportAllInEs5.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/server.ts === + +export class c { +>c : c +} +export interface i { +>i : i +} +export module m { +>m : typeof m + + export var x = 10; +>x : number +} +export var x = 10; +>x : number + +export module uninstantiated { +>uninstantiated : unknown +} + +=== tests/cases/compiler/client.ts === +export * from "server"; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportAssignment.errors.txt b/tests/baselines/reference/es6ExportAssignment.errors.txt new file mode 100644 index 00000000000..1db7d04e05e --- /dev/null +++ b/tests/baselines/reference/es6ExportAssignment.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/es6ExportAssignment.ts(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. + + +==== tests/cases/compiler/es6ExportAssignment.ts (1 errors) ==== + + var a = 10; + export = a; + ~~~~~~~~~~~ +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportAssignment.js b/tests/baselines/reference/es6ExportAssignment.js new file mode 100644 index 00000000000..4a4e0368bb7 --- /dev/null +++ b/tests/baselines/reference/es6ExportAssignment.js @@ -0,0 +1,7 @@ +//// [es6ExportAssignment.ts] + +var a = 10; +export = a; + +//// [es6ExportAssignment.js] +var a = 10; diff --git a/tests/baselines/reference/es6ExportClause.js b/tests/baselines/reference/es6ExportClause.js new file mode 100644 index 00000000000..f0d9bbe8cff --- /dev/null +++ b/tests/baselines/reference/es6ExportClause.js @@ -0,0 +1,48 @@ +//// [es6ExportClause.ts] + +class c { +} +interface i { +} +module m { + export var x = 10; +} +var x = 10; +module uninstantiated { +} +export { c }; +export { c as c2 }; +export { i, m as instantiatedModule }; +export { uninstantiated }; +export { x }; + +//// [es6ExportClause.js] +class c { +} +var m; +(function (m) { + m.x = 10; +})(m || (m = {})); +var x = 10; +export { c }; +export { c as c2 }; +export { m as instantiatedModule }; +export { x }; + + +//// [es6ExportClause.d.ts] +declare class c { +} +interface i { +} +declare module m { + var x: number; +} +declare var x: number; +declare module uninstantiated { +} +export { c }; +export { c as c2 }; +export { i, m as instantiatedModule }; +export { uninstantiated }; +export { x }; diff --git a/tests/baselines/reference/es6ExportClause.types b/tests/baselines/reference/es6ExportClause.types new file mode 100644 index 00000000000..24b9859e0e8 --- /dev/null +++ b/tests/baselines/reference/es6ExportClause.types @@ -0,0 +1,38 @@ +=== tests/cases/compiler/es6ExportClause.ts === + +class c { +>c : c +} +interface i { +>i : i +} +module m { +>m : typeof m + + export var x = 10; +>x : number +} +var x = 10; +>x : number + +module uninstantiated { +>uninstantiated : unknown +} +export { c }; +>c : typeof c + +export { c as c2 }; +>c : typeof c +>c2 : typeof c + +export { i, m as instantiatedModule }; +>i : unknown +>m : typeof m +>instantiatedModule : typeof m + +export { uninstantiated }; +>uninstantiated : unknown + +export { x }; +>x : number + diff --git a/tests/baselines/reference/es6ExportClauseInEs5.js b/tests/baselines/reference/es6ExportClauseInEs5.js new file mode 100644 index 00000000000..f987b48aeca --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseInEs5.js @@ -0,0 +1,51 @@ +//// [es6ExportClauseInEs5.ts] + +class c { +} +interface i { +} +module m { + export var x = 10; +} +var x = 10; +module uninstantiated { +} +export { c }; +export { c as c2 }; +export { i, m as instantiatedModule }; +export { uninstantiated }; +export { x }; + +//// [es6ExportClauseInEs5.js] +var c = (function () { + function c() { + } + return c; +})(); +exports.c = c; +exports.c2 = c; +var m; +(function (m) { + m.x = 10; +})(m || (m = {})); +exports.instantiatedModule = m; +var x = 10; +exports.x = x; + + +//// [es6ExportClauseInEs5.d.ts] +declare class c { +} +interface i { +} +declare module m { + var x: number; +} +declare var x: number; +declare module uninstantiated { +} +export { c }; +export { c as c2 }; +export { i, m as instantiatedModule }; +export { uninstantiated }; +export { x }; diff --git a/tests/baselines/reference/es6ExportClauseInEs5.types b/tests/baselines/reference/es6ExportClauseInEs5.types new file mode 100644 index 00000000000..8caedfa5ceb --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseInEs5.types @@ -0,0 +1,38 @@ +=== tests/cases/compiler/es6ExportClauseInEs5.ts === + +class c { +>c : c +} +interface i { +>i : i +} +module m { +>m : typeof m + + export var x = 10; +>x : number +} +var x = 10; +>x : number + +module uninstantiated { +>uninstantiated : unknown +} +export { c }; +>c : typeof c + +export { c as c2 }; +>c : typeof c +>c2 : typeof c + +export { i, m as instantiatedModule }; +>i : unknown +>m : typeof m +>instantiatedModule : typeof m + +export { uninstantiated }; +>uninstantiated : unknown + +export { x }; +>x : number + diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js new file mode 100644 index 00000000000..ccdd32d99c0 --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js @@ -0,0 +1,54 @@ +//// [tests/cases/compiler/es6ExportClauseWithoutModuleSpecifier.ts] //// + +//// [server.ts] + +export class c { +} +export interface i { +} +export module m { + export var x = 10; +} +export var x = 10; +export module uninstantiated { +} + +//// [client.ts] +export { c } from "server"; +export { c as c2 } from "server"; +export { i, m as instantiatedModule } from "server"; +export { uninstantiated } from "server"; +export { x } from "server"; + +//// [server.js] +export class c { +} +export var m; +(function (m) { + m.x = 10; +})(m || (m = {})); +export var x = 10; +//// [client.js] +export { c } from "server"; +export { c as c2 } from "server"; +export { m as instantiatedModule } from "server"; +export { x } from "server"; + + +//// [server.d.ts] +export declare class c { +} +export interface i { +} +export declare module m { + var x: number; +} +export declare var x: number; +export declare module uninstantiated { +} +//// [client.d.ts] +export { c } from "server"; +export { c as c2 } from "server"; +export { i, m as instantiatedModule } from "server"; +export { uninstantiated } from "server"; +export { x } from "server"; diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types new file mode 100644 index 00000000000..c0087dccd94 --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types @@ -0,0 +1,40 @@ +=== tests/cases/compiler/server.ts === + +export class c { +>c : c +} +export interface i { +>i : i +} +export module m { +>m : typeof m + + export var x = 10; +>x : number +} +export var x = 10; +>x : number + +export module uninstantiated { +>uninstantiated : unknown +} + +=== tests/cases/compiler/client.ts === +export { c } from "server"; +>c : typeof c + +export { c as c2 } from "server"; +>c : typeof c +>c2 : typeof c + +export { i, m as instantiatedModule } from "server"; +>i : unknown +>m : typeof instantiatedModule +>instantiatedModule : typeof instantiatedModule + +export { uninstantiated } from "server"; +>uninstantiated : unknown + +export { x } from "server"; +>x : number + diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js new file mode 100644 index 00000000000..6250e0ce326 --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.js @@ -0,0 +1,62 @@ +//// [tests/cases/compiler/es6ExportClauseWithoutModuleSpecifierInEs5.ts] //// + +//// [server.ts] + +export class c { +} +export interface i { +} +export module m { + export var x = 10; +} +export var x = 10; +export module uninstantiated { +} + +//// [client.ts] +export { c } from "server"; +export { c as c2 } from "server"; +export { i, m as instantiatedModule } from "server"; +export { uninstantiated } from "server"; +export { x } from "server"; + +//// [server.js] +var c = (function () { + function c() { + } + return c; +})(); +exports.c = c; +var m; +(function (m) { + m.x = 10; +})(m = exports.m || (exports.m = {})); +exports.x = 10; +//// [client.js] +var server_1 = require("server"); +exports.c = server_1.c; +var server_2 = require("server"); +exports.c2 = server_2.c; +var server_3 = require("server"); +exports.instantiatedModule = server_3.m; +var server_4 = require("server"); +exports.x = server_4.x; + + +//// [server.d.ts] +export declare class c { +} +export interface i { +} +export declare module m { + var x: number; +} +export declare var x: number; +export declare module uninstantiated { +} +//// [client.d.ts] +export { c } from "server"; +export { c as c2 } from "server"; +export { i, m as instantiatedModule } from "server"; +export { uninstantiated } from "server"; +export { x } from "server"; diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types new file mode 100644 index 00000000000..c0087dccd94 --- /dev/null +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types @@ -0,0 +1,40 @@ +=== tests/cases/compiler/server.ts === + +export class c { +>c : c +} +export interface i { +>i : i +} +export module m { +>m : typeof m + + export var x = 10; +>x : number +} +export var x = 10; +>x : number + +export module uninstantiated { +>uninstantiated : unknown +} + +=== tests/cases/compiler/client.ts === +export { c } from "server"; +>c : typeof c + +export { c as c2 } from "server"; +>c : typeof c +>c2 : typeof c + +export { i, m as instantiatedModule } from "server"; +>i : unknown +>m : typeof instantiatedModule +>instantiatedModule : typeof instantiatedModule + +export { uninstantiated } from "server"; +>uninstantiated : unknown + +export { x } from "server"; +>x : number + diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration.js b/tests/baselines/reference/es6ExportDefaultClassDeclaration.js new file mode 100644 index 00000000000..8162d6813b6 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration.js @@ -0,0 +1,17 @@ +//// [es6ExportDefaultClassDeclaration.ts] + +export default class C { + method() { } +} + + +//// [es6ExportDefaultClassDeclaration.js] +export default class C { + method() { } +} + + +//// [es6ExportDefaultClassDeclaration.d.ts] +export default class C { + method(): void; +} diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration.types b/tests/baselines/reference/es6ExportDefaultClassDeclaration.types new file mode 100644 index 00000000000..59e74fc1257 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/es6ExportDefaultClassDeclaration.ts === + +export default class C { +>C : C + + method() { } +>method : () => void +} + diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js new file mode 100644 index 00000000000..e2f8524fb06 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.js @@ -0,0 +1,17 @@ +//// [es6ExportDefaultClassDeclaration2.ts] + +export default class { + method() { } +} + + +//// [es6ExportDefaultClassDeclaration2.js] +export default class { + method() { } +} + + +//// [es6ExportDefaultClassDeclaration2.d.ts] +export default class { + method(): void; +} diff --git a/tests/baselines/reference/es6ExportDefaultClassDeclaration2.types b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.types new file mode 100644 index 00000000000..513cacf05e4 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultClassDeclaration2.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/es6ExportDefaultClassDeclaration2.ts === + +export default class { + method() { } +>method : () => void +} + diff --git a/tests/baselines/reference/es6ExportDefaultExpression.js b/tests/baselines/reference/es6ExportDefaultExpression.js new file mode 100644 index 00000000000..322e09bc46f --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultExpression.js @@ -0,0 +1,11 @@ +//// [es6ExportDefaultExpression.ts] + +export default (1 + 2); + + +//// [es6ExportDefaultExpression.js] +export default (1 + 2); + + +//// [es6ExportDefaultExpression.d.ts] +export default : number; diff --git a/tests/baselines/reference/es6ExportDefaultExpression.types b/tests/baselines/reference/es6ExportDefaultExpression.types new file mode 100644 index 00000000000..3b056b8d9f9 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultExpression.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/es6ExportDefaultExpression.ts === + +export default (1 + 2); +>(1 + 2) : number +>1 + 2 : number + diff --git a/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.js b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.js new file mode 100644 index 00000000000..a30c8d71039 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.js @@ -0,0 +1,11 @@ +//// [es6ExportDefaultFunctionDeclaration.ts] + +export default function f() { } + + +//// [es6ExportDefaultFunctionDeclaration.js] +export default function f() { } + + +//// [es6ExportDefaultFunctionDeclaration.d.ts] +export default function f(): void; diff --git a/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.types b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.types new file mode 100644 index 00000000000..6179bde9613 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/es6ExportDefaultFunctionDeclaration.ts === + +export default function f() { } +>f : () => void + diff --git a/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.js b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.js new file mode 100644 index 00000000000..46ed72dd236 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.js @@ -0,0 +1,11 @@ +//// [es6ExportDefaultFunctionDeclaration2.ts] + +export default function () { } + + +//// [es6ExportDefaultFunctionDeclaration2.js] +export default function () { } + + +//// [es6ExportDefaultFunctionDeclaration2.d.ts] +export default function (): void; diff --git a/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.types b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.types new file mode 100644 index 00000000000..3cb2fc9b1cd --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultFunctionDeclaration2.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/es6ExportDefaultFunctionDeclaration2.ts === + +No type information for this code.export default function () { } +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportDefaultIdentifier.js b/tests/baselines/reference/es6ExportDefaultIdentifier.js new file mode 100644 index 00000000000..1fd3a38ff8d --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultIdentifier.js @@ -0,0 +1,15 @@ +//// [es6ExportDefaultIdentifier.ts] + +export function f() { } + +export default f; + + +//// [es6ExportDefaultIdentifier.js] +export function f() { } +export default f; + + +//// [es6ExportDefaultIdentifier.d.ts] +export declare function f(): void; +export default f; diff --git a/tests/baselines/reference/es6ExportDefaultIdentifier.types b/tests/baselines/reference/es6ExportDefaultIdentifier.types new file mode 100644 index 00000000000..81dc168efd0 --- /dev/null +++ b/tests/baselines/reference/es6ExportDefaultIdentifier.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/es6ExportDefaultIdentifier.ts === + +export function f() { } +>f : () => void + +export default f; +>f : () => void + diff --git a/tests/baselines/reference/es6ExportEquals.errors.txt b/tests/baselines/reference/es6ExportEquals.errors.txt new file mode 100644 index 00000000000..174c72341f6 --- /dev/null +++ b/tests/baselines/reference/es6ExportEquals.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/es6ExportEquals.ts(4,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. +tests/cases/compiler/es6ExportEquals.ts(4,1): error TS2309: An export assignment cannot be used in a module with other exported elements. + + +==== tests/cases/compiler/es6ExportEquals.ts (2 errors) ==== + + export function f() { } + + export = f; + ~~~~~~~~~~~ +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. + ~~~~~~~~~~~ +!!! error TS2309: An export assignment cannot be used in a module with other exported elements. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportEquals.js b/tests/baselines/reference/es6ExportEquals.js new file mode 100644 index 00000000000..e4cf13758ff --- /dev/null +++ b/tests/baselines/reference/es6ExportEquals.js @@ -0,0 +1,14 @@ +//// [es6ExportEquals.ts] + +export function f() { } + +export = f; + + +//// [es6ExportEquals.js] +export function f() { } + + +//// [es6ExportEquals.d.ts] +export declare function f(): void; +export = f; diff --git a/tests/baselines/reference/es6ExportEqualsInterop.errors.txt b/tests/baselines/reference/es6ExportEqualsInterop.errors.txt new file mode 100644 index 00000000000..7cc84187145 --- /dev/null +++ b/tests/baselines/reference/es6ExportEqualsInterop.errors.txt @@ -0,0 +1,304 @@ +tests/cases/compiler/main.ts(15,1): error TS2304: Cannot find name 'z1'. +tests/cases/compiler/main.ts(21,4): error TS2339: Property 'a' does not exist on type '() => any'. +tests/cases/compiler/main.ts(23,4): error TS2339: Property 'a' does not exist on type 'typeof Foo'. +tests/cases/compiler/main.ts(27,8): error TS1192: External module '"interface"' has no default export. +tests/cases/compiler/main.ts(28,8): error TS1192: External module '"variable"' has no default export. +tests/cases/compiler/main.ts(29,8): error TS1192: External module '"interface-variable"' has no default export. +tests/cases/compiler/main.ts(30,8): error TS1192: External module '"module"' has no default export. +tests/cases/compiler/main.ts(31,8): error TS1192: External module '"interface-module"' has no default export. +tests/cases/compiler/main.ts(32,8): error TS1192: External module '"variable-module"' has no default export. +tests/cases/compiler/main.ts(33,8): error TS1192: External module '"function"' has no default export. +tests/cases/compiler/main.ts(34,8): error TS1192: External module '"function-module"' has no default export. +tests/cases/compiler/main.ts(35,8): error TS1192: External module '"class"' has no default export. +tests/cases/compiler/main.ts(36,8): error TS1192: External module '"class-module"' has no default export. +tests/cases/compiler/main.ts(39,21): error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(45,21): error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(47,21): error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(62,25): error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(68,25): error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(70,25): error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(85,25): error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(91,25): error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(93,25): error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(97,15): error TS2498: External module '"interface"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(98,15): error TS2498: External module '"variable"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(99,15): error TS2498: External module '"interface-variable"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(100,15): error TS2498: External module '"module"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(101,15): error TS2498: External module '"interface-module"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(102,15): error TS2498: External module '"variable-module"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(103,15): error TS2498: External module '"function"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(104,15): error TS2498: External module '"function-module"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(105,15): error TS2498: External module '"class"' uses 'export =' and cannot be used with 'export *'. +tests/cases/compiler/main.ts(106,15): error TS2498: External module '"class-module"' uses 'export =' and cannot be used with 'export *'. + + +==== tests/cases/compiler/main.ts (32 errors) ==== + /// + + // import-equals + import z1 = require("interface"); + import z2 = require("variable"); + import z3 = require("interface-variable"); + import z4 = require("module"); + import z5 = require("interface-module"); + import z6 = require("variable-module"); + import z7 = require("function"); + import z8 = require("function-module"); + import z9 = require("class"); + import z0 = require("class-module"); + + z1.a; + ~~ +!!! error TS2304: Cannot find name 'z1'. + z2.a; + z3.a; + z4.a; + z5.a; + z6.a; + z7.a; + ~ +!!! error TS2339: Property 'a' does not exist on type '() => any'. + z8.a; + z9.a; + ~ +!!! error TS2339: Property 'a' does not exist on type 'typeof Foo'. + z0.a; + + // default import + import x1 from "interface"; + ~~ +!!! error TS1192: External module '"interface"' has no default export. + import x2 from "variable"; + ~~ +!!! error TS1192: External module '"variable"' has no default export. + import x3 from "interface-variable"; + ~~ +!!! error TS1192: External module '"interface-variable"' has no default export. + import x4 from "module"; + ~~ +!!! error TS1192: External module '"module"' has no default export. + import x5 from "interface-module"; + ~~ +!!! error TS1192: External module '"interface-module"' has no default export. + import x6 from "variable-module"; + ~~ +!!! error TS1192: External module '"variable-module"' has no default export. + import x7 from "function"; + ~~ +!!! error TS1192: External module '"function"' has no default export. + import x8 from "function-module"; + ~~ +!!! error TS1192: External module '"function-module"' has no default export. + import x9 from "class"; + ~~ +!!! error TS1192: External module '"class"' has no default export. + import x0 from "class-module"; + ~~ +!!! error TS1192: External module '"class-module"' has no default export. + + // namespace import + import * as y1 from "interface"; + ~~~~~~~~~~~ +!!! error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. + import * as y2 from "variable"; + import * as y3 from "interface-variable"; + import * as y4 from "module"; + import * as y5 from "interface-module"; + import * as y6 from "variable-module"; + import * as y7 from "function"; + ~~~~~~~~~~ +!!! error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. + import * as y8 from "function-module"; + import * as y9 from "class"; + ~~~~~~~ +!!! error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. + import * as y0 from "class-module"; + + y1.a; + y2.a; + y3.a; + y4.a; + y5.a; + y6.a; + y7.a; + y8.a; + y9.a; + y0.a; + + // named import + import { a as a1 } from "interface"; + ~~~~~~~~~~~ +!!! error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. + import { a as a2 } from "variable"; + import { a as a3 } from "interface-variable"; + import { a as a4 } from "module"; + import { a as a5 } from "interface-module"; + import { a as a6 } from "variable-module"; + import { a as a7 } from "function"; + ~~~~~~~~~~ +!!! error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. + import { a as a8 } from "function-module"; + import { a as a9 } from "class"; + ~~~~~~~ +!!! error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. + import { a as a0 } from "class-module"; + + a1; + a2; + a3; + a4; + a5; + a6; + a7; + a8; + a9; + a0; + + // named export + export { a as a1 } from "interface"; + ~~~~~~~~~~~ +!!! error TS2497: External module '"interface"' resolves to a non-module entity and cannot be imported using this construct. + export { a as a2 } from "variable"; + export { a as a3 } from "interface-variable"; + export { a as a4 } from "module"; + export { a as a5 } from "interface-module"; + export { a as a6 } from "variable-module"; + export { a as a7 } from "function"; + ~~~~~~~~~~ +!!! error TS2497: External module '"function"' resolves to a non-module entity and cannot be imported using this construct. + export { a as a8 } from "function-module"; + export { a as a9 } from "class"; + ~~~~~~~ +!!! error TS2497: External module '"class"' resolves to a non-module entity and cannot be imported using this construct. + export { a as a0 } from "class-module"; + + // export-star + export * from "interface"; + ~~~~~~~~~~~ +!!! error TS2498: External module '"interface"' uses 'export =' and cannot be used with 'export *'. + export * from "variable"; + ~~~~~~~~~~ +!!! error TS2498: External module '"variable"' uses 'export =' and cannot be used with 'export *'. + export * from "interface-variable"; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS2498: External module '"interface-variable"' uses 'export =' and cannot be used with 'export *'. + export * from "module"; + ~~~~~~~~ +!!! error TS2498: External module '"module"' uses 'export =' and cannot be used with 'export *'. + export * from "interface-module"; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2498: External module '"interface-module"' uses 'export =' and cannot be used with 'export *'. + export * from "variable-module"; + ~~~~~~~~~~~~~~~~~ +!!! error TS2498: External module '"variable-module"' uses 'export =' and cannot be used with 'export *'. + export * from "function"; + ~~~~~~~~~~ +!!! error TS2498: External module '"function"' uses 'export =' and cannot be used with 'export *'. + export * from "function-module"; + ~~~~~~~~~~~~~~~~~ +!!! error TS2498: External module '"function-module"' uses 'export =' and cannot be used with 'export *'. + export * from "class"; + ~~~~~~~ +!!! error TS2498: External module '"class"' uses 'export =' and cannot be used with 'export *'. + export * from "class-module"; + ~~~~~~~~~~~~~~ +!!! error TS2498: External module '"class-module"' uses 'export =' and cannot be used with 'export *'. + +==== tests/cases/compiler/modules.d.ts (0 errors) ==== + + declare module "interface" { + interface Foo { + x: number; + y: number; + } + export = Foo; + } + + declare module "variable" { + var Foo: { + a: number; + b: number; + } + export = Foo; + } + + declare module "interface-variable" { + interface Foo { + x: number; + y: number; + } + var Foo: { + a: number; + b: number; + } + export = Foo; + } + + declare module "module" { + module Foo { + export var a: number; + export var b: number; + } + export = Foo; + } + + declare module "interface-module" { + interface Foo { + x: number; + y: number; + } + module Foo { + export var a: number; + export var b: number; + } + export = Foo; + } + + declare module "variable-module" { + module Foo { + interface Bar { + x: number; + y: number; + } + } + var Foo: { + a: number; + b: number; + } + export = Foo; + } + + declare module "function" { + function foo(); + export = foo; + } + + declare module "function-module" { + function foo(); + module foo { + export var a: number; + export var b: number; + } + export = foo; + } + + declare module "class" { + class Foo { + x: number; + y: number; + } + export = Foo; + } + + declare module "class-module" { + class Foo { + x: number; + y: number; + } + module Foo { + export var a: number; + export var b: number; + } + export = Foo; + } + \ No newline at end of file diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js new file mode 100644 index 00000000000..747b0b2beb8 --- /dev/null +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -0,0 +1,301 @@ +//// [tests/cases/compiler/es6ExportEqualsInterop.ts] //// + +//// [modules.d.ts] + +declare module "interface" { + interface Foo { + x: number; + y: number; + } + export = Foo; +} + +declare module "variable" { + var Foo: { + a: number; + b: number; + } + export = Foo; +} + +declare module "interface-variable" { + interface Foo { + x: number; + y: number; + } + var Foo: { + a: number; + b: number; + } + export = Foo; +} + +declare module "module" { + module Foo { + export var a: number; + export var b: number; + } + export = Foo; +} + +declare module "interface-module" { + interface Foo { + x: number; + y: number; + } + module Foo { + export var a: number; + export var b: number; + } + export = Foo; +} + +declare module "variable-module" { + module Foo { + interface Bar { + x: number; + y: number; + } + } + var Foo: { + a: number; + b: number; + } + export = Foo; +} + +declare module "function" { + function foo(); + export = foo; +} + +declare module "function-module" { + function foo(); + module foo { + export var a: number; + export var b: number; + } + export = foo; +} + +declare module "class" { + class Foo { + x: number; + y: number; + } + export = Foo; +} + +declare module "class-module" { + class Foo { + x: number; + y: number; + } + module Foo { + export var a: number; + export var b: number; + } + export = Foo; +} + +//// [main.ts] +/// + +// import-equals +import z1 = require("interface"); +import z2 = require("variable"); +import z3 = require("interface-variable"); +import z4 = require("module"); +import z5 = require("interface-module"); +import z6 = require("variable-module"); +import z7 = require("function"); +import z8 = require("function-module"); +import z9 = require("class"); +import z0 = require("class-module"); + +z1.a; +z2.a; +z3.a; +z4.a; +z5.a; +z6.a; +z7.a; +z8.a; +z9.a; +z0.a; + +// default import +import x1 from "interface"; +import x2 from "variable"; +import x3 from "interface-variable"; +import x4 from "module"; +import x5 from "interface-module"; +import x6 from "variable-module"; +import x7 from "function"; +import x8 from "function-module"; +import x9 from "class"; +import x0 from "class-module"; + +// namespace import +import * as y1 from "interface"; +import * as y2 from "variable"; +import * as y3 from "interface-variable"; +import * as y4 from "module"; +import * as y5 from "interface-module"; +import * as y6 from "variable-module"; +import * as y7 from "function"; +import * as y8 from "function-module"; +import * as y9 from "class"; +import * as y0 from "class-module"; + +y1.a; +y2.a; +y3.a; +y4.a; +y5.a; +y6.a; +y7.a; +y8.a; +y9.a; +y0.a; + +// named import +import { a as a1 } from "interface"; +import { a as a2 } from "variable"; +import { a as a3 } from "interface-variable"; +import { a as a4 } from "module"; +import { a as a5 } from "interface-module"; +import { a as a6 } from "variable-module"; +import { a as a7 } from "function"; +import { a as a8 } from "function-module"; +import { a as a9 } from "class"; +import { a as a0 } from "class-module"; + +a1; +a2; +a3; +a4; +a5; +a6; +a7; +a8; +a9; +a0; + +// named export +export { a as a1 } from "interface"; +export { a as a2 } from "variable"; +export { a as a3 } from "interface-variable"; +export { a as a4 } from "module"; +export { a as a5 } from "interface-module"; +export { a as a6 } from "variable-module"; +export { a as a7 } from "function"; +export { a as a8 } from "function-module"; +export { a as a9 } from "class"; +export { a as a0 } from "class-module"; + +// export-star +export * from "interface"; +export * from "variable"; +export * from "interface-variable"; +export * from "module"; +export * from "interface-module"; +export * from "variable-module"; +export * from "function"; +export * from "function-module"; +export * from "class"; +export * from "class-module"; + + +//// [main.js] +/// +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +var z2 = require("variable"); +var z3 = require("interface-variable"); +var z4 = require("module"); +var z5 = require("interface-module"); +var z6 = require("variable-module"); +var z7 = require("function"); +var z8 = require("function-module"); +var z9 = require("class"); +var z0 = require("class-module"); +z1.a; +z2.a; +z3.a; +z4.a; +z5.a; +z6.a; +z7.a; +z8.a; +z9.a; +z0.a; +// namespace import +var y1 = require("interface"); +var y2 = require("variable"); +var y3 = require("interface-variable"); +var y4 = require("module"); +var y5 = require("interface-module"); +var y6 = require("variable-module"); +var y7 = require("function"); +var y8 = require("function-module"); +var y9 = require("class"); +var y0 = require("class-module"); +y1.a; +y2.a; +y3.a; +y4.a; +y5.a; +y6.a; +y7.a; +y8.a; +y9.a; +y0.a; +// named import +var interface_1 = require("interface"); +var variable_1 = require("variable"); +var interface_variable_1 = require("interface-variable"); +var module_1 = require("module"); +var interface_module_1 = require("interface-module"); +var variable_module_1 = require("variable-module"); +var function_1 = require("function"); +var function_module_1 = require("function-module"); +var class_1 = require("class"); +var class_module_1 = require("class-module"); +interface_1.a; +variable_1.a; +interface_variable_1.a; +module_1.a; +interface_module_1.a; +variable_module_1.a; +function_1.a; +function_module_1.a; +class_1.a; +class_module_1.a; +// named export +var variable_2 = require("variable"); +exports.a2 = variable_2.a; +var interface_variable_2 = require("interface-variable"); +exports.a3 = interface_variable_2.a; +var module_2 = require("module"); +exports.a4 = module_2.a; +var interface_module_2 = require("interface-module"); +exports.a5 = interface_module_2.a; +var variable_module_2 = require("variable-module"); +exports.a6 = variable_module_2.a; +var function_module_2 = require("function-module"); +exports.a8 = function_module_2.a; +var class_module_2 = require("class-module"); +exports.a0 = class_module_2.a; +// export-star +__export(require("interface")); +__export(require("variable")); +__export(require("interface-variable")); +__export(require("module")); +__export(require("interface-module")); +__export(require("variable-module")); +__export(require("function")); +__export(require("function-module")); +__export(require("class")); +__export(require("class-module")); diff --git a/tests/baselines/reference/es6ImportDefaultBinding.errors.txt b/tests/baselines/reference/es6ImportDefaultBinding.errors.txt deleted file mode 100644 index 85390ecce4b..00000000000 --- a/tests/baselines/reference/es6ImportDefaultBinding.errors.txt +++ /dev/null @@ -1,11 +0,0 @@ -tests/cases/compiler/es6ImportDefaultBinding_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBinding_0"' has no default export or export assignment. - - -==== tests/cases/compiler/es6ImportDefaultBinding_0.ts (0 errors) ==== - - export var a = 10; - -==== tests/cases/compiler/es6ImportDefaultBinding_1.ts (1 errors) ==== - import defaultBinding from "es6ImportDefaultBinding_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBinding_0"' has no default export or export assignment. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBinding.js b/tests/baselines/reference/es6ImportDefaultBinding.js index d8d1fa8111d..2798d025894 100644 --- a/tests/baselines/reference/es6ImportDefaultBinding.js +++ b/tests/baselines/reference/es6ImportDefaultBinding.js @@ -2,11 +2,24 @@ //// [es6ImportDefaultBinding_0.ts] -export var a = 10; +var a = 10; +export default a; //// [es6ImportDefaultBinding_1.ts] -import defaultBinding from "es6ImportDefaultBinding_0"; +import defaultBinding from "es6ImportDefaultBinding_0"; +var x = defaultBinding; +import defaultBinding2 from "es6ImportDefaultBinding_0"; // elide this import since defaultBinding2 is not used + //// [es6ImportDefaultBinding_0.js] -exports.a = 10; +var a = 10; +export default a; //// [es6ImportDefaultBinding_1.js] +import defaultBinding from "es6ImportDefaultBinding_0"; +var x = defaultBinding; + + +//// [es6ImportDefaultBinding_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBinding_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBinding.types b/tests/baselines/reference/es6ImportDefaultBinding.types new file mode 100644 index 00000000000..13504101a2c --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBinding.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/es6ImportDefaultBinding_0.ts === + +var a = 10; +>a : number + +export default a; +>a : number + +=== tests/cases/compiler/es6ImportDefaultBinding_1.ts === +import defaultBinding from "es6ImportDefaultBinding_0"; +>defaultBinding : number + +var x = defaultBinding; +>x : number +>defaultBinding : number + +import defaultBinding2 from "es6ImportDefaultBinding_0"; // elide this import since defaultBinding2 is not used +>defaultBinding2 : number + diff --git a/tests/baselines/reference/es6ImportDefaultBindingAmd.js b/tests/baselines/reference/es6ImportDefaultBindingAmd.js new file mode 100644 index 00000000000..70e4f7e2f57 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingAmd.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingAmd.ts] //// + +//// [es6ImportDefaultBindingAmd_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingAmd_1.ts] +import defaultBinding from "es6ImportDefaultBindingAmd_0"; +var x = defaultBinding; +import defaultBinding2 from "es6ImportDefaultBindingAmd_0"; // elide this import since defaultBinding2 is not used + + +//// [es6ImportDefaultBindingAmd_0.js] +define(["require", "exports"], function (require, exports) { + var a = 10; + exports.default = a; +}); +//// [es6ImportDefaultBindingAmd_1.js] +define(["require", "exports", "es6ImportDefaultBindingAmd_0"], function (require, exports, es6ImportDefaultBindingAmd_0_1) { + var x = es6ImportDefaultBindingAmd_0_1.default; +}); + + +//// [es6ImportDefaultBindingAmd_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBindingAmd_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingAmd.types b/tests/baselines/reference/es6ImportDefaultBindingAmd.types new file mode 100644 index 00000000000..323ed557d8b --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingAmd.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/es6ImportDefaultBindingAmd_0.ts === + +var a = 10; +>a : number + +export default a; +>a : number + +=== tests/cases/compiler/es6ImportDefaultBindingAmd_1.ts === +import defaultBinding from "es6ImportDefaultBindingAmd_0"; +>defaultBinding : number + +var x = defaultBinding; +>x : number +>defaultBinding : number + +import defaultBinding2 from "es6ImportDefaultBindingAmd_0"; // elide this import since defaultBinding2 is not used +>defaultBinding2 : number + diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.js b/tests/baselines/reference/es6ImportDefaultBindingDts.js new file mode 100644 index 00000000000..caa46ed30ef --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.js @@ -0,0 +1,32 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingDts.ts] //// + +//// [server.ts] + +class c { } +export default c; + +//// [client.ts] +import defaultBinding from "server"; +export var x = new defaultBinding(); +import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used + + +//// [server.js] +var c = (function () { + function c() { + } + return c; +})(); +exports.default = c; +//// [client.js] +var server_1 = require("server"); +exports.x = new server_1.default(); + + +//// [server.d.ts] +declare class c { +} +export default c; +//// [client.d.ts] +import defaultBinding from "server"; +export declare var x: defaultBinding; diff --git a/tests/baselines/reference/es6ImportDefaultBindingDts.types b/tests/baselines/reference/es6ImportDefaultBindingDts.types new file mode 100644 index 00000000000..65754d80680 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingDts.types @@ -0,0 +1,20 @@ +=== tests/cases/compiler/server.ts === + +class c { } +>c : c + +export default c; +>c : c + +=== tests/cases/compiler/client.ts === +import defaultBinding from "server"; +>defaultBinding : typeof defaultBinding + +export var x = new defaultBinding(); +>x : defaultBinding +>new defaultBinding() : defaultBinding +>defaultBinding : typeof defaultBinding + +import defaultBinding2 from "server"; // elide this import since defaultBinding2 is not used +>defaultBinding2 : typeof defaultBinding + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt index bd8714cb86f..34bb303a571 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.errors.txt @@ -1,51 +1,25 @@ -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(1,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(2,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(2,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(3,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(3,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(4,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(4,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(5,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(5,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(6,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts(6,8): error TS2300: Duplicate identifier 'defaultBinding'. +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0.ts (0 errors) ==== export var a = 10; export var x = a; export var m = a; + export default {}; -==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts (12 errors) ==== - import defaultBinding, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. \ No newline at end of file +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport_1.ts (0 errors) ==== + import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + var x1: number = a; + import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + var x1: number = b; + import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + var x1: number = x; + var x1: number = y; + import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + var x1: number = z; + import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; + var x1: number = m; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js index a7402bfeb6a..eef23579212 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -5,17 +5,45 @@ export var a = 10; export var x = a; export var m = a; +export default {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.ts] -import defaultBinding, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding, { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; -import defaultBinding, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1: number = a; +import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1: number = b; +import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1: number = x; +var x1: number = y; +import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1: number = z; +import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1: number = m; + //// [es6ImportDefaultBindingFollowedWithNamedImport_0.js] -exports.a = 10; -exports.x = exports.a; -exports.m = exports.a; +export var a = 10; +export var x = a; +export var m = a; +export default {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.js] +import { a } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1 = a; +import { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1 = b; +import { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1 = x; +var x1 = y; +import { x as z } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1 = z; +import { m } from "es6ImportDefaultBindingFollowedWithNamedImport_0"; +var x1 = m; + + +//// [es6ImportDefaultBindingFollowedWithNamedImport_0.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export default : {}; +//// [es6ImportDefaultBindingFollowedWithNamedImport_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt new file mode 100644 index 00000000000..21f488e9ca5 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.errors.txt @@ -0,0 +1,39 @@ +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(3,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(5,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(7,30): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(9,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts(11,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. + + +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_1.ts (6 errors) ==== + import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + var x1: number = defaultBinding1; + import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. + var x1: number = defaultBinding2; + import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. + var x1: number = defaultBinding3; + import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'a'. + var x1: number = defaultBinding4; + import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'x'. + var x1: number = defaultBinding5; + import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1_0"' has no exported member 'm'. + var x1: number = defaultBinding6; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.js new file mode 100644 index 00000000000..755af6f4fdb --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1.js @@ -0,0 +1,44 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1.ts] //// + +//// [es6ImportDefaultBindingFollowedWithNamedImport1_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingFollowedWithNamedImport1_1.ts] +import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding1; +import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding2; +import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding3; +import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding4; +import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding5; +import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1: number = defaultBinding6; + + +//// [es6ImportDefaultBindingFollowedWithNamedImport1_0.js] +var a = 10; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamedImport1_1.js] +import defaultBinding1 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding1; +import defaultBinding2 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding2; +import defaultBinding3 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding3; +import defaultBinding4 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding4; +import defaultBinding5 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding5; +import defaultBinding6 from "es6ImportDefaultBindingFollowedWithNamedImport1_0"; +var x1 = defaultBinding6; + + +//// [es6ImportDefaultBindingFollowedWithNamedImport1_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamedImport1_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt new file mode 100644 index 00000000000..5809e0874dc --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.errors.txt @@ -0,0 +1,39 @@ +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(3,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(5,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(7,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'x'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(7,30): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(9,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'x'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts(11,27): error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'm'. + + +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts (6 errors) ==== + import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + var x: number = defaultBinding1; + import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. + var x: number = defaultBinding2; + import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. + var x: number = defaultBinding3; + import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'x'. + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'a'. + var x: number = defaultBinding4; + import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'x'. + var x: number = defaultBinding5; + import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"' has no exported member 'm'. + var x: number = defaultBinding6; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js new file mode 100644 index 00000000000..15ca1284a1e --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.js @@ -0,0 +1,44 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1InEs5.ts] //// + +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.ts] +import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding1; +import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding2; +import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding3; +import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding4; +import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding5; +import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"; +var x: number = defaultBinding6; + + +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0.js] +var a = 10; +exports.default = a; +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.js] +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_1.default; +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_2 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_2.default; +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_3 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_3.default; +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_4 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_4.default; +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_5 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_5.default; +var es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_6 = require("es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0"); +var x = es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0_6.default; + + +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamedImport1InEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt new file mode 100644 index 00000000000..aa9e0cb3af3 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt @@ -0,0 +1,57 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(5,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(5,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(7,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(7,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. +tests/cases/compiler/client.ts(7,37): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(9,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. +tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/client.ts (12 errors) ==== + export import defaultBinding1, { } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = defaultBinding1; + export import defaultBinding2, { a } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x1: number = defaultBinding2; + export import defaultBinding3, { a as b } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x1: number = defaultBinding3; + export import defaultBinding4, { x, a as y } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x1: number = defaultBinding4; + export import defaultBinding5, { x as z, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. + export var x1: number = defaultBinding5; + export import defaultBinding6, { m, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. + export var x1: number = defaultBinding6; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js new file mode 100644 index 00000000000..b6b03176df1 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.js @@ -0,0 +1,50 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.ts] //// + +//// [server.ts] + +var a = 10; +export default a; + +//// [client.ts] +export import defaultBinding1, { } from "server"; +export var x1: number = defaultBinding1; +export import defaultBinding2, { a } from "server"; +export var x1: number = defaultBinding2; +export import defaultBinding3, { a as b } from "server"; +export var x1: number = defaultBinding3; +export import defaultBinding4, { x, a as y } from "server"; +export var x1: number = defaultBinding4; +export import defaultBinding5, { x as z, } from "server"; +export var x1: number = defaultBinding5; +export import defaultBinding6, { m, } from "server"; +export var x1: number = defaultBinding6; + + +//// [server.js] +var a = 10; +exports.default = a; +//// [client.js] +var server_1 = require("server"); +exports.x1 = server_1.default; +var server_2 = require("server"); +exports.x1 = server_2.default; +var server_3 = require("server"); +exports.x1 = server_3.default; +var server_4 = require("server"); +exports.x1 = server_4.default; +var server_5 = require("server"); +exports.x1 = server_5.default; +var server_6 = require("server"); +exports.x1 = server_6.default; + + +//// [server.d.ts] +declare var a: number; +export default a; +//// [client.d.ts] +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt new file mode 100644 index 00000000000..409c50d3a3f --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.errors.txt @@ -0,0 +1,43 @@ +tests/cases/compiler/client.ts(1,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. +tests/cases/compiler/client.ts(2,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. +tests/cases/compiler/client.ts(4,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. +tests/cases/compiler/client.ts(6,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. +tests/cases/compiler/client.ts(9,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. +tests/cases/compiler/client.ts(11,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export class a { } + export class x { } + export class m { } + export class a11 { } + export class a12 { } + export class x11 { } + +==== tests/cases/compiler/client.ts (6 errors) ==== + import defaultBinding1, { } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + import defaultBinding2, { a } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x1 = new a(); + import defaultBinding3, { a11 as b } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x2 = new b(); + import defaultBinding4, { x, a12 as y } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x4 = new x(); + export var x5 = new y(); + import defaultBinding5, { x11 as z, } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x3 = new z(); + import defaultBinding6, { m, } from "server"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x6 = new m(); + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js new file mode 100644 index 00000000000..8cf9ab1ffb1 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts.js @@ -0,0 +1,102 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts.ts] //// + +//// [server.ts] + +export class a { } +export class x { } +export class m { } +export class a11 { } +export class a12 { } +export class x11 { } + +//// [client.ts] +import defaultBinding1, { } from "server"; +import defaultBinding2, { a } from "server"; +export var x1 = new a(); +import defaultBinding3, { a11 as b } from "server"; +export var x2 = new b(); +import defaultBinding4, { x, a12 as y } from "server"; +export var x4 = new x(); +export var x5 = new y(); +import defaultBinding5, { x11 as z, } from "server"; +export var x3 = new z(); +import defaultBinding6, { m, } from "server"; +export var x6 = new m(); + + +//// [server.js] +var a = (function () { + function a() { + } + return a; +})(); +exports.a = a; +var x = (function () { + function x() { + } + return x; +})(); +exports.x = x; +var m = (function () { + function m() { + } + return m; +})(); +exports.m = m; +var a11 = (function () { + function a11() { + } + return a11; +})(); +exports.a11 = a11; +var a12 = (function () { + function a12() { + } + return a12; +})(); +exports.a12 = a12; +var x11 = (function () { + function x11() { + } + return x11; +})(); +exports.x11 = x11; +//// [client.js] +var server_1 = require("server"); +exports.x1 = new server_1.a(); +var server_2 = require("server"); +exports.x2 = new server_2.a11(); +var server_3 = require("server"); +exports.x4 = new server_3.x(); +exports.x5 = new server_3.a12(); +var server_4 = require("server"); +exports.x3 = new server_4.x11(); +var server_5 = require("server"); +exports.x6 = new server_5.m(); + + +//// [server.d.ts] +export declare class a { +} +export declare class x { +} +export declare class m { +} +export declare class a11 { +} +export declare class a12 { +} +export declare class x11 { +} +//// [client.d.ts] +import { a } from "server"; +export declare var x1: a; +import { a11 as b } from "server"; +export declare var x2: b; +import { x, a12 as y } from "server"; +export declare var x4: x; +export declare var x5: y; +import { x11 as z } from "server"; +export declare var x3: z; +import { m } from "server"; +export declare var x6: m; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.errors.txt new file mode 100644 index 00000000000..0e259f142b6 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.errors.txt @@ -0,0 +1,38 @@ +tests/cases/compiler/client.ts(3,27): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(5,27): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(7,27): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. +tests/cases/compiler/client.ts(7,30): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(9,27): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. +tests/cases/compiler/client.ts(11,27): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + class a { } + export default a; + +==== tests/cases/compiler/client.ts (6 errors) ==== + import defaultBinding1, { } from "server"; + export var x1 = new defaultBinding1(); + import defaultBinding2, { a } from "server"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x2 = new defaultBinding2(); + import defaultBinding3, { a as b } from "server"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x3 = new defaultBinding3(); + import defaultBinding4, { x, a as y } from "server"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. + export var x4 = new defaultBinding4(); + import defaultBinding5, { x as z, } from "server"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. + export var x5 = new defaultBinding5(); + import defaultBinding6, { m, } from "server"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. + export var x6 = new defaultBinding6(); \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.js new file mode 100644 index 00000000000..e6211ac1ebe --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportDts1.js @@ -0,0 +1,55 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportDts1.ts] //// + +//// [server.ts] + +class a { } +export default a; + +//// [client.ts] +import defaultBinding1, { } from "server"; +export var x1 = new defaultBinding1(); +import defaultBinding2, { a } from "server"; +export var x2 = new defaultBinding2(); +import defaultBinding3, { a as b } from "server"; +export var x3 = new defaultBinding3(); +import defaultBinding4, { x, a as y } from "server"; +export var x4 = new defaultBinding4(); +import defaultBinding5, { x as z, } from "server"; +export var x5 = new defaultBinding5(); +import defaultBinding6, { m, } from "server"; +export var x6 = new defaultBinding6(); + +//// [server.js] +var a = (function () { + function a() { + } + return a; +})(); +exports.default = a; +//// [client.js] +var server_1 = require("server"); +exports.x1 = new server_1.default(); +var server_2 = require("server"); +exports.x2 = new server_2.default(); +var server_3 = require("server"); +exports.x3 = new server_3.default(); +var server_4 = require("server"); +exports.x4 = new server_4.default(); +var server_5 = require("server"); +exports.x5 = new server_5.default(); +var server_6 = require("server"); +exports.x6 = new server_6.default(); + + +//// [server.d.ts] +declare class a { +} +export default a; +//// [client.d.ts] +import defaultBinding1 from "server"; +export declare var x1: defaultBinding1; +export declare var x2: defaultBinding1; +export declare var x3: defaultBinding1; +export declare var x4: defaultBinding1; +export declare var x5: defaultBinding1; +export declare var x6: defaultBinding1; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt index 157360f5238..502b1940576 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.errors.txt @@ -1,15 +1,9 @@ -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(1,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(2,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(2,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(3,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(3,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(4,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(4,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(5,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(5,8): error TS2300: Duplicate identifier 'defaultBinding'. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(6,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(6,8): error TS2300: Duplicate identifier 'defaultBinding'. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(2,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(4,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(6,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(9,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(11,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0.ts (0 errors) ==== @@ -18,34 +12,29 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts(6, export var x = a; export var m = a; -==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts (12 errors) ==== - import defaultBinding, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { a } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. - import defaultBinding, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; - ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export or export assignment. - ~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier 'defaultBinding'. \ No newline at end of file +==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts (6 errors) ==== + import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + var x1: number = a; + import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + var x1: number = b; + import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + var x1: number = x; + var x1: number = y; + import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + var x1: number = z; + import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; + ~~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"' has no default export. + var x1: number = m; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js index 4cf3046532a..1c65fadbe1d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportInEs5.js @@ -7,15 +7,40 @@ export var x = a; export var m = a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.ts] -import defaultBinding, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding, { a } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; -import defaultBinding, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +import defaultBinding1, { } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +import defaultBinding2, { a } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +var x1: number = a; +import defaultBinding3, { a as b } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +var x1: number = b; +import defaultBinding4, { x, a as y } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +var x1: number = x; +var x1: number = y; +import defaultBinding5, { x as z, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +var x1: number = z; +import defaultBinding6, { m, } from "es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"; +var x1: number = m; + //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_0.js] exports.a = 10; exports.x = exports.a; exports.m = exports.a; //// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.js] +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_1.a; +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_2.a; +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_3 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_3.x; +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_3.a; +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_4 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_4.x; +var es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_5 = require("es6ImportDefaultBindingFollowedWithNamedImportInEs5_0"); +var x1 = es6ImportDefaultBindingFollowedWithNamedImportInEs5_0_5.m; + + +//// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_0.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +//// [es6ImportDefaultBindingFollowedWithNamedImportInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt new file mode 100644 index 00000000000..83f91787b87 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt @@ -0,0 +1,41 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export var a = 10; + export var x = a; + export var m = a; + export default {}; + +==== tests/cases/compiler/client.ts (6 errors) ==== + export import defaultBinding1, { } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export import defaultBinding2, { a } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = a; + export import defaultBinding3, { a as b } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = b; + export import defaultBinding4, { x, a as y } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = x; + export var x1: number = y; + export import defaultBinding5, { x as z, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = z; + export import defaultBinding6, { m, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x1: number = m; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js new file mode 100644 index 00000000000..0d5f38c0be4 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.js @@ -0,0 +1,54 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamedImportWithExport.ts] //// + +//// [server.ts] + +export var a = 10; +export var x = a; +export var m = a; +export default {}; + +//// [client.ts] +export import defaultBinding1, { } from "server"; +export import defaultBinding2, { a } from "server"; +export var x1: number = a; +export import defaultBinding3, { a as b } from "server"; +export var x1: number = b; +export import defaultBinding4, { x, a as y } from "server"; +export var x1: number = x; +export var x1: number = y; +export import defaultBinding5, { x as z, } from "server"; +export var x1: number = z; +export import defaultBinding6, { m, } from "server"; +export var x1: number = m; + + +//// [server.js] +define(["require", "exports"], function (require, exports) { + exports.a = 10; + exports.x = exports.a; + exports.m = exports.a; + exports.default = {}; +}); +//// [client.js] +define(["require", "exports", "server", "server", "server", "server", "server"], function (require, exports, server_1, server_2, server_3, server_4, server_5) { + exports.x1 = server_1.a; + exports.x1 = server_2.a; + exports.x1 = server_3.x; + exports.x1 = server_3.a; + exports.x1 = server_4.x; + exports.x1 = server_5.m; +}); + + +//// [server.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export default : {}; +//// [client.d.ts] +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; +export declare var x1: number; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.errors.txt index 98371eb9198..ce7e8b1dc5d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0"' has no default export or export assignment. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0"' has no default export. ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0.ts (0 errors) ==== @@ -8,4 +8,5 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts(1, ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts (1 errors) ==== import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0"' has no default export or export assignment. \ No newline at end of file +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0"' has no default export. + var x: number = nameSpaceBinding.a; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.js index 5ec91279306..2b24fda0755 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding.js @@ -5,8 +5,16 @@ export var a = 10; //// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts] -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +var x: number = nameSpaceBinding.a; //// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.js] -exports.a = 10; +export var a = 10; //// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.js] +import * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +var x = nameSpaceBinding.a; + + +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.d.ts] +export declare var a: number; +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.js new file mode 100644 index 00000000000..a732cf9ec0a --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.js @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1.ts] //// + +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts] +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +var x: number = defaultBinding; + +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.js] +var a = 10; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.js] +import defaultBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +var x = defaultBinding; + + +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamespaceBinding_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types new file mode 100644 index 00000000000..c0c3f891c9e --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_0.ts === + +var a = 10; +>a : number + +export default a; +>a : number + +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding_1.ts === +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBinding_0"; +>defaultBinding : number +>nameSpaceBinding : typeof nameSpaceBinding + +var x: number = defaultBinding; +>x : number +>defaultBinding : number + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js new file mode 100644 index 00000000000..c2bd5476a7c --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.js @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.ts] //// + +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts] +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +var x: number = defaultBinding; + +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.js] +var a = 10; +exports.default = a; +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.js] +var es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"), nameSpaceBinding = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1; +var x = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1.default; + + +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.d.ts] +declare var a: number; +export default a; +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types new file mode 100644 index 00000000000..ad2b865bc01 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.ts === + +var a = 10; +>a : number + +export default a; +>a : number + +=== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts === +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +>defaultBinding : number +>nameSpaceBinding : typeof nameSpaceBinding + +var x: number = defaultBinding; +>x : number +>defaultBinding : number + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.errors.txt new file mode 100644 index 00000000000..f738abc9bc1 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/client.ts (1 errors) ==== + export import defaultBinding, * as nameSpaceBinding from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x: number = defaultBinding; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.js new file mode 100644 index 00000000000..ed40582e923 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBinding1WithExport.ts] //// + +//// [server.ts] + +var a = 10; +export default a; + +//// [client.ts] +export import defaultBinding, * as nameSpaceBinding from "server"; +export var x: number = defaultBinding; + +//// [server.js] +define(["require", "exports"], function (require, exports) { + var a = 10; + exports.default = a; +}); +//// [client.js] +define(["require", "exports", "server"], function (require, exports, server_1) { + var nameSpaceBinding = server_1; + exports.x = server_1.default; +}); + + +//// [server.d.ts] +declare var a: number; +export default a; +//// [client.d.ts] +export declare var x: number; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt new file mode 100644 index 00000000000..8af978d3bb6 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/client.ts(1,8): error TS1192: External module '"tests/cases/compiler/server"' has no default export. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export class a { } + +==== tests/cases/compiler/client.ts (1 errors) ==== + import defaultBinding, * as nameSpaceBinding from "server"; + ~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x = new nameSpaceBinding.a(); \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.js new file mode 100644 index 00000000000..31ef01c464c --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts.ts] //// + +//// [server.ts] + +export class a { } + +//// [client.ts] +import defaultBinding, * as nameSpaceBinding from "server"; +export var x = new nameSpaceBinding.a(); + +//// [server.js] +var a = (function () { + function a() { + } + return a; +})(); +exports.a = a; +//// [client.js] +var server_1 = require("server"), nameSpaceBinding = server_1; +exports.x = new nameSpaceBinding.a(); + + +//// [server.d.ts] +export declare class a { +} +//// [client.d.ts] +import * as nameSpaceBinding from "server"; +export declare var x: nameSpaceBinding.a; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.js new file mode 100644 index 00000000000..e03ded5fd5a --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.js @@ -0,0 +1,34 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.ts] //// + +//// [server.ts] + +class a { } +export default a; + +//// [client.ts] +import defaultBinding, * as nameSpaceBinding from "server"; +export var x = new defaultBinding(); + +//// [server.js] +define(["require", "exports"], function (require, exports) { + var a = (function () { + function a() { + } + return a; + })(); + exports.default = a; +}); +//// [client.js] +define(["require", "exports", "server"], function (require, exports, server_1) { + var nameSpaceBinding = server_1; + exports.x = new server_1.default(); +}); + + +//// [server.d.ts] +declare class a { +} +export default a; +//// [client.d.ts] +import defaultBinding from "server"; +export declare var x: defaultBinding; diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.types new file mode 100644 index 00000000000..990bae10af6 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingDts1.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/server.ts === + +class a { } +>a : a + +export default a; +>a : a + +=== tests/cases/compiler/client.ts === +import defaultBinding, * as nameSpaceBinding from "server"; +>defaultBinding : typeof defaultBinding +>nameSpaceBinding : typeof nameSpaceBinding + +export var x = new defaultBinding(); +>x : defaultBinding +>new defaultBinding() : defaultBinding +>defaultBinding : typeof defaultBinding + diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt index f1d20dccc59..48829f8e719 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"' has no default export or export assignment. +tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"' has no default export. ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.ts (0 errors) ==== @@ -8,4 +8,5 @@ tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1. ==== tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts (1 errors) ==== import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"' has no default export or export assignment. \ No newline at end of file +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"' has no default export. + var x: number = nameSpaceBinding.a; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js index abd4736fca7..4a49d3c2d6f 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5.js @@ -5,8 +5,16 @@ export var a = 10; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.ts] -import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +import defaultBinding, * as nameSpaceBinding from "es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"; +var x: number = nameSpaceBinding.a; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.js] exports.a = 10; //// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.js] +var es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1 = require("es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0"), nameSpaceBinding = es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0_1; +var x = nameSpaceBinding.a; + + +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_0.d.ts] +export declare var a: number; +//// [es6ImportDefaultBindingFollowedWithNamespaceBindingInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt new file mode 100644 index 00000000000..4730d493d8e --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(1,15): error TS1192: External module '"tests/cases/compiler/server"' has no default export. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/client.ts (2 errors) ==== + export import defaultBinding, * as nameSpaceBinding from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + ~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/server"' has no default export. + export var x: number = nameSpaceBinding.a; \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js new file mode 100644 index 00000000000..df233fe18a5 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingFollowedWithNamespaceBindingWithExport.ts] //// + +//// [server.ts] + +export var a = 10; + +//// [client.ts] +export import defaultBinding, * as nameSpaceBinding from "server"; +export var x: number = nameSpaceBinding.a; + +//// [server.js] +exports.a = 10; +//// [client.js] +var server_1 = require("server"), nameSpaceBinding = server_1; +exports.x = nameSpaceBinding.a; + + +//// [server.d.ts] +export declare var a: number; +//// [client.d.ts] +export declare var x: number; diff --git a/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt index 5d656094a8c..5cccfd01094 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.errors.txt @@ -1,11 +1,12 @@ -tests/cases/compiler/es6ImportDefaultBindingInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingInEs5_0"' has no default export or export assignment. +tests/cases/compiler/es6ImportDefaultBindingInEs5_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingInEs5_0"' has no default export. ==== tests/cases/compiler/es6ImportDefaultBindingInEs5_0.ts (0 errors) ==== - export var a = 10; + var a = 10; + export = a; ==== tests/cases/compiler/es6ImportDefaultBindingInEs5_1.ts (1 errors) ==== import defaultBinding from "es6ImportDefaultBindingInEs5_0"; ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingInEs5_0"' has no default export or export assignment. \ No newline at end of file +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingInEs5_0"' has no default export. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js index b6d293225fd..0b703f829ca 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingInEs5.js +++ b/tests/baselines/reference/es6ImportDefaultBindingInEs5.js @@ -2,11 +2,19 @@ //// [es6ImportDefaultBindingInEs5_0.ts] -export var a = 10; +var a = 10; +export = a; //// [es6ImportDefaultBindingInEs5_1.ts] import defaultBinding from "es6ImportDefaultBindingInEs5_0"; //// [es6ImportDefaultBindingInEs5_0.js] -exports.a = 10; +var a = 10; +module.exports = a; //// [es6ImportDefaultBindingInEs5_1.js] + + +//// [es6ImportDefaultBindingInEs5_0.d.ts] +declare var a: number; +export = a; +//// [es6ImportDefaultBindingInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt new file mode 100644 index 00000000000..cd0550609c7 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.errors.txt @@ -0,0 +1,26 @@ +tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts(5,8): error TS2440: Import declaration conflicts with local declaration of 'defaultBinding2' +tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts(7,8): error TS2300: Duplicate identifier 'defaultBinding3'. +tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts(8,8): error TS2300: Duplicate identifier 'defaultBinding3'. + + +==== tests/cases/compiler/es6ImportDefaultBindingMergeErrors_0.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/es6ImportDefaultBindingMergeErrors_1.ts (3 errors) ==== + import defaultBinding from "es6ImportDefaultBindingMergeErrors_0"; + interface defaultBinding { // This is ok + } + var x = defaultBinding; + import defaultBinding2 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error + ~~~~~~~~~~~~~~~ +!!! error TS2440: Import declaration conflicts with local declaration of 'defaultBinding2' + var defaultBinding2 = "hello world"; + import defaultBinding3 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error + ~~~~~~~~~~~~~~~ +!!! error TS2300: Duplicate identifier 'defaultBinding3'. + import defaultBinding3 from "es6ImportDefaultBindingMergeErrors_0"; // SHould be error + ~~~~~~~~~~~~~~~ +!!! error TS2300: Duplicate identifier 'defaultBinding3'. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js new file mode 100644 index 00000000000..1208ace5dde --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingMergeErrors.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingMergeErrors.ts] //// + +//// [es6ImportDefaultBindingMergeErrors_0.ts] + +var a = 10; +export default a; + +//// [es6ImportDefaultBindingMergeErrors_1.ts] +import defaultBinding from "es6ImportDefaultBindingMergeErrors_0"; +interface defaultBinding { // This is ok +} +var x = defaultBinding; +import defaultBinding2 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error +var defaultBinding2 = "hello world"; +import defaultBinding3 from "es6ImportDefaultBindingMergeErrors_0"; // Should be error +import defaultBinding3 from "es6ImportDefaultBindingMergeErrors_0"; // SHould be error + + +//// [es6ImportDefaultBindingMergeErrors_0.js] +var a = 10; +exports.default = a; +//// [es6ImportDefaultBindingMergeErrors_1.js] +var es6ImportDefaultBindingMergeErrors_0_1 = require("es6ImportDefaultBindingMergeErrors_0"); +var x = es6ImportDefaultBindingMergeErrors_0_1.default; +var defaultBinding2 = "hello world"; diff --git a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.errors.txt new file mode 100644 index 00000000000..43eaa16f639 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_1.ts(1,8): error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_0"' has no default export. + + +==== tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_0.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_1.ts (1 errors) ==== + import defaultBinding from "es6ImportDefaultBindingNoDefaultProperty_0"; + ~~~~~~~~~~~~~~ +!!! error TS1192: External module '"tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty_0"' has no default export. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js new file mode 100644 index 00000000000..f824dbf71d5 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingNoDefaultProperty.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingNoDefaultProperty.ts] //// + +//// [es6ImportDefaultBindingNoDefaultProperty_0.ts] + +export var a = 10; + +//// [es6ImportDefaultBindingNoDefaultProperty_1.ts] +import defaultBinding from "es6ImportDefaultBindingNoDefaultProperty_0"; + + +//// [es6ImportDefaultBindingNoDefaultProperty_0.js] +exports.a = 10; +//// [es6ImportDefaultBindingNoDefaultProperty_1.js] diff --git a/tests/baselines/reference/es6ImportDefaultBindingWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingWithExport.errors.txt new file mode 100644 index 00000000000..1bd24e84926 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingWithExport.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + var a = 10; + export default a; + +==== tests/cases/compiler/client.ts (2 errors) ==== + export import defaultBinding from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x = defaultBinding; + export import defaultBinding2 from "server"; // non referenced + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingWithExport.js b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js new file mode 100644 index 00000000000..e2c5fab4c94 --- /dev/null +++ b/tests/baselines/reference/es6ImportDefaultBindingWithExport.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/es6ImportDefaultBindingWithExport.ts] //// + +//// [server.ts] + +var a = 10; +export default a; + +//// [client.ts] +export import defaultBinding from "server"; +export var x = defaultBinding; +export import defaultBinding2 from "server"; // non referenced + +//// [server.js] +define(["require", "exports"], function (require, exports) { + var a = 10; + exports.default = a; +}); +//// [client.js] +define(["require", "exports", "server"], function (require, exports, server_1) { + exports.x = server_1.default; +}); + + +//// [server.d.ts] +declare var a: number; +export default a; +//// [client.d.ts] +export declare var x: number; diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt b/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt new file mode 100644 index 00000000000..d3351ee97b2 --- /dev/null +++ b/tests/baselines/reference/es6ImportEqualsDeclaration.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/client.ts(1,1): error TS1202: Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from "mod"', 'import {a} from "mod"' or 'import d from "mod"' instead. +tests/cases/compiler/server.ts(3,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. + + +==== tests/cases/compiler/client.ts (1 errors) ==== + import a = require("server"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1202: Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from "mod"', 'import {a} from "mod"' or 'import d from "mod"' instead. +==== tests/cases/compiler/server.ts (1 errors) ==== + + var a = 10; + export = a; + ~~~~~~~~~~~ +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportEqualsDeclaration.js b/tests/baselines/reference/es6ImportEqualsDeclaration.js new file mode 100644 index 00000000000..5195bdc631b --- /dev/null +++ b/tests/baselines/reference/es6ImportEqualsDeclaration.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/es6ImportEqualsDeclaration.ts] //// + +//// [server.ts] + +var a = 10; +export = a; + +//// [client.ts] +import a = require("server"); + +//// [server.js] +var a = 10; +//// [client.js] diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt b/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt new file mode 100644 index 00000000000..635bb955c00 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImport.errors.txt @@ -0,0 +1,13 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6ImportNameSpaceImport_0.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/es6ImportNameSpaceImport_1.ts (0 errors) ==== + import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; + var x = nameSpaceBinding.a; + import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0"; // elide this + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.js b/tests/baselines/reference/es6ImportNameSpaceImport.js index c6daa3b1222..653feeb22b7 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImport.js +++ b/tests/baselines/reference/es6ImportNameSpaceImport.js @@ -5,8 +5,18 @@ export var a = 10; //// [es6ImportNameSpaceImport_1.ts] -import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; +import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; +var x = nameSpaceBinding.a; +import * as nameSpaceBinding2 from "es6ImportNameSpaceImport_0"; // elide this + //// [es6ImportNameSpaceImport_0.js] -exports.a = 10; +export var a = 10; //// [es6ImportNameSpaceImport_1.js] +import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; +var x = nameSpaceBinding.a; + + +//// [es6ImportNameSpaceImport_0.d.ts] +export declare var a: number; +//// [es6ImportNameSpaceImport_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImport.types b/tests/baselines/reference/es6ImportNameSpaceImport.types deleted file mode 100644 index 1e09de42ec6..00000000000 --- a/tests/baselines/reference/es6ImportNameSpaceImport.types +++ /dev/null @@ -1,9 +0,0 @@ -=== tests/cases/compiler/es6ImportNameSpaceImport_0.ts === - -export var a = 10; ->a : number - -=== tests/cases/compiler/es6ImportNameSpaceImport_1.ts === -import * as nameSpaceBinding from "es6ImportNameSpaceImport_0"; ->nameSpaceBinding : typeof nameSpaceBinding - diff --git a/tests/baselines/reference/es6ImportNameSpaceImportAmd.js b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js new file mode 100644 index 00000000000..e7d0eae9ca9 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportAmd.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/es6ImportNameSpaceImportAmd.ts] //// + +//// [es6ImportNameSpaceImportAmd_0.ts] + +export var a = 10; + +//// [es6ImportNameSpaceImportAmd_1.ts] +import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0"; +var x = nameSpaceBinding.a; +import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0"; // elide this + + +//// [es6ImportNameSpaceImportAmd_0.js] +define(["require", "exports"], function (require, exports) { + exports.a = 10; +}); +//// [es6ImportNameSpaceImportAmd_1.js] +define(["require", "exports", "es6ImportNameSpaceImportAmd_0"], function (require, exports, nameSpaceBinding) { + var x = nameSpaceBinding.a; +}); + + +//// [es6ImportNameSpaceImportAmd_0.d.ts] +export declare var a: number; +//// [es6ImportNameSpaceImportAmd_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportAmd.types b/tests/baselines/reference/es6ImportNameSpaceImportAmd.types new file mode 100644 index 00000000000..623a7e8e160 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportAmd.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/es6ImportNameSpaceImportAmd_0.ts === + +export var a = 10; +>a : number + +=== tests/cases/compiler/es6ImportNameSpaceImportAmd_1.ts === +import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0"; +>nameSpaceBinding : typeof nameSpaceBinding + +var x = nameSpaceBinding.a; +>x : number +>nameSpaceBinding.a : number +>nameSpaceBinding : typeof nameSpaceBinding +>a : number + +import * as nameSpaceBinding2 from "es6ImportNameSpaceImportAmd_0"; // elide this +>nameSpaceBinding2 : typeof nameSpaceBinding + diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.js b/tests/baselines/reference/es6ImportNameSpaceImportDts.js new file mode 100644 index 00000000000..91e927428a1 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.js @@ -0,0 +1,30 @@ +//// [tests/cases/compiler/es6ImportNameSpaceImportDts.ts] //// + +//// [server.ts] + +export class c { }; + +//// [client.ts] +import * as nameSpaceBinding from "server"; +export var x = new nameSpaceBinding.c(); +import * as nameSpaceBinding2 from "server"; // unreferenced + +//// [server.js] +var c = (function () { + function c() { + } + return c; +})(); +exports.c = c; +; +//// [client.js] +var nameSpaceBinding = require("server"); +exports.x = new nameSpaceBinding.c(); + + +//// [server.d.ts] +export declare class c { +} +//// [client.d.ts] +import * as nameSpaceBinding from "server"; +export declare var x: nameSpaceBinding.c; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportDts.types b/tests/baselines/reference/es6ImportNameSpaceImportDts.types new file mode 100644 index 00000000000..345d593b143 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportDts.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/server.ts === + +export class c { }; +>c : c + +=== tests/cases/compiler/client.ts === +import * as nameSpaceBinding from "server"; +>nameSpaceBinding : typeof nameSpaceBinding + +export var x = new nameSpaceBinding.c(); +>x : nameSpaceBinding.c +>new nameSpaceBinding.c() : nameSpaceBinding.c +>nameSpaceBinding.c : typeof nameSpaceBinding.c +>nameSpaceBinding : typeof nameSpaceBinding +>c : typeof nameSpaceBinding.c + +import * as nameSpaceBinding2 from "server"; // unreferenced +>nameSpaceBinding2 : typeof nameSpaceBinding + diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js index 2c7785dec6e..50a03972cc2 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.js @@ -5,8 +5,18 @@ export var a = 10; //// [es6ImportNameSpaceImportInEs5_1.ts] -import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; +import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; +var x = nameSpaceBinding.a; +import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this + //// [es6ImportNameSpaceImportInEs5_0.js] exports.a = 10; //// [es6ImportNameSpaceImportInEs5_1.js] +var nameSpaceBinding = require("es6ImportNameSpaceImportInEs5_0"); +var x = nameSpaceBinding.a; + + +//// [es6ImportNameSpaceImportInEs5_0.d.ts] +export declare var a: number; +//// [es6ImportNameSpaceImportInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types index cb7b669eea1..6ba725f2494 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types @@ -7,3 +7,12 @@ export var a = 10; import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; >nameSpaceBinding : typeof nameSpaceBinding +var x = nameSpaceBinding.a; +>x : number +>nameSpaceBinding.a : number +>nameSpaceBinding : typeof nameSpaceBinding +>a : number + +import * as nameSpaceBinding2 from "es6ImportNameSpaceImportInEs5_0"; // elide this +>nameSpaceBinding2 : typeof nameSpaceBinding + diff --git a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.errors.txt b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.errors.txt new file mode 100644 index 00000000000..98a68870833 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.errors.txt @@ -0,0 +1,25 @@ +tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(4,13): error TS2300: Duplicate identifier 'nameSpaceBinding1'. +tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(5,13): error TS2300: Duplicate identifier 'nameSpaceBinding1'. +tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts(7,8): error TS2440: Import declaration conflicts with local declaration of 'nameSpaceBinding3' + + +==== tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_0.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/es6ImportNameSpaceImportMergeErrors_1.ts (3 errors) ==== + import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0"; + interface nameSpaceBinding { } // this should be ok + + import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + ~~~~~~~~~~~~~~~~~ +!!! error TS2300: Duplicate identifier 'nameSpaceBinding1'. + import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + ~~~~~~~~~~~~~~~~~ +!!! error TS2300: Duplicate identifier 'nameSpaceBinding1'. + + import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2440: Import declaration conflicts with local declaration of 'nameSpaceBinding3' + var nameSpaceBinding3 = 10; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js new file mode 100644 index 00000000000..3c8461fba2b --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportMergeErrors.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/es6ImportNameSpaceImportMergeErrors.ts] //// + +//// [es6ImportNameSpaceImportMergeErrors_0.ts] + +export var a = 10; + +//// [es6ImportNameSpaceImportMergeErrors_1.ts] +import * as nameSpaceBinding from "es6ImportNameSpaceImportMergeErrors_0"; +interface nameSpaceBinding { } // this should be ok + +import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error +import * as nameSpaceBinding1 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error + +import * as nameSpaceBinding3 from "es6ImportNameSpaceImportMergeErrors_0"; // should be error +var nameSpaceBinding3 = 10; + + +//// [es6ImportNameSpaceImportMergeErrors_0.js] +exports.a = 10; +//// [es6ImportNameSpaceImportMergeErrors_1.js] +var nameSpaceBinding3 = 10; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js new file mode 100644 index 00000000000..3d6dab17785 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.js @@ -0,0 +1,14 @@ +//// [tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports.ts] //// + +//// [es6ImportNameSpaceImportNoNamedExports_0.ts] + +var a = 10; +export = a; + +//// [es6ImportNameSpaceImportNoNamedExports_1.ts] +import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error + +//// [es6ImportNameSpaceImportNoNamedExports_0.js] +var a = 10; +module.exports = a; +//// [es6ImportNameSpaceImportNoNamedExports_1.js] diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types new file mode 100644 index 00000000000..e1f2e89bbd8 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_0.ts === + +var a = 10; +>a : number + +export = a; +>a : number + +=== tests/cases/compiler/es6ImportNameSpaceImportNoNamedExports_1.ts === +import * as nameSpaceBinding from "es6ImportNameSpaceImportNoNamedExports_0"; // error +>nameSpaceBinding : number + diff --git a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.errors.txt b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.errors.txt new file mode 100644 index 00000000000..901556e73bd --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/client.ts (2 errors) ==== + export import * as nameSpaceBinding from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var x = nameSpaceBinding.a; + export import * as nameSpaceBinding2 from "server"; // Not referenced imports + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js new file mode 100644 index 00000000000..84f6936d4b0 --- /dev/null +++ b/tests/baselines/reference/es6ImportNameSpaceImportWithExport.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/es6ImportNameSpaceImportWithExport.ts] //// + +//// [server.ts] + +export var a = 10; + +//// [client.ts] +export import * as nameSpaceBinding from "server"; +export var x = nameSpaceBinding.a; +export import * as nameSpaceBinding2 from "server"; // Not referenced imports + + +//// [server.js] +define(["require", "exports"], function (require, exports) { + exports.a = 10; +}); +//// [client.js] +define(["require", "exports", "server"], function (require, exports, nameSpaceBinding) { + exports.x = nameSpaceBinding.a; +}); + + +//// [server.d.ts] +export declare var a: number; +//// [client.d.ts] +export declare var x: number; diff --git a/tests/baselines/reference/es6ImportNamedImport.errors.txt b/tests/baselines/reference/es6ImportNamedImport.errors.txt new file mode 100644 index 00000000000..5723b5c20d4 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImport.errors.txt @@ -0,0 +1,44 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6ImportNamedImport_0.ts (0 errors) ==== + + export var a = 10; + export var x = a; + export var m = a; + export var a1 = 10; + export var x1 = 10; + export var z1 = 10; + export var z2 = 10; + export var aaaa = 10; + +==== tests/cases/compiler/es6ImportNamedImport_1.ts (0 errors) ==== + import { } from "es6ImportNamedImport_0"; + import { a } from "es6ImportNamedImport_0"; + var xxxx = a; + import { a as b } from "es6ImportNamedImport_0"; + var xxxx = b; + import { x, a as y } from "es6ImportNamedImport_0"; + var xxxx = x; + var xxxx = y; + import { x as z, } from "es6ImportNamedImport_0"; + var xxxx = z; + import { m, } from "es6ImportNamedImport_0"; + var xxxx = m; + import { a1, x1 } from "es6ImportNamedImport_0"; + var xxxx = a1; + var xxxx = x1; + import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; + var xxxx = a11; + var xxxx = x11; + import { z1 } from "es6ImportNamedImport_0"; + var z111 = z1; + import { z2 as z3 } from "es6ImportNamedImport_0"; + var z2 = z3; // z2 shouldn't give redeclare error + + // These are elided + import { aaaa } from "es6ImportNamedImport_0"; + // These are elided + import { aaaa as bbbb } from "es6ImportNamedImport_0"; + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImport.js b/tests/baselines/reference/es6ImportNamedImport.js index c52499ef994..9606c59351b 100644 --- a/tests/baselines/reference/es6ImportNamedImport.js +++ b/tests/baselines/reference/es6ImportNamedImport.js @@ -7,21 +7,80 @@ export var x = a; export var m = a; export var a1 = 10; export var x1 = 10; +export var z1 = 10; +export var z2 = 10; +export var aaaa = 10; //// [es6ImportNamedImport_1.ts] import { } from "es6ImportNamedImport_0"; import { a } from "es6ImportNamedImport_0"; +var xxxx = a; import { a as b } from "es6ImportNamedImport_0"; +var xxxx = b; import { x, a as y } from "es6ImportNamedImport_0"; +var xxxx = x; +var xxxx = y; import { x as z, } from "es6ImportNamedImport_0"; +var xxxx = z; import { m, } from "es6ImportNamedImport_0"; +var xxxx = m; import { a1, x1 } from "es6ImportNamedImport_0"; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; +var xxxx = a1; +var xxxx = x1; +import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; +var xxxx = a11; +var xxxx = x11; +import { z1 } from "es6ImportNamedImport_0"; +var z111 = z1; +import { z2 as z3 } from "es6ImportNamedImport_0"; +var z2 = z3; // z2 shouldn't give redeclare error + +// These are elided +import { aaaa } from "es6ImportNamedImport_0"; +// These are elided +import { aaaa as bbbb } from "es6ImportNamedImport_0"; + //// [es6ImportNamedImport_0.js] -exports.a = 10; -exports.x = exports.a; -exports.m = exports.a; -exports.a1 = 10; -exports.x1 = 10; +export var a = 10; +export var x = a; +export var m = a; +export var a1 = 10; +export var x1 = 10; +export var z1 = 10; +export var z2 = 10; +export var aaaa = 10; //// [es6ImportNamedImport_1.js] +import { a } from "es6ImportNamedImport_0"; +var xxxx = a; +import { a as b } from "es6ImportNamedImport_0"; +var xxxx = b; +import { x, a as y } from "es6ImportNamedImport_0"; +var xxxx = x; +var xxxx = y; +import { x as z } from "es6ImportNamedImport_0"; +var xxxx = z; +import { m } from "es6ImportNamedImport_0"; +var xxxx = m; +import { a1, x1 } from "es6ImportNamedImport_0"; +var xxxx = a1; +var xxxx = x1; +import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; +var xxxx = a11; +var xxxx = x11; +import { z1 } from "es6ImportNamedImport_0"; +var z111 = z1; +import { z2 as z3 } from "es6ImportNamedImport_0"; +var z2 = z3; // z2 shouldn't give redeclare error + + +//// [es6ImportNamedImport_0.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export declare var a1: number; +export declare var x1: number; +export declare var z1: number; +export declare var z2: number; +export declare var aaaa: number; +//// [es6ImportNamedImport_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImport.types b/tests/baselines/reference/es6ImportNamedImport.types deleted file mode 100644 index e86955b3c96..00000000000 --- a/tests/baselines/reference/es6ImportNamedImport.types +++ /dev/null @@ -1,50 +0,0 @@ -=== tests/cases/compiler/es6ImportNamedImport_0.ts === - -export var a = 10; ->a : number - -export var x = a; ->x : number ->a : number - -export var m = a; ->m : number ->a : number - -export var a1 = 10; ->a1 : number - -export var x1 = 10; ->x1 : number - -=== tests/cases/compiler/es6ImportNamedImport_1.ts === -import { } from "es6ImportNamedImport_0"; -import { a } from "es6ImportNamedImport_0"; ->a : number - -import { a as b } from "es6ImportNamedImport_0"; ->a : unknown ->b : number - -import { x, a as y } from "es6ImportNamedImport_0"; ->x : number ->a : unknown ->y : number - -import { x as z, } from "es6ImportNamedImport_0"; ->x : unknown ->z : number - -import { m, } from "es6ImportNamedImport_0"; ->m : number - -import { a1, x1 } from "es6ImportNamedImport_0"; ->a1 : number ->x1 : number - -import { a1 as a11, x1 as x11 } from "es6ImportNamedImport_0"; ->a1 : unknown ->a11 : number ->x1 : unknown ->x11 : number - diff --git a/tests/baselines/reference/es6ImportNamedImportAmd.js b/tests/baselines/reference/es6ImportNamedImportAmd.js new file mode 100644 index 00000000000..c335337325e --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportAmd.js @@ -0,0 +1,81 @@ +//// [tests/cases/compiler/es6ImportNamedImportAmd.ts] //// + +//// [es6ImportNamedImportAmd_0.ts] + +export var a = 10; +export var x = a; +export var m = a; +export var a1 = 10; +export var x1 = 10; +export var z1 = 10; +export var z2 = 10; +export var aaaa = 10; + +//// [es6ImportNamedImportAmd_1.ts] +import { } from "es6ImportNamedImportAmd_0"; +import { a } from "es6ImportNamedImportAmd_0"; +var xxxx = a; +import { a as b } from "es6ImportNamedImportAmd_0"; +var xxxx = b; +import { x, a as y } from "es6ImportNamedImportAmd_0"; +var xxxx = x; +var xxxx = y; +import { x as z, } from "es6ImportNamedImportAmd_0"; +var xxxx = z; +import { m, } from "es6ImportNamedImportAmd_0"; +var xxxx = m; +import { a1, x1 } from "es6ImportNamedImportAmd_0"; +var xxxx = a1; +var xxxx = x1; +import { a1 as a11, x1 as x11 } from "es6ImportNamedImportAmd_0"; +var xxxx = a11; +var xxxx = x11; +import { z1 } from "es6ImportNamedImportAmd_0"; +var z111 = z1; +import { z2 as z3 } from "es6ImportNamedImportAmd_0"; +var z2 = z3; // z2 shouldn't give redeclare error + +// These are elided +import { aaaa } from "es6ImportNamedImportAmd_0"; +// These are elided +import { aaaa as bbbb } from "es6ImportNamedImportAmd_0"; + + +//// [es6ImportNamedImportAmd_0.js] +define(["require", "exports"], function (require, exports) { + exports.a = 10; + exports.x = exports.a; + exports.m = exports.a; + exports.a1 = 10; + exports.x1 = 10; + exports.z1 = 10; + exports.z2 = 10; + exports.aaaa = 10; +}); +//// [es6ImportNamedImportAmd_1.js] +define(["require", "exports", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0", "es6ImportNamedImportAmd_0"], function (require, exports, es6ImportNamedImportAmd_0_1, es6ImportNamedImportAmd_0_2, es6ImportNamedImportAmd_0_3, es6ImportNamedImportAmd_0_4, es6ImportNamedImportAmd_0_5, es6ImportNamedImportAmd_0_6, es6ImportNamedImportAmd_0_7, es6ImportNamedImportAmd_0_8, es6ImportNamedImportAmd_0_9) { + var xxxx = es6ImportNamedImportAmd_0_1.a; + var xxxx = es6ImportNamedImportAmd_0_2.a; + var xxxx = es6ImportNamedImportAmd_0_3.x; + var xxxx = es6ImportNamedImportAmd_0_3.a; + var xxxx = es6ImportNamedImportAmd_0_4.x; + var xxxx = es6ImportNamedImportAmd_0_5.m; + var xxxx = es6ImportNamedImportAmd_0_6.a1; + var xxxx = es6ImportNamedImportAmd_0_6.x1; + var xxxx = es6ImportNamedImportAmd_0_7.a1; + var xxxx = es6ImportNamedImportAmd_0_7.x1; + var z111 = es6ImportNamedImportAmd_0_8.z1; + var z2 = es6ImportNamedImportAmd_0_9.z2; // z2 shouldn't give redeclare error +}); + + +//// [es6ImportNamedImportAmd_0.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export declare var a1: number; +export declare var x1: number; +export declare var z1: number; +export declare var z2: number; +export declare var aaaa: number; +//// [es6ImportNamedImportAmd_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportAmd.types b/tests/baselines/reference/es6ImportNamedImportAmd.types new file mode 100644 index 00000000000..4a0abe853e0 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportAmd.types @@ -0,0 +1,123 @@ +=== tests/cases/compiler/es6ImportNamedImportAmd_0.ts === + +export var a = 10; +>a : number + +export var x = a; +>x : number +>a : number + +export var m = a; +>m : number +>a : number + +export var a1 = 10; +>a1 : number + +export var x1 = 10; +>x1 : number + +export var z1 = 10; +>z1 : number + +export var z2 = 10; +>z2 : number + +export var aaaa = 10; +>aaaa : number + +=== tests/cases/compiler/es6ImportNamedImportAmd_1.ts === +import { } from "es6ImportNamedImportAmd_0"; +import { a } from "es6ImportNamedImportAmd_0"; +>a : number + +var xxxx = a; +>xxxx : number +>a : number + +import { a as b } from "es6ImportNamedImportAmd_0"; +>a : number +>b : number + +var xxxx = b; +>xxxx : number +>b : number + +import { x, a as y } from "es6ImportNamedImportAmd_0"; +>x : number +>a : number +>y : number + +var xxxx = x; +>xxxx : number +>x : number + +var xxxx = y; +>xxxx : number +>y : number + +import { x as z, } from "es6ImportNamedImportAmd_0"; +>x : number +>z : number + +var xxxx = z; +>xxxx : number +>z : number + +import { m, } from "es6ImportNamedImportAmd_0"; +>m : number + +var xxxx = m; +>xxxx : number +>m : number + +import { a1, x1 } from "es6ImportNamedImportAmd_0"; +>a1 : number +>x1 : number + +var xxxx = a1; +>xxxx : number +>a1 : number + +var xxxx = x1; +>xxxx : number +>x1 : number + +import { a1 as a11, x1 as x11 } from "es6ImportNamedImportAmd_0"; +>a1 : number +>a11 : number +>x1 : number +>x11 : number + +var xxxx = a11; +>xxxx : number +>a11 : number + +var xxxx = x11; +>xxxx : number +>x11 : number + +import { z1 } from "es6ImportNamedImportAmd_0"; +>z1 : number + +var z111 = z1; +>z111 : number +>z1 : number + +import { z2 as z3 } from "es6ImportNamedImportAmd_0"; +>z2 : number +>z3 : number + +var z2 = z3; // z2 shouldn't give redeclare error +>z2 : number +>z3 : number + +// These are elided +import { aaaa } from "es6ImportNamedImportAmd_0"; +>aaaa : number + +// These are elided +import { aaaa as bbbb } from "es6ImportNamedImportAmd_0"; +>aaaa : number +>bbbb : number + diff --git a/tests/baselines/reference/es6ImportNamedImportDts.js b/tests/baselines/reference/es6ImportNamedImportDts.js new file mode 100644 index 00000000000..a72632a737e --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportDts.js @@ -0,0 +1,208 @@ +//// [tests/cases/compiler/es6ImportNamedImportDts.ts] //// + +//// [server.ts] + +export class a { } +export class a11 { } +export class a12 { } +export class x { } +export class x11 { } +export class m { } +export class a1 { } +export class x1 { } +export class a111 { } +export class x111 { } +export class z1 { } +export class z2 { } +export class aaaa { } +export class aaaa1 { } + +//// [client.ts] +import { } from "server"; +import { a } from "server"; +export var xxxx = new a(); +import { a11 as b } from "server"; +export var xxxx1 = new b(); +import { x, a12 as y } from "server"; +export var xxxx2 = new x(); +export var xxxx3 = new y(); +import { x11 as z, } from "server"; +export var xxxx4 = new z(); +import { m, } from "server"; +export var xxxx5 = new m(); +import { a1, x1 } from "server"; +export var xxxx6 = new a1(); +export var xxxx7 = new x1(); +import { a111 as a11, x111 as x11 } from "server"; +export var xxxx8 = new a11(); +export var xxxx9 = new x11(); +import { z1 } from "server"; +export var z111 = new z1(); +import { z2 as z3 } from "server"; +export var z2 = new z3(); // z2 shouldn't give redeclare error + +// not referenced +import { aaaa } from "server"; +import { aaaa1 as bbbb } from "server"; + + +//// [server.js] +var a = (function () { + function a() { + } + return a; +})(); +exports.a = a; +var a11 = (function () { + function a11() { + } + return a11; +})(); +exports.a11 = a11; +var a12 = (function () { + function a12() { + } + return a12; +})(); +exports.a12 = a12; +var x = (function () { + function x() { + } + return x; +})(); +exports.x = x; +var x11 = (function () { + function x11() { + } + return x11; +})(); +exports.x11 = x11; +var m = (function () { + function m() { + } + return m; +})(); +exports.m = m; +var a1 = (function () { + function a1() { + } + return a1; +})(); +exports.a1 = a1; +var x1 = (function () { + function x1() { + } + return x1; +})(); +exports.x1 = x1; +var a111 = (function () { + function a111() { + } + return a111; +})(); +exports.a111 = a111; +var x111 = (function () { + function x111() { + } + return x111; +})(); +exports.x111 = x111; +var z1 = (function () { + function z1() { + } + return z1; +})(); +exports.z1 = z1; +var z2 = (function () { + function z2() { + } + return z2; +})(); +exports.z2 = z2; +var aaaa = (function () { + function aaaa() { + } + return aaaa; +})(); +exports.aaaa = aaaa; +var aaaa1 = (function () { + function aaaa1() { + } + return aaaa1; +})(); +exports.aaaa1 = aaaa1; +//// [client.js] +var server_1 = require("server"); +exports.xxxx = new server_1.a(); +var server_2 = require("server"); +exports.xxxx1 = new server_2.a11(); +var server_3 = require("server"); +exports.xxxx2 = new server_3.x(); +exports.xxxx3 = new server_3.a12(); +var server_4 = require("server"); +exports.xxxx4 = new server_4.x11(); +var server_5 = require("server"); +exports.xxxx5 = new server_5.m(); +var server_6 = require("server"); +exports.xxxx6 = new server_6.a1(); +exports.xxxx7 = new server_6.x1(); +var server_7 = require("server"); +exports.xxxx8 = new server_7.a111(); +exports.xxxx9 = new server_7.x111(); +var server_8 = require("server"); +exports.z111 = new server_8.z1(); +var server_9 = require("server"); +exports.z2 = new server_9.z2(); // z2 shouldn't give redeclare error + + +//// [server.d.ts] +export declare class a { +} +export declare class a11 { +} +export declare class a12 { +} +export declare class x { +} +export declare class x11 { +} +export declare class m { +} +export declare class a1 { +} +export declare class x1 { +} +export declare class a111 { +} +export declare class x111 { +} +export declare class z1 { +} +export declare class z2 { +} +export declare class aaaa { +} +export declare class aaaa1 { +} +//// [client.d.ts] +import { a } from "server"; +export declare var xxxx: a; +import { a11 as b } from "server"; +export declare var xxxx1: b; +import { x, a12 as y } from "server"; +export declare var xxxx2: x; +export declare var xxxx3: y; +import { x11 as z } from "server"; +export declare var xxxx4: z; +import { m } from "server"; +export declare var xxxx5: m; +import { a1, x1 } from "server"; +export declare var xxxx6: a1; +export declare var xxxx7: x1; +import { a111 as a11, x111 as x11 } from "server"; +export declare var xxxx8: a11; +export declare var xxxx9: x11; +import { z1 } from "server"; +export declare var z111: z1; +import { z2 as z3 } from "server"; +export declare var z2: z3; diff --git a/tests/baselines/reference/es6ImportNamedImportDts.types b/tests/baselines/reference/es6ImportNamedImportDts.types new file mode 100644 index 00000000000..93bd55716a5 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportDts.types @@ -0,0 +1,150 @@ +=== tests/cases/compiler/server.ts === + +export class a { } +>a : a + +export class a11 { } +>a11 : a11 + +export class a12 { } +>a12 : a12 + +export class x { } +>x : x + +export class x11 { } +>x11 : x11 + +export class m { } +>m : m + +export class a1 { } +>a1 : a1 + +export class x1 { } +>x1 : x1 + +export class a111 { } +>a111 : a111 + +export class x111 { } +>x111 : x111 + +export class z1 { } +>z1 : z1 + +export class z2 { } +>z2 : z2 + +export class aaaa { } +>aaaa : aaaa + +export class aaaa1 { } +>aaaa1 : aaaa1 + +=== tests/cases/compiler/client.ts === +import { } from "server"; +import { a } from "server"; +>a : typeof a + +export var xxxx = new a(); +>xxxx : a +>new a() : a +>a : typeof a + +import { a11 as b } from "server"; +>a11 : typeof b +>b : typeof b + +export var xxxx1 = new b(); +>xxxx1 : b +>new b() : b +>b : typeof b + +import { x, a12 as y } from "server"; +>x : typeof x +>a12 : typeof y +>y : typeof y + +export var xxxx2 = new x(); +>xxxx2 : x +>new x() : x +>x : typeof x + +export var xxxx3 = new y(); +>xxxx3 : y +>new y() : y +>y : typeof y + +import { x11 as z, } from "server"; +>x11 : typeof z +>z : typeof z + +export var xxxx4 = new z(); +>xxxx4 : z +>new z() : z +>z : typeof z + +import { m, } from "server"; +>m : typeof m + +export var xxxx5 = new m(); +>xxxx5 : m +>new m() : m +>m : typeof m + +import { a1, x1 } from "server"; +>a1 : typeof a1 +>x1 : typeof x1 + +export var xxxx6 = new a1(); +>xxxx6 : a1 +>new a1() : a1 +>a1 : typeof a1 + +export var xxxx7 = new x1(); +>xxxx7 : x1 +>new x1() : x1 +>x1 : typeof x1 + +import { a111 as a11, x111 as x11 } from "server"; +>a111 : typeof a11 +>a11 : typeof a11 +>x111 : typeof x11 +>x11 : typeof x11 + +export var xxxx8 = new a11(); +>xxxx8 : a11 +>new a11() : a11 +>a11 : typeof a11 + +export var xxxx9 = new x11(); +>xxxx9 : x11 +>new x11() : x11 +>x11 : typeof x11 + +import { z1 } from "server"; +>z1 : typeof z1 + +export var z111 = new z1(); +>z111 : z1 +>new z1() : z1 +>z1 : typeof z1 + +import { z2 as z3 } from "server"; +>z2 : typeof z3 +>z3 : typeof z3 + +export var z2 = new z3(); // z2 shouldn't give redeclare error +>z2 : z3 +>new z3() : z3 +>z3 : typeof z3 + +// not referenced +import { aaaa } from "server"; +>aaaa : typeof aaaa + +import { aaaa1 as bbbb } from "server"; +>aaaa1 : typeof bbbb +>bbbb : typeof bbbb + diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.js b/tests/baselines/reference/es6ImportNamedImportInEs5.js index 66f8ce0ef92..9992508c00b 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.js +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.js @@ -7,16 +7,39 @@ export var x = a; export var m = a; export var a1 = 10; export var x1 = 10; +export var z1 = 10; +export var z2 = 10; +export var aaaa = 10; //// [es6ImportNamedImportInEs5_1.ts] import { } from "es6ImportNamedImportInEs5_0"; import { a } from "es6ImportNamedImportInEs5_0"; +var xxxx = a; import { a as b } from "es6ImportNamedImportInEs5_0"; +var xxxx = b; import { x, a as y } from "es6ImportNamedImportInEs5_0"; +var xxxx = x; +var xxxx = y; import { x as z, } from "es6ImportNamedImportInEs5_0"; +var xxxx = z; import { m, } from "es6ImportNamedImportInEs5_0"; +var xxxx = m; import { a1, x1 } from "es6ImportNamedImportInEs5_0"; -import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +var xxxx = a1; +var xxxx = x1; +import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; +var xxxx = a11; +var xxxx = x11; +import { z1 } from "es6ImportNamedImportInEs5_0"; +var z111 = z1; +import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +var z2 = z3; // z2 shouldn't give redeclare error + +// These are elided +import { aaaa } from "es6ImportNamedImportInEs5_0"; +// These are elided +import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; + //// [es6ImportNamedImportInEs5_0.js] exports.a = 10; @@ -24,4 +47,40 @@ exports.x = exports.a; exports.m = exports.a; exports.a1 = 10; exports.x1 = 10; +exports.z1 = 10; +exports.z2 = 10; +exports.aaaa = 10; //// [es6ImportNamedImportInEs5_1.js] +var es6ImportNamedImportInEs5_0_1 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_1.a; +var es6ImportNamedImportInEs5_0_2 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_2.a; +var es6ImportNamedImportInEs5_0_3 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_3.x; +var xxxx = es6ImportNamedImportInEs5_0_3.a; +var es6ImportNamedImportInEs5_0_4 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_4.x; +var es6ImportNamedImportInEs5_0_5 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_5.m; +var es6ImportNamedImportInEs5_0_6 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_6.a1; +var xxxx = es6ImportNamedImportInEs5_0_6.x1; +var es6ImportNamedImportInEs5_0_7 = require("es6ImportNamedImportInEs5_0"); +var xxxx = es6ImportNamedImportInEs5_0_7.a1; +var xxxx = es6ImportNamedImportInEs5_0_7.x1; +var es6ImportNamedImportInEs5_0_8 = require("es6ImportNamedImportInEs5_0"); +var z111 = es6ImportNamedImportInEs5_0_8.z1; +var es6ImportNamedImportInEs5_0_9 = require("es6ImportNamedImportInEs5_0"); +var z2 = es6ImportNamedImportInEs5_0_9.z2; // z2 shouldn't give redeclare error + + +//// [es6ImportNamedImportInEs5_0.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export declare var a1: number; +export declare var x1: number; +export declare var z1: number; +export declare var z2: number; +export declare var aaaa: number; +//// [es6ImportNamedImportInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.types b/tests/baselines/reference/es6ImportNamedImportInEs5.types index 4f96b8a4dfa..f60644b2621 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.types +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.types @@ -17,34 +17,107 @@ export var a1 = 10; export var x1 = 10; >x1 : number +export var z1 = 10; +>z1 : number + +export var z2 = 10; +>z2 : number + +export var aaaa = 10; +>aaaa : number + === tests/cases/compiler/es6ImportNamedImportInEs5_1.ts === import { } from "es6ImportNamedImportInEs5_0"; import { a } from "es6ImportNamedImportInEs5_0"; >a : number +var xxxx = a; +>xxxx : number +>a : number + import { a as b } from "es6ImportNamedImportInEs5_0"; ->a : unknown +>a : number +>b : number + +var xxxx = b; +>xxxx : number >b : number import { x, a as y } from "es6ImportNamedImportInEs5_0"; >x : number ->a : unknown +>a : number +>y : number + +var xxxx = x; +>xxxx : number +>x : number + +var xxxx = y; +>xxxx : number >y : number import { x as z, } from "es6ImportNamedImportInEs5_0"; ->x : unknown +>x : number +>z : number + +var xxxx = z; +>xxxx : number >z : number import { m, } from "es6ImportNamedImportInEs5_0"; >m : number +var xxxx = m; +>xxxx : number +>m : number + import { a1, x1 } from "es6ImportNamedImportInEs5_0"; >a1 : number >x1 : number +var xxxx = a1; +>xxxx : number +>a1 : number + +var xxxx = x1; +>xxxx : number +>x1 : number + import { a1 as a11, x1 as x11 } from "es6ImportNamedImportInEs5_0"; ->a1 : unknown +>a1 : number >a11 : number ->x1 : unknown +>x1 : number >x11 : number +var xxxx = a11; +>xxxx : number +>a11 : number + +var xxxx = x11; +>xxxx : number +>x11 : number + +import { z1 } from "es6ImportNamedImportInEs5_0"; +>z1 : number + +var z111 = z1; +>z111 : number +>z1 : number + +import { z2 as z3 } from "es6ImportNamedImportInEs5_0"; +>z2 : number +>z3 : number + +var z2 = z3; // z2 shouldn't give redeclare error +>z2 : number +>z3 : number + +// These are elided +import { aaaa } from "es6ImportNamedImportInEs5_0"; +>aaaa : number + +// These are elided +import { aaaa as bbbb } from "es6ImportNamedImportInEs5_0"; +>aaaa : number +>bbbb : number + diff --git a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt new file mode 100644 index 00000000000..41d3f160938 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.errors.txt @@ -0,0 +1,14 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts(2,1): error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6ImportNamedImportInExportAssignment_0.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/es6ImportNamedImportInExportAssignment_1.ts (1 errors) ==== + import { a } from "es6ImportNamedImportInExportAssignment_0"; + export = a; + ~~~~~~~~~~~ +!!! error TS1203: Export assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'export default' instead. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js new file mode 100644 index 00000000000..eab345e4e7f --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInExportAssignment.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/es6ImportNamedImportInExportAssignment.ts] //// + +//// [es6ImportNamedImportInExportAssignment_0.ts] + +export var a = 10; + +//// [es6ImportNamedImportInExportAssignment_1.ts] +import { a } from "es6ImportNamedImportInExportAssignment_0"; +export = a; + +//// [es6ImportNamedImportInExportAssignment_0.js] +export var a = 10; +//// [es6ImportNamedImportInExportAssignment_1.js] +import { a } from "es6ImportNamedImportInExportAssignment_0"; + + +//// [es6ImportNamedImportInExportAssignment_0.d.ts] +export declare var a: number; +//// [es6ImportNamedImportInExportAssignment_1.d.ts] +import { a } from "es6ImportNamedImportInExportAssignment_0"; +export = a; diff --git a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js new file mode 100644 index 00000000000..f457e31f53c --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.js @@ -0,0 +1,39 @@ +//// [tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment.ts] //// + +//// [es6ImportNamedImportInIndirectExportAssignment_0.ts] + +export module a { + export class c { + } +} + +//// [es6ImportNamedImportInIndirectExportAssignment_1.ts] +import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import x = a; +export = x; + +//// [es6ImportNamedImportInIndirectExportAssignment_0.js] +var a; +(function (a) { + var c = (function () { + function c() { + } + return c; + })(); + a.c = c; +})(a = exports.a || (exports.a = {})); +//// [es6ImportNamedImportInIndirectExportAssignment_1.js] +var es6ImportNamedImportInIndirectExportAssignment_0_1 = require("es6ImportNamedImportInIndirectExportAssignment_0"); +var x = es6ImportNamedImportInIndirectExportAssignment_0_1.a; +module.exports = x; + + +//// [es6ImportNamedImportInIndirectExportAssignment_0.d.ts] +export declare module a { + class c { + } +} +//// [es6ImportNamedImportInIndirectExportAssignment_1.d.ts] +import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +import x = a; +export = x; diff --git a/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types new file mode 100644 index 00000000000..36792ece82e --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportInIndirectExportAssignment.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment_0.ts === + +export module a { +>a : typeof a + + export class c { +>c : c + } +} + +=== tests/cases/compiler/es6ImportNamedImportInIndirectExportAssignment_1.ts === +import { a } from "es6ImportNamedImportInIndirectExportAssignment_0"; +>a : typeof a + +import x = a; +>x : typeof a +>a : typeof a + +export = x; +>x : typeof a + diff --git a/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt b/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt new file mode 100644 index 00000000000..b9461b6caca --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.errors.txt @@ -0,0 +1,33 @@ +tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts(5,10): error TS2440: Import declaration conflicts with local declaration of 'x' +tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts(7,10): error TS2440: Import declaration conflicts with local declaration of 'x44' +tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts(9,10): error TS2300: Duplicate identifier 'z'. +tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts(10,16): error TS2300: Duplicate identifier 'z'. + + +==== tests/cases/compiler/es6ImportNamedImportMergeErrors_0.ts (0 errors) ==== + + export var a = 10; + export var x = a; + export var z = a; + export var z1 = a; + +==== tests/cases/compiler/es6ImportNamedImportMergeErrors_1.ts (4 errors) ==== + import { a } from "es6ImportNamedImportMergeErrors_0"; + interface a { } // shouldnt be error + import { x as x1 } from "es6ImportNamedImportMergeErrors_0"; + interface x1 { } // shouldnt be error + import { x } from "es6ImportNamedImportMergeErrors_0"; // should be error + ~ +!!! error TS2440: Import declaration conflicts with local declaration of 'x' + var x = 10; + import { x as x44 } from "es6ImportNamedImportMergeErrors_0"; // should be error + ~~~~~~~~ +!!! error TS2440: Import declaration conflicts with local declaration of 'x44' + var x44 = 10; + import { z } from "es6ImportNamedImportMergeErrors_0"; // should be error + ~ +!!! error TS2300: Duplicate identifier 'z'. + import { z1 as z } from "es6ImportNamedImportMergeErrors_0"; // should be error + ~ +!!! error TS2300: Duplicate identifier 'z'. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportMergeErrors.js b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js new file mode 100644 index 00000000000..fad411f557d --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportMergeErrors.js @@ -0,0 +1,30 @@ +//// [tests/cases/compiler/es6ImportNamedImportMergeErrors.ts] //// + +//// [es6ImportNamedImportMergeErrors_0.ts] + +export var a = 10; +export var x = a; +export var z = a; +export var z1 = a; + +//// [es6ImportNamedImportMergeErrors_1.ts] +import { a } from "es6ImportNamedImportMergeErrors_0"; +interface a { } // shouldnt be error +import { x as x1 } from "es6ImportNamedImportMergeErrors_0"; +interface x1 { } // shouldnt be error +import { x } from "es6ImportNamedImportMergeErrors_0"; // should be error +var x = 10; +import { x as x44 } from "es6ImportNamedImportMergeErrors_0"; // should be error +var x44 = 10; +import { z } from "es6ImportNamedImportMergeErrors_0"; // should be error +import { z1 as z } from "es6ImportNamedImportMergeErrors_0"; // should be error + + +//// [es6ImportNamedImportMergeErrors_0.js] +exports.a = 10; +exports.x = exports.a; +exports.z = exports.a; +exports.z1 = exports.a; +//// [es6ImportNamedImportMergeErrors_1.js] +var x = 10; +var x44 = 10; diff --git a/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt b/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt new file mode 100644 index 00000000000..57a77410cb2 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/es6ImportNamedImport_1.ts(1,10): error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoExportMember_0"' has no exported member 'a1'. +tests/cases/compiler/es6ImportNamedImport_1.ts(2,10): error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoExportMember_0"' has no exported member 'x1'. + + +==== tests/cases/compiler/es6ImportNamedImportNoExportMember_0.ts (0 errors) ==== + + export var a = 10; + export var x = a; + +==== tests/cases/compiler/es6ImportNamedImport_1.ts (2 errors) ==== + import { a1 } from "es6ImportNamedImportNoExportMember_0"; + ~~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoExportMember_0"' has no exported member 'a1'. + import { x1 as x } from "es6ImportNamedImportNoExportMember_0"; + ~~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoExportMember_0"' has no exported member 'x1'. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportNoExportMember.js b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js new file mode 100644 index 00000000000..da473fa42a3 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportNoExportMember.js @@ -0,0 +1,15 @@ +//// [tests/cases/compiler/es6ImportNamedImportNoExportMember.ts] //// + +//// [es6ImportNamedImportNoExportMember_0.ts] + +export var a = 10; +export var x = a; + +//// [es6ImportNamedImport_1.ts] +import { a1 } from "es6ImportNamedImportNoExportMember_0"; +import { x1 as x } from "es6ImportNamedImportNoExportMember_0"; + +//// [es6ImportNamedImportNoExportMember_0.js] +exports.a = 10; +exports.x = exports.a; +//// [es6ImportNamedImport_1.js] diff --git a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt new file mode 100644 index 00000000000..a5abd986ee8 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/es6ImportNamedImportNoNamedExports_1.ts(1,10): error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoNamedExports_0"' has no exported member 'a'. +tests/cases/compiler/es6ImportNamedImportNoNamedExports_1.ts(2,10): error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoNamedExports_0"' has no exported member 'a'. + + +==== tests/cases/compiler/es6ImportNamedImportNoNamedExports_0.ts (0 errors) ==== + + var a = 10; + export = a; + +==== tests/cases/compiler/es6ImportNamedImportNoNamedExports_1.ts (2 errors) ==== + import { a } from "es6ImportNamedImportNoNamedExports_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoNamedExports_0"' has no exported member 'a'. + import { a as x } from "es6ImportNamedImportNoNamedExports_0"; + ~ +!!! error TS2305: Module '"tests/cases/compiler/es6ImportNamedImportNoNamedExports_0"' has no exported member 'a'. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js new file mode 100644 index 00000000000..524860827e6 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportNoNamedExports.js @@ -0,0 +1,15 @@ +//// [tests/cases/compiler/es6ImportNamedImportNoNamedExports.ts] //// + +//// [es6ImportNamedImportNoNamedExports_0.ts] + +var a = 10; +export = a; + +//// [es6ImportNamedImportNoNamedExports_1.ts] +import { a } from "es6ImportNamedImportNoNamedExports_0"; +import { a as x } from "es6ImportNamedImportNoNamedExports_0"; + +//// [es6ImportNamedImportNoNamedExports_0.js] +var a = 10; +module.exports = a; +//// [es6ImportNamedImportNoNamedExports_1.js] diff --git a/tests/baselines/reference/es6ImportNamedImportParsingError.errors.txt b/tests/baselines/reference/es6ImportNamedImportParsingError.errors.txt index 22428100985..c9586d01693 100644 --- a/tests/baselines/reference/es6ImportNamedImportParsingError.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportParsingError.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(1,10): error TS1141: tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(1,12): error TS1109: Expression expected. tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(1,14): error TS2304: Cannot find name 'from'. tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(1,19): error TS1005: ';' expected. -tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(2,8): error TS1192: External module '"tests/cases/compiler/es6ImportNamedImportParsingError_0"' has no default export or export assignment. +tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(2,8): error TS1192: External module '"tests/cases/compiler/es6ImportNamedImportParsingError_0"' has no default export. tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(2,24): error TS1005: '{' expected. tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(3,1): error TS1128: Declaration or statement expected. tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(3,8): error TS1128: Declaration or statement expected. @@ -34,7 +34,7 @@ tests/cases/compiler/es6ImportNamedImportParsingError_1.ts(4,20): error TS1005: !!! error TS1005: ';' expected. import defaultBinding, from "es6ImportNamedImportParsingError_0"; ~~~~~~~~~~~~~~ -!!! error TS1192: External module '"tests/cases/compiler/es6ImportNamedImportParsingError_0"' has no default export or export assignment. +!!! error TS1192: External module '"tests/cases/compiler/es6ImportNamedImportParsingError_0"' has no default export. ~~~~ !!! error TS1005: '{' expected. import , { a } from "es6ImportNamedImportParsingError_0"; diff --git a/tests/baselines/reference/es6ImportNamedImportParsingError.js b/tests/baselines/reference/es6ImportNamedImportParsingError.js index f9d8e90f707..81f141b3dd8 100644 --- a/tests/baselines/reference/es6ImportNamedImportParsingError.js +++ b/tests/baselines/reference/es6ImportNamedImportParsingError.js @@ -13,16 +13,16 @@ import , { a } from "es6ImportNamedImportParsingError_0"; import { a }, from "es6ImportNamedImportParsingError_0"; //// [es6ImportNamedImportParsingError_0.js] -exports.a = 10; -exports.x = exports.a; -exports.m = exports.a; +export var a = 10; +export var x = a; +export var m = a; //// [es6ImportNamedImportParsingError_1.js] from; "es6ImportNamedImportParsingError_0"; { - _module_1.a; + a; } from; "es6ImportNamedImportParsingError_0"; -var _module_1 = require(); +import { a } from , from; "es6ImportNamedImportParsingError_0"; diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt new file mode 100644 index 00000000000..ff8fe604622 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt @@ -0,0 +1,77 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(13,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(16,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(19,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(21,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(25,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export var a = 10; + export var x = a; + export var m = a; + export var a1 = 10; + export var x1 = 10; + export var z1 = 10; + export var z2 = 10; + export var aaaa = 10; + +==== tests/cases/compiler/client.ts (12 errors) ==== + export import { } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export import { a } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = a; + export import { a as b } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = b; + export import { x, a as y } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = x; + export var xxxx = y; + export import { x as z, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = z; + export import { m, } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = m; + export import { a1, x1 } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = a1; + export var xxxx = x1; + export import { a1 as a11, x1 as x11 } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var xxxx = a11; + export var xxxx = x11; + export import { z1 } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var z111 = z1; + export import { z2 as z3 } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export var z2 = z3; // z2 shouldn't give redeclare error + + // Non referenced imports + export import { aaaa } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + export import { aaaa as bbbb } from "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. + \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.js b/tests/baselines/reference/es6ImportNamedImportWithExport.js new file mode 100644 index 00000000000..60ba6bf706b --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.js @@ -0,0 +1,97 @@ +//// [tests/cases/compiler/es6ImportNamedImportWithExport.ts] //// + +//// [server.ts] + +export var a = 10; +export var x = a; +export var m = a; +export var a1 = 10; +export var x1 = 10; +export var z1 = 10; +export var z2 = 10; +export var aaaa = 10; + +//// [client.ts] +export import { } from "server"; +export import { a } from "server"; +export var xxxx = a; +export import { a as b } from "server"; +export var xxxx = b; +export import { x, a as y } from "server"; +export var xxxx = x; +export var xxxx = y; +export import { x as z, } from "server"; +export var xxxx = z; +export import { m, } from "server"; +export var xxxx = m; +export import { a1, x1 } from "server"; +export var xxxx = a1; +export var xxxx = x1; +export import { a1 as a11, x1 as x11 } from "server"; +export var xxxx = a11; +export var xxxx = x11; +export import { z1 } from "server"; +export var z111 = z1; +export import { z2 as z3 } from "server"; +export var z2 = z3; // z2 shouldn't give redeclare error + +// Non referenced imports +export import { aaaa } from "server"; +export import { aaaa as bbbb } from "server"; + + +//// [server.js] +exports.a = 10; +exports.x = exports.a; +exports.m = exports.a; +exports.a1 = 10; +exports.x1 = 10; +exports.z1 = 10; +exports.z2 = 10; +exports.aaaa = 10; +//// [client.js] +var server_1 = require("server"); +exports.xxxx = server_1.a; +var server_2 = require("server"); +exports.xxxx = server_2.a; +var server_3 = require("server"); +exports.xxxx = server_3.x; +exports.xxxx = server_3.a; +var server_4 = require("server"); +exports.xxxx = server_4.x; +var server_5 = require("server"); +exports.xxxx = server_5.m; +var server_6 = require("server"); +exports.xxxx = server_6.a1; +exports.xxxx = server_6.x1; +var server_7 = require("server"); +exports.xxxx = server_7.a1; +exports.xxxx = server_7.x1; +var server_8 = require("server"); +exports.z111 = server_8.z1; +var server_9 = require("server"); +exports.z2 = server_9.z2; // z2 shouldn't give redeclare error + + +//// [server.d.ts] +export declare var a: number; +export declare var x: number; +export declare var m: number; +export declare var a1: number; +export declare var x1: number; +export declare var z1: number; +export declare var z2: number; +export declare var aaaa: number; +//// [client.d.ts] +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var xxxx: number; +export declare var z111: number; +export declare var z2: number; diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js new file mode 100644 index 00000000000..dcf99c5359a --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.js @@ -0,0 +1,59 @@ +//// [tests/cases/compiler/es6ImportNamedImportWithTypesAndValues.ts] //// + +//// [server.ts] + +export interface I { + prop: string; +} +export interface I2 { + prop2: string; +} +export class C implements I { + prop = "hello"; +} +export class C2 implements I2 { + prop2 = "world"; +} + +//// [client.ts] +import { C, I, C2 } from "server"; // Shouldnt emit I and C2 into the js file and emit C and I in .d.ts file +export type cValInterface = I; +export var cVal = new C(); + +//// [server.js] +var C = (function () { + function C() { + this.prop = "hello"; + } + return C; +})(); +exports.C = C; +var C2 = (function () { + function C2() { + this.prop2 = "world"; + } + return C2; +})(); +exports.C2 = C2; +//// [client.js] +var server_1 = require("server"); // Shouldnt emit I and C2 into the js file and emit C and I in .d.ts file +exports.cVal = new server_1.C(); + + +//// [server.d.ts] +export interface I { + prop: string; +} +export interface I2 { + prop2: string; +} +export declare class C implements I { + prop: string; +} +export declare class C2 implements I2 { + prop2: string; +} +//// [client.d.ts] +import { C, I } from "server"; +export declare type cValInterface = I; +export declare var cVal: C; diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types new file mode 100644 index 00000000000..62917e5ff36 --- /dev/null +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types @@ -0,0 +1,44 @@ +=== tests/cases/compiler/server.ts === + +export interface I { +>I : I + + prop: string; +>prop : string +} +export interface I2 { +>I2 : I2 + + prop2: string; +>prop2 : string +} +export class C implements I { +>C : C +>I : I + + prop = "hello"; +>prop : string +} +export class C2 implements I2 { +>C2 : C2 +>I2 : I2 + + prop2 = "world"; +>prop2 : string +} + +=== tests/cases/compiler/client.ts === +import { C, I, C2 } from "server"; // Shouldnt emit I and C2 into the js file and emit C and I in .d.ts file +>C : typeof C +>I : unknown +>C2 : typeof C2 + +export type cValInterface = I; +>cValInterface : I +>I : I + +export var cVal = new C(); +>cVal : C +>new C() : C +>C : typeof C + diff --git a/tests/baselines/reference/es6ImportWithoutFromClause.js b/tests/baselines/reference/es6ImportWithoutFromClause.js index 43d21885c27..9666409b924 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClause.js +++ b/tests/baselines/reference/es6ImportWithoutFromClause.js @@ -5,9 +5,15 @@ export var a = 10; //// [es6ImportWithoutFromClause_1.ts] -import "es6ImportWithoutFromClause_0"; +import "es6ImportWithoutFromClause_0"; + //// [es6ImportWithoutFromClause_0.js] -exports.a = 10; +export var a = 10; //// [es6ImportWithoutFromClause_1.js] -require("es6ImportWithoutFromClause_0"); +import "es6ImportWithoutFromClause_0"; + + +//// [es6ImportWithoutFromClause_0.d.ts] +export declare var a: number; +//// [es6ImportWithoutFromClause_1.d.ts] diff --git a/tests/baselines/reference/es6ImportWithoutFromClause.types b/tests/baselines/reference/es6ImportWithoutFromClause.types index 1cd7df9962e..3cc5067891a 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClause.types +++ b/tests/baselines/reference/es6ImportWithoutFromClause.types @@ -5,4 +5,5 @@ export var a = 10; === tests/cases/compiler/es6ImportWithoutFromClause_1.ts === import "es6ImportWithoutFromClause_0"; +No type information for this code. No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js new file mode 100644 index 00000000000..7b10da7cc9f --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js @@ -0,0 +1,35 @@ +//// [tests/cases/compiler/es6ImportWithoutFromClauseAmd.ts] //// + +//// [es6ImportWithoutFromClauseAmd_0.ts] + +export var a = 10; + +//// [es6ImportWithoutFromClauseAmd_1.ts] +export var b = 10; + +//// [es6ImportWithoutFromClauseAmd_2.ts] +import "es6ImportWithoutFromClauseAmd_0"; +import "es6ImportWithoutFromClauseAmd_2"; +var _a = 10; +var _b = 10; + +//// [es6ImportWithoutFromClauseAmd_0.js] +define(["require", "exports"], function (require, exports) { + exports.a = 10; +}); +//// [es6ImportWithoutFromClauseAmd_1.js] +define(["require", "exports"], function (require, exports) { + exports.b = 10; +}); +//// [es6ImportWithoutFromClauseAmd_2.js] +define(["require", "exports", "es6ImportWithoutFromClauseAmd_0", "es6ImportWithoutFromClauseAmd_2"], function (require, exports, , ) { + var _a = 10; + var _b = 10; +}); + + +//// [es6ImportWithoutFromClauseAmd_0.d.ts] +export declare var a: number; +//// [es6ImportWithoutFromClauseAmd_1.d.ts] +export declare var b: number; +//// [es6ImportWithoutFromClauseAmd_2.d.ts] diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types new file mode 100644 index 00000000000..c3d09388916 --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/es6ImportWithoutFromClauseAmd_0.ts === + +export var a = 10; +>a : number + +=== tests/cases/compiler/es6ImportWithoutFromClauseAmd_1.ts === +export var b = 10; +>b : number + +=== tests/cases/compiler/es6ImportWithoutFromClauseAmd_2.ts === +import "es6ImportWithoutFromClauseAmd_0"; +import "es6ImportWithoutFromClauseAmd_2"; +var _a = 10; +>_a : number + +var _b = 10; +>_b : number + diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js index f6610ac5ad2..aacb936ab36 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js +++ b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js @@ -11,3 +11,8 @@ import "es6ImportWithoutFromClauseInEs5_0"; exports.a = 10; //// [es6ImportWithoutFromClauseInEs5_1.js] require("es6ImportWithoutFromClauseInEs5_0"); + + +//// [es6ImportWithoutFromClauseInEs5_0.d.ts] +export declare var a: number; +//// [es6ImportWithoutFromClauseInEs5_1.d.ts] diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js new file mode 100644 index 00000000000..e63dd4bb53a --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/es6ImportWithoutFromClauseNonInstantiatedModule.ts] //// + +//// [es6ImportWithoutFromClauseNonInstantiatedModule_0.ts] + +export interface i { +} + +//// [es6ImportWithoutFromClauseNonInstantiatedModule_1.ts] +import "es6ImportWithoutFromClauseNonInstantiatedModule_0"; + +//// [es6ImportWithoutFromClauseNonInstantiatedModule_0.js] +//// [es6ImportWithoutFromClauseNonInstantiatedModule_1.js] +import "es6ImportWithoutFromClauseNonInstantiatedModule_0"; + + +//// [es6ImportWithoutFromClauseNonInstantiatedModule_0.d.ts] +export interface i { +} +//// [es6ImportWithoutFromClauseNonInstantiatedModule_1.d.ts] diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.types b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.types new file mode 100644 index 00000000000..2be3f67f1e9 --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/es6ImportWithoutFromClauseNonInstantiatedModule_0.ts === + +export interface i { +>i : i +} + +=== tests/cases/compiler/es6ImportWithoutFromClauseNonInstantiatedModule_1.ts === +import "es6ImportWithoutFromClauseNonInstantiatedModule_0"; +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.errors.txt b/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.errors.txt new file mode 100644 index 00000000000..da865698e56 --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. + + +==== tests/cases/compiler/server.ts (0 errors) ==== + + export var a = 10; + +==== tests/cases/compiler/client.ts (1 errors) ==== + export import "server"; + ~~~~~~ +!!! error TS1191: An import declaration cannot have modifiers. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.js b/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.js new file mode 100644 index 00000000000..208f71bcbfe --- /dev/null +++ b/tests/baselines/reference/es6ImportWithoutFromClauseWithExport.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/es6ImportWithoutFromClauseWithExport.ts] //// + +//// [server.ts] + +export var a = 10; + +//// [client.ts] +export import "server"; + +//// [server.js] +exports.a = 10; +//// [client.js] +require("server"); + + +//// [server.d.ts] +export declare var a: number; +//// [client.d.ts] +export import "server"; diff --git a/tests/baselines/reference/es6Module.js b/tests/baselines/reference/es6Module.js new file mode 100644 index 00000000000..d3141572c92 --- /dev/null +++ b/tests/baselines/reference/es6Module.js @@ -0,0 +1,21 @@ +//// [es6Module.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es6Module.js] +export class A { + constructor() { + } + B() { + return 42; + } +} diff --git a/tests/baselines/reference/es6-amd.types b/tests/baselines/reference/es6Module.types similarity index 60% rename from tests/baselines/reference/es6-amd.types rename to tests/baselines/reference/es6Module.types index 62815911f7f..93910200215 100644 --- a/tests/baselines/reference/es6-amd.types +++ b/tests/baselines/reference/es6Module.types @@ -1,11 +1,9 @@ -=== tests/cases/compiler/es6-amd.ts === - -class A +=== tests/cases/compiler/es6Module.ts === +export class A >A : A { constructor () { - } public B() diff --git a/tests/baselines/reference/es6ModuleClassDeclaration.js b/tests/baselines/reference/es6ModuleClassDeclaration.js new file mode 100644 index 00000000000..a228739abbf --- /dev/null +++ b/tests/baselines/reference/es6ModuleClassDeclaration.js @@ -0,0 +1,230 @@ +//// [es6ModuleClassDeclaration.ts] +export class c { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } +} +class c2 { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } +} +new c(); +new c2(); + +export module m1 { + export class c3 { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } + } + class c4 { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } + } + new c(); + new c2(); + new c3(); + new c4(); +} +module m2 { + export class c3 { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } + } + class c4 { + constructor() { + } + private x = 10; + public y = 30; + static k = 20; + private static l = 30; + private method1() { + } + public method2() { + } + static method3() { + } + private static method4() { + } + } + new c(); + new c2(); + new c3(); + new c4(); + new m1.c3(); +} + +//// [es6ModuleClassDeclaration.js] +export class c { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } +} +c.k = 20; +c.l = 30; +class c2 { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } +} +c2.k = 20; +c2.l = 30; +new c(); +new c2(); +export var m1; +(function (m1) { + class c3 { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } + } + c3.k = 20; + c3.l = 30; + m1.c3 = c3; + class c4 { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } + } + c4.k = 20; + c4.l = 30; + new c(); + new c2(); + new c3(); + new c4(); +})(m1 || (m1 = {})); +var m2; +(function (m2) { + class c3 { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } + } + c3.k = 20; + c3.l = 30; + m2.c3 = c3; + class c4 { + constructor() { + this.x = 10; + this.y = 30; + } + method1() { + } + method2() { + } + static method3() { + } + static method4() { + } + } + c4.k = 20; + c4.l = 30; + new c(); + new c2(); + new c3(); + new c4(); + new m1.c3(); +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleClassDeclaration.types b/tests/baselines/reference/es6ModuleClassDeclaration.types new file mode 100644 index 00000000000..09d50c4e542 --- /dev/null +++ b/tests/baselines/reference/es6ModuleClassDeclaration.types @@ -0,0 +1,233 @@ +=== tests/cases/compiler/es6ModuleClassDeclaration.ts === +export class c { +>c : c + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } +} +class c2 { +>c2 : c2 + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } +} +new c(); +>new c() : c +>c : typeof c + +new c2(); +>new c2() : c2 +>c2 : typeof c2 + +export module m1 { +>m1 : typeof m1 + + export class c3 { +>c3 : c3 + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } + } + class c4 { +>c4 : c4 + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } + } + new c(); +>new c() : c +>c : typeof c + + new c2(); +>new c2() : c2 +>c2 : typeof c2 + + new c3(); +>new c3() : c3 +>c3 : typeof c3 + + new c4(); +>new c4() : c4 +>c4 : typeof c4 +} +module m2 { +>m2 : typeof m2 + + export class c3 { +>c3 : c3 + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } + } + class c4 { +>c4 : c4 + + constructor() { + } + private x = 10; +>x : number + + public y = 30; +>y : number + + static k = 20; +>k : number + + private static l = 30; +>l : number + + private method1() { +>method1 : () => void + } + public method2() { +>method2 : () => void + } + static method3() { +>method3 : () => void + } + private static method4() { +>method4 : () => void + } + } + new c(); +>new c() : c +>c : typeof c + + new c2(); +>new c2() : c2 +>c2 : typeof c2 + + new c3(); +>new c3() : c3 +>c3 : typeof c3 + + new c4(); +>new c4() : c4 +>c4 : typeof c4 + + new m1.c3(); +>new m1.c3() : m1.c3 +>m1.c3 : typeof m1.c3 +>m1 : typeof m1 +>c3 : typeof m1.c3 +} diff --git a/tests/baselines/reference/es6ModuleConst.js b/tests/baselines/reference/es6ModuleConst.js new file mode 100644 index 00000000000..117bf0fb4d0 --- /dev/null +++ b/tests/baselines/reference/es6ModuleConst.js @@ -0,0 +1,37 @@ +//// [es6ModuleConst.ts] +export const a = "hello"; +export const x: string = a, y = x; +const b = y; +const c: string = b, d = c; +export module m1 { + export const k = a; + export const l: string = b, m = k; + const n = m1.k; + const o: string = n, p = k; +} +module m2 { + export const k = a; + export const l: string = b, m = k; + const n = m1.k; + const o: string = n, p = k; +} + +//// [es6ModuleConst.js] +export const a = "hello"; +export const x = a, y = x; +const b = y; +const c = b, d = c; +export var m1; +(function (m1) { + m1.k = a; + m1.l = b, m1.m = m1.k; + const n = m1.k; + const o = n, p = m1.k; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + m2.k = a; + m2.l = b, m2.m = m2.k; + const n = m1.k; + const o = n, p = m2.k; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleConst.types b/tests/baselines/reference/es6ModuleConst.types new file mode 100644 index 00000000000..cceb74a5e1e --- /dev/null +++ b/tests/baselines/reference/es6ModuleConst.types @@ -0,0 +1,70 @@ +=== tests/cases/compiler/es6ModuleConst.ts === +export const a = "hello"; +>a : string + +export const x: string = a, y = x; +>x : string +>a : string +>y : string +>x : string + +const b = y; +>b : string +>y : string + +const c: string = b, d = c; +>c : string +>b : string +>d : string +>c : string + +export module m1 { +>m1 : typeof m1 + + export const k = a; +>k : string +>a : string + + export const l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + const n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + const o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} +module m2 { +>m2 : typeof m2 + + export const k = a; +>k : string +>a : string + + export const l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + const n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + const o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration.js b/tests/baselines/reference/es6ModuleConstEnumDeclaration.js new file mode 100644 index 00000000000..1900db57b60 --- /dev/null +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration.js @@ -0,0 +1,65 @@ +//// [es6ModuleConstEnumDeclaration.ts] +export const enum e1 { + a, + b, + c +} +const enum e2 { + x, + y, + z +} +var x = e1.a; +var y = e2.x; +export module m1 { + export const enum e3 { + a, + b, + c + } + const enum e4 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e3.a; + var y2 = e4.x; +} +module m2 { + export const enum e5 { + a, + b, + c + } + const enum e6 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e5.a; + var y2 = e6.x; + var x3 = m1.e3.a; +} + +//// [es6ModuleConstEnumDeclaration.js] +var x = 0 /* a */; +var y = 0 /* x */; +export var m1; +(function (m1) { + var x1 = 0 /* a */; + var y1 = 0 /* x */; + var x2 = 0 /* a */; + var y2 = 0 /* x */; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + var x1 = 0 /* a */; + var y1 = 0 /* x */; + var x2 = 0 /* a */; + var y2 = 0 /* x */; + var x3 = 0 /* a */; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration.types b/tests/baselines/reference/es6ModuleConstEnumDeclaration.types new file mode 100644 index 00000000000..fae819f93b0 --- /dev/null +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration.types @@ -0,0 +1,147 @@ +=== tests/cases/compiler/es6ModuleConstEnumDeclaration.ts === +export const enum e1 { +>e1 : e1 + + a, +>a : e1 + + b, +>b : e1 + + c +>c : e1 +} +const enum e2 { +>e2 : e2 + + x, +>x : e2 + + y, +>y : e2 + + z +>z : e2 +} +var x = e1.a; +>x : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + +var y = e2.x; +>y : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + +export module m1 { +>m1 : typeof m1 + + export const enum e3 { +>e3 : e3 + + a, +>a : e3 + + b, +>b : e3 + + c +>c : e3 + } + const enum e4 { +>e4 : e4 + + x, +>x : e4 + + y, +>y : e4 + + z +>z : e4 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e3.a; +>x2 : e3 +>e3.a : e3 +>e3 : typeof e3 +>a : e3 + + var y2 = e4.x; +>y2 : e4 +>e4.x : e4 +>e4 : typeof e4 +>x : e4 +} +module m2 { +>m2 : typeof m2 + + export const enum e5 { +>e5 : e5 + + a, +>a : e5 + + b, +>b : e5 + + c +>c : e5 + } + const enum e6 { +>e6 : e6 + + x, +>x : e6 + + y, +>y : e6 + + z +>z : e6 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e5.a; +>x2 : e5 +>e5.a : e5 +>e5 : typeof e5 +>a : e5 + + var y2 = e6.x; +>y2 : e6 +>e6.x : e6 +>e6 : typeof e6 +>x : e6 + + var x3 = m1.e3.a; +>x3 : m1.e3 +>m1.e3.a : m1.e3 +>m1.e3 : typeof m1.e3 +>m1 : typeof m1 +>e3 : typeof m1.e3 +>a : m1.e3 +} diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js new file mode 100644 index 00000000000..539ec121b6b --- /dev/null +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.js @@ -0,0 +1,102 @@ +//// [es6ModuleConstEnumDeclaration2.ts] + +export const enum e1 { + a, + b, + c +} +const enum e2 { + x, + y, + z +} +var x = e1.a; +var y = e2.x; +export module m1 { + export const enum e3 { + a, + b, + c + } + const enum e4 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e3.a; + var y2 = e4.x; +} +module m2 { + export const enum e5 { + a, + b, + c + } + const enum e6 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e5.a; + var y2 = e6.x; + var x3 = m1.e3.a; +} + +//// [es6ModuleConstEnumDeclaration2.js] +export var e1; +(function (e1) { + e1[e1["a"] = 0] = "a"; + e1[e1["b"] = 1] = "b"; + e1[e1["c"] = 2] = "c"; +})(e1 || (e1 = {})); +var e2; +(function (e2) { + e2[e2["x"] = 0] = "x"; + e2[e2["y"] = 1] = "y"; + e2[e2["z"] = 2] = "z"; +})(e2 || (e2 = {})); +var x = 0 /* a */; +var y = 0 /* x */; +export var m1; +(function (m1) { + (function (e3) { + e3[e3["a"] = 0] = "a"; + e3[e3["b"] = 1] = "b"; + e3[e3["c"] = 2] = "c"; + })(m1.e3 || (m1.e3 = {})); + var e3 = m1.e3; + var e4; + (function (e4) { + e4[e4["x"] = 0] = "x"; + e4[e4["y"] = 1] = "y"; + e4[e4["z"] = 2] = "z"; + })(e4 || (e4 = {})); + var x1 = 0 /* a */; + var y1 = 0 /* x */; + var x2 = 0 /* a */; + var y2 = 0 /* x */; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + (function (e5) { + e5[e5["a"] = 0] = "a"; + e5[e5["b"] = 1] = "b"; + e5[e5["c"] = 2] = "c"; + })(m2.e5 || (m2.e5 = {})); + var e5 = m2.e5; + var e6; + (function (e6) { + e6[e6["x"] = 0] = "x"; + e6[e6["y"] = 1] = "y"; + e6[e6["z"] = 2] = "z"; + })(e6 || (e6 = {})); + var x1 = 0 /* a */; + var y1 = 0 /* x */; + var x2 = 0 /* a */; + var y2 = 0 /* x */; + var x3 = 0 /* a */; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleConstEnumDeclaration2.types b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.types new file mode 100644 index 00000000000..c43a938c9b6 --- /dev/null +++ b/tests/baselines/reference/es6ModuleConstEnumDeclaration2.types @@ -0,0 +1,148 @@ +=== tests/cases/compiler/es6ModuleConstEnumDeclaration2.ts === + +export const enum e1 { +>e1 : e1 + + a, +>a : e1 + + b, +>b : e1 + + c +>c : e1 +} +const enum e2 { +>e2 : e2 + + x, +>x : e2 + + y, +>y : e2 + + z +>z : e2 +} +var x = e1.a; +>x : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + +var y = e2.x; +>y : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + +export module m1 { +>m1 : typeof m1 + + export const enum e3 { +>e3 : e3 + + a, +>a : e3 + + b, +>b : e3 + + c +>c : e3 + } + const enum e4 { +>e4 : e4 + + x, +>x : e4 + + y, +>y : e4 + + z +>z : e4 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e3.a; +>x2 : e3 +>e3.a : e3 +>e3 : typeof e3 +>a : e3 + + var y2 = e4.x; +>y2 : e4 +>e4.x : e4 +>e4 : typeof e4 +>x : e4 +} +module m2 { +>m2 : typeof m2 + + export const enum e5 { +>e5 : e5 + + a, +>a : e5 + + b, +>b : e5 + + c +>c : e5 + } + const enum e6 { +>e6 : e6 + + x, +>x : e6 + + y, +>y : e6 + + z +>z : e6 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e5.a; +>x2 : e5 +>e5.a : e5 +>e5 : typeof e5 +>a : e5 + + var y2 = e6.x; +>y2 : e6 +>e6.x : e6 +>e6 : typeof e6 +>x : e6 + + var x3 = m1.e3.a; +>x3 : m1.e3 +>m1.e3.a : m1.e3 +>m1.e3 : typeof m1.e3 +>m1 : typeof m1 +>e3 : typeof m1.e3 +>a : m1.e3 +} diff --git a/tests/baselines/reference/es6ModuleEnumDeclaration.js b/tests/baselines/reference/es6ModuleEnumDeclaration.js new file mode 100644 index 00000000000..30c382a4508 --- /dev/null +++ b/tests/baselines/reference/es6ModuleEnumDeclaration.js @@ -0,0 +1,101 @@ +//// [es6ModuleEnumDeclaration.ts] +export enum e1 { + a, + b, + c +} +enum e2 { + x, + y, + z +} +var x = e1.a; +var y = e2.x; +export module m1 { + export enum e3 { + a, + b, + c + } + enum e4 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e3.a; + var y2 = e4.x; +} +module m2 { + export enum e5 { + a, + b, + c + } + enum e6 { + x, + y, + z + } + var x1 = e1.a; + var y1 = e2.x; + var x2 = e5.a; + var y2 = e6.x; + var x3 = m1.e3.a; +} + +//// [es6ModuleEnumDeclaration.js] +export var e1; +(function (e1) { + e1[e1["a"] = 0] = "a"; + e1[e1["b"] = 1] = "b"; + e1[e1["c"] = 2] = "c"; +})(e1 || (e1 = {})); +var e2; +(function (e2) { + e2[e2["x"] = 0] = "x"; + e2[e2["y"] = 1] = "y"; + e2[e2["z"] = 2] = "z"; +})(e2 || (e2 = {})); +var x = e1.a; +var y = e2.x; +export var m1; +(function (m1) { + (function (e3) { + e3[e3["a"] = 0] = "a"; + e3[e3["b"] = 1] = "b"; + e3[e3["c"] = 2] = "c"; + })(m1.e3 || (m1.e3 = {})); + var e3 = m1.e3; + var e4; + (function (e4) { + e4[e4["x"] = 0] = "x"; + e4[e4["y"] = 1] = "y"; + e4[e4["z"] = 2] = "z"; + })(e4 || (e4 = {})); + var x1 = e1.a; + var y1 = e2.x; + var x2 = e3.a; + var y2 = e4.x; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + (function (e5) { + e5[e5["a"] = 0] = "a"; + e5[e5["b"] = 1] = "b"; + e5[e5["c"] = 2] = "c"; + })(m2.e5 || (m2.e5 = {})); + var e5 = m2.e5; + var e6; + (function (e6) { + e6[e6["x"] = 0] = "x"; + e6[e6["y"] = 1] = "y"; + e6[e6["z"] = 2] = "z"; + })(e6 || (e6 = {})); + var x1 = e1.a; + var y1 = e2.x; + var x2 = e5.a; + var y2 = e6.x; + var x3 = m1.e3.a; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleEnumDeclaration.types b/tests/baselines/reference/es6ModuleEnumDeclaration.types new file mode 100644 index 00000000000..4b856fee009 --- /dev/null +++ b/tests/baselines/reference/es6ModuleEnumDeclaration.types @@ -0,0 +1,147 @@ +=== tests/cases/compiler/es6ModuleEnumDeclaration.ts === +export enum e1 { +>e1 : e1 + + a, +>a : e1 + + b, +>b : e1 + + c +>c : e1 +} +enum e2 { +>e2 : e2 + + x, +>x : e2 + + y, +>y : e2 + + z +>z : e2 +} +var x = e1.a; +>x : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + +var y = e2.x; +>y : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + +export module m1 { +>m1 : typeof m1 + + export enum e3 { +>e3 : e3 + + a, +>a : e3 + + b, +>b : e3 + + c +>c : e3 + } + enum e4 { +>e4 : e4 + + x, +>x : e4 + + y, +>y : e4 + + z +>z : e4 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e3.a; +>x2 : e3 +>e3.a : e3 +>e3 : typeof e3 +>a : e3 + + var y2 = e4.x; +>y2 : e4 +>e4.x : e4 +>e4 : typeof e4 +>x : e4 +} +module m2 { +>m2 : typeof m2 + + export enum e5 { +>e5 : e5 + + a, +>a : e5 + + b, +>b : e5 + + c +>c : e5 + } + enum e6 { +>e6 : e6 + + x, +>x : e6 + + y, +>y : e6 + + z +>z : e6 + } + var x1 = e1.a; +>x1 : e1 +>e1.a : e1 +>e1 : typeof e1 +>a : e1 + + var y1 = e2.x; +>y1 : e2 +>e2.x : e2 +>e2 : typeof e2 +>x : e2 + + var x2 = e5.a; +>x2 : e5 +>e5.a : e5 +>e5 : typeof e5 +>a : e5 + + var y2 = e6.x; +>y2 : e6 +>e6.x : e6 +>e6 : typeof e6 +>x : e6 + + var x3 = m1.e3.a; +>x3 : m1.e3 +>m1.e3.a : m1.e3 +>m1.e3 : typeof m1.e3 +>m1 : typeof m1 +>e3 : typeof m1.e3 +>a : m1.e3 +} diff --git a/tests/baselines/reference/es6ModuleFunctionDeclaration.js b/tests/baselines/reference/es6ModuleFunctionDeclaration.js new file mode 100644 index 00000000000..1305d0a4e19 --- /dev/null +++ b/tests/baselines/reference/es6ModuleFunctionDeclaration.js @@ -0,0 +1,62 @@ +//// [es6ModuleFunctionDeclaration.ts] +export function foo() { +} +function foo2() { +} +foo(); +foo2(); + +export module m1 { + export function foo3() { + } + function foo4() { + } + foo(); + foo2(); + foo3(); + foo4(); +} +module m2 { + export function foo3() { + } + function foo4() { + } + foo(); + foo2(); + foo3(); + foo4(); + m1.foo3(); +} + +//// [es6ModuleFunctionDeclaration.js] +export function foo() { +} +function foo2() { +} +foo(); +foo2(); +export var m1; +(function (m1) { + function foo3() { + } + m1.foo3 = foo3; + function foo4() { + } + foo(); + foo2(); + foo3(); + foo4(); +})(m1 || (m1 = {})); +var m2; +(function (m2) { + function foo3() { + } + m2.foo3 = foo3; + function foo4() { + } + foo(); + foo2(); + foo3(); + foo4(); + m1.foo3(); +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleFunctionDeclaration.types b/tests/baselines/reference/es6ModuleFunctionDeclaration.types new file mode 100644 index 00000000000..b1252c1e8bc --- /dev/null +++ b/tests/baselines/reference/es6ModuleFunctionDeclaration.types @@ -0,0 +1,71 @@ +=== tests/cases/compiler/es6ModuleFunctionDeclaration.ts === +export function foo() { +>foo : () => void +} +function foo2() { +>foo2 : () => void +} +foo(); +>foo() : void +>foo : () => void + +foo2(); +>foo2() : void +>foo2 : () => void + +export module m1 { +>m1 : typeof m1 + + export function foo3() { +>foo3 : () => void + } + function foo4() { +>foo4 : () => void + } + foo(); +>foo() : void +>foo : () => void + + foo2(); +>foo2() : void +>foo2 : () => void + + foo3(); +>foo3() : void +>foo3 : () => void + + foo4(); +>foo4() : void +>foo4 : () => void +} +module m2 { +>m2 : typeof m2 + + export function foo3() { +>foo3 : () => void + } + function foo4() { +>foo4 : () => void + } + foo(); +>foo() : void +>foo : () => void + + foo2(); +>foo2() : void +>foo2 : () => void + + foo3(); +>foo3() : void +>foo3 : () => void + + foo4(); +>foo4() : void +>foo4 : () => void + + m1.foo3(); +>m1.foo3() : void +>m1.foo3 : () => void +>m1 : typeof m1 +>foo3 : () => void +} diff --git a/tests/baselines/reference/es6ModuleInternalImport.js b/tests/baselines/reference/es6ModuleInternalImport.js new file mode 100644 index 00000000000..3f28ddb2b60 --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalImport.js @@ -0,0 +1,44 @@ +//// [es6ModuleInternalImport.ts] +export module m { + export var a = 10; +} +export import a1 = m.a; +import a2 = m.a; +var x = a1 + a2; +export module m1 { + export import a3 = m.a; + import a4 = m.a; + var x = a1 + a2; + var x2 = a3 + a4; +} +module m2 { + export import a3 = m.a; + import a4 = m.a; + var x = a1 + a2; + var x2 = a3 + a4; + var x4 = m1.a3 + m2.a3; +} + +//// [es6ModuleInternalImport.js] +export var m; +(function (m) { + m.a = 10; +})(m || (m = {})); +export var a1 = m.a; +var a2 = m.a; +var x = a1 + a2; +export var m1; +(function (m1) { + m1.a3 = m.a; + var a4 = m.a; + var x = a1 + a2; + var x2 = m1.a3 + a4; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + m2.a3 = m.a; + var a4 = m.a; + var x = a1 + a2; + var x2 = m2.a3 + a4; + var x4 = m1.a3 + m2.a3; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleInternalImport.types b/tests/baselines/reference/es6ModuleInternalImport.types new file mode 100644 index 00000000000..50db69d8edb --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalImport.types @@ -0,0 +1,83 @@ +=== tests/cases/compiler/es6ModuleInternalImport.ts === +export module m { +>m : typeof m + + export var a = 10; +>a : number +} +export import a1 = m.a; +>a1 : number +>m : typeof m +>a : number + +import a2 = m.a; +>a2 : number +>m : typeof m +>a : number + +var x = a1 + a2; +>x : number +>a1 + a2 : number +>a1 : number +>a2 : number + +export module m1 { +>m1 : typeof m1 + + export import a3 = m.a; +>a3 : number +>m : typeof m +>a : number + + import a4 = m.a; +>a4 : number +>m : typeof m +>a : number + + var x = a1 + a2; +>x : number +>a1 + a2 : number +>a1 : number +>a2 : number + + var x2 = a3 + a4; +>x2 : number +>a3 + a4 : number +>a3 : number +>a4 : number +} +module m2 { +>m2 : typeof m2 + + export import a3 = m.a; +>a3 : number +>m : typeof m +>a : number + + import a4 = m.a; +>a4 : number +>m : typeof m +>a : number + + var x = a1 + a2; +>x : number +>a1 + a2 : number +>a1 : number +>a2 : number + + var x2 = a3 + a4; +>x2 : number +>a3 + a4 : number +>a3 : number +>a4 : number + + var x4 = m1.a3 + m2.a3; +>x4 : number +>m1.a3 + m2.a3 : number +>m1.a3 : number +>m1 : typeof m1 +>a3 : number +>m2.a3 : number +>m2 : typeof m2 +>a3 : number +} diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports.errors.txt b/tests/baselines/reference/es6ModuleInternalNamedImports.errors.txt new file mode 100644 index 00000000000..4e097ec1a33 --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalNamedImports.errors.txt @@ -0,0 +1,59 @@ +tests/cases/compiler/es6ModuleInternalNamedImports.ts(23,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(24,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(25,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(26,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(27,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(28,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(29,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports.ts(30,5): error TS1194: Export declarations are not permitted in an internal module. + + +==== tests/cases/compiler/es6ModuleInternalNamedImports.ts (8 errors) ==== + + export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; + + // Reexports + export {M_V as v}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_I as i}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_C as c}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_M as m}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_MU as mu}; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_F as f}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_E as e}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_A as a}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + } + \ No newline at end of file diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports.js b/tests/baselines/reference/es6ModuleInternalNamedImports.js new file mode 100644 index 00000000000..98504601d02 --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalNamedImports.js @@ -0,0 +1,65 @@ +//// [es6ModuleInternalNamedImports.ts] + +export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; + + // Reexports + export {M_V as v}; + export {M_I as i}; + export {M_C as c}; + export {M_M as m}; + export {M_MU as mu}; + export {M_F as f}; + export {M_E as e}; + export {M_A as a}; +} + + +//// [es6ModuleInternalNamedImports.js] +export var M; +(function (M) { + // variable + M.M_V = 0; + //calss + class M_C { + } + M.M_C = M_C; + // instantiated module + var M_M; + (function (M_M) { + var x; + })(M_M = M.M_M || (M.M_M = {})); + // function + function M_F() { } + M.M_F = M_F; + // enum + (function (M_E) { + })(M.M_E || (M.M_E = {})); + var M_E = M.M_E; + // alias + M.M_A = M_M; + // Reexports + export { M_V as v }; + export { M_C as c }; + export { M_M as m }; + export { M_F as f }; + export { M_E as e }; + export { M_A as a }; +})(M || (M = {})); diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports2.errors.txt b/tests/baselines/reference/es6ModuleInternalNamedImports2.errors.txt new file mode 100644 index 00000000000..77ee76cf9c8 --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalNamedImports2.errors.txt @@ -0,0 +1,61 @@ +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(25,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(26,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(27,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(28,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(29,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(30,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(31,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/es6ModuleInternalNamedImports2.ts(32,5): error TS1194: Export declarations are not permitted in an internal module. + + +==== tests/cases/compiler/es6ModuleInternalNamedImports2.ts (8 errors) ==== + + export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; + } + + export module M { + // Reexports + export {M_V as v}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_I as i}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_C as c}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_M as m}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_MU as mu}; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_F as f}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_E as e}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + export {M_A as a}; + ~~~~~~~~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + } + \ No newline at end of file diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports2.js b/tests/baselines/reference/es6ModuleInternalNamedImports2.js new file mode 100644 index 00000000000..9dee8153e56 --- /dev/null +++ b/tests/baselines/reference/es6ModuleInternalNamedImports2.js @@ -0,0 +1,70 @@ +//// [es6ModuleInternalNamedImports2.ts] + +export module M { + // variable + export var M_V = 0; + // interface + export interface M_I { } + //calss + export class M_C { } + // instantiated module + export module M_M { var x; } + // uninstantiated module + export module M_MU { } + // function + export function M_F() { } + // enum + export enum M_E { } + // type + export type M_T = number; + // alias + export import M_A = M_M; +} + +export module M { + // Reexports + export {M_V as v}; + export {M_I as i}; + export {M_C as c}; + export {M_M as m}; + export {M_MU as mu}; + export {M_F as f}; + export {M_E as e}; + export {M_A as a}; +} + + +//// [es6ModuleInternalNamedImports2.js] +export var M; +(function (M) { + // variable + M.M_V = 0; + //calss + class M_C { + } + M.M_C = M_C; + // instantiated module + var M_M; + (function (M_M) { + var x; + })(M_M = M.M_M || (M.M_M = {})); + // function + function M_F() { } + M.M_F = M_F; + // enum + (function (M_E) { + })(M.M_E || (M.M_E = {})); + var M_E = M.M_E; + // alias + M.M_A = M_M; +})(M || (M = {})); +export var M; +(function (M) { + // Reexports + export { M_V as v }; + export { M_C as c }; + export { M_M as m }; + export { M_F as f }; + export { M_E as e }; + export { M_A as a }; +})(M || (M = {})); diff --git a/tests/baselines/reference/es6ModuleLet.js b/tests/baselines/reference/es6ModuleLet.js new file mode 100644 index 00000000000..29d2a73bcf1 --- /dev/null +++ b/tests/baselines/reference/es6ModuleLet.js @@ -0,0 +1,37 @@ +//// [es6ModuleLet.ts] +export let a = "hello"; +export let x: string = a, y = x; +let b = y; +let c: string = b, d = c; +export module m1 { + export let k = a; + export let l: string = b, m = k; + let n = m1.k; + let o: string = n, p = k; +} +module m2 { + export let k = a; + export let l: string = b, m = k; + let n = m1.k; + let o: string = n, p = k; +} + +//// [es6ModuleLet.js] +export let a = "hello"; +export let x = a, y = x; +let b = y; +let c = b, d = c; +export var m1; +(function (m1) { + m1.k = a; + m1.l = b, m1.m = m1.k; + let n = m1.k; + let o = n, p = m1.k; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + m2.k = a; + m2.l = b, m2.m = m2.k; + let n = m1.k; + let o = n, p = m2.k; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleLet.types b/tests/baselines/reference/es6ModuleLet.types new file mode 100644 index 00000000000..4b30c89cc81 --- /dev/null +++ b/tests/baselines/reference/es6ModuleLet.types @@ -0,0 +1,70 @@ +=== tests/cases/compiler/es6ModuleLet.ts === +export let a = "hello"; +>a : string + +export let x: string = a, y = x; +>x : string +>a : string +>y : string +>x : string + +let b = y; +>b : string +>y : string + +let c: string = b, d = c; +>c : string +>b : string +>d : string +>c : string + +export module m1 { +>m1 : typeof m1 + + export let k = a; +>k : string +>a : string + + export let l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + let n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + let o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} +module m2 { +>m2 : typeof m2 + + export let k = a; +>k : string +>a : string + + export let l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + let n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + let o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} diff --git a/tests/baselines/reference/es6ModuleModuleDeclaration.js b/tests/baselines/reference/es6ModuleModuleDeclaration.js new file mode 100644 index 00000000000..c240545239f --- /dev/null +++ b/tests/baselines/reference/es6ModuleModuleDeclaration.js @@ -0,0 +1,57 @@ +//// [es6ModuleModuleDeclaration.ts] +export module m1 { + export var a = 10; + var b = 10; + export module innerExportedModule { + export var k = 10; + var l = 10; + } + export module innerNonExportedModule { + export var x = 10; + var y = 10; + } +} +module m2 { + export var a = 10; + var b = 10; + export module innerExportedModule { + export var k = 10; + var l = 10; + } + export module innerNonExportedModule { + export var x = 10; + var y = 10; + } +} + +//// [es6ModuleModuleDeclaration.js] +export var m1; +(function (m1) { + m1.a = 10; + var b = 10; + var innerExportedModule; + (function (innerExportedModule) { + innerExportedModule.k = 10; + var l = 10; + })(innerExportedModule = m1.innerExportedModule || (m1.innerExportedModule = {})); + var innerNonExportedModule; + (function (innerNonExportedModule) { + innerNonExportedModule.x = 10; + var y = 10; + })(innerNonExportedModule = m1.innerNonExportedModule || (m1.innerNonExportedModule = {})); +})(m1 || (m1 = {})); +var m2; +(function (m2) { + m2.a = 10; + var b = 10; + var innerExportedModule; + (function (innerExportedModule) { + innerExportedModule.k = 10; + var l = 10; + })(innerExportedModule = m2.innerExportedModule || (m2.innerExportedModule = {})); + var innerNonExportedModule; + (function (innerNonExportedModule) { + innerNonExportedModule.x = 10; + var y = 10; + })(innerNonExportedModule = m2.innerNonExportedModule || (m2.innerNonExportedModule = {})); +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleModuleDeclaration.types b/tests/baselines/reference/es6ModuleModuleDeclaration.types new file mode 100644 index 00000000000..c174fe6f8c7 --- /dev/null +++ b/tests/baselines/reference/es6ModuleModuleDeclaration.types @@ -0,0 +1,57 @@ +=== tests/cases/compiler/es6ModuleModuleDeclaration.ts === +export module m1 { +>m1 : typeof m1 + + export var a = 10; +>a : number + + var b = 10; +>b : number + + export module innerExportedModule { +>innerExportedModule : typeof innerExportedModule + + export var k = 10; +>k : number + + var l = 10; +>l : number + } + export module innerNonExportedModule { +>innerNonExportedModule : typeof innerNonExportedModule + + export var x = 10; +>x : number + + var y = 10; +>y : number + } +} +module m2 { +>m2 : typeof m2 + + export var a = 10; +>a : number + + var b = 10; +>b : number + + export module innerExportedModule { +>innerExportedModule : typeof innerExportedModule + + export var k = 10; +>k : number + + var l = 10; +>l : number + } + export module innerNonExportedModule { +>innerNonExportedModule : typeof innerNonExportedModule + + export var x = 10; +>x : number + + var y = 10; +>y : number + } +} diff --git a/tests/baselines/reference/es6ModuleVariableStatement.js b/tests/baselines/reference/es6ModuleVariableStatement.js new file mode 100644 index 00000000000..50c9c3fb4a8 --- /dev/null +++ b/tests/baselines/reference/es6ModuleVariableStatement.js @@ -0,0 +1,37 @@ +//// [es6ModuleVariableStatement.ts] +export var a = "hello"; +export var x: string = a, y = x; +var b = y; +var c: string = b, d = c; +export module m1 { + export var k = a; + export var l: string = b, m = k; + var n = m1.k; + var o: string = n, p = k; +} +module m2 { + export var k = a; + export var l: string = b, m = k; + var n = m1.k; + var o: string = n, p = k; +} + +//// [es6ModuleVariableStatement.js] +export var a = "hello"; +export var x = a, y = x; +var b = y; +var c = b, d = c; +export var m1; +(function (m1) { + m1.k = a; + m1.l = b, m1.m = m1.k; + var n = m1.k; + var o = n, p = m1.k; +})(m1 || (m1 = {})); +var m2; +(function (m2) { + m2.k = a; + m2.l = b, m2.m = m2.k; + var n = m1.k; + var o = n, p = m2.k; +})(m2 || (m2 = {})); diff --git a/tests/baselines/reference/es6ModuleVariableStatement.types b/tests/baselines/reference/es6ModuleVariableStatement.types new file mode 100644 index 00000000000..a10d8f6cacb --- /dev/null +++ b/tests/baselines/reference/es6ModuleVariableStatement.types @@ -0,0 +1,70 @@ +=== tests/cases/compiler/es6ModuleVariableStatement.ts === +export var a = "hello"; +>a : string + +export var x: string = a, y = x; +>x : string +>a : string +>y : string +>x : string + +var b = y; +>b : string +>y : string + +var c: string = b, d = c; +>c : string +>b : string +>d : string +>c : string + +export module m1 { +>m1 : typeof m1 + + export var k = a; +>k : string +>a : string + + export var l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + var n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + var o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} +module m2 { +>m2 : typeof m2 + + export var k = a; +>k : string +>a : string + + export var l: string = b, m = k; +>l : string +>b : string +>m : string +>k : string + + var n = m1.k; +>n : string +>m1.k : string +>m1 : typeof m1 +>k : string + + var o: string = n, p = k; +>o : string +>n : string +>p : string +>k : string +} diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt new file mode 100644 index 00000000000..bbe0d8b78b6 --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.errors.txt @@ -0,0 +1,16 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6ModuleWithModuleGenTargetAmd.ts (0 errors) ==== + export class A + { + constructor () + { + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.js b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.js new file mode 100644 index 00000000000..8757bd1c88f --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetAmd.js @@ -0,0 +1,21 @@ +//// [es6ModuleWithModuleGenTargetAmd.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es6ModuleWithModuleGenTargetAmd.js] +export class A { + constructor() { + } + B() { + return 42; + } +} diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt new file mode 100644 index 00000000000..87f53cb7810 --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.errors.txt @@ -0,0 +1,16 @@ +error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. + + +!!! error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher. +==== tests/cases/compiler/es6ModuleWithModuleGenTargetCommonjs.ts (0 errors) ==== + export class A + { + constructor () + { + } + + public B() + { + return 42; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.js b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.js new file mode 100644 index 00000000000..2df98e20826 --- /dev/null +++ b/tests/baselines/reference/es6ModuleWithModuleGenTargetCommonjs.js @@ -0,0 +1,21 @@ +//// [es6ModuleWithModuleGenTargetCommonjs.ts] +export class A +{ + constructor () + { + } + + public B() + { + return 42; + } +} + +//// [es6ModuleWithModuleGenTargetCommonjs.js] +export class A { + constructor() { + } + B() { + return 42; + } +} diff --git a/tests/baselines/reference/exportAssignDottedName.errors.txt b/tests/baselines/reference/exportAssignDottedName.errors.txt index 264e32c9cad..a63a62fccbe 100644 --- a/tests/baselines/reference/exportAssignDottedName.errors.txt +++ b/tests/baselines/reference/exportAssignDottedName.errors.txt @@ -1,22 +1,14 @@ -tests/cases/conformance/externalModules/foo1.ts(1,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/conformance/externalModules/foo2.ts(2,14): error TS1005: ';' expected. -tests/cases/conformance/externalModules/foo2.ts(2,15): error TS2304: Cannot find name 'x'. +tests/cases/conformance/externalModules/foo1.ts(1,17): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -==== tests/cases/conformance/externalModules/foo2.ts (2 errors) ==== +==== tests/cases/conformance/externalModules/foo2.ts (0 errors) ==== import foo1 = require('./foo1'); - export = foo1.x; // Error, export assignment must be identifier only - ~ -!!! error TS1005: ';' expected. - ~ -!!! error TS2304: Cannot find name 'x'. + export = foo1.x; // Ok ==== tests/cases/conformance/externalModules/foo1.ts (1 errors) ==== export function x(){ - ~~~~~~~~~~~~~~~~~~~~ - return true; - ~~~~~~~~~~~~~ - } - ~ + ~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. + return true; + } \ No newline at end of file diff --git a/tests/baselines/reference/exportAssignDottedName.js b/tests/baselines/reference/exportAssignDottedName.js index 48b06273c17..5784f9116f1 100644 --- a/tests/baselines/reference/exportAssignDottedName.js +++ b/tests/baselines/reference/exportAssignDottedName.js @@ -7,7 +7,7 @@ export function x(){ //// [foo2.ts] import foo1 = require('./foo1'); -export = foo1.x; // Error, export assignment must be identifier only +export = foo1.x; // Ok //// [foo1.js] @@ -17,5 +17,4 @@ function x() { exports.x = x; //// [foo2.js] var foo1 = require('./foo1'); -x; // Error, export assignment must be identifier only -module.exports = foo1; +module.exports = foo1.x; diff --git a/tests/baselines/reference/exportAssignImportedIdentifier.errors.txt b/tests/baselines/reference/exportAssignImportedIdentifier.errors.txt index 8aa25aee2ad..a3e4702f1e6 100644 --- a/tests/baselines/reference/exportAssignImportedIdentifier.errors.txt +++ b/tests/baselines/reference/exportAssignImportedIdentifier.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/externalModules/foo1.ts(1,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. +tests/cases/conformance/externalModules/foo1.ts(1,17): error TS1148: Cannot compile external modules unless the '--module' flag is provided. ==== tests/cases/conformance/externalModules/foo3.ts (0 errors) ==== @@ -6,12 +6,10 @@ tests/cases/conformance/externalModules/foo1.ts(1,1): error TS1148: Cannot compi var x = foo2(); // should be boolean ==== tests/cases/conformance/externalModules/foo1.ts (1 errors) ==== export function x(){ - ~~~~~~~~~~~~~~~~~~~~ - return true; - ~~~~~~~~~~~~~ - } - ~ + ~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. + return true; + } ==== tests/cases/conformance/externalModules/foo2.ts (0 errors) ==== import foo1 = require('./foo1'); diff --git a/tests/baselines/reference/exportAssignNonIdentifier.errors.txt b/tests/baselines/reference/exportAssignNonIdentifier.errors.txt index 31ca1be2011..2935308909b 100644 --- a/tests/baselines/reference/exportAssignNonIdentifier.errors.txt +++ b/tests/baselines/reference/exportAssignNonIdentifier.errors.txt @@ -1,55 +1,37 @@ tests/cases/conformance/externalModules/foo1.ts(2,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/conformance/externalModules/foo1.ts(2,10): error TS1003: Identifier expected. -tests/cases/conformance/externalModules/foo2.ts(1,10): error TS1003: Identifier expected. -tests/cases/conformance/externalModules/foo3.ts(1,10): error TS1003: Identifier expected. -tests/cases/conformance/externalModules/foo4.ts(1,10): error TS1003: Identifier expected. -tests/cases/conformance/externalModules/foo6.ts(1,10): error TS1003: Identifier expected. +tests/cases/conformance/externalModules/foo3.ts(1,16): error TS9003: 'class' expressions are not currently supported. tests/cases/conformance/externalModules/foo6.ts(1,14): error TS1109: Expression expected. -tests/cases/conformance/externalModules/foo7.ts(1,15): error TS1005: ';' expected. -tests/cases/conformance/externalModules/foo8.ts(1,10): error TS1003: Identifier expected. -==== tests/cases/conformance/externalModules/foo1.ts (2 errors) ==== +==== tests/cases/conformance/externalModules/foo1.ts (1 errors) ==== var x = 10; - export = typeof x; // Error - ~~~~~~~~ + export = typeof x; // Ok + ~~~~~~~~~~~~~~~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. - ~~~~~~ -!!! error TS1003: Identifier expected. -==== tests/cases/conformance/externalModules/foo2.ts (1 errors) ==== - export = "sausages"; // Error - ~~~~~~~~~~ -!!! error TS1003: Identifier expected. +==== tests/cases/conformance/externalModules/foo2.ts (0 errors) ==== + export = "sausages"; // Ok ==== tests/cases/conformance/externalModules/foo3.ts (1 errors) ==== - export = class Foo3 {}; // Error - ~~~~~ -!!! error TS1003: Identifier expected. + export = class Foo3 {}; // Error, not an expression + ~~~~ +!!! error TS9003: 'class' expressions are not currently supported. -==== tests/cases/conformance/externalModules/foo4.ts (1 errors) ==== - export = true; // Error - ~~~~ -!!! error TS1003: Identifier expected. +==== tests/cases/conformance/externalModules/foo4.ts (0 errors) ==== + export = true; // Ok ==== tests/cases/conformance/externalModules/foo5.ts (0 errors) ==== export = undefined; // Valid. undefined is an identifier in JavaScript/TypeScript -==== tests/cases/conformance/externalModules/foo6.ts (2 errors) ==== - export = void; // Error - ~~~~ -!!! error TS1003: Identifier expected. +==== tests/cases/conformance/externalModules/foo6.ts (1 errors) ==== + export = void; // Error, void operator requires an argument ~ !!! error TS1109: Expression expected. -==== tests/cases/conformance/externalModules/foo7.ts (1 errors) ==== - export = Date || String; // Error - ~~ -!!! error TS1005: ';' expected. +==== tests/cases/conformance/externalModules/foo7.ts (0 errors) ==== + export = Date || String; // Ok -==== tests/cases/conformance/externalModules/foo8.ts (1 errors) ==== - export = null; // Error - ~~~~ -!!! error TS1003: Identifier expected. +==== tests/cases/conformance/externalModules/foo8.ts (0 errors) ==== + export = null; // Ok \ No newline at end of file diff --git a/tests/baselines/reference/exportAssignNonIdentifier.js b/tests/baselines/reference/exportAssignNonIdentifier.js index aaefca034cb..343405c8624 100644 --- a/tests/baselines/reference/exportAssignNonIdentifier.js +++ b/tests/baselines/reference/exportAssignNonIdentifier.js @@ -2,51 +2,49 @@ //// [foo1.ts] var x = 10; -export = typeof x; // Error +export = typeof x; // Ok //// [foo2.ts] -export = "sausages"; // Error +export = "sausages"; // Ok //// [foo3.ts] -export = class Foo3 {}; // Error +export = class Foo3 {}; // Error, not an expression //// [foo4.ts] -export = true; // Error +export = true; // Ok //// [foo5.ts] export = undefined; // Valid. undefined is an identifier in JavaScript/TypeScript //// [foo6.ts] -export = void; // Error +export = void; // Error, void operator requires an argument //// [foo7.ts] -export = Date || String; // Error +export = Date || String; // Ok //// [foo8.ts] -export = null; // Error +export = null; // Ok //// [foo1.js] var x = 10; -typeof x; // Error +module.exports = typeof x; //// [foo2.js] -"sausages"; // Error +module.exports = "sausages"; //// [foo3.js] -var Foo3 = (function () { +module.exports = (function () { function Foo3() { } return Foo3; })(); -; // Error //// [foo4.js] -true; // Error +module.exports = true; //// [foo5.js] module.exports = undefined; //// [foo6.js] -void ; // Error +module.exports = void ; //// [foo7.js] - || String; // Error -module.exports = Date; +module.exports = Date || String; //// [foo8.js] -null; // Error +module.exports = null; diff --git a/tests/baselines/reference/exportAssignmentEnum.js b/tests/baselines/reference/exportAssignmentEnum.js index 7b9981d9733..a484e43738f 100644 --- a/tests/baselines/reference/exportAssignmentEnum.js +++ b/tests/baselines/reference/exportAssignmentEnum.js @@ -26,6 +26,6 @@ var E; module.exports = E; //// [exportAssignmentEnum_B.js] var EnumE = require("exportAssignmentEnum_A"); -var a = 0 /* A */; -var b = 1 /* B */; -var c = 2 /* C */; +var a = EnumE.A; +var b = EnumE.B; +var c = EnumE.C; diff --git a/tests/baselines/reference/exportAssignmentTopLevelEnumdule.js b/tests/baselines/reference/exportAssignmentTopLevelEnumdule.js index fe6b80292d5..791fc4fbd7f 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelEnumdule.js +++ b/tests/baselines/reference/exportAssignmentTopLevelEnumdule.js @@ -34,7 +34,7 @@ define(["require", "exports"], function (require, exports) { //// [foo_1.js] define(["require", "exports", "./foo_0"], function (require, exports, foo) { var color; - if (color === 1 /* green */) { + if (color === foo.green) { color = foo.answer; } }); diff --git a/tests/baselines/reference/exportAssignmentWithoutIdentifier1.errors.txt b/tests/baselines/reference/exportAssignmentWithoutIdentifier1.errors.txt deleted file mode 100644 index ff21d304e40..00000000000 --- a/tests/baselines/reference/exportAssignmentWithoutIdentifier1.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -tests/cases/compiler/exportAssignmentWithoutIdentifier1.ts(7,10): error TS1003: Identifier expected. - - -==== tests/cases/compiler/exportAssignmentWithoutIdentifier1.ts (1 errors) ==== - function Greeter() { - //... - } - Greeter.prototype.greet = function () { - //... - } - export = new Greeter(); - ~~~ -!!! error TS1003: Identifier expected. - \ No newline at end of file diff --git a/tests/baselines/reference/exportAssignmentWithoutIdentifier1.js b/tests/baselines/reference/exportAssignmentWithoutIdentifier1.js index a90e17d790e..4929eaffd6b 100644 --- a/tests/baselines/reference/exportAssignmentWithoutIdentifier1.js +++ b/tests/baselines/reference/exportAssignmentWithoutIdentifier1.js @@ -15,4 +15,4 @@ function Greeter() { Greeter.prototype.greet = function () { //... }; -new Greeter(); +module.exports = new Greeter(); diff --git a/tests/baselines/reference/exportAssignmentWithoutIdentifier1.types b/tests/baselines/reference/exportAssignmentWithoutIdentifier1.types new file mode 100644 index 00000000000..56da73abd9d --- /dev/null +++ b/tests/baselines/reference/exportAssignmentWithoutIdentifier1.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/exportAssignmentWithoutIdentifier1.ts === +function Greeter() { +>Greeter : () => void + + //... +} +Greeter.prototype.greet = function () { +>Greeter.prototype.greet = function () { //...} : () => void +>Greeter.prototype.greet : any +>Greeter.prototype : any +>Greeter : () => void +>prototype : any +>greet : any +>function () { //...} : () => void + + //... +} +export = new Greeter(); +>new Greeter() : any +>Greeter : () => void + diff --git a/tests/baselines/reference/exportDeclareClass1.errors.txt b/tests/baselines/reference/exportDeclareClass1.errors.txt index c93dc5d0b01..247b0511ed1 100644 --- a/tests/baselines/reference/exportDeclareClass1.errors.txt +++ b/tests/baselines/reference/exportDeclareClass1.errors.txt @@ -1,15 +1,15 @@ -tests/cases/compiler/exportDeclareClass1.ts(2,24): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. -tests/cases/compiler/exportDeclareClass1.ts(3,34): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. +tests/cases/compiler/exportDeclareClass1.ts(2,21): error TS1184: An implementation cannot be declared in ambient contexts. +tests/cases/compiler/exportDeclareClass1.ts(3,31): error TS1184: An implementation cannot be declared in ambient contexts. ==== tests/cases/compiler/exportDeclareClass1.ts (2 errors) ==== export declare class eaC { static tF() { }; - ~ -!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + ~ +!!! error TS1184: An implementation cannot be declared in ambient contexts. static tsF(param:any) { }; - ~ -!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. + ~ +!!! error TS1184: An implementation cannot be declared in ambient contexts. }; export declare class eaC2 { diff --git a/tests/baselines/reference/exportDefaultForNonInstantiatedModule.js b/tests/baselines/reference/exportDefaultForNonInstantiatedModule.js new file mode 100644 index 00000000000..f2b98e6eb44 --- /dev/null +++ b/tests/baselines/reference/exportDefaultForNonInstantiatedModule.js @@ -0,0 +1,10 @@ +//// [exportDefaultForNonInstantiatedModule.ts] + +module m { + export interface foo { + } +} +// Should not be emitted +export default m; + +//// [exportDefaultForNonInstantiatedModule.js] diff --git a/tests/baselines/reference/exportDefaultForNonInstantiatedModule.types b/tests/baselines/reference/exportDefaultForNonInstantiatedModule.types new file mode 100644 index 00000000000..940bb44658e --- /dev/null +++ b/tests/baselines/reference/exportDefaultForNonInstantiatedModule.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/exportDefaultForNonInstantiatedModule.ts === + +module m { +>m : unknown + + export interface foo { +>foo : foo + } +} +// Should not be emitted +export default m; +>m : unknown + diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation.errors.txt b/tests/baselines/reference/exportDefaultTypeAnnoation.errors.txt new file mode 100644 index 00000000000..71ff4261ffe --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation.errors.txt @@ -0,0 +1,8 @@ +tests/cases/compiler/exportDefaultTypeAnnoation.ts(2,18): error TS1201: A type annotation on an export statement is only allowed in an ambient external module declaration. + + +==== tests/cases/compiler/exportDefaultTypeAnnoation.ts (1 errors) ==== + + export default : number; + ~~~~~~ +!!! error TS1201: A type annotation on an export statement is only allowed in an ambient external module declaration. \ No newline at end of file diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation.js b/tests/baselines/reference/exportDefaultTypeAnnoation.js new file mode 100644 index 00000000000..71a829ac284 --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation.js @@ -0,0 +1,6 @@ +//// [exportDefaultTypeAnnoation.ts] + +export default : number; + +//// [exportDefaultTypeAnnoation.js] +exports.default = ; diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation2.js b/tests/baselines/reference/exportDefaultTypeAnnoation2.js new file mode 100644 index 00000000000..2c918954702 --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation2.js @@ -0,0 +1,7 @@ +//// [exportDefaultTypeAnnoation2.ts] + +declare module "mod" { + export default : number; +} + +//// [exportDefaultTypeAnnoation2.js] diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation2.types b/tests/baselines/reference/exportDefaultTypeAnnoation2.types new file mode 100644 index 00000000000..53ca78586cc --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation2.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/exportDefaultTypeAnnoation2.ts === + +No type information for this code.declare module "mod" { +No type information for this code. export default : number; +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation3.errors.txt b/tests/baselines/reference/exportDefaultTypeAnnoation3.errors.txt new file mode 100644 index 00000000000..326713e059e --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation3.errors.txt @@ -0,0 +1,21 @@ +tests/cases/compiler/reference1.ts(2,5): error TS2322: Type 'number' is not assignable to type 'string'. +tests/cases/compiler/reference2.ts(2,5): error TS2322: Type 'number' is not assignable to type 'string'. + + +==== tests/cases/compiler/mod.d.ts (0 errors) ==== + + declare module "mod" { + export default : number; + } + +==== tests/cases/compiler/reference1.ts (1 errors) ==== + import d from "mod"; + var s: string = d; // Error + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + +==== tests/cases/compiler/reference2.ts (1 errors) ==== + import { default as d } from "mod"; + var s: string = d; // Error + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/exportDefaultTypeAnnoation3.js b/tests/baselines/reference/exportDefaultTypeAnnoation3.js new file mode 100644 index 00000000000..1f95e669de5 --- /dev/null +++ b/tests/baselines/reference/exportDefaultTypeAnnoation3.js @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/exportDefaultTypeAnnoation3.ts] //// + +//// [mod.d.ts] + +declare module "mod" { + export default : number; +} + +//// [reference1.ts] +import d from "mod"; +var s: string = d; // Error + +//// [reference2.ts] +import { default as d } from "mod"; +var s: string = d; // Error + +//// [reference1.js] +var mod_1 = require("mod"); +var s = mod_1.default; // Error +//// [reference2.js] +var mod_1 = require("mod"); +var s = mod_1.default; // Error diff --git a/tests/baselines/reference/exportStar-amd.errors.txt b/tests/baselines/reference/exportStar-amd.errors.txt new file mode 100644 index 00000000000..87e4c4740a0 --- /dev/null +++ b/tests/baselines/reference/exportStar-amd.errors.txt @@ -0,0 +1,33 @@ +tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: External module '"tests/cases/conformance/es6/modules/t4"' has no default export. + + +==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== + + export var x = 1; + export var y = 2; + +==== tests/cases/conformance/es6/modules/t2.ts (0 errors) ==== + export default "hello"; + export function foo() { } + +==== tests/cases/conformance/es6/modules/t3.ts (0 errors) ==== + var x = "x"; + var y = "y"; + var z = "z"; + export { x, y, z }; + +==== tests/cases/conformance/es6/modules/t4.ts (0 errors) ==== + export * from "./t1"; + export * from "./t2"; + export * from "./t3"; + +==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== + import hello, { x, y, z, foo } from "./t4"; + ~~~~~ +!!! error TS1192: External module '"tests/cases/conformance/es6/modules/t4"' has no default export. + hello; + x; + y; + z; + foo; + \ No newline at end of file diff --git a/tests/baselines/reference/exportStar-amd.js b/tests/baselines/reference/exportStar-amd.js new file mode 100644 index 00000000000..dcd2d126a35 --- /dev/null +++ b/tests/baselines/reference/exportStar-amd.js @@ -0,0 +1,68 @@ +//// [tests/cases/conformance/es6/modules/exportStar-amd.ts] //// + +//// [t1.ts] + +export var x = 1; +export var y = 2; + +//// [t2.ts] +export default "hello"; +export function foo() { } + +//// [t3.ts] +var x = "x"; +var y = "y"; +var z = "z"; +export { x, y, z }; + +//// [t4.ts] +export * from "./t1"; +export * from "./t2"; +export * from "./t3"; + +//// [main.ts] +import hello, { x, y, z, foo } from "./t4"; +hello; +x; +y; +z; +foo; + + +//// [t1.js] +define(["require", "exports"], function (require, exports) { + exports.x = 1; + exports.y = 2; +}); +//// [t2.js] +define(["require", "exports"], function (require, exports) { + exports.default = "hello"; + function foo() { } + exports.foo = foo; +}); +//// [t3.js] +define(["require", "exports"], function (require, exports) { + var x = "x"; + exports.x = x; + var y = "y"; + exports.y = y; + var z = "z"; + exports.z = z; +}); +//// [t4.js] +define(["require", "exports", "./t1", "./t2", "./t3"], function (require, exports, t1_1, t2_1, t3_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(t1_1); + __export(t2_1); + __export(t3_1); +}); +//// [main.js] +define(["require", "exports", "./t4"], function (require, exports, t4_1) { + t4_1.default; + t4_1.x; + t4_1.y; + t4_1.z; + t4_1.foo; +}); diff --git a/tests/baselines/reference/exportStar.errors.txt b/tests/baselines/reference/exportStar.errors.txt new file mode 100644 index 00000000000..87e4c4740a0 --- /dev/null +++ b/tests/baselines/reference/exportStar.errors.txt @@ -0,0 +1,33 @@ +tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: External module '"tests/cases/conformance/es6/modules/t4"' has no default export. + + +==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== + + export var x = 1; + export var y = 2; + +==== tests/cases/conformance/es6/modules/t2.ts (0 errors) ==== + export default "hello"; + export function foo() { } + +==== tests/cases/conformance/es6/modules/t3.ts (0 errors) ==== + var x = "x"; + var y = "y"; + var z = "z"; + export { x, y, z }; + +==== tests/cases/conformance/es6/modules/t4.ts (0 errors) ==== + export * from "./t1"; + export * from "./t2"; + export * from "./t3"; + +==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== + import hello, { x, y, z, foo } from "./t4"; + ~~~~~ +!!! error TS1192: External module '"tests/cases/conformance/es6/modules/t4"' has no default export. + hello; + x; + y; + z; + foo; + \ No newline at end of file diff --git a/tests/baselines/reference/exportStar.js b/tests/baselines/reference/exportStar.js new file mode 100644 index 00000000000..d219a3650e7 --- /dev/null +++ b/tests/baselines/reference/exportStar.js @@ -0,0 +1,59 @@ +//// [tests/cases/conformance/es6/modules/exportStar.ts] //// + +//// [t1.ts] + +export var x = 1; +export var y = 2; + +//// [t2.ts] +export default "hello"; +export function foo() { } + +//// [t3.ts] +var x = "x"; +var y = "y"; +var z = "z"; +export { x, y, z }; + +//// [t4.ts] +export * from "./t1"; +export * from "./t2"; +export * from "./t3"; + +//// [main.ts] +import hello, { x, y, z, foo } from "./t4"; +hello; +x; +y; +z; +foo; + + +//// [t1.js] +exports.x = 1; +exports.y = 2; +//// [t2.js] +exports.default = "hello"; +function foo() { } +exports.foo = foo; +//// [t3.js] +var x = "x"; +exports.x = x; +var y = "y"; +exports.y = y; +var z = "z"; +exports.z = z; +//// [t4.js] +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("./t1")); +__export(require("./t2")); +__export(require("./t3")); +//// [main.js] +var t4_1 = require("./t4"); +t4_1.default; +t4_1.x; +t4_1.y; +t4_1.z; +t4_1.foo; diff --git a/tests/baselines/reference/exportsAndImports1-amd.js b/tests/baselines/reference/exportsAndImports1-amd.js new file mode 100644 index 00000000000..fdc6d396bad --- /dev/null +++ b/tests/baselines/reference/exportsAndImports1-amd.js @@ -0,0 +1,81 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports1-amd.ts] //// + +//// [t1.ts] + +var v = 1; +function f() { } +class C { +} +interface I { +} +enum E { + A, B, C +} +const enum D { + A, B, C +} +module M { + export var x; +} +module N { + export interface I { + } +} +type T = number; +import a = M.x; + +export { v, f, C, I, E, D, M, N, T, a }; + +//// [t2.ts] +export { v, f, C, I, E, D, M, N, T, a } from "./t1"; + +//// [t3.ts] +import { v, f, C, I, E, D, M, N, T, a } from "./t1"; +export { v, f, C, I, E, D, M, N, T, a }; + + +//// [t1.js] +define(["require", "exports"], function (require, exports) { + var v = 1; + exports.v = v; + function f() { } + exports.f = f; + var C = (function () { + function C() { + } + return C; + })(); + exports.C = C; + var E; + (function (E) { + E[E["A"] = 0] = "A"; + E[E["B"] = 1] = "B"; + E[E["C"] = 2] = "C"; + })(E || (E = {})); + exports.E = E; + var M; + (function (M) { + M.x; + })(M || (M = {})); + exports.M = M; + var a = M.x; + exports.a = a; +}); +//// [t2.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.v = t1_1.v; + exports.f = t1_1.f; + exports.C = t1_1.C; + exports.E = t1_1.E; + exports.M = t1_1.M; + exports.a = t1_1.a; +}); +//// [t3.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.v = t1_1.v; + exports.f = t1_1.f; + exports.C = t1_1.C; + exports.E = t1_1.E; + exports.M = t1_1.M; + exports.a = t1_1.a; +}); diff --git a/tests/baselines/reference/exportsAndImports1-amd.types b/tests/baselines/reference/exportsAndImports1-amd.types new file mode 100644 index 00000000000..0b35b04e22e --- /dev/null +++ b/tests/baselines/reference/exportsAndImports1-amd.types @@ -0,0 +1,101 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +var v = 1; +>v : number + +function f() { } +>f : () => void + +class C { +>C : C +} +interface I { +>I : I +} +enum E { +>E : E + + A, B, C +>A : E +>B : E +>C : E +} +const enum D { +>D : D + + A, B, C +>A : D +>B : D +>C : D +} +module M { +>M : typeof M + + export var x; +>x : any +} +module N { +>N : unknown + + export interface I { +>I : I + } +} +type T = number; +>T : number + +import a = M.x; +>a : any +>M : typeof M +>x : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +=== tests/cases/conformance/es6/modules/t2.ts === +export { v, f, C, I, E, D, M, N, T, a } from "./t1"; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +=== tests/cases/conformance/es6/modules/t3.ts === +import { v, f, C, I, E, D, M, N, T, a } from "./t1"; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + diff --git a/tests/baselines/reference/exportsAndImports1.js b/tests/baselines/reference/exportsAndImports1.js new file mode 100644 index 00000000000..87cb9e0fe13 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports1.js @@ -0,0 +1,77 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports1.ts] //// + +//// [t1.ts] + +var v = 1; +function f() { } +class C { +} +interface I { +} +enum E { + A, B, C +} +const enum D { + A, B, C +} +module M { + export var x; +} +module N { + export interface I { + } +} +type T = number; +import a = M.x; + +export { v, f, C, I, E, D, M, N, T, a }; + +//// [t2.ts] +export { v, f, C, I, E, D, M, N, T, a } from "./t1"; + +//// [t3.ts] +import { v, f, C, I, E, D, M, N, T, a } from "./t1"; +export { v, f, C, I, E, D, M, N, T, a }; + + +//// [t1.js] +var v = 1; +exports.v = v; +function f() { } +exports.f = f; +var C = (function () { + function C() { + } + return C; +})(); +exports.C = C; +var E; +(function (E) { + E[E["A"] = 0] = "A"; + E[E["B"] = 1] = "B"; + E[E["C"] = 2] = "C"; +})(E || (E = {})); +exports.E = E; +var M; +(function (M) { + M.x; +})(M || (M = {})); +exports.M = M; +var a = M.x; +exports.a = a; +//// [t2.js] +var t1_1 = require("./t1"); +exports.v = t1_1.v; +exports.f = t1_1.f; +exports.C = t1_1.C; +exports.E = t1_1.E; +exports.M = t1_1.M; +exports.a = t1_1.a; +//// [t3.js] +var t1_1 = require("./t1"); +exports.v = t1_1.v; +exports.f = t1_1.f; +exports.C = t1_1.C; +exports.E = t1_1.E; +exports.M = t1_1.M; +exports.a = t1_1.a; diff --git a/tests/baselines/reference/exportsAndImports1.types b/tests/baselines/reference/exportsAndImports1.types new file mode 100644 index 00000000000..0b35b04e22e --- /dev/null +++ b/tests/baselines/reference/exportsAndImports1.types @@ -0,0 +1,101 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +var v = 1; +>v : number + +function f() { } +>f : () => void + +class C { +>C : C +} +interface I { +>I : I +} +enum E { +>E : E + + A, B, C +>A : E +>B : E +>C : E +} +const enum D { +>D : D + + A, B, C +>A : D +>B : D +>C : D +} +module M { +>M : typeof M + + export var x; +>x : any +} +module N { +>N : unknown + + export interface I { +>I : I + } +} +type T = number; +>T : number + +import a = M.x; +>a : any +>M : typeof M +>x : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +=== tests/cases/conformance/es6/modules/t2.ts === +export { v, f, C, I, E, D, M, N, T, a } from "./t1"; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +=== tests/cases/conformance/es6/modules/t3.ts === +import { v, f, C, I, E, D, M, N, T, a } from "./t1"; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + diff --git a/tests/baselines/reference/exportsAndImports2-amd.js b/tests/baselines/reference/exportsAndImports2-amd.js new file mode 100644 index 00000000000..10f524de684 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports2-amd.js @@ -0,0 +1,30 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports2-amd.ts] //// + +//// [t1.ts] + +export var x = "x"; +export var y = "y"; + +//// [t2.ts] +export { x as y, y as x } from "./t1"; + +//// [t3.ts] +import { x, y } from "./t1"; +export { x as y, y as x }; + + +//// [t1.js] +define(["require", "exports"], function (require, exports) { + exports.x = "x"; + exports.y = "y"; +}); +//// [t2.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.y = t1_1.x; + exports.x = t1_1.y; +}); +//// [t3.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.y = t1_1.x; + exports.x = t1_1.y; +}); diff --git a/tests/baselines/reference/exportsAndImports2-amd.types b/tests/baselines/reference/exportsAndImports2-amd.types new file mode 100644 index 00000000000..ebfc097da5a --- /dev/null +++ b/tests/baselines/reference/exportsAndImports2-amd.types @@ -0,0 +1,26 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +export var x = "x"; +>x : string + +export var y = "y"; +>y : string + +=== tests/cases/conformance/es6/modules/t2.ts === +export { x as y, y as x } from "./t1"; +>x : string +>y : string +>y : string +>x : string + +=== tests/cases/conformance/es6/modules/t3.ts === +import { x, y } from "./t1"; +>x : string +>y : string + +export { x as y, y as x }; +>x : string +>y : string +>y : string +>x : string + diff --git a/tests/baselines/reference/exportsAndImports2.js b/tests/baselines/reference/exportsAndImports2.js new file mode 100644 index 00000000000..96a3b838ed1 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports2.js @@ -0,0 +1,26 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports2.ts] //// + +//// [t1.ts] + +export var x = "x"; +export var y = "y"; + +//// [t2.ts] +export { x as y, y as x } from "./t1"; + +//// [t3.ts] +import { x, y } from "./t1"; +export { x as y, y as x }; + + +//// [t1.js] +exports.x = "x"; +exports.y = "y"; +//// [t2.js] +var t1_1 = require("./t1"); +exports.y = t1_1.x; +exports.x = t1_1.y; +//// [t3.js] +var t1_1 = require("./t1"); +exports.y = t1_1.x; +exports.x = t1_1.y; diff --git a/tests/baselines/reference/exportsAndImports2.types b/tests/baselines/reference/exportsAndImports2.types new file mode 100644 index 00000000000..ebfc097da5a --- /dev/null +++ b/tests/baselines/reference/exportsAndImports2.types @@ -0,0 +1,26 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +export var x = "x"; +>x : string + +export var y = "y"; +>y : string + +=== tests/cases/conformance/es6/modules/t2.ts === +export { x as y, y as x } from "./t1"; +>x : string +>y : string +>y : string +>x : string + +=== tests/cases/conformance/es6/modules/t3.ts === +import { x, y } from "./t1"; +>x : string +>y : string + +export { x as y, y as x }; +>x : string +>y : string +>y : string +>x : string + diff --git a/tests/baselines/reference/exportsAndImports3-amd.js b/tests/baselines/reference/exportsAndImports3-amd.js new file mode 100644 index 00000000000..f72d063e099 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports3-amd.js @@ -0,0 +1,83 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports3-amd.ts] //// + +//// [t1.ts] + +export var v = 1; +export function f() { } +export class C { +} +export interface I { +} +export enum E { + A, B, C +} +export const enum D { + A, B, C +} +export module M { + export var x; +} +export module N { + export interface I { + } +} +export type T = number; +export import a = M.x; + +export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, T as T1, a as a1 }; + +//// [t2.ts] +export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; + +//// [t3.ts] +import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +export { v, f, C, I, E, D, M, N, T, a }; + + +//// [t1.js] +define(["require", "exports"], function (require, exports) { + exports.v = 1; + exports.v1 = exports.v; + function f() { } + exports.f = f; + exports.f1 = exports.f; + var C = (function () { + function C() { + } + return C; + })(); + exports.C = C; + exports.C1 = exports.C; + (function (E) { + E[E["A"] = 0] = "A"; + E[E["B"] = 1] = "B"; + E[E["C"] = 2] = "C"; + })(exports.E || (exports.E = {})); + var E = exports.E; + exports.E1 = exports.E; + var M; + (function (M) { + M.x; + })(M = exports.M || (exports.M = {})); + exports.M1 = exports.M; + exports.a = M.x; + exports.a1 = exports.a; +}); +//// [t2.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.v = t1_1.v1; + exports.f = t1_1.f1; + exports.C = t1_1.C1; + exports.E = t1_1.E1; + exports.M = t1_1.M1; + exports.a = t1_1.a1; +}); +//// [t3.js] +define(["require", "exports", "./t1"], function (require, exports, t1_1) { + exports.v = t1_1.v1; + exports.f = t1_1.f1; + exports.C = t1_1.C1; + exports.E = t1_1.E1; + exports.M = t1_1.M1; + exports.a = t1_1.a1; +}); diff --git a/tests/baselines/reference/exportsAndImports3-amd.types b/tests/baselines/reference/exportsAndImports3-amd.types new file mode 100644 index 00000000000..86e21cfd084 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports3-amd.types @@ -0,0 +1,131 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +export var v = 1; +>v : number + +export function f() { } +>f : () => void + +export class C { +>C : C +} +export interface I { +>I : I +} +export enum E { +>E : E + + A, B, C +>A : E +>B : E +>C : E +} +export const enum D { +>D : D + + A, B, C +>A : D +>B : D +>C : D +} +export module M { +>M : typeof M + + export var x; +>x : any +} +export module N { +>N : unknown + + export interface I { +>I : I + } +} +export type T = number; +>T : number + +export import a = M.x; +>a : any +>M : typeof M +>x : any + +export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, T as T1, a as a1 }; +>v : number +>v1 : number +>f : () => void +>f1 : () => void +>C : typeof C +>C1 : typeof C +>I : unknown +>I1 : unknown +>E : typeof E +>E1 : typeof E +>D : typeof D +>D1 : typeof D +>M : typeof M +>M1 : typeof M +>N : unknown +>N1 : unknown +>T : unknown +>T1 : unknown +>a : any +>a1 : any + +=== tests/cases/conformance/es6/modules/t2.ts === +export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +>v1 : number +>v : number +>f1 : () => void +>f : () => void +>C1 : typeof C +>C : typeof C +>I1 : unknown +>I : unknown +>E1 : typeof E +>E : typeof E +>D1 : typeof D +>D : typeof D +>M1 : typeof M +>M : typeof M +>N1 : unknown +>N : unknown +>T1 : unknown +>T : unknown +>a1 : any +>a : any + +=== tests/cases/conformance/es6/modules/t3.ts === +import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +>v1 : number +>v : number +>f1 : () => void +>f : () => void +>C1 : typeof C +>C : typeof C +>I1 : unknown +>I : unknown +>E1 : typeof E +>E : typeof E +>D1 : typeof D +>D : typeof D +>M1 : typeof M +>M : typeof M +>N1 : unknown +>N : unknown +>T1 : unknown +>T : unknown +>a1 : any +>a : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + diff --git a/tests/baselines/reference/exportsAndImports3.js b/tests/baselines/reference/exportsAndImports3.js new file mode 100644 index 00000000000..56baead64cc --- /dev/null +++ b/tests/baselines/reference/exportsAndImports3.js @@ -0,0 +1,79 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports3.ts] //// + +//// [t1.ts] + +export var v = 1; +export function f() { } +export class C { +} +export interface I { +} +export enum E { + A, B, C +} +export const enum D { + A, B, C +} +export module M { + export var x; +} +export module N { + export interface I { + } +} +export type T = number; +export import a = M.x; + +export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, T as T1, a as a1 }; + +//// [t2.ts] +export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; + +//// [t3.ts] +import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +export { v, f, C, I, E, D, M, N, T, a }; + + +//// [t1.js] +exports.v = 1; +exports.v1 = exports.v; +function f() { } +exports.f = f; +exports.f1 = exports.f; +var C = (function () { + function C() { + } + return C; +})(); +exports.C = C; +exports.C1 = exports.C; +(function (E) { + E[E["A"] = 0] = "A"; + E[E["B"] = 1] = "B"; + E[E["C"] = 2] = "C"; +})(exports.E || (exports.E = {})); +var E = exports.E; +exports.E1 = exports.E; +var M; +(function (M) { + M.x; +})(M = exports.M || (exports.M = {})); +exports.M1 = exports.M; +exports.a = M.x; +exports.a1 = exports.a; +//// [t2.js] +var t1_1 = require("./t1"); +exports.v = t1_1.v1; +exports.f = t1_1.f1; +exports.C = t1_1.C1; +exports.E = t1_1.E1; +exports.M = t1_1.M1; +exports.a = t1_1.a1; +//// [t3.js] +var t1_1 = require("./t1"); +exports.v = t1_1.v1; +exports.f = t1_1.f1; +exports.C = t1_1.C1; +exports.E = t1_1.E1; +exports.M = t1_1.M1; +exports.a = t1_1.a1; diff --git a/tests/baselines/reference/exportsAndImports3.types b/tests/baselines/reference/exportsAndImports3.types new file mode 100644 index 00000000000..86e21cfd084 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports3.types @@ -0,0 +1,131 @@ +=== tests/cases/conformance/es6/modules/t1.ts === + +export var v = 1; +>v : number + +export function f() { } +>f : () => void + +export class C { +>C : C +} +export interface I { +>I : I +} +export enum E { +>E : E + + A, B, C +>A : E +>B : E +>C : E +} +export const enum D { +>D : D + + A, B, C +>A : D +>B : D +>C : D +} +export module M { +>M : typeof M + + export var x; +>x : any +} +export module N { +>N : unknown + + export interface I { +>I : I + } +} +export type T = number; +>T : number + +export import a = M.x; +>a : any +>M : typeof M +>x : any + +export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, T as T1, a as a1 }; +>v : number +>v1 : number +>f : () => void +>f1 : () => void +>C : typeof C +>C1 : typeof C +>I : unknown +>I1 : unknown +>E : typeof E +>E1 : typeof E +>D : typeof D +>D1 : typeof D +>M : typeof M +>M1 : typeof M +>N : unknown +>N1 : unknown +>T : unknown +>T1 : unknown +>a : any +>a1 : any + +=== tests/cases/conformance/es6/modules/t2.ts === +export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +>v1 : number +>v : number +>f1 : () => void +>f : () => void +>C1 : typeof C +>C : typeof C +>I1 : unknown +>I : unknown +>E1 : typeof E +>E : typeof E +>D1 : typeof D +>D : typeof D +>M1 : typeof M +>M : typeof M +>N1 : unknown +>N : unknown +>T1 : unknown +>T : unknown +>a1 : any +>a : any + +=== tests/cases/conformance/es6/modules/t3.ts === +import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, T1 as T, a1 as a } from "./t1"; +>v1 : number +>v : number +>f1 : () => void +>f : () => void +>C1 : typeof C +>C : typeof C +>I1 : unknown +>I : unknown +>E1 : typeof E +>E : typeof E +>D1 : typeof D +>D : typeof D +>M1 : typeof M +>M : typeof M +>N1 : unknown +>N : unknown +>T1 : unknown +>T : unknown +>a1 : any +>a : any + +export { v, f, C, I, E, D, M, N, T, a }; +>v : number +>f : () => void +>C : typeof C +>I : unknown +>E : typeof E +>D : typeof D +>M : typeof M +>N : unknown +>T : unknown +>a : any + diff --git a/tests/baselines/reference/exportsAndImports4-amd.js b/tests/baselines/reference/exportsAndImports4-amd.js new file mode 100644 index 00000000000..db28ed5b350 --- /dev/null +++ b/tests/baselines/reference/exportsAndImports4-amd.js @@ -0,0 +1,65 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports4-amd.ts] //// + +//// [t1.ts] + +export default "hello"; + +//// [t2.ts] +import a = require("./t1"); +a.default; +import b from "./t1"; +b; +import * as c from "./t1"; +c.default; +import { default as d } from "./t1"; +d; +import e1, * as e2 from "./t1"; +e1; +e2.default; +import f1, { default as f2 } from "./t1"; +f1; +f2; +import "./t1"; + +//// [t3.ts] +import a = require("./t1"); +a.default; +import b from "./t1"; +b; +import * as c from "./t1"; +c.default; +import { default as d } from "./t1"; +d; +import e1, * as e2 from "./t1"; +e1; +e2.default; +import f1, { default as f2 } from "./t1"; +f1; +f2; +export { a, b, c, d, e1, e2, f1, f2 }; + + +//// [t1.js] +define(["require", "exports"], function (require, exports) { + exports.default = "hello"; +}); +//// [t3.js] +define(["require", "exports", "./t1", "./t1", "./t1", "./t1", "./t1", "./t1"], function (require, exports, a, t1_1, c, t1_2, t1_3, t1_4) { + exports.a = a; + a.default; + exports.b = t1_1.default; + t1_1.default; + exports.c = c; + c.default; + exports.d = t1_2.default; + t1_2.default; + var e2 = t1_3; + exports.e1 = t1_3.default; + exports.e2 = e2; + t1_3.default; + e2.default; + exports.f1 = t1_4.default; + exports.f2 = t1_4.default; + t1_4.default; + t1_4.default; +}); diff --git a/tests/baselines/reference/exportsAndImports4-amd.types b/tests/baselines/reference/exportsAndImports4-amd.types new file mode 100644 index 00000000000..4bd6f8c0e1e --- /dev/null +++ b/tests/baselines/reference/exportsAndImports4-amd.types @@ -0,0 +1,68 @@ +=== tests/cases/conformance/es6/modules/t3.ts === +import a = require("./t1"); +>a : typeof a + +a.default; +>a.default : string +>a : typeof a +>default : string + +import b from "./t1"; +>b : string + +b; +>b : string + +import * as c from "./t1"; +>c : typeof a + +c.default; +>c.default : string +>c : typeof a +>default : string + +import { default as d } from "./t1"; +>default : string +>d : string + +d; +>d : string + +import e1, * as e2 from "./t1"; +>e1 : string +>e2 : typeof a + +e1; +>e1 : string + +e2.default; +>e2.default : string +>e2 : typeof a +>default : string + +import f1, { default as f2 } from "./t1"; +>f1 : string +>default : string +>f2 : string + +f1; +>f1 : string + +f2; +>f2 : string + +export { a, b, c, d, e1, e2, f1, f2 }; +>a : typeof a +>b : string +>c : typeof a +>d : string +>e1 : string +>e2 : typeof a +>f1 : string +>f2 : string + +=== tests/cases/conformance/es6/modules/t1.ts === + +No type information for this code.export default "hello"; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/exportsAndImports4.js b/tests/baselines/reference/exportsAndImports4.js new file mode 100644 index 00000000000..ea5f34b882b --- /dev/null +++ b/tests/baselines/reference/exportsAndImports4.js @@ -0,0 +1,66 @@ +//// [tests/cases/conformance/es6/modules/exportsAndImports4.ts] //// + +//// [t1.ts] + +export default "hello"; + +//// [t2.ts] +import a = require("./t1"); +a.default; +import b from "./t1"; +b; +import * as c from "./t1"; +c.default; +import { default as d } from "./t1"; +d; +import e1, * as e2 from "./t1"; +e1; +e2.default; +import f1, { default as f2 } from "./t1"; +f1; +f2; +import "./t1"; + +//// [t3.ts] +import a = require("./t1"); +a.default; +import b from "./t1"; +b; +import * as c from "./t1"; +c.default; +import { default as d } from "./t1"; +d; +import e1, * as e2 from "./t1"; +e1; +e2.default; +import f1, { default as f2 } from "./t1"; +f1; +f2; +export { a, b, c, d, e1, e2, f1, f2 }; + + +//// [t1.js] +exports.default = "hello"; +//// [t3.js] +var a = require("./t1"); +exports.a = a; +a.default; +var t1_1 = require("./t1"); +exports.b = t1_1.default; +t1_1.default; +var c = require("./t1"); +exports.c = c; +c.default; +var t1_2 = require("./t1"); +exports.d = t1_2.default; +t1_2.default; +var t1_3 = require("./t1"), e2 = t1_3; +exports.e1 = t1_3.default; +exports.e2 = e2; +t1_3.default; +e2.default; +var t1_4 = require("./t1"); +exports.f1 = t1_4.default; +exports.f2 = t1_4.default; +t1_4.default; +t1_4.default; diff --git a/tests/baselines/reference/exportsAndImports4.types b/tests/baselines/reference/exportsAndImports4.types new file mode 100644 index 00000000000..4bd6f8c0e1e --- /dev/null +++ b/tests/baselines/reference/exportsAndImports4.types @@ -0,0 +1,68 @@ +=== tests/cases/conformance/es6/modules/t3.ts === +import a = require("./t1"); +>a : typeof a + +a.default; +>a.default : string +>a : typeof a +>default : string + +import b from "./t1"; +>b : string + +b; +>b : string + +import * as c from "./t1"; +>c : typeof a + +c.default; +>c.default : string +>c : typeof a +>default : string + +import { default as d } from "./t1"; +>default : string +>d : string + +d; +>d : string + +import e1, * as e2 from "./t1"; +>e1 : string +>e2 : typeof a + +e1; +>e1 : string + +e2.default; +>e2.default : string +>e2 : typeof a +>default : string + +import f1, { default as f2 } from "./t1"; +>f1 : string +>default : string +>f2 : string + +f1; +>f1 : string + +f2; +>f2 : string + +export { a, b, c, d, e1, e2, f1, f2 }; +>a : typeof a +>b : string +>c : typeof a +>d : string +>e1 : string +>e2 : typeof a +>f1 : string +>f2 : string + +=== tests/cases/conformance/es6/modules/t1.ts === + +No type information for this code.export default "hello"; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/extBaseClass1.types b/tests/baselines/reference/extBaseClass1.types index 16f89ab5a20..d160db9a06e 100644 --- a/tests/baselines/reference/extBaseClass1.types +++ b/tests/baselines/reference/extBaseClass1.types @@ -29,7 +29,7 @@ module N { export class C3 extends M.B { >C3 : C3 ->M : unknown +>M : typeof M >B : M.B } } diff --git a/tests/baselines/reference/extBaseClass2.errors.txt b/tests/baselines/reference/extBaseClass2.errors.txt index 5e49a2dbc47..10c406b6ba0 100644 --- a/tests/baselines/reference/extBaseClass2.errors.txt +++ b/tests/baselines/reference/extBaseClass2.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/extBaseClass2.ts(2,29): error TS2305: Module 'M' has no exported member 'B'. +tests/cases/compiler/extBaseClass2.ts(2,31): error TS2305: Module 'M' has no exported member 'B'. tests/cases/compiler/extBaseClass2.ts(7,29): error TS2304: Cannot find name 'B'. ==== tests/cases/compiler/extBaseClass2.ts (2 errors) ==== module N { export class C4 extends M.B { - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'B'. } } diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 6525f201f5b..769f6f5a602 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -60,7 +60,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // interesting stuff here @@ -72,7 +72,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone : unknown +>Backbone : typeof Backbone >Model : Backbone.Model // different interesting stuff here diff --git a/tests/baselines/reference/externModule.errors.txt b/tests/baselines/reference/externModule.errors.txt index eff17eb8586..8d4126350c1 100644 --- a/tests/baselines/reference/externModule.errors.txt +++ b/tests/baselines/reference/externModule.errors.txt @@ -2,18 +2,19 @@ tests/cases/compiler/externModule.ts(1,1): error TS2304: Cannot find name 'decla tests/cases/compiler/externModule.ts(1,9): error TS1005: ';' expected. tests/cases/compiler/externModule.ts(1,9): error TS2304: Cannot find name 'module'. tests/cases/compiler/externModule.ts(1,16): error TS1005: ';' expected. -tests/cases/compiler/externModule.ts(2,5): error TS1129: Statement expected. -tests/cases/compiler/externModule.ts(2,18): error TS1148: Cannot compile external modules unless the '--module' flag is provided. tests/cases/compiler/externModule.ts(3,10): error TS2391: Function implementation is missing or not immediately following the declaration. tests/cases/compiler/externModule.ts(4,10): error TS2391: Function implementation is missing or not immediately following the declaration. tests/cases/compiler/externModule.ts(18,6): error TS2390: Constructor implementation is missing. tests/cases/compiler/externModule.ts(20,13): error TS2391: Function implementation is missing or not immediately following the declaration. tests/cases/compiler/externModule.ts(26,13): error TS2391: Function implementation is missing or not immediately following the declaration. tests/cases/compiler/externModule.ts(28,13): error TS2391: Function implementation is missing or not immediately following the declaration. -tests/cases/compiler/externModule.ts(30,1): error TS1128: Declaration or statement expected. +tests/cases/compiler/externModule.ts(32,11): error TS2304: Cannot find name 'XDate'. +tests/cases/compiler/externModule.ts(34,7): error TS2304: Cannot find name 'XDate'. +tests/cases/compiler/externModule.ts(36,7): error TS2304: Cannot find name 'XDate'. +tests/cases/compiler/externModule.ts(37,3): error TS2304: Cannot find name 'XDate'. -==== tests/cases/compiler/externModule.ts (13 errors) ==== +==== tests/cases/compiler/externModule.ts (14 errors) ==== declare module { ~~~~~~~ !!! error TS2304: Cannot find name 'declare'. @@ -24,10 +25,6 @@ tests/cases/compiler/externModule.ts(30,1): error TS1128: Declaration or stateme ~ !!! error TS1005: ';' expected. export class XDate { - ~~~~~~ -!!! error TS1129: Statement expected. - ~~~~~ -!!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. public getDay():number; ~~~~~~ !!! error TS2391: Function implementation is missing or not immediately following the declaration. @@ -68,14 +65,20 @@ tests/cases/compiler/externModule.ts(30,1): error TS1128: Declaration or stateme !!! error TS2391: Function implementation is missing or not immediately following the declaration. } } - ~ -!!! error TS1128: Declaration or statement expected. var d=new XDate(); + ~~~~~ +!!! error TS2304: Cannot find name 'XDate'. d.getDay(); d=new XDate(1978,2); + ~~~~~ +!!! error TS2304: Cannot find name 'XDate'. d.getXDate(); var n=XDate.parse("3/2/2004"); + ~~~~~ +!!! error TS2304: Cannot find name 'XDate'. n=XDate.UTC(1964,2,1); + ~~~~~ +!!! error TS2304: Cannot find name 'XDate'. \ No newline at end of file diff --git a/tests/baselines/reference/externModule.js b/tests/baselines/reference/externModule.js index 719b68451ae..bf175f0eeff 100644 --- a/tests/baselines/reference/externModule.js +++ b/tests/baselines/reference/externModule.js @@ -42,13 +42,14 @@ n=XDate.UTC(1964,2,1); //// [externModule.js] declare; module; -{ } -var XDate = (function () { - function XDate() { - } - return XDate; -})(); -exports.XDate = XDate; +{ + var XDate = (function () { + function XDate() { + } + return XDate; + })(); + exports.XDate = XDate; +} var d = new XDate(); d.getDay(); d = new XDate(1978, 2); diff --git a/tests/baselines/reference/externalModuleImmutableBindings.errors.txt b/tests/baselines/reference/externalModuleImmutableBindings.errors.txt new file mode 100644 index 00000000000..8ab07c26851 --- /dev/null +++ b/tests/baselines/reference/externalModuleImmutableBindings.errors.txt @@ -0,0 +1,82 @@ +tests/cases/compiler/f2.ts(9,7): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. +tests/cases/compiler/f2.ts(19,8): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. +tests/cases/compiler/f2.ts(27,6): error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. +tests/cases/compiler/f2.ts(29,6): error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. +tests/cases/compiler/f2.ts(31,12): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. +tests/cases/compiler/f2.ts(32,12): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. +tests/cases/compiler/f2.ts(36,6): error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. +tests/cases/compiler/f2.ts(38,6): error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. +tests/cases/compiler/f2.ts(40,13): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. +tests/cases/compiler/f2.ts(41,13): error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + + +==== tests/cases/compiler/f1.ts (0 errors) ==== + export var x = 1; + +==== tests/cases/compiler/f2.ts (10 errors) ==== + + // all mutations below are illegal and should be fixed + import * as stuff from 'f1'; + + var n = 'baz'; + + stuff.x = 0; + stuff['x'] = 1; + stuff.blah = 2; + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + stuff[n] = 3; + + stuff.x++; + stuff['x']++; + stuff['blah']++; + stuff[n]++; + + (stuff.x) = 0; + (stuff['x']) = 1; + (stuff.blah) = 2; + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + (stuff[n]) = 3; + + (stuff.x)++; + (stuff['x'])++; + (stuff['blah'])++; + (stuff[n])++; + + for (stuff.x in []) {} + ~~~~~~~ +!!! error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. + for (stuff.x of []) {} + for (stuff['x'] in []) {} + ~~~~~~~~~~ +!!! error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. + for (stuff['x'] of []) {} + for (stuff.blah in []) {} + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + for (stuff.blah of []) {} + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + for (stuff[n] in []) {} + for (stuff[n] of []) {} + + for ((stuff.x) in []) {} + ~~~~~~~~~ +!!! error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. + for ((stuff.x) of []) {} + for ((stuff['x']) in []) {} + ~~~~~~~~~~~~ +!!! error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'. + for ((stuff['x']) of []) {} + for ((stuff.blah) in []) {} + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + for ((stuff.blah) of []) {} + ~~~~ +!!! error TS2339: Property 'blah' does not exist on type 'typeof "tests/cases/compiler/f1"'. + for ((stuff[n]) in []) {} + for ((stuff[n]) of []) {} + + + \ No newline at end of file diff --git a/tests/baselines/reference/externalModuleImmutableBindings.js b/tests/baselines/reference/externalModuleImmutableBindings.js new file mode 100644 index 00000000000..5e5ba6c2294 --- /dev/null +++ b/tests/baselines/reference/externalModuleImmutableBindings.js @@ -0,0 +1,107 @@ +//// [tests/cases/compiler/externalModuleImmutableBindings.ts] //// + +//// [f1.ts] +export var x = 1; + +//// [f2.ts] + +// all mutations below are illegal and should be fixed +import * as stuff from 'f1'; + +var n = 'baz'; + +stuff.x = 0; +stuff['x'] = 1; +stuff.blah = 2; +stuff[n] = 3; + +stuff.x++; +stuff['x']++; +stuff['blah']++; +stuff[n]++; + +(stuff.x) = 0; +(stuff['x']) = 1; +(stuff.blah) = 2; +(stuff[n]) = 3; + +(stuff.x)++; +(stuff['x'])++; +(stuff['blah'])++; +(stuff[n])++; + +for (stuff.x in []) {} +for (stuff.x of []) {} +for (stuff['x'] in []) {} +for (stuff['x'] of []) {} +for (stuff.blah in []) {} +for (stuff.blah of []) {} +for (stuff[n] in []) {} +for (stuff[n] of []) {} + +for ((stuff.x) in []) {} +for ((stuff.x) of []) {} +for ((stuff['x']) in []) {} +for ((stuff['x']) of []) {} +for ((stuff.blah) in []) {} +for ((stuff.blah) of []) {} +for ((stuff[n]) in []) {} +for ((stuff[n]) of []) {} + + + + +//// [f1.js] +exports.x = 1; +//// [f2.js] +// all mutations below are illegal and should be fixed +var stuff = require('f1'); +var n = 'baz'; +stuff.x = 0; +stuff['x'] = 1; +stuff.blah = 2; +stuff[n] = 3; +stuff.x++; +stuff['x']++; +stuff['blah']++; +stuff[n]++; +(stuff.x) = 0; +(stuff['x']) = 1; +(stuff.blah) = 2; +(stuff[n]) = 3; +(stuff.x)++; +(stuff['x'])++; +(stuff['blah'])++; +(stuff[n])++; +for (stuff.x in []) { } +for (var _i = 0, _a = []; _i < _a.length; _i++) { + stuff.x = _a[_i]; +} +for (stuff['x'] in []) { } +for (var _b = 0, _c = []; _b < _c.length; _b++) { + stuff['x'] = _c[_b]; +} +for (stuff.blah in []) { } +for (var _d = 0, _e = []; _d < _e.length; _d++) { + stuff.blah = _e[_d]; +} +for (stuff[n] in []) { } +for (var _f = 0, _g = []; _f < _g.length; _f++) { + stuff[n] = _g[_f]; +} +for ((stuff.x) in []) { } +for (var _h = 0, _j = []; _h < _j.length; _h++) { + (stuff.x) = _j[_h]; +} +for ((stuff['x']) in []) { } +for (var _k = 0, _l = []; _k < _l.length; _k++) { + (stuff['x']) = _l[_k]; +} +for ((stuff.blah) in []) { } +for (var _m = 0, _o = []; _m < _o.length; _m++) { + (stuff.blah) = _o[_m]; +} +for ((stuff[n]) in []) { } +for (var _p = 0, _q = []; _p < _q.length; _p++) { + (stuff[n]) = _q[_p]; +} diff --git a/tests/baselines/reference/fatarrowfunctionsErrors.js b/tests/baselines/reference/fatarrowfunctionsErrors.js index 7b7a8f30f05..2ac20f1966a 100644 --- a/tests/baselines/reference/fatarrowfunctionsErrors.js +++ b/tests/baselines/reference/fatarrowfunctionsErrors.js @@ -33,4 +33,9 @@ false ? (function () { return null; }) : null; var x1 = function () { }; var x2 = function (a) { }; var x3 = function (a) { }; -var x4 = function () { }; +var x4 = function () { + var a = []; + for (var _i = 0; _i < arguments.length; _i++) { + a[_i - 0] = arguments[_i]; + } +}; diff --git a/tests/baselines/reference/fatarrowfunctionsOptionalArgs.js b/tests/baselines/reference/fatarrowfunctionsOptionalArgs.js index 9052b894337..e6e43f8bbf4 100644 --- a/tests/baselines/reference/fatarrowfunctionsOptionalArgs.js +++ b/tests/baselines/reference/fatarrowfunctionsOptionalArgs.js @@ -351,7 +351,12 @@ false ? null : function () { return 108; }); // Function Parameters -function foo() { } +function foo() { + var arg = []; + for (var _i = 0; _i < arguments.length; _i++) { + arg[_i - 0] = arguments[_i]; + } +} foo(function (a) { return 110; }, (function (a) { return 111; }), function (a) { return 112; }, function (a) { return 113; }, function (a, b) { return 114; }, function (a) { return 115; }, function (a) { diff --git a/tests/baselines/reference/fileWithNextLine1.js b/tests/baselines/reference/fileWithNextLine1.js new file mode 100644 index 00000000000..a89c5b3e207 --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine1.js @@ -0,0 +1,9 @@ +//// [fileWithNextLine1.ts] +// Note: there is a nextline (0x85) in the string +// 0. It should be counted as a space and should not cause an error. +var v = '…'; + +//// [fileWithNextLine1.js] +// Note: there is a nextline (0x85) in the string +// 0. It should be counted as a space and should not cause an error. +var v = '…'; diff --git a/tests/baselines/reference/fileWithNextLine1.types b/tests/baselines/reference/fileWithNextLine1.types new file mode 100644 index 00000000000..721b3d6fb10 --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine1.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/fileWithNextLine1.ts === +// Note: there is a nextline (0x85) in the string +// 0. It should be counted as a space and should not cause an error. +var v = '…'; +>v : string + diff --git a/tests/baselines/reference/fileWithNextLine2.js b/tests/baselines/reference/fileWithNextLine2.js new file mode 100644 index 00000000000..439b9bd42f9 --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine2.js @@ -0,0 +1,9 @@ +//// [fileWithNextLine2.ts] +// Note: there is a nextline (0x85) char between the = and the 0. +// it should be treated like a space +var v =…0; + +//// [fileWithNextLine2.js] +// Note: there is a nextline (0x85) char between the = and the 0. +// it should be treated like a space +var v = 0; diff --git a/tests/baselines/reference/fileWithNextLine2.types b/tests/baselines/reference/fileWithNextLine2.types new file mode 100644 index 00000000000..8a6de1a4b2f --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine2.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/fileWithNextLine2.ts === +// Note: there is a nextline (0x85) char between the = and the 0. +// it should be treated like a space +var v =…0; +>v : number + diff --git a/tests/baselines/reference/fileWithNextLine3.errors.txt b/tests/baselines/reference/fileWithNextLine3.errors.txt new file mode 100644 index 00000000000..647ec722549 --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine3.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/fileWithNextLine3.ts(3,1): error TS1108: A 'return' statement can only be used within a function body. + + +==== tests/cases/compiler/fileWithNextLine3.ts (1 errors) ==== + // Note: there is a nextline (0x85) between the return and the + // 0. It should be counted as a space and should not trigger ASI + return…0; + ~~~~~~ +!!! error TS1108: A 'return' statement can only be used within a function body. \ No newline at end of file diff --git a/tests/baselines/reference/fileWithNextLine3.js b/tests/baselines/reference/fileWithNextLine3.js new file mode 100644 index 00000000000..c1d4204bcae --- /dev/null +++ b/tests/baselines/reference/fileWithNextLine3.js @@ -0,0 +1,9 @@ +//// [fileWithNextLine3.ts] +// Note: there is a nextline (0x85) between the return and the +// 0. It should be counted as a space and should not trigger ASI +return…0; + +//// [fileWithNextLine3.js] +// Note: there is a nextline (0x85) between the return and the +// 0. It should be counted as a space and should not trigger ASI +return 0; diff --git a/tests/baselines/reference/for-inStatements.js b/tests/baselines/reference/for-inStatements.js index 32e1389232d..3db07d878bf 100644 --- a/tests/baselines/reference/for-inStatements.js +++ b/tests/baselines/reference/for-inStatements.js @@ -158,4 +158,4 @@ var Color; Color[Color["Blue"] = 1] = "Blue"; })(Color || (Color = {})); for (var x in Color) { } -for (var x in 1 /* Blue */) { } +for (var x in Color.Blue) { } diff --git a/tests/baselines/reference/for-inStatementsDestructuring.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring.errors.txt new file mode 100644 index 00000000000..e540b182cf5 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts(1,10): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. + + +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts (1 errors) ==== + for (var [a, b] in []) {} + ~~~~~~ +!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsDestructuring.js b/tests/baselines/reference/for-inStatementsDestructuring.js new file mode 100644 index 00000000000..e5e00d5b3ab --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring.js @@ -0,0 +1,5 @@ +//// [for-inStatementsDestructuring.ts] +for (var [a, b] in []) {} + +//// [for-inStatementsDestructuring.js] +for (var _a = void 0, a = _a[0], b = _a[1] in []) { } diff --git a/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt new file mode 100644 index 00000000000..56d2436d4c7 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts(1,10): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. + + +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts (1 errors) ==== + for (var {a, b} in []) {} + ~~~~~~ +!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsDestructuring2.js b/tests/baselines/reference/for-inStatementsDestructuring2.js new file mode 100644 index 00000000000..41a6d30919f --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring2.js @@ -0,0 +1,5 @@ +//// [for-inStatementsDestructuring2.ts] +for (var {a, b} in []) {} + +//// [for-inStatementsDestructuring2.js] +for (var _a = void 0, a = _a.a, b = _a.b in []) { } diff --git a/tests/baselines/reference/for-inStatementsDestructuring3.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring3.errors.txt new file mode 100644 index 00000000000..e3ce65f872d --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring3.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring3.ts(2,6): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. + + +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring3.ts (1 errors) ==== + var a, b; + for ([a, b] in []) { } + ~~~~~~ +!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsDestructuring3.js b/tests/baselines/reference/for-inStatementsDestructuring3.js new file mode 100644 index 00000000000..0970740acab --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring3.js @@ -0,0 +1,7 @@ +//// [for-inStatementsDestructuring3.ts] +var a, b; +for ([a, b] in []) { } + +//// [for-inStatementsDestructuring3.js] +var a, b; +for ([a, b] in []) { } diff --git a/tests/baselines/reference/for-inStatementsDestructuring4.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring4.errors.txt new file mode 100644 index 00000000000..8d3fe2d1b53 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring4.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring4.ts(2,6): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. + + +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring4.ts (1 errors) ==== + var a, b; + for ({a, b} in []) { } + ~~~~~~ +!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsDestructuring4.js b/tests/baselines/reference/for-inStatementsDestructuring4.js new file mode 100644 index 00000000000..0cce61ac96d --- /dev/null +++ b/tests/baselines/reference/for-inStatementsDestructuring4.js @@ -0,0 +1,7 @@ +//// [for-inStatementsDestructuring4.ts] +var a, b; +for ({a, b} in []) { } + +//// [for-inStatementsDestructuring4.js] +var a, b; +for ({ a: a, b: b } in []) { } diff --git a/tests/baselines/reference/for-of1.js b/tests/baselines/reference/for-of1.js new file mode 100644 index 00000000000..9df6a96d78f --- /dev/null +++ b/tests/baselines/reference/for-of1.js @@ -0,0 +1,7 @@ +//// [for-of1.ts] +var v; +for (v of []) { } + +//// [for-of1.js] +var v; +for (v of []) { } diff --git a/tests/baselines/reference/for-of1.types b/tests/baselines/reference/for-of1.types new file mode 100644 index 00000000000..b21bb6046a7 --- /dev/null +++ b/tests/baselines/reference/for-of1.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of1.ts === +var v; +>v : any + +for (v of []) { } +>v : any +>[] : undefined[] + diff --git a/tests/baselines/reference/for-of10.errors.txt b/tests/baselines/reference/for-of10.errors.txt new file mode 100644 index 00000000000..1636f1a02d0 --- /dev/null +++ b/tests/baselines/reference/for-of10.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/for-ofStatements/for-of10.ts(2,6): error TS2322: Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of10.ts (1 errors) ==== + var v: string; + for (v of [0]) { } + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of10.js b/tests/baselines/reference/for-of10.js new file mode 100644 index 00000000000..7fd05f5479b --- /dev/null +++ b/tests/baselines/reference/for-of10.js @@ -0,0 +1,7 @@ +//// [for-of10.ts] +var v: string; +for (v of [0]) { } + +//// [for-of10.js] +var v; +for (v of [0]) { } diff --git a/tests/baselines/reference/for-of11.errors.txt b/tests/baselines/reference/for-of11.errors.txt new file mode 100644 index 00000000000..dc527e73efe --- /dev/null +++ b/tests/baselines/reference/for-of11.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of11.ts(2,6): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of11.ts (1 errors) ==== + var v: string; + for (v of [0, ""]) { } + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of11.js b/tests/baselines/reference/for-of11.js new file mode 100644 index 00000000000..055ed0039dc --- /dev/null +++ b/tests/baselines/reference/for-of11.js @@ -0,0 +1,7 @@ +//// [for-of11.ts] +var v: string; +for (v of [0, ""]) { } + +//// [for-of11.js] +var v; +for (v of [0, ""]) { } diff --git a/tests/baselines/reference/for-of12.errors.txt b/tests/baselines/reference/for-of12.errors.txt new file mode 100644 index 00000000000..f19fa5ed014 --- /dev/null +++ b/tests/baselines/reference/for-of12.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of12.ts(2,6): error TS2322: Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of12.ts (1 errors) ==== + var v: string; + for (v of [0, ""].values()) { } + ~ +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of12.js b/tests/baselines/reference/for-of12.js new file mode 100644 index 00000000000..6185ca8e331 --- /dev/null +++ b/tests/baselines/reference/for-of12.js @@ -0,0 +1,7 @@ +//// [for-of12.ts] +var v: string; +for (v of [0, ""].values()) { } + +//// [for-of12.js] +var v; +for (v of [0, ""].values()) { } diff --git a/tests/baselines/reference/for-of13.js b/tests/baselines/reference/for-of13.js new file mode 100644 index 00000000000..e66668f1736 --- /dev/null +++ b/tests/baselines/reference/for-of13.js @@ -0,0 +1,7 @@ +//// [for-of13.ts] +var v: string; +for (v of [""].values()) { } + +//// [for-of13.js] +var v; +for (v of [""].values()) { } diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types new file mode 100644 index 00000000000..4bb29c1e0ab --- /dev/null +++ b/tests/baselines/reference/for-of13.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of13.ts === +var v: string; +>v : string + +for (v of [""].values()) { } +>v : string +>[""].values() : IterableIterator +>[""].values : () => IterableIterator +>[""] : string[] +>values : () => IterableIterator + diff --git a/tests/baselines/reference/for-of14.errors.txt b/tests/baselines/reference/for-of14.errors.txt new file mode 100644 index 00000000000..5e8223381c7 --- /dev/null +++ b/tests/baselines/reference/for-of14.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/es6/for-ofStatements/for-of14.ts(2,11): error TS2488: The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of14.ts (1 errors) ==== + var v: string; + for (v of new StringIterator) { } // Should fail because the iterator is not iterable + ~~~~~~~~~~~~~~~~~~ +!!! error TS2488: The right-hand side of a 'for...of' statement must have a '[Symbol.iterator]()' method that returns an iterator. + + class StringIterator { + next() { + return ""; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of14.js b/tests/baselines/reference/for-of14.js new file mode 100644 index 00000000000..42832f8e58e --- /dev/null +++ b/tests/baselines/reference/for-of14.js @@ -0,0 +1,18 @@ +//// [for-of14.ts] +var v: string; +for (v of new StringIterator) { } // Should fail because the iterator is not iterable + +class StringIterator { + next() { + return ""; + } +} + +//// [for-of14.js] +var v; +for (v of new StringIterator) { } // Should fail because the iterator is not iterable +class StringIterator { + next() { + return ""; + } +} diff --git a/tests/baselines/reference/for-of15.errors.txt b/tests/baselines/reference/for-of15.errors.txt new file mode 100644 index 00000000000..20a4abe4bd0 --- /dev/null +++ b/tests/baselines/reference/for-of15.errors.txt @@ -0,0 +1,17 @@ +tests/cases/conformance/es6/for-ofStatements/for-of15.ts(2,11): error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of15.ts (1 errors) ==== + var v: string; + for (v of new StringIterator) { } // Should fail + ~~~~~~~~~~~~~~~~~~ +!!! error TS2490: The type returned by the 'next()' method of an iterator must have a 'value' property. + + class StringIterator { + next() { + return ""; + } + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of15.js b/tests/baselines/reference/for-of15.js new file mode 100644 index 00000000000..62232745c8c --- /dev/null +++ b/tests/baselines/reference/for-of15.js @@ -0,0 +1,24 @@ +//// [for-of15.ts] +var v: string; +for (v of new StringIterator) { } // Should fail + +class StringIterator { + next() { + return ""; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of15.js] +var v; +for (v of new StringIterator) { } // Should fail +class StringIterator { + next() { + return ""; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of16.errors.txt b/tests/baselines/reference/for-of16.errors.txt new file mode 100644 index 00000000000..e3ecca1a256 --- /dev/null +++ b/tests/baselines/reference/for-of16.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/es6/for-ofStatements/for-of16.ts(2,11): error TS2489: The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of16.ts (1 errors) ==== + var v: string; + for (v of new StringIterator) { } // Should fail + ~~~~~~~~~~~~~~~~~~ +!!! error TS2489: The iterator returned by the right-hand side of a 'for...of' statement must have a 'next()' method. + + class StringIterator { + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of16.js b/tests/baselines/reference/for-of16.js new file mode 100644 index 00000000000..974be239fd7 --- /dev/null +++ b/tests/baselines/reference/for-of16.js @@ -0,0 +1,18 @@ +//// [for-of16.ts] +var v: string; +for (v of new StringIterator) { } // Should fail + +class StringIterator { + [Symbol.iterator]() { + return this; + } +} + +//// [for-of16.js] +var v; +for (v of new StringIterator) { } // Should fail +class StringIterator { + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of17.errors.txt b/tests/baselines/reference/for-of17.errors.txt new file mode 100644 index 00000000000..dfdeb8db007 --- /dev/null +++ b/tests/baselines/reference/for-of17.errors.txt @@ -0,0 +1,20 @@ +tests/cases/conformance/es6/for-ofStatements/for-of17.ts(2,6): error TS2322: Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of17.ts (1 errors) ==== + var v: string; + for (v of new NumberIterator) { } // Should succeed + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + + class NumberIterator { + next() { + return { + value: 0, + done: false + }; + } + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of17.js b/tests/baselines/reference/for-of17.js new file mode 100644 index 00000000000..a3927647005 --- /dev/null +++ b/tests/baselines/reference/for-of17.js @@ -0,0 +1,30 @@ +//// [for-of17.ts] +var v: string; +for (v of new NumberIterator) { } // Should succeed + +class NumberIterator { + next() { + return { + value: 0, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of17.js] +var v; +for (v of new NumberIterator) { } // Should succeed +class NumberIterator { + next() { + return { + value: 0, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of18.js b/tests/baselines/reference/for-of18.js new file mode 100644 index 00000000000..c31e6b6e8ca --- /dev/null +++ b/tests/baselines/reference/for-of18.js @@ -0,0 +1,30 @@ +//// [for-of18.ts] +var v: string; +for (v of new StringIterator) { } // Should succeed + +class StringIterator { + next() { + return { + value: "", + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of18.js] +var v; +for (v of new StringIterator) { } // Should succeed +class StringIterator { + next() { + return { + value: "", + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of18.types b/tests/baselines/reference/for-of18.types new file mode 100644 index 00000000000..9ade9359475 --- /dev/null +++ b/tests/baselines/reference/for-of18.types @@ -0,0 +1,35 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of18.ts === +var v: string; +>v : string + +for (v of new StringIterator) { } // Should succeed +>v : string +>new StringIterator : StringIterator +>StringIterator : typeof StringIterator + +class StringIterator { +>StringIterator : StringIterator + + next() { +>next : () => { value: string; done: boolean; } + + return { +>{ value: "", done: false } : { value: string; done: boolean; } + + value: "", +>value : string + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : StringIterator + } +} diff --git a/tests/baselines/reference/for-of19.js b/tests/baselines/reference/for-of19.js new file mode 100644 index 00000000000..d0f95caa1e2 --- /dev/null +++ b/tests/baselines/reference/for-of19.js @@ -0,0 +1,35 @@ +//// [for-of19.ts] +for (var v of new FooIterator) { + v; +} + +class Foo { } +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of19.js] +for (var v of new FooIterator) { + v; +} +class Foo { +} +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of19.types b/tests/baselines/reference/for-of19.types new file mode 100644 index 00000000000..49172b09d83 --- /dev/null +++ b/tests/baselines/reference/for-of19.types @@ -0,0 +1,41 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of19.ts === +for (var v of new FooIterator) { +>v : Foo +>new FooIterator : FooIterator +>FooIterator : typeof FooIterator + + v; +>v : Foo +} + +class Foo { } +>Foo : Foo + +class FooIterator { +>FooIterator : FooIterator + + next() { +>next : () => { value: Foo; done: boolean; } + + return { +>{ value: new Foo, done: false } : { value: Foo; done: boolean; } + + value: new Foo, +>value : Foo +>new Foo : Foo +>Foo : typeof Foo + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : FooIterator + } +} diff --git a/tests/baselines/reference/for-of2.errors.txt b/tests/baselines/reference/for-of2.errors.txt new file mode 100644 index 00000000000..0b5133cde13 --- /dev/null +++ b/tests/baselines/reference/for-of2.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/es6/for-ofStatements/for-of2.ts(1,7): error TS1155: 'const' declarations must be initialized +tests/cases/conformance/es6/for-ofStatements/for-of2.ts(2,6): error TS2485: The left-hand side of a 'for...of' statement cannot be a previously defined constant. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of2.ts (2 errors) ==== + const v; + ~ +!!! error TS1155: 'const' declarations must be initialized + for (v of []) { } + ~ +!!! error TS2485: The left-hand side of a 'for...of' statement cannot be a previously defined constant. \ No newline at end of file diff --git a/tests/baselines/reference/for-of2.js b/tests/baselines/reference/for-of2.js new file mode 100644 index 00000000000..d7eceb7c49e --- /dev/null +++ b/tests/baselines/reference/for-of2.js @@ -0,0 +1,7 @@ +//// [for-of2.ts] +const v; +for (v of []) { } + +//// [for-of2.js] +const v; +for (v of []) { } diff --git a/tests/baselines/reference/for-of20.js b/tests/baselines/reference/for-of20.js new file mode 100644 index 00000000000..c098abd2f73 --- /dev/null +++ b/tests/baselines/reference/for-of20.js @@ -0,0 +1,35 @@ +//// [for-of20.ts] +for (let v of new FooIterator) { + v; +} + +class Foo { } +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of20.js] +for (let v of new FooIterator) { + v; +} +class Foo { +} +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of20.types b/tests/baselines/reference/for-of20.types new file mode 100644 index 00000000000..e967869fbd0 --- /dev/null +++ b/tests/baselines/reference/for-of20.types @@ -0,0 +1,41 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of20.ts === +for (let v of new FooIterator) { +>v : Foo +>new FooIterator : FooIterator +>FooIterator : typeof FooIterator + + v; +>v : Foo +} + +class Foo { } +>Foo : Foo + +class FooIterator { +>FooIterator : FooIterator + + next() { +>next : () => { value: Foo; done: boolean; } + + return { +>{ value: new Foo, done: false } : { value: Foo; done: boolean; } + + value: new Foo, +>value : Foo +>new Foo : Foo +>Foo : typeof Foo + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : FooIterator + } +} diff --git a/tests/baselines/reference/for-of21.js b/tests/baselines/reference/for-of21.js new file mode 100644 index 00000000000..27da28e3b4f --- /dev/null +++ b/tests/baselines/reference/for-of21.js @@ -0,0 +1,35 @@ +//// [for-of21.ts] +for (const v of new FooIterator) { + v; +} + +class Foo { } +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of21.js] +for (const v of new FooIterator) { + v; +} +class Foo { +} +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of21.types b/tests/baselines/reference/for-of21.types new file mode 100644 index 00000000000..362f92577e2 --- /dev/null +++ b/tests/baselines/reference/for-of21.types @@ -0,0 +1,41 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of21.ts === +for (const v of new FooIterator) { +>v : Foo +>new FooIterator : FooIterator +>FooIterator : typeof FooIterator + + v; +>v : Foo +} + +class Foo { } +>Foo : Foo + +class FooIterator { +>FooIterator : FooIterator + + next() { +>next : () => { value: Foo; done: boolean; } + + return { +>{ value: new Foo, done: false } : { value: Foo; done: boolean; } + + value: new Foo, +>value : Foo +>new Foo : Foo +>Foo : typeof Foo + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : FooIterator + } +} diff --git a/tests/baselines/reference/for-of22.js b/tests/baselines/reference/for-of22.js new file mode 100644 index 00000000000..886e8dba7c3 --- /dev/null +++ b/tests/baselines/reference/for-of22.js @@ -0,0 +1,36 @@ +//// [for-of22.ts] +v; +for (var v of new FooIterator) { + +} + +class Foo { } +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of22.js] +v; +for (var v of new FooIterator) { +} +class Foo { +} +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of22.types b/tests/baselines/reference/for-of22.types new file mode 100644 index 00000000000..bb2d5569bfc --- /dev/null +++ b/tests/baselines/reference/for-of22.types @@ -0,0 +1,42 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of22.ts === +v; +>v : Foo + +for (var v of new FooIterator) { +>v : Foo +>new FooIterator : FooIterator +>FooIterator : typeof FooIterator + +} + +class Foo { } +>Foo : Foo + +class FooIterator { +>FooIterator : FooIterator + + next() { +>next : () => { value: Foo; done: boolean; } + + return { +>{ value: new Foo, done: false } : { value: Foo; done: boolean; } + + value: new Foo, +>value : Foo +>new Foo : Foo +>Foo : typeof Foo + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : FooIterator + } +} diff --git a/tests/baselines/reference/for-of23.js b/tests/baselines/reference/for-of23.js new file mode 100644 index 00000000000..f5649128c11 --- /dev/null +++ b/tests/baselines/reference/for-of23.js @@ -0,0 +1,35 @@ +//// [for-of23.ts] +for (const v of new FooIterator) { + const v = 0; // new scope +} + +class Foo { } +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of23.js] +for (const v of new FooIterator) { + const v = 0; // new scope +} +class Foo { +} +class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of23.types b/tests/baselines/reference/for-of23.types new file mode 100644 index 00000000000..b490616edc8 --- /dev/null +++ b/tests/baselines/reference/for-of23.types @@ -0,0 +1,41 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of23.ts === +for (const v of new FooIterator) { +>v : Foo +>new FooIterator : FooIterator +>FooIterator : typeof FooIterator + + const v = 0; // new scope +>v : number +} + +class Foo { } +>Foo : Foo + +class FooIterator { +>FooIterator : FooIterator + + next() { +>next : () => { value: Foo; done: boolean; } + + return { +>{ value: new Foo, done: false } : { value: Foo; done: boolean; } + + value: new Foo, +>value : Foo +>new Foo : Foo +>Foo : typeof Foo + + done: false +>done : boolean + + }; + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : FooIterator + } +} diff --git a/tests/baselines/reference/for-of24.js b/tests/baselines/reference/for-of24.js new file mode 100644 index 00000000000..b4918519603 --- /dev/null +++ b/tests/baselines/reference/for-of24.js @@ -0,0 +1,8 @@ +//// [for-of24.ts] +var x: any; +for (var v of x) { } + + +//// [for-of24.js] +var x; +for (var v of x) { } diff --git a/tests/baselines/reference/for-of24.types b/tests/baselines/reference/for-of24.types new file mode 100644 index 00000000000..dc27cc32e21 --- /dev/null +++ b/tests/baselines/reference/for-of24.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of24.ts === +var x: any; +>x : any + +for (var v of x) { } +>v : any +>x : any + diff --git a/tests/baselines/reference/for-of25.js b/tests/baselines/reference/for-of25.js new file mode 100644 index 00000000000..5715f6e8a3a --- /dev/null +++ b/tests/baselines/reference/for-of25.js @@ -0,0 +1,18 @@ +//// [for-of25.ts] +var x: any; +for (var v of new StringIterator) { } + +class StringIterator { + [Symbol.iterator]() { + return x; + } +} + +//// [for-of25.js] +var x; +for (var v of new StringIterator) { } +class StringIterator { + [Symbol.iterator]() { + return x; + } +} diff --git a/tests/baselines/reference/for-of25.types b/tests/baselines/reference/for-of25.types new file mode 100644 index 00000000000..c4d6b32aebc --- /dev/null +++ b/tests/baselines/reference/for-of25.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of25.ts === +var x: any; +>x : any + +for (var v of new StringIterator) { } +>v : any +>new StringIterator : StringIterator +>StringIterator : typeof StringIterator + +class StringIterator { +>StringIterator : StringIterator + + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return x; +>x : any + } +} diff --git a/tests/baselines/reference/for-of26.js b/tests/baselines/reference/for-of26.js new file mode 100644 index 00000000000..33319f50efa --- /dev/null +++ b/tests/baselines/reference/for-of26.js @@ -0,0 +1,24 @@ +//// [for-of26.ts] +var x: any; +for (var v of new StringIterator) { } + +class StringIterator { + next() { + return x; + } + [Symbol.iterator]() { + return this; + } +} + +//// [for-of26.js] +var x; +for (var v of new StringIterator) { } +class StringIterator { + next() { + return x; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of26.types b/tests/baselines/reference/for-of26.types new file mode 100644 index 00000000000..d2608fbf154 --- /dev/null +++ b/tests/baselines/reference/for-of26.types @@ -0,0 +1,27 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of26.ts === +var x: any; +>x : any + +for (var v of new StringIterator) { } +>v : any +>new StringIterator : StringIterator +>StringIterator : typeof StringIterator + +class StringIterator { +>StringIterator : StringIterator + + next() { +>next : () => any + + return x; +>x : any + } + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : StringIterator + } +} diff --git a/tests/baselines/reference/for-of27.js b/tests/baselines/reference/for-of27.js new file mode 100644 index 00000000000..1ac3a1dfc42 --- /dev/null +++ b/tests/baselines/reference/for-of27.js @@ -0,0 +1,11 @@ +//// [for-of27.ts] +for (var v of new StringIterator) { } + +class StringIterator { + [Symbol.iterator]: any; +} + +//// [for-of27.js] +for (var v of new StringIterator) { } +class StringIterator { +} diff --git a/tests/baselines/reference/for-of27.types b/tests/baselines/reference/for-of27.types new file mode 100644 index 00000000000..8e9130ce272 --- /dev/null +++ b/tests/baselines/reference/for-of27.types @@ -0,0 +1,14 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of27.ts === +for (var v of new StringIterator) { } +>v : any +>new StringIterator : StringIterator +>StringIterator : typeof StringIterator + +class StringIterator { +>StringIterator : StringIterator + + [Symbol.iterator]: any; +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol +} diff --git a/tests/baselines/reference/for-of28.js b/tests/baselines/reference/for-of28.js new file mode 100644 index 00000000000..78e86774813 --- /dev/null +++ b/tests/baselines/reference/for-of28.js @@ -0,0 +1,17 @@ +//// [for-of28.ts] +for (var v of new StringIterator) { } + +class StringIterator { + next: any; + [Symbol.iterator]() { + return this; + } +} + +//// [for-of28.js] +for (var v of new StringIterator) { } +class StringIterator { + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of28.types b/tests/baselines/reference/for-of28.types new file mode 100644 index 00000000000..91b77a55a4d --- /dev/null +++ b/tests/baselines/reference/for-of28.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of28.ts === +for (var v of new StringIterator) { } +>v : any +>new StringIterator : StringIterator +>StringIterator : typeof StringIterator + +class StringIterator { +>StringIterator : StringIterator + + next: any; +>next : any + + [Symbol.iterator]() { +>Symbol.iterator : symbol +>Symbol : SymbolConstructor +>iterator : symbol + + return this; +>this : StringIterator + } +} diff --git a/tests/baselines/reference/for-of29.errors.txt b/tests/baselines/reference/for-of29.errors.txt new file mode 100644 index 00000000000..748fcf49050 --- /dev/null +++ b/tests/baselines/reference/for-of29.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/es6/for-ofStatements/for-of29.ts(5,15): error TS2322: Type '{ [Symbol.iterator]?(): Iterator; }' is not assignable to type 'Iterable'. + Property '[Symbol.iterator]' is optional in type '{ [Symbol.iterator]?(): Iterator; }' but required in type 'Iterable'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of29.ts (1 errors) ==== + var iterableWithOptionalIterator: { + [Symbol.iterator]?(): Iterator + }; + + for (var v of iterableWithOptionalIterator) { } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type '{ [Symbol.iterator]?(): Iterator; }' is not assignable to type 'Iterable'. +!!! error TS2322: Property '[Symbol.iterator]' is optional in type '{ [Symbol.iterator]?(): Iterator; }' but required in type 'Iterable'. + \ No newline at end of file diff --git a/tests/baselines/reference/for-of29.js b/tests/baselines/reference/for-of29.js new file mode 100644 index 00000000000..450cafbde85 --- /dev/null +++ b/tests/baselines/reference/for-of29.js @@ -0,0 +1,11 @@ +//// [for-of29.ts] +var iterableWithOptionalIterator: { + [Symbol.iterator]?(): Iterator +}; + +for (var v of iterableWithOptionalIterator) { } + + +//// [for-of29.js] +var iterableWithOptionalIterator; +for (var v of iterableWithOptionalIterator) { } diff --git a/tests/baselines/reference/for-of3.errors.txt b/tests/baselines/reference/for-of3.errors.txt new file mode 100644 index 00000000000..ba8e3e4a5c6 --- /dev/null +++ b/tests/baselines/reference/for-of3.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/for-ofStatements/for-of3.ts(2,6): error TS2487: Invalid left-hand side in 'for...of' statement. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of3.ts (1 errors) ==== + var v; + for (v++ of []) { } + ~~~ +!!! error TS2487: Invalid left-hand side in 'for...of' statement. \ No newline at end of file diff --git a/tests/baselines/reference/for-of3.js b/tests/baselines/reference/for-of3.js new file mode 100644 index 00000000000..7ef27187702 --- /dev/null +++ b/tests/baselines/reference/for-of3.js @@ -0,0 +1,7 @@ +//// [for-of3.ts] +var v; +for (v++ of []) { } + +//// [for-of3.js] +var v; +for (v++ of []) { } diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt new file mode 100644 index 00000000000..6434b5294d5 --- /dev/null +++ b/tests/baselines/reference/for-of30.errors.txt @@ -0,0 +1,32 @@ +tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '() => StringIterator' is not assignable to type '() => Iterator'. + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'return' are incompatible. + Type 'number' is not assignable to type '(value?: any) => IteratorResult'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ==== + for (var v of new StringIterator) { } + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'return' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. + + class StringIterator { + next() { + return { + done: false, + value: "" + } + } + + return = 0; + + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of30.js b/tests/baselines/reference/for-of30.js new file mode 100644 index 00000000000..37316774c95 --- /dev/null +++ b/tests/baselines/reference/for-of30.js @@ -0,0 +1,34 @@ +//// [for-of30.ts] +for (var v of new StringIterator) { } + +class StringIterator { + next() { + return { + done: false, + value: "" + } + } + + return = 0; + + [Symbol.iterator]() { + return this; + } +} + +//// [for-of30.js] +for (var v of new StringIterator) { } +class StringIterator { + constructor() { + this.return = 0; + } + next() { + return { + done: false, + value: "" + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of31.errors.txt b/tests/baselines/reference/for-of31.errors.txt new file mode 100644 index 00000000000..74afff00e99 --- /dev/null +++ b/tests/baselines/reference/for-of31.errors.txt @@ -0,0 +1,34 @@ +tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '() => StringIterator' is not assignable to type '() => Iterator'. + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '() => { value: string; }' is not assignable to type '() => IteratorResult'. + Type '{ value: string; }' is not assignable to type 'IteratorResult'. + Property 'done' is missing in type '{ value: string; }'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of31.ts (1 errors) ==== + for (var v of new StringIterator) { } + ~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '() => { value: string; }' is not assignable to type '() => IteratorResult'. +!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'. +!!! error TS2322: Property 'done' is missing in type '{ value: string; }'. + + class StringIterator { + next() { + return { + // no done property + value: "" + } + } + + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of31.js b/tests/baselines/reference/for-of31.js new file mode 100644 index 00000000000..a92e827b91e --- /dev/null +++ b/tests/baselines/reference/for-of31.js @@ -0,0 +1,29 @@ +//// [for-of31.ts] +for (var v of new StringIterator) { } + +class StringIterator { + next() { + return { + // no done property + value: "" + } + } + + [Symbol.iterator]() { + return this; + } +} + +//// [for-of31.js] +for (var v of new StringIterator) { } +class StringIterator { + next() { + return { + // no done property + value: "" + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of32.errors.txt b/tests/baselines/reference/for-of32.errors.txt new file mode 100644 index 00000000000..4b139d386c0 --- /dev/null +++ b/tests/baselines/reference/for-of32.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/es6/for-ofStatements/for-of32.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of32.ts (1 errors) ==== + for (var v of v) { } + ~ +!!! error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. \ No newline at end of file diff --git a/tests/baselines/reference/for-of32.js b/tests/baselines/reference/for-of32.js new file mode 100644 index 00000000000..d25d16fbebe --- /dev/null +++ b/tests/baselines/reference/for-of32.js @@ -0,0 +1,5 @@ +//// [for-of32.ts] +for (var v of v) { } + +//// [for-of32.js] +for (var v of v) { } diff --git a/tests/baselines/reference/for-of33.errors.txt b/tests/baselines/reference/for-of33.errors.txt new file mode 100644 index 00000000000..1c631042d7d --- /dev/null +++ b/tests/baselines/reference/for-of33.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/es6/for-ofStatements/for-of33.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of33.ts (1 errors) ==== + for (var v of new StringIterator) { } + ~ +!!! error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + class StringIterator { + [Symbol.iterator]() { + return v; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of33.js b/tests/baselines/reference/for-of33.js new file mode 100644 index 00000000000..b63aeedf774 --- /dev/null +++ b/tests/baselines/reference/for-of33.js @@ -0,0 +1,16 @@ +//// [for-of33.ts] +for (var v of new StringIterator) { } + +class StringIterator { + [Symbol.iterator]() { + return v; + } +} + +//// [for-of33.js] +for (var v of new StringIterator) { } +class StringIterator { + [Symbol.iterator]() { + return v; + } +} diff --git a/tests/baselines/reference/for-of34.errors.txt b/tests/baselines/reference/for-of34.errors.txt new file mode 100644 index 00000000000..994302db88b --- /dev/null +++ b/tests/baselines/reference/for-of34.errors.txt @@ -0,0 +1,17 @@ +tests/cases/conformance/es6/for-ofStatements/for-of34.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of34.ts (1 errors) ==== + for (var v of new StringIterator) { } + ~ +!!! error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + class StringIterator { + next() { + return v; + } + + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of34.js b/tests/baselines/reference/for-of34.js new file mode 100644 index 00000000000..f61f04ea955 --- /dev/null +++ b/tests/baselines/reference/for-of34.js @@ -0,0 +1,23 @@ +//// [for-of34.ts] +for (var v of new StringIterator) { } + +class StringIterator { + next() { + return v; + } + + [Symbol.iterator]() { + return this; + } +} + +//// [for-of34.js] +for (var v of new StringIterator) { } +class StringIterator { + next() { + return v; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of35.errors.txt b/tests/baselines/reference/for-of35.errors.txt new file mode 100644 index 00000000000..f83b6d2ec3c --- /dev/null +++ b/tests/baselines/reference/for-of35.errors.txt @@ -0,0 +1,20 @@ +tests/cases/conformance/es6/for-ofStatements/for-of35.ts(1,10): error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of35.ts (1 errors) ==== + for (var v of new StringIterator) { } + ~ +!!! error TS7022: 'v' implicitly has type 'any' because it is does not have a type annotation and is referenced directly or indirectly in its own initializer. + + class StringIterator { + next() { + return { + done: true, + value: v + } + } + + [Symbol.iterator]() { + return this; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of35.js b/tests/baselines/reference/for-of35.js new file mode 100644 index 00000000000..c7d7c5890dd --- /dev/null +++ b/tests/baselines/reference/for-of35.js @@ -0,0 +1,29 @@ +//// [for-of35.ts] +for (var v of new StringIterator) { } + +class StringIterator { + next() { + return { + done: true, + value: v + } + } + + [Symbol.iterator]() { + return this; + } +} + +//// [for-of35.js] +for (var v of new StringIterator) { } +class StringIterator { + next() { + return { + done: true, + value: v + }; + } + [Symbol.iterator]() { + return this; + } +} diff --git a/tests/baselines/reference/for-of36.js b/tests/baselines/reference/for-of36.js new file mode 100644 index 00000000000..14523695151 --- /dev/null +++ b/tests/baselines/reference/for-of36.js @@ -0,0 +1,11 @@ +//// [for-of36.ts] +var tuple: [string, boolean] = ["", true]; +for (var v of tuple) { + v; +} + +//// [for-of36.js] +var tuple = ["", true]; +for (var v of tuple) { + v; +} diff --git a/tests/baselines/reference/for-of36.types b/tests/baselines/reference/for-of36.types new file mode 100644 index 00000000000..da03367ba5d --- /dev/null +++ b/tests/baselines/reference/for-of36.types @@ -0,0 +1,12 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of36.ts === +var tuple: [string, boolean] = ["", true]; +>tuple : [string, boolean] +>["", true] : [string, boolean] + +for (var v of tuple) { +>v : string | boolean +>tuple : [string, boolean] + + v; +>v : string | boolean +} diff --git a/tests/baselines/reference/for-of37.js b/tests/baselines/reference/for-of37.js new file mode 100644 index 00000000000..472193e6cb5 --- /dev/null +++ b/tests/baselines/reference/for-of37.js @@ -0,0 +1,11 @@ +//// [for-of37.ts] +var map = new Map([["", true]]); +for (var v of map) { + v; +} + +//// [for-of37.js] +var map = new Map([["", true]]); +for (var v of map) { + v; +} diff --git a/tests/baselines/reference/for-of37.types b/tests/baselines/reference/for-of37.types new file mode 100644 index 00000000000..f137db79af0 --- /dev/null +++ b/tests/baselines/reference/for-of37.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of37.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (var v of map) { +>v : [string, boolean] +>map : Map + + v; +>v : [string, boolean] +} diff --git a/tests/baselines/reference/for-of38.js b/tests/baselines/reference/for-of38.js new file mode 100644 index 00000000000..1f0ac09682e --- /dev/null +++ b/tests/baselines/reference/for-of38.js @@ -0,0 +1,13 @@ +//// [for-of38.ts] +var map = new Map([["", true]]); +for (var [k, v] of map) { + k; + v; +} + +//// [for-of38.js] +var map = new Map([["", true]]); +for (var [k, v] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of38.types b/tests/baselines/reference/for-of38.types new file mode 100644 index 00000000000..cdd1e05dd7e --- /dev/null +++ b/tests/baselines/reference/for-of38.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of38.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (var [k, v] of map) { +>k : string +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of39.errors.txt b/tests/baselines/reference/for-of39.errors.txt new file mode 100644 index 00000000000..48db183a58c --- /dev/null +++ b/tests/baselines/reference/for-of39.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/es6/for-ofStatements/for-of39.ts(1,15): error TS2453: The type argument for type parameter 'V' cannot be inferred from the usage. Consider specifying the type arguments explicitly. + Type argument candidate 'boolean' is not a valid type argument because it is not a supertype of candidate 'number'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of39.ts (1 errors) ==== + var map = new Map([["", true], ["", 0]]); + ~~~ +!!! error TS2453: The type argument for type parameter 'V' cannot be inferred from the usage. Consider specifying the type arguments explicitly. +!!! error TS2453: Type argument candidate 'boolean' is not a valid type argument because it is not a supertype of candidate 'number'. + for (var [k, v] of map) { + k; + v; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of39.js b/tests/baselines/reference/for-of39.js new file mode 100644 index 00000000000..91dbc56c0ab --- /dev/null +++ b/tests/baselines/reference/for-of39.js @@ -0,0 +1,13 @@ +//// [for-of39.ts] +var map = new Map([["", true], ["", 0]]); +for (var [k, v] of map) { + k; + v; +} + +//// [for-of39.js] +var map = new Map([["", true], ["", 0]]); +for (var [k, v] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of4.js b/tests/baselines/reference/for-of4.js new file mode 100644 index 00000000000..147619d2fe2 --- /dev/null +++ b/tests/baselines/reference/for-of4.js @@ -0,0 +1,9 @@ +//// [for-of4.ts] +for (var v of [0]) { + v; +} + +//// [for-of4.js] +for (var v of [0]) { + v; +} diff --git a/tests/baselines/reference/for-of4.types b/tests/baselines/reference/for-of4.types new file mode 100644 index 00000000000..2076fae84fc --- /dev/null +++ b/tests/baselines/reference/for-of4.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of4.ts === +for (var v of [0]) { +>v : number +>[0] : number[] + + v; +>v : number +} diff --git a/tests/baselines/reference/for-of40.js b/tests/baselines/reference/for-of40.js new file mode 100644 index 00000000000..243f81097db --- /dev/null +++ b/tests/baselines/reference/for-of40.js @@ -0,0 +1,13 @@ +//// [for-of40.ts] +var map = new Map([["", true]]); +for (var [k = "", v = false] of map) { + k; + v; +} + +//// [for-of40.js] +var map = new Map([["", true]]); +for (var [k = "", v = false] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of40.types b/tests/baselines/reference/for-of40.types new file mode 100644 index 00000000000..c0fe7cbbc02 --- /dev/null +++ b/tests/baselines/reference/for-of40.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of40.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (var [k = "", v = false] of map) { +>k : string +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of41.js b/tests/baselines/reference/for-of41.js new file mode 100644 index 00000000000..0fa380c53c4 --- /dev/null +++ b/tests/baselines/reference/for-of41.js @@ -0,0 +1,13 @@ +//// [for-of41.ts] +var array = [{x: [0], y: {p: ""}}] +for (var {x: [a], y: {p}} of array) { + a; + p; +} + +//// [for-of41.js] +var array = [{ x: [0], y: { p: "" } }]; +for (var { x: [a], y: { p } } of array) { + a; + p; +} diff --git a/tests/baselines/reference/for-of41.types b/tests/baselines/reference/for-of41.types new file mode 100644 index 00000000000..54e58aa1ec7 --- /dev/null +++ b/tests/baselines/reference/for-of41.types @@ -0,0 +1,24 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of41.ts === +var array = [{x: [0], y: {p: ""}}] +>array : { x: number[]; y: { p: string; }; }[] +>[{x: [0], y: {p: ""}}] : { x: number[]; y: { p: string; }; }[] +>{x: [0], y: {p: ""}} : { x: number[]; y: { p: string; }; } +>x : number[] +>[0] : number[] +>y : { p: string; } +>{p: ""} : { p: string; } +>p : string + +for (var {x: [a], y: {p}} of array) { +>x : unknown +>a : number +>y : unknown +>p : string +>array : { x: number[]; y: { p: string; }; }[] + + a; +>a : number + + p; +>p : string +} diff --git a/tests/baselines/reference/for-of42.js b/tests/baselines/reference/for-of42.js new file mode 100644 index 00000000000..1fa9219df47 --- /dev/null +++ b/tests/baselines/reference/for-of42.js @@ -0,0 +1,13 @@ +//// [for-of42.ts] +var array = [{ x: "", y: 0 }] +for (var {x: a, y: b} of array) { + a; + b; +} + +//// [for-of42.js] +var array = [{ x: "", y: 0 }]; +for (var { x: a, y: b } of array) { + a; + b; +} diff --git a/tests/baselines/reference/for-of42.types b/tests/baselines/reference/for-of42.types new file mode 100644 index 00000000000..1a819452770 --- /dev/null +++ b/tests/baselines/reference/for-of42.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of42.ts === +var array = [{ x: "", y: 0 }] +>array : { x: string; y: number; }[] +>[{ x: "", y: 0 }] : { x: string; y: number; }[] +>{ x: "", y: 0 } : { x: string; y: number; } +>x : string +>y : number + +for (var {x: a, y: b} of array) { +>x : unknown +>a : string +>y : unknown +>b : number +>array : { x: string; y: number; }[] + + a; +>a : string + + b; +>b : number +} diff --git a/tests/baselines/reference/for-of43.errors.txt b/tests/baselines/reference/for-of43.errors.txt new file mode 100644 index 00000000000..c5790278e53 --- /dev/null +++ b/tests/baselines/reference/for-of43.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/es6/for-ofStatements/for-of43.ts(2,25): error TS2322: Type 'boolean' is not assignable to type 'number'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of43.ts (1 errors) ==== + var array = [{ x: "", y: 0 }] + for (var {x: a = "", y: b = true} of array) { + ~ +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. + a; + b; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of43.js b/tests/baselines/reference/for-of43.js new file mode 100644 index 00000000000..de3b4fcd9b0 --- /dev/null +++ b/tests/baselines/reference/for-of43.js @@ -0,0 +1,13 @@ +//// [for-of43.ts] +var array = [{ x: "", y: 0 }] +for (var {x: a = "", y: b = true} of array) { + a; + b; +} + +//// [for-of43.js] +var array = [{ x: "", y: 0 }]; +for (var { x: a = "", y: b = true } of array) { + a; + b; +} diff --git a/tests/baselines/reference/for-of44.js b/tests/baselines/reference/for-of44.js new file mode 100644 index 00000000000..087485ed73f --- /dev/null +++ b/tests/baselines/reference/for-of44.js @@ -0,0 +1,13 @@ +//// [for-of44.ts] +var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]] +for (var [num, strBoolSym] of array) { + num; + strBoolSym; +} + +//// [for-of44.js] +var array = [[0, ""], [0, true], [1, Symbol()]]; +for (var [num, strBoolSym] of array) { + num; + strBoolSym; +} diff --git a/tests/baselines/reference/for-of44.types b/tests/baselines/reference/for-of44.types new file mode 100644 index 00000000000..078b49bd309 --- /dev/null +++ b/tests/baselines/reference/for-of44.types @@ -0,0 +1,21 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of44.ts === +var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symbol()]] +>array : [number, string | boolean | symbol][] +>[[0, ""], [0, true], [1, Symbol()]] : ([number, string] | [number, boolean] | [number, symbol])[] +>[0, ""] : [number, string] +>[0, true] : [number, boolean] +>[1, Symbol()] : [number, symbol] +>Symbol() : symbol +>Symbol : SymbolConstructor + +for (var [num, strBoolSym] of array) { +>num : number +>strBoolSym : string | boolean | symbol +>array : [number, string | boolean | symbol][] + + num; +>num : number + + strBoolSym; +>strBoolSym : string | boolean | symbol +} diff --git a/tests/baselines/reference/for-of45.js b/tests/baselines/reference/for-of45.js new file mode 100644 index 00000000000..1222b2dcdd5 --- /dev/null +++ b/tests/baselines/reference/for-of45.js @@ -0,0 +1,15 @@ +//// [for-of45.ts] +var k: string, v: boolean; +var map = new Map([["", true]]); +for ([k = "", v = false] of map) { + k; + v; +} + +//// [for-of45.js] +var k, v; +var map = new Map([["", true]]); +for ([k = "", v = false] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of45.types b/tests/baselines/reference/for-of45.types new file mode 100644 index 00000000000..8ac4b9fa7e9 --- /dev/null +++ b/tests/baselines/reference/for-of45.types @@ -0,0 +1,26 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of45.ts === +var k: string, v: boolean; +>k : string +>v : boolean + +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for ([k = "", v = false] of map) { +>[k = "", v = false] : (string | boolean)[] +>k = "" : string +>k : string +>v = false : boolean +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of46.errors.txt b/tests/baselines/reference/for-of46.errors.txt new file mode 100644 index 00000000000..13685b122ca --- /dev/null +++ b/tests/baselines/reference/for-of46.errors.txt @@ -0,0 +1,15 @@ +tests/cases/conformance/es6/for-ofStatements/for-of46.ts(3,7): error TS2322: Type 'boolean' is not assignable to type 'string'. +tests/cases/conformance/es6/for-ofStatements/for-of46.ts(3,18): error TS2322: Type 'string' is not assignable to type 'boolean'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of46.ts (2 errors) ==== + var k: string, v: boolean; + var map = new Map([["", true]]); + for ([k = false, v = ""] of map) { + ~ +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. + ~ +!!! error TS2322: Type 'string' is not assignable to type 'boolean'. + k; + v; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of46.js b/tests/baselines/reference/for-of46.js new file mode 100644 index 00000000000..2ea15936c54 --- /dev/null +++ b/tests/baselines/reference/for-of46.js @@ -0,0 +1,15 @@ +//// [for-of46.ts] +var k: string, v: boolean; +var map = new Map([["", true]]); +for ([k = false, v = ""] of map) { + k; + v; +} + +//// [for-of46.js] +var k, v; +var map = new Map([["", true]]); +for ([k = false, v = ""] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of47.errors.txt b/tests/baselines/reference/for-of47.errors.txt new file mode 100644 index 00000000000..241dc107caa --- /dev/null +++ b/tests/baselines/reference/for-of47.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/es6/for-ofStatements/for-of47.ts(4,13): error TS2322: Type 'boolean' is not assignable to type 'number'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of47.ts (1 errors) ==== + var x: string, y: number; + var array = [{ x: "", y: true }] + enum E { x } + for ({x, y: y = E.x} of array) { + ~ +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. + x; + y; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of47.js b/tests/baselines/reference/for-of47.js new file mode 100644 index 00000000000..d7e596d2edc --- /dev/null +++ b/tests/baselines/reference/for-of47.js @@ -0,0 +1,20 @@ +//// [for-of47.ts] +var x: string, y: number; +var array = [{ x: "", y: true }] +enum E { x } +for ({x, y: y = E.x} of array) { + x; + y; +} + +//// [for-of47.js] +var x, y; +var array = [{ x: "", y: true }]; +var E; +(function (E) { + E[E["x"] = 0] = "x"; +})(E || (E = {})); +for ({ x, y: y = E.x } of array) { + x; + y; +} diff --git a/tests/baselines/reference/for-of48.errors.txt b/tests/baselines/reference/for-of48.errors.txt new file mode 100644 index 00000000000..f6826e14c61 --- /dev/null +++ b/tests/baselines/reference/for-of48.errors.txt @@ -0,0 +1,13 @@ +tests/cases/conformance/es6/for-ofStatements/for-of48.ts(4,12): error TS1005: ':' expected. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of48.ts (1 errors) ==== + var x: string, y: number; + var array = [{ x: "", y: true }] + enum E { x } + for ({x, y = E.x} of array) { + ~ +!!! error TS1005: ':' expected. + x; + y; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of48.js b/tests/baselines/reference/for-of48.js new file mode 100644 index 00000000000..2a5e4e32b94 --- /dev/null +++ b/tests/baselines/reference/for-of48.js @@ -0,0 +1,20 @@ +//// [for-of48.ts] +var x: string, y: number; +var array = [{ x: "", y: true }] +enum E { x } +for ({x, y = E.x} of array) { + x; + y; +} + +//// [for-of48.js] +var x, y; +var array = [{ x: "", y: true }]; +var E; +(function (E) { + E[E["x"] = 0] = "x"; +})(E || (E = {})); +for ({ x, y: = E.x } of array) { + x; + y; +} diff --git a/tests/baselines/reference/for-of49.errors.txt b/tests/baselines/reference/for-of49.errors.txt new file mode 100644 index 00000000000..d5bc314e678 --- /dev/null +++ b/tests/baselines/reference/for-of49.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/es6/for-ofStatements/for-of49.ts(3,13): error TS2364: Invalid left-hand side of assignment expression. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of49.ts (1 errors) ==== + var k: string, v: boolean; + var map = new Map([["", true]]); + for ([k, ...[v]] of map) { + ~~~ +!!! error TS2364: Invalid left-hand side of assignment expression. + k; + v; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of49.js b/tests/baselines/reference/for-of49.js new file mode 100644 index 00000000000..ac7f99f3607 --- /dev/null +++ b/tests/baselines/reference/for-of49.js @@ -0,0 +1,15 @@ +//// [for-of49.ts] +var k: string, v: boolean; +var map = new Map([["", true]]); +for ([k, ...[v]] of map) { + k; + v; +} + +//// [for-of49.js] +var k, v; +var map = new Map([["", true]]); +for ([k, ...[v]] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of5.js b/tests/baselines/reference/for-of5.js new file mode 100644 index 00000000000..4d93b0bd483 --- /dev/null +++ b/tests/baselines/reference/for-of5.js @@ -0,0 +1,9 @@ +//// [for-of5.ts] +for (let v of [0]) { + v; +} + +//// [for-of5.js] +for (let v of [0]) { + v; +} diff --git a/tests/baselines/reference/for-of5.types b/tests/baselines/reference/for-of5.types new file mode 100644 index 00000000000..feac5ef9e52 --- /dev/null +++ b/tests/baselines/reference/for-of5.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of5.ts === +for (let v of [0]) { +>v : number +>[0] : number[] + + v; +>v : number +} diff --git a/tests/baselines/reference/for-of50.js b/tests/baselines/reference/for-of50.js new file mode 100644 index 00000000000..a300812e6a9 --- /dev/null +++ b/tests/baselines/reference/for-of50.js @@ -0,0 +1,13 @@ +//// [for-of50.ts] +var map = new Map([["", true]]); +for (const [k, v] of map) { + k; + v; +} + +//// [for-of50.js] +var map = new Map([["", true]]); +for (const [k, v] of map) { + k; + v; +} diff --git a/tests/baselines/reference/for-of50.types b/tests/baselines/reference/for-of50.types new file mode 100644 index 00000000000..a38f3855174 --- /dev/null +++ b/tests/baselines/reference/for-of50.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of50.ts === +var map = new Map([["", true]]); +>map : Map +>new Map([["", true]]) : Map +>Map : MapConstructor +>[["", true]] : [string, boolean][] +>["", true] : [string, boolean] + +for (const [k, v] of map) { +>k : string +>v : boolean +>map : Map + + k; +>k : string + + v; +>v : boolean +} diff --git a/tests/baselines/reference/for-of51.errors.txt b/tests/baselines/reference/for-of51.errors.txt new file mode 100644 index 00000000000..54a6eb9d89c --- /dev/null +++ b/tests/baselines/reference/for-of51.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/es6/for-ofStatements/for-of51.ts(1,10): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of51.ts (1 errors) ==== + for (let let of []) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. \ No newline at end of file diff --git a/tests/baselines/reference/for-of51.js b/tests/baselines/reference/for-of51.js new file mode 100644 index 00000000000..cae8c8b38fe --- /dev/null +++ b/tests/baselines/reference/for-of51.js @@ -0,0 +1,5 @@ +//// [for-of51.ts] +for (let let of []) {} + +//// [for-of51.js] +for (let let of []) { } diff --git a/tests/baselines/reference/for-of52.errors.txt b/tests/baselines/reference/for-of52.errors.txt new file mode 100644 index 00000000000..5110768e104 --- /dev/null +++ b/tests/baselines/reference/for-of52.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of52.ts(1,11): error TS2451: Cannot redeclare block-scoped variable 'v'. +tests/cases/conformance/es6/for-ofStatements/for-of52.ts(1,14): error TS2451: Cannot redeclare block-scoped variable 'v'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of52.ts (2 errors) ==== + for (let [v, v] of [[]]) {} + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'v'. + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'v'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of52.js b/tests/baselines/reference/for-of52.js new file mode 100644 index 00000000000..48e1dca936c --- /dev/null +++ b/tests/baselines/reference/for-of52.js @@ -0,0 +1,5 @@ +//// [for-of52.ts] +for (let [v, v] of [[]]) {} + +//// [for-of52.js] +for (let [v, v] of [[]]) { } diff --git a/tests/baselines/reference/for-of53.js b/tests/baselines/reference/for-of53.js new file mode 100644 index 00000000000..810d23644a6 --- /dev/null +++ b/tests/baselines/reference/for-of53.js @@ -0,0 +1,9 @@ +//// [for-of53.ts] +for (let v of []) { + var v; +} + +//// [for-of53.js] +for (let v of []) { + var v; +} diff --git a/tests/baselines/reference/for-of53.types b/tests/baselines/reference/for-of53.types new file mode 100644 index 00000000000..475d63e9b5a --- /dev/null +++ b/tests/baselines/reference/for-of53.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of53.ts === +for (let v of []) { +>v : any +>[] : undefined[] + + var v; +>v : any +} diff --git a/tests/baselines/reference/for-of54.errors.txt b/tests/baselines/reference/for-of54.errors.txt new file mode 100644 index 00000000000..cb040c44382 --- /dev/null +++ b/tests/baselines/reference/for-of54.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/es6/for-ofStatements/for-of54.ts(2,9): error TS2481: Cannot initialize outer scoped variable 'v' in the same scope as block scoped declaration 'v'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of54.ts (1 errors) ==== + for (let v of []) { + var v = 0; + ~ +!!! error TS2481: Cannot initialize outer scoped variable 'v' in the same scope as block scoped declaration 'v'. + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of54.js b/tests/baselines/reference/for-of54.js new file mode 100644 index 00000000000..442e6e86146 --- /dev/null +++ b/tests/baselines/reference/for-of54.js @@ -0,0 +1,9 @@ +//// [for-of54.ts] +for (let v of []) { + var v = 0; +} + +//// [for-of54.js] +for (let v of []) { + var v = 0; +} diff --git a/tests/baselines/reference/for-of55.errors.txt b/tests/baselines/reference/for-of55.errors.txt new file mode 100644 index 00000000000..aa1285afbd6 --- /dev/null +++ b/tests/baselines/reference/for-of55.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/es6/for-ofStatements/for-of55.ts(2,15): error TS2448: Block-scoped variable 'v' used before its declaration. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of55.ts (1 errors) ==== + let v = [1]; + for (let v of v) { + ~ +!!! error TS2448: Block-scoped variable 'v' used before its declaration. + v; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of55.js b/tests/baselines/reference/for-of55.js new file mode 100644 index 00000000000..a0f949c6ce5 --- /dev/null +++ b/tests/baselines/reference/for-of55.js @@ -0,0 +1,11 @@ +//// [for-of55.ts] +let v = [1]; +for (let v of v) { + v; +} + +//// [for-of55.js] +let v = [1]; +for (let v of v) { + v; +} diff --git a/tests/baselines/reference/for-of56.js b/tests/baselines/reference/for-of56.js new file mode 100644 index 00000000000..0992b9c0bb9 --- /dev/null +++ b/tests/baselines/reference/for-of56.js @@ -0,0 +1,5 @@ +//// [for-of56.ts] +for (var let of []) {} + +//// [for-of56.js] +for (var let of []) { } diff --git a/tests/baselines/reference/for-of56.types b/tests/baselines/reference/for-of56.types new file mode 100644 index 00000000000..d853ff9f62c --- /dev/null +++ b/tests/baselines/reference/for-of56.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of56.ts === +for (var let of []) {} +>let : any +>[] : undefined[] + diff --git a/tests/baselines/reference/for-of6.errors.txt b/tests/baselines/reference/for-of6.errors.txt new file mode 100644 index 00000000000..03f41d18b2b --- /dev/null +++ b/tests/baselines/reference/for-of6.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/es6/for-ofStatements/for-of6.ts(1,6): error TS2304: Cannot find name 'v'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of6.ts (1 errors) ==== + for (v of [0]) { + ~ +!!! error TS2304: Cannot find name 'v'. + let v; + } \ No newline at end of file diff --git a/tests/baselines/reference/for-of6.js b/tests/baselines/reference/for-of6.js new file mode 100644 index 00000000000..24e93e2a9fd --- /dev/null +++ b/tests/baselines/reference/for-of6.js @@ -0,0 +1,9 @@ +//// [for-of6.ts] +for (v of [0]) { + let v; +} + +//// [for-of6.js] +for (v of [0]) { + let v; +} diff --git a/tests/baselines/reference/for-of7.errors.txt b/tests/baselines/reference/for-of7.errors.txt new file mode 100644 index 00000000000..e67c51e2d96 --- /dev/null +++ b/tests/baselines/reference/for-of7.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/for-ofStatements/for-of7.ts(1,1): error TS2304: Cannot find name 'v'. + + +==== tests/cases/conformance/es6/for-ofStatements/for-of7.ts (1 errors) ==== + v; + ~ +!!! error TS2304: Cannot find name 'v'. + for (let v of [0]) { } \ No newline at end of file diff --git a/tests/baselines/reference/for-of7.js b/tests/baselines/reference/for-of7.js new file mode 100644 index 00000000000..04aadd9736a --- /dev/null +++ b/tests/baselines/reference/for-of7.js @@ -0,0 +1,7 @@ +//// [for-of7.ts] +v; +for (let v of [0]) { } + +//// [for-of7.js] +v; +for (let v of [0]) { } diff --git a/tests/baselines/reference/for-of8.js b/tests/baselines/reference/for-of8.js new file mode 100644 index 00000000000..f33d69166dc --- /dev/null +++ b/tests/baselines/reference/for-of8.js @@ -0,0 +1,7 @@ +//// [for-of8.ts] +v; +for (var v of [0]) { } + +//// [for-of8.js] +v; +for (var v of [0]) { } diff --git a/tests/baselines/reference/for-of8.types b/tests/baselines/reference/for-of8.types new file mode 100644 index 00000000000..5f239d141fe --- /dev/null +++ b/tests/baselines/reference/for-of8.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of8.ts === +v; +>v : number + +for (var v of [0]) { } +>v : number +>[0] : number[] + diff --git a/tests/baselines/reference/for-of9.js b/tests/baselines/reference/for-of9.js new file mode 100644 index 00000000000..f96d353bd7a --- /dev/null +++ b/tests/baselines/reference/for-of9.js @@ -0,0 +1,9 @@ +//// [for-of9.ts] +var v: string; +for (v of ["hello"]) { } +for (v of "hello") { } + +//// [for-of9.js] +var v; +for (v of ["hello"]) { } +for (v of "hello") { } diff --git a/tests/baselines/reference/for-of9.types b/tests/baselines/reference/for-of9.types new file mode 100644 index 00000000000..55c8167094f --- /dev/null +++ b/tests/baselines/reference/for-of9.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/for-ofStatements/for-of9.ts === +var v: string; +>v : string + +for (v of ["hello"]) { } +>v : string +>["hello"] : string[] + +for (v of "hello") { } +>v : string + diff --git a/tests/baselines/reference/fromAsIdentifier1.js b/tests/baselines/reference/fromAsIdentifier1.js new file mode 100644 index 00000000000..54054e9f3e8 --- /dev/null +++ b/tests/baselines/reference/fromAsIdentifier1.js @@ -0,0 +1,5 @@ +//// [fromAsIdentifier1.ts] +var from; + +//// [fromAsIdentifier1.js] +var from; diff --git a/tests/baselines/reference/fromAsIdentifier1.types b/tests/baselines/reference/fromAsIdentifier1.types new file mode 100644 index 00000000000..988a80f3337 --- /dev/null +++ b/tests/baselines/reference/fromAsIdentifier1.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/fromAsIdentifier1.ts === +var from; +>from : any + diff --git a/tests/baselines/reference/fromAsIdentifier2.js b/tests/baselines/reference/fromAsIdentifier2.js new file mode 100644 index 00000000000..efdbdb3c57d --- /dev/null +++ b/tests/baselines/reference/fromAsIdentifier2.js @@ -0,0 +1,7 @@ +//// [fromAsIdentifier2.ts] +"use strict"; +var from; + +//// [fromAsIdentifier2.js] +"use strict"; +var from; diff --git a/tests/baselines/reference/fromAsIdentifier2.types b/tests/baselines/reference/fromAsIdentifier2.types new file mode 100644 index 00000000000..5faf9ec6f6c --- /dev/null +++ b/tests/baselines/reference/fromAsIdentifier2.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/fromAsIdentifier2.ts === +"use strict"; +var from; +>from : any + diff --git a/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.errors.txt b/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.errors.txt index 72f24af0c63..51287c87393 100644 --- a/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.errors.txt +++ b/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/functionAndInterfaceWithSeparateErrors.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionAndInterfaceWithSeparateErrors.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/compiler/functionAndInterfaceWithSeparateErrors.ts(6,5): error TS2411: Property 'prop' of type 'number' is not assignable to string index type 'string'. ==== tests/cases/compiler/functionAndInterfaceWithSeparateErrors.ts (2 errors) ==== function Foo(s: string); - ~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function Foo(n: number) { } diff --git a/tests/baselines/reference/functionCall10.js b/tests/baselines/reference/functionCall10.js index 299d73ee24a..9d5cb33a56a 100644 --- a/tests/baselines/reference/functionCall10.js +++ b/tests/baselines/reference/functionCall10.js @@ -7,7 +7,12 @@ foo(1, 'bar'); //// [functionCall10.js] -function foo() { } +function foo() { + var a = []; + for (var _i = 0; _i < arguments.length; _i++) { + a[_i - 0] = arguments[_i]; + } +} ; foo(0, 1); foo('foo'); diff --git a/tests/baselines/reference/functionCall13.js b/tests/baselines/reference/functionCall13.js index a66ecafc8b4..ce57f43215e 100644 --- a/tests/baselines/reference/functionCall13.js +++ b/tests/baselines/reference/functionCall13.js @@ -8,7 +8,12 @@ foo('foo', 1, 3); //// [functionCall13.js] -function foo(a) { } +function foo(a) { + var b = []; + for (var _i = 1; _i < arguments.length; _i++) { + b[_i - 1] = arguments[_i]; + } +} foo('foo', 1); foo('foo'); foo(); diff --git a/tests/baselines/reference/functionCall14.js b/tests/baselines/reference/functionCall14.js index f3af9f65436..47447f46db5 100644 --- a/tests/baselines/reference/functionCall14.js +++ b/tests/baselines/reference/functionCall14.js @@ -8,7 +8,12 @@ foo('foo', 1, 3); //// [functionCall14.js] -function foo(a) { } +function foo(a) { + var b = []; + for (var _i = 1; _i < arguments.length; _i++) { + b[_i - 1] = arguments[_i]; + } +} foo('foo', 1); foo('foo'); foo(); diff --git a/tests/baselines/reference/functionCall15.js b/tests/baselines/reference/functionCall15.js index baef02be27d..28fa4c917c8 100644 --- a/tests/baselines/reference/functionCall15.js +++ b/tests/baselines/reference/functionCall15.js @@ -2,4 +2,9 @@ function foo(a?:string, b?:number, ...b:number[]){} //// [functionCall15.js] -function foo(a, b) { } +function foo(a, b) { + var b = []; + for (var _i = 2; _i < arguments.length; _i++) { + b[_i - 2] = arguments[_i]; + } +} diff --git a/tests/baselines/reference/functionCall16.js b/tests/baselines/reference/functionCall16.js index d9b416581a7..187572a9a7e 100644 --- a/tests/baselines/reference/functionCall16.js +++ b/tests/baselines/reference/functionCall16.js @@ -9,7 +9,12 @@ foo('foo', 'bar', 3); //// [functionCall16.js] -function foo(a, b) { } +function foo(a, b) { + var c = []; + for (var _i = 2; _i < arguments.length; _i++) { + c[_i - 2] = arguments[_i]; + } +} foo('foo', 1); foo('foo'); foo('foo', 'bar'); diff --git a/tests/baselines/reference/functionCall17.js b/tests/baselines/reference/functionCall17.js index 62495358210..73f7fd6070b 100644 --- a/tests/baselines/reference/functionCall17.js +++ b/tests/baselines/reference/functionCall17.js @@ -9,7 +9,12 @@ foo('foo', 'bar', 3, 4); //// [functionCall17.js] -function foo(a, b, c) { } +function foo(a, b, c) { + var d = []; + for (var _i = 3; _i < arguments.length; _i++) { + d[_i - 3] = arguments[_i]; + } +} foo('foo', 1); foo('foo'); foo(); diff --git a/tests/baselines/reference/functionImplementationErrors.errors.txt b/tests/baselines/reference/functionImplementationErrors.errors.txt index 8ebd5aa272d..0c74588c316 100644 --- a/tests/baselines/reference/functionImplementationErrors.errors.txt +++ b/tests/baselines/reference/functionImplementationErrors.errors.txt @@ -1,15 +1,15 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(2,10): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/functions/functionImplementationErrors.ts(6,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/functions/functionImplementationErrors.ts(6,19): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(10,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(16,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(25,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement. tests/cases/conformance/functions/functionImplementationErrors.ts(30,17): error TS2373: Initializer of parameter 'n' cannot reference identifier 'm' declared after it. tests/cases/conformance/functions/functionImplementationErrors.ts(35,17): error TS2373: Initializer of parameter 'n' cannot reference identifier 'm' declared after it. tests/cases/conformance/functions/functionImplementationErrors.ts(40,28): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value or consist of a single 'throw' statement. -tests/cases/conformance/functions/functionImplementationErrors.ts(49,1): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/functions/functionImplementationErrors.ts(49,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(53,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(57,11): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/functions/functionImplementationErrors.ts(61,1): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/functions/functionImplementationErrors.ts(61,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(65,11): error TS2354: No best common type exists among return expressions. tests/cases/conformance/functions/functionImplementationErrors.ts(69,11): error TS2354: No best common type exists among return expressions. @@ -17,23 +17,17 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(69,11): error ==== tests/cases/conformance/functions/functionImplementationErrors.ts (14 errors) ==== // FunctionExpression with no return type annotation with multiple return statements with unrelated types var f1 = function () { - ~~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~ - return 3; - ~~~~~~~~~~~~~ - }; - ~ + ~~~~~~~~ !!! error TS2354: No best common type exists among return expressions. + return ''; + return 3; + }; var f2 = function x() { - ~~~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~ - return 3; - ~~~~~~~~~~~~~ - }; - ~ + ~ !!! error TS2354: No best common type exists among return expressions. + return ''; + return 3; + }; var f3 = () => { ~~~~~~~ return ''; @@ -46,20 +40,14 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(69,11): error // FunctionExpression with no return type annotation with return branch of number[] and other of string[] var f4 = function () { - ~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return ['']; - ~~~~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return [1]; - ~~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~~~~~~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return ['']; + } else { + return [1]; + } + } // Function implemetnation with non -void return type annotation with no return function f5(): number { @@ -95,23 +83,17 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(69,11): error class Derived1 extends Base { private m; } class Derived2 extends Base { private n; } function f8() { - ~~~~~~~~~~~~~~~ + ~~ +!!! error TS2354: No best common type exists among return expressions. return new Derived1(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ return new Derived2(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } - ~ -!!! error TS2354: No best common type exists among return expressions. var f9 = function () { - ~~~~~~~~~~~~~ - return new Derived1(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - return new Derived2(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - }; - ~ + ~~~~~~~~ !!! error TS2354: No best common type exists among return expressions. + return new Derived1(); + return new Derived2(); + }; var f10 = () => { ~~~~~~~ return new Derived1(); @@ -122,23 +104,17 @@ tests/cases/conformance/functions/functionImplementationErrors.ts(69,11): error ~ !!! error TS2354: No best common type exists among return expressions. function f11() { - ~~~~~~~~~~~~~~~~ + ~~~ +!!! error TS2354: No best common type exists among return expressions. return new Base(); - ~~~~~~~~~~~~~~~~~~~~~~ return new AnotherClass(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } - ~ -!!! error TS2354: No best common type exists among return expressions. var f12 = function () { - ~~~~~~~~~~~~~ - return new Base(); - ~~~~~~~~~~~~~~~~~~~~~~ - return new AnotherClass(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - }; - ~ + ~~~~~~~~ !!! error TS2354: No best common type exists among return expressions. + return new Base(); + return new AnotherClass(); + }; var f13 = () => { ~~~~~~~ return new Base(); diff --git a/tests/baselines/reference/functionOverloadErrors.errors.txt b/tests/baselines/reference/functionOverloadErrors.errors.txt index bc4fea0a98b..ae1dfeae4d1 100644 --- a/tests/baselines/reference/functionOverloadErrors.errors.txt +++ b/tests/baselines/reference/functionOverloadErrors.errors.txt @@ -8,9 +8,9 @@ tests/cases/conformance/functions/functionOverloadErrors.ts(75,21): error TS2383 tests/cases/conformance/functions/functionOverloadErrors.ts(79,14): error TS2383: Overload signatures must all be exported or not exported. tests/cases/conformance/functions/functionOverloadErrors.ts(85,18): error TS2384: Overload signatures must all be ambient or non-ambient. tests/cases/conformance/functions/functionOverloadErrors.ts(90,18): error TS2384: Overload signatures must all be ambient or non-ambient. -tests/cases/conformance/functions/functionOverloadErrors.ts(94,1): error TS2394: Overload signature is not compatible with function implementation. -tests/cases/conformance/functions/functionOverloadErrors.ts(99,1): error TS2394: Overload signature is not compatible with function implementation. -tests/cases/conformance/functions/functionOverloadErrors.ts(103,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/conformance/functions/functionOverloadErrors.ts(94,10): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/conformance/functions/functionOverloadErrors.ts(99,10): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/conformance/functions/functionOverloadErrors.ts(103,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/conformance/functions/functionOverloadErrors.ts(116,19): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. @@ -129,20 +129,20 @@ tests/cases/conformance/functions/functionOverloadErrors.ts(116,19): error TS237 //Function overloads with fewer params than implementation signature function fewerParams(); - ~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~~~~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function fewerParams(n: string) { } //Function implementation whose parameter types are not assignable to all corresponding overload signature parameters function fn13(n: string); - ~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function fn13(n: number) { } //Function overloads where return types are not all subtype of implementation return type function fn14(n: string): string; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function fn14() { return 3; diff --git a/tests/baselines/reference/functionOverloads11.errors.txt b/tests/baselines/reference/functionOverloads11.errors.txt index 18155cbe69f..005ee9bb143 100644 --- a/tests/baselines/reference/functionOverloads11.errors.txt +++ b/tests/baselines/reference/functionOverloads11.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/functionOverloads11.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads11.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads11.ts (1 errors) ==== function foo():number; - ~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo():string { return "" } \ No newline at end of file diff --git a/tests/baselines/reference/functionOverloads17.errors.txt b/tests/baselines/reference/functionOverloads17.errors.txt index 44565702632..febd2c03ac8 100644 --- a/tests/baselines/reference/functionOverloads17.errors.txt +++ b/tests/baselines/reference/functionOverloads17.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/functionOverloads17.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads17.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads17.ts (1 errors) ==== function foo():{a:number;} - ~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo():{a:string;} { return {a:""} } \ No newline at end of file diff --git a/tests/baselines/reference/functionOverloads18.errors.txt b/tests/baselines/reference/functionOverloads18.errors.txt index 384c1e3fa8f..bec6a45ed89 100644 --- a/tests/baselines/reference/functionOverloads18.errors.txt +++ b/tests/baselines/reference/functionOverloads18.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/functionOverloads18.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads18.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads18.ts (1 errors) ==== function foo(bar:{a:number;}); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(bar:{a:string;}) { return {a:""} } \ No newline at end of file diff --git a/tests/baselines/reference/functionOverloads19.errors.txt b/tests/baselines/reference/functionOverloads19.errors.txt index 4c6935493e9..d87ba17562a 100644 --- a/tests/baselines/reference/functionOverloads19.errors.txt +++ b/tests/baselines/reference/functionOverloads19.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/functionOverloads19.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads19.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads19.ts (1 errors) ==== function foo(bar:{b:string;}); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(bar:{a:string;}); function foo(bar:{a:any;}) { return {a:""} } diff --git a/tests/baselines/reference/functionOverloads20.errors.txt b/tests/baselines/reference/functionOverloads20.errors.txt index 2a51afefe0c..6b33795bc3e 100644 --- a/tests/baselines/reference/functionOverloads20.errors.txt +++ b/tests/baselines/reference/functionOverloads20.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/functionOverloads20.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads20.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads20.ts (1 errors) ==== function foo(bar:{a:number;}): number; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(bar:{a:string;}): string; function foo(bar:{a:any;}): string {return ""} diff --git a/tests/baselines/reference/functionOverloads22.errors.txt b/tests/baselines/reference/functionOverloads22.errors.txt index bc075e0c3ef..c9fc8aa2b2f 100644 --- a/tests/baselines/reference/functionOverloads22.errors.txt +++ b/tests/baselines/reference/functionOverloads22.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/functionOverloads22.ts(2,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads22.ts(2,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads22.ts (1 errors) ==== function foo(bar:number):{a:number;}[]; function foo(bar:string):{a:number; b:string;}[]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(bar:any):{a:any;b?:any;}[] { return [{a:""}] } \ No newline at end of file diff --git a/tests/baselines/reference/functionOverloads4.errors.txt b/tests/baselines/reference/functionOverloads4.errors.txt index 1e41fde6021..78d772a0f6f 100644 --- a/tests/baselines/reference/functionOverloads4.errors.txt +++ b/tests/baselines/reference/functionOverloads4.errors.txt @@ -1,8 +1,8 @@ -tests/cases/compiler/functionOverloads4.ts(1,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/functionOverloads4.ts(1,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/functionOverloads4.ts (1 errors) ==== function foo():number; - ~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo():string { return "a" } \ No newline at end of file diff --git a/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt b/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt index d9a25e24566..8a57d8e08e6 100644 --- a/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt +++ b/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt @@ -1,10 +1,10 @@ -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(4,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(12,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(22,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(31,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(43,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(48,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(56,1): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(4,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(12,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(22,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(31,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(43,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(48,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(56,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(56,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(56,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. @@ -14,126 +14,80 @@ tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMulti // it is an error if there is no single BCT, these are error cases function f1() { - ~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return 1; - ~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return 1; + } else { + return ''; + } + } function f2() { - ~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return 1; - ~~~~~~~~~~~~~~~~~ - } else if (false) { - ~~~~~~~~~~~~~~~~~~~~~~~ - return 2; - ~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return 1; + } else if (false) { + return 2; + } else { + return ''; + } + } function f3() { - ~~~~~~~~~~~~~~~ - try { - ~~~~~~~~~ - return 1; - ~~~~~~~~~~~~~~~~~ - } - ~~~~~ - catch (e) { - ~~~~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + try { + return 1; + } + catch (e) { + return ''; + } + } function f4() { - ~~~~~~~~~~~~~~~ - try { - ~~~~~~~~~ - return 1; - ~~~~~~~~~~~~~~~~~ - } - ~~~~~ - catch (e) { - ~~~~~~~~~~~~~~~ - - - } - ~~~~~ - finally { - ~~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + try { + return 1; + } + catch (e) { + + } + finally { + return ''; + } + } function f5() { - ~~~~~~~~~~~~~~~ - return 1; - ~~~~~~~~~~~~~ - return ''; - ~~~~~~~~~~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + return 1; + return ''; + } function f6(x: T, y:U) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return x; - ~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return y; - ~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return x; + } else { + return y; + } + } function f8(x: T, y: U) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~ +!!! error TS2354: No best common type exists among return expressions. ~~~~~~~~~~~ !!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~~~~~~~~ !!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. if (true) { - ~~~~~~~~~~~~~~~ return x; - ~~~~~~~~~~~~~~~~~ } else { - ~~~~~~~~~~~~ return y; - ~~~~~~~~~~~~~~~~~ } - ~~~~~ } - ~ -!!! error TS2354: No best common type exists among return expressions. \ No newline at end of file diff --git a/tests/baselines/reference/functionWithMultipleReturnStatements2.errors.txt b/tests/baselines/reference/functionWithMultipleReturnStatements2.errors.txt index 2b14bd97bad..bbaa5a85578 100644 --- a/tests/baselines/reference/functionWithMultipleReturnStatements2.errors.txt +++ b/tests/baselines/reference/functionWithMultipleReturnStatements2.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts(58,1): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts(67,1): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts(58,10): error TS2354: No best common type exists among return expressions. +tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts(67,10): error TS2354: No best common type exists among return expressions. ==== tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts (2 errors) ==== @@ -61,37 +61,25 @@ tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMulti var b: { x: number; z?: number }; // returns typeof a function f9() { - ~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return a; - ~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return b; - ~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return a; + } else { + return b; + } + } // returns typeof b function f10() { - ~~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return b; - ~~~~~~~~~~~~~~~~~ - } else { - ~~~~~~~~~~~~ - return a; - ~~~~~~~~~~~~~~~~~ - } - ~~~~~ - } - ~ + ~~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return b; + } else { + return a; + } + } // returns number => void function f11() { diff --git a/tests/baselines/reference/functionWithNoBestCommonType1.errors.txt b/tests/baselines/reference/functionWithNoBestCommonType1.errors.txt new file mode 100644 index 00000000000..3c8fef3eb49 --- /dev/null +++ b/tests/baselines/reference/functionWithNoBestCommonType1.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/functionWithNoBestCommonType1.ts(1,10): error TS2354: No best common type exists among return expressions. + + +==== tests/cases/compiler/functionWithNoBestCommonType1.ts (1 errors) ==== + function foo() { + ~~~ +!!! error TS2354: No best common type exists among return expressions. + return true; + return bar(); + } + + function bar(): void { + } \ No newline at end of file diff --git a/tests/baselines/reference/functionWithNoBestCommonType1.js b/tests/baselines/reference/functionWithNoBestCommonType1.js new file mode 100644 index 00000000000..f7114fb40d8 --- /dev/null +++ b/tests/baselines/reference/functionWithNoBestCommonType1.js @@ -0,0 +1,16 @@ +//// [functionWithNoBestCommonType1.ts] +function foo() { + return true; + return bar(); +} + +function bar(): void { +} + +//// [functionWithNoBestCommonType1.js] +function foo() { + return true; + return bar(); +} +function bar() { +} diff --git a/tests/baselines/reference/functionWithNoBestCommonType2.errors.txt b/tests/baselines/reference/functionWithNoBestCommonType2.errors.txt new file mode 100644 index 00000000000..981e330d9b5 --- /dev/null +++ b/tests/baselines/reference/functionWithNoBestCommonType2.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/functionWithNoBestCommonType2.ts(1,9): error TS2354: No best common type exists among return expressions. + + +==== tests/cases/compiler/functionWithNoBestCommonType2.ts (1 errors) ==== + var v = function () { + ~~~~~~~~ +!!! error TS2354: No best common type exists among return expressions. + return true; + return bar(); + }; + + function bar(): void { + } \ No newline at end of file diff --git a/tests/baselines/reference/functionWithNoBestCommonType2.js b/tests/baselines/reference/functionWithNoBestCommonType2.js new file mode 100644 index 00000000000..8e903518ec0 --- /dev/null +++ b/tests/baselines/reference/functionWithNoBestCommonType2.js @@ -0,0 +1,16 @@ +//// [functionWithNoBestCommonType2.ts] +var v = function () { + return true; + return bar(); +}; + +function bar(): void { +} + +//// [functionWithNoBestCommonType2.js] +var v = function () { + return true; + return bar(); +}; +function bar() { +} diff --git a/tests/baselines/reference/functionsMissingReturnStatementsAndExpressions.js b/tests/baselines/reference/functionsMissingReturnStatementsAndExpressions.js index ae8e7d9c918..592a03d7158 100644 --- a/tests/baselines/reference/functionsMissingReturnStatementsAndExpressions.js +++ b/tests/baselines/reference/functionsMissingReturnStatementsAndExpressions.js @@ -228,7 +228,8 @@ var C = (function () { // Not fine, since we can *only* consist of a single throw statement // if no return statements are present but we are a get accessor. throw null; - throw undefined.; + throw undefined. + ; }, enumerable: true, configurable: true diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt index 5b5d4ad66f0..f9f230b5776 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt @@ -5,6 +5,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(25,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. Types of parameters 'a' and 'x' are incompatible. Type 'T' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'RegExp'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(37,36): error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. Type 'F' is not assignable to type 'E'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(50,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. @@ -53,6 +54,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. !!! error TS2345: Types of parameters 'a' and 'x' are incompatible. !!! error TS2345: Type 'T' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. var r7b = foo2((a) => a, (b) => b); // valid, T is inferred to be Date } diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.js b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.js index 7acdcc32536..1aabe9cfa2b 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.js +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.js @@ -109,7 +109,7 @@ var onlyT; var r; return r; } - var r7 = foo3(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; }); // error + var r7 = foo3(E.A, function (x) { return E.A; }, function (x) { return F.A; }); // error })(onlyT || (onlyT = {})); var TU; (function (TU) { @@ -143,5 +143,5 @@ var TU; var r; return r; } - var r7 = foo3(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; }); + var r7 = foo3(E.A, function (x) { return E.A; }, function (x) { return F.A; }); })(TU || (TU = {})); diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.js b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.js index ca28878daa3..36566033a48 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.js +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.js @@ -54,7 +54,7 @@ var F; (function (F) { F[F["A"] = 0] = "A"; })(F || (F = {})); -var r6 = foo(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; }); // number => number +var r6 = foo(E.A, function (x) { return E.A; }, function (x) { return F.A; }); // number => number function foo2(x, a, b) { var r; return r; diff --git a/tests/baselines/reference/genericChainedCalls.js b/tests/baselines/reference/genericChainedCalls.js index 71d83a906bf..a738e19023b 100644 --- a/tests/baselines/reference/genericChainedCalls.js +++ b/tests/baselines/reference/genericChainedCalls.js @@ -15,8 +15,9 @@ var s3 = s2.func(num => num.toString()) //// [genericChainedCalls.js] -var r1 = v1.func(function (num) { return num.toString(); }).func(function (str) { return str.length; }) // error, number doesn't have a length -.func(function (num) { return num.toString(); }); +var r1 = v1.func(function (num) { return num.toString(); }) + .func(function (str) { return str.length; }) // error, number doesn't have a length + .func(function (num) { return num.toString(); }); var s1 = v1.func(function (num) { return num.toString(); }); var s2 = s1.func(function (str) { return str.length; }); // should also error var s3 = s2.func(function (num) { return num.toString(); }); diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types index 2d39c0a465b..1867d390703 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types @@ -191,9 +191,9 @@ module PortalFx.ViewModels.Controls.Validators { export class Validator extends Portal.Controls.Validators.Validator { >Validator : Validator >TValue : TValue ->Portal : unknown ->Controls : unknown ->Validators : unknown +>Portal : typeof Portal +>Controls : typeof Portal.Controls +>Validators : typeof Portal.Controls.Validators >Validator : Portal.Controls.Validators.Validator >TValue : TValue diff --git a/tests/baselines/reference/genericCombinators2.errors.txt b/tests/baselines/reference/genericCombinators2.errors.txt index 5be717109c8..d590f1030c3 100644 --- a/tests/baselines/reference/genericCombinators2.errors.txt +++ b/tests/baselines/reference/genericCombinators2.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/genericCombinators2.ts(15,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. Type 'string' is not assignable to type 'Date'. @@ -23,6 +24,7 @@ tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of ty ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. !!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r5b = _.map(c2, rf1); ~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types index 1e744ce25c2..eadf43d226a 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types @@ -12,7 +12,7 @@ declare module EndGate { interface Number extends EndGate.ICloneable { } >Number : Number ->EndGate : unknown +>EndGate : typeof EndGate >ICloneable : EndGate.ICloneable module EndGate.Tweening { diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types index ad3182f62e5..80e1a963d5f 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types @@ -12,7 +12,7 @@ module EndGate { interface Number extends EndGate.ICloneable { } >Number : Number ->EndGate : unknown +>EndGate : typeof EndGate >ICloneable : EndGate.ICloneable module EndGate.Tweening { diff --git a/tests/baselines/reference/genericFunduleInModule.errors.txt b/tests/baselines/reference/genericFunduleInModule.errors.txt index ca82f7d2425..752517667b0 100644 --- a/tests/baselines/reference/genericFunduleInModule.errors.txt +++ b/tests/baselines/reference/genericFunduleInModule.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/genericFunduleInModule.ts(8,8): error TS2305: Module 'A' has no exported member 'B'. +tests/cases/compiler/genericFunduleInModule.ts(8,10): error TS2305: Module 'A' has no exported member 'B'. ==== tests/cases/compiler/genericFunduleInModule.ts (1 errors) ==== @@ -10,6 +10,6 @@ tests/cases/compiler/genericFunduleInModule.ts(8,8): error TS2305: Module 'A' ha } var b: A.B; - ~~~ + ~ !!! error TS2305: Module 'A' has no exported member 'B'. A.B(1); \ No newline at end of file diff --git a/tests/baselines/reference/genericFunduleInModule2.errors.txt b/tests/baselines/reference/genericFunduleInModule2.errors.txt index b92b314ece7..156549e8190 100644 --- a/tests/baselines/reference/genericFunduleInModule2.errors.txt +++ b/tests/baselines/reference/genericFunduleInModule2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/genericFunduleInModule2.ts(11,8): error TS2305: Module 'A' has no exported member 'B'. +tests/cases/compiler/genericFunduleInModule2.ts(11,10): error TS2305: Module 'A' has no exported member 'B'. ==== tests/cases/compiler/genericFunduleInModule2.ts (1 errors) ==== @@ -13,6 +13,6 @@ tests/cases/compiler/genericFunduleInModule2.ts(11,8): error TS2305: Module 'A' } var b: A.B; - ~~~ + ~ !!! error TS2305: Module 'A' has no exported member 'B'. A.B(1); \ No newline at end of file diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.js b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.js index 11113b778d3..e01c9045345 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.js +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.js @@ -69,7 +69,10 @@ var TypeScript; }; PullTypeSymbol.prototype.getScopedNameEx = function (scopeSymbol, useConstraintInName, getPrettyTypeName, getTypeParamMarkerInfo) { if (this.isArray()) { - var elementMemberName = this._elementType ? (this._elementType.isArray() || this._elementType.isNamedTypeSymbol() ? this._elementType.getScopedNameEx(scopeSymbol, false, getPrettyTypeName, getTypeParamMarkerInfo) : this._elementType.getMemberTypeNameEx(false, scopeSymbol, getPrettyTypeName)) : 1; + var elementMemberName = this._elementType ? + (this._elementType.isArray() || this._elementType.isNamedTypeSymbol() ? + this._elementType.getScopedNameEx(scopeSymbol, false, getPrettyTypeName, getTypeParamMarkerInfo) : + this._elementType.getMemberTypeNameEx(false, scopeSymbol, getPrettyTypeName)) : 1; return TypeScript.MemberName.create(elementMemberName, "", "[]"); } }; diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt index 6c98d419dec..5ae71fa2a89 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt @@ -8,7 +8,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(14,23): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(14,27): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(16,25): error TS2314: Generic type 'C' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(22,26): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(22,28): error TS2305: Module 'M' has no exported member 'C'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(23,28): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(25,30): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(26,30): error TS2314: Generic type 'E' requires 1 type argument(s). @@ -57,7 +57,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc } declare class D2 extends M.C { } - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'C'. declare class D3 { } ~~~ diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt index 745da9aa106..2949ce52ce0 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt @@ -15,9 +15,9 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(18,38): error TS2314: Generic type 'I' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(20,17): error TS2314: Generic type 'I' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(23,21): error TS2314: Generic type 'I' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(29,18): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(29,20): error TS2305: Module 'M' has no exported member 'C'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(30,24): error TS2314: Generic type 'E' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(31,22): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(31,24): error TS2305: Module 'M' has no exported member 'C'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(33,22): error TS2314: Generic type 'I' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(34,22): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(36,10): error TS2304: Cannot find name 'C'. @@ -88,13 +88,13 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc } class D2 extends M.C { } - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'C'. interface D3 { } ~~~ !!! error TS2314: Generic type 'E' requires 1 type argument(s). interface I2 extends M.C { } - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'C'. function h(x: T) { } diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt index 1fec52356a2..c0e41374527 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt @@ -8,7 +8,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(14,23): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(14,27): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(16,25): error TS2314: Generic type 'C' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(22,26): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(22,28): error TS2305: Module 'M' has no exported member 'C'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(23,28): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(25,30): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(26,30): error TS2314: Generic type 'E' requires 1 type argument(s). @@ -57,7 +57,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc } declare class D2 extends M.C { } - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'C'. declare class D3 { } ~~~ diff --git a/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.errors.txt b/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.errors.txt index a11b0f0ad9e..c25aca342ca 100644 --- a/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.errors.txt +++ b/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.errors.txt @@ -11,12 +11,12 @@ tests/cases/compiler/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.ts(21 declare function _(value: Array): _; ~ !!! error TS2300: Duplicate identifier '_'. - ~~~~ + ~ !!! error TS2304: Cannot find name '_'. declare function _(value: T): _; ~ !!! error TS2300: Duplicate identifier '_'. - ~~~~ + ~ !!! error TS2304: Cannot find name '_'. declare module _ { diff --git a/tests/baselines/reference/getEmitOutputMapRoots.baseline b/tests/baselines/reference/getEmitOutputMapRoots.baseline index 16f39169e23..b4a4ace4d42 100644 --- a/tests/baselines/reference/getEmitOutputMapRoots.baseline +++ b/tests/baselines/reference/getEmitOutputMapRoots.baseline @@ -1,6 +1,6 @@ EmitSkipped: false FileName : declSingleFile.js.map -{"version":3,"file":"declSingleFile.js","sourceRoot":"","sources":["../tests/cases/fourslash/inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : declSingleFile.js +{"version":3,"file":"declSingleFile.js","sourceRoot":"","sources":["../tests/cases/fourslash/inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : declSingleFile.js var x = 109; var foo = "hello world"; var M = (function () { diff --git a/tests/baselines/reference/getEmitOutputSourceMap.baseline b/tests/baselines/reference/getEmitOutputSourceMap.baseline index 39cff967d89..1f7056989e9 100644 --- a/tests/baselines/reference/getEmitOutputSourceMap.baseline +++ b/tests/baselines/reference/getEmitOutputSourceMap.baseline @@ -1,6 +1,6 @@ EmitSkipped: false FileName : tests/cases/fourslash/inputFile.js.map -{"version":3,"file":"inputFile.js","sourceRoot":"","sources":["inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile.js +{"version":3,"file":"inputFile.js","sourceRoot":"","sources":["inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile.js var x = 109; var foo = "hello world"; var M = (function () { diff --git a/tests/baselines/reference/getEmitOutputSourceMap2.baseline b/tests/baselines/reference/getEmitOutputSourceMap2.baseline index 713aa4f3c08..df59ca00162 100644 --- a/tests/baselines/reference/getEmitOutputSourceMap2.baseline +++ b/tests/baselines/reference/getEmitOutputSourceMap2.baseline @@ -1,6 +1,6 @@ EmitSkipped: false FileName : sample/outDir/inputFile1.js.map -{"version":3,"file":"inputFile1.js","sourceRoot":"","sources":["../../tests/cases/fourslash/inputFile1.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : sample/outDir/inputFile1.js +{"version":3,"file":"inputFile1.js","sourceRoot":"","sources":["../../tests/cases/fourslash/inputFile1.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : sample/outDir/inputFile1.js var x = 109; var foo = "hello world"; var M = (function () { diff --git a/tests/baselines/reference/getEmitOutputSourceRoot.baseline b/tests/baselines/reference/getEmitOutputSourceRoot.baseline index 5424def98ee..7b56ee5a4d8 100644 --- a/tests/baselines/reference/getEmitOutputSourceRoot.baseline +++ b/tests/baselines/reference/getEmitOutputSourceRoot.baseline @@ -1,6 +1,6 @@ EmitSkipped: false FileName : tests/cases/fourslash/inputFile.js.map -{"version":3,"file":"inputFile.js","sourceRoot":"sourceRootDir/","sources":["inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile.js +{"version":3,"file":"inputFile.js","sourceRoot":"sourceRootDir/","sources":["inputFile.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile.js var x = 109; var foo = "hello world"; var M = (function () { diff --git a/tests/baselines/reference/getEmitOutputSourceRootMultiFiles.baseline b/tests/baselines/reference/getEmitOutputSourceRootMultiFiles.baseline index 7948ad99673..9df4711b3e1 100644 --- a/tests/baselines/reference/getEmitOutputSourceRootMultiFiles.baseline +++ b/tests/baselines/reference/getEmitOutputSourceRootMultiFiles.baseline @@ -1,6 +1,6 @@ EmitSkipped: false FileName : tests/cases/fourslash/inputFile1.js.map -{"version":3,"file":"inputFile1.js","sourceRoot":"sourceRootDir/","sources":["inputFile1.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile1.js +{"version":3,"file":"inputFile1.js","sourceRoot":"sourceRootDir/","sources":["inputFile1.ts"],"names":["M","M.constructor"],"mappings":"AAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,IAAI,GAAG,GAAG,aAAa,CAAC;AACxB;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile1.js var x = 109; var foo = "hello world"; var M = (function () { @@ -11,7 +11,7 @@ var M = (function () { //# sourceMappingURL=inputFile1.js.map EmitSkipped: false FileName : tests/cases/fourslash/inputFile2.js.map -{"version":3,"file":"inputFile2.js","sourceRoot":"sourceRootDir/","sources":["inputFile2.ts"],"names":["C","C.constructor"],"mappings":"AAAA,IAAI,GAAG,GAAG,wBAAwB,CAAC;AACnC,IAAM,CAAC;IAAPA,SAAMA,CAACA;IAGPC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile2.js +{"version":3,"file":"inputFile2.js","sourceRoot":"sourceRootDir/","sources":["inputFile2.ts"],"names":["C","C.constructor"],"mappings":"AAAA,IAAI,GAAG,GAAG,wBAAwB,CAAC;AACnC;IAAAA;IAGAC,CAACA;IAADD,QAACA;AAADA,CAACA,AAHD,IAGC"}FileName : tests/cases/fourslash/inputFile2.js var bar = "hello world Typescript"; var C = (function () { function C() { diff --git a/tests/baselines/reference/getEmitOutputWithEarlySyntacticErrors.baseline b/tests/baselines/reference/getEmitOutputWithEarlySyntacticErrors.baseline index 8dc9355bca2..9e2e9978f46 100644 --- a/tests/baselines/reference/getEmitOutputWithEarlySyntacticErrors.baseline +++ b/tests/baselines/reference/getEmitOutputWithEarlySyntacticErrors.baseline @@ -1,5 +1,5 @@ EmitSkipped: false FileName : tests/cases/fourslash/inputFile1.js // File contains early errors. All outputs should be skipped. -const uninitialized_const_error; +var uninitialized_const_error; diff --git a/tests/baselines/reference/giant.js b/tests/baselines/reference/giant.js index a5109b6e113..4409933bb19 100644 --- a/tests/baselines/reference/giant.js +++ b/tests/baselines/reference/giant.js @@ -744,7 +744,7 @@ define(["require", "exports"], function (require, exports) { return C; })(); var M; - (function (_M) { + (function (M_1) { var V; function F() { } ; @@ -822,9 +822,9 @@ define(["require", "exports"], function (require, exports) { ; ; })(M || (M = {})); - _M.eV; + M_1.eV; function eF() { } - _M.eF = eF; + M_1.eF = eF; ; var eC = (function () { function eC() { @@ -870,7 +870,7 @@ define(["require", "exports"], function (require, exports) { }); return eC; })(); - _M.eC = eC; + M_1.eC = eC; var eM; (function (eM) { var V; @@ -900,7 +900,7 @@ define(["require", "exports"], function (require, exports) { ; ; ; - })(eM = _M.eM || (_M.eM = {})); + })(eM = M_1.eM || (M_1.eM = {})); ; })(M || (M = {})); exports.eV; @@ -953,7 +953,7 @@ define(["require", "exports"], function (require, exports) { })(); exports.eC = eC; var eM; - (function (_eM) { + (function (eM_1) { var V; function F() { } ; @@ -1031,9 +1031,9 @@ define(["require", "exports"], function (require, exports) { ; ; })(M || (M = {})); - _eM.eV; + eM_1.eV; function eF() { } - _eM.eF = eF; + eM_1.eF = eF; ; var eC = (function () { function eC() { @@ -1079,7 +1079,7 @@ define(["require", "exports"], function (require, exports) { }); return eC; })(); - _eM.eC = eC; + eM_1.eC = eC; var eM; (function (eM) { var V; @@ -1109,7 +1109,7 @@ define(["require", "exports"], function (require, exports) { ; ; ; - })(eM = _eM.eM || (_eM.eM = {})); + })(eM = eM_1.eM || (eM_1.eM = {})); ; })(eM = exports.eM || (exports.eM = {})); ; diff --git a/tests/baselines/reference/implicitAnyAmbients.errors.txt b/tests/baselines/reference/implicitAnyAmbients.errors.txt index 699bd4b7f34..e71fd6f72ea 100644 --- a/tests/baselines/reference/implicitAnyAmbients.errors.txt +++ b/tests/baselines/reference/implicitAnyAmbients.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/implicitAnyAmbients.ts(3,9): error TS7005: Variable 'x' implicitly has an 'any' type. -tests/cases/compiler/implicitAnyAmbients.ts(6,5): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyAmbients.ts(6,14): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyAmbients.ts(6,16): error TS7006: Parameter 'x' implicitly has an 'any' type. -tests/cases/compiler/implicitAnyAmbients.ts(7,5): error TS7010: 'f2', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyAmbients.ts(7,14): error TS7010: 'f2', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyAmbients.ts(11,9): error TS7010: 'foo', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyAmbients.ts(12,9): error TS7010: 'foo2', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyAmbients.ts(17,9): error TS7010: 'foo', which lacks return-type annotation, implicitly has an 'any' return type. @@ -18,12 +18,12 @@ tests/cases/compiler/implicitAnyAmbients.ts(23,13): error TS7005: Variable 'y' i var y: any; function f(x); // error - ~~~~~~~~~~~~~~ + ~ !!! error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. ~ !!! error TS7006: Parameter 'x' implicitly has an 'any' type. function f2(x: any); // error - ~~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS7010: 'f2', which lacks return-type annotation, implicitly has an 'any' return type. function f3(x: any): any; diff --git a/tests/baselines/reference/implicitAnyCastedValue.errors.txt b/tests/baselines/reference/implicitAnyCastedValue.errors.txt index 613aa4820d2..773fb2ed94e 100644 --- a/tests/baselines/reference/implicitAnyCastedValue.errors.txt +++ b/tests/baselines/reference/implicitAnyCastedValue.errors.txt @@ -4,7 +4,7 @@ tests/cases/compiler/implicitAnyCastedValue.ts(12,16): error TS1056: Accessors a tests/cases/compiler/implicitAnyCastedValue.ts(26,5): error TS7008: Member 'getValue' implicitly has an 'any' type. tests/cases/compiler/implicitAnyCastedValue.ts(28,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/implicitAnyCastedValue.ts(32,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -tests/cases/compiler/implicitAnyCastedValue.ts(41,1): error TS7010: 'notCastedNull', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyCastedValue.ts(41,10): error TS7010: 'notCastedNull', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyCastedValue.ts(53,24): error TS7006: Parameter 'x' implicitly has an 'any' type. tests/cases/compiler/implicitAnyCastedValue.ts(62,24): error TS7006: Parameter 'x' implicitly has an 'any' type. @@ -63,12 +63,10 @@ tests/cases/compiler/implicitAnyCastedValue.ts(62,24): error TS7006: Parameter ' } function notCastedNull() { - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - return null; // this should be an error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~ + ~~~~~~~~~~~~~ !!! error TS7010: 'notCastedNull', which lacks return-type annotation, implicitly has an 'any' return type. + return null; // this should be an error + } function returnTypeBar(): any { return null; // this should not be an error diff --git a/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.errors.txt b/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.errors.txt index 34aa58c4199..bc2a9437e4a 100644 --- a/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.errors.txt +++ b/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.errors.txt @@ -2,9 +2,9 @@ tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(2,15): e tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(3,15): error TS7006: Parameter 'll1' implicitly has an 'any' type. tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(4,33): error TS7006: Parameter 'myParam' implicitly has an 'any' type. tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(5,14): error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(8,15): error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(8,24): error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(9,15): error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(10,15): error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(10,24): error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(11,15): error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type. @@ -25,13 +25,13 @@ tests/cases/compiler/implicitAnyDeclareFunctionExprWithoutFormalType.ts(11,15): // these should be error for implicit any return type var lambda5 = function temp() { return null; } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~ !!! error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. var lambda6 = () => { return null; } ~~~~~~~~~~~~~~~~~~~~~~ !!! error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type. var lambda7 = function temp() { return undefined; } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~ !!! error TS7010: 'temp', which lacks return-type annotation, implicitly has an 'any' return type. var lambda8 = () => { return undefined; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.js b/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.js index 4dce5ba1816..c13479daff3 100644 --- a/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.js +++ b/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.js @@ -19,7 +19,12 @@ function bar(x, y) { } ; // error at "y"; no error at "x" function func2(a, b, c) { } ; // error at "a,b,c" -function func3() { } +function func3() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } +} ; // error at "args" function func4(z, w) { if (z === void 0) { z = null; } diff --git a/tests/baselines/reference/implicitAnyFromCircularInference.errors.txt b/tests/baselines/reference/implicitAnyFromCircularInference.errors.txt index 7b80d6405c9..18292c635e6 100644 --- a/tests/baselines/reference/implicitAnyFromCircularInference.errors.txt +++ b/tests/baselines/reference/implicitAnyFromCircularInference.errors.txt @@ -36,12 +36,10 @@ tests/cases/compiler/implicitAnyFromCircularInference.ts(46,5): error TS7023: 'x // Error expected var f1 = function () { - ~~~~~~~~~~~~~ - return f1(); - ~~~~~~~~~~~~~~~~ - }; - ~ + ~~~~~~~~ !!! error TS7024: Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions. + return f1(); + }; // Error expected var f2 = () => f2(); diff --git a/tests/baselines/reference/implicitAnyFunctionReturnNullOrUndefined.errors.txt b/tests/baselines/reference/implicitAnyFunctionReturnNullOrUndefined.errors.txt index de1c57dd797..9ad1c550d72 100644 --- a/tests/baselines/reference/implicitAnyFunctionReturnNullOrUndefined.errors.txt +++ b/tests/baselines/reference/implicitAnyFunctionReturnNullOrUndefined.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(2,1): error TS7010: 'nullWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(3,1): error TS7010: 'undefinedWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(2,10): error TS7010: 'nullWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(3,10): error TS7010: 'undefinedWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(6,5): error TS7010: 'nullWidenFuncOfC', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(10,5): error TS7010: 'underfinedWidenFuncOfC', which lacks return-type annotation, implicitly has an 'any' return type. @@ -7,10 +7,10 @@ tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts(10,5): error TS ==== tests/cases/compiler/implicitAnyFunctionReturnNullOrUndefined.ts (4 errors) ==== // this should be an error function nullWidenFunction() { return null;} // error at "nullWidenFunction" - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~~~~~~~~~~~~ !!! error TS7010: 'nullWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. function undefinedWidenFunction() { return undefined; } // error at "undefinedWidenFunction" - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~~~~~~~~~~~~~~~~~~ !!! error TS7010: 'undefinedWidenFunction', which lacks return-type annotation, implicitly has an 'any' return type. class C { diff --git a/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.errors.txt b/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.errors.txt index 260dc6c9899..11f2ae90d35 100644 --- a/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.errors.txt +++ b/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(1,1): error TS7010: 'foo', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(1,18): error TS7010: 'foo', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(1,22): error TS7006: Parameter 'x' implicitly has an 'any' type. tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(2,13): error TS7005: Variable 'bar' implicitly has an 'any' type. tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(4,5): error TS7008: Member 'publicMember' implicitly has an 'any' type. @@ -10,7 +10,7 @@ tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts(13,24): error TS7006: ==== tests/cases/compiler/implicitAnyInAmbientDeclaration2.d.ts (8 errors) ==== declare function foo(x); // this should be an error - ~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS7010: 'foo', which lacks return-type annotation, implicitly has an 'any' return type. ~ !!! error TS7006: Parameter 'x' implicitly has an 'any' type. diff --git a/tests/baselines/reference/importAnImport.errors.txt b/tests/baselines/reference/importAnImport.errors.txt index 662655d3a3e..5f79b21f375 100644 --- a/tests/baselines/reference/importAnImport.errors.txt +++ b/tests/baselines/reference/importAnImport.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/importAnImport.ts(6,5): error TS2305: Module 'c.a.b' has no exported member 'ma'. +tests/cases/compiler/importAnImport.ts(6,23): error TS2305: Module 'c.a.b' has no exported member 'ma'. ==== tests/cases/compiler/importAnImport.ts (1 errors) ==== @@ -8,6 +8,6 @@ tests/cases/compiler/importAnImport.ts(6,5): error TS2305: Module 'c.a.b' has no module m0 { import m8 = c.a.b.ma; - ~~~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS2305: Module 'c.a.b' has no exported member 'ma'. } \ No newline at end of file diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict1.js b/tests/baselines/reference/importAndVariableDeclarationConflict1.js index 78484b2c295..b812deec0ef 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict1.js +++ b/tests/baselines/reference/importAndVariableDeclarationConflict1.js @@ -9,8 +9,8 @@ var x = ''; //// [importAndVariableDeclarationConflict1.js] var m; -(function (_m) { - _m.m = ''; +(function (m_1) { + m_1.m = ''; })(m || (m = {})); var x = m.m; var x = ''; diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict2.js b/tests/baselines/reference/importAndVariableDeclarationConflict2.js index bea146fe9bf..6d188b373b7 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict2.js +++ b/tests/baselines/reference/importAndVariableDeclarationConflict2.js @@ -13,8 +13,8 @@ class C { //// [importAndVariableDeclarationConflict2.js] var m; -(function (_m) { - _m.m = ''; +(function (m_1) { + m_1.m = ''; })(m || (m = {})); var x = m.m; var C = (function () { diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict3.js b/tests/baselines/reference/importAndVariableDeclarationConflict3.js index 426d44bab21..887aec16c59 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict3.js +++ b/tests/baselines/reference/importAndVariableDeclarationConflict3.js @@ -9,8 +9,8 @@ import x = m.m; //// [importAndVariableDeclarationConflict3.js] var m; -(function (_m) { - _m.m = ''; +(function (m_1) { + m_1.m = ''; })(m || (m = {})); var x = m.m; var x = m.m; diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict4.js b/tests/baselines/reference/importAndVariableDeclarationConflict4.js index 2adb78594a2..4949df6366a 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict4.js +++ b/tests/baselines/reference/importAndVariableDeclarationConflict4.js @@ -9,8 +9,8 @@ import x = m.m; //// [importAndVariableDeclarationConflict4.js] var m; -(function (_m) { - _m.m = ''; +(function (m_1) { + m_1.m = ''; })(m || (m = {})); var x = ''; var x = m.m; diff --git a/tests/baselines/reference/importDeclWithClassModifiers.errors.txt b/tests/baselines/reference/importDeclWithClassModifiers.errors.txt index 19d30ae1b63..b7f60881e6e 100644 --- a/tests/baselines/reference/importDeclWithClassModifiers.errors.txt +++ b/tests/baselines/reference/importDeclWithClassModifiers.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/importDeclWithClassModifiers.ts(5,1): error TS2305: Module 'x' has no exported member 'c'. tests/cases/compiler/importDeclWithClassModifiers.ts(5,8): error TS1044: 'public' modifier cannot appear on a module element. -tests/cases/compiler/importDeclWithClassModifiers.ts(6,1): error TS2305: Module 'x' has no exported member 'c'. +tests/cases/compiler/importDeclWithClassModifiers.ts(5,28): error TS2305: Module 'x' has no exported member 'c'. tests/cases/compiler/importDeclWithClassModifiers.ts(6,8): error TS1044: 'private' modifier cannot appear on a module element. -tests/cases/compiler/importDeclWithClassModifiers.ts(7,1): error TS2305: Module 'x' has no exported member 'c'. +tests/cases/compiler/importDeclWithClassModifiers.ts(6,29): error TS2305: Module 'x' has no exported member 'c'. tests/cases/compiler/importDeclWithClassModifiers.ts(7,8): error TS1044: 'static' modifier cannot appear on a module element. +tests/cases/compiler/importDeclWithClassModifiers.ts(7,28): error TS2305: Module 'x' has no exported member 'c'. ==== tests/cases/compiler/importDeclWithClassModifiers.ts (6 errors) ==== @@ -12,19 +12,19 @@ tests/cases/compiler/importDeclWithClassModifiers.ts(7,8): error TS1044: 'static } } export public import a = x.c; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2305: Module 'x' has no exported member 'c'. ~~~~~~ !!! error TS1044: 'public' modifier cannot appear on a module element. - export private import b = x.c; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2305: Module 'x' has no exported member 'c'. + export private import b = x.c; ~~~~~~~ !!! error TS1044: 'private' modifier cannot appear on a module element. - export static import c = x.c; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2305: Module 'x' has no exported member 'c'. + export static import c = x.c; ~~~~~~ !!! error TS1044: 'static' modifier cannot appear on a module element. + ~ +!!! error TS2305: Module 'x' has no exported member 'c'. var b: a; \ No newline at end of file diff --git a/tests/baselines/reference/importDeclWithDeclareModifier.errors.txt b/tests/baselines/reference/importDeclWithDeclareModifier.errors.txt index dc7462a699f..56da8354977 100644 --- a/tests/baselines/reference/importDeclWithDeclareModifier.errors.txt +++ b/tests/baselines/reference/importDeclWithDeclareModifier.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/importDeclWithDeclareModifier.ts(5,1): error TS1148: Cannot compile external modules unless the '--module' flag is provided. -tests/cases/compiler/importDeclWithDeclareModifier.ts(5,1): error TS2305: Module 'x' has no exported member 'c'. tests/cases/compiler/importDeclWithDeclareModifier.ts(5,9): error TS1029: 'export' modifier must precede 'declare' modifier. +tests/cases/compiler/importDeclWithDeclareModifier.ts(5,29): error TS2305: Module 'x' has no exported member 'c'. ==== tests/cases/compiler/importDeclWithDeclareModifier.ts (3 errors) ==== @@ -11,9 +11,9 @@ tests/cases/compiler/importDeclWithDeclareModifier.ts(5,9): error TS1029: 'expor declare export import a = x.c; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2305: Module 'x' has no exported member 'c'. ~~~~~~ !!! error TS1029: 'export' modifier must precede 'declare' modifier. + ~ +!!! error TS2305: Module 'x' has no exported member 'c'. var b: a; \ No newline at end of file diff --git a/tests/baselines/reference/importDeclWithExportModifier.errors.txt b/tests/baselines/reference/importDeclWithExportModifier.errors.txt index e1d75496a39..9fb53fbd3ea 100644 --- a/tests/baselines/reference/importDeclWithExportModifier.errors.txt +++ b/tests/baselines/reference/importDeclWithExportModifier.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/importDeclWithExportModifier.ts(5,1): error TS2305: Module 'x' has no exported member 'c'. +tests/cases/compiler/importDeclWithExportModifier.ts(5,21): error TS2305: Module 'x' has no exported member 'c'. ==== tests/cases/compiler/importDeclWithExportModifier.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/compiler/importDeclWithExportModifier.ts(5,1): error TS2305: Module } } export import a = x.c; - ~~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2305: Module 'x' has no exported member 'c'. var b: a; \ No newline at end of file diff --git a/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.errors.txt b/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.errors.txt index b7d938fbd58..4d2084b7f08 100644 --- a/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.errors.txt +++ b/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/importDeclWithExportModifierAndExportAssignment.ts(5,1): error TS2305: Module 'x' has no exported member 'c'. +tests/cases/compiler/importDeclWithExportModifierAndExportAssignment.ts(5,21): error TS2305: Module 'x' has no exported member 'c'. tests/cases/compiler/importDeclWithExportModifierAndExportAssignment.ts(6,1): error TS2309: An export assignment cannot be used in a module with other exported elements. @@ -8,7 +8,7 @@ tests/cases/compiler/importDeclWithExportModifierAndExportAssignment.ts(6,1): er } } export import a = x.c; - ~~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2305: Module 'x' has no exported member 'c'. export = x; ~~~~~~~~~~~ diff --git a/tests/baselines/reference/importUsedInExtendsList1.types b/tests/baselines/reference/importUsedInExtendsList1.types index 7261c34e75e..623b14e36aa 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.types +++ b/tests/baselines/reference/importUsedInExtendsList1.types @@ -5,7 +5,7 @@ import foo = require('importUsedInExtendsList1_require'); class Sub extends foo.Super { } >Sub : Sub ->foo : unknown +>foo : typeof foo >Super : foo.Super var s: Sub; diff --git a/tests/baselines/reference/importedModuleAddToGlobal.errors.txt b/tests/baselines/reference/importedModuleAddToGlobal.errors.txt index 2ffd16ecbf2..8948c67f78b 100644 --- a/tests/baselines/reference/importedModuleAddToGlobal.errors.txt +++ b/tests/baselines/reference/importedModuleAddToGlobal.errors.txt @@ -17,6 +17,6 @@ tests/cases/compiler/importedModuleAddToGlobal.ts(15,23): error TS2304: Cannot f module C { import a = A; function hello(): b.B { return null; } - ~~~ + ~ !!! error TS2304: Cannot find name 'b'. } \ No newline at end of file diff --git a/tests/baselines/reference/importedModuleAddToGlobal.js b/tests/baselines/reference/importedModuleAddToGlobal.js index dd7dfcd5fc9..015631dc965 100644 --- a/tests/baselines/reference/importedModuleAddToGlobal.js +++ b/tests/baselines/reference/importedModuleAddToGlobal.js @@ -18,13 +18,13 @@ module C { //// [importedModuleAddToGlobal.js] var B; -(function (_B) { +(function (B_1) { var B = (function () { function B() { } return B; })(); - _B.B = B; + B_1.B = B; })(B || (B = {})); var C; (function (C) { diff --git a/tests/baselines/reference/inOperatorWithInvalidOperands.js b/tests/baselines/reference/inOperatorWithInvalidOperands.js index 29293f880ed..005681b6285 100644 --- a/tests/baselines/reference/inOperatorWithInvalidOperands.js +++ b/tests/baselines/reference/inOperatorWithInvalidOperands.js @@ -61,7 +61,7 @@ var ra3 = a3 in x; var ra4 = a4 in x; var ra5 = null in x; var ra6 = undefined in x; -var ra7 = 0 /* a */ in x; +var ra7 = E.a in x; var ra8 = false in x; var ra9 = {} in x; // invalid right operands diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index 01e4531031a..504ff0088fa 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -17,6 +17,7 @@ tests/cases/compiler/incompatibleTypes.ts(33,7): error TS2420: Class 'C4' incorr tests/cases/compiler/incompatibleTypes.ts(42,5): error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. Types of property 'p1' are incompatible. Type '() => string' is not assignable to type '(s: string) => number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(49,5): error TS2345: Argument of type '{ e: number; f: number; }' is not assignable to parameter of type '{ c: { b: string; }; d: string; }'. Property 'c' is missing in type '{ e: number; f: number; }'. tests/cases/compiler/incompatibleTypes.ts(66,5): error TS2322: Type '{ e: number; f: number; }' is not assignable to type '{ a: { a: string; }; b: string; }'. @@ -92,6 +93,7 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. !!! error TS2345: Types of property 'p1' are incompatible. !!! error TS2345: Type '() => string' is not assignable to type '(s: string) => number'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. function of1(n: { a: { a: string; }; b: string; }): number; diff --git a/tests/baselines/reference/incrementAndDecrement.js b/tests/baselines/reference/incrementAndDecrement.js index 96794e3c956..09c0b3ae490 100644 --- a/tests/baselines/reference/incrementAndDecrement.js +++ b/tests/baselines/reference/incrementAndDecrement.js @@ -70,7 +70,7 @@ var E; })(E || (E = {})); ; var x = 4; -var e = 1 /* B */; +var e = E.B; var a; var w = window; // Assign to expression++ diff --git a/tests/baselines/reference/incrementOperatorWithEnumType.js b/tests/baselines/reference/incrementOperatorWithEnumType.js index 590815ffec5..e3e843a45da 100644 --- a/tests/baselines/reference/incrementOperatorWithEnumType.js +++ b/tests/baselines/reference/incrementOperatorWithEnumType.js @@ -22,8 +22,8 @@ var ENUM1; })(ENUM1 || (ENUM1 = {})); ; // expression -var ResultIsNumber1 = ++1 /* "B" */; -var ResultIsNumber2 = 1 /* B */++; +var ResultIsNumber1 = ++ENUM1["B"]; +var ResultIsNumber2 = ENUM1.B++; // miss assignment operator -++1 /* "B" */; -1 /* B */++; +++ENUM1["B"]; +ENUM1.B++; diff --git a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.js b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.js index de0c107e561..97fefc0571c 100644 --- a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.js +++ b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.js @@ -12,9 +12,24 @@ i(a); // OK //// [inferTypeArgumentsInSignatureWithRestParameters.js] -function f(array) { } -function g(array) { } -function h(nonarray) { } +function f(array) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } +} +function g(array) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } +} +function h(nonarray) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } +} function i(array, opt) { } var a = [1, 2, 3, 4, 5]; f(a); // OK diff --git a/tests/baselines/reference/inferredFunctionReturnTypeIsEmptyType.errors.txt b/tests/baselines/reference/inferredFunctionReturnTypeIsEmptyType.errors.txt index 915e75dd6da..99819ecad2c 100644 --- a/tests/baselines/reference/inferredFunctionReturnTypeIsEmptyType.errors.txt +++ b/tests/baselines/reference/inferredFunctionReturnTypeIsEmptyType.errors.txt @@ -1,22 +1,15 @@ -tests/cases/compiler/inferredFunctionReturnTypeIsEmptyType.ts(1,1): error TS2354: No best common type exists among return expressions. +tests/cases/compiler/inferredFunctionReturnTypeIsEmptyType.ts(1,10): error TS2354: No best common type exists among return expressions. ==== tests/cases/compiler/inferredFunctionReturnTypeIsEmptyType.ts (1 errors) ==== function foo() { - ~~~~~~~~~~~~~~~~ - if (true) { - ~~~~~~~~~~~~~~~ - return 42; - ~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - else { - ~~~~~~~~~~ - return "42"; - ~~~~~~~~~~~~~~~~~~~~ - } - ~~~~~ - }; - ~ + ~~~ !!! error TS2354: No best common type exists among return expressions. + if (true) { + return 42; + } + else { + return "42"; + } + }; \ No newline at end of file diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types index 2a71136613f..69b2ebb608d 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types @@ -14,13 +14,13 @@ module N { export class D1 extends M.C1 { } >D1 : D1 ->M : unknown +>M : typeof M >C1 : M.C1 export class D2 extends M.C2 { } >D2 : D2 >T : T ->M : unknown +>M : typeof M >C2 : M.C2 >T : T } diff --git a/tests/baselines/reference/initializePropertiesWithRenamedLet.js b/tests/baselines/reference/initializePropertiesWithRenamedLet.js new file mode 100644 index 00000000000..d4f985bea56 --- /dev/null +++ b/tests/baselines/reference/initializePropertiesWithRenamedLet.js @@ -0,0 +1,34 @@ +//// [initializePropertiesWithRenamedLet.ts] + +var x0; +if (true) { + let x0; + var obj1 = { x0: x0 }; + var obj2 = { x0 }; +} + +var x, y, z; +if (true) { + let { x: x } = { x: 0 }; + let { y } = { y: 0 }; + let z; + ({ z: z } = { z: 0 }); + ({ z } = { z: 0 }); +} + +//// [initializePropertiesWithRenamedLet.js] +var x0; +if (true) { + var x0_1; + var obj1 = { x0: x0_1 }; + var obj2 = { x0: x0_1 }; +} +var x, y, z; +if (true) { + var x_1 = ({ x: 0 }).x; + var y_1 = ({ y: 0 }).y; + var z_1; + (_a = { z: 0 }, z_1 = _a.z, _a); + (_b = { z: 0 }, z_1 = _b.z, _b); +} +var _a, _b; diff --git a/tests/baselines/reference/initializePropertiesWithRenamedLet.types b/tests/baselines/reference/initializePropertiesWithRenamedLet.types new file mode 100644 index 00000000000..77f16756fdb --- /dev/null +++ b/tests/baselines/reference/initializePropertiesWithRenamedLet.types @@ -0,0 +1,58 @@ +=== tests/cases/compiler/initializePropertiesWithRenamedLet.ts === + +var x0; +>x0 : any + +if (true) { + let x0; +>x0 : any + + var obj1 = { x0: x0 }; +>obj1 : { x0: any; } +>{ x0: x0 } : { x0: any; } +>x0 : any +>x0 : any + + var obj2 = { x0 }; +>obj2 : { x0: any; } +>{ x0 } : { x0: any; } +>x0 : any +} + +var x, y, z; +>x : any +>y : any +>z : any + +if (true) { + let { x: x } = { x: 0 }; +>x : unknown +>x : number +>{ x: 0 } : { x: number; } +>x : number + + let { y } = { y: 0 }; +>y : number +>{ y: 0 } : { y: number; } +>y : number + + let z; +>z : any + + ({ z: z } = { z: 0 }); +>({ z: z } = { z: 0 }) : { z: number; } +>{ z: z } = { z: 0 } : { z: number; } +>{ z: z } : { z: any; } +>z : any +>z : any +>{ z: 0 } : { z: number; } +>z : number + + ({ z } = { z: 0 }); +>({ z } = { z: 0 }) : { z: number; } +>{ z } = { z: 0 } : { z: number; } +>{ z } : { z: any; } +>z : any +>{ z: 0 } : { z: number; } +>z : number +} diff --git a/tests/baselines/reference/innerAliases.errors.txt b/tests/baselines/reference/innerAliases.errors.txt index b5135c19d12..e4699c0825b 100644 --- a/tests/baselines/reference/innerAliases.errors.txt +++ b/tests/baselines/reference/innerAliases.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/innerAliases.ts(19,8): error TS2305: Module 'D' has no exported member 'inner'. +tests/cases/compiler/innerAliases.ts(19,10): error TS2305: Module 'D' has no exported member 'inner'. tests/cases/compiler/innerAliases.ts(21,11): error TS2339: Property 'inner' does not exist on type 'typeof D'. @@ -22,7 +22,7 @@ tests/cases/compiler/innerAliases.ts(21,11): error TS2339: Property 'inner' does } var c: D.inner.Class1; - ~~~~~~~~~~~~~~ + ~~~~~ !!! error TS2305: Module 'D' has no exported member 'inner'. c = new D.inner.Class1(); diff --git a/tests/baselines/reference/instantiateTypeParameter.errors.txt b/tests/baselines/reference/instantiateTypeParameter.errors.txt index e8685251f9c..d3e30665b22 100644 --- a/tests/baselines/reference/instantiateTypeParameter.errors.txt +++ b/tests/baselines/reference/instantiateTypeParameter.errors.txt @@ -8,7 +8,7 @@ tests/cases/compiler/instantiateTypeParameter.ts(3,1): error TS1128: Declaration var x: T<>; ~~~ !!! error TS1131: Property or signature expected. - ~~~ + ~ !!! error TS2304: Cannot find name 'T'. } ~ diff --git a/tests/baselines/reference/instantiatedModule.js b/tests/baselines/reference/instantiatedModule.js index 21411e09ff1..8cabdeabe49 100644 --- a/tests/baselines/reference/instantiatedModule.js +++ b/tests/baselines/reference/instantiatedModule.js @@ -112,7 +112,7 @@ var m3 = M3; var a3; var a3 = m3.Color; var a3 = M3.Color; -var blue = 0 /* Blue */; +var blue = a3.Blue; var p3; -var p3 = 1 /* Red */; -var p3 = 0 /* Blue */; +var p3 = M3.Color.Red; +var p3 = m3.Color.Blue; diff --git a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt index 425aa3b3e97..237358b42de 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt +++ b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(32,18): error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. Types of parameters 'a' and 'a' are incompatible. Type 'IFrenchEye' is not assignable to type 'IEye'. + Property 'color' is missing in type 'IFrenchEye'. tests/cases/compiler/interfaceAssignmentCompat.ts(37,29): error TS2339: Property '_map' does not exist on type 'typeof Color'. tests/cases/compiler/interfaceAssignmentCompat.ts(42,13): error TS2322: Type 'IEye' is not assignable to type 'IFrenchEye'. Property 'coleur' is missing in type 'IEye'. @@ -45,6 +46,7 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEy !!! error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. !!! error TS2345: Types of parameters 'a' and 'a' are incompatible. !!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. +!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. // type of z inferred from specialized array type var z=x.sort(CompareEyes); // ok diff --git a/tests/baselines/reference/interfaceAssignmentCompat.js b/tests/baselines/reference/interfaceAssignmentCompat.js index 1037df1769e..edaebbd38a2 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.js +++ b/tests/baselines/reference/interfaceAssignmentCompat.js @@ -72,9 +72,9 @@ var M; function test() { var x = []; var result = ""; - x[0] = { color: 2 /* Brown */ }; - x[1] = { color: 1 /* Blue */ }; - x[2] = { color: 0 /* Green */ }; + x[0] = { color: Color.Brown }; + x[1] = { color: Color.Blue }; + x[2] = { color: Color.Green }; x = x.sort(CompareYeux); // parameter mismatch // type of z inferred from specialized array type var z = x.sort(CompareEyes); // ok diff --git a/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.errors.txt b/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.errors.txt index 06abf0987d6..f6ec9e02bbf 100644 --- a/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.errors.txt +++ b/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.errors.txt @@ -1,15 +1,12 @@ -tests/cases/compiler/interfaceMayNotBeExtendedWitACall.ts(3,29): error TS1005: ',' expected. -tests/cases/compiler/interfaceMayNotBeExtendedWitACall.ts(3,32): error TS1005: '=>' expected. +tests/cases/compiler/interfaceMayNotBeExtendedWitACall.ts(3,24): error TS2499: An interface can only extend an identifier/qualified-name with optional type arguments. -==== tests/cases/compiler/interfaceMayNotBeExtendedWitACall.ts (2 errors) ==== +==== tests/cases/compiler/interfaceMayNotBeExtendedWitACall.ts (1 errors) ==== interface color {} interface blue extends color() { // error - ~ -!!! error TS1005: ',' expected. - ~ -!!! error TS1005: '=>' expected. + ~~~~~~~ +!!! error TS2499: An interface can only extend an identifier/qualified-name with optional type arguments. } \ No newline at end of file diff --git a/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.js b/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.js index a283722d6ad..f2660dd64f3 100644 --- a/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.js +++ b/tests/baselines/reference/interfaceMayNotBeExtendedWitACall.js @@ -7,5 +7,3 @@ interface blue extends color() { // error //// [interfaceMayNotBeExtendedWitACall.js] -(function () { -}); diff --git a/tests/baselines/reference/interfaceWithPropertyOfEveryType.js b/tests/baselines/reference/interfaceWithPropertyOfEveryType.js index a7605dd52bc..90c0d257d61 100644 --- a/tests/baselines/reference/interfaceWithPropertyOfEveryType.js +++ b/tests/baselines/reference/interfaceWithPropertyOfEveryType.js @@ -72,5 +72,5 @@ var a = { l: f1, m: M, n: {}, - o: 0 /* A */ + o: E.A }; diff --git a/tests/baselines/reference/internalAliasEnum.js b/tests/baselines/reference/internalAliasEnum.js index b5c68ea5c16..6400cf26ddc 100644 --- a/tests/baselines/reference/internalAliasEnum.js +++ b/tests/baselines/reference/internalAliasEnum.js @@ -26,7 +26,7 @@ var a; var c; (function (c) { var b = a.weekend; - c.bVal = 2 /* Sunday */; + c.bVal = b.Sunday; })(c || (c = {})); diff --git a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithExport.js b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithExport.js index e21dd355322..f2223b197e0 100644 --- a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithExport.js +++ b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithExport.js @@ -26,7 +26,7 @@ var a; var c; (function (c) { c.b = a.weekend; - c.bVal = 2 /* Sunday */; + c.bVal = c.b.Sunday; })(c = exports.c || (exports.c = {})); diff --git a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExport.js b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExport.js index 3d60e055ede..afd6597869b 100644 --- a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExport.js +++ b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExport.js @@ -26,7 +26,7 @@ var a; var c; (function (c) { var b = a.weekend; - c.bVal = 2 /* Sunday */; + c.bVal = b.Sunday; })(c = exports.c || (exports.c = {})); diff --git a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExportAccessError.js b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExportAccessError.js index f050d6f9a55..acd3f4c61b1 100644 --- a/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExportAccessError.js +++ b/tests/baselines/reference/internalAliasEnumInsideLocalModuleWithoutExportAccessError.js @@ -27,6 +27,6 @@ var a; var c; (function (c) { var b = a.weekend; - c.bVal = 2 /* Sunday */; + c.bVal = b.Sunday; })(c = exports.c || (exports.c = {})); var happyFriday = c.b.Friday; diff --git a/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithExport.js b/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithExport.js index e4dc73b2403..96e17c6f6e3 100644 --- a/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithExport.js +++ b/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithExport.js @@ -23,7 +23,7 @@ define(["require", "exports"], function (require, exports) { var weekend = a.weekend; })(a = exports.a || (exports.a = {})); exports.b = a.weekend; - exports.bVal = 2 /* Sunday */; + exports.bVal = exports.b.Sunday; }); diff --git a/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithoutExport.js b/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithoutExport.js index e81093147e8..b224c22f45e 100644 --- a/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithoutExport.js +++ b/tests/baselines/reference/internalAliasEnumInsideTopLevelModuleWithoutExport.js @@ -23,7 +23,7 @@ define(["require", "exports"], function (require, exports) { var weekend = a.weekend; })(a = exports.a || (exports.a = {})); var b = a.weekend; - exports.bVal = 2 /* Sunday */; + exports.bVal = b.Sunday; }); diff --git a/tests/baselines/reference/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.errors.txt b/tests/baselines/reference/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.errors.txt index 9b5bf66844d..7bd34f1d5d3 100644 --- a/tests/baselines/reference/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.errors.txt +++ b/tests/baselines/reference/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.ts(11,8): error TS2305: Module '"tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. +tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.ts(11,10): error TS2305: Module '"tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. ==== tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError.ts (1 errors) ==== @@ -13,5 +13,5 @@ tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessE } var x: c.b; - ~~~ + ~ !!! error TS2305: Module '"tests/cases/compiler/internalAliasInterfaceInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. \ No newline at end of file diff --git a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.errors.txt b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.errors.txt index 33bb8f16331..865929890c0 100644 --- a/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.errors.txt +++ b/tests/baselines/reference/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.ts(16,15): error TS2305: Module '"tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. +tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.ts(16,17): error TS2305: Module '"tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. ==== tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError.ts (1 errors) ==== @@ -18,5 +18,5 @@ tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExp export var z: c.b.I; - ~~~~~ + ~ !!! error TS2305: Module '"tests/cases/compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExportAccessError".c' has no exported member 'b'. \ No newline at end of file diff --git a/tests/baselines/reference/invalidEnumAssignments.js b/tests/baselines/reference/invalidEnumAssignments.js index b9bb9e12ced..dfdd0600ed0 100644 --- a/tests/baselines/reference/invalidEnumAssignments.js +++ b/tests/baselines/reference/invalidEnumAssignments.js @@ -35,8 +35,8 @@ var E2; })(E2 || (E2 = {})); var e; var e2; -e = 0 /* A */; -e2 = 0 /* A */; +e = E2.A; +e2 = E.A; e = null; e = {}; e = ''; diff --git a/tests/baselines/reference/invalidImportAliasIdentifiers.errors.txt b/tests/baselines/reference/invalidImportAliasIdentifiers.errors.txt index ea582635856..7794fb027d7 100644 --- a/tests/baselines/reference/invalidImportAliasIdentifiers.errors.txt +++ b/tests/baselines/reference/invalidImportAliasIdentifiers.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(5,1): error TS2304: Cannot find name 'V'. -tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(11,1): error TS2304: Cannot find name 'C'. -tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(17,1): error TS2304: Cannot find name 'E'. -tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(23,1): error TS2304: Cannot find name 'I'. +tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(5,12): error TS2304: Cannot find name 'V'. +tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(11,12): error TS2304: Cannot find name 'C'. +tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(17,12): error TS2304: Cannot find name 'E'. +tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts(23,12): error TS2304: Cannot find name 'I'. ==== tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts (4 errors) ==== @@ -10,7 +10,7 @@ tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIde var V = 12; import v = V; - ~~~~~~~~~~~~~ + ~ !!! error TS2304: Cannot find name 'V'. class C { @@ -18,7 +18,7 @@ tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIde } import c = C; - ~~~~~~~~~~~~~ + ~ !!! error TS2304: Cannot find name 'C'. enum E { @@ -26,7 +26,7 @@ tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIde } import e = E; - ~~~~~~~~~~~~~ + ~ !!! error TS2304: Cannot find name 'E'. interface I { @@ -34,6 +34,6 @@ tests/cases/conformance/internalModules/importDeclarations/invalidImportAliasIde } import i = I; - ~~~~~~~~~~~~~ + ~ !!! error TS2304: Cannot find name 'I'. \ No newline at end of file diff --git a/tests/baselines/reference/invalidInstantiatedModule.errors.txt b/tests/baselines/reference/invalidInstantiatedModule.errors.txt index 5a8ac069803..8bd7e6492c0 100644 --- a/tests/baselines/reference/invalidInstantiatedModule.errors.txt +++ b/tests/baselines/reference/invalidInstantiatedModule.errors.txt @@ -20,7 +20,7 @@ tests/cases/conformance/internalModules/moduleDeclarations/invalidInstantiatedMo var m = M2; var p: m.Point; // Error - ~~~~~~~ + ~ !!! error TS2304: Cannot find name 'm'. diff --git a/tests/baselines/reference/invalidTryStatements.errors.txt b/tests/baselines/reference/invalidTryStatements.errors.txt index 4dacdb8f4b6..a2f8a7bac0c 100644 --- a/tests/baselines/reference/invalidTryStatements.errors.txt +++ b/tests/baselines/reference/invalidTryStatements.errors.txt @@ -1,6 +1,6 @@ -tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(8,21): error TS1013: Catch clause parameter cannot have a type annotation. -tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(9,21): error TS1013: Catch clause parameter cannot have a type annotation. -tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(10,21): error TS1013: Catch clause parameter cannot have a type annotation. +tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(8,23): error TS1196: Catch clause variable cannot have a type annotation. +tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(9,23): error TS1196: Catch clause variable cannot have a type annotation. +tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(10,23): error TS1196: Catch clause variable cannot have a type annotation. ==== tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts (3 errors) ==== @@ -12,14 +12,14 @@ tests/cases/conformance/statements/tryStatements/invalidTryStatements.ts(10,21): // no type annotation allowed try { } catch (z: any) { } - ~ -!!! error TS1013: Catch clause parameter cannot have a type annotation. + ~~~ +!!! error TS1196: Catch clause variable cannot have a type annotation. try { } catch (a: number) { } - ~ -!!! error TS1013: Catch clause parameter cannot have a type annotation. + ~~~~~~ +!!! error TS1196: Catch clause variable cannot have a type annotation. try { } catch (y: string) { } - ~ -!!! error TS1013: Catch clause parameter cannot have a type annotation. + ~~~~~~ +!!! error TS1196: Catch clause variable cannot have a type annotation. } \ No newline at end of file diff --git a/tests/baselines/reference/invalidUndefinedAssignments.js b/tests/baselines/reference/invalidUndefinedAssignments.js index 1feba71212d..dc846900ebb 100644 --- a/tests/baselines/reference/invalidUndefinedAssignments.js +++ b/tests/baselines/reference/invalidUndefinedAssignments.js @@ -28,7 +28,7 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); E = x; -0 /* A */ = x; +E.A = x; var C = (function () { function C() { } diff --git a/tests/baselines/reference/invalidUndefinedValues.js b/tests/baselines/reference/invalidUndefinedValues.js index 819bf114cec..a0ed1b4f98a 100644 --- a/tests/baselines/reference/invalidUndefinedValues.js +++ b/tests/baselines/reference/invalidUndefinedValues.js @@ -64,4 +64,4 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); x = E; -x = 0 /* A */; +x = E.A; diff --git a/tests/baselines/reference/invalidVoidAssignments.js b/tests/baselines/reference/invalidVoidAssignments.js index 40b83d329c1..1ce03d1382a 100644 --- a/tests/baselines/reference/invalidVoidAssignments.js +++ b/tests/baselines/reference/invalidVoidAssignments.js @@ -58,5 +58,5 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); x = E; -x = 0 /* A */; +x = E.A; x = { f: function () { } }; diff --git a/tests/baselines/reference/invalidVoidValues.js b/tests/baselines/reference/invalidVoidValues.js index 658ebc7e1ca..409df03ef37 100644 --- a/tests/baselines/reference/invalidVoidValues.js +++ b/tests/baselines/reference/invalidVoidValues.js @@ -36,7 +36,7 @@ var E; E[E["A"] = 0] = "A"; })(E || (E = {})); x = E; -x = 0 /* A */; +x = E.A; var C = (function () { function C() { } diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js index d357922f5bc..8604ec493a2 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.js +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.js @@ -72,67 +72,67 @@ module schema { //// [isDeclarationVisibleNodeKinds.js] // Function types var schema; -(function (_schema) { +(function (schema_1) { function createValidator1(schema) { return undefined; } - _schema.createValidator1 = createValidator1; + schema_1.createValidator1 = createValidator1; })(schema || (schema = {})); // Constructor types var schema; -(function (_schema_1) { +(function (schema_2) { function createValidator2(schema) { return undefined; } - _schema_1.createValidator2 = createValidator2; + schema_2.createValidator2 = createValidator2; })(schema || (schema = {})); // union types var schema; -(function (_schema_2) { +(function (schema_3) { function createValidator3(schema) { return undefined; } - _schema_2.createValidator3 = createValidator3; + schema_3.createValidator3 = createValidator3; })(schema || (schema = {})); // Array types var schema; -(function (_schema_3) { +(function (schema_4) { function createValidator4(schema) { return undefined; } - _schema_3.createValidator4 = createValidator4; + schema_4.createValidator4 = createValidator4; })(schema || (schema = {})); // TypeLiterals var schema; -(function (_schema_4) { +(function (schema_5) { function createValidator5(schema) { return undefined; } - _schema_4.createValidator5 = createValidator5; + schema_5.createValidator5 = createValidator5; })(schema || (schema = {})); // Tuple types var schema; -(function (_schema_5) { +(function (schema_6) { function createValidator6(schema) { return undefined; } - _schema_5.createValidator6 = createValidator6; + schema_6.createValidator6 = createValidator6; })(schema || (schema = {})); // Paren Types var schema; -(function (_schema_6) { +(function (schema_7) { function createValidator7(schema) { return undefined; } - _schema_6.createValidator7 = createValidator7; + schema_7.createValidator7 = createValidator7; })(schema || (schema = {})); // Type reference var schema; -(function (_schema_7) { +(function (schema_8) { function createValidator8(schema) { return undefined; } - _schema_7.createValidator8 = createValidator8; + schema_8.createValidator8 = createValidator8; })(schema || (schema = {})); var schema; (function (schema) { diff --git a/tests/baselines/reference/iterableContextualTyping1.js b/tests/baselines/reference/iterableContextualTyping1.js new file mode 100644 index 00000000000..8621bbd8417 --- /dev/null +++ b/tests/baselines/reference/iterableContextualTyping1.js @@ -0,0 +1,5 @@ +//// [iterableContextualTyping1.ts] +var iter: Iterable<(x: string) => number> = [s => s.length]; + +//// [iterableContextualTyping1.js] +var iter = [s => s.length]; diff --git a/tests/baselines/reference/iterableContextualTyping1.types b/tests/baselines/reference/iterableContextualTyping1.types new file mode 100644 index 00000000000..386d64312fc --- /dev/null +++ b/tests/baselines/reference/iterableContextualTyping1.types @@ -0,0 +1,12 @@ +=== tests/cases/conformance/expressions/contextualTyping/iterableContextualTyping1.ts === +var iter: Iterable<(x: string) => number> = [s => s.length]; +>iter : Iterable<(x: string) => number> +>Iterable : Iterable +>x : string +>[s => s.length] : ((s: string) => number)[] +>s => s.length : (s: string) => number +>s : string +>s.length : number +>s : string +>length : number + diff --git a/tests/baselines/reference/letAsIdentifierInStrictMode.js b/tests/baselines/reference/letAsIdentifierInStrictMode.js index e844bc1d1dc..ccf099bcfc4 100644 --- a/tests/baselines/reference/letAsIdentifierInStrictMode.js +++ b/tests/baselines/reference/letAsIdentifierInStrictMode.js @@ -9,9 +9,9 @@ a; //// [letAsIdentifierInStrictMode.js] "use strict"; var ; -let ; +var ; 10; var a = 10; -let ; +var ; 30; -let a; +var a; diff --git a/tests/baselines/reference/letConstInCaseClauses.errors.txt b/tests/baselines/reference/letConstInCaseClauses.errors.txt new file mode 100644 index 00000000000..af0777d56a4 --- /dev/null +++ b/tests/baselines/reference/letConstInCaseClauses.errors.txt @@ -0,0 +1,39 @@ +tests/cases/compiler/letConstInCaseClauses.ts(7,5): error TS2304: Cannot find name 'console'. +tests/cases/compiler/letConstInCaseClauses.ts(21,5): error TS2304: Cannot find name 'console'. + + +==== tests/cases/compiler/letConstInCaseClauses.ts (2 errors) ==== + + var x = 10; + var y = 20; + { + let x = 1; + let y = 2; + console.log(x) + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + switch (x) { + case 10: + let x = 20; + } + switch (y) { + case 10: + let y = 20; + } + } + + { + const x = 1; + const y = 2; + console.log(x) + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + switch (x) { + case 10: + const x = 20; + } + switch (y) { + case 10: + const y = 20; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/letConstInCaseClauses.js b/tests/baselines/reference/letConstInCaseClauses.js new file mode 100644 index 00000000000..33650dcaf4c --- /dev/null +++ b/tests/baselines/reference/letConstInCaseClauses.js @@ -0,0 +1,61 @@ +//// [letConstInCaseClauses.ts] + +var x = 10; +var y = 20; +{ + let x = 1; + let y = 2; + console.log(x) + switch (x) { + case 10: + let x = 20; + } + switch (y) { + case 10: + let y = 20; + } +} + +{ + const x = 1; + const y = 2; + console.log(x) + switch (x) { + case 10: + const x = 20; + } + switch (y) { + case 10: + const y = 20; + } +} + +//// [letConstInCaseClauses.js] +var x = 10; +var y = 20; +{ + var x_1 = 1; + var y_1 = 2; + console.log(x_1); + switch (x_1) { + case 10: + var x_2 = 20; + } + switch (y_1) { + case 10: + var y_2 = 20; + } +} +{ + var x_3 = 1; + var y_3 = 2; + console.log(x_3); + switch (x_3) { + case 10: + var x_4 = 20; + } + switch (y_3) { + case 10: + var y_4 = 20; + } +} diff --git a/tests/baselines/reference/letConstMatchingParameterNames.js b/tests/baselines/reference/letConstMatchingParameterNames.js new file mode 100644 index 00000000000..392f0e7ae94 --- /dev/null +++ b/tests/baselines/reference/letConstMatchingParameterNames.js @@ -0,0 +1,28 @@ +//// [letConstMatchingParameterNames.ts] +let parent = true; +const parent2 = true; +declare function use(a: any); + +function a() { + + let parent = 1; + const parent2 = 2; + + function b(parent: string, parent2: number) { + use(parent); + use(parent2); + } +} + + +//// [letConstMatchingParameterNames.js] +var parent = true; +var parent2 = true; +function a() { + var parent = 1; + var parent2 = 2; + function b(parent, parent2) { + use(parent); + use(parent2); + } +} diff --git a/tests/baselines/reference/letConstMatchingParameterNames.types b/tests/baselines/reference/letConstMatchingParameterNames.types new file mode 100644 index 00000000000..66fccc637df --- /dev/null +++ b/tests/baselines/reference/letConstMatchingParameterNames.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/letConstMatchingParameterNames.ts === +let parent = true; +>parent : boolean + +const parent2 = true; +>parent2 : boolean + +declare function use(a: any); +>use : (a: any) => any +>a : any + +function a() { +>a : () => void + + let parent = 1; +>parent : number + + const parent2 = 2; +>parent2 : number + + function b(parent: string, parent2: number) { +>b : (parent: string, parent2: number) => void +>parent : string +>parent2 : number + + use(parent); +>use(parent) : any +>use : (a: any) => any +>parent : string + + use(parent2); +>use(parent2) : any +>use : (a: any) => any +>parent2 : number + } +} + diff --git a/tests/baselines/reference/letDeclarations-es5-1.errors.txt b/tests/baselines/reference/letDeclarations-es5-1.errors.txt deleted file mode 100644 index f8b5cf629d2..00000000000 --- a/tests/baselines/reference/letDeclarations-es5-1.errors.txt +++ /dev/null @@ -1,27 +0,0 @@ -tests/cases/compiler/letDeclarations-es5-1.ts(1,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5-1.ts(2,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5-1.ts(3,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5-1.ts(4,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5-1.ts(5,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5-1.ts(6,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/compiler/letDeclarations-es5-1.ts (6 errors) ==== - let l1; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l2: number; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l3, l4, l5 :string, l6; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l7 = false; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l8: number = 23; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l9 = 0, l10 :string = "", l11 = null; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-es5-1.js b/tests/baselines/reference/letDeclarations-es5-1.js index 24c2c62e58f..35439c5966d 100644 --- a/tests/baselines/reference/letDeclarations-es5-1.js +++ b/tests/baselines/reference/letDeclarations-es5-1.js @@ -7,9 +7,9 @@ let l9 = 0, l10 :string = "", l11 = null; //// [letDeclarations-es5-1.js] -let l1; -let l2; -let l3, l4, l5, l6; -let l7 = false; -let l8 = 23; -let l9 = 0, l10 = "", l11 = null; +var l1; +var l2; +var l3, l4, l5, l6; +var l7 = false; +var l8 = 23; +var l9 = 0, l10 = "", l11 = null; diff --git a/tests/baselines/reference/letDeclarations-es5-1.types b/tests/baselines/reference/letDeclarations-es5-1.types new file mode 100644 index 00000000000..fb45d521bd3 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-es5-1.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/letDeclarations-es5-1.ts === + let l1; +>l1 : any + + let l2: number; +>l2 : number + + let l3, l4, l5 :string, l6; +>l3 : any +>l4 : any +>l5 : string +>l6 : any + + let l7 = false; +>l7 : boolean + + let l8: number = 23; +>l8 : number + + let l9 = 0, l10 :string = "", l11 = null; +>l9 : number +>l10 : string +>l11 : any + diff --git a/tests/baselines/reference/letDeclarations-es5.errors.txt b/tests/baselines/reference/letDeclarations-es5.errors.txt deleted file mode 100644 index 27d526f03ea..00000000000 --- a/tests/baselines/reference/letDeclarations-es5.errors.txt +++ /dev/null @@ -1,40 +0,0 @@ -tests/cases/compiler/letDeclarations-es5.ts(2,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(3,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(4,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(6,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(7,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(8,1): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(10,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. -tests/cases/compiler/letDeclarations-es5.ts(12,5): error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - -==== tests/cases/compiler/letDeclarations-es5.ts (8 errors) ==== - - let l1; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l2: number; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l3, l4, l5 :string, l6; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - let l7 = false; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l8: number = 23; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - let l9 = 0, l10 :string = "", l11 = null; - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - for(let l11 in {}) { } - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - - for(let l12 = 0; l12 < 9; l12++) { } - ~~~ -!!! error TS1153: 'let' declarations are only available when targeting ECMAScript 6 and higher. - \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-es5.js b/tests/baselines/reference/letDeclarations-es5.js index 4d2f5423ee0..d8761ccbc64 100644 --- a/tests/baselines/reference/letDeclarations-es5.js +++ b/tests/baselines/reference/letDeclarations-es5.js @@ -14,11 +14,11 @@ for(let l12 = 0; l12 < 9; l12++) { } //// [letDeclarations-es5.js] -let l1; -let l2; -let l3, l4, l5, l6; -let l7 = false; -let l8 = 23; -let l9 = 0, l10 = "", l11 = null; -for (let l11 in {}) { } -for (let l12 = 0; l12 < 9; l12++) { } +var l1; +var l2; +var l3, l4, l5, l6; +var l7 = false; +var l8 = 23; +var l9 = 0, l10 = "", l11 = null; +for (var l11_1 in {}) { } +for (var l12 = 0; l12 < 9; l12++) { } diff --git a/tests/baselines/reference/letDeclarations-es5.types b/tests/baselines/reference/letDeclarations-es5.types new file mode 100644 index 00000000000..0d6e9928868 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-es5.types @@ -0,0 +1,36 @@ +=== tests/cases/compiler/letDeclarations-es5.ts === + +let l1; +>l1 : any + +let l2: number; +>l2 : number + +let l3, l4, l5 :string, l6; +>l3 : any +>l4 : any +>l5 : string +>l6 : any + +let l7 = false; +>l7 : boolean + +let l8: number = 23; +>l8 : number + +let l9 = 0, l10 :string = "", l11 = null; +>l9 : number +>l10 : string +>l11 : any + +for(let l11 in {}) { } +>l11 : any +>{} : {} + +for(let l12 = 0; l12 < 9; l12++) { } +>l12 : number +>l12 < 9 : boolean +>l12 : number +>l12++ : number +>l12 : number + diff --git a/tests/baselines/reference/letDeclarations-scopes.js b/tests/baselines/reference/letDeclarations-scopes.js index fc721807994..d0489820d0b 100644 --- a/tests/baselines/reference/letDeclarations-scopes.js +++ b/tests/baselines/reference/letDeclarations-scopes.js @@ -259,30 +259,25 @@ var m; lable: let l2 = 0; })(m || (m = {})); // methods -var C = (function () { - function C() { +class C { + constructor() { let l = 0; n = l; } - C.prototype.method = function () { + method() { let l = 0; n = l; - }; - Object.defineProperty(C.prototype, "v", { - get: function () { - let l = 0; - n = l; - return n; - }, - set: function (value) { - let l = 0; - n = l; - }, - enumerable: true, - configurable: true - }); - return C; -})(); + } + get v() { + let l = 0; + n = l; + return n; + } + set v(value) { + let l = 0; + n = l; + } +} // object literals var o = { f() { diff --git a/tests/baselines/reference/letDeclarations-validContexts.js b/tests/baselines/reference/letDeclarations-validContexts.js index f6d404135f6..b11a1922383 100644 --- a/tests/baselines/reference/letDeclarations-validContexts.js +++ b/tests/baselines/reference/letDeclarations-validContexts.js @@ -221,26 +221,21 @@ var m; } })(m || (m = {})); // methods -var C = (function () { - function C() { +class C { + constructor() { let l24 = 0; } - C.prototype.method = function () { + method() { let l25 = 0; - }; - Object.defineProperty(C.prototype, "v", { - get: function () { - let l26 = 0; - return l26; - }, - set: function (value) { - let l27 = value; - }, - enumerable: true, - configurable: true - }); - return C; -})(); + } + get v() { + let l26 = 0; + return l26; + } + set v(value) { + let l27 = value; + } +} // object literals var o = { f() { diff --git a/tests/baselines/reference/letInNonStrictMode.js b/tests/baselines/reference/letInNonStrictMode.js new file mode 100644 index 00000000000..8a431535ae2 --- /dev/null +++ b/tests/baselines/reference/letInNonStrictMode.js @@ -0,0 +1,7 @@ +//// [letInNonStrictMode.ts] +let [x] = [1]; +let {a: y} = {a: 1}; + +//// [letInNonStrictMode.js] +var x = ([1])[0]; +var y = ({ a: 1 }).a; diff --git a/tests/baselines/reference/letInNonStrictMode.types b/tests/baselines/reference/letInNonStrictMode.types new file mode 100644 index 00000000000..4f2cbe4a703 --- /dev/null +++ b/tests/baselines/reference/letInNonStrictMode.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/letInNonStrictMode.ts === +let [x] = [1]; +>x : number +>[1] : [number] + +let {a: y} = {a: 1}; +>a : unknown +>y : number +>{a: 1} : { a: number; } +>a : number + diff --git a/tests/baselines/reference/letKeepNamesOfTopLevelItems.js b/tests/baselines/reference/letKeepNamesOfTopLevelItems.js new file mode 100644 index 00000000000..96fd31ae536 --- /dev/null +++ b/tests/baselines/reference/letKeepNamesOfTopLevelItems.js @@ -0,0 +1,19 @@ +//// [letKeepNamesOfTopLevelItems.ts] +let x; +function foo() { + let x; +} + +module A { + let x; +} + +//// [letKeepNamesOfTopLevelItems.js] +var x; +function foo() { + var x; +} +var A; +(function (A) { + var x; +})(A || (A = {})); diff --git a/tests/baselines/reference/letKeepNamesOfTopLevelItems.types b/tests/baselines/reference/letKeepNamesOfTopLevelItems.types new file mode 100644 index 00000000000..952be1512a9 --- /dev/null +++ b/tests/baselines/reference/letKeepNamesOfTopLevelItems.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/letKeepNamesOfTopLevelItems.ts === +let x; +>x : any + +function foo() { +>foo : () => void + + let x; +>x : any +} + +module A { +>A : typeof A + + let x; +>x : any +} diff --git a/tests/baselines/reference/letShadowedByNameInNestedScope.errors.txt b/tests/baselines/reference/letShadowedByNameInNestedScope.errors.txt new file mode 100644 index 00000000000..b47e194f93e --- /dev/null +++ b/tests/baselines/reference/letShadowedByNameInNestedScope.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/letShadowedByNameInNestedScope.ts(6,9): error TS2304: Cannot find name 'console'. + + +==== tests/cases/compiler/letShadowedByNameInNestedScope.ts (1 errors) ==== + var x; + function foo() { + let x = 0; + (function () { + var _x = 1; + console.log(x); + ~~~~~~~ +!!! error TS2304: Cannot find name 'console'. + })(); + } \ No newline at end of file diff --git a/tests/baselines/reference/letShadowedByNameInNestedScope.js b/tests/baselines/reference/letShadowedByNameInNestedScope.js new file mode 100644 index 00000000000..648fe0b8e94 --- /dev/null +++ b/tests/baselines/reference/letShadowedByNameInNestedScope.js @@ -0,0 +1,19 @@ +//// [letShadowedByNameInNestedScope.ts] +var x; +function foo() { + let x = 0; + (function () { + var _x = 1; + console.log(x); + })(); +} + +//// [letShadowedByNameInNestedScope.js] +var x; +function foo() { + var x = 0; + (function () { + var _x = 1; + console.log(x); + })(); +} diff --git a/tests/baselines/reference/localImportNameVsGlobalName.js b/tests/baselines/reference/localImportNameVsGlobalName.js index 6a4f1ceabc1..45ecdc4745e 100644 --- a/tests/baselines/reference/localImportNameVsGlobalName.js +++ b/tests/baselines/reference/localImportNameVsGlobalName.js @@ -29,7 +29,7 @@ var App; var Key = Keyboard.Key; function foo(key) { } App.foo = foo; - foo(0 /* UP */); - foo(1 /* DOWN */); - foo(2 /* LEFT */); + foo(Key.UP); + foo(Key.DOWN); + foo(Key.LEFT); })(App || (App = {})); diff --git a/tests/baselines/reference/logicalNotOperatorWithEnumType.js b/tests/baselines/reference/logicalNotOperatorWithEnumType.js index 89ee1a14833..382cf577713 100644 --- a/tests/baselines/reference/logicalNotOperatorWithEnumType.js +++ b/tests/baselines/reference/logicalNotOperatorWithEnumType.js @@ -37,13 +37,13 @@ var ENUM1; // enum type var var ResultIsBoolean1 = !ENUM; // enum type expressions -var ResultIsBoolean2 = !1 /* "B" */; -var ResultIsBoolean3 = !(1 /* B */ + 2 /* "C" */); +var ResultIsBoolean2 = !ENUM["B"]; +var ResultIsBoolean3 = !(ENUM.B + ENUM["C"]); // multiple ! operators var ResultIsBoolean4 = !!ENUM; -var ResultIsBoolean5 = !!!(1 /* "B" */ + 2 /* C */); +var ResultIsBoolean5 = !!!(ENUM["B"] + ENUM.C); // miss assignment operators !ENUM; !ENUM1; -!1 /* B */; +!ENUM.B; !ENUM, ENUM1; diff --git a/tests/baselines/reference/mergedDeclarations2.js b/tests/baselines/reference/mergedDeclarations2.js index 1e9254bb0bb..962346541cc 100644 --- a/tests/baselines/reference/mergedDeclarations2.js +++ b/tests/baselines/reference/mergedDeclarations2.js @@ -17,7 +17,7 @@ var Foo; })(Foo || (Foo = {})); var Foo; (function (Foo) { - Foo[Foo["a"] = Foo.b] = "a"; + Foo[Foo["a"] = 0] = "a"; })(Foo || (Foo = {})); var Foo; (function (Foo) { diff --git a/tests/baselines/reference/mergedEnumDeclarationCodeGen.js b/tests/baselines/reference/mergedEnumDeclarationCodeGen.js index 574ef6fa2d0..57b6e8051f8 100644 --- a/tests/baselines/reference/mergedEnumDeclarationCodeGen.js +++ b/tests/baselines/reference/mergedEnumDeclarationCodeGen.js @@ -11,9 +11,9 @@ enum E { var E; (function (E) { E[E["a"] = 0] = "a"; - E[E["b"] = E.a] = "b"; + E[E["b"] = 0] = "b"; })(E || (E = {})); var E; (function (E) { - E[E["c"] = E.a] = "c"; + E[E["c"] = 0] = "c"; })(E || (E = {})); diff --git a/tests/baselines/reference/mergedModuleDeclarationCodeGen.js b/tests/baselines/reference/mergedModuleDeclarationCodeGen.js index 88b949dd920..d5cda7c9109 100644 --- a/tests/baselines/reference/mergedModuleDeclarationCodeGen.js +++ b/tests/baselines/reference/mergedModuleDeclarationCodeGen.js @@ -19,10 +19,10 @@ export module X { var X; (function (X) { var Y; - (function (_Y) { + (function (Y_1) { var A = (function () { function A(Y) { - new _Y.B(); + new Y_1.B(); } return A; })(); diff --git a/tests/baselines/reference/mergedModuleDeclarationCodeGen2.js b/tests/baselines/reference/mergedModuleDeclarationCodeGen2.js index bb0e846d063..bb7c34e4ac5 100644 --- a/tests/baselines/reference/mergedModuleDeclarationCodeGen2.js +++ b/tests/baselines/reference/mergedModuleDeclarationCodeGen2.js @@ -21,11 +21,11 @@ var my; })(data = my.data || (my.data = {})); })(my || (my = {})); var my; -(function (_my) { +(function (my_1) { var data; - (function (_data) { + (function (data_1) { function data(my) { - _data.foo.buz(); + data_1.foo.buz(); } - })(data = _my.data || (_my.data = {})); + })(data = my_1.data || (my_1.data = {})); })(my || (my = {})); diff --git a/tests/baselines/reference/mergedModuleDeclarationCodeGen3.js b/tests/baselines/reference/mergedModuleDeclarationCodeGen3.js index a03b418fcc9..4a002e88f3d 100644 --- a/tests/baselines/reference/mergedModuleDeclarationCodeGen3.js +++ b/tests/baselines/reference/mergedModuleDeclarationCodeGen3.js @@ -18,14 +18,14 @@ var my; })(data = my.data || (my.data = {})); })(my || (my = {})); var my; -(function (_my) { +(function (my_1) { var data; - (function (_data) { + (function (data_1) { var foo; - (function (_foo) { + (function (foo_1) { function data(my, foo) { - _data.buz(); + data_1.buz(); } - })(foo = _data.foo || (_data.foo = {})); - })(data = _my.data || (_my.data = {})); + })(foo = data_1.foo || (data_1.foo = {})); + })(data = my_1.data || (my_1.data = {})); })(my || (my = {})); diff --git a/tests/baselines/reference/mergedModuleDeclarationCodeGen4.js b/tests/baselines/reference/mergedModuleDeclarationCodeGen4.js index 9efba74a27b..3e4a2dcd308 100644 --- a/tests/baselines/reference/mergedModuleDeclarationCodeGen4.js +++ b/tests/baselines/reference/mergedModuleDeclarationCodeGen4.js @@ -20,7 +20,7 @@ module superContain { var superContain; (function (superContain) { var contain; - (function (_contain) { + (function (contain_1) { var my; (function (my) { var buz; @@ -31,19 +31,19 @@ var superContain; data.foo = foo; })(data = buz.data || (buz.data = {})); })(buz = my.buz || (my.buz = {})); - })(my = _contain.my || (_contain.my = {})); + })(my = contain_1.my || (contain_1.my = {})); var my; - (function (_my) { + (function (my_1) { var buz; - (function (_buz) { + (function (buz_1) { var data; - (function (_data) { + (function (data_1) { function bar(contain, my, buz, data) { - _data.foo(); + data_1.foo(); } - _data.bar = bar; - })(data = _buz.data || (_buz.data = {})); - })(buz = _my.buz || (_my.buz = {})); - })(my = _contain.my || (_contain.my = {})); + data_1.bar = bar; + })(data = buz_1.data || (buz_1.data = {})); + })(buz = my_1.buz || (my_1.buz = {})); + })(my = contain_1.my || (contain_1.my = {})); })(contain = superContain.contain || (superContain.contain = {})); })(superContain || (superContain = {})); diff --git a/tests/baselines/reference/mergedModuleDeclarationCodeGen5.js b/tests/baselines/reference/mergedModuleDeclarationCodeGen5.js index ce453264f78..44ab49d24e0 100644 --- a/tests/baselines/reference/mergedModuleDeclarationCodeGen5.js +++ b/tests/baselines/reference/mergedModuleDeclarationCodeGen5.js @@ -20,7 +20,7 @@ module M.buz.plop { //// [mergedModuleDeclarationCodeGen5.js] var M; -(function (_M) { +(function (M_1) { var buz; (function (buz) { var plop; @@ -30,14 +30,14 @@ var M; function M() { } plop.M = M; })(plop = buz.plop || (buz.plop = {})); - })(buz = _M.buz || (_M.buz = {})); + })(buz = M_1.buz || (M_1.buz = {})); })(M || (M = {})); var M; (function (M) { var buz; - (function (_buz) { + (function (buz_1) { var plop; - (function (_plop) { + (function (plop_1) { function gunk() { } function buz() { } var fudge = (function () { @@ -45,17 +45,17 @@ var M; } return fudge; })(); - _plop.fudge = fudge; + plop_1.fudge = fudge; (function (plop) { - })(_plop.plop || (_plop.plop = {})); - var plop = _plop.plop; + })(plop_1.plop || (plop_1.plop = {})); + var plop = plop_1.plop; // Emit these references as follows var v1 = gunk; // gunk var v2 = buz; // buz - _plop.v3 = _plop.doom; // _plop.doom - _plop.v4 = _plop.M; // _plop.M - _plop.v5 = fudge; // fudge - _plop.v6 = plop; // plop - })(plop = _buz.plop || (_buz.plop = {})); + plop_1.v3 = plop_1.doom; // _plop.doom + plop_1.v4 = plop_1.M; // _plop.M + plop_1.v5 = fudge; // fudge + plop_1.v6 = plop; // plop + })(plop = buz_1.plop || (buz_1.plop = {})); })(buz = M.buz || (M.buz = {})); })(M || (M = {})); diff --git a/tests/baselines/reference/moduleClassArrayCodeGenTest.errors.txt b/tests/baselines/reference/moduleClassArrayCodeGenTest.errors.txt index 3e52f51445d..702beffa290 100644 --- a/tests/baselines/reference/moduleClassArrayCodeGenTest.errors.txt +++ b/tests/baselines/reference/moduleClassArrayCodeGenTest.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/moduleClassArrayCodeGenTest.ts(10,9): error TS2305: Module 'M' has no exported member 'B'. +tests/cases/compiler/moduleClassArrayCodeGenTest.ts(10,11): error TS2305: Module 'M' has no exported member 'B'. ==== tests/cases/compiler/moduleClassArrayCodeGenTest.ts (1 errors) ==== @@ -12,5 +12,5 @@ tests/cases/compiler/moduleClassArrayCodeGenTest.ts(10,9): error TS2305: Module var t: M.A[] = []; var t2: M.B[] = []; - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'B'. \ No newline at end of file diff --git a/tests/baselines/reference/moduleCodeGenTest5.js b/tests/baselines/reference/moduleCodeGenTest5.js index a7580e97ef7..afc1ce23e37 100644 --- a/tests/baselines/reference/moduleCodeGenTest5.js +++ b/tests/baselines/reference/moduleCodeGenTest5.js @@ -46,9 +46,9 @@ var C2 = (function () { E1[E1["A"] = 0] = "A"; })(exports.E1 || (exports.E1 = {})); var E1 = exports.E1; -var u = 0 /* A */; +var u = E1.A; var E2; (function (E2) { E2[E2["B"] = 0] = "B"; })(E2 || (E2 = {})); -var v = 0 /* B */; +var v = E2.B; diff --git a/tests/baselines/reference/moduleImport.errors.txt b/tests/baselines/reference/moduleImport.errors.txt index 95163ef119f..7b18c80ba24 100644 --- a/tests/baselines/reference/moduleImport.errors.txt +++ b/tests/baselines/reference/moduleImport.errors.txt @@ -1,11 +1,14 @@ -tests/cases/compiler/moduleImport.ts(2,2): error TS2305: Module 'X' has no exported member 'Y'. +tests/cases/compiler/moduleImport.ts(2,17): error TS2305: Module 'X' has no exported member 'Y'. +tests/cases/compiler/moduleImport.ts(2,17): error TS2339: Property 'Y' does not exist on type 'typeof X'. -==== tests/cases/compiler/moduleImport.ts (1 errors) ==== +==== tests/cases/compiler/moduleImport.ts (2 errors) ==== module A.B.C { import XYZ = X.Y.Z; - ~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS2305: Module 'X' has no exported member 'Y'. + ~ +!!! error TS2339: Property 'Y' does not exist on type 'typeof X'. export function ping(x: number) { if (x>0) XYZ.pong (x-1); } diff --git a/tests/baselines/reference/moduleNewExportBug.errors.txt b/tests/baselines/reference/moduleNewExportBug.errors.txt index 829fe83ae7b..779d51e4699 100644 --- a/tests/baselines/reference/moduleNewExportBug.errors.txt +++ b/tests/baselines/reference/moduleNewExportBug.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/moduleNewExportBug.ts(10,9): error TS2305: Module 'mod1' has no exported member 'C'. +tests/cases/compiler/moduleNewExportBug.ts(10,14): error TS2305: Module 'mod1' has no exported member 'C'. ==== tests/cases/compiler/moduleNewExportBug.ts (1 errors) ==== @@ -12,7 +12,7 @@ tests/cases/compiler/moduleNewExportBug.ts(10,9): error TS2305: Module 'mod1' ha } var c : mod1.C; // ERROR: C should not be visible - ~~~~~~ + ~ !!! error TS2305: Module 'mod1' has no exported member 'C'. diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.js b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.js index 983dc004acf..f9a90fd5151 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.js +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.js @@ -25,11 +25,11 @@ var Z; var A; (function (A) { var M; - (function (_M) { + (function (M_1) { var M = Z.M; function bar() { } - _M.bar = bar; + M_1.bar = bar; M.bar(); // Should call Z.M.bar })(M = A.M || (A.M = {})); })(A || (A = {})); diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt3.js b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt3.js index c11b36f643a..efdcebe84e9 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt3.js +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt3.js @@ -30,11 +30,11 @@ var Z; var A; (function (A) { var M; - (function (_M) { + (function (M_1) { var M = Z.M; function bar() { } - _M.bar = bar; + M_1.bar = bar; M.bar(); // Should call Z.M.bar })(M = A.M || (A.M = {})); })(A || (A = {})); diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.js b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.js index c61f3d4dd9d..e9cd456f3f3 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.js +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.js @@ -26,11 +26,11 @@ var Z; var A; (function (A) { var M; - (function (_M) { + (function (M_1) { var M = Z.M; function bar() { } - _M.bar = bar; + M_1.bar = bar; M.bar(); // Should call Z.M.bar })(M = A.M || (A.M = {})); })(A || (A = {})); diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt5.js b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt5.js index 0bc314ccc07..72aa3602263 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt5.js +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt5.js @@ -30,10 +30,10 @@ var Z; var A; (function (A) { var M; - (function (_M) { + (function (M_1) { function bar() { } - _M.bar = bar; + M_1.bar = bar; M.bar(); // Should call Z.M.bar })(M = A.M || (A.M = {})); })(A || (A = {})); diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.js b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.js index 4ba0a33c29a..fbad13359b8 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.js +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.js @@ -24,9 +24,9 @@ var Z; var A; (function (A) { var M; - (function (_M) { + (function (M_1) { function bar() { } - _M.bar = bar; + M_1.bar = bar; })(M = A.M || (A.M = {})); })(A || (A = {})); diff --git a/tests/baselines/reference/moduleVisibilityTest1.js b/tests/baselines/reference/moduleVisibilityTest1.js index a2957cb9582..f4655513bec 100644 --- a/tests/baselines/reference/moduleVisibilityTest1.js +++ b/tests/baselines/reference/moduleVisibilityTest1.js @@ -119,11 +119,11 @@ var M; var M; (function (M) { M.c = M.x; - M.meb = 1 /* B */; + M.meb = M.E.B; })(M || (M = {})); var cprime = null; var c = new M.C(); var z = M.x; -var alpha = 0 /* A */; +var alpha = M.E.A; var omega = M.exported_var; c.someMethodThatCallsAnOuterMethod(); diff --git a/tests/baselines/reference/moduleVisibilityTest2.errors.txt b/tests/baselines/reference/moduleVisibilityTest2.errors.txt index 9620b48cdfb..9ff92604392 100644 --- a/tests/baselines/reference/moduleVisibilityTest2.errors.txt +++ b/tests/baselines/reference/moduleVisibilityTest2.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/moduleVisibilityTest2.ts(57,17): error TS2304: Cannot find name 'x'. tests/cases/compiler/moduleVisibilityTest2.ts(58,21): error TS2339: Property 'E' does not exist on type 'typeof M'. -tests/cases/compiler/moduleVisibilityTest2.ts(61,14): error TS2305: Module 'M' has no exported member 'I'. -tests/cases/compiler/moduleVisibilityTest2.ts(61,21): error TS2305: Module 'M' has no exported member 'I'. +tests/cases/compiler/moduleVisibilityTest2.ts(61,16): error TS2305: Module 'M' has no exported member 'I'. +tests/cases/compiler/moduleVisibilityTest2.ts(61,23): error TS2305: Module 'M' has no exported member 'I'. tests/cases/compiler/moduleVisibilityTest2.ts(64,11): error TS2339: Property 'x' does not exist on type 'typeof M'. tests/cases/compiler/moduleVisibilityTest2.ts(65,15): error TS2339: Property 'E' does not exist on type 'typeof M'. @@ -72,9 +72,9 @@ tests/cases/compiler/moduleVisibilityTest2.ts(65,15): error TS2339: Property 'E' } var cprime : M.I = null; - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'I'. - ~~~ + ~ !!! error TS2305: Module 'M' has no exported member 'I'. var c = new M.C(); diff --git a/tests/baselines/reference/moduleVisibilityTest3.errors.txt b/tests/baselines/reference/moduleVisibilityTest3.errors.txt index 581d96fc1df..0ad8a789a8f 100644 --- a/tests/baselines/reference/moduleVisibilityTest3.errors.txt +++ b/tests/baselines/reference/moduleVisibilityTest3.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/moduleVisibilityTest3.ts(20,22): error TS2304: Cannot find name 'modes'. -tests/cases/compiler/moduleVisibilityTest3.ts(20,33): error TS2305: Module '_modes' has no exported member 'Mode'. -tests/cases/compiler/moduleVisibilityTest3.ts(21,16): error TS2305: Module '_modes' has no exported member 'Mode'. +tests/cases/compiler/moduleVisibilityTest3.ts(20,39): error TS2305: Module '_modes' has no exported member 'Mode'. +tests/cases/compiler/moduleVisibilityTest3.ts(21,22): error TS2305: Module '_modes' has no exported member 'Mode'. ==== tests/cases/compiler/moduleVisibilityTest3.ts (3 errors) ==== @@ -26,10 +26,10 @@ tests/cases/compiler/moduleVisibilityTest3.ts(21,16): error TS2305: Module '_mod constructor(p1: modes, p2: modes.Mode) {// should be an error on p2 - it's not exported ~~~~~ !!! error TS2304: Cannot find name 'modes'. - ~~~~~~~~~~ + ~~~~ !!! error TS2305: Module '_modes' has no exported member 'Mode'. var x:modes.Mode; - ~~~~~~~~~~ + ~~~~ !!! error TS2305: Module '_modes' has no exported member 'Mode'. } diff --git a/tests/baselines/reference/moduleWithStatementsOfEveryKind.js b/tests/baselines/reference/moduleWithStatementsOfEveryKind.js index 8496588c5bb..8ce4cb693f7 100644 --- a/tests/baselines/reference/moduleWithStatementsOfEveryKind.js +++ b/tests/baselines/reference/moduleWithStatementsOfEveryKind.js @@ -66,7 +66,7 @@ var __extends = this.__extends || function (d, b) { d.prototype = new __(); }; var A; -(function (_A) { +(function (A_1) { var A = (function () { function A() { } diff --git a/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.errors.txt b/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.errors.txt new file mode 100644 index 00000000000..c85e7584139 --- /dev/null +++ b/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/multiLinePropertyAccessAndArrowFunctionIndent1.ts(1,1): error TS1108: A 'return' statement can only be used within a function body. +tests/cases/compiler/multiLinePropertyAccessAndArrowFunctionIndent1.ts(2,18): error TS2304: Cannot find name 'Role'. +tests/cases/compiler/multiLinePropertyAccessAndArrowFunctionIndent1.ts(4,26): error TS2304: Cannot find name 'ng'. + + +==== tests/cases/compiler/multiLinePropertyAccessAndArrowFunctionIndent1.ts (3 errors) ==== + return this.edit(role) + ~~~~~~ +!!! error TS1108: A 'return' statement can only be used within a function body. + .then((role: Role) => + ~~~~ +!!! error TS2304: Cannot find name 'Role'. + this.roleService.add(role) + .then((data: ng.IHttpPromiseCallbackArg) => data.data)); + ~~ +!!! error TS2304: Cannot find name 'ng'. + \ No newline at end of file diff --git a/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.js b/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.js new file mode 100644 index 00000000000..2ada9f1bb52 --- /dev/null +++ b/tests/baselines/reference/multiLinePropertyAccessAndArrowFunctionIndent1.js @@ -0,0 +1,14 @@ +//// [multiLinePropertyAccessAndArrowFunctionIndent1.ts] +return this.edit(role) + .then((role: Role) => + this.roleService.add(role) + .then((data: ng.IHttpPromiseCallbackArg) => data.data)); + + +//// [multiLinePropertyAccessAndArrowFunctionIndent1.js] +var _this = this; +return this.edit(role) + .then(function (role) { + return _this.roleService.add(role) + .then(function (data) { return data.data; }); +}); diff --git a/tests/baselines/reference/multipleExportAssignments.errors.txt b/tests/baselines/reference/multipleExportAssignments.errors.txt index d5af20073c7..5fbabc2b4db 100644 --- a/tests/baselines/reference/multipleExportAssignments.errors.txt +++ b/tests/baselines/reference/multipleExportAssignments.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/multipleExportAssignments.ts(13,1): error TS2308: A module cannot have more than one export assignment. -tests/cases/compiler/multipleExportAssignments.ts(14,1): error TS2308: A module cannot have more than one export assignment. +tests/cases/compiler/multipleExportAssignments.ts(13,1): error TS2300: Duplicate identifier 'export='. +tests/cases/compiler/multipleExportAssignments.ts(14,1): error TS2300: Duplicate identifier 'export='. ==== tests/cases/compiler/multipleExportAssignments.ts (2 errors) ==== @@ -17,9 +17,9 @@ tests/cases/compiler/multipleExportAssignments.ts(14,1): error TS2308: A module }; export = server; ~~~~~~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = connectExport; ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. \ No newline at end of file diff --git a/tests/baselines/reference/multipleExportAssignmentsInAmbientDeclaration.errors.txt b/tests/baselines/reference/multipleExportAssignmentsInAmbientDeclaration.errors.txt index c2475f0ff14..c6427a5cc28 100644 --- a/tests/baselines/reference/multipleExportAssignmentsInAmbientDeclaration.errors.txt +++ b/tests/baselines/reference/multipleExportAssignmentsInAmbientDeclaration.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts(4,5): error TS2308: A module cannot have more than one export assignment. -tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts(5,5): error TS2308: A module cannot have more than one export assignment. +tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts(4,5): error TS2300: Duplicate identifier 'export='. +tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts(5,5): error TS2300: Duplicate identifier 'export='. ==== tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts (2 errors) ==== @@ -8,8 +8,8 @@ tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts(5,5): erro var b: number; export = a; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. export = b; ~~~~~~~~~~~ -!!! error TS2308: A module cannot have more than one export assignment. +!!! error TS2300: Duplicate identifier 'export='. } \ No newline at end of file diff --git a/tests/baselines/reference/multipleExports.errors.txt b/tests/baselines/reference/multipleExports.errors.txt new file mode 100644 index 00000000000..254717843cf --- /dev/null +++ b/tests/baselines/reference/multipleExports.errors.txt @@ -0,0 +1,21 @@ +tests/cases/compiler/multipleExports.ts(10,5): error TS1194: Export declarations are not permitted in an internal module. +tests/cases/compiler/multipleExports.ts(10,13): error TS2484: Export declaration conflicts with exported declaration of 'x' + + +==== tests/cases/compiler/multipleExports.ts (2 errors) ==== + + export module M { + export var v = 0; + export let x; + } + + const x = 0; + export module M { + v; + export {x}; + ~~~~~~~~~~~ +!!! error TS1194: Export declarations are not permitted in an internal module. + ~ +!!! error TS2484: Export declaration conflicts with exported declaration of 'x' + } + \ No newline at end of file diff --git a/tests/baselines/reference/multipleExports.js b/tests/baselines/reference/multipleExports.js new file mode 100644 index 00000000000..b8c08952b67 --- /dev/null +++ b/tests/baselines/reference/multipleExports.js @@ -0,0 +1,25 @@ +//// [multipleExports.ts] + +export module M { + export var v = 0; + export let x; +} + +const x = 0; +export module M { + v; + export {x}; +} + + +//// [multipleExports.js] +var M; +(function (M) { + M.v = 0; + M.x; +})(M = exports.M || (exports.M = {})); +var x = 0; +var M; +(function (M) { + M.v; +})(M = exports.M || (exports.M = {})); diff --git a/tests/baselines/reference/nameCollision.js b/tests/baselines/reference/nameCollision.js index fe7bb3a8919..0e559b7091c 100644 --- a/tests/baselines/reference/nameCollision.js +++ b/tests/baselines/reference/nameCollision.js @@ -48,7 +48,7 @@ module D { //// [nameCollision.js] var A; -(function (_A_1) { +(function (A_1) { // these 2 statements force an underscore before the 'A' // in the generated function call. var A = 12; @@ -59,7 +59,7 @@ var B; var A = 12; })(B || (B = {})); var B; -(function (_B) { +(function (B_1) { // re-opened module with colliding name // this should add an underscore. var B = (function () { @@ -69,29 +69,29 @@ var B; })(); })(B || (B = {})); var X; -(function (_X) { +(function (X_1) { var X = 13; var Y; - (function (_Y) { + (function (Y_1) { var Y = 13; var Z; - (function (_Z) { + (function (Z_1) { var X = 12; var Y = 12; var Z = 12; - })(Z = _Y.Z || (_Y.Z = {})); - })(Y = _X.Y || (_X.Y = {})); + })(Z = Y_1.Z || (Y_1.Z = {})); + })(Y = X_1.Y || (X_1.Y = {})); })(X || (X = {})); var Y; -(function (_Y_1) { +(function (Y_2) { var Y; - (function (_Y_2) { + (function (Y_3) { (function (Y) { Y[Y["Red"] = 0] = "Red"; Y[Y["Blue"] = 1] = "Blue"; - })(_Y_2.Y || (_Y_2.Y = {})); - var Y = _Y_2.Y; - })(Y = _Y_1.Y || (_Y_1.Y = {})); + })(Y_3.Y || (Y_3.Y = {})); + var Y = Y_3.Y; + })(Y = Y_2.Y || (Y_2.Y = {})); })(Y || (Y = {})); // no collision, since interface doesn't // generate code. diff --git a/tests/baselines/reference/negateOperatorWithEnumType.js b/tests/baselines/reference/negateOperatorWithEnumType.js index 77458f442df..e33e7811077 100644 --- a/tests/baselines/reference/negateOperatorWithEnumType.js +++ b/tests/baselines/reference/negateOperatorWithEnumType.js @@ -33,10 +33,10 @@ var ENUM1; // enum type var var ResultIsNumber1 = -ENUM; // expressions -var ResultIsNumber2 = -1 /* "B" */; -var ResultIsNumber3 = -(1 /* B */ + 2 /* "" */); +var ResultIsNumber2 = -ENUM1["B"]; +var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]); // miss assignment operators -ENUM; -ENUM1; --1 /* "B" */; +-ENUM1["B"]; -ENUM, ENUM1; diff --git a/tests/baselines/reference/nestedClassDeclaration.errors.txt b/tests/baselines/reference/nestedClassDeclaration.errors.txt index f5c5e41ad99..f897c38d681 100644 --- a/tests/baselines/reference/nestedClassDeclaration.errors.txt +++ b/tests/baselines/reference/nestedClassDeclaration.errors.txt @@ -1,14 +1,12 @@ tests/cases/conformance/classes/nestedClassDeclaration.ts(5,5): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. tests/cases/conformance/classes/nestedClassDeclaration.ts(7,1): error TS1128: Declaration or statement expected. -tests/cases/conformance/classes/nestedClassDeclaration.ts(10,5): error TS1129: Statement expected. -tests/cases/conformance/classes/nestedClassDeclaration.ts(12,1): error TS1128: Declaration or statement expected. tests/cases/conformance/classes/nestedClassDeclaration.ts(15,11): error TS1005: ':' expected. tests/cases/conformance/classes/nestedClassDeclaration.ts(15,11): error TS2304: Cannot find name 'C4'. tests/cases/conformance/classes/nestedClassDeclaration.ts(15,14): error TS1005: ',' expected. tests/cases/conformance/classes/nestedClassDeclaration.ts(17,1): error TS1128: Declaration or statement expected. -==== tests/cases/conformance/classes/nestedClassDeclaration.ts (8 errors) ==== +==== tests/cases/conformance/classes/nestedClassDeclaration.ts (6 errors) ==== // nested classes are not allowed class C { @@ -23,12 +21,8 @@ tests/cases/conformance/classes/nestedClassDeclaration.ts(17,1): error TS1128: D function foo() { class C3 { - ~~~~~ -!!! error TS1129: Statement expected. } } - ~ -!!! error TS1128: Declaration or statement expected. var x = { class C4 { diff --git a/tests/baselines/reference/nestedClassDeclaration.js b/tests/baselines/reference/nestedClassDeclaration.js index 70445b3372f..2fee6f08ab9 100644 --- a/tests/baselines/reference/nestedClassDeclaration.js +++ b/tests/baselines/reference/nestedClassDeclaration.js @@ -30,11 +30,12 @@ var C2 = (function () { } return C2; })(); -function foo() { } -var C3 = (function () { - function C3() { - } - return C3; -})(); +function foo() { + var C3 = (function () { + function C3() { + } + return C3; + })(); +} var x = { class: C4 }, _a = void 0; diff --git a/tests/baselines/reference/noDefaultLib.errors.txt b/tests/baselines/reference/noDefaultLib.errors.txt index b8f42ba7c33..c73f3e0b948 100644 --- a/tests/baselines/reference/noDefaultLib.errors.txt +++ b/tests/baselines/reference/noDefaultLib.errors.txt @@ -1,9 +1,19 @@ +error TS2318: Cannot find global type 'TypedPropertyDescriptor'. +error TS2318: Cannot find global type 'PropertyDecorator'. +error TS2318: Cannot find global type 'ParameterDecorator'. +error TS2318: Cannot find global type 'MethodDecorator'. error TS2318: Cannot find global type 'IArguments'. +error TS2318: Cannot find global type 'ClassDecorator'. error TS2318: Cannot find global type 'Boolean'. tests/cases/compiler/noDefaultLib.ts(4,11): error TS2317: Global type 'Array' must have 1 type parameter(s). +!!! error TS2318: Cannot find global type 'TypedPropertyDescriptor'. +!!! error TS2318: Cannot find global type 'PropertyDecorator'. +!!! error TS2318: Cannot find global type 'ParameterDecorator'. +!!! error TS2318: Cannot find global type 'MethodDecorator'. !!! error TS2318: Cannot find global type 'IArguments'. +!!! error TS2318: Cannot find global type 'ClassDecorator'. !!! error TS2318: Cannot find global type 'Boolean'. ==== tests/cases/compiler/noDefaultLib.ts (1 errors) ==== /// diff --git a/tests/baselines/reference/noImplicitAnyFunctions.errors.txt b/tests/baselines/reference/noImplicitAnyFunctions.errors.txt index 622dd953150..158690deef0 100644 --- a/tests/baselines/reference/noImplicitAnyFunctions.errors.txt +++ b/tests/baselines/reference/noImplicitAnyFunctions.errors.txt @@ -1,14 +1,14 @@ -tests/cases/compiler/noImplicitAnyFunctions.ts(2,1): error TS7010: 'f1', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyFunctions.ts(2,18): error TS7010: 'f1', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/noImplicitAnyFunctions.ts(6,13): error TS7006: Parameter 'x' implicitly has an 'any' type. -tests/cases/compiler/noImplicitAnyFunctions.ts(17,1): error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/noImplicitAnyFunctions.ts(19,1): error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyFunctions.ts(17,10): error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyFunctions.ts(19,10): error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/noImplicitAnyFunctions.ts(19,24): error TS7006: Parameter 'y' implicitly has an 'any' type. ==== tests/cases/compiler/noImplicitAnyFunctions.ts (5 errors) ==== declare function f1(); - ~~~~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS7010: 'f1', which lacks return-type annotation, implicitly has an 'any' return type. declare function f2(): any; @@ -27,15 +27,13 @@ tests/cases/compiler/noImplicitAnyFunctions.ts(19,24): error TS7006: Parameter ' } function f6(x: string, y: number); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~ !!! error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. function f6(x: string, y: string): any; function f6(x: string, y) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~ +!!! error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. ~ !!! error TS7006: Parameter 'y' implicitly has an 'any' type. return null; - ~~~~~~~~~~~~~~~~ - } - ~ -!!! error TS7010: 'f6', which lacks return-type annotation, implicitly has an 'any' return type. \ No newline at end of file + } \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitAnyIndexing.js b/tests/baselines/reference/noImplicitAnyIndexing.js index 91dbcae730c..8451a1426a6 100644 --- a/tests/baselines/reference/noImplicitAnyIndexing.js +++ b/tests/baselines/reference/noImplicitAnyIndexing.js @@ -57,11 +57,11 @@ var MyEmusEnum; // Should be okay; should be a string. var strRepresentation1 = MyEmusEnum[0]; // Should be okay; should be a string. -var strRepresentation2 = MyEmusEnum[0 /* emu */]; +var strRepresentation2 = MyEmusEnum[MyEmusEnum.emu]; // Should be implicit 'any' ; property access fails, no string indexer. var strRepresentation3 = MyEmusEnum["monehh"]; // Should be okay; should be a MyEmusEnum -var strRepresentation4 = 0 /* "emu" */; +var strRepresentation4 = MyEmusEnum["emu"]; // Should report an implicit 'any'. var x = {}["hi"]; // Should report an implicit 'any'. @@ -77,6 +77,6 @@ var m = { "2": 2, "Okay that's enough for today.": NaN }; -var mResult1 = m[0 /* emu */]; -var mResult2 = m[MyEmusEnum[0 /* emu */]]; +var mResult1 = m[MyEmusEnum.emu]; +var mResult2 = m[MyEmusEnum[MyEmusEnum.emu]]; var mResult3 = m[hi]; diff --git a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.js b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.js index 5185a9b8db8..6d91d8eb838 100644 --- a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.js +++ b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.js @@ -56,11 +56,11 @@ var MyEmusEnum; // Should be okay; should be a string. var strRepresentation1 = MyEmusEnum[0]; // Should be okay; should be a string. -var strRepresentation2 = MyEmusEnum[0 /* emu */]; +var strRepresentation2 = MyEmusEnum[MyEmusEnum.emu]; // Should be okay, as we suppress implicit 'any' property access checks var strRepresentation3 = MyEmusEnum["monehh"]; // Should be okay; should be a MyEmusEnum -var strRepresentation4 = 0 /* "emu" */; +var strRepresentation4 = MyEmusEnum["emu"]; // Should be okay, as we suppress implicit 'any' property access checks var x = {}["hi"]; // Should be okay, as we suppress implicit 'any' property access checks @@ -76,6 +76,6 @@ var m = { "2": 2, "Okay that's enough for today.": NaN }; -var mResult1 = m[0 /* emu */]; -var mResult2 = m[MyEmusEnum[0 /* emu */]]; +var mResult1 = m[MyEmusEnum.emu]; +var mResult2 = m[MyEmusEnum[MyEmusEnum.emu]]; var mResult3 = m[hi]; diff --git a/tests/baselines/reference/noImplicitAnyModule.errors.txt b/tests/baselines/reference/noImplicitAnyModule.errors.txt index ec1af2346cc..cb2dfbe5793 100644 --- a/tests/baselines/reference/noImplicitAnyModule.errors.txt +++ b/tests/baselines/reference/noImplicitAnyModule.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/noImplicitAnyModule.ts(5,9): error TS7013: Construct signature, which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/noImplicitAnyModule.ts(10,18): error TS7006: Parameter 'x' implicitly has an 'any' type. tests/cases/compiler/noImplicitAnyModule.ts(11,9): error TS7010: 'g', which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/noImplicitAnyModule.ts(18,5): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyModule.ts(18,14): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. ==== tests/cases/compiler/noImplicitAnyModule.ts (4 errors) ==== @@ -29,7 +29,7 @@ tests/cases/compiler/noImplicitAnyModule.ts(18,5): error TS7010: 'f', which lack // Should return error for implicit any on return type. function f(x: number); - ~~~~~~~~~~~~~~~~~~~~~~ + ~ !!! error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type. } \ No newline at end of file diff --git a/tests/baselines/reference/noImplicitAnyParametersInBareFunctions.js b/tests/baselines/reference/noImplicitAnyParametersInBareFunctions.js index bfa7f4b868f..8efe32d3140 100644 --- a/tests/baselines/reference/noImplicitAnyParametersInBareFunctions.js +++ b/tests/baselines/reference/noImplicitAnyParametersInBareFunctions.js @@ -56,9 +56,19 @@ function f4(x, y, z) { } // Implicit-'any' errors for x, and z. function f5(x, y, z) { } // Implicit-'any[]' error for r. -function f6() { } +function f6() { + var r = []; + for (var _i = 0; _i < arguments.length; _i++) { + r[_i - 0] = arguments[_i]; + } +} // Implicit-'any'/'any[]' errors for x, r. -function f7(x) { } +function f7(x) { + var r = []; + for (var _i = 1; _i < arguments.length; _i++) { + r[_i - 1] = arguments[_i]; + } +} function f8(x3, y3) { } // No implicit-'any' errors. var f9 = function () { return ""; }; diff --git a/tests/baselines/reference/noImplicitAnyParametersInClass.js b/tests/baselines/reference/noImplicitAnyParametersInClass.js index 089680781b5..0873935b600 100644 --- a/tests/baselines/reference/noImplicitAnyParametersInClass.js +++ b/tests/baselines/reference/noImplicitAnyParametersInClass.js @@ -155,9 +155,19 @@ var C = (function () { // Implicit-'any' errors for x, and z. C.prototype.pub_f5 = function (x, y, z) { }; // Implicit-'any[]' errors for r. - C.prototype.pub_f6 = function () { }; + C.prototype.pub_f6 = function () { + var r = []; + for (var _i = 0; _i < arguments.length; _i++) { + r[_i - 0] = arguments[_i]; + } + }; // Implicit-'any'/'any[]' errors for x, r. - C.prototype.pub_f7 = function (x) { }; + C.prototype.pub_f7 = function (x) { + var r = []; + for (var _i = 1; _i < arguments.length; _i++) { + r[_i - 1] = arguments[_i]; + } + }; C.prototype.pub_f8 = function (x3, y3) { }; /////////////////////////////////////////// // No implicit-'any' errors. @@ -171,9 +181,19 @@ var C = (function () { // Implicit-'any' errors for x, and z. C.prototype.priv_f5 = function (x, y, z) { }; // Implicit-'any[]' errors for r. - C.prototype.priv_f6 = function () { }; + C.prototype.priv_f6 = function () { + var r = []; + for (var _i = 0; _i < arguments.length; _i++) { + r[_i - 0] = arguments[_i]; + } + }; // Implicit-'any'/'any[]' errors for x, r. - C.prototype.priv_f7 = function (x) { }; + C.prototype.priv_f7 = function (x) { + var r = []; + for (var _i = 1; _i < arguments.length; _i++) { + r[_i - 1] = arguments[_i]; + } + }; C.prototype.priv_f8 = function (x3, y3) { }; return C; })(); diff --git a/tests/baselines/reference/noImplicitAnyParametersInModule.js b/tests/baselines/reference/noImplicitAnyParametersInModule.js index 7c31ccb8013..e7f30205559 100644 --- a/tests/baselines/reference/noImplicitAnyParametersInModule.js +++ b/tests/baselines/reference/noImplicitAnyParametersInModule.js @@ -60,9 +60,19 @@ var M; // Implicit-'any' errors for x and z. function m_f5(x, y, z) { } // Implicit-'any[]' error for r. - function m_f6() { } + function m_f6() { + var r = []; + for (var _i = 0; _i < arguments.length; _i++) { + r[_i - 0] = arguments[_i]; + } + } // Implicit-'any'/'any[]' errors for x and r. - function m_f7(x) { } + function m_f7(x) { + var r = []; + for (var _i = 1; _i < arguments.length; _i++) { + r[_i - 1] = arguments[_i]; + } + } function m_f8(x3, y3) { } // No implicit-'any' errors. var m_f9 = function () { return ""; }; diff --git a/tests/baselines/reference/noImplicitAnyWithOverloads.errors.txt b/tests/baselines/reference/noImplicitAnyWithOverloads.errors.txt index 21845261f35..806cfd39a34 100644 --- a/tests/baselines/reference/noImplicitAnyWithOverloads.errors.txt +++ b/tests/baselines/reference/noImplicitAnyWithOverloads.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/noImplicitAnyWithOverloads.ts(2,5): error TS7008: Member 'foo' implicitly has an 'any' type. -tests/cases/compiler/noImplicitAnyWithOverloads.ts(6,1): error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. -tests/cases/compiler/noImplicitAnyWithOverloads.ts(7,1): error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyWithOverloads.ts(6,10): error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. +tests/cases/compiler/noImplicitAnyWithOverloads.ts(7,10): error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. tests/cases/compiler/noImplicitAnyWithOverloads.ts(8,16): error TS7006: Parameter 'a' implicitly has an 'any' type. @@ -13,10 +13,10 @@ tests/cases/compiler/noImplicitAnyWithOverloads.ts(8,16): error TS7006: Paramete interface B { } function callb(lam: (l: A) => void); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~ !!! error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. function callb(lam: (n: B) => void); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~~~ !!! error TS7010: 'callb', which lacks return-type annotation, implicitly has an 'any' return type. function callb(a) { } ~ diff --git a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.js b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.js index c32cd84ce26..646a3474536 100644 --- a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.js +++ b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.js @@ -139,8 +139,8 @@ var E; })(E || (E = {})); var r13 = true ? E : null; var r13 = true ? null : E; -var r14 = true ? 0 /* A */ : null; -var r14 = true ? null : 0 /* A */; +var r14 = true ? E.A : null; +var r14 = true ? null : E.A; function f() { } var f; (function (f) { diff --git a/tests/baselines/reference/objectTypesIdentity2.js b/tests/baselines/reference/objectTypesIdentity2.js index adbb9caeada..87057754cab 100644 --- a/tests/baselines/reference/objectTypesIdentity2.js +++ b/tests/baselines/reference/objectTypesIdentity2.js @@ -87,7 +87,7 @@ var E; (function (E) { E[E["A"] = 0] = "A"; })(E || (E = {})); -var b = { foo: 0 /* A */ }; +var b = { foo: E.A }; function foo5(x) { } function foo5b(x) { } function foo6(x) { } diff --git a/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.errors.txt b/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.errors.txt index 32a693abdcb..f2dbd672300 100644 --- a/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.errors.txt +++ b/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/types/specifyingTypes/predefinedTypes/objectTypesWithPredefinedTypesAsName2.ts(3,7): error TS1003: Identifier expected. +tests/cases/conformance/types/specifyingTypes/predefinedTypes/objectTypesWithPredefinedTypesAsName2.ts(3,7): error TS1005: '{' expected. ==== tests/cases/conformance/types/specifyingTypes/predefinedTypes/objectTypesWithPredefinedTypesAsName2.ts (1 errors) ==== @@ -6,4 +6,4 @@ tests/cases/conformance/types/specifyingTypes/predefinedTypes/objectTypesWithPre class void {} // parse error unlike the others ~~~~ -!!! error TS1003: Identifier expected. \ No newline at end of file +!!! error TS1005: '{' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.js b/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.js index b47901b2f0c..974744f1870 100644 --- a/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.js +++ b/tests/baselines/reference/objectTypesWithPredefinedTypesAsName2.js @@ -5,9 +5,9 @@ class void {} // parse error unlike the others //// [objectTypesWithPredefinedTypesAsName2.js] // it is an error to use a predefined type as a type name -var = (function () { - function () { +var default_1 = (function () { + function default_1() { } - return ; + return default_1; })(); void {}; // parse error unlike the others diff --git a/tests/baselines/reference/operatorAddNullUndefined.js b/tests/baselines/reference/operatorAddNullUndefined.js index f6b4fd240b2..4d52dbb234c 100644 --- a/tests/baselines/reference/operatorAddNullUndefined.js +++ b/tests/baselines/reference/operatorAddNullUndefined.js @@ -34,7 +34,7 @@ var x9 = "test" + null; var x10 = "test" + undefined; var x11 = null + "test"; var x12 = undefined + "test"; -var x13 = null + 0 /* x */; -var x14 = undefined + 0 /* x */; -var x15 = 0 /* x */ + null; -var x16 = 0 /* x */ + undefined; +var x13 = null + E.x; +var x14 = undefined + E.x; +var x15 = E.x + null; +var x16 = E.x + undefined; diff --git a/tests/baselines/reference/optionalBindingParametersInOverloads1.js b/tests/baselines/reference/optionalBindingParametersInOverloads1.js index af83404c2c8..3658efa72c6 100644 --- a/tests/baselines/reference/optionalBindingParametersInOverloads1.js +++ b/tests/baselines/reference/optionalBindingParametersInOverloads1.js @@ -11,6 +11,10 @@ foo([false, 0, ""]); //// [optionalBindingParametersInOverloads1.js] function foo() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } } foo(["", 0, false]); foo([false, 0, ""]); diff --git a/tests/baselines/reference/optionalBindingParametersInOverloads2.js b/tests/baselines/reference/optionalBindingParametersInOverloads2.js index f32fb1bfbf4..1ddfdae4f07 100644 --- a/tests/baselines/reference/optionalBindingParametersInOverloads2.js +++ b/tests/baselines/reference/optionalBindingParametersInOverloads2.js @@ -11,6 +11,10 @@ foo({ x: false, y: 0, z: "" }); //// [optionalBindingParametersInOverloads2.js] function foo() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } } foo({ x: "", y: 0, z: false }); foo({ x: false, y: 0, z: "" }); diff --git a/tests/baselines/reference/out-flag.js.map b/tests/baselines/reference/out-flag.js.map index 795d564b2c0..ec4c14aac2b 100644 --- a/tests/baselines/reference/out-flag.js.map +++ b/tests/baselines/reference/out-flag.js.map @@ -1,2 +1,2 @@ //// [out-flag.js.map] -{"version":3,"file":"out-flag.js","sourceRoot":"","sources":["out-flag.ts"],"names":["MyClass","MyClass.constructor","MyClass.Count"],"mappings":"AAAA,eAAe;AAGf,AADA,oBAAoB;IACd,OAAO;IAAbA,SAAMA,OAAOA;IAYbC,CAACA;IAVGD,uBAAuBA;IAChBA,uBAAKA,GAAZA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IAEMF,0BAAQA,GAAfA,UAAgBA,KAAaA;QAEzBA,EAAEA;IACNA,CAACA;IACLA,cAACA;AAADA,CAACA,AAZD,IAYC"} \ No newline at end of file +{"version":3,"file":"out-flag.js","sourceRoot":"","sources":["out-flag.ts"],"names":["MyClass","MyClass.constructor","MyClass.Count","MyClass.SetCount"],"mappings":"AAAA,eAAe;AAGf,AADA,oBAAoB;;IACpBA;IAYAC,CAACA;IAVGD,uBAAuBA;IAChBA,uBAAKA,GAAZA;QAEIE,MAAMA,CAACA,EAAEA,CAACA;IACdA,CAACA;IAEMF,0BAAQA,GAAfA,UAAgBA,KAAaA;QAEzBG,EAAEA;IACNA,CAACA;IACLH,cAACA;AAADA,CAACA,AAZD,IAYC"} \ No newline at end of file diff --git a/tests/baselines/reference/out-flag.sourcemap.txt b/tests/baselines/reference/out-flag.sourcemap.txt index b54f7f8d0a1..0e69e34d62f 100644 --- a/tests/baselines/reference/out-flag.sourcemap.txt +++ b/tests/baselines/reference/out-flag.sourcemap.txt @@ -33,31 +33,18 @@ sourceFile:out-flag.ts 3 >Emitted(2, 21) Source(3, 21) + SourceIndex(0) --- >>>var MyClass = (function () { -1->^^^^ -2 > ^^^^^^^ -3 > ^^^^^^^^^^^^^^-> -1-> - >class -2 > MyClass -1->Emitted(3, 5) Source(4, 7) + SourceIndex(0) -2 >Emitted(3, 12) Source(4, 14) + SourceIndex(0) ---- >>> function MyClass() { 1->^^^^ -2 > ^^^^^^^^^ -3 > ^^^^^^^ -1-> -2 > class -3 > MyClass +2 > ^^-> +1-> + > 1->Emitted(4, 5) Source(4, 1) + SourceIndex(0) name (MyClass) -2 >Emitted(4, 14) Source(4, 7) + SourceIndex(0) name (MyClass) -3 >Emitted(4, 21) Source(4, 14) + SourceIndex(0) name (MyClass) --- >>> } -1 >^^^^ +1->^^^^ 2 > ^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^-> -1 > +1->class MyClass >{ > // my function comments > public Count(): number @@ -71,7 +58,7 @@ sourceFile:out-flag.ts > } > 2 > } -1 >Emitted(5, 5) Source(16, 1) + SourceIndex(0) name (MyClass.constructor) +1->Emitted(5, 5) Source(16, 1) + SourceIndex(0) name (MyClass.constructor) 2 >Emitted(5, 6) Source(16, 2) + SourceIndex(0) name (MyClass.constructor) --- >>> // my function comments @@ -150,8 +137,8 @@ sourceFile:out-flag.ts > { > 2 > // -1 >Emitted(11, 9) Source(14, 9) + SourceIndex(0) name (MyClass) -2 >Emitted(11, 11) Source(14, 11) + SourceIndex(0) name (MyClass) +1 >Emitted(11, 9) Source(14, 9) + SourceIndex(0) name (MyClass.SetCount) +2 >Emitted(11, 11) Source(14, 11) + SourceIndex(0) name (MyClass.SetCount) --- >>> }; 1 >^^^^ @@ -160,8 +147,8 @@ sourceFile:out-flag.ts 1 > > 2 > } -1 >Emitted(12, 5) Source(15, 5) + SourceIndex(0) name (MyClass) -2 >Emitted(12, 6) Source(15, 6) + SourceIndex(0) name (MyClass) +1 >Emitted(12, 5) Source(15, 5) + SourceIndex(0) name (MyClass.SetCount) +2 >Emitted(12, 6) Source(15, 6) + SourceIndex(0) name (MyClass.SetCount) --- >>> return MyClass; 1->^^^^ diff --git a/tests/baselines/reference/overEagerReturnTypeSpecialization.js b/tests/baselines/reference/overEagerReturnTypeSpecialization.js index 67d2005eca9..90fcc388b76 100644 --- a/tests/baselines/reference/overEagerReturnTypeSpecialization.js +++ b/tests/baselines/reference/overEagerReturnTypeSpecialization.js @@ -17,6 +17,6 @@ var r2: I1 = v1.func(num => num.toString()) // Correctly returns an I1 -.func(function (str) { return str.length; }); // should error + .func(function (str) { return str.length; }); // should error var r2 = v1.func(function (num) { return num.toString(); }) // Correctly returns an I1 -.func(function (str) { return str.length; }); // should be ok + .func(function (str) { return str.length; }); // should be ok diff --git a/tests/baselines/reference/overloadAssignmentCompat.errors.txt b/tests/baselines/reference/overloadAssignmentCompat.errors.txt index aa25558203b..446f9ce614f 100644 --- a/tests/baselines/reference/overloadAssignmentCompat.errors.txt +++ b/tests/baselines/reference/overloadAssignmentCompat.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/overloadAssignmentCompat.ts(35,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/overloadAssignmentCompat.ts(35,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/overloadAssignmentCompat.ts (1 errors) ==== @@ -37,7 +37,7 @@ tests/cases/compiler/overloadAssignmentCompat.ts(35,1): error TS2394: Overload s // error - signatures are not assignment compatible function foo():number; - ~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo():string { return "a" }; diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks4.errors.txt b/tests/baselines/reference/overloadOnConstConstraintChecks4.errors.txt index 9ac9e2253f0..7a8037b3dd7 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks4.errors.txt +++ b/tests/baselines/reference/overloadOnConstConstraintChecks4.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/overloadOnConstConstraintChecks4.ts(9,1): error TS2394: Overload signature is not compatible with function implementation. +tests/cases/compiler/overloadOnConstConstraintChecks4.ts(9,10): error TS2394: Overload signature is not compatible with function implementation. ==== tests/cases/compiler/overloadOnConstConstraintChecks4.ts (1 errors) ==== @@ -11,7 +11,7 @@ tests/cases/compiler/overloadOnConstConstraintChecks4.ts(9,1): error TS2394: Ove function foo(name: 'hi'): B; function foo(name: 'bye'): C; function foo(name: string): A; // error - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2394: Overload signature is not compatible with function implementation. function foo(name: any): Z { return null; diff --git a/tests/baselines/reference/overloadOnConstDuplicateOverloads1.errors.txt b/tests/baselines/reference/overloadOnConstDuplicateOverloads1.errors.txt index 4714c06ee73..0f5126b5920 100644 --- a/tests/baselines/reference/overloadOnConstDuplicateOverloads1.errors.txt +++ b/tests/baselines/reference/overloadOnConstDuplicateOverloads1.errors.txt @@ -1,13 +1,13 @@ -tests/cases/compiler/overloadOnConstDuplicateOverloads1.ts(1,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/overloadOnConstDuplicateOverloads1.ts(2,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadOnConstDuplicateOverloads1.ts(1,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadOnConstDuplicateOverloads1.ts(2,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. ==== tests/cases/compiler/overloadOnConstDuplicateOverloads1.ts (2 errors) ==== function foo(a: 'hi', x: string); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(a: 'hi', x: string); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(a: any, x: any) { } diff --git a/tests/baselines/reference/overloadOnConstantsInvalidOverload1.errors.txt b/tests/baselines/reference/overloadOnConstantsInvalidOverload1.errors.txt index bfdb66aa437..1676a2fb426 100644 --- a/tests/baselines/reference/overloadOnConstantsInvalidOverload1.errors.txt +++ b/tests/baselines/reference/overloadOnConstantsInvalidOverload1.errors.txt @@ -1,5 +1,5 @@ -tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(6,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(7,1): error TS2381: A signature with an implementation cannot use a string literal type. +tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(6,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(7,10): error TS2381: A signature with an implementation cannot use a string literal type. tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(11,5): error TS2345: Argument of type 'string' is not assignable to parameter of type '"SPAN"'. @@ -10,15 +10,13 @@ tests/cases/compiler/overloadOnConstantsInvalidOverload1.ts(11,5): error TS2345: class Derived3 extends Base { biz() { } } function foo(name: "SPAN"): Derived1; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(name: "DIV"): Derived2 { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - return null; - ~~~~~~~~~~~~~~~~ - } - ~ + ~~~ !!! error TS2381: A signature with an implementation cannot use a string literal type. + return null; + } foo("HI"); ~~~~ diff --git a/tests/baselines/reference/overloadResolutionOverNonCTLambdas.js b/tests/baselines/reference/overloadResolutionOverNonCTLambdas.js index e77e8d3371f..170f2dd2137 100644 --- a/tests/baselines/reference/overloadResolutionOverNonCTLambdas.js +++ b/tests/baselines/reference/overloadResolutionOverNonCTLambdas.js @@ -43,7 +43,9 @@ var Bugs; rest[_i - 1] = arguments[_i]; } var index = rest[0]; - return typeof args[index] !== 'undefined' ? args[index] : match; + return typeof args[index] !== 'undefined' + ? args[index] + : match; }); return result; } diff --git a/tests/baselines/reference/overloadingOnConstants2.errors.txt b/tests/baselines/reference/overloadingOnConstants2.errors.txt index 1d7d2c8ecab..c6d63523576 100644 --- a/tests/baselines/reference/overloadingOnConstants2.errors.txt +++ b/tests/baselines/reference/overloadingOnConstants2.errors.txt @@ -1,7 +1,7 @@ -tests/cases/compiler/overloadingOnConstants2.ts(8,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/overloadingOnConstants2.ts(9,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadingOnConstants2.ts(8,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadingOnConstants2.ts(9,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/compiler/overloadingOnConstants2.ts(15,13): error TS2345: Argument of type 'string' is not assignable to parameter of type '"bye"'. -tests/cases/compiler/overloadingOnConstants2.ts(19,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadingOnConstants2.ts(19,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. ==== tests/cases/compiler/overloadingOnConstants2.ts (4 errors) ==== @@ -13,10 +13,10 @@ tests/cases/compiler/overloadingOnConstants2.ts(19,1): error TS2382: Specialized private y = 1; } function foo(x: "hi", items: string[]): D; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(x: "bye", items: string[]): E; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(x: string, items: string[]): C { return null; @@ -30,7 +30,7 @@ tests/cases/compiler/overloadingOnConstants2.ts(19,1): error TS2382: Specialized //function bar(x: "hi", items: string[]): D; function bar(x: "bye", items: string[]): E; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function bar(x: string, items: string[]): C; function bar(x: string, items: string[]): C { diff --git a/tests/baselines/reference/overloadingOnConstantsInImplementation.errors.txt b/tests/baselines/reference/overloadingOnConstantsInImplementation.errors.txt index e3a8bb08628..19afdb26806 100644 --- a/tests/baselines/reference/overloadingOnConstantsInImplementation.errors.txt +++ b/tests/baselines/reference/overloadingOnConstantsInImplementation.errors.txt @@ -1,17 +1,16 @@ -tests/cases/compiler/overloadingOnConstantsInImplementation.ts(1,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/overloadingOnConstantsInImplementation.ts(2,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/compiler/overloadingOnConstantsInImplementation.ts(3,1): error TS2381: A signature with an implementation cannot use a string literal type. +tests/cases/compiler/overloadingOnConstantsInImplementation.ts(1,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadingOnConstantsInImplementation.ts(2,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. +tests/cases/compiler/overloadingOnConstantsInImplementation.ts(3,10): error TS2381: A signature with an implementation cannot use a string literal type. ==== tests/cases/compiler/overloadingOnConstantsInImplementation.ts (3 errors) ==== function foo(a: 'hi', x: string); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(a: 'hi', x: string); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. function foo(a: 'hi', x: any) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - } - ~ -!!! error TS2381: A signature with an implementation cannot use a string literal type. \ No newline at end of file + ~~~ +!!! error TS2381: A signature with an implementation cannot use a string literal type. + } \ No newline at end of file diff --git a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt index ed504fd410d..35837d3233f 100644 --- a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt +++ b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt @@ -6,6 +6,7 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,38): tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(18,27): error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. Types of parameters 'x' and 'x' are incompatible. Type 'D' is not assignable to type 'B'. + Property 'x' is missing in type 'D'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,12): error TS2344: Type 'D' does not satisfy the constraint 'A'. @@ -49,4 +50,5 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,12): !!! error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. !!! error TS2345: Types of parameters 'x' and 'x' are incompatible. !!! error TS2345: Type 'D' is not assignable to type 'B'. +!!! error TS2345: Property 'x' is missing in type 'D'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt index 55fe8ed4fde..daf057c9ebd 100644 --- a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt +++ b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt @@ -1,8 +1,10 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(6,6): error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. Type '{}' is not assignable to type '{ a: number; b: number; }'. + Property 'a' is missing in type '{}'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(7,17): error TS2304: Cannot find name 'blah'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,6): error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. + Property 'b' is missing in type '{ a: any; }'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cannot find name 'blah'. @@ -16,6 +18,7 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cann ~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. !!! error TS2345: Type '{}' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'a' is missing in type '{}'. func(s => ({ a: blah, b: 3 })); // Only error inside the function, but not outside (since it would be applicable if not for the provisional error) ~~~~ !!! error TS2304: Cannot find name 'blah'. @@ -23,5 +26,6 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cann ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. !!! error TS2345: Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'b' is missing in type '{ a: any; }'. ~~~~ !!! error TS2304: Cannot find name 'blah'. \ No newline at end of file diff --git a/tests/baselines/reference/parse1.js b/tests/baselines/reference/parse1.js index 08af81bda17..4804e31adcd 100644 --- a/tests/baselines/reference/parse1.js +++ b/tests/baselines/reference/parse1.js @@ -8,5 +8,6 @@ function foo() { //// [parse1.js] var bar = 42; function foo() { - bar.; + bar. + ; } diff --git a/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.errors.txt b/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.errors.txt new file mode 100644 index 00000000000..e1b0bb34529 --- /dev/null +++ b/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.errors.txt @@ -0,0 +1,25 @@ +tests/cases/conformance/es6/classDeclaration/parseClassDeclarationInStrictModeByDefaultInES6.ts(4,16): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/conformance/es6/classDeclaration/parseClassDeclarationInStrictModeByDefaultInES6.ts(5,17): error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. +tests/cases/conformance/es6/classDeclaration/parseClassDeclarationInStrictModeByDefaultInES6.ts(6,9): error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. +tests/cases/conformance/es6/classDeclaration/parseClassDeclarationInStrictModeByDefaultInES6.ts(6,9): error TS2322: Type 'string' is not assignable to type 'IArguments'. + Property 'callee' is missing in type 'String'. + + +==== tests/cases/conformance/es6/classDeclaration/parseClassDeclarationInStrictModeByDefaultInES6.ts (4 errors) ==== + class C { + interface = 10; + public implements() { } + public foo(arguments: any) { } + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. + private bar(eval:any) { + ~~~~ +!!! error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. + arguments = "hello"; + ~~~~~~~~~ +!!! error TS1210: Invalid use of 'arguments'. Class definitions are automatically in strict mode. + ~~~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'IArguments'. +!!! error TS2322: Property 'callee' is missing in type 'String'. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.js b/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.js new file mode 100644 index 00000000000..4a80f478b49 --- /dev/null +++ b/tests/baselines/reference/parseClassDeclarationInStrictModeByDefaultInES6.js @@ -0,0 +1,21 @@ +//// [parseClassDeclarationInStrictModeByDefaultInES6.ts] +class C { + interface = 10; + public implements() { } + public foo(arguments: any) { } + private bar(eval:any) { + arguments = "hello"; + } +} + +//// [parseClassDeclarationInStrictModeByDefaultInES6.js] +class C { + constructor() { + this.interface = 10; + } + implements() { } + foo(arguments) { } + bar(eval) { + arguments = "hello"; + } +} diff --git a/tests/baselines/reference/parser0_004152.errors.txt b/tests/baselines/reference/parser0_004152.errors.txt index 97b9bfe34a6..43a8945ffea 100644 --- a/tests/baselines/reference/parser0_004152.errors.txt +++ b/tests/baselines/reference/parser0_004152.errors.txt @@ -32,11 +32,10 @@ tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,86): error T tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,94): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,96): error TS2300: Duplicate identifier '0'. tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,97): error TS1005: ';' expected. -tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,98): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(3,25): error TS2304: Cannot find name 'SeedCoords'. -==== tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts (36 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts (35 errors) ==== export class Game { ~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. @@ -107,8 +106,6 @@ tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(3,25): error T !!! error TS2300: Duplicate identifier '0'. ~ !!! error TS1005: ';' expected. - ~ -!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. private prevConfig: SeedCoords[][]; ~~~~~~~~~~ !!! error TS2304: Cannot find name 'SeedCoords'. diff --git a/tests/baselines/reference/parser0_004152.js b/tests/baselines/reference/parser0_004152.js index cce49f68fcc..cd6a20742a8 100644 --- a/tests/baselines/reference/parser0_004152.js +++ b/tests/baselines/reference/parser0_004152.js @@ -9,6 +9,7 @@ var Game = (function () { function Game() { this.position = new DisplayPosition([]); } + ; return Game; })(); exports.Game = Game; diff --git a/tests/baselines/reference/parser509667.js b/tests/baselines/reference/parser509667.js index 21e0bc55ce4..0938613b295 100644 --- a/tests/baselines/reference/parser509667.js +++ b/tests/baselines/reference/parser509667.js @@ -16,7 +16,8 @@ var Foo = (function () { function Foo() { } Foo.prototype.f1 = function () { - if (this.) + if (this. + ) ; }; Foo.prototype.f2 = function () { diff --git a/tests/baselines/reference/parser509668.errors.txt b/tests/baselines/reference/parser509668.errors.txt index 5ea380592ef..588bda6d91c 100644 --- a/tests/baselines/reference/parser509668.errors.txt +++ b/tests/baselines/reference/parser509668.errors.txt @@ -1,10 +1,13 @@ +tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509668.ts(3,16): error TS1003: Identifier expected. tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509668.ts(3,23): error TS1005: ',' expected. -==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509668.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509668.ts (2 errors) ==== class Foo3 { // Doesn't work, but should constructor (public ...args: string[]) { } + ~~~~~~ +!!! error TS1003: Identifier expected. ~~~ !!! error TS1005: ',' expected. } \ No newline at end of file diff --git a/tests/baselines/reference/parser509668.js b/tests/baselines/reference/parser509668.js index 63c5d8a1a95..a64c9c7b5b0 100644 --- a/tests/baselines/reference/parser509668.js +++ b/tests/baselines/reference/parser509668.js @@ -7,7 +7,7 @@ class Foo3 { //// [parser509668.js] var Foo3 = (function () { // Doesn't work, but should - function Foo3(public) { + function Foo3() { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; diff --git a/tests/baselines/reference/parser509698.errors.txt b/tests/baselines/reference/parser509698.errors.txt index 85485dd6501..3dd70275e5c 100644 --- a/tests/baselines/reference/parser509698.errors.txt +++ b/tests/baselines/reference/parser509698.errors.txt @@ -1,21 +1,31 @@ +error TS2318: Cannot find global type 'Number'. +error TS2318: Cannot find global type 'TypedPropertyDescriptor'. +error TS2318: Cannot find global type 'Object'. +error TS2318: Cannot find global type 'Array'. +error TS2318: Cannot find global type 'ClassDecorator'. error TS2318: Cannot find global type 'String'. error TS2318: Cannot find global type 'RegExp'. -error TS2318: Cannot find global type 'Object'. -error TS2318: Cannot find global type 'Number'. -error TS2318: Cannot find global type 'IArguments'. +error TS2318: Cannot find global type 'PropertyDecorator'. +error TS2318: Cannot find global type 'ParameterDecorator'. error TS2318: Cannot find global type 'Function'. error TS2318: Cannot find global type 'Boolean'. -error TS2318: Cannot find global type 'Array'. +error TS2318: Cannot find global type 'MethodDecorator'. +error TS2318: Cannot find global type 'IArguments'. +!!! error TS2318: Cannot find global type 'Number'. +!!! error TS2318: Cannot find global type 'TypedPropertyDescriptor'. +!!! error TS2318: Cannot find global type 'Object'. +!!! error TS2318: Cannot find global type 'Array'. +!!! error TS2318: Cannot find global type 'ClassDecorator'. !!! error TS2318: Cannot find global type 'String'. !!! error TS2318: Cannot find global type 'RegExp'. -!!! error TS2318: Cannot find global type 'Object'. -!!! error TS2318: Cannot find global type 'Number'. -!!! error TS2318: Cannot find global type 'IArguments'. +!!! error TS2318: Cannot find global type 'PropertyDecorator'. +!!! error TS2318: Cannot find global type 'ParameterDecorator'. !!! error TS2318: Cannot find global type 'Function'. !!! error TS2318: Cannot find global type 'Boolean'. -!!! error TS2318: Cannot find global type 'Array'. +!!! error TS2318: Cannot find global type 'MethodDecorator'. +!!! error TS2318: Cannot find global type 'IArguments'. ==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509698.ts (0 errors) ==== ///